annotate Roary/lib/Bio/Roary/QC/Report.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::QC::Report;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
2
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
3 # ABSTRACT: generate a report based on kraken output
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 =cut
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
8
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
9 use Moose;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
10 use File::Temp;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
11 use File::Path 'rmtree';
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
12 use Cwd;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
13 use File::Basename;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
14 with 'Bio::Roary::JobRunner::Role';
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
15
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
16 has 'input_files' => ( is => 'ro', isa => 'ArrayRef', required => 1 );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
17 has 'kraken_exec' => ( is => 'ro', isa => 'Str', default => 'kraken' );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
18 has 'kraken_report_exec' => ( is => 'ro', isa => 'Str', default => 'kraken-report' );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
19 has 'kraken_db' => ( is => 'ro', isa => 'Str', required => 1 );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
20 has 'outfile' => ( is => 'rw', isa => 'Str', default => 'qc_report.csv' );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
21 has '_kraken_data' => ( is => 'rw', isa => 'ArrayRef', lazy_build => 1 );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
22 has '_header' => ( is => 'rw', isa => 'Str', lazy_build => 1 );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
23 has 'kraken_memory' => ( is => 'rw', isa => 'Int', default => 2000 );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
24
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
25 has '_tmp_directory_obj' => ( is => 'rw', lazy_build => 1 );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
26 has '_tmp_directory' => ( is => 'rw', lazy_build => 1, isa => 'Str', );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
27
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
28
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
29 sub _nuc_fasta_filename
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
30 {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
31 my ($self, $gff) = @_;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
32
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
33 my $prefix = basename( $gff, ".gff" );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
34 my $outfile = $self->_tmp_directory . "/$prefix.fna";
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
35 return $outfile;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
36 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
37
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
38 sub _extract_nuc_fasta_cmd {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
39 my ($self, $gff) = @_;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
40 my $outfile = $self->_nuc_fasta_filename($gff);
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
41 my $cmd = "sed -n '/##FASTA/,//p' $gff | grep -v \'##FASTA\' > $outfile";
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
42
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
43 return $cmd;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
44 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
45
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
46 sub _extract_nuc_files_from_all_gffs
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
47 {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
48 my ($self) = @_;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
49 my @nuc_files;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
50 my @commands_to_run;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
51 for my $input_file(@{$self->input_files})
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
52 {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
53 push(@nuc_files,$self->_nuc_fasta_filename($input_file));
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
54 push(@commands_to_run,$self->_extract_nuc_fasta_cmd($input_file));
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
55 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
56 my $kraken_runner_obj = $self->_job_runner_class->new(
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
57 commands_to_run => \@commands_to_run,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
58 memory_in_mb => $self->kraken_memory,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
59 verbose => $self->verbose,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
60 cpus => $self->cpus
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
61 );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
62 $kraken_runner_obj->run();
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
63 return \@nuc_files;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
64 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
65
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
66 sub _kraken_cmd {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
67 my ( $self, $a, $kraken_output ) = @_;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
68
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
69 my $kcmd = $self->kraken_exec .
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
70 " --fasta-input ".
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
71 " --preload ".
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
72 " --db " . $self->kraken_db .
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
73 " --output $kraken_output $a > /dev/null 2>&1";
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
74 return $kcmd;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
75 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
76
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
77 sub _kraken_report_cmd {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
78 my ( $self, $k, $report_output ) = @_;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
79
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
80 my $krcmd = $self->kraken_report_exec .
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
81 " --db " . $self->kraken_db .
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
82 " $k > $report_output";
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
83 return $krcmd;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
84 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
85
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
86 sub _kraken_output_filename
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
87 {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
88 my ( $self, $assembly ) = @_;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
89 my $kraken_output = $assembly;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
90 $kraken_output =~ s/fna$/kraken/;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
91 return $kraken_output;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
92 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
93
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
94 sub _run_kraken_on_nuc_files
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
95 {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
96 my ( $self, $nuc_files ) = @_;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
97 my @kraken_output_files;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
98 my @commands_to_run;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
99 for my $nuc_file(@{$nuc_files})
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
100 {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
101 my $kraken_output = $self->_kraken_output_filename($nuc_file);
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
102 push(@kraken_output_files, $kraken_output );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
103 push(@commands_to_run, $self->_kraken_cmd( $nuc_file, $kraken_output ));
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
104 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
105
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
106 my $kraken_runner_obj = $self->_job_runner_class->new(
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
107 commands_to_run => \@commands_to_run,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
108 memory_in_mb => $self->kraken_memory,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
109 verbose => $self->verbose,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
110 cpus => $self->cpus
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
111 );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
112 $kraken_runner_obj->run();
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
113
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
114 for my $filename(@{$nuc_files})
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
115 {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
116 unlink($filename);
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
117 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
118
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
119 return \@kraken_output_files;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
120 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
121
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
122 sub _kraken_report_output_filename
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
123 {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
124 my ( $self, $assembly ) = @_;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
125 return $assembly.".report";
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
126 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
127
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
128 sub _run_kraken_report_on_kraken_files
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
129 {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
130 my ( $self, $kraken_files ) = @_;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
131
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
132 my @kraken_report_output_files;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
133 my @commands_to_run;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
134 for my $nuc_file(@{$kraken_files})
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
135 {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
136 my $kraken_output = $self->_kraken_report_output_filename($nuc_file);
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
137 push(@kraken_report_output_files, $kraken_output );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
138 push(@commands_to_run, $self->_kraken_report_cmd( $nuc_file, $kraken_output ));
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
139 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
140
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
141 my $kraken_runner_obj = $self->_job_runner_class->new(
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
142 commands_to_run => \@commands_to_run,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
143 memory_in_mb => $self->kraken_memory,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
144 verbose => $self->verbose,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
145 cpus => $self->cpus
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
146 );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
147 $kraken_runner_obj->run();
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
148 for my $filename(@{$kraken_files})
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
149 {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
150 unlink($filename);
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
151 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
152 return \@kraken_report_output_files;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
153 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
154
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
155 sub _build__kraken_data {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
156 my $self = shift;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
157 my $nuc_files = $self->_extract_nuc_files_from_all_gffs();
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
158 my $kraken_files = $self->_run_kraken_on_nuc_files($nuc_files);
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
159 my $kraken_report_files = $self->_run_kraken_report_on_kraken_files( $kraken_files );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
160
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
161 return $self->_parse_kraken_reports($kraken_report_files);
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
162 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
163
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
164 sub _parse_kraken_reports
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
165 {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
166 my ( $self, $kraken_report_files ) = @_;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
167
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
168 my @report_rows;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
169 for my $kraken_report(@{$kraken_report_files})
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
170 {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
171 push(@report_rows, $self->_parse_kraken_report($kraken_report));
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
172 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
173
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
174 for my $kraken_report(@{$kraken_report_files})
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
175 {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
176 unlink($kraken_report);
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
177 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
178
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
179 return \@report_rows;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
180 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
181
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
182 sub _parse_kraken_report {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
183 my ( $self, $kraken_report ) = @_;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
184
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
185 # parse report
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
186 open( my $report_fh, '<', $kraken_report );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
187
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
188 my $sample_name = $kraken_report;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
189 $sample_name =~ s/.report$//;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
190 $sample_name =~ s/.kraken$//;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
191 my($sample_base_name, $dirs, $suffix) = fileparse($sample_name);
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
192
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
193 my ( $top_genus, $top_species );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
194 while ( <$report_fh> ){
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
195 my @parts = split( "\t" );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
196 chomp @parts;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
197
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
198 $top_genus = $parts[5] if ( (! defined $top_genus) && $parts[3] eq 'G' );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
199 $top_species = $parts[5] if ( (! defined $top_species) && $parts[3] eq 'S' );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
200
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
201 last if (defined $top_genus && defined $top_species);
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
202 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
203 close($report_fh);
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
204
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
205 $top_genus ||= "not_found";
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
206 $top_genus =~ s/^\s+//g;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
207 $top_species ||= "not_found";
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
208 $top_species =~ s/^\s+//g;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
209
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
210 return [ $sample_base_name, $top_genus, $top_species ];
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
211 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
212
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
213
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
214 sub _build__header {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
215 return join( ',', ( 'Sample', 'Genus', 'Species' ) );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
216 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
217
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
218 sub _build__tmp_directory_obj {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
219 return File::Temp->newdir(DIR => getcwd, CLEANUP => 1 );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
220 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
221
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
222 sub _build__tmp_directory {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
223 my $self = shift;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
224 return $self->_tmp_directory_obj->dirname();
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
225 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
226
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
227 sub report {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
228 my $self = shift;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
229
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
230 open( OUTFILE, '>', $self->outfile );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
231 print OUTFILE $self->_header . "\n";
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
232 for my $line ( @{ $self->_kraken_data } ){
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
233 print OUTFILE join( ',', @{ $line } ) . "\n";
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
234 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
235 close OUTFILE;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
236 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
237
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
238
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
239 __PACKAGE__->meta->make_immutable;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
240 no Moose;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
241 1;