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 )