OECreateMolDatabaseIdx¶
bool OECreateMolDatabaseIdx(const std::string &databaseFileName)
bool OECreateMolDatabaseIdx(const std::string &databaseFileName,
const std::string &indexFileName)
Creates an index file parallel to the file named by
databaseFileName to improve the performance of
OEMolDatabase::Open as described by the
Index Files section. If
OEMolDatabase::Open detects the presence of a
parallel .idx file, the file position offsets will be read
from the .idx file instead of having to stream the entire
file off of disk to find the offsets during the call to
OEMolDatabase::Open.
The index file name created is based upon the
databaseFileName passed, optionally accounting for
.gz. The following table demonstrates the pattern used to
create index file names:
Database File Name |
Index File Name |
|---|---|
database.oeb |
database.oeb.idx |
database.oeb.gz |
database.oeb.idx.gz |
The overload of the function that takes an indexFileName will
write the index to that file name instead.
Returns false if the function fails to create the index file
for any reason, e.g., unable to open the file specified by
databaseFileName.
Example
Listing 1: Creates an index file
const string ifname = "drugs.sdf";
const string idxfname = OEGetMolDatabaseIdxFileName(ifname);
if (!OEFileExists(idxfname))
{
if (!OECreateMolDatabaseIdx(ifname))
OEThrow.Warning("Unable to create %s molecule index file", idxfname.c_str());
}
OEThrow.Info("Using %s index molecule file", idxfname.c_str());
Note
.idx files can be concatenated together. Care must be
taken to concatenate the corresponding database files together
in the exact same order.