Bio-BLAST

 view release on metacpan or  search on metacpan

lib/Bio/BLAST/Database.pm  view on Meta::CPAN

    @_ % 2 and croak 'invalid args to open()';
    my %args = @_;
    my %valid_keys = map {$_ => 1} qw( full_file_basename type write create_dirs );
    $valid_keys{$_} or croak "invalid param '$_' passed to open()" for keys %args;

    my $self = $class->SUPER::new(\%args);

    $self->full_file_basename or croak 'must provide a full_file_basename';

    unless( $self->type ) {
        $self->type( $self->_guess_type )
            or croak 'type not provided, and could not guess it';
    }

    if( $self->write ) {
        $self->create_dirs || -d dirname( $self->full_file_basename )
            or croak 'either directory must exist, or create_dirs must be set true';

        my $perm_error = $self->check_format_permissions;
        croak $perm_error if $perm_error;
    }

lib/Bio/BLAST/Database.pm  view on Meta::CPAN

                     Date: \s* ( \w [\S\ ]+ \w )
                       \s+
                     Version:
                      )x
                          or die "could not parse output of fastacmd (2):\n$fastacmd";


    my $indexed = (any {/sd$/} @files) && (any {/si$/} @files);

    ### set our data
    $self->type( $self->_guess_type )
        or confess 'could not determine db type';

    ### type: $self->type

    $self->format_time( _parse_datestr($datestr) ); #< will die on failure
    $title =~ s/\s+$//;
    $self->title( $title );
    $self->_indexed_seqs( $indexed );
    $self->sequences_count( $seq_cnt );
}
sub _guess_type {
    my ($self) = @_;
    my $saved_type = $self->type;

    foreach my $guess (qw( protein nucleotide )) {
        $self->type( $guess );
        if( $self->files_are_complete ) {
            $self->type( $saved_type );
            return $guess;
        }
    }

    $self->type( $saved_type );
    return;
}
sub _parse_datestr {
    my ($datestr) = @_;
    my @split = split /\W+/,$datestr;
    my ($mon,$d,$y,$h,$min,$ampm) = @split

t/basic.t  view on Meta::CPAN

    my $test_seq_file = catfile( $DATADIR, "blastdb_test.$type.seq" );

    #use Smart::Comments;
    ### test new creation...
    my $test_ffbn = catfile( $tempdir, "testdb_$type" );

    throws_ok {
        Bio::BLAST::Database->open( full_file_basename => $test_ffbn,
                                      write => 1,
                                     );
    } qr/type.+could not guess/,
      'de novo creation dies without type';

    my $fs = Bio::BLAST::Database->open( full_file_basename => $test_ffbn,
                                           type => $type,
                                           write => 1,
                                         );
    is( scalar $fs->list_files, 0, 'new db does not have any files' );
    ok( !$fs->format_time, 'format_time returns nothing for no files');
    ok( !$fs->files_are_complete, 'files_are_complete returns false for empty DB');
    ok( !$fs->is_split, 'returns false for is_split');



( run in 1.936 second using v1.01-cache-2.11-cpan-748bfb374f4 )