12#ifndef RDKIT_RGROUPDECOMPPARAMS_H
13#define RDKIT_RGROUPDECOMPPARAMS_H
15#include "../RDKitBase.h"
20#define RGROUPLABELS_ENUM_ITEMS \
21 RGD_ENUM_ITEM(IsotopeLabels, 1 << 0) \
22 RGD_ENUM_ITEM(AtomMapLabels, 1 << 1) \
23 RGD_ENUM_ITEM(AtomIndexLabels, 1 << 2) \
24 RGD_ENUM_ITEM(RelabelDuplicateLabels, 1 << 3) \
25 RGD_ENUM_ITEM(MDLRGroupLabels, 1 << 4) \
26 RGD_ENUM_ITEM(DummyAtomLabels, \
28 RGD_ENUM_ITEM(AutoDetect, 0xFF)
30#define RGROUPMATCHING_ENUM_ITEMS \
31 RGD_ENUM_ITEM(Greedy, 1 << 0) \
32 RGD_ENUM_ITEM(GreedyChunks, 1 << 1) \
33 RGD_ENUM_ITEM(Exhaustive, 1 << 2) \
34 RGD_ENUM_ITEM(NoSymmetrization, 1 << 3) \
35 RGD_ENUM_ITEM(GA, 1 << 4)
37#define RGROUPLABELLING_ENUM_ITEMS \
38 RGD_ENUM_ITEM(AtomMap, 1 << 0) \
39 RGD_ENUM_ITEM(Isotope, 1 << 1) \
40 RGD_ENUM_ITEM(MDLRGroup, 1 << 2)
42#define RGROUPCOREALIGNMENT_ENUM_ITEMS \
43 RGD_ENUM_ITEM(NoAlignment, 0) \
44 RGD_ENUM_ITEM(MCS, 1 << 0)
46#define RGROUPSCORE_ENUM_ITEMS \
47 RGD_ENUM_ITEM(Match, 1 << 0) \
48 RGD_ENUM_ITEM(FingerprintVariance, 1 << 2)
50#define RGD_ENUM_ITEM(k, v) k = v,
61#define RGD_STD_MAP_ITEM(k) {#k, k},
62#define RGD_ENUM_ITEM(k, v) RGD_STD_MAP_ITEM(k)
65 unsigned int labels = AutoDetect;
66 unsigned int matchingStrategy = GreedyChunks;
67 unsigned int scoreMethod = Match;
68 unsigned int rgroupLabelling = AtomMap | MDLRGroup;
69 unsigned int alignment = MCS;
71 unsigned int chunkSize = 5;
73 bool onlyMatchAtRGroups =
false;
75 bool removeAllHydrogenRGroups =
true;
78 bool removeAllHydrogenRGroupsAndLabels =
true;
80 bool removeHydrogensPostMatch =
true;
82 bool allowNonTerminalRGroups =
false;
84 bool allowMultipleRGroupsOnUnlabelled =
false;
86 bool doTautomers =
false;
87 bool doEnumeration =
false;
94 bool includeTargetMolInResults =
false;
96 double timeout = -1.0;
110 int gaPopulationSize = -1;
112 int gaMaximumOperations = -1;
115 int gaNumberOperationsWithoutImprovement = -1;
117 int gaRandomSeed = -1;
119 int gaNumberRuns = 1;
121#ifdef RDK_BUILD_THREADSAFE_SSS
122 bool gaParallelRuns =
true;
124 bool gaParallelRuns =
false;
133 void checkNonTerminal(
const Atom &atom)
const;
RWMol is a molecule class that is intended to be edited.
#define RDKIT_RGROUPDECOMPOSITION_EXPORT
@ RGROUPCOREALIGNMENT_ENUM_ITEMS
@ RGROUPMATCHING_ENUM_ITEMS
bool rdvalue_is(const RDValue_cast_t)
@ RGROUPLABELS_ENUM_ITEMS
@ RGROUPLABELLING_ENUM_ITEMS
void updateRGroupDecompositionParametersFromJSON(RGroupDecompositionParameters ¶ms, const std::string &details_json)
void addDummyAtomsToUnlabelledCoreAtoms(RWMol &core)
unsigned int autoGetLabels(const RWMol &)
bool prepareCore(RWMol &, const RWMol *alignCore)
RGroupDecompositionParameters()
SubstructMatchParameters substructmatchParams