Skip to content

Commit 0031c1a

Browse files
authored
rbc & subst -2 (#969)
Co-authored-by: Roman Porozhnetov <roman_porozhnetov@epam.com>
1 parent 74faa93 commit 0031c1a

File tree

3 files changed

+329
-3
lines changed

3 files changed

+329
-3
lines changed

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

Lines changed: 271 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7652,7 +7652,154 @@ M END
76527652

76537653
OK
76547654
ind-288-queryfeats_twofragsV3000.mol:
7655-
molfile loader: Query substitution count as drawn is not supported yet (SUBST=-2)
7655+
molfile-saving-mode: auto
7656+
7657+
-INDIGO-01000000002D
7658+
7659+
0 0 0 0 0 0 0 0 0 0 0 V3000
7660+
M V30 BEGIN CTAB
7661+
M V30 COUNTS 17 17 0 0 0
7662+
M V30 BEGIN ATOM
7663+
M V30 1 C -1.25143 -1.17079 0.0 0
7664+
M V30 2 C -1.25259 -1.99816 0.0 0
7665+
M V30 3 C -0.537777 -2.41104 0.0 0
7666+
M V30 4 C 0.178667 -1.99769 0.0 0
7667+
M V30 5 C 0.17581 -1.16716 0.0 0
7668+
M V30 6 C -0.539582 -0.758027 0.0 0
7669+
M V30 7 N -0.542045 0.0669694 0.0 0 SUBST=-2
7670+
M V30 8 C -0.537978 -3.23604 0.0 0 RBCNT=3
7671+
M V30 9 C 3.8625 -1.175 0.0 0
7672+
M V30 10 C 3.8625 -2.0 0.0 0
7673+
M V30 11 C 4.57452 -2.40833 0.0 0 CFG=1
7674+
M V30 12 C 5.28654 -2.0 0.0 0 CFG=2
7675+
M V30 13 C 5.28654 -1.175 0.0 0
7676+
M V30 14 C 4.57452 -0.758333 0.0 0 CFG=2
7677+
M V30 15 C 4.57452 0.0666667 0.0 0
7678+
M V30 16 C 4.57452 -3.23333 0.0 0
7679+
M V30 17 C 6.00041 -2.41354 0.0 0
7680+
M V30 END ATOM
7681+
M V30 BEGIN BOND
7682+
M V30 1 2 3 4
7683+
M V30 2 2 1 2
7684+
M V30 3 1 4 5
7685+
M V30 4 2 5 6
7686+
M V30 5 1 6 1
7687+
M V30 6 1 2 3
7688+
M V30 7 1 6 7
7689+
M V30 8 1 3 8
7690+
M V30 9 1 9 10
7691+
M V30 10 1 9 14
7692+
M V30 11 1 10 11
7693+
M V30 12 1 11 12
7694+
M V30 13 1 12 13
7695+
M V30 14 1 13 14
7696+
M V30 15 1 14 15 CFG=1
7697+
M V30 16 1 11 16 CFG=1
7698+
M V30 17 1 12 17 CFG=3
7699+
M V30 END BOND
7700+
M V30 BEGIN COLLECTION
7701+
M V30 MDLV30/STERAC1 ATOMS=(2 11 14)
7702+
M V30 MDLV30/STEABS ATOMS=(1 12)
7703+
M V30 END COLLECTION
7704+
M V30 END CTAB
7705+
M END
7706+
7707+
molfile-saving-mode: 2000
7708+
7709+
-INDIGO-01000000002D
7710+
7711+
17 17 0 0 0 0 0 0 0 0999 V2000
7712+
-1.2514 -1.1708 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
7713+
-1.2526 -1.9982 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
7714+
-0.5378 -2.4110 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
7715+
0.1787 -1.9977 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
7716+
0.1758 -1.1672 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
7717+
-0.5396 -0.7580 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
7718+
-0.5420 0.0670 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0
7719+
-0.5380 -3.2360 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
7720+
3.8625 -1.1750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
7721+
3.8625 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
7722+
4.5745 -2.4083 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0
7723+
5.2865 -2.0000 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0
7724+
5.2865 -1.1750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
7725+
4.5745 -0.7583 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0
7726+
4.5745 0.0667 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
7727+
4.5745 -3.2333 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
7728+
6.0004 -2.4135 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
7729+
3 4 2 0 0 0 0
7730+
1 2 2 0 0 0 0
7731+
4 5 1 0 0 0 0
7732+
5 6 2 0 0 0 0
7733+
6 1 1 0 0 0 0
7734+
2 3 1 0 0 0 0
7735+
6 7 1 0 0 0 0
7736+
3 8 1 0 0 0 0
7737+
9 10 1 0 0 0 0
7738+
9 14 1 0 0 0 0
7739+
10 11 1 0 0 0 0
7740+
11 12 1 0 0 0 0
7741+
12 13 1 0 0 0 0
7742+
13 14 1 0 0 0 0
7743+
14 15 1 1 0 0 0
7744+
11 16 1 1 0 0 0
7745+
12 17 1 6 0 0 0
7746+
M SUB 1 7 -2
7747+
M RBC 1 8 3
7748+
M END
7749+
7750+
molfile-saving-mode: 3000
7751+
7752+
-INDIGO-01000000002D
7753+
7754+
0 0 0 0 0 0 0 0 0 0 0 V3000
7755+
M V30 BEGIN CTAB
7756+
M V30 COUNTS 17 17 0 0 0
7757+
M V30 BEGIN ATOM
7758+
M V30 1 C -1.25143 -1.17079 0.0 0
7759+
M V30 2 C -1.25259 -1.99816 0.0 0
7760+
M V30 3 C -0.537777 -2.41104 0.0 0
7761+
M V30 4 C 0.178667 -1.99769 0.0 0
7762+
M V30 5 C 0.17581 -1.16716 0.0 0
7763+
M V30 6 C -0.539582 -0.758027 0.0 0
7764+
M V30 7 N -0.542045 0.0669694 0.0 0 SUBST=-2
7765+
M V30 8 C -0.537978 -3.23604 0.0 0 RBCNT=3
7766+
M V30 9 C 3.8625 -1.175 0.0 0
7767+
M V30 10 C 3.8625 -2.0 0.0 0
7768+
M V30 11 C 4.57452 -2.40833 0.0 0 CFG=1
7769+
M V30 12 C 5.28654 -2.0 0.0 0 CFG=2
7770+
M V30 13 C 5.28654 -1.175 0.0 0
7771+
M V30 14 C 4.57452 -0.758333 0.0 0 CFG=2
7772+
M V30 15 C 4.57452 0.0666667 0.0 0
7773+
M V30 16 C 4.57452 -3.23333 0.0 0
7774+
M V30 17 C 6.00041 -2.41354 0.0 0
7775+
M V30 END ATOM
7776+
M V30 BEGIN BOND
7777+
M V30 1 2 3 4
7778+
M V30 2 2 1 2
7779+
M V30 3 1 4 5
7780+
M V30 4 2 5 6
7781+
M V30 5 1 6 1
7782+
M V30 6 1 2 3
7783+
M V30 7 1 6 7
7784+
M V30 8 1 3 8
7785+
M V30 9 1 9 10
7786+
M V30 10 1 9 14
7787+
M V30 11 1 10 11
7788+
M V30 12 1 11 12
7789+
M V30 13 1 12 13
7790+
M V30 14 1 13 14
7791+
M V30 15 1 14 15 CFG=1
7792+
M V30 16 1 11 16 CFG=1
7793+
M V30 17 1 12 17 CFG=3
7794+
M V30 END BOND
7795+
M V30 BEGIN COLLECTION
7796+
M V30 MDLV30/STERAC1 ATOMS=(2 11 14)
7797+
M V30 MDLV30/STEABS ATOMS=(1 12)
7798+
M V30 END COLLECTION
7799+
M V30 END CTAB
7800+
M END
7801+
7802+
OK
76567803
ind-289-link_v3000.mol:
76577804
molfile loader: link nodes are not supported yet (M V30 LINKNODE 1 2 2 2 3 2 1)
76587805
ind-290-list2v2000.mol:
@@ -8683,6 +8830,129 @@ M V30 15 1 14 15
86838830
M V30 16 1 15 16
86848831
M V30 END BOND
86858832
M V30 END CTAB
8833+
M END
8834+
8835+
OK
8836+
ind-928-asdrawn.mol:
8837+
molfile-saving-mode: auto
8838+
8839+
-INDIGO-01000000002D
8840+
8841+
14 15 0 0 0 0 0 0 0 0999 V2000
8842+
12.4500 -4.8679 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
8843+
11.9500 -5.7340 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
8844+
12.4500 -6.5999 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
8845+
13.4500 -6.5999 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
8846+
13.9500 -5.7340 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
8847+
13.4500 -4.8679 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
8848+
13.9500 -7.4661 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
8849+
14.9500 -7.4661 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
8850+
15.4500 -6.6000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
8851+
14.9500 -5.7340 0.0000 C 0 0 0 3 0 0 0 0 0 0 0 0
8852+
16.4500 -6.6000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
8853+
13.4500 -8.3321 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
8854+
16.9500 -5.7340 0.0000 C 0 0 0 2 0 0 0 0 0 0 0 0
8855+
17.9500 -5.7340 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
8856+
1 6 1 0 0 0 0
8857+
1 2 1 0 0 0 0
8858+
2 3 1 0 0 0 0
8859+
3 4 2 0 0 0 0
8860+
4 5 1 0 0 0 0
8861+
5 6 1 0 0 0 0
8862+
4 7 1 0 0 0 0
8863+
7 8 1 0 0 0 0
8864+
8 9 1 0 0 0 0
8865+
9 10 1 0 0 0 0
8866+
10 5 1 0 0 0 0
8867+
9 11 1 0 0 0 0
8868+
7 12 1 0 0 0 0
8869+
11 13 2 0 0 0 0
8870+
13 14 1 0 0 0 0
8871+
M UNS 2 3 1 11 1
8872+
M SUB 2 4 3 5 4
8873+
M RBC 2 4 3 7 -2
8874+
M END
8875+
8876+
molfile-saving-mode: 2000
8877+
8878+
-INDIGO-01000000002D
8879+
8880+
14 15 0 0 0 0 0 0 0 0999 V2000
8881+
12.4500 -4.8679 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
8882+
11.9500 -5.7340 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
8883+
12.4500 -6.5999 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
8884+
13.4500 -6.5999 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
8885+
13.9500 -5.7340 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
8886+
13.4500 -4.8679 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
8887+
13.9500 -7.4661 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
8888+
14.9500 -7.4661 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
8889+
15.4500 -6.6000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
8890+
14.9500 -5.7340 0.0000 C 0 0 0 3 0 0 0 0 0 0 0 0
8891+
16.4500 -6.6000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
8892+
13.4500 -8.3321 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
8893+
16.9500 -5.7340 0.0000 C 0 0 0 2 0 0 0 0 0 0 0 0
8894+
17.9500 -5.7340 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
8895+
1 6 1 0 0 0 0
8896+
1 2 1 0 0 0 0
8897+
2 3 1 0 0 0 0
8898+
3 4 2 0 0 0 0
8899+
4 5 1 0 0 0 0
8900+
5 6 1 0 0 0 0
8901+
4 7 1 0 0 0 0
8902+
7 8 1 0 0 0 0
8903+
8 9 1 0 0 0 0
8904+
9 10 1 0 0 0 0
8905+
10 5 1 0 0 0 0
8906+
9 11 1 0 0 0 0
8907+
7 12 1 0 0 0 0
8908+
11 13 2 0 0 0 0
8909+
13 14 1 0 0 0 0
8910+
M UNS 2 3 1 11 1
8911+
M SUB 2 4 3 5 4
8912+
M RBC 2 4 3 7 -2
8913+
M END
8914+
8915+
molfile-saving-mode: 3000
8916+
8917+
-INDIGO-01000000002D
8918+
8919+
0 0 0 0 0 0 0 0 0 0 0 V3000
8920+
M V30 BEGIN CTAB
8921+
M V30 COUNTS 14 15 0 0 0
8922+
M V30 BEGIN ATOM
8923+
M V30 1 C 12.45 -4.86795 0.0 0
8924+
M V30 2 C 11.95 -5.73395 0.0 0
8925+
M V30 3 C 12.45 -6.59995 0.0 0 UNSAT=1
8926+
M V30 4 C 13.45 -6.59995 0.0 0 SUBST=3 RBCNT=3
8927+
M V30 5 C 13.95 -5.73395 0.0 0 SUBST=4
8928+
M V30 6 C 13.45 -4.86795 0.0 0
8929+
M V30 7 C 13.95 -7.46605 0.0 0 RBCNT=-2
8930+
M V30 8 C 14.95 -7.46605 0.0 0
8931+
M V30 9 C 15.45 -6.60005 0.0 0
8932+
M V30 10 C 14.95 -5.73395 0.0 0 HCOUNT=2
8933+
M V30 11 C 16.45 -6.60005 0.0 0 UNSAT=1
8934+
M V30 12 C 13.45 -8.33205 0.0 0
8935+
M V30 13 C 16.95 -5.73405 0.0 0 HCOUNT=1
8936+
M V30 14 C 17.95 -5.73405 0.0 0
8937+
M V30 END ATOM
8938+
M V30 BEGIN BOND
8939+
M V30 1 1 1 6
8940+
M V30 2 1 1 2
8941+
M V30 3 1 2 3
8942+
M V30 4 2 3 4
8943+
M V30 5 1 4 5
8944+
M V30 6 1 5 6
8945+
M V30 7 1 4 7
8946+
M V30 8 1 7 8
8947+
M V30 9 1 8 9
8948+
M V30 10 1 9 10
8949+
M V30 11 1 10 5
8950+
M V30 12 1 9 11
8951+
M V30 13 1 7 12
8952+
M V30 14 2 11 13
8953+
M V30 15 1 13 14
8954+
M V30 END BOND
8955+
M V30 END CTAB
86868956
M END
86878957

86888958
OK
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
2+
-INDIGO-12122214002D
3+
4+
0 0 0 0 0 0 0 0 0 0 0 V3000
5+
M V30 BEGIN CTAB
6+
M V30 COUNTS 14 15 0 0 0
7+
M V30 BEGIN ATOM
8+
M V30 1 C 12.45 -4.86795 0.0 0
9+
M V30 2 C 11.95 -5.73395 0.0 0
10+
M V30 3 C 12.45 -6.59995 0.0 0 UNSAT=1
11+
M V30 4 C 13.45 -6.59995 0.0 0 SUBST=3 RBCNT=3
12+
M V30 5 C 13.95 -5.73395 0.0 0 SUBST=4
13+
M V30 6 C 13.45 -4.86795 0.0 0
14+
M V30 7 C 13.95 -7.46605 0.0 0 RBCNT=-2
15+
M V30 8 C 14.95 -7.46605 0.0 0
16+
M V30 9 C 15.45 -6.60005 0.0 0
17+
M V30 10 C 14.95 -5.73395 0.0 0 HCOUNT=2
18+
M V30 11 C 16.45 -6.60005 0.0 0 UNSAT=1
19+
M V30 12 C 13.45 -8.33205 0.0 0
20+
M V30 13 C 16.95 -5.73405 0.0 0 HCOUNT=1
21+
M V30 14 C 17.95 -5.73405 0.0 0
22+
M V30 END ATOM
23+
M V30 BEGIN BOND
24+
M V30 1 1 1 6
25+
M V30 2 1 1 2
26+
M V30 3 1 2 3
27+
M V30 4 2 3 4
28+
M V30 5 1 4 5
29+
M V30 6 1 5 6
30+
M V30 7 1 4 7
31+
M V30 8 1 7 8
32+
M V30 9 1 8 9
33+
M V30 10 1 9 10
34+
M V30 11 1 10 5
35+
M V30 12 1 9 11
36+
M V30 13 1 7 12
37+
M V30 14 2 11 13
38+
M V30 15 1 13 14
39+
M V30 END BOND
40+
M V30 END CTAB
41+
M END

core/indigo-core/molecule/src/molfile_loader.cpp

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2636,7 +2636,11 @@ void MolfileLoader::_readCtab3000()
26362636
if (subst == -1)
26372637
_qmol->resetAtom(i, QueryMolecule::Atom::und(_qmol->releaseAtom(i), new QueryMolecule::Atom(QueryMolecule::ATOM_SUBSTITUENTS, 0)));
26382638
else if (subst == -2)
2639-
throw Error("Query substitution count as drawn is not supported yet (SUBST=%d)", subst);
2639+
{
2640+
_qmol->resetAtom(
2641+
i, QueryMolecule::Atom::und(_qmol->releaseAtom(i),
2642+
new QueryMolecule::Atom(QueryMolecule::ATOM_SUBSTITUENTS_AS_DRAWN, _qmol->getVertex(i).degree())));
2643+
}
26402644
else if (subst > 0)
26412645
_qmol->resetAtom(i, QueryMolecule::Atom::und(_qmol->releaseAtom(i), new QueryMolecule::Atom(QueryMolecule::ATOM_SUBSTITUENTS, subst,
26422646
(subst < 6 ? subst : 100))));
@@ -2674,8 +2678,19 @@ void MolfileLoader::_readCtab3000()
26742678
{
26752679
if (rb == -1)
26762680
rb = 0;
2681+
else if (rb == -2)
2682+
{
2683+
int k, rbonds = 0;
2684+
const Vertex& vertex = _qmol->getVertex(i);
26772685

2678-
if (rb > 1)
2686+
for (k = vertex.neiBegin(); k != vertex.neiEnd(); k = vertex.neiNext(k))
2687+
if (_qmol->getEdgeTopology(vertex.neiEdge(k)) == TOPOLOGY_RING)
2688+
rbonds++;
2689+
2690+
_qmol->resetAtom(i, QueryMolecule::Atom::und(_qmol->releaseAtom(i),
2691+
new QueryMolecule::Atom(QueryMolecule::ATOM_RING_BONDS_AS_DRAWN, rbonds)));
2692+
}
2693+
else if (rb > 1)
26792694
_qmol->resetAtom(i, QueryMolecule::Atom::und(_qmol->releaseAtom(i),
26802695
new QueryMolecule::Atom(QueryMolecule::ATOM_RING_BONDS, rb, (rb < 4 ? rb : 100))));
26812696
else

0 commit comments

Comments
 (0)