App-Mimosa

 view release on metacpan or  search on metacpan

lib/App/Mimosa/Database.pm  view on Meta::CPAN

package App::Mimosa::Database;
use Moose;
use namespace::autoclean;
use Moose::Util::TypeConstraints;
use Cwd;

use File::Spec::Functions;
use File::Basename;
use autodie ':all';

use Bio::BLAST::Database;
#use Carp::Always;

# TODO: store this in a shared place, because App::Mimosa::Job has it too
enum 'Alphabet' => qw(protein nucleotide);

has alphabet => (
    isa     => 'Alphabet',
    is      => 'rw',
    required => 1,
);

has db_basename => (
    isa     => 'Str',
    is      => 'rw',
    required => 1,
);

has db => (
    isa => 'Bio::BLAST::Database',
    is  => 'rw',
);

has context => (
    is  => 'rw',
);

sub get_sequence {
    my ($self, $name) = @_;

    my $db = Bio::BLAST::Database->open(
        full_file_basename => $self->db_basename,
        type               => $self->alphabet,
        write              => 1,
        create_dirs        => 1,
    );

    $self->db($db);

    $self->debug("Is it indexed? " . ( $self->db->indexed_seqs ? 1 : 0 ));
    $self->debug("Complete? " . ( $self->db->files_are_complete ? 1 : 0 ));

    $self->debug("get_sequence($name)");
    my $sequence = $db->get_sequence($name);

    return $sequence;
}

sub debug {
    my ($self, $msg) = @_;
    if ($self->context) {
        $self->context->log->debug($msg);
    }



( run in 1.416 second using v1.01-cache-2.11-cpan-ceb78f64989 )