Skip to content

Commit a15417c

Browse files
even1024Mikalai Sukhikh
authored andcommitted
Backmerge: Bugfix/950 cdx aromatized structures (#954)
* rgroups (#946) Co-authored-by: Roman Porozhnetov <roman_porozhnetov@epam.com> * CDX import: Reaction arrows disappear when opening a file #943 (#948) * marvin cdx fix * clang fix Co-authored-by: Roman Porozhnetov <roman_porozhnetov@epam.com> * CDX import: Aromatized structures are not recognized when Pasting from Clipboard #950 (#953) * bond order fix * clang fix * test fix Co-authored-by: Roman Porozhnetov <roman_porozhnetov@epam.com> Co-authored-by: Roman Porozhnetov <roman_porozhnetov@epam.com>
1 parent cc1d6c3 commit a15417c

File tree

4 files changed

+126
-0
lines changed

4 files changed

+126
-0
lines changed

api/tests/integration/ref/formats/cdx_to_ket.py.out

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
*** CDXML to mol ***
2+
arom64.cdx
3+
{"root":{"nodes":[{"$ref":"mol0"}]},"mol0":{"type":"molecule","atoms":[{"label":"Br","location":[0.27766722440719607,-3.042332887649536,0.0]},{"label":"C","location":[0.6933329105377197,-2.8023335933685304,0.0]},{"label":"C","location":[0.6933329105377197,-2.322333812713623,0.0]},{"label":"C","location":[1.1090006828308106,-2.0823333263397219,0.0]},{"label":"C","location":[1.5246663093566895,-2.322333812713623,0.0]},{"label":"C","location":[1.9403340816497803,-2.0823333263397219,0.0]},{"label":"O","location":[2.355999708175659,-2.322333812713623,0.0]},{"label":"C","location":[2.77166748046875,-2.0823333263397219,0.0]},{"label":"C","location":[3.187666893005371,-2.322333812713623,0.0]},{"label":"N","location":[3.603334665298462,-2.0823333263397219,0.0]},{"label":"C","location":[3.653334617614746,-1.6049997806549073,0.0]},{"label":"C","location":[4.123000144958496,-1.5049997568130494,0.0]},{"label":"N","location":[4.363000392913818,-1.9206664562225342,0.0]},{"label":"C","location":[4.041666507720947,-2.2776663303375246,0.0]},{"label":"C","location":[2.77166748046875,-1.6023335456848145,0.0]},{"label":"C","location":[3.187666893005371,-1.3623331785202027,0.0]},{"label":"C","location":[3.187666893005371,-0.8823333978652954,0.0]},{"label":"C","location":[2.77166748046875,-0.6423329710960388,0.0]},{"label":"Cl","location":[2.77166748046875,-0.1623331755399704,0.0]},{"label":"C","location":[2.355999708175659,-0.8823333978652954,0.0]},{"label":"C","location":[2.355999708175659,-1.3623331785202027,0.0]},{"label":"Cl","location":[1.9403340816497803,-1.6023335456848145,0.0]},{"label":"C","location":[1.5246663093566895,-2.8023335933685304,0.0]},{"label":"Cl","location":[1.9403340816497803,-3.042332887649536,0.0]},{"label":"C","location":[1.1090006828308106,-3.042332887649536,0.0]}],"bonds":[{"type":1,"atoms":[0,1]},{"type":4,"atoms":[1,2]},{"type":4,"atoms":[2,3]},{"type":4,"atoms":[3,4]},{"type":1,"atoms":[4,5]},{"type":1,"atoms":[5,6]},{"type":1,"atoms":[6,7]},{"type":1,"atoms":[7,8]},{"type":1,"atoms":[8,9]},{"type":4,"atoms":[9,10]},{"type":4,"atoms":[10,11]},{"type":4,"atoms":[11,12]},{"type":4,"atoms":[12,13]},{"type":4,"atoms":[9,13]},{"type":1,"atoms":[7,14]},{"type":4,"atoms":[14,15]},{"type":4,"atoms":[15,16]},{"type":4,"atoms":[16,17]},{"type":1,"atoms":[17,18]},{"type":4,"atoms":[17,19]},{"type":4,"atoms":[19,20]},{"type":4,"atoms":[14,20]},{"type":1,"atoms":[20,21]},{"type":4,"atoms":[4,22]},{"type":1,"atoms":[22,23]},{"type":4,"atoms":[22,24]},{"type":4,"atoms":[1,24]}]}}
24
marvin.cdx
35
CDXML loader: Not a molecule. Found 1 arrows.
46
*** Try as Reaction ***
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
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
81+
AAAAAAA=

core/indigo-core/molecule/CDXCommons.h

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,46 @@ enum class ECDXType
7777
CDXFontStyle
7878
};
7979

80+
const std::unordered_map<int, std::string> kBondOrderIntToStr = {{kCDXBondOrder_Single, "1"},
81+
{kCDXBondOrder_Double, "2"},
82+
{kCDXBondOrder_Triple, "3"},
83+
{kCDXBondOrder_Quadruple, "4"},
84+
{kCDXBondOrder_Quintuple, "5"},
85+
{kCDXBondOrder_Sextuple, "6"},
86+
{kCDXBondOrder_Half, "0.5"},
87+
{kCDXBondOrder_OneHalf, "1.5"},
88+
{kCDXBondOrder_TwoHalf, "2.5"},
89+
{kCDXBondOrder_ThreeHalf, "3.5"},
90+
{kCDXBondOrder_FourHalf, "4.5"},
91+
{kCDXBondOrder_FiveHalf, "5.5"},
92+
{kCDXBondOrder_Dative, "dative"},
93+
{kCDXBondOrder_Ionic, "ionic"},
94+
{kCDXBondOrder_Hydrogen, "hydrogen"},
95+
{kCDXBondOrder_ThreeCenter, "threecenter"},
96+
{kCDXBondOrder_SingleOrDouble, "singleordouble"},
97+
{kCDXBondOrder_SingleOrAromatic, "singleoraromatic"},
98+
{kCDXBondOrder_DoubleOrAromatic, "doubleoraromatic"}};
99+
100+
const std::unordered_map<std::string, CDXBondOrder> kBondOrderStrToId = {{"1", kCDXBondOrder_Single},
101+
{"2", kCDXBondOrder_Double},
102+
{"3", kCDXBondOrder_Triple},
103+
{"4", kCDXBondOrder_Quadruple},
104+
{"5", kCDXBondOrder_Quintuple},
105+
{"6", kCDXBondOrder_Sextuple},
106+
{"0.5", kCDXBondOrder_Half},
107+
{"1.5", kCDXBondOrder_OneHalf},
108+
{"2.5", kCDXBondOrder_TwoHalf},
109+
{"3.5", kCDXBondOrder_ThreeHalf},
110+
{"4.5", kCDXBondOrder_FourHalf},
111+
{"5.5", kCDXBondOrder_FiveHalf},
112+
{"dative", kCDXBondOrder_Dative},
113+
{"ionic", kCDXBondOrder_Ionic},
114+
{"hydrogen", kCDXBondOrder_Hydrogen},
115+
{"threecenter", kCDXBondOrder_ThreeCenter},
116+
{"singleordouble", kCDXBondOrder_SingleOrDouble},
117+
{"singleoraromatic", kCDXBondOrder_SingleOrAromatic},
118+
{"doubleoraromatic", kCDXBondOrder_DoubleOrAromatic}};
119+
80120
const std::unordered_map<std::string, CDXArrowType> kCDXProp_Arrow_TypeStrToID = {{"NoHead", kCDXArrowType_NoHead},
81121
{"HalfHead", kCDXArrowType_HalfHead},
82122
{"FullHead", kCDXArrowType_FullHead},

core/indigo-core/molecule/molecule_cdxml_loader.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -440,6 +440,9 @@ namespace indigo
440440
{
441441
switch (tag)
442442
{
443+
case kCDXProp_Bond_Order: {
444+
return kBondOrderIntToStr.at(val);
445+
}
443446
case kCDXProp_Node_Type: {
444447
return KNodeTypeIntToName.at(val);
445448
}

0 commit comments

Comments
 (0)