diff --git a/src/ring.cpp b/src/ring.cpp index 7103a03c0..82878f6c7 100644 --- a/src/ring.cpp +++ b/src/ring.cpp @@ -348,10 +348,24 @@ namespace OpenBabel if (_rlist.size() == (unsigned)frj) return; - //make sure tmp is the same size as the rings + // create bondsets + std::vector _bslist; + std::vector bonds; + OBBitVec bondset; + OBMol *mol = _rlist[0]->GetParent(); + for (j = 0; j < (signed)_rlist.size(); ++j) + { + bondset.Clear(); + bonds = atomRingToBondRing(mol, (_rlist[j])->_path); + for (unsigned int i = 0; i < bonds.size(); ++i) + bondset.SetBitOn(bonds[i]); + _bslist.push_back(bondset); + } + + // make sure tmp is the same size as the rings OBBitVec tmp; - for (j = 0;j < (signed)_rlist.size();++j) - tmp = (_rlist[j])->_pathset; + for (j = 0; j < (signed)_bslist.size(); ++j) + tmp = _bslist[j]; //remove larger rings that cover the same atoms as smaller rings for (i = _rlist.size()-1;i >= 0;i--) @@ -359,15 +373,16 @@ namespace OpenBabel tmp.Clear(); for (j = 0;j < (signed)_rlist.size();++j) if ((_rlist[j])->_path.size() <= (_rlist[i])->_path.size() && i != j) - tmp |= (_rlist[j])->_pathset; + tmp |= _bslist[j]; - tmp = tmp & (_rlist[i])->_pathset; + tmp = tmp & _bslist[i]; - if (tmp == (_rlist[i])->_pathset) - { - delete _rlist[i]; - _rlist.erase(_rlist.begin()+i); - } + if (tmp == _bslist[i]) + { + delete _rlist[i]; + _rlist.erase(_rlist.begin() + i); + _bslist.erase(_bslist.begin() + i); + } if (_rlist.size() == (unsigned)frj) break; diff --git a/test/files/attype.00.smi b/test/files/attype.00.smi index c84f4a4c9..809647c8c 100644 --- a/test/files/attype.00.smi +++ b/test/files/attype.00.smi @@ -1,3 +1,5 @@ +C1[C@@H]2C[C@@H]3C[C@@H]1CC(C2)(C3)Nc1nc(N[C@]23C[C@@H]4C[C@@H](C3)C[C@H](C2)C4)nc(n1)N[C@]12C[C@@H]3C[C@@H](C2)C[C@@H](C1)C3 github_2641_2 +O1C23C4=C(C=C12)C1=COC(=C4OC3)C1 github_2641 aryl Oc1ccccc1c2nnco2 BIONET_10A-002 aryl CC(=O)c1ccc(cc1)n2ccnc2 BIONET_10A-004 aryl CN(C)/C=C/1\CCNC1=O BIONET_10A-007 hetatm diff --git a/test/files/formalchargeresults.txt b/test/files/formalchargeresults.txt index 1b8008944..2124850ff 100644 --- a/test/files/formalchargeresults.txt +++ b/test/files/formalchargeresults.txt @@ -1,3 +1,5 @@ +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -26,7 +28,7 @@ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -36,8 +38,8 @@ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -46,7 +48,7 @@ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -81,7 +83,7 @@ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -104,8 +106,8 @@ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -172,11 +174,11 @@ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 1 -1 0 0 +1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 +1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -197,7 +199,7 @@ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -212,7 +214,7 @@ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -226,7 +228,7 @@ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -238,14 +240,14 @@ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -263,10 +265,10 @@ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/test/files/formularesults.txt b/test/files/formularesults.txt index 8fc02b84d..a6a82fac9 100644 --- a/test/files/formularesults.txt +++ b/test/files/formularesults.txt @@ -1,3 +1,5 @@ +C33H48N6 528.774 528.394 +C11H6O3 186.164 186.032 C8H6N2O2 162.145 162.043 C11H10N2O 186.21 186.079 C7H12N2O 140.183 140.095 diff --git a/test/files/ringresults.txt b/test/files/ringresults.txt index 82f437e1c..13577bfe6 100644 --- a/test/files/ringresults.txt +++ b/test/files/ringresults.txt @@ -1,3 +1,9 @@ + 0 1 2 3 4 5 6 7 8 9 10 11 14 15 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 36 37 38 39 40 41 42 43 44 45 46 47 +10 + 2 2 1 2 2 3 2 2 1 1 0 1 1 1 0 3 2 2 1 2 2 1 2 2 1 1 1 1 0 3 2 2 1 2 2 1 2 2 1 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 +5 + 1 3 3 2 1 2 2 1 1 2 2 1 1 2 1 2 3 4 5 6 8 9 10 11 12 2 0 1 1 1 1 1 1 1 1 1 1 1 diff --git a/test/files/smartsresults.txt b/test/files/smartsresults.txt index 3e3ad4f62..fbce9d97e 100644 --- a/test/files/smartsresults.txt +++ b/test/files/smartsresults.txt @@ -1,4 +1,244 @@ 120 patterns + 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 + 12 13 14 26 27 28 + 1 2 3 4 5 6 7 8 9 10 11 15 16 17 18 19 20 21 22 23 24 25 29 30 31 32 33 34 35 36 37 38 39 + + + 1 3 5 7 9 10 11 13 15 17 19 21 22 24 25 26 28 29 31 33 35 36 38 39 + 2 4 6 12 14 18 20 23 27 32 34 37 + 8 16 30 + 8 12 13 14 16 26 27 28 30 + 2 4 6 11 15 18 20 23 29 32 34 37 + 1 3 5 7 9 10 17 19 21 22 24 25 31 33 35 36 38 39 + + 2 4 6 11 15 18 20 23 29 32 34 37 + 2 4 6 11 15 18 20 23 29 32 34 37 + 1 3 5 7 9 10 17 19 21 22 24 25 31 33 35 36 38 39 + + 1 2 3 4 5 6 7 8 9 10 12 13 14 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 + 11 15 29 + 11 15 29 + 3 9 10 12 13 14 19 22 25 26 27 28 33 36 39 + 1 2 4 5 7 8 17 18 20 21 23 24 31 32 34 35 37 38 + 6 16 30 + 1 2 3 4 5 6 7 8 9 10 12 13 14 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 + 11 15 29 + 11 15 29 + + + + + + 1 2 3 4 5 6 7 8 9 10 12 13 14 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 + + + + 11 13 15 26 28 29 + 1 2 3 4 5 6 7 8 9 10 12 14 16 17 18 19 20 21 22 23 24 25 27 30 31 32 33 34 35 36 37 38 39 + + + 13 26 28 + 11 12 14 15 27 29 + 1 2 3 4 5 6 7 8 9 10 16 17 18 19 20 21 22 23 24 25 30 31 32 33 34 35 36 37 38 39 + 1 2 3 4 5 6 7 8 9 10 12 13 14 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 + 11 15 29 + + 1 3 5 7 9 10 12 13 14 17 19 21 22 24 25 26 27 28 31 33 35 36 38 39 + 2 4 6 8 16 18 20 23 30 32 34 37 + + + + + + + + + 1 2 3 4 5 6 7 8 9 10 12 14 16 17 18 19 20 21 22 23 24 25 27 30 31 32 33 34 35 36 37 38 39 + 11 13 15 26 28 29 + + + + 2 4 6 16 18 20 23 30 32 34 37 + 2 4 6 16 18 20 23 30 32 34 37 + 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 + + + 12 14 27 + + + + + + + 1 2 3 4 5 6 7 8 9 10 16 17 18 19 20 21 22 23 24 25 30 31 32 33 34 35 36 37 38 39 + 1 2 3 4 5 6 7 8 9 10 11 12 14 15 16 17 18 19 20 21 22 23 24 25 27 29 30 31 32 33 34 35 36 37 38 39 + + + 12 13 14 26 27 28 + 1 2 3 4 5 6 7 8 9 10 11 12 14 15 16 17 18 19 20 21 22 23 24 25 27 29 30 31 32 33 34 35 36 37 38 39 + 1 2 3 4 5 6 7 8 9 10 11 12 14 15 16 17 18 19 20 21 22 23 24 25 27 29 30 31 32 33 34 35 36 37 38 39 + 2 4 6 16 18 20 23 30 32 34 37 + + 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 + 11 15 29 + + + 1 2 3 4 5 6 7 8 9 10 16 17 18 19 20 21 22 23 24 25 30 31 32 33 34 35 36 37 38 39 + + 2 4 6 18 20 23 32 34 37 + 2 4 6 18 20 23 32 34 37 + + + 1 2 3 4 5 6 7 8 9 10 16 17 18 19 20 21 22 23 24 25 30 31 32 33 34 35 36 37 38 39 + 12 14 27 + + + + + + 1 3 5 7 9 10 17 19 21 22 24 25 31 33 35 36 38 39 + 12 13 14 26 27 28 + 12 13 14 26 27 28 + + + + 12 14 27 + 12 14 27 + + + + + + + + + + + + 1 2 3 4 5 6 7 8 9 10 12 14 16 17 18 19 20 21 22 23 24 25 27 30 31 32 33 34 35 36 37 38 39 + + 12 13 14 26 27 28 + + 1 2 3 4 5 6 7 8 9 10 11 12 13 14 + + 1 2 3 4 5 6 7 8 9 10 11 12 13 14 + + + 1 5 8 9 12 13 14 + 3 4 6 7 10 11 + 2 + 1 2 3 4 6 7 9 10 11 12 + 5 8 + 13 14 + + 5 8 + 5 8 + 13 14 + + 1 2 3 4 5 6 7 8 9 10 11 12 13 14 + + + 1 5 8 9 12 13 + 4 6 7 10 11 14 + 2 3 + 1 2 3 4 5 6 7 8 9 10 11 12 13 14 + + + + + 1 2 6 + + 2 3 4 5 6 7 8 9 10 11 12 13 14 + 3 4 7 10 11 14 + + + 1 9 12 + + 2 3 4 5 6 7 8 10 11 13 14 + + + 1 9 12 + 3 4 5 6 7 8 10 11 + 2 13 14 + 1 2 3 4 5 6 7 8 9 10 11 12 13 14 + + + 1 5 8 9 12 13 14 + 3 4 6 7 10 11 + + + + + + + + + 2 3 4 5 6 7 8 10 11 13 14 + + 1 9 12 + + + + + 1 2 3 4 5 6 7 8 9 10 11 12 13 14 + + + + + + + + + + 2 3 4 5 6 7 8 10 11 13 14 + 1 2 3 4 5 6 7 8 9 10 11 12 13 14 + 3 4 5 6 7 8 10 11 + + + 1 2 3 4 5 6 7 8 9 10 11 12 13 14 + 1 2 3 4 5 6 7 8 9 10 11 12 13 14 + + + 1 2 3 4 5 6 7 8 9 10 11 12 13 14 + + + + 1 2 3 4 5 6 7 8 9 10 11 12 13 14 + + + + + + 2 3 4 5 6 7 8 10 11 13 14 + + + 1 9 12 + + 1 9 12 + 1 9 12 + 13 14 + 1 9 12 + 1 9 12 + + + + + 3 4 6 7 10 11 + + + + + + + + + + + 1 9 12 + 2 3 4 5 6 7 8 10 11 13 14 + + 1 9 12 + 1 2 3 4 5 6 7 8 9 10 11 12 2 3 4 5 6 7 8 9 10 11 12 1