GraphSim TK 2.3.0¶
New features¶
A new API has been added to perform rapid searching of fingerprints using the popcount method:
OECreateFastFPDatabaseFile
function andOECreateFastFPDatabaseOptions
class to generate binary fingerprint filesOEFastFPDatabase
class andOEFastFPDatabaseMemoryType
namespace to perform rapid in-memory or memory-mapped fingerprint searches using the popcount methodOEFastFPDatabaseParams
utility class andOEAreCompatibleDatabases
utility functionOEIsFastFPDatabaseReady
andOEGetPopCountMethod
functions andOEPopCountMethod
namespace to check whether the popcount method is supported on the current hardware
Note
GraphSim TK currently only supports the popcount search method for fingerprints where the size is multiple of
256
. This means that theOEFPType.MACCS166
fingerprint type is currently not supported. See the User-defined Fingerprint section.Note
OEFastFPDatabase
gives identical results toOEFPDatabase
. HoweverOEFPDatabase
calculates similarity scores in single precision (float) whileOEFastFPDatabase
uses double precision. As a result small similarity score differences can be observed.
API Change¶
The
OESimScore
class, which is utilized by both theOEFPDatabase
class and the newOEFastFPDatabase
class, stores a similarity value with a corresponding molecule index. This pair is now stored as “double” and “size_t” rather than “float” and “unsigned int”. This non-breaking API change allows GraphSim TK to support molecular files that contain more than \(2^{32}\) entries and supports double precision similarity scores calculated using the newOEFastFPDatabase
class.
C++-specific changes¶
The above-mentioned
OESimScore
class API change means that the following warning messages could be encountered when compiling old code with the new GraphSim TK:implicit conversion loses floating point precision: 'double' to 'float'
for (OEIter<OESimScore> si = fpdb.GetScores(mol); si; ++si) float score = si->GetScore(); // GetScore() now returns double
implicit conversion loses integer precision : 'size_t' to 'unsigned int'
for (OEIter<OESimScore> si = fpdb.GetScores(mol); si; ++si) unsigned int molidx = si->GetIdx(); // GetIdx() now returns size_t
Java-specific changes¶
The above-mentioned
OESimScore
class API change means that a similarity value with a corresponding molecule index is now expected to be “double” and “long”, respectively.
Documentation changes¶
A new section, Building and searching fingerprint database, has been added.
New Generating fingerprint file for fast fingerprint search and Searching fast fingerprint database sections have been added with examples showing generation and searching of fingerprints using the
OEFastFPDatabase
class.