annotate Roary/lib/Bio/Roary/External/Fasttree.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::External::Fasttree;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
2
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
3 # ABSTRACT: Wrapper to run Fasttree
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 Wrapper to run cd-hit
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
8 use Bio::Roary::External::Fasttree;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
9
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
10 my $obj = Bio::Roary::External::Fasttree->new(
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
11 input_file => 'abc.fa',
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
12 exec => 'Fasttree',
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
13 output_base => 'efg',
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
14 );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
15 $obj->run;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
16
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
17 =cut
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
18
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
19 use Moose;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
20 with 'Bio::Roary::JobRunner::Role';
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
21
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
22 has 'input_file' => ( is => 'ro', isa => 'Str', required => 1 );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
23 has 'output_file' => ( is => 'ro', isa => 'Str', lazy => 1, builder => '_build_output_file' );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
24 has 'exec' => ( is => 'ro', isa => 'Str', default => 'FastTree' );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
25 has 'alt_exec' => ( is => 'ro', isa => 'Str', default => 'fasttree' );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
26 has '_logging' => ( is => 'ro', isa => 'Str', default => '2> /dev/null' );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
27
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
28 sub _build_output_file
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
29 {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
30 my ($self) = @_;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
31 return $self->input_file.".newick";
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
32 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
33
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
34 sub _command_to_run {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
35 my ($self) = @_;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
36
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
37 my $executable = $self->_find_exe([$self->exec, $self->alt_exec]);
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
38 my $logging_str = "";
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
39 $logging_str = $self->_logging if(! $self->verbose);
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
40
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
41 return join(
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
42 ' ', ($executable, '-fastest', '-nt', $self->input_file, '>', $self->output_file, $logging_str)
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
43 );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
44 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
45
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
46 sub run {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
47 my ($self) = @_;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
48 my @commands_to_run;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
49
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
50 if(!defined($self->input_file) || ! ( -e $self->input_file))
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
51 {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
52 $self->logger->error( "The input file is missing so not creating a tree" );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
53 return 1;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
54 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
55
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
56 if(-s $self->input_file < 5)
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
57 {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
58 $self->logger->info( "The input file is too small so not creating a tree" );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
59 return 1;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
60 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
61
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
62 push(@commands_to_run, $self->_command_to_run() );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
63 $self->logger->info( "Running command: " . $self->_command_to_run() );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
64 my $job_runner_obj = $self->_job_runner_class->new( commands_to_run => \@commands_to_run, memory_in_mb => $self->memory_in_mb, queue => $self->_queue, cpus => $self->cpus );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
65 $job_runner_obj->run();
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
66
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
67 1;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
68 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
69
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
70 no Moose;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
71 __PACKAGE__->meta->make_immutable;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
72
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
73 1;