Bio_AssemblyImprovement
view release on metacpan or search on metacpan
lib/Bio/AssemblyImprovement/FillGaps/GapFiller/Iterative.pm view on Meta::CPAN
package Bio::AssemblyImprovement::FillGaps::GapFiller::Iterative;
# ABSTRACT: Iteratively close gaps
use Moose;
use Cwd;
use File::Basename;
use File::Copy;
use Bio::AssemblyImprovement::FillGaps::GapFiller::Main;
with 'Bio::AssemblyImprovement::Scaffold::SSpace::OutputFilenameRole';
with 'Bio::AssemblyImprovement::Scaffold::SSpace::TempDirectoryRole';
has 'input_files' => ( is => 'ro', isa => 'ArrayRef', required => 1 );
has 'insert_size' => ( is => 'ro', isa => 'Int', required => 1 );
has 'gap_filler_exec' => ( is => 'ro', isa => 'Str', required => 1 );
has 'mappers' => ( is => 'ro', isa => 'ArrayRef', lazy => 1, builder => '_build_mappers' );
has 'merge_sizes' => ( is => 'ro', isa => 'ArrayRef[Int]', lazy => 1, builder => '_build_merge_sizes' );
has 'threads' => ( is => 'ro', isa => 'Int', default => 1 );
has 'output_base_directory' => ( is => 'ro', isa => 'Str', lazy => 1, builder => '_build_output_base_directory' );
has '_intermediate_filename' => ( is => 'ro', isa => 'Str', lazy => 1, builder => '_build__intermediate_filename' );
has 'debug' => ( is => 'ro', isa => 'Bool', default => 0);
sub _build_output_base_directory
{
my ($self) = @_;
return getcwd();
}
sub final_output_filename
{
my ($self) = @_;
my ( $filename, $directories, $suffix ) = fileparse( $self->input_assembly, qr/\.[^.]*/ );
return $self->output_base_directory.'/' . $filename . "." . $self->_output_prefix . $suffix;
}
sub _build__intermediate_filename {
my ($self) = @_;
my ( $filename, $directories, $suffix ) = fileparse( $self->input_assembly );
return join( '/', ( $self->_temp_directory, $filename ) );
}
sub _build_merge_sizes {
my ($self) = @_;
return [ 90, 70, 50, 30, 20, 10];
}
sub _build_mappers
{
my($self) = @_;
return ['bwa','bowtie'];
}
sub _single_scaffolding_iteration {
my ( $self, $merge_size, $mapper ) = @_;
my $scaffold = Bio::AssemblyImprovement::FillGaps::GapFiller::Main->new(
input_files => $self->input_files,
input_assembly => $self->_intermediate_filename,
insert_size => $self->insert_size,
merge_size => $merge_size,
gap_filler_exec => $self->gap_filler_exec,
debug => $self->debug,
mapper => $mapper,
threads => $self->threads,
_output_prefix => $self->_output_prefix,
)->run;
move( $scaffold->output_filename, $self->_intermediate_filename );
return $self;
}
sub run {
my ($self) = @_;
$self->output_base_directory();
my $original_cwd = getcwd();
chdir( $self->_temp_directory );
( run in 2.209 seconds using v1.01-cache-2.11-cpan-0bb4e1dffa6 )