Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Backmerge: Bugfix/950 cdx aromatized structures #954

Merged
merged 4 commits into from
Dec 26, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions api/tests/integration/ref/formats/cdx_to_ket.py.out
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
*** CDXML to mol ***
arom64.cdx
{"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]}]}}
marvin.cdx
CDXML loader: Not a molecule. Found 1 arrows.
*** Try as Reaction ***
Expand Down
81 changes: 81 additions & 0 deletions api/tests/integration/tests/formats/molecules/cdx/arom64.cdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
VmpDRDAxMDAEAwIBAAAAAAAAAAAAAACAAAAAAAMAFQAAAENoZW1EcmF3IEpTIDIu
MC4wLjkEAhAAeIf0AFtqMAKHeFMB+eq2AgEJCAAAAAAAAAAAAAIJCAAAAGwDAABb
Bw0IAQABCAcBAAE6BAEAATsEAQAARQQBAAE8BAEAAEoEAQAADAYBAAEPBgEAAQ0G
AQAAQgQBAABDBAEAAEQEAQAADggCAJoCCggIABgAYADIAAMACwgIABgAAADIAAMA
CQgEAACAAgAICAQAmZkBAAcIBACZmQAABggEAAAAAgAFCAQAZmYOAAQIAgC0AAMI
BAAAAHgAIwgBAAUMCAEAACgIAQABKQgBAAEqCAEAATIIAQAAKwgBACgsCAEACi0I
AQABLggBAAACCBAAAAAkAAAAJAAAACQAAAAkAAEDAgAAAAIDAgABAAADMgAIAP//
/////wAAAAAAAP//AAAAAP////8AAAAA//8AAAAA/////wAAAAD/////AAD//wAB
DwAAAAEAGADp/QUAQXJpYWwACHgAAAMAAAEgASAAAAAAC2YIoP+E/4gL4wkYA2cF
JwP8AAIAAAEgASAAAAAAC2YIoAABAAAAZAAAAAEAAQEBAAAAAScPAAEAAQAAAAAA
AAAAAAAAAAACABkBkAAAAAAAQAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAtAsC
AAAAtQsUAAAAQ2hlbWljYWwgRm9ybXVsYTogtgsOAAAARXhhY3QgTWFzczogtwsU
AAAATW9sZWN1bGFyIFdlaWdodDoguAsHAAAAbS96OiC5CxYAAABFbGVtZW50YWwg
QW5hbHlzaXM6ILoLEQAAAEJvaWxpbmcgUG9pbnQ6ILsLEQAAAE1lbHRpbmcgUG9p
bnQ6ILwLEQAAAENyaXRpY2FsIFRlbXA6IL0LEQAAAENyaXRpY2FsIFByZXM6IL4L
EAAAAENyaXRpY2FsIFZvbDogvwsQAAAAR2liYnMgRW5lcmd5OiDACwkAAABMb2cg
UDogwQsGAAAATVI6IMILDwAAAEhlbnJ5J3MgTGF3OiDDCxAAAABIZWF0IG9mIEZv
cm06IMQLCAAAAHRQU0E6IMkLAgAAAMoLAgAAAAsMAgABAAoMAQAACQwBAAAMDAUA
AAAoIykBgDwAAAAEAhAAAAAAAAAAAAD//0cCVVXnBBIIBABVVecEEwgEAP//RwIW
CAQAAAAkABgIBAAAACQAFAgEAAAAAAAZCAAAEAgCAAEADwgCAAEAEQgBAAEDgDcA
AAAEAhAAeIf0AFtqMAKHeFMB+eq2AgoAAgABAASAAQAAAAACCABwzE8BG8A4AgoA
AgACAAIEAgAjACsEAgAAAEgEAAA3BAEAAQaAAAAAAAACCABURVMBW2o6AgQCEADc
7UoBW2owAod4UwFbajoCIwgBAP8BBwEA/wIHAgAAAAUHAQADAAcOAAEAAAAYAGAA
yAAAAEJyCQcOAAEAAAAYAGAAyAAAAEJyAAAAAASAAgAAAAACCAA9mUgBnzhFAgoA
AgADADcEAQABAAAEgAMAAAAAAggA1zI6AZ84RQIKAAIABAA3BAEAAQAABIAEAAAA
AAIIAKT/MgEjsVECCgACAAUANwQBAAEAAASABQAAAAACCADXMjoBpileAgoAAgAG
ADcEAQABAAAEgAYAAAAAAggApP8yASqiagIKAAIABwA3BAEAAQAABIAHAAAAAAII
ANcyOgGuGncCCgACAAgAAgQCAAgAKwQCAAAASAQAADcEAQABBoAAAAAAAAIIALur
PQEON3MCBAIQAENUNQEON3MC7t49AU7+egIjCAEAAAIHAgAAAAAHDQABAAAAGABg
AMgAAABPCQcNAAEAAAAYAGAAyAAAAE8AAAAABIAIAAAAAAIIAKT/MgEyk4MCCgAC
AAkANwQBAAEAAASACQAAAAACCADXMjoBtguQAgoAAgAKADcEAQABAAAEgAoAAAAA
AggApP8yATmEnAIKAAIACwACBAIABwArBAIAAABIBAAANwQBAAEGgAAAAAAAAggA
iHg2AdnnmAIEAhAAECEuAdnnmAK7qzYBmSCgAiMIAQAAAgcCAAAAAAcNAAEAAAAY
AGAAyAAAAE4JBw0AAQAAABgAYADIAAAATgAAAAAEgAsAAAAAAggAcK0kAY8FngIK
AAIADAA3BAEAAQAABIAMAAAAAAIIAP6uIQFmG6wCCgACAA0ANwQBAAEAAASADQAA
AAACCACCJy4BmU6zAgoAAgAOAAIEAgAHACsEAgAAAEgEAAA3BAEAAQaAAAAAAAAC
CABloDEBObKvAgQCEADuSCkBObKvApjTMQH56rYCIwgBAAACBwIAAAAABw0AAQAA
ABgAYADIAAAATgkHDQABAAAAGABgAMgAAABOAAAAAASADgAAAAACCAAJ2zgB66up
AgoAAgAPADcEAQABAAAEgA8AAAAAAggAPpkkATKTgwIKAAIAEAA3BAEAAQAABIAQ
AAAAAAIIAAtmHQG2C5ACCgACABEANwQBAAEAAASAEQAAAAACCACl/w4BtguQAgoA
AgASADcEAQABAAAEgBIAAAAAAggAcswHATKTgwIKAAIAEwA3BAEAAQAABIATAAAA
AAIIAAxm+QAyk4MCCgACABQAAgQCABEAKwQCAAAASAQAADcEAQABBoAAAAAAAAII
APDe/ADS9n8CBAIQAHiH9ADS9n8CIxL9AFJoiQIjCAEAAAIHAgAAAAUHAQABAAcO
AAEAAAAYAGAAyAAAAENsCQcOAAEAAAAYAGAAyAAAAENsAAAAAASAFAAAAAACCACl
/w4Brhp3AgoAAgAVADcEAQABAAAEgBUAAAAAAggAC2YdAa4adwIKAAIAFgA3BAEA
AQAABIAWAAAAAAIIAD6ZJAEqomoCCgACABcAAgQCABEAKwQCAAAASAQAADcEAQAB
BoAAAAAAAAIIACISKAGKvmsCBAIQAKq6HwEKTWICVUUoAYq+awIjCAEA/wEHAQD/
AgcCAAAABQcBAAMABw4AAQAAABgAYADIAAAAQ2wJBw4AAQAAABgAYADIAAAAQ2wA
AAAABIAXAAAAAAIIAD2ZSAGmKV4CCgACABgANwQBAAEAAASAGAAAAAACCABwzE8B
KqJqAgoAAgAZAAIEAgARACsEAgAAAEgEAAA3BAEAAQaAAAAAAAACCABURVMBygVn
AgQCEADc7UoBygVnAod4UwFKd3ACIwgBAAACBwIAAAAFBwEAAQAHDgABAAAAGABg
AMgAAABDbAkHDgABAAAAGABgAMgAAABDbAAAAAAEgBkAAAAAAggAcMxPASOxUQIK
AAIAGgA3BAEAAQAABYAbAAAACgACABsABAYEAAEAAAAFBgQAAgAAAAoGAQABAAAF
gBwAAAAKAAIAHAAEBgQAAgAAAAUGBAADAAAAAAYCAIAACgYBAAEAAAWAHQAAAAoA
AgAdAAQGBAADAAAABQYEAAQAAAAABgIAgAAKBgEAAQAABYAeAAAACgACAB4ABAYE
AAQAAAAFBgQABQAAAAAGAgCAAAoGAQABAAAFgB8AAAAKAAIAHwAEBgQABQAAAAUG
BAAGAAAACgYBAAEAAAWAIAAAAAoAAgAgAAQGBAAGAAAABQYEAAcAAAAKBgEAAQAA
BYAhAAAACgACACEABAYEAAcAAAAFBgQACAAAAAoGAQABAAAFgCIAAAAKAAIAIgAE
BgQACAAAAAUGBAAJAAAACgYBAAEAAAWAIwAAAAoAAgAjAAQGBAAJAAAABQYEAAoA
AAAKBgEAAQAABYAkAAAACgACACQABAYEAAoAAAAFBgQACwAAAAAGAgCAAAoGAQAB
AAAFgCUAAAAKAAIAJQAEBgQACwAAAAUGBAAMAAAAAAYCAIAACgYBAAEAAAWAJgAA
AAoAAgAmAAQGBAAMAAAABQYEAA0AAAAABgIAgAAKBgEAAQAABYAnAAAACgACACcA
BAYEAA0AAAAFBgQADgAAAAAGAgCAAAoGAQABAAAFgCgAAAAKAAIAKAAEBgQACgAA
AAUGBAAOAAAAAAYCAIAACgYBAAEAAAWAKQAAAAoAAgApAAQGBAAIAAAABQYEAA8A
AAAKBgEAAQAABYAqAAAACgACACoABAYEAA8AAAAFBgQAEAAAAAAGAgCAAAoGAQAB
AAAFgCsAAAAKAAIAKwAEBgQAEAAAAAUGBAARAAAAAAYCAIAACgYBAAEAAAWALAAA
AAoAAgAsAAQGBAARAAAABQYEABIAAAAABgIAgAAKBgEAAQAABYAtAAAACgACAC0A
BAYEABIAAAAFBgQAEwAAAAoGAQABAAAFgC4AAAAKAAIALgAEBgQAEgAAAAUGBAAU
AAAAAAYCAIAACgYBAAEAAAWALwAAAAoAAgAvAAQGBAAUAAAABQYEABUAAAAABgIA
gAAKBgEAAQAABYAwAAAACgACADAABAYEAA8AAAAFBgQAFQAAAAAGAgCAAAoGAQAB
AAAFgDEAAAAKAAIAMQAEBgQAFQAAAAUGBAAWAAAACgYBAAEAAAWAMgAAAAoAAgAy
AAQGBAAFAAAABQYEABcAAAAABgIAgAAKBgEAAQAABYAzAAAACgACADMABAYEABcA
AAAFBgQAGAAAAAoGAQABAAAFgDQAAAAKAAIANAAEBgQAFwAAAAUGBAAZAAAAAAYC
AIAACgYBAAEAAAWANQAAAAoAAgA1AAQGBAACAAAABQYEABkAAAAABgIAgAAKBgEA
AQAAB4A4AAAABAIQAApmQQHqtFoCCmZBASOxUQIKAAIANgAACgIABAAECgIAAQAN
AgwAI7FRAgpmQQEAAAAADgIMAOq0WgIKZkEBAAAAAA8CDAAjsVEC0mlKAQAAAAAA
AAeAOQAAAAQCEAC53ywBJpStArnfLAHwH6cCCgACADcAAAoCAAQABAoCAAEADQIM
APAfpwK53ywBAAAAAA4CDAAmlK0Cud8sAQAAAAAPAgwA8B+nAu9TMwEAAAAAAAAH
gDoAAAAEAhAA2DIWAfmWjALYMhYBMpODAgoAAgA4AAAKAgAEAAQKAgABAA0CDAAy
k4MC2DIWAQAAAAAOAgwA+ZaMAtgyFgEAAAAADwIMADKTgwKgNh8BAAAAAAAAAAAA
AAAAAAA=
40 changes: 40 additions & 0 deletions core/indigo-core/molecule/CDXCommons.h
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,46 @@ enum class ECDXType
CDXFontStyle
};

const std::unordered_map<int, std::string> kBondOrderIntToStr = {{kCDXBondOrder_Single, "1"},
{kCDXBondOrder_Double, "2"},
{kCDXBondOrder_Triple, "3"},
{kCDXBondOrder_Quadruple, "4"},
{kCDXBondOrder_Quintuple, "5"},
{kCDXBondOrder_Sextuple, "6"},
{kCDXBondOrder_Half, "0.5"},
{kCDXBondOrder_OneHalf, "1.5"},
{kCDXBondOrder_TwoHalf, "2.5"},
{kCDXBondOrder_ThreeHalf, "3.5"},
{kCDXBondOrder_FourHalf, "4.5"},
{kCDXBondOrder_FiveHalf, "5.5"},
{kCDXBondOrder_Dative, "dative"},
{kCDXBondOrder_Ionic, "ionic"},
{kCDXBondOrder_Hydrogen, "hydrogen"},
{kCDXBondOrder_ThreeCenter, "threecenter"},
{kCDXBondOrder_SingleOrDouble, "singleordouble"},
{kCDXBondOrder_SingleOrAromatic, "singleoraromatic"},
{kCDXBondOrder_DoubleOrAromatic, "doubleoraromatic"}};

const std::unordered_map<std::string, CDXBondOrder> kBondOrderStrToId = {{"1", kCDXBondOrder_Single},
{"2", kCDXBondOrder_Double},
{"3", kCDXBondOrder_Triple},
{"4", kCDXBondOrder_Quadruple},
{"5", kCDXBondOrder_Quintuple},
{"6", kCDXBondOrder_Sextuple},
{"0.5", kCDXBondOrder_Half},
{"1.5", kCDXBondOrder_OneHalf},
{"2.5", kCDXBondOrder_TwoHalf},
{"3.5", kCDXBondOrder_ThreeHalf},
{"4.5", kCDXBondOrder_FourHalf},
{"5.5", kCDXBondOrder_FiveHalf},
{"dative", kCDXBondOrder_Dative},
{"ionic", kCDXBondOrder_Ionic},
{"hydrogen", kCDXBondOrder_Hydrogen},
{"threecenter", kCDXBondOrder_ThreeCenter},
{"singleordouble", kCDXBondOrder_SingleOrDouble},
{"singleoraromatic", kCDXBondOrder_SingleOrAromatic},
{"doubleoraromatic", kCDXBondOrder_DoubleOrAromatic}};

const std::unordered_map<std::string, CDXArrowType> kCDXProp_Arrow_TypeStrToID = {{"NoHead", kCDXArrowType_NoHead},
{"HalfHead", kCDXArrowType_HalfHead},
{"FullHead", kCDXArrowType_FullHead},
Expand Down
3 changes: 3 additions & 0 deletions core/indigo-core/molecule/molecule_cdxml_loader.h
Original file line number Diff line number Diff line change
Expand Up @@ -440,6 +440,9 @@ namespace indigo
{
switch (tag)
{
case kCDXProp_Bond_Order: {
return kBondOrderIntToStr.at(val);
}
case kCDXProp_Node_Type: {
return KNodeTypeIntToName.at(val);
}
Expand Down