6
bp_bioflat_index.pl - index sequence files using Bio::DB::Flat
10
Create or update a biological sequence database indexed with the
11
Bio::DB::Flat indexing scheme. The arguments are a list of flat files
12
containing the sequence information to be indexed.
16
bp_bioflat_index.pl <options> file1 file2 file3...
20
--create Create or reinitialize the index. If not specified,
21
the index must already exist.
23
--format <format> The format of the sequence files. Must be one
24
of "genbank", "swissprot", "embl" or "fasta".
26
--location <path> Path to the directory in which the index files
29
--dbname <name> The symbolic name of the database to be created.
31
--indextype <type> Type of index to create. Either "bdb" or "flat".
32
"binarysearch" is the same as "flat".
34
Options can be abbreviated. For example, use -i for --indextype.
36
The following environment variables will be used as defaults if the
37
corresponding options are not provided:
39
OBDA_FORMAT format of sequence file
40
OBDA_LOCATION path to directory in which index files are stored
41
OBDA_DBNAME name of database
42
OBDA_INDEX type of index to create
52
use File::Path qw(mkpath rmtree);
54
my ($CREATE,$FORMAT,$LOCATION,$DBNAME,$INDEXTYPE);
56
GetOptions( 'create' => \$CREATE,
57
'format:s' => \$FORMAT,
58
'location:s' => \$LOCATION,
59
'dbname:s' => \$DBNAME,
60
'indextype:s' => \$INDEXTYPE );
62
$FORMAT = $ENV{OBDA_FORMAT} unless defined $FORMAT;
63
$LOCATION = $ENV{OBDA_LOCATION} unless defined $LOCATION;
64
$DBNAME = $ENV{OBDA_DBNAME} unless defined $DBNAME;
65
$INDEXTYPE = $ENV{OBDA_INDEXTYPE} unless defined $INDEXTYPE;
67
my $root = 'Bio::Root::Root';
68
my $io = 'Bio::Root::IO';
70
# confirm that database directory is there
72
$root->throw("please provide a base directory with the --location option");
75
$root->throw("$LOCATION is not a valid directory; use --create to create a new index");
78
$root->throw("please provide a database name with the --dbname option");
81
$root->throw("please specify the format for the input files with the --format option");
83
unless (defined $INDEXTYPE) {
85
$root->warn('setting index type to "flat", use the --indextype option to override');
88
# Confirm that database is there and that --create flag is sensible.
89
my $path = $io->catfile($LOCATION,$DBNAME,'config.dat');
92
$root->warn("existing index detected; deleting.");
93
rmtree($io->catfile($LOCATION,$DBNAME),1,1);
95
$root->warn("existing index detected; ignoring --indextype and --format options.");
100
$root->throw("Cannot find database config file at location $path; use --create to create a new index");
103
# open for writing/updating
104
my $db = Bio::DB::Flat->new(-directory => $LOCATION,
111
-format => $FORMAT) or
112
$root->throw("can't create Bio::DB::Flat object");
114
my $entries = $db->build_index(@ARGV);
116
print STDERR "(Re)indexed $entries entries.\n ";