RDKit
Open-source cheminformatics and machine learning.
Loading...
Searching...
No Matches
GenericGroups.h
Go to the documentation of this file.
1//
2// Copyright (C) 2021-2023 Greg Landrum and RDKit contributors
3//
4// @@ All Rights Reserved @@
5// This file is part of the RDKit.
6// The contents are covered by the terms of the BSD license
7// which is included in the file license.txt, found at the root
8// of the RDKit source tree.
9//
10#include <RDGeneral/export.h>
11#include <GraphMol/RWMol.h>
12#include <GraphMol/MolOps.h>
13#ifndef RD_GENERICGROUPS_H
14#define RD_GENERICGROUPS_H
15
16#include <vector>
17#include <functional>
18#include <map>
19#include <boost/dynamic_bitset.hpp>
20
21namespace RDKit {
22class ROMol;
23class Atom;
24class Bond;
25
26namespace GenericGroups {
27// We'd like to be able to correctly interpret what's written by Marvin and
28// MarvinJS, so the conditions for these are adapted from the ChemAxon
29// documentation for homology groups
30// (https://docs.chemaxon.com/display/docs/homology-groups.md)
31//
32// If I had questions about what the queries should do, I ran example in Reaxys
33// with MarvinJS as the sketcher to see what that returns.
34//
35// I've tried to document deviations or surprises
36
37namespace Matchers {
38
39//! Matches any group as a side chain
40/*!
41
42 Note: this is Reaxys query type G and matches any sidechain
43
44 Conditions:
45 - at least one non-hydrogen atom is in the sidechain
46
47*/
49 const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore);
50
51//! Matches any group as a side chain including just an H atom
52/*!
53
54 Note: this is Reaxys query type GH and matches any sidechain
55
56 Conditions:
57 - none
58
59*/
61 const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore);
62
63//! Matches any group as a side chain
64/*!
65
66 Note: this is Reaxys query type G* and matches any sidechain that has a ring
67 closure
68
69 Conditions:
70 - at least one non-hydrogen atom is in the sidechain
71 - at least one ring closure
72
73*/
75 const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore);
76
77//! Matches any group as a side chain that has a ring closure or just an H atom
78/*!
79
80 Note: this is Reaxys query type GH* and matches any sidechains
81
82 Conditions:
83 - at least one ring closure
84 - OR
85 - the entire group is just an H atom
86
87
88*/
90 const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore);
91
92//! Matches alkyl side chains
93/*!
94
95 Conditions:
96 - side chain consists entirely of carbon or hydrogen
97 - at least one carbon is present
98 - all bonds are single
99 - no ring bonds
100
101*/
103 const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore);
104//! Matches alkyl side chains or an H atom
105/*!
106
107 Conditions:
108 - side chain consists entirely of carbon or hydrogen
109 - all bonds are single
110 - no ring bonds
111
112*/
114 const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore);
115//! Matches alkenyl side chains
116/*!
117
118 Conditions:
119 - side chain consists entirely of carbon or hydrogen
120 - contains at least one C=C
121 - no ring bonds
122
123*/
125 const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore);
126
127//! Matches alkenyl side chains or an H
128/*!
129
130 Conditions:
131 - side chain consists entirely of carbon or hydrogen
132 - contains at least one C=C
133 - no ring bonds
134
135*/
136
138 const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore);
139
140//! Matches alkynyl side chains
141/*!
142
143 Conditions:
144 - side chain consists entirely of carbon or hydrogen
145 - contains at least one C#C
146 - no ring bonds
147
148*/
150 const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore);
151
152//! Matches alkynyl side chains or an H
153/*!
154
155 Conditions:
156 - side chain consists entirely of carbon or hydrogen
157 - contains at least one C#C
158 - no ring bonds
159 - OR
160 - the whole group is an H atom
161
162*/
164 const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore);
165
166//! Matches carbocyclic side chains
167/*!
168
169 Note: this is Reaxys query type CBC and matches carbocycles
170
171 Conditions:
172 - atom is in at least one ring composed entirely of carbon
173 - atom is not in any rings not compatible with the above conditions
174 - additional fused rings in the system must obey the same rules
175
176
177*/
179 const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore);
180
181//! Matches carbocyclic side chains or an H atom
182/*!
183
184 Note: this is Reaxys query type CBC and matches carbocycles
185
186 Conditions:
187 - atom is in at least one ring composed entirely of carbon
188 - atom is not in any rings not compatible with the above conditions
189 - additional fused rings in the system must obey the same rules
190
191 - OR the entire group is just an H atom
192
193
194*/
196 const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore);
197
198//! Matches cycloalkyl side chains
199/*!
200
201 Note: this is Reaxys query type CAL and is directly equivalent to alkyl,
202 except the immediate atom needs to be in a ring.
203
204
205 Conditions:
206 - atom is in at least one ring composed entirely of carbon and connected
207 with single bonds
208 - atoms in the ring do not have unsaturations (including exocyclic)
209 - atom is not in any rings not compatible with the above conditions
210 - additional fused rings in the system must obey the same rules (i.e. all
211 single bonds)
212
213
214*/
216 const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore);
217
218//! Matches cycloalkyl side chains or an H atom
219/*!
220
221 Note: this is Reaxys query type CAL and is directly equivalent to alkyl,
222 except the immediate atom needs to be in a ring.
223
224
225 Conditions:
226 - atom is in at least one ring composed entirely of carbon and connected
227 with single bonds
228 - atoms in the ring do not have unsaturations (including exocyclic)
229 - atom is not in any rings not compatible with the above conditions
230 - additional fused rings in the system must obey the same rules (i.e. all
231 single bonds)
232 - OR
233 - the whole group is an H atom
234
235*/
237 const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore);
238
239//! Matches cycloalkenyl side chains
240/*!
241
242 Note: this is Reaxys query type CEL and matches carbocycles which have at
243 least one double or aromatic bond.
244
245 Conditions:
246 - atom is in at least one ring composed entirely of carbon and with at least
247 one double or aromatic bond
248 - atom is not in any rings not compatible with the above conditions
249 - additional fused rings in the system must obey the same rules (including
250 that each ring must have at least one double or aromatic bond)
251
252
253*/
255 const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore);
256//! Matches cycloalkenyl side chains or an H atom
257/*!
258
259 Note: this is Reaxys query type CEL and matches carbocycles which have at
260 least one double or aromatic bond.
261
262 Conditions:
263 - atom is in at least one ring composed entirely of carbon and with at least
264 one double or aromatic bond
265 - atom is not in any rings not compatible with the above conditions
266 - additional fused rings in the system must obey the same rules (including
267 that each ring must have at least one double or aromatic bond)
268
269
270*/
272 const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore);
273
274//! Matches heterocyclic side chains
275/*!
276
277 Note: this is Reaxys query type CHC and matches heterocycles
278
279 Conditions:
280 - atom is in at least one fused ring with a heteroatom
281
282
283*/
285 const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore);
286
287//! Matches heterocyclic side chains or an H atom
288/*!
289
290 Note: this is Reaxys query type CHH and matches heterocycles or an H atom
291
292 Conditions:
293 - atom is in at least one fused ring with a heteroatom
294 - or the entire group is a single H atom
295
296
297*/
299 const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore);
300
301//! Matches aryl side chains
302/*!
303
304 Note: this is Reaxys query type ARY and matches carbocycles which are aromatic
305
306 Conditions:
307 - atom is in at least one aromatic ring composed entirely of carbon
308 - atom is not in any rings not compatible with the above conditions
309 - additional fused rings in the system must obey the same rules
310
311
312*/
314 const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore);
315
316//! Matches aryl side chains or an H atom
317/*!
318
319 Note: this is Reaxys query type ARH and matches carbocycles which are aromatic
320 or an H atom
321
322 Conditions:
323 - atom is in at least one aromatic ring composed entirely of carbon
324 - atom is not in any rings not compatible with the above conditions
325 - additional fused rings in the system must obey the same rules
326
327
328*/
330 const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore);
331
332//! Matches heteroaryl side chains
333/*!
334
335 Note: this is Reaxys query type HAR and matches aromatic heterocycles
336
337 Conditions:
338 - atom is in at least one fused aromatic sytem with a heteroatom
339
340
341*/
343 const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore);
344
345//! Matches heteroaryl side chains or an H atom
346/*!
347
348 Note: this is Reaxys query type HAR and matches aromatic heterocycles
349
350 Conditions:
351 - atom is in at least one fused aromatic sytem with a heteroatom
352 - or the entire group is an H atom
353
354
355*/
357 const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore);
358
359//! Matches cyclic side chains
360/*!
361
362 Note: this is Reaxys query type CYC and matches cycles
363
364 Conditions:
365 - atom is in at least one ring
366
367*/
369 const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore);
370
371//! Matches cyclic side chains or an H atom
372/*!
373
374 Note: this is Reaxys query type CYH and matches cycles
375
376 Conditions:
377 - atom is in at least one ring
378 - or the entire group is just an H atom
379
380*/
382 const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore);
383
384//! Matches acyclic side chains
385/*!
386
387 Note: this is Reaxys query type ACY and matches sidechains with no cycles
388
389 Conditions:
390 - no atom in the sidechain is in a ring and the group is NOT just an H atom
391
392*/
394 const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore);
395
396//! Matches acyclic side chains or an H atom
397/*!
398
399 Note: this is Reaxys query type ACY and matches sidechains with no cycles
400
401 Conditions:
402 - no atom in the sidechain is in a ring
403
404*/
406 const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore);
407
408//! Matches all-carbon acyclic side chains
409/*!
410
411 Note: this is Reaxys query type ABC and matches all-carbon sidechains with no
412 cycles
413
414 Conditions:
415 - all atoms in the sidechain are carbon
416 - no atom in the sidechain is in a ring
417
418*/
420 const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore);
421
422//! Matches all-carbon acyclic side chainsor or an H atom
423/*!
424
425 Note: this is Reaxys query type ABH and matches all-carbon sidechains with no
426 cycles or just a H atom
427
428 Conditions:
429 - all atoms in the sidechain are carbon or H
430 - no atom in the sidechain is in a ring
431
432*/
434 const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore);
435
436//! Matches acyclic side chains with at least one heteroatom
437/*!
438
439 Note: this is Reaxys query type AHC and matches sidechains with no cycles and
440 at least one heteroatom
441
442 Conditions:
443 - at least one non-carbon, non-hydrogen atom is in the sidechain
444 - no atom in the sidechain is in a ring
445
446*/
448 const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore);
449
450//! Matches acyclic side chains with at least one heteroatom or an H atom
451/*!
452
453 Note: this is Reaxys query type AHC and matches sidechains with no cycles and
454 at least one heteroatom
455
456 Conditions:
457 - at least one non-carbon, non-hydrogen atom is in the sidechain
458 - no atom in the sidechain is in a ring
459
460*/
462 const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore);
463
464//! Matches acyclic alkoxy side chains
465/*!
466
467 Note: this is Reaxys query type AOX and matches alkoxy sidechains
468
469 Conditions:
470 - first atom is an O
471 - all other atoms are C
472 - all single bonds
473 - no atom in the sidechain is in a ring
474
475*/
477 const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore);
478/*!
479
480Note: this is Reaxys query type AOH and matches alkoxy sidechains or a hydrogen
481
482Conditions:
483- first atom is an O
484- all other atoms are C
485- all single bonds
486- no atom in the sidechain is in a ring
487- OR
488- the whole group is just an H atom
489
490*/
492 const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore);
493
494//! Matches rings without carbon
495/*!
496
497 Note: this is Reaxys query type CXX and matches rings which contain no carbon
498
499 Conditions:
500 - a ring is present
501 - none of the atoms in the fused ring system are carbon
502
503*/
505 const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore);
506
507//! Matches rings without carbon or just an H
508/*!
509
510 Note: this is Reaxys query type CXH and matches rings which contain no carbon
511
512 Conditions:
513 - a ring is present
514 - none of the atoms in the fused ring system are carbon
515 - OR
516 - the entire group is just an H atom
517
518*/
519
521 const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore);
522
523} // namespace Matchers
524const static std::map<
525 std::string,
526 std::function<bool(const ROMol &, const Atom &, boost::dynamic_bitset<>)>>
530 {"GroupH", Matchers::GroupHAtomMatcher},
538 {"AlkylH", Matchers::AlkylHAtomMatcher},
540 {"Alkenyl", Matchers::AlkenylAtomMatcher},
542 {"AlkenylH", Matchers::AlkenylHAtomMatcher},
544 {"Alkynyl", Matchers::AlkynylAtomMatcher},
546 {"AlkynylH", Matchers::AlkynylHAtomMatcher},
548 {"Carbocyclic", Matchers::CarbocyclicAtomMatcher},
550 {"CarbocyclicH", Matchers::CarbocyclicHAtomMatcher},
552 {"Carbocycloalkyl", Matchers::CarbocycloalkylAtomMatcher},
554 {"CarbocycloalkylH", Matchers::CarbocycloalkylHAtomMatcher},
556 {"Carbocycloalkenyl", Matchers::CarbocycloalkenylAtomMatcher},
558 {"CarbocycloalkenylH", Matchers::CarbocycloalkenylHAtomMatcher},
560 {"Carboaryl", Matchers::CarboarylAtomMatcher},
562 {"CarboarylH", Matchers::CarboarylHAtomMatcher},
564 {"Cyclic", Matchers::CyclicAtomMatcher},
566 {"CyclicH", Matchers::CyclicHAtomMatcher},
568 {"Acyclic", Matchers::AcyclicAtomMatcher},
570 {"AcyclicH", Matchers::AcyclicHAtomMatcher},
572 {"Carboacyclic", Matchers::CarboacyclicAtomMatcher},
574 {"CarboacyclicH", Matchers::CarboacyclicHAtomMatcher},
576 {"Heteroacyclic", Matchers::HeteroacyclicAtomMatcher},
578 {"HeteroacyclicH", Matchers::HeteroacyclicHAtomMatcher},
584 {"Heterocyclic", Matchers::HeterocyclicAtomMatcher},
586 {"HeterocyclicH", Matchers::HeterocyclicHAtomMatcher},
588 {"Heteroaryl", Matchers::HeteroarylAtomMatcher},
590 {"HeteroarylH", Matchers::HeteroarylHAtomMatcher},
592 {"NoCarbonRing", Matchers::NoCarbonRingAtomMatcher},
594 {"NoCarbonRingH", Matchers::NoCarbonRingHAtomMatcher},
596
597// This is an extension of adjustQueryProperties from GraphMol that allows the
598// search of generic groups
600 const ROMol &mol, const MolOps::AdjustQueryParameters *inParams = nullptr);
601
602//! returns false if any of the molecule's generic atoms are not satisfied in
603/// the current match
605 const ROMol &mol, const ROMol &query,
606 const std::vector<unsigned int> &match);
607//! sets the apropriate generic query tags based on atom labels and/or SGroups
608/*
609
610- Generic query tags found in the atom labels/SGroups will be overwrite existing
611generic query tags (if there are any present).
612- only SUP SGroups are considered
613- Any atom labels or SGroups which are converted will be removed
614- If both atom labels and SGroups are being used and an atom has generic
615query tags in both, the one from the SGroup will be used.
616- Generic query tags not found in GenericGroups::genericMatchers will be ignored
617
618*/
620 ROMol &mol, bool useAtomLabels = true, bool useSGroups = true);
622 ROMol &mol);
623} // namespace GenericGroups
624} // namespace RDKit
625
626#endif
Defines the editable molecule class RWMol.
The class for representing atoms.
Definition Atom.h:75
#define RDKIT_GENERICGROUPS_EXPORT
Definition export.h:225
RDKIT_GENERICGROUPS_EXPORT bool CarboacyclicHAtomMatcher(const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore)
Matches all-carbon acyclic side chainsor or an H atom.
RDKIT_GENERICGROUPS_EXPORT bool CyclicAtomMatcher(const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore)
Matches cyclic side chains.
RDKIT_GENERICGROUPS_EXPORT bool GroupStarHAtomMatcher(const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore)
Matches any group as a side chain that has a ring closure or just an H atom.
RDKIT_GENERICGROUPS_EXPORT bool AlkylAtomMatcher(const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore)
Matches alkyl side chains.
RDKIT_GENERICGROUPS_EXPORT bool AcyclicHAtomMatcher(const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore)
Matches acyclic side chains or an H atom.
RDKIT_GENERICGROUPS_EXPORT bool AlkenylHAtomMatcher(const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore)
Matches alkenyl side chains or an H.
RDKIT_GENERICGROUPS_EXPORT bool NoCarbonRingHAtomMatcher(const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore)
Matches rings without carbon or just an H.
RDKIT_GENERICGROUPS_EXPORT bool HeteroarylHAtomMatcher(const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore)
Matches heteroaryl side chains or an H atom.
RDKIT_GENERICGROUPS_EXPORT bool GroupHAtomMatcher(const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore)
Matches any group as a side chain including just an H atom.
RDKIT_GENERICGROUPS_EXPORT bool CarbocycloalkylHAtomMatcher(const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore)
Matches cycloalkyl side chains or an H atom.
RDKIT_GENERICGROUPS_EXPORT bool CarbocycloalkylAtomMatcher(const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore)
Matches cycloalkyl side chains.
RDKIT_GENERICGROUPS_EXPORT bool HeteroacyclicAtomMatcher(const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore)
Matches acyclic side chains with at least one heteroatom.
RDKIT_GENERICGROUPS_EXPORT bool GroupStarAtomMatcher(const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore)
Matches any group as a side chain.
RDKIT_GENERICGROUPS_EXPORT bool CyclicHAtomMatcher(const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore)
Matches cyclic side chains or an H atom.
RDKIT_GENERICGROUPS_EXPORT bool HeterocyclicAtomMatcher(const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore)
Matches heterocyclic side chains.
RDKIT_GENERICGROUPS_EXPORT bool CarbocyclicAtomMatcher(const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore)
Matches carbocyclic side chains.
RDKIT_GENERICGROUPS_EXPORT bool HeteroacyclicHAtomMatcher(const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore)
Matches acyclic side chains with at least one heteroatom or an H atom.
RDKIT_GENERICGROUPS_EXPORT bool CarbocycloalkenylHAtomMatcher(const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore)
Matches cycloalkenyl side chains or an H atom.
RDKIT_GENERICGROUPS_EXPORT bool AcyclicAtomMatcher(const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore)
Matches acyclic side chains.
RDKIT_GENERICGROUPS_EXPORT bool HeterocyclicHAtomMatcher(const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore)
Matches heterocyclic side chains or an H atom.
RDKIT_GENERICGROUPS_EXPORT bool AlkynylAtomMatcher(const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore)
Matches alkynyl side chains.
RDKIT_GENERICGROUPS_EXPORT bool AlkoxyacyclicHAtomMatcher(const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore)
RDKIT_GENERICGROUPS_EXPORT bool CarbocycloalkenylAtomMatcher(const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore)
Matches cycloalkenyl side chains.
RDKIT_GENERICGROUPS_EXPORT bool AlkynylHAtomMatcher(const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore)
Matches alkynyl side chains or an H.
RDKIT_GENERICGROUPS_EXPORT bool CarboarylHAtomMatcher(const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore)
Matches aryl side chains or an H atom.
RDKIT_GENERICGROUPS_EXPORT bool NoCarbonRingAtomMatcher(const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore)
Matches rings without carbon.
RDKIT_GENERICGROUPS_EXPORT bool CarboacyclicAtomMatcher(const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore)
Matches all-carbon acyclic side chains.
RDKIT_GENERICGROUPS_EXPORT bool GroupAtomMatcher(const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore)
Matches any group as a side chain.
RDKIT_GENERICGROUPS_EXPORT bool HeteroarylAtomMatcher(const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore)
Matches heteroaryl side chains.
RDKIT_GENERICGROUPS_EXPORT bool CarbocyclicHAtomMatcher(const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore)
Matches carbocyclic side chains or an H atom.
RDKIT_GENERICGROUPS_EXPORT bool AlkoxyacyclicAtomMatcher(const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore)
Matches acyclic alkoxy side chains.
RDKIT_GENERICGROUPS_EXPORT bool AlkenylAtomMatcher(const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore)
Matches alkenyl side chains.
RDKIT_GENERICGROUPS_EXPORT bool AlkylHAtomMatcher(const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore)
Matches alkyl side chains or an H atom.
RDKIT_GENERICGROUPS_EXPORT bool CarboarylAtomMatcher(const ROMol &mol, const Atom &atom, boost::dynamic_bitset<> ignore)
Matches aryl side chains.
RDKIT_GENERICGROUPS_EXPORT ROMol * adjustQueryPropertiesWithGenericGroups(const ROMol &mol, const MolOps::AdjustQueryParameters *inParams=nullptr)
RDKIT_GENERICGROUPS_EXPORT bool genericAtomMatcher(const ROMol &mol, const ROMol &query, const std::vector< unsigned int > &match)
RDKIT_GENERICGROUPS_EXPORT void setGenericQueriesFromProperties(ROMol &mol, bool useAtomLabels=true, bool useSGroups=true)
sets the apropriate generic query tags based on atom labels and/or SGroups
static const std::map< std::string, std::function< bool(const ROMol &, const Atom &, boost::dynamic_bitset<>)> > genericMatchers
RDKIT_GENERICGROUPS_EXPORT void convertGenericQueriesToSubstanceGroups(ROMol &mol)
Std stuff.
bool rdvalue_is(const RDValue_cast_t)
Parameters controlling the behavior of MolOps::adjustQueryProperties.
Definition MolOps.h:392