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