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>
37 void generateFingerprints(
System&
molecules, vector<vector<Size> >& fingerprints);
39 void generateFingerprints(
const list<Molecule*>&
molecules, vector<vector<Size> >& fingerprints);
41 void generateFingerprint(
Molecule& molecule, vector<Size>& fingerprint);
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);
64 void generatePathFingerprint(
Molecule& mol, vector<bool>& fingerprint);
67 float calculateSimilarity(vector<bool>& fingerprint1, vector<bool>& fingerprint2);
69 void filterRedundantMolecules(
const list<Molecule*>&
molecules,
float similarity_threshold);
71 void filterRedundantMolecules(
System&
molecules,
float similarity_threshold);
76 float calculateSimilarity(vector<Size>& fingerprint1, vector<Size>& fingerprint2, vector<float>* stddev);
79 const vector<String>& getFunctionalGroupNames();
92 void generatePathHash_(vector<Size>& path,
Size& hash);
94 bool generatePathFingerprint_(
const Atom* atom, std::vector<Size>& path, std::set<const Bond*>& path_bonds,
95 std::vector<bool>& fingerprint);