Bio-Roary

 view release on metacpan or  search on metacpan

lib/Bio/Roary/External/PostAnalysis.pm  view on Meta::CPAN

package Bio::Roary::External::PostAnalysis;
$Bio::Roary::External::PostAnalysis::VERSION = '3.13.0';
# ABSTRACT: Perform the post analysis


use Moose;
use Cwd  qw(getcwd); 
with 'Bio::Roary::JobRunner::Role';

has 'input_files'                 => ( is => 'ro', isa => 'ArrayRef', required => 1 );
has 'exec'                        => ( is => 'ro', isa => 'Str', default  => 'pan_genome_post_analysis' );
has 'fasta_files'                 => ( is => 'ro', isa => 'ArrayRef', required => 1 );
has 'output_filename'             => ( is => 'ro', isa => 'Str', required => 1 );
has 'output_pan_geneome_filename' => ( is => 'ro', isa => 'Str', required => 1 );
has 'output_statistics_filename'  => ( is => 'ro', isa => 'Str', required => 1 );
has 'clusters_filename'           => ( is => 'ro', isa => 'Str', required => 1 );
has 'output_multifasta_files'     => ( is => 'ro', isa => 'Bool', required => 1 );
has 'dont_delete_files'           => ( is => 'ro', isa => 'Bool', default  => 0 );
has 'dont_create_rplots'          => ( is => 'rw', isa => 'Bool', default  => 0 );
has 'dont_split_groups'           => ( is => 'rw', isa => 'Bool', default  => 0 );
has 'verbose_stats'               => ( is => 'rw', isa => 'Bool', default  => 0 );
has 'translation_table'           => ( is => 'rw', isa => 'Int',  default  => 11 );
has 'group_limit'                 => ( is => 'rw', isa => 'Num',  default  => 50000 );
has 'core_definition'             => ( is => 'ro', isa => 'Num',  default  => 1.0 );
has 'verbose'                     => ( is => 'rw', isa => 'Bool', default  => 0 );
has 'mafft'                       => ( is => 'ro', isa => 'Bool', default  => 0 );
has 'allow_paralogs'              => ( is => 'ro', isa => 'Bool', default  => 0 );
has '_working_directory'          => ( is => 'ro', isa => 'File::Temp::Dir', default => sub { File::Temp->newdir( DIR => getcwd, CLEANUP => 1 ); } );
has '_gff_fofn'                   => ( is => 'ro', isa => 'Str', lazy => 1, builder => '_build__gff_fofn' );
has '_fasta_fofn'                 => ( is => 'ro', isa => 'Str', lazy => 1, builder => '_build__fasta_fofn'  );

# Overload Role
has 'memory_in_mb' => ( is => 'ro', isa => 'Int', lazy => 1, builder => '_build_memory_in_mb' );
has '_minimum_memory_mb'    => ( is => 'ro', isa => 'Int', default => 4000 );
has '_memory_per_sample_mb' => ( is => 'ro', isa => 'Int', default => 30 );
has '_queue'                => ( is => 'rw', isa => 'Str',  lazy => 1, builder => '_build__queue');


sub _build__queue {
    my ($self) = @_;
    my $queue = 'normal';
    my $num_samples = @{ $self->input_files };
    if($num_samples > 200)
    {
      $queue = 'long';
    }
    elsif($num_samples > 600)
    {
      $queue = 'basement';
    }
    return $queue;
}


sub _build_memory_in_mb {
    my ($self) = @_;
    my $num_samples = @{ $self->input_files };

    my $memory_required = $num_samples * $self->_memory_per_sample_mb;
    if ( $memory_required < $self->_minimum_memory_mb ) {
        $memory_required = $self->_minimum_memory_mb;
    }

    return $memory_required;
}

sub _build__gff_fofn
{
    my ($self) = @_;
    return join('/', ($self->_working_directory, '/_gff_files'));
}



( run in 0.878 second using v1.01-cache-2.11-cpan-98e64b0badf )