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
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 )