10#ifndef BALL_STRUCTURE_MOLECULARSIMILARITY_H
11#define BALL_STRUCTURE_MOLECULARSIMILARITY_H
17#ifndef BALL_CONFIG_CONFIG_H
18 #include <BALL/CONFIG/config.h>
24#ifdef BALL_HAS_OPENBABEL
25 #include <openbabel/mol.h>
44 #ifdef BALL_HAS_OPENBABEL
49 static OpenBabel::OBMol* createOBMol(
const Molecule& mol,
bool ignore_hydrogen=0,
bool suppress_warning=0);
53 static Molecule* createMolecule(OpenBabel::OBMol& obmol,
bool ignore_hydrogen=0);
55 void generateCanSmile(
const Molecule& mol,
String& cansmile, OpenBabel::OBMol** output_obmol=0,
bool ignore_hydrogen=0);
61 void matchSmarts(
const String& usmile,
const String& smarts,
Size& no_matches,
Size max_matches=0);
76 float calculateSimilarity(vector<Size>& fingerprint1, vector<Size>& fingerprint2, vector<float>* stddev);
95 std::vector<bool>& fingerprint);
vector< String > smart_names_
void generatePathFingerprint(Molecule &mol, vector< bool > &fingerprint)
void filterRedundantMolecules(const list< Molecule * > &molecules, float similarity_threshold)
vector< vector< Size > > fingerprints_
void generateFingerprints(const list< Molecule * > &molecules, vector< vector< Size > > &fingerprints)
void generatePathHash_(vector< Size > &path, Size &hash)
MolecularSimilarity(String smarts_file)
bool generatePathFingerprint_(const Atom *atom, std::vector< Size > &path, std::set< const Bond * > &path_bonds, std::vector< bool > &fingerprint)
const vector< String > & getFunctionalGroupNames()
void generateFingerprint(Molecule &molecule, vector< Size > &fingerprint)
float calculateSimilarity(vector< bool > &fingerprint1, vector< bool > &fingerprint2)
void filterRedundantMolecules(System &molecules, float similarity_threshold)
void generateFingerprints(System &molecules, vector< vector< Size > > &fingerprints)
float calculateSimilarity(vector< Size > &fingerprint1, vector< Size > &fingerprint2, vector< float > *stddev)