RDKit
Open-source cheminformatics and machine learning.
Loading...
Searching...
No Matches
MarvinDefs.h
Go to the documentation of this file.
1//
2// Copyright (C) 2022-2023 Tad Hurst, Greg Landrum and other 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
11// This software is based on the Chemaxon documentation for the MRV format:P
12// https://docs.chemaxon.com/display/docs/marvin-documents-mrv.md
13// and this implmentation is tested against the parsing and generation in the
14// Marvin JS sketcher: https://marvinjs-demo.chemaxon.com/latest/demo.html
15
16#ifndef RD_MARVINDEFS_H
17#define RD_MARVINDEFS_H
18
19#include <GraphMol/RDKitBase.h>
25
27#include <boost/property_tree/ptree.hpp>
28#include <boost/property_tree/xml_parser.hpp>
29#include <boost/foreach.hpp>
30#include <boost/algorithm/string.hpp>
32
33#include <float.h> // Needed for DBL_MAX on Clang
34
35using boost::property_tree::ptree;
36
37namespace RDKit {
38
39const std::vector<std::string> sruSgroupConnectChoices{"hh", "ht", "eu"};
40const std::vector<std::string> marvinBondOrders{"1", "2", "3", "A"};
41const std::vector<std::string> marvinQueryBondsTypes{"SD", "SA", "DA", "Any"};
42const std::vector<std::string> marvinConventionTypes{"cxn:coord"};
43const std::vector<std::string> marvinStereoDictRefTypes{"cml:W", "cml:H"};
44const std::vector<std::string> marvinStereoConventionTypes{"1", "3", "4", "6"};
45
46const std::vector<std::string> marvinRadicalVals{
47 "monovalent", "divalent", "divalent1", "divalent3",
48 "trivalent", "trivalent2", "trivalent4", "4"};
49const std::map<std::string, int> marvinRadicalToRadicalElectrons{
50 {"monovalent", 1}, {"divalent", 2}, {"divalent1", 2}, {"divalent3", 2},
51 {"trivalent", 3}, {"trivalent2", 3}, {"trivalent4", 3}, {"4", 4}};
52
53const std::map<int, std::string> radicalElectronsToMarvinRadical{
54 {1, "monovalent"}, {2, "divalent"}, {3, "trivalent4"}, {4, "4"}};
55
61
62class MarvinWriterException : public std::runtime_error {
63 public:
64 explicit MarvinWriterException(std::string message)
65 : std::runtime_error(message){};
66};
67
69 public:
70 std::string type;
71 double x1;
72 double y1;
73 double x2;
74 double y2;
75
76 std::string toString() const;
77 ptree toPtree() const;
78};
79
81 public:
82 std::string id;
83 double x1;
84 double y1;
85 double x2;
86 double y2;
87
88 std::string toString() const;
89 ptree toPtree() const;
90};
91
93 public:
94 std::string id;
95 std::string text;
96 double x;
97 double y;
98 double fontScale = 0.0;
99
100 std::string halign;
101 std::string valign;
102
103 std::string toString() const;
104 ptree toPtree() const;
105};
106
108 public:
109 // <attachmentPoint atom="a7" order="1" bond="b6"/>
110 std::string atom;
111 std::string bond;
112 std::string order;
113
114 std::string toString() const;
115 ptree toPtree() const;
116};
117
119 public:
120 std::string id;
121 std::string elementType;
122 double x2;
123 double y2;
124 double x3;
125 double y3;
126 double z3;
127
129 std::string radical;
133 std::string mrvAlias;
134 std::string mrvStereoGroup;
136 std::string sgroupRef;
137 bool sGroupRefIsSuperatom; // if set, we will not change the sgroupRef - the
138 // superatom really needs it
141
143 MarvinAtom(const MarvinAtom &atomToCopy, std::string newId);
145
146 bool operator==(const MarvinAtom &rhs) const;
147
148 bool operator==(const MarvinAtom *rhs) const;
149
150 bool isElement() const;
151
152 std::string toString() const;
153 ptree toPtree() const;
154};
155
157 public:
158 std::string value;
159 std::string convention;
160 std::string conventionValue;
161 std::string dictRef;
162
163 std::string toString() const;
164 ptree toPtree() const;
165};
166
168 public:
169 std::string id;
170 std::string atomRefs2[2];
171 std::string order;
173 std::string queryType;
174 std::string convention;
175
177
179 std::string atomRef1, std::string atomRef2);
180
181 bool isEqual(const MarvinAtom &other) const;
182
183 bool operator==(const MarvinAtom &rhs) const;
184
185 const std::string getBondType() const;
186
187 std::string toString() const;
188 ptree toPtree() const;
189};
190
219
220template <typename T>
221typename std::vector<std::unique_ptr<T>>::iterator findUniquePtr(
222 std::vector<std ::unique_ptr<T>> &vector, T *itemToFind) {
223 auto foundUniqIter = find_if(vector.begin(), vector.end(),
224 [itemToFind](std::unique_ptr<T> &uniquePtr) {
225 return uniquePtr.get() == itemToFind;
226 });
227
228 if (foundUniqIter == vector.end()) {
229 throw FileParseException("Unexpected error - item to find not found");
230 }
231
232 return foundUniqIter;
233}
234
235template <typename T>
236void eraseUniquePtr(std::vector<std ::unique_ptr<T>> &vector, T *itemToErase) {
238
239 if (removeUniqIter == vector.end()) {
240 throw FileParseException("Unexpected error - item to remove not found");
241 }
242
243 vector.erase(removeUniqIter);
244}
245
247 public:
248 std::string molID;
249 std::string id; // used in all sGroups
250
251 // these atoms and bonds are only owned by this mol if it is a MarvinMol or
252 // MarvinSuperatomSgroup all other derived classes have atoms that are owned
253 // by the actual parent, and are references
254 std::vector<MarvinAtom *> atoms;
255 std::vector<MarvinBond *> bonds;
256
257 std::vector<std::unique_ptr<MarvinMolBase>> sgroups;
259
260 virtual std::string role() const = 0;
261 virtual bool hasAtomBondBlocks() const = 0;
262 virtual std::string toString() const = 0;
263 virtual ptree toPtree() const;
264 void addSgroupsToPtree(ptree &pt) const;
265
266 virtual MarvinMolBase *copyMol(const std::string &idAppend) const = 0;
267 virtual void pushOwnedAtom(MarvinAtom *atom);
268 virtual void pushOwnedBond(MarvinBond *bond);
269
270 virtual void removeOwnedAtom(MarvinAtom *atom);
271 virtual void removeOwnedBond(MarvinBond *bond);
272
274
276
277 virtual ~MarvinMolBase();
278
279 int getAtomIndex(std::string id) const;
280 int getBondIndex(std::string id) const;
281
282 const std::vector<std::string> getBondList() const;
283 const std::vector<std::string> getAtomList() const;
285
287 int &molCount // this is the starting mol count, and receives the ending
288 // mol count - THis is used when
289 // MarvinMol->convertToSuperAtoms is called multiple times
290 // from a RXN
291 ,
292 int &atomCount // starting and ending atom count
293 ,
294 int &bondCount // starting and ending bond count
295 ,
296 int &sgCount // starting and ending sq count
297 ,
298 std::map<std::string, std::string>
299 &sgMap // map from old sg number to new sg number
300 ,
301 std::map<std::string, std::string>
302 &atomMap // map from old atom number to new atom number
303 ,
304 std::map<std::string, std::string>
305 &bondMap // map from old bond number to new bond number
306 );
307
308 // the following is virtual because some derived classes need to do more than
309 // just call the base class. Currently, only MarvinSuperatomSgroup does this
310 public:
312 int &molCount, // this is the starting mol count, and receives the ending
313 // mol count - THis is used when
314 // MarvinMol->convertToSuperAtoms is called multiple
315 // times from a RXN
316 int &atomCount, // starting and ending atom count
317 int &bondCount, // starting and ending bond count
318 std::map<std::string, std::string> &sgMap,
319 std::map<std::string, std::string> &atomMap,
320 std::map<std::string, std::string> &bondMap);
321
323 std::map<std::string, std::string> &sgMap);
324
325 // the following is virtual because some derived classes need to do more than
326 // just call the base class. Currently, only MarvinSuperatomSgroup does this
327
329 const std::vector<MarvinAtom *> &setOfAtoms) const;
330
331 public:
332 static bool atomRefInAtoms(MarvinAtom *a, std::string b);
333 static bool bondRefInBonds(MarvinBond *a, std::string b);
334 static bool molIDInSgroups(std::string a, std::string b);
337
338 void clearMaps();
339
342
343 virtual bool isPassiveRoleForExpansion() const;
344 virtual bool isPassiveRoleForContraction() const;
345 virtual void processSpecialSgroups();
347 std::unique_ptr<SubstanceGroup> &sgroup,
348 int sequenceId);
349
350 bool has2dCoords() const;
351 bool has3dCoords() const;
352 bool hasAny3dCoords() const;
353 bool hasAny2dCoords() const;
354 bool hasCoords() const;
356
358};
359
361 private:
362 std::string roleName; // could be MarvinSruSgroup, MarvinCopolymerSgroup or
363 // MarvinModificationSgroup
364 public:
367
368 MarvinMolBase *copyMol(const std::string &idAppend) const override;
369
370 std::string title;
371 std::string connect;
372 std::string correspondence;
373
374 std::string toString() const override;
375 ptree toPtree() const override;
376
377 std::string role() const override;
378 bool hasAtomBondBlocks() const override;
380 std::unique_ptr<SubstanceGroup> &sgroup,
381 int sequenceId) override;
382};
383
385 public:
388
389 MarvinMolBase *copyMol(const std::string &idAppend) const override;
390
391 std::string context;
392 std::string fieldName;
393 std::string placement;
394 std::string unitsDisplayed;
395 std::string queryType;
396 std::string queryOp;
397 std::string fieldData;
398 std::string units;
399 double x;
400 double y;
401
402 std::string toString() const override;
403 ptree toPtree() const override;
404
405 std::string role() const override;
406 bool hasAtomBondBlocks() const override;
408 std::unique_ptr<SubstanceGroup> &sgroup,
409 int sequenceId) override;
410};
411
413 public:
414 std::string title;
415
418
419 MarvinMolBase *copyMol(const std::string &idAppend) const override;
420
422
424
425 std::string toString() const override;
426 ptree toPtree() const override;
427
428 std::string role() const override;
429 bool hasAtomBondBlocks() const override;
430 bool isPassiveRoleForContraction() const override;
431
433 std::unique_ptr<SubstanceGroup> &sgroup,
434 int sequenceId) override;
435};
436
438 public:
441
442 MarvinMolBase *copyMol(const std::string &idAppend) const override;
443
444 std::string title;
445 bool isExpanded = false;
446 std::vector<MarvinAtom *> parentAtoms;
447 std::vector<MarvinBond *>
448 bondsToAtomsNotInExpandedGroup; // only when expanded
449
453 std::vector<MarvinBond *> &bondsToTry,
454 std::vector<MarvinBond *> &orphanedBonds) const;
455
456 std::string toString() const override;
457 ptree toPtree() const override;
458
459 std::string role() const override;
460 bool hasAtomBondBlocks() const override;
461 bool isPassiveRoleForExpansion() const override;
462 bool isPassiveRoleForContraction() const override;
463 void processSpecialSgroups() override;
464
466 std::unique_ptr<SubstanceGroup> &sgroup,
467 int sequenceId) override;
468};
469
471 // <molecule molID="m2" id="sg1" role="MulticenterSgroup" atomRefs="a2 a6 a5
472 // a4 a3" center="a18"/>sgroup->
473 public:
476
477 MarvinMolBase *copyMol(const std::string &idAppend) const override;
478
480
481 std::string toString() const override;
482 ptree toPtree() const override;
483
485 std::string role() const override;
486 bool hasAtomBondBlocks() const override;
487 void processSpecialSgroups() override;
489 std::unique_ptr<SubstanceGroup> &sgroup,
490 int sequenceId) override;
491};
492
494 // <molecule molID="m2" id="sg1" role="GenericSgroup" atomRefs="a1 a2 a3 a4 a5
495 // a6 a7 a8 a9 a13 a10 a11 a12" charge="onAtoms"/></molecule>
496 public:
499
500 MarvinMolBase *copyMol(const std::string &idAppend) const override;
501
502 std::string charge; // onAtoms or onBrackets
503 std::string toString() const override;
504 ptree toPtree() const override;
505
506 std::string role() const override;
507 bool hasAtomBondBlocks() const override;
509 std::unique_ptr<SubstanceGroup> &sgroup,
510 int sequenceId) override;
511};
512
514 // <molecule id="sg1" role="MonomerSgroup" title="mon" charge="onAtoms"
515 // molID="m2" atomRefs="a2 a1 a3 a4">
516 // </molecule>
517 public:
520
521 MarvinMolBase *copyMol(const std::string &idAppend) const override;
522
523 std::string title;
524 std::string charge; // onAtoms or onBrackets
525 std::string toString() const override;
526 ptree toPtree() const override;
527
528 std::string role() const override;
529 bool hasAtomBondBlocks() const override;
531 std::unique_ptr<SubstanceGroup> &sgroup,
532 int sequenceId) override;
533};
534
536 public:
537 std::string title;
538 std::vector<std::unique_ptr<MarvinAttachmentPoint>> attachmentPoints;
539
542
543 MarvinMolBase *copyMol(const std::string &idAppend) const override;
544
546
548
549 std::string role() const override;
550 bool hasAtomBondBlocks() const override;
551 bool isPassiveRoleForExpansion() const override;
552
553 std::string toString() const override;
554 ptree toPtree() const override;
555
557 int &molCount, // this is the starting mol count, and receives the ending
558 // mol count - THis is used when
559 // MarvinMol->convertToSuperAtoms is called multiple
560 // times from a RXN
561 int &atomCount, // starting and ending atom count
562 int &bondCount, // starting and ending bond count
563 std::map<std::string, std::string> &sgMap,
564 std::map<std::string, std::string> &atomMap,
565 std::map<std::string, std::string> &bondMap) override;
566
568 const std::vector<MarvinAtom *> &setOfAtoms) const override;
569
570 void processSpecialSgroups() override;
571};
572
573class MarvinMol : public MarvinMolBase {
574 public:
577
578 MarvinMolBase *copyMol(const std::string &idAppend) const override;
579
580 ~MarvinMol() override;
581
582 std::vector<std::unique_ptr<MarvinAtom>> ownedAtoms;
583 std::vector<std::unique_ptr<MarvinBond>> ownedBonds;
584
585 void pushOwnedAtom(MarvinAtom *atom) override;
586 void pushOwnedBond(MarvinBond *bond) override;
587
588 void removeOwnedAtom(MarvinAtom *atom) override;
589 void removeOwnedBond(MarvinBond *bond) override;
590
591 std::string role() const override;
592 bool hasAtomBondBlocks() const override;
593 bool isPassiveRoleForContraction() const override;
594
595 std::string toString() const override;
596 ptree toPtree() const override;
597
598 std::string generateMolString();
599 ptree toMolPtree() const;
600};
601
603 public:
604 std::vector<std::unique_ptr<MarvinMol>> reactants;
605 std::vector<std::unique_ptr<MarvinMol>> agents;
606 std::vector<std::unique_ptr<MarvinMol>> products;
607
609 std::vector<std::unique_ptr<MarvinPlus>> pluses;
610 std::vector<std::unique_ptr<MarvinCondition>> conditions;
611
613
615
616 std::string toString();
617 ptree toPtree() const;
618};
619
621 public:
622 StereoGroupType groupType; // one of ABS AND OR
624 std::vector<unsigned int> atoms;
625
627};
628
629template <typename T>
630bool getCleanNumber(std::string strToParse, T &outInt);
631} // namespace RDKit
632
633#endif // RD_MARVINDEFS_H
pulls in the core RDKit functionality
used by various file parsing classes to indicate a parse error
ptree toPtree() const
std::string toString() const
std::string type
Definition MarvinDefs.h:70
std::string mrvStereoGroup
Definition MarvinDefs.h:134
bool isElement() const
ptree toPtree() const
std::string id
Definition MarvinDefs.h:120
std::string elementType
Definition MarvinDefs.h:121
std::string toString() const
std::string sgroupRef
Definition MarvinDefs.h:136
std::string radical
Definition MarvinDefs.h:129
std::string sgroupAttachmentPoint
Definition MarvinDefs.h:139
MarvinAtom(const MarvinAtom &atomToCopy, std::string newId)
bool operator==(const MarvinAtom &rhs) const
bool operator==(const MarvinAtom *rhs) const
std::string mrvAlias
Definition MarvinDefs.h:133
std::string toString() const
std::string conventionValue
Definition MarvinDefs.h:160
std::string toString() const
std::string convention
Definition MarvinDefs.h:174
ptree toPtree() const
std::string queryType
Definition MarvinDefs.h:173
MarvinBond(const MarvinBond &bondToCopy, std::string newId, std::string atomRef1, std::string atomRef2)
std::string atomRefs2[2]
Definition MarvinDefs.h:170
std::string id
Definition MarvinDefs.h:169
std::string order
Definition MarvinDefs.h:171
MarvinBondStereo bondStereo
Definition MarvinDefs.h:172
bool operator==(const MarvinAtom &rhs) const
const std::string getBondType() const
bool isEqual(const MarvinAtom &other) const
std::string toString() const
std::string toString() const
ptree toPtree() const
bool hasAtomBondBlocks() const override
MarvinDataSgroup(MarvinMolBase *parent)
std::string unitsDisplayed
Definition MarvinDefs.h:394
MarvinDataSgroup(MarvinMolBase *parent, ptree &molTree)
MarvinMolBase * copyMol(const std::string &idAppend) const override
void parseMoleculeSpecific(RDKit::RWMol *mol, std::unique_ptr< SubstanceGroup > &sgroup, int sequenceId) override
std::string role() const override
ptree toPtree() const override
std::string toString() const override
bool hasAtomBondBlocks() const override
ptree toPtree() const override
MarvinGenericSgroup(MarvinMolBase *parent, ptree &molTree)
std::string toString() const override
MarvinMolBase * copyMol(const std::string &idAppend) const override
std::string role() const override
void parseMoleculeSpecific(RDKit::RWMol *mol, std::unique_ptr< SubstanceGroup > &sgroup, int sequenceId) override
MarvinGenericSgroup(MarvinMolBase *parent)
bool AnyOverLappingAtoms(const MarvinMolBase *otherMol) const
void cleanUpNumbering(int &molCount, int &atomCount, int &bondCount, int &sgCount, std::map< std::string, std::string > &sgMap, std::map< std::string, std::string > &atomMap, std::map< std::string, std::string > &bondMap)
void cleanUpSgNumbering(int &sgCount, std::map< std::string, std::string > &sgMap)
virtual std::string role() const =0
const std::vector< std::string > getAtomList() const
virtual MarvinMolBase * copyMol(const std::string &idAppend) const =0
virtual void processSpecialSgroups()
virtual ~MarvinMolBase()
const std::vector< std::string > getBondList() const
static bool atomRefInAtoms(MarvinAtom *a, std::string b)
int getBondIndex(std::string id) const
std::vector< MarvinBond * > bonds
Definition MarvinDefs.h:255
bool hasAny2dCoords() const
virtual std::string toString() const =0
virtual void pushOwnedBond(MarvinBond *bond)
virtual bool isPassiveRoleForExpansion() const
bool has3dCoords() const
virtual bool hasAtomBondBlocks() const =0
virtual void removeOwnedBond(MarvinBond *bond)
void addSgroupsToPtree(ptree &pt) const
virtual void parseMoleculeSpecific(RDKit::RWMol *mol, std::unique_ptr< SubstanceGroup > &sgroup, int sequenceId)
std::vector< std::unique_ptr< MarvinMolBase > > sgroups
Definition MarvinDefs.h:257
virtual ptree toPtree() const
virtual bool isPassiveRoleForContraction() const
int getAtomIndex(std::string id) const
MarvinAtom * findAtomByRef(std::string atomId)
virtual IsSgroupInAtomSetResult isSgroupInSetOfAtoms(const std::vector< MarvinAtom * > &setOfAtoms) const
void parseAtomsAndBonds(ptree &molTree)
MarvinBond * findBondByRef(std::string atomId)
MarvinMolBase * parent
Definition MarvinDefs.h:258
virtual void pushOwnedAtom(MarvinAtom *atom)
static bool molIDInSgroups(std::string a, std::string b)
std::vector< MarvinAtom * > atoms
Definition MarvinDefs.h:254
bool hasAny3dCoords() const
void processSgroupsFromRDKit()
static bool bondRefInBonds(MarvinBond *a, std::string b)
int getExplicitValence(const MarvinAtom &marvinAtom) const
virtual void removeOwnedAtom(MarvinAtom *atom)
bool has2dCoords() const
virtual void cleanUpNumberingMolsAtomsBonds(int &molCount, int &atomCount, int &bondCount, std::map< std::string, std::string > &sgMap, std::map< std::string, std::string > &atomMap, std::map< std::string, std::string > &bondMap)
bool hasCoords() const
bool isPassiveRoleForContraction() const override
bool hasAtomBondBlocks() const override
std::vector< std::unique_ptr< MarvinAtom > > ownedAtoms
Definition MarvinDefs.h:582
void removeOwnedBond(MarvinBond *bond) override
MarvinMol(ptree &molTree)
std::string generateMolString()
void pushOwnedBond(MarvinBond *bond) override
std::string role() const override
MarvinMolBase * copyMol(const std::string &idAppend) const override
ptree toPtree() const override
ptree toMolPtree() const
void pushOwnedAtom(MarvinAtom *atom) override
std::vector< std::unique_ptr< MarvinBond > > ownedBonds
Definition MarvinDefs.h:583
~MarvinMol() override
void removeOwnedAtom(MarvinAtom *atom) override
std::string toString() const override
bool hasAtomBondBlocks() const override
ptree toPtree() const override
std::string toString() const override
void parseMoleculeSpecific(RDKit::RWMol *mol, std::unique_ptr< SubstanceGroup > &sgroup, int sequenceId) override
MarvinMonomerSgroup(MarvinMolBase *parent, ptree &molTree)
MarvinMonomerSgroup(MarvinMolBase *parent)
std::string role() const override
MarvinMolBase * copyMol(const std::string &idAppend) const override
std::string role() const override
void processSpecialSgroups() override
bool hasAtomBondBlocks() const override
MarvinMolBase * copyMol(const std::string &idAppend) const override
std::string toString() const override
MarvinMulticenterSgroup(MarvinMolBase *parent, ptree &molTree)
MarvinMulticenterSgroup(MarvinMolBase *parent)
ptree toPtree() const override
void parseMoleculeSpecific(RDKit::RWMol *mol, std::unique_ptr< SubstanceGroup > &sgroup, int sequenceId) override
int getMatchedOrphanBondIndex(std::string atomIdToCheck, std::vector< MarvinBond * > &bondsToTry, std::vector< MarvinBond * > &orphanedBonds) const
MarvinMultipleSgroup(MarvinMolBase *parent)
std::string role() const override
std::string toString() const override
bool isPassiveRoleForContraction() const override
MarvinMolBase * copyMol(const std::string &idAppend) const override
std::vector< MarvinAtom * > parentAtoms
Definition MarvinDefs.h:446
ptree toPtree() const override
void processSpecialSgroups() override
MarvinMultipleSgroup(MarvinMolBase *parent, ptree &molTree)
void parseMoleculeSpecific(RDKit::RWMol *mol, std::unique_ptr< SubstanceGroup > &sgroup, int sequenceId) override
bool hasAtomBondBlocks() const override
bool isPassiveRoleForExpansion() const override
std::vector< MarvinBond * > bondsToAtomsNotInExpandedGroup
Definition MarvinDefs.h:448
std::string toString() const
ptree toPtree() const
std::string id
Definition MarvinDefs.h:82
std::vector< std::unique_ptr< MarvinMol > > products
Definition MarvinDefs.h:606
ptree toPtree() const
std::vector< std::unique_ptr< MarvinCondition > > conditions
Definition MarvinDefs.h:610
std::string toString()
std::vector< std::unique_ptr< MarvinPlus > > pluses
Definition MarvinDefs.h:609
std::vector< std::unique_ptr< MarvinMol > > reactants
Definition MarvinDefs.h:604
std::vector< std::unique_ptr< MarvinMol > > agents
Definition MarvinDefs.h:605
MarvinRectangle(const std::vector< MarvinAtom * > &atoms)
bool overlapsVertically(const MarvinRectangle &otherRectangle) const
static bool compareRectanglesByYReverse(MarvinRectangle &r1, MarvinRectangle &r2)
MarvinRectangle(const RDGeom::Point3D &upperLeftInit, const RDGeom::Point3D &lowerRightInit)
RDGeom::Point3D & getCenter()
bool overlapsVHorizontally(const MarvinRectangle &otherRectangle) const
RDGeom::Point3D center
Definition MarvinDefs.h:193
static bool compareRectanglesByX(MarvinRectangle &r1, MarvinRectangle &r2)
RDGeom::Point3D upperLeft
Definition MarvinDefs.h:197
RDGeom::Point3D lowerRight
Definition MarvinDefs.h:198
MarvinRectangle(double left, double right, double top, double bottom)
MarvinRectangle(const std::vector< MarvinRectangle > &rects)
void extend(const MarvinRectangle &otherRectangle)
std::string role() const override
ptree toPtree() const override
bool hasAtomBondBlocks() const override
void parseMoleculeSpecific(RDKit::RWMol *mol, std::unique_ptr< SubstanceGroup > &sgroup, int sequenceId) override
MarvinSruCoModSgroup(std::string type, MarvinMolBase *parent)
std::string toString() const override
MarvinMolBase * copyMol(const std::string &idAppend) const override
MarvinSruCoModSgroup(MarvinMolBase *parent, std::string role, ptree &molTree)
StereoGroupType groupType
Definition MarvinDefs.h:622
std::vector< unsigned int > atoms
Definition MarvinDefs.h:624
MarvinStereoGroup(StereoGroupType grouptypeInit, int groupNumberInit)
bool isPassiveRoleForContraction() const override
std::string toString() const override
MarvinMolBase * copyMol(const std::string &idAppend) const override
MarvinSuperatomSgroupExpanded(MarvinMolBase *parent, ptree &molTree)
ptree toPtree() const override
MarvinSuperatomSgroupExpanded(MarvinMolBase *parent)
void parseMoleculeSpecific(RDKit::RWMol *mol, std::unique_ptr< SubstanceGroup > &sgroup, int sequenceId) override
bool hasAtomBondBlocks() const override
std::string role() const override
MarvinMolBase * copyMol(const std::string &idAppend) const override
std::string toString() const override
bool isPassiveRoleForExpansion() const override
void cleanUpNumberingMolsAtomsBonds(int &molCount, int &atomCount, int &bondCount, std::map< std::string, std::string > &sgMap, std::map< std::string, std::string > &atomMap, std::map< std::string, std::string > &bondMap) override
void processSpecialSgroups() override
ptree toPtree() const override
MarvinSuperatomSgroup(MarvinMolBase *parent, ptree &molTree)
std::string role() const override
MarvinSuperatomSgroup(MarvinMolBase *parent)
std::vector< std::unique_ptr< MarvinAttachmentPoint > > attachmentPoints
Definition MarvinDefs.h:538
bool hasAtomBondBlocks() const override
IsSgroupInAtomSetResult isSgroupInSetOfAtoms(const std::vector< MarvinAtom * > &setOfAtoms) const override
MarvinWriterException(std::string message)
Definition MarvinDefs.h:64
RWMol is a molecule class that is intended to be edited.
Definition RWMol.h:32
Std stuff.
const std::vector< std::string > marvinStereoConventionTypes
Definition MarvinDefs.h:44
const std::vector< std::string > marvinBondOrders
Definition MarvinDefs.h:40
StereoGroupType
Definition StereoGroup.h:30
bool rdvalue_is(const RDValue_cast_t)
const std::vector< std::string > sruSgroupConnectChoices
Definition MarvinDefs.h:39
const std::vector< std::string > marvinConventionTypes
Definition MarvinDefs.h:42
IsSgroupInAtomSetResult
Definition MarvinDefs.h:56
@ SgroupInAtomSet
Definition MarvinDefs.h:57
@ SgroupNotInAtomSet
Definition MarvinDefs.h:58
@ SgroupBothInAndNotInAtomSet
Definition MarvinDefs.h:59
void eraseUniquePtr(std::vector< std ::unique_ptr< T > > &vector, T *itemToErase)
Definition MarvinDefs.h:236
const std::map< int, std::string > radicalElectronsToMarvinRadical
Definition MarvinDefs.h:53
bool getCleanNumber(std::string strToParse, T &outInt)
const std::vector< std::string > marvinRadicalVals
Definition MarvinDefs.h:46
const std::vector< std::string > marvinStereoDictRefTypes
Definition MarvinDefs.h:43
const std::vector< std::string > marvinQueryBondsTypes
Definition MarvinDefs.h:41
std::vector< std::unique_ptr< T > >::iterator findUniquePtr(std::vector< std ::unique_ptr< T > > &vector, T *itemToFind)
Definition MarvinDefs.h:221
const std::map< std::string, int > marvinRadicalToRadicalElectrons
Definition MarvinDefs.h:49