annotate Roary/lib/Bio/Roary/Output/BlastIdentityFrequency.pm @ 0:c47a5f61bc9f draft

Uploaded
author dereeper
date Fri, 14 May 2021 20:27:06 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
1 package Bio::Roary::Output::BlastIdentityFrequency;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
2
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
3 # ABSTRACT: Take in blast results and find the percentage identity graph
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
4
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
5 =head1 SYNOPSIS
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
6
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
7 Take in blast results and find the percentage identity graph
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
8 use Bio::Roary::Output::BlastIdentityFrequency;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
9
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
10 my $obj = Bio::Roary::Output::BlastIdentityFrequency->new(
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
11 input_filename => '_blast_results',
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
12 output_filename => 'blast_identity_frequency.Rtab',
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
13 );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
14 $obj->create_file();
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
15
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
16 =cut
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
17
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
18 use Moose;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
19 use Bio::SeqIO;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
20 use Bio::Roary::Exceptions;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
21
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
22 has 'input_filename' => ( is => 'ro', isa => 'Str', default => '_blast_results' );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
23 has 'output_filename' => ( is => 'ro', isa => 'Str', default => 'blast_identity_frequency.Rtab' );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
24
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
25 has '_output_fh' => ( is => 'ro', lazy => 1, builder => '_build__output_fh' );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
26 has '_input_fh' => ( is => 'ro', lazy => 1, builder => '_build__input_fh' );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
27
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
28 sub _build__output_fh
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
29 {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
30 my ($self) = @_;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
31 open( my $fh, '>', $self->output_filename )
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
32 or Bio::Roary::Exceptions::CouldntWriteToFile->throw(
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
33 error => "Couldnt write output file:" . $self->output_filename );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
34 return $fh;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
35 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
36
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
37 sub _build__input_fh
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
38 {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
39 my ($self) = @_;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
40 my $input_string = 'awk \'{print $3}\' '.$self->input_filename.' | awk \'BEGIN {FS="."}; {print $1}\'| sort | uniq -c | awk \'{print $2"\t"$1}\'';
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
41
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
42 open( my $fh, '-|', $input_string ) or die "Couldnt open results file";
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
43 return $fh;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
44 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
45
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
46 sub create_file
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
47 {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
48 my ($self) = @_;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
49
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
50 my $input_fh = $self->_input_fh;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
51 while(<$input_fh>)
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
52 {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
53 print {$self->_output_fh} $_;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
54 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
55 close($self->_input_fh);
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
56 close($self->_output_fh);
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
57 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
58
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
59 no Moose;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
60 __PACKAGE__->meta->make_immutable;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
61
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
62 1;