Bio-MUST-Drivers

 view release on metacpan or  search on metacpan

lib/Bio/MUST/Drivers/Hmmer/Model/Temporary.pm  view on Meta::CPAN

package Bio::MUST::Drivers::Hmmer::Model::Temporary;
# ABSTRACT: Internal class for HMMER3 driver
# CONTRIBUTOR: Arnaud DI FRANCO <arnaud.difranco@gmail.com>
$Bio::MUST::Drivers::Hmmer::Model::Temporary::VERSION = '0.252830';
use Moose;
use namespace::autoclean;

use autodie;
use feature qw(say);

use Carp;
use File::Temp qw(tempfile);
use IPC::System::Simple qw(system);
use Module::Runtime qw(use_module);
use Path::Class;

extends 'Bio::MUST::Core::Ali::Temporary';

use aliased 'Bio::FastParsers::Hmmer::Model';
use Bio::MUST::Drivers::Utils qw(stringify_args);


has 'model_args' => (
    is       => 'ro',
    isa      => 'HashRef',
    default  => sub { {} },
);

has 'model' => (
    is       => 'ro',
    isa      => 'Maybe[Bio::FastParsers::Hmmer::Model]',
    init_arg => undef,
    lazy     => 1,
    builder  => '_build_model',
);

with 'Bio::MUST::Drivers::Roles::Hmmerable' => {
    -excludes => [ qw(scan) ]
};

## no critic (ProhibitUnusedPrivateSubroutines)

# overload Ali::Temporary default builder
sub _build_args {
    return { clean => 1, degap => 0 };
}

sub _build_model {
    my $self = shift;

    # provision executable
    my $app = use_module('Bio::MUST::Provision::Hmmer')->new;
       $app->meet();

    # skip model creation if no seqs
    unless ($self->count_seqs) {
        carp '[BMD] Warning: no sequence provided; returning without model!';
        return;
    }

    # setup input/output files
    my $in = $self->filename;
    my $out = File::Temp->new(UNLINK => 0, EXLOCK => 0, SUFFIX => '.hmm');

    # format hmmbuild (optional) arguments
    my $args = $self->model_args;



( run in 0.788 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )