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);
144
145 bool operator==(const MarvinAtom &rhs) const;
146
147 bool operator==(const MarvinAtom *rhs) const;
148
149 bool isElement() const;
150
151 std::string toString() const;
152 ptree toPtree(unsigned int coordinatePrecision = 6) const;
153};
154
156 public:
157 std::string value;
158 std::string convention;
159 std::string conventionValue;
160 std::string dictRef;
161
162 std::string toString() const;
163 ptree toPtree() const;
164};
165
167 public:
168 std::string id;
169 std::string atomRefs2[2];
170 std::string order;
172 std::string queryType;
173 std::string convention;
174
176
178 std::string atomRef1, std::string atomRef2);
179
180 bool isEqual(const MarvinAtom &other) const;
181
182 bool operator==(const MarvinAtom &rhs) const;
183
184 const std::string getBondType() const;
185
186 std::string toString() const;
187 ptree toPtree() const;
188};
189
218
219template <typename T>
220typename std::vector<std::unique_ptr<T>>::iterator findUniquePtr(
221 std::vector<std ::unique_ptr<T>> &vector, T *itemToFind) {
222 auto foundUniqIter = find_if(vector.begin(), vector.end(),
223 [itemToFind](std::unique_ptr<T> &uniquePtr) {
224 return uniquePtr.get() == itemToFind;
225 });
226
227 if (foundUniqIter == vector.end()) {
228 throw FileParseException("Unexpected error - item to find not found");
229 }
230
231 return foundUniqIter;
232}
233
234template <typename T>
235void eraseUniquePtr(std::vector<std ::unique_ptr<T>> &vector, T *itemToErase) {
237
238 if (removeUniqIter == vector.end()) {
239 throw FileParseException("Unexpected error - item to remove not found");
240 }
241
242 vector.erase(removeUniqIter);
243}
244
246 public:
247 std::string molID;
248 std::string id; // used in all sGroups
249 unsigned int coordinatePrecision = 6;
250 std::vector<MarvinAtom *> atoms; // owned by parent MarvinMol
251 std::vector<MarvinBond *> bonds; // owned by parent MarvinMol
252 std::vector<std::unique_ptr<MarvinMolBase>> sgroups;
254
255 virtual std::string role() const = 0;
256 virtual bool hasAtomBondBlocks() const = 0;
257 virtual std::string toString() const = 0;
258 virtual ptree toPtree() const;
259 void addSgroupsToPtree(ptree &pt) const;
260
261 virtual MarvinMolBase *copyMol(const std::string &idAppend) const = 0;
262 virtual void pushOwnedAtom(MarvinAtom *atom);
263 virtual void pushOwnedBond(MarvinBond *bond);
264
265 virtual void removeOwnedAtom(MarvinAtom *atom);
266 virtual void removeOwnedBond(MarvinBond *bond);
267
268 void setPrecision(unsigned int precision);
269
271
273
274 virtual ~MarvinMolBase();
275
276 int getAtomIndex(std::string id) const;
277 int getBondIndex(std::string id) const;
278
279 const std::vector<std::string> getBondList() const;
280 const std::vector<std::string> getAtomList() const;
282
284 int &molCount // this is the starting mol count, and receives the ending
285 // mol count - THis is used when
286 // MarvinMol->convertToSuperAtoms is called multiple times
287 // from a RXN
288 ,
289 int &atomCount // starting and ending atom count
290 ,
291 int &bondCount // starting and ending bond count
292 ,
293 int &sgCount // starting and ending sq count
294 ,
295 std::map<std::string, std::string>
296 &sgMap // map from old sg number to new sg number
297 ,
298 std::map<std::string, std::string>
299 &atomMap // map from old atom number to new atom number
300 ,
301 std::map<std::string, std::string>
302 &bondMap // map from old bond number to new bond number
303 );
304
305 // the following is virtual because some derived classes need to do more than
306 // just call the base class. Currently, only MarvinSuperatomSgroup does this
307 public:
309 int &molCount, // this is the starting mol count, and receives the ending
310 // mol count - THis is used when
311 // MarvinMol->convertToSuperAtoms is called multiple
312 // times from a RXN
313 int &atomCount, // starting and ending atom count
314 int &bondCount, // starting and ending bond count
315 std::map<std::string, std::string> &sgMap,
316 std::map<std::string, std::string> &atomMap,
317 std::map<std::string, std::string> &bondMap);
318
320 std::map<std::string, std::string> &sgMap);
321
322 // the following is virtual because some derived classes need to do more than
323 // just call the base class. Currently, only MarvinSuperatomSgroup does this
324
326 const std::vector<MarvinAtom *> &setOfAtoms) const;
327
328 public:
329 static bool atomRefInAtoms(MarvinAtom *a, std::string b);
330 static bool bondRefInBonds(MarvinBond *a, std::string b);
331 static bool molIDInSgroups(std::string a, std::string b);
334
337
338 virtual bool isPassiveRoleForExpansion() const;
339 virtual bool isPassiveRoleForContraction() const;
340 virtual void processSpecialSgroups();
342 std::unique_ptr<SubstanceGroup> &sgroup,
343 int sequenceId);
344
345 bool has2dCoords() const;
346 bool has3dCoords() const;
347 bool hasAny3dCoords() const;
348 bool hasAny2dCoords() const;
349 bool hasCoords() const;
351
353};
354
356 private:
357 std::string roleName; // could be MarvinSruSgroup, MarvinCopolymerSgroup or
358 // MarvinModificationSgroup
359 public:
360 MarvinMolBase *copyMol(const std::string &idAppend) const override;
363
364 std::string title;
365 std::string connect;
366 std::string correspondence;
367
368 std::string toString() const override;
369 ptree toPtree() const override;
370
371 std::string role() const override;
372 bool hasAtomBondBlocks() const override;
374 std::unique_ptr<SubstanceGroup> &sgroup,
375 int sequenceId) override;
376};
377
379 public:
382
383 MarvinMolBase *copyMol(const std::string &idAppend) const override;
384
385 std::string context;
386 std::string fieldName;
387 std::string placement;
388 std::string unitsDisplayed;
389 std::string queryType;
390 std::string queryOp;
391 std::string fieldData;
392 std::string units;
393 double x;
394 double y;
395
396 std::string toString() const override;
397 ptree toPtree() const override;
398
399 std::string role() const override;
400 bool hasAtomBondBlocks() const override;
402 std::unique_ptr<SubstanceGroup> &sgroup,
403 int sequenceId) override;
404};
405
407 public:
408 std::string title;
409
412
413 MarvinMolBase *copyMol(const std::string &idAppend) const override;
414
416
418
419 std::string toString() const override;
420 ptree toPtree() const override;
421
422 std::string role() const override;
423 bool hasAtomBondBlocks() const override;
424 bool isPassiveRoleForContraction() const override;
425
427 std::unique_ptr<SubstanceGroup> &sgroup,
428 int sequenceId) override;
429};
430
432 public:
435
436 MarvinMolBase *copyMol(const std::string &idAppend) const override;
437
438 std::string title;
439 bool isExpanded = false;
440 std::vector<MarvinAtom *> parentAtoms;
441 std::vector<MarvinBond *>
442 bondsToAtomsNotInExpandedGroup; // only when expanded
443
447 std::vector<MarvinBond *> &bondsToTry,
448 std::vector<MarvinBond *> &orphanedBonds) const;
449
450 std::string toString() const override;
451 ptree toPtree() const override;
452
453 std::string role() const override;
454 bool hasAtomBondBlocks() const override;
455 bool isPassiveRoleForExpansion() const override;
456 bool isPassiveRoleForContraction() const override;
457 void processSpecialSgroups() override;
458
460 std::unique_ptr<SubstanceGroup> &sgroup,
461 int sequenceId) override;
462};
463
465 // <molecule molID="m2" id="sg1" role="MulticenterSgroup" atomRefs="a2 a6 a5
466 // a4 a3" center="a18"/>sgroup->
467 public:
470
471 MarvinMolBase *copyMol(const std::string &idAppend) const override;
472
474
475 std::string toString() const override;
476 ptree toPtree() const override;
477
479 std::string role() const override;
480 bool hasAtomBondBlocks() const override;
481 void processSpecialSgroups() override;
483 std::unique_ptr<SubstanceGroup> &sgroup,
484 int sequenceId) override;
485};
486
488 // <molecule molID="m2" id="sg1" role="GenericSgroup" atomRefs="a1 a2 a3 a4 a5
489 // a6 a7 a8 a9 a13 a10 a11 a12" charge="onAtoms"/></molecule>
490 public:
493
494 MarvinMolBase *copyMol(const std::string &idAppend) const override;
495
496 std::string charge; // onAtoms or onBrackets
497 std::string toString() const override;
498 ptree toPtree() const override;
499
500 std::string role() const override;
501 bool hasAtomBondBlocks() const override;
503 std::unique_ptr<SubstanceGroup> &sgroup,
504 int sequenceId) override;
505};
506
508 // <molecule id="sg1" role="MonomerSgroup" title="mon" charge="onAtoms"
509 // molID="m2" atomRefs="a2 a1 a3 a4">
510 // </molecule>
511 public:
514
515 MarvinMolBase *copyMol(const std::string &idAppend) const override;
516
517 std::string title;
518 std::string charge; // onAtoms or onBrackets
519 std::string toString() const override;
520 ptree toPtree() const override;
521
522 std::string role() const override;
523 bool hasAtomBondBlocks() const override;
525 std::unique_ptr<SubstanceGroup> &sgroup,
526 int sequenceId) override;
527};
528
530 public:
531 std::string title;
532 std::vector<std::unique_ptr<MarvinAttachmentPoint>> attachmentPoints;
533
536
537 MarvinMolBase *copyMol(const std::string &idAppend) const override;
538
540
542
543 std::string role() const override;
544 bool hasAtomBondBlocks() const override;
545 bool isPassiveRoleForExpansion() const override;
546
547 std::string toString() const override;
548 ptree toPtree() const override;
549
551 int &molCount, // this is the starting mol count, and receives the ending
552 // mol count - THis is used when
553 // MarvinMol->convertToSuperAtoms is called multiple
554 // times from a RXN
555 int &atomCount, // starting and ending atom count
556 int &bondCount, // starting and ending bond count
557 std::map<std::string, std::string> &sgMap,
558 std::map<std::string, std::string> &atomMap,
559 std::map<std::string, std::string> &bondMap) override;
560
562 const std::vector<MarvinAtom *> &setOfAtoms) const override;
563
564 void processSpecialSgroups() override;
565};
566
567class MarvinMol : public MarvinMolBase {
568 public:
571
572 MarvinMolBase *copyMol(const std::string &idAppend) const override;
573
574 ~MarvinMol() override;
575
576 std::vector<std::unique_ptr<MarvinAtom>> ownedAtoms;
577 std::vector<std::unique_ptr<MarvinBond>> ownedBonds;
578
579 void pushOwnedAtom(MarvinAtom *atom) override;
580 void pushOwnedBond(MarvinBond *bond) override;
581
582 void removeOwnedAtom(MarvinAtom *atom) override;
583 void removeOwnedBond(MarvinBond *bond) override;
584
585 std::string role() const override;
586 bool hasAtomBondBlocks() const override;
587 bool isPassiveRoleForContraction() const override;
588
589 std::string toString() const override;
590 ptree toPtree() const override;
591
592 std::string generateMolString();
593 ptree toMolPtree() const;
594};
595
597 public:
598 std::vector<std::unique_ptr<MarvinMol>> reactants;
599 std::vector<std::unique_ptr<MarvinMol>> agents;
600 std::vector<std::unique_ptr<MarvinMol>> products;
601
603 std::vector<std::unique_ptr<MarvinPlus>> pluses;
604 std::vector<std::unique_ptr<MarvinCondition>> conditions;
605
607
609
610 std::string toString();
611 ptree toPtree() const;
612};
613
615 public:
616 StereoGroupType groupType; // one of ABS AND OR
618 std::vector<unsigned int> atoms;
619
621};
622
623template <typename T>
624bool getCleanNumber(std::string strToParse, T &outInt);
625} // namespace RDKit
626
627#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
std::string id
Definition MarvinDefs.h:120
std::string elementType
Definition MarvinDefs.h:121
std::string toString() const
ptree toPtree(unsigned int coordinatePrecision=6) 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:159
std::string toString() const
std::string convention
Definition MarvinDefs.h:173
ptree toPtree() const
std::string queryType
Definition MarvinDefs.h:172
MarvinBond(const MarvinBond &bondToCopy, std::string newId, std::string atomRef1, std::string atomRef2)
std::string atomRefs2[2]
Definition MarvinDefs.h:169
std::string id
Definition MarvinDefs.h:168
std::string order
Definition MarvinDefs.h:170
MarvinBondStereo bondStereo
Definition MarvinDefs.h:171
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:388
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)
unsigned int coordinatePrecision
Definition MarvinDefs.h:249
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)
void setPrecision(unsigned int precision)
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:251
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:252
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:253
virtual void pushOwnedAtom(MarvinAtom *atom)
static bool molIDInSgroups(std::string a, std::string b)
std::vector< MarvinAtom * > atoms
Definition MarvinDefs.h:250
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:576
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:577
~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:440
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:442
std::string toString() const
ptree toPtree() const
std::string id
Definition MarvinDefs.h:82
std::vector< std::unique_ptr< MarvinMol > > products
Definition MarvinDefs.h:600
ptree toPtree() const
std::vector< std::unique_ptr< MarvinCondition > > conditions
Definition MarvinDefs.h:604
std::string toString()
std::vector< std::unique_ptr< MarvinPlus > > pluses
Definition MarvinDefs.h:603
std::vector< std::unique_ptr< MarvinMol > > reactants
Definition MarvinDefs.h:598
std::vector< std::unique_ptr< MarvinMol > > agents
Definition MarvinDefs.h:599
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:192
static bool compareRectanglesByX(MarvinRectangle &r1, MarvinRectangle &r2)
RDGeom::Point3D upperLeft
Definition MarvinDefs.h:196
RDGeom::Point3D lowerRight
Definition MarvinDefs.h:197
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:616
std::vector< unsigned int > atoms
Definition MarvinDefs.h:618
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:532
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:31
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:235
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:220
const std::map< std::string, int > marvinRadicalToRadicalElectrons
Definition MarvinDefs.h:49