Bio-Roary
view release on metacpan or search on metacpan
lib/Bio/Roary/QC/Report.pm view on Meta::CPAN
cpus => $self->cpus
);
$kraken_runner_obj->run();
for my $filename(@{$kraken_files})
{
unlink($filename);
}
return \@kraken_report_output_files;
}
sub _build__kraken_data {
my $self = shift;
my $nuc_files = $self->_extract_nuc_files_from_all_gffs();
my $kraken_files = $self->_run_kraken_on_nuc_files($nuc_files);
my $kraken_report_files = $self->_run_kraken_report_on_kraken_files( $kraken_files );
return $self->_parse_kraken_reports($kraken_report_files);
}
sub _parse_kraken_reports
{
my ( $self, $kraken_report_files ) = @_;
my @report_rows;
for my $kraken_report(@{$kraken_report_files})
{
push(@report_rows, $self->_parse_kraken_report($kraken_report));
}
for my $kraken_report(@{$kraken_report_files})
{
unlink($kraken_report);
}
return \@report_rows;
}
sub _parse_kraken_report {
my ( $self, $kraken_report ) = @_;
# parse report
open( my $report_fh, '<', $kraken_report );
my $sample_name = $kraken_report;
$sample_name =~ s/.report$//;
$sample_name =~ s/.kraken$//;
my($sample_base_name, $dirs, $suffix) = fileparse($sample_name);
my ( $top_genus, $top_species );
while ( <$report_fh> ){
my @parts = split( "\t" );
chomp @parts;
$top_genus = $parts[5] if ( (! defined $top_genus) && $parts[3] eq 'G' );
$top_species = $parts[5] if ( (! defined $top_species) && $parts[3] eq 'S' );
last if (defined $top_genus && defined $top_species);
}
close($report_fh);
$top_genus ||= "not_found";
$top_genus =~ s/^\s+//g;
$top_species ||= "not_found";
$top_species =~ s/^\s+//g;
return [ $sample_base_name, $top_genus, $top_species ];
}
sub _build__header {
return join( ',', ( 'Sample', 'Genus', 'Species' ) );
}
sub _build__tmp_directory_obj {
return File::Temp->newdir(DIR => getcwd, CLEANUP => 1 );
}
sub _build__tmp_directory {
my $self = shift;
return $self->_tmp_directory_obj->dirname();
}
sub report {
my $self = shift;
open( OUTFILE, '>', $self->outfile );
print OUTFILE $self->_header . "\n";
for my $line ( @{ $self->_kraken_data } ){
print OUTFILE join( ',', @{ $line } ) . "\n";
}
close OUTFILE;
}
__PACKAGE__->meta->make_immutable;
no Moose;
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
Bio::Roary::QC::Report - generate a report based on kraken output
=head1 VERSION
version 3.13.0
=head1 SYNOPSIS
=head1 AUTHOR
Andrew J. Page <ap13@sanger.ac.uk>
=head1 COPYRIGHT AND LICENSE
This software is Copyright (c) 2013 by Wellcome Trust Sanger Institute.
This is free software, licensed under:
( run in 2.963 seconds using v1.01-cache-2.11-cpan-97f6503c9c8 )