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 ";