From 10afed8ac866f817fbf0f0f13dacda1b7b5cade5 Mon Sep 17 00:00:00 2001 From: Aliaksandr Dziarkach Date: Mon, 18 Sep 2023 20:07:03 +0300 Subject: [PATCH 01/14] #1282 SMARTS load/save errors in Indigo. Fix load/save errors. Add code to save #6A as C. Add code to remove ';' whe possible. Add missed types support in saver. --- api/tests/integration/ref/basic/basic.py.out | 4 +- .../ref/basic/load_structure.py.out | 6 +- api/tests/integration/tests/formats/smarts.py | 24 +++- core/indigo-core/molecule/base_molecule.h | 4 +- core/indigo-core/molecule/query_molecule.h | 3 + .../molecule/src/query_molecule.cpp | 24 ++++ .../molecule/src/smiles_loader.cpp | 48 +++++--- .../indigo-core/molecule/src/smiles_saver.cpp | 110 +++++++++++++----- 8 files changed, 176 insertions(+), 47 deletions(-) mode change 100644 => 100755 api/tests/integration/tests/formats/smarts.py diff --git a/api/tests/integration/ref/basic/basic.py.out b/api/tests/integration/ref/basic/basic.py.out index f2caa72fa1..d7f46b5284 100644 --- a/api/tests/integration/ref/basic/basic.py.out +++ b/api/tests/integration/ref/basic/basic.py.out @@ -175,8 +175,8 @@ Smiles: [*][*][*][*]NC [CH6] [CH6] ****** SMARTS and query SMILES ******** -O*C(F)(F)F -O*C(F)(F)F +O*C(F)(F)F |$;*;;;;$| +O*C(F)(F)F |$;*;;;;$| ******** |$;AH_p;Q_e;QH_p;M_p;MH_p;X_p;XH_p$| -INDIGO-01000000002D diff --git a/api/tests/integration/ref/basic/load_structure.py.out b/api/tests/integration/ref/basic/load_structure.py.out index 96fb38bb49..f80ea3f27b 100644 --- a/api/tests/integration/ref/basic/load_structure.py.out +++ b/api/tests/integration/ref/basic/load_structure.py.out @@ -12,7 +12,7 @@ C1C=CC=CC=1* |$;;;;;;A$| C1C=CC=CC=1* (** #4 **): Smile (smarts parameter): -C1C=CC=CC=1* +C1C=CC=CC=1* |$;;;;;;*$| ---- Reaction Structure ---- @@ -20,13 +20,13 @@ C1C=CC=CC=1* C1C=CC=CC=1*>>C1C=C(*)C=CC=1 (** #6 **): smarts parameter: -C1C=CC=CC=1*>>C1C=C(*)C=CC=1 +C1C=CC=CC=1*>>C1C=C(*)C=CC=1 |$;;;;;;*;;;;*;;;$| (** #7 **): Smiles, (no parameter): C1C=CC=CC=1* |$;;;;;;A$| (** #8 **): Smarts, (smarts parameter): -[#8;A;H]-[#6;a]1-,:[#6;a]-,:[#6;a]-,:[#6;a]-,:[#6;a]-,:[#6;a]-,:1 +[#8AH]-[c]1-,:[c]-,:[c]-,:[c]-,:[c]-,:[c]-,:1 (** #9 **): Smarts, (query parameter): [OH]C1:C:C:C:C:C:1 diff --git a/api/tests/integration/tests/formats/smarts.py b/api/tests/integration/tests/formats/smarts.py old mode 100644 new mode 100755 index 6d4c4b039a..cb0fe5c7c9 --- a/api/tests/integration/tests/formats/smarts.py +++ b/api/tests/integration/tests/formats/smarts.py @@ -1,3 +1,4 @@ +#!/bin/env python3 import os import sys @@ -23,8 +24,8 @@ def test_smarts_load_save(smarts_in): print("%s is ok. smarts_in==smarts_out" % smarts_in) else: print("smarts_in!=smarts_out") - print(" smarts_in=%s", smarts_in) - print("smarts_out=%s", smarts_out) + print(" smarts_in=%s" % smarts_in) + print("smarts_out=%s" % smarts_out) molstr = """ @@ -96,3 +97,22 @@ def test_smarts_load_save(smarts_in): print("**** Load and Save as Query with component-level grouping ****") test_smarts_load_save("([#8].[#6])") test_smarts_load_save("([#8].[#6]).([#8].[#6])") + +test_smarts_load_save("[!C!b]") +test_smarts_load_save("[*]") +test_smarts_load_save("[*R]") +test_smarts_load_save("[*R0]") +test_smarts_load_save("[*R1]") +test_smarts_load_save("[*R3]") +test_smarts_load_save("[r]") +test_smarts_load_save("[r0]") +test_smarts_load_save("[r1]") +test_smarts_load_save("[r3]") +test_smarts_load_save("[v]") +test_smarts_load_save("[v0]") +test_smarts_load_save("[v3]") +test_smarts_load_save("[+0]") +test_smarts_load_save("[!*]") +test_smarts_load_save("[#6]@[#6]") +test_smarts_load_save("[#9]/[#6]") +test_smarts_load_save("[#9]/[#6]=[C]/[#17]") diff --git a/core/indigo-core/molecule/base_molecule.h b/core/indigo-core/molecule/base_molecule.h index ef49bd4ea8..b7f19d68c5 100644 --- a/core/indigo-core/molecule/base_molecule.h +++ b/core/indigo-core/molecule/base_molecule.h @@ -69,7 +69,9 @@ namespace indigo _BOND_DOUBLE_OR_AROMATIC = 7, _BOND_ANY = 8, _BOND_COORDINATION = 9, - _BOND_HYDROGEN = 10 + _BOND_HYDROGEN = 10, + BOND_SMARTS_UP = 11, + BOND_SMARTS_DOWN = 12, }; enum diff --git a/core/indigo-core/molecule/query_molecule.h b/core/indigo-core/molecule/query_molecule.h index cd98fa75fd..6cf9f7e9e5 100644 --- a/core/indigo-core/molecule/query_molecule.h +++ b/core/indigo-core/molecule/query_molecule.h @@ -97,6 +97,7 @@ namespace indigo ATOM_TEMPLATE_SEQID, ATOM_TEMPLATE_CLASS, ATOM_PI_BONDED, + ATOM_CHILARITY, BOND_ORDER, BOND_TOPOLOGY, @@ -137,6 +138,8 @@ namespace indigo bool sureValueBelongs(int what_type, const int* arr, int count); bool sureValueBelongsInv(int what_type, const int* arr, int count); + bool hasOP_OR(); + // Optimize query for faster substructure search void optimize(); diff --git a/core/indigo-core/molecule/src/query_molecule.cpp b/core/indigo-core/molecule/src/query_molecule.cpp index 6a46a3175c..aa74876478 100644 --- a/core/indigo-core/molecule/src/query_molecule.cpp +++ b/core/indigo-core/molecule/src/query_molecule.cpp @@ -1186,6 +1186,30 @@ bool QueryMolecule::Node::sureValueBelongs(int what_type, const int* arr, int co } } +bool QueryMolecule::Node::hasOP_OR() +{ + int i; + + switch (type) + { + case OP_AND: { + for (i = 0; i < children.size(); i++) + if (children[i]->hasOP_OR()) + return true; + + return false; + } + case OP_OR: { + return true; + } + case OP_NOT: + // return children[0]->hasOP_OR(); + return false; + default: + return false; + } +} + QueryMolecule::Atom* QueryMolecule::Atom::sureConstraint(int what_type) { int count = 0; diff --git a/core/indigo-core/molecule/src/smiles_loader.cpp b/core/indigo-core/molecule/src/smiles_loader.cpp index 71a519e3da..9621dc0908 100644 --- a/core/indigo-core/molecule/src/smiles_loader.cpp +++ b/core/indigo-core/molecule/src/smiles_loader.cpp @@ -1884,9 +1884,11 @@ void SmilesLoader::_loadParsedMolecule() _setRadicalsAndHCounts(); } + /* if (smarts_mode) // Forbid matching SMARTS atoms to hydrogens _forbidHydrogens(); + //*/ if (!inside_rsmiles) { @@ -2565,7 +2567,10 @@ void SmilesLoader::_readBondSub(Array& bond_str, _BondDesc& bond, std::uni else if (next == '/') { scanner.skip(1); - order = BOND_SINGLE; + if (smarts_mode) + order = BOND_SMARTS_UP; + else + order = BOND_SINGLE; if (bond.dir == 2) throw Error("Specificiation of both cis- and trans- bond restriction is not supported yet."); bond.dir = 1; @@ -2573,7 +2578,10 @@ void SmilesLoader::_readBondSub(Array& bond_str, _BondDesc& bond, std::uni else if (next == '\\') { scanner.skip(1); - order = BOND_SINGLE; + if (smarts_mode) + order = BOND_SMARTS_DOWN; + else + order = BOND_SINGLE; if (bond.dir == 1) throw Error("Specificiation of both cis- and trans- bond restriction is not supported yet."); bond.dir = 2; @@ -2879,10 +2887,15 @@ void SmilesLoader::_readAtom(Array& atom_str, bool first_in_brackets, _Ato int rc = scanner.readUnsigned(); if (rc == 0) - subatom = std::make_unique(QueryMolecule::ATOM_RING_BONDS, 0); + if (smarts_mode) + subatom = std::make_unique(QueryMolecule::ATOM_SSSR_RINGS, 0); + else + subatom = std::make_unique(QueryMolecule::ATOM_RING_BONDS, 0); else subatom = std::make_unique(QueryMolecule::ATOM_SSSR_RINGS, rc); } + else if (smarts_mode) + subatom = std::make_unique(QueryMolecule::ATOM_SSSR_RINGS, 1, 100); else subatom = std::make_unique(QueryMolecule::ATOM_RING_BONDS, 1, 100); } @@ -2944,22 +2957,29 @@ void SmilesLoader::_readAtom(Array& atom_str, bool first_in_brackets, _Ato { atom.star_atom = true; scanner.skip(1); - if (first_in_brackets && atom_str.size() < 2 && !smarts_mode) - { - atom.label = ELEM_RSITE; - } - else if (first_in_brackets && scanner.lookNext() == ':' && !inside_rsmiles) + if (smarts_mode) { - atom.label = ELEM_RSITE; + subatom = std::make_unique(QueryMolecule::ATOM_PSEUDO, "*"); } else { - if (qatom.get() == 0) - atom.label = ELEM_PSEUDO; + if (first_in_brackets && atom_str.size() < 2) + { + atom.label = ELEM_RSITE; + } + else if (first_in_brackets && scanner.lookNext() == ':' && !inside_rsmiles) + { + atom.label = ELEM_RSITE; + } else { - subatom = std::make_unique(QueryMolecule::ATOM_NUMBER, ELEM_H); - subatom.reset(QueryMolecule::Atom::nicht(subatom.release())); + if (qatom.get() == 0) + atom.label = ELEM_PSEUDO; + else + { + subatom = std::make_unique(QueryMolecule::ATOM_NUMBER, ELEM_H); + subatom.reset(QueryMolecule::Atom::nicht(subatom.release())); + } } } } @@ -3301,6 +3321,8 @@ void SmilesLoader::_readAtom(Array& atom_str, bool first_in_brackets, _Ato if (isdigit(scanner.lookNext())) subatom = std::make_unique(QueryMolecule::ATOM_SMALLEST_RING_SIZE, scanner.readUnsigned()); + else if (smarts_mode) + subatom = std::make_unique(QueryMolecule::ATOM_SMALLEST_RING_SIZE, 1, 100); else subatom = std::make_unique(QueryMolecule::ATOM_RING_BONDS, 1, 100); } diff --git a/core/indigo-core/molecule/src/smiles_saver.cpp b/core/indigo-core/molecule/src/smiles_saver.cpp index 7a7413838f..db33a31a5c 100644 --- a/core/indigo-core/molecule/src/smiles_saver.cpp +++ b/core/indigo-core/molecule/src/smiles_saver.cpp @@ -922,6 +922,31 @@ void SmilesSaver::_writeCharge(int charge) const _output.printf("-"); } +static void _write_num(indigo::Output& output, unsigned char ch, int num) +{ + output.writeChar(ch); + if (num != 1) + output.printf("%d", num); +} + +static void _write_num_if_set(indigo::Output& output, unsigned char ch, int min, int max) +{ + if (min == 1 && max == 100) + output.writeChar(ch); + else + { + output.printf("%c%d", ch, min); + } +} + +static void writeAnd(Output& _output, QueryMolecule::Node* node, bool has_or_parent) +{ + if (has_or_parent) + _output.writeChar('&'); + else if (node->hasOP_OR()) + _output.writeChar(';'); +} + void SmilesSaver::_writeSmartsAtom(int idx, QueryMolecule::Atom* atom, int chirality, int depth, bool has_or_parent, bool has_not_parent) const { int i; @@ -937,16 +962,42 @@ void SmilesSaver::_writeSmartsAtom(int idx, QueryMolecule::Atom* atom, int chira break; } case QueryMolecule::OP_AND: { - for (i = 0; i < atom->children.size(); i++) + // Convert a & #6 -> c, A & #6 -> C + if (atom->children.size() == 2 && + ((atom->children[0]->type == QueryMolecule::ATOM_AROMATICITY && atom->children[1]->type == QueryMolecule::ATOM_NUMBER) || + (atom->children[1]->type == QueryMolecule::ATOM_AROMATICITY && atom->children[0]->type == QueryMolecule::ATOM_NUMBER))) { - if (atom->children[i]->type == QueryMolecule::ATOM_RADICAL || atom->children[i]->type == QueryMolecule::ATOM_VALENCE) + int number = -1; + bool aromatic = false; + char atom_name[10]; + if (atom->children[0]->type == QueryMolecule::ATOM_NUMBER) { - continue; + number = static_cast(atom->children[0])->value_max; + aromatic = static_cast(atom->children[1])->value_min == ATOM_AROMATIC; + } + else + { + aromatic = static_cast(atom->children[0])->value_min == ATOM_AROMATIC; + number = static_cast(atom->children[1])->value_max; } + strncpy(atom_name, Element::toString(number), sizeof(atom_name)); + if (aromatic) + atom_name[0] = tolower(atom_name[0]); + _output.printf("%s", atom_name); + } + else + { + for (i = 0; i < atom->children.size(); i++) + { + if (atom->children[i]->type == QueryMolecule::ATOM_RADICAL || atom->children[i]->type == QueryMolecule::ATOM_VALENCE) + { + continue; + } - if (i > 0) - _output.writeChar(has_or_parent ? '&' : ';'); - _writeSmartsAtom(idx, (QueryMolecule::Atom*)atom->children[i], chirality, depth + 1, has_or_parent, has_not_parent); + if (i > 0) + writeAnd(_output, atom, has_or_parent); + _writeSmartsAtom(idx, (QueryMolecule::Atom*)atom->children[i], chirality, depth + 1, has_or_parent, has_not_parent); + } } break; } @@ -1002,6 +1053,8 @@ void SmilesSaver::_writeSmartsAtom(int idx, QueryMolecule::Atom* atom, int chira _output.printf("+"); else if (charge == -1) _output.printf("-"); + else + _output.printf("+0"); break; } case QueryMolecule::ATOM_FRAGMENT: { @@ -1021,11 +1074,12 @@ void SmilesSaver::_writeSmartsAtom(int idx, QueryMolecule::Atom* atom, int chira _output.writeChar('*'); break; case QueryMolecule::ATOM_TOTAL_H: { - int hydro = atom->value_min; - if (hydro == 1) - _output.printf("H"); - else - _output.printf("H%d", hydro); + _write_num(_output, 'H', atom->value_min); + break; + } + + case QueryMolecule::ATOM_SSSR_RINGS: { + _write_num_if_set(_output, 'R', atom->value_min, atom->value_max); break; } @@ -1035,24 +1089,12 @@ void SmilesSaver::_writeSmartsAtom(int idx, QueryMolecule::Atom* atom, int chira } case QueryMolecule::ATOM_RING_BONDS: { - if (atom->value_min == 1 && atom->value_max == 100) - _output.printf("x"); - else - { - _output.printf("x%d", atom->value_min); - } + _write_num_if_set(_output, 'x', atom->value_min, atom->value_max); break; } case QueryMolecule::ATOM_IMPLICIT_H: { - if (atom->value_min == 1 && atom->value_max == 100) - { - _output.printf("h"); - } - else - { - _output.printf("h%d", atom->value_min); - } + _write_num_if_set(_output, 'h', atom->value_min, atom->value_max); break; } @@ -1062,6 +1104,7 @@ void SmilesSaver::_writeSmartsAtom(int idx, QueryMolecule::Atom* atom, int chira } case QueryMolecule::ATOM_SMALLEST_RING_SIZE: { + _write_num_if_set(_output, 'r', atom->value_min, atom->value_max); break; } @@ -1085,6 +1128,11 @@ void SmilesSaver::_writeSmartsAtom(int idx, QueryMolecule::Atom* atom, int chira break; } + case QueryMolecule::ATOM_TOTAL_BOND_ORDER: { + _write_num(_output, 'v', atom->value_min); + break; + } + default: { throw Error("Unknown atom attribute %d", atom->type); break; @@ -1130,7 +1178,8 @@ void SmilesSaver::_writeSmartsBond(int idx, QueryMolecule::Bond* bond, bool has_ for (i = 0; i < bond->children.size(); i++) { if (i > 0) - _output.writeChar(has_or_parent ? '&' : ';'); + writeAnd(_output, bond, has_or_parent); + //_output.writeChar(has_or_parent ? '&' : ';'); _writeSmartsBond(idx, (QueryMolecule::Bond*)bond->children[i], has_or_parent); } break; @@ -1146,6 +1195,15 @@ void SmilesSaver::_writeSmartsBond(int idx, QueryMolecule::Bond* bond, bool has_ _output.writeChar('#'); else if (bond_order == BOND_AROMATIC) _output.writeChar(':'); + else if (bond_order == BOND_SMARTS_UP) + _output.writeChar('/'); + else if (bond_order == BOND_SMARTS_DOWN) + _output.writeChar('\\'); + break; + } + case QueryMolecule::BOND_TOPOLOGY: { + if (bond->value == TOPOLOGY_RING) + _output.writeChar('@'); break; } default:; From 47a7de8ae99023070cc2fee53557c49780e4c212 Mon Sep 17 00:00:00 2001 From: Aliaksandr Dziarkach <18146690+AliaksandrDziarkach@users.noreply.github.com> Date: Tue, 19 Sep 2023 13:09:33 +0300 Subject: [PATCH 02/14] #1282 SMARTS load/save errors in Indigo. Fix C++ Unit Tests --- api/c/tests/unit/tests/formats.cpp | 6 +++--- core/indigo-core/tests/tests/smarts.cpp | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/api/c/tests/unit/tests/formats.cpp b/api/c/tests/unit/tests/formats.cpp index b9010de1b5..6b0f26f596 100644 --- a/api/c/tests/unit/tests/formats.cpp +++ b/api/c/tests/unit/tests/formats.cpp @@ -60,7 +60,7 @@ TEST_F(IndigoApiFormatsTest, molecule) EXPECT_EQ(7, indigoCountBonds(obj)); // 3 - const string expectedSmarts = "[#6;A]1-[#6;A]=[#6;A]-[#6;A]=[#6;A]-[#6;A]=1-[!#1]"; + const string expectedSmarts = "[C]1-[C]=[C]-[C]=[C]-[C]=1-[*]"; obj = indigoLoadStructureFromString(mStr.c_str(), "smarts"); EXPECT_STREQ(expectedSmarts.c_str(), indigoSmarts(obj)); EXPECT_EQ(7, indigoCountAtoms(obj)); @@ -83,13 +83,13 @@ TEST_F(IndigoApiFormatsTest, reaction) { const string react = "C1=C(*)C=CC=C1>>C1=CC=CC(*)=C1"; const string expected = "C1C=CC=CC=1*>>C1C=C(*)C=CC=1"; + const string expected_smarts = "[C]1-[C]=[C]-[C]=[C]-[C]=1-[*]>>[C]1-[C]=[C](-[*])-[C]=[C]-[C]=1"; try { int obj = -1; obj = indigoLoadStructureFromString(react.c_str(), "smarts"); - EXPECT_STREQ(expected.c_str(), indigoSmiles(obj)); - EXPECT_STREQ(expected.c_str(), indigoCanonicalSmiles(obj)); + EXPECT_STREQ(expected_smarts.c_str(), indigoSmarts(obj)); EXPECT_EQ(1, indigoCountReactants(obj)); EXPECT_EQ(1, indigoCountProducts(obj)); EXPECT_EQ(2, indigoCountMolecules(obj)); diff --git a/core/indigo-core/tests/tests/smarts.cpp b/core/indigo-core/tests/tests/smarts.cpp index d5d3d17d75..61e85b7d72 100644 --- a/core/indigo-core/tests/tests/smarts.cpp +++ b/core/indigo-core/tests/tests/smarts.cpp @@ -114,15 +114,15 @@ TEST_F(IndigoCoreSmartsTest, h) EXPECT_FALSE(substructureMatch("C", "[*h5]")); EXPECT_FALSE(substructureMatch("C([H])([H])([H])[H]", "[Ch]")); - EXPECT_STREQ(smilesLoadSaveLoad("[#6;h]", true).c_str(), "[#6;h]"); - EXPECT_STREQ(smilesLoadSaveLoad("[#6;h2]", true).c_str(), "[#6;h2]"); + EXPECT_STREQ(smilesLoadSaveLoad("[#6;h]", true).c_str(), "[#6h]"); + EXPECT_STREQ(smilesLoadSaveLoad("[#6;h2]", true).c_str(), "[#6h2]"); } TEST_F(IndigoCoreSmartsTest, connectivity) { - EXPECT_STREQ(smilesLoadSaveLoad("[#7;X3]", true).c_str(), "[#7;X3]"); - EXPECT_STREQ(smilesLoadSaveLoad("[#7X3]", true).c_str(), "[#7;X3]"); - EXPECT_STREQ(smilesLoadSaveLoad("[NX3]", true).c_str(), "[#7;X3]"); + EXPECT_STREQ(smilesLoadSaveLoad("[#7;X3]", true).c_str(), "[#7X3]"); + EXPECT_STREQ(smilesLoadSaveLoad("[#7X3]", true).c_str(), "[#7X3]"); + EXPECT_STREQ(smilesLoadSaveLoad("[NX3]", true).c_str(), "[#7X3]"); } TEST_F(IndigoCoreSmartsTest, aliases) From 59727342db7f9124183a0c67977953aa71bee338 Mon Sep 17 00:00:00 2001 From: Aliaksandr Dziarkach <18146690+AliaksandrDziarkach@users.noreply.github.com> Date: Tue, 19 Sep 2023 15:16:16 +0300 Subject: [PATCH 03/14] #1282 SMARTS load/save errors in Indigo. Fix Unit Tests --- api/c/tests/unit/tests/formats.cpp | 2 +- api/tests/integration/ref/basic/basic.py.out | 4 +-- .../ref/basic/load_structure.py.out | 4 +-- .../integration/ref/formats/smarts.py.out | 21 ++++++++++-- api/tests/integration/tests/formats/smarts.py | 1 - core/indigo-core/molecule/query_molecule.h | 2 ++ .../molecule/src/query_molecule.cpp | 2 +- .../molecule/src/smiles_loader.cpp | 34 +++++++------------ .../indigo-core/molecule/src/smiles_saver.cpp | 9 +++++ 9 files changed, 49 insertions(+), 30 deletions(-) diff --git a/api/c/tests/unit/tests/formats.cpp b/api/c/tests/unit/tests/formats.cpp index 6b0f26f596..dcf05d45a7 100644 --- a/api/c/tests/unit/tests/formats.cpp +++ b/api/c/tests/unit/tests/formats.cpp @@ -67,7 +67,7 @@ TEST_F(IndigoApiFormatsTest, molecule) EXPECT_EQ(7, indigoCountBonds(obj)); // 4 - const string expectedQuery = "[#6]1-[#6]=[#6]-[#6]=[#6]-[#6]=1-[!#1]"; + const string expectedQuery = "[#6]1-[#6]=[#6]-[#6]=[#6]-[#6]=1-[*]"; obj = indigoLoadStructureFromString(mStr.c_str(), "query"); EXPECT_STREQ(expectedQuery.c_str(), indigoSmarts(obj)); EXPECT_EQ(7, indigoCountAtoms(obj)); diff --git a/api/tests/integration/ref/basic/basic.py.out b/api/tests/integration/ref/basic/basic.py.out index d7f46b5284..f2caa72fa1 100644 --- a/api/tests/integration/ref/basic/basic.py.out +++ b/api/tests/integration/ref/basic/basic.py.out @@ -175,8 +175,8 @@ Smiles: [*][*][*][*]NC [CH6] [CH6] ****** SMARTS and query SMILES ******** -O*C(F)(F)F |$;*;;;;$| -O*C(F)(F)F |$;*;;;;$| +O*C(F)(F)F +O*C(F)(F)F ******** |$;AH_p;Q_e;QH_p;M_p;MH_p;X_p;XH_p$| -INDIGO-01000000002D diff --git a/api/tests/integration/ref/basic/load_structure.py.out b/api/tests/integration/ref/basic/load_structure.py.out index f80ea3f27b..32a7d94091 100644 --- a/api/tests/integration/ref/basic/load_structure.py.out +++ b/api/tests/integration/ref/basic/load_structure.py.out @@ -12,7 +12,7 @@ C1C=CC=CC=1* |$;;;;;;A$| C1C=CC=CC=1* (** #4 **): Smile (smarts parameter): -C1C=CC=CC=1* |$;;;;;;*$| +C1C=CC=CC=1* ---- Reaction Structure ---- @@ -20,7 +20,7 @@ C1C=CC=CC=1* |$;;;;;;*$| C1C=CC=CC=1*>>C1C=C(*)C=CC=1 (** #6 **): smarts parameter: -C1C=CC=CC=1*>>C1C=C(*)C=CC=1 |$;;;;;;*;;;;*;;;$| +C1C=CC=CC=1*>>C1C=C(*)C=CC=1 (** #7 **): Smiles, (no parameter): C1C=CC=CC=1* |$;;;;;;A$| diff --git a/api/tests/integration/ref/formats/smarts.py.out b/api/tests/integration/ref/formats/smarts.py.out index c61ce65b05..02a711713e 100644 --- a/api/tests/integration/ref/formats/smarts.py.out +++ b/api/tests/integration/ref/formats/smarts.py.out @@ -1,11 +1,28 @@ **** Load and Save as Query **** -[#6]-[#6]-[#6;+5]-[#6]-[#6]-[#6]-[#6]-[#6] +[#6]-[#6]-[#6+5]-[#6]-[#6]-[#6]-[#6]-[#6] CC[C+5]CCCCC **** Load and Save as Molecule **** -[#6]-[#6]-[#6;+5]-[#6]-[#6]-[#6]-[#6]-[#6] +[#6]-[#6]-[#6+5]-[#6]-[#6]-[#6]-[#6]-[#6] CC[C+5]CCCCC **** Load and Save as Query with not list **** [#6]-[#6]-[!#5!#6!#7]-[#6]-[#6]-[#6]-[#6]-[#6]-[#6] **** Load and Save as Query with component-level grouping **** ([#8].[#6]) is ok. smarts_in==smarts_out ([#8].[#6]).([#8].[#6]) is ok. smarts_in==smarts_out +[!C!b] is ok. smarts_in==smarts_out +[*] is ok. smarts_in==smarts_out +[*R] is ok. smarts_in==smarts_out +[*R0] is ok. smarts_in==smarts_out +[*R1] is ok. smarts_in==smarts_out +[*R3] is ok. smarts_in==smarts_out +[r] is ok. smarts_in==smarts_out +[r0] is ok. smarts_in==smarts_out +[r1] is ok. smarts_in==smarts_out +[r3] is ok. smarts_in==smarts_out +[v] is ok. smarts_in==smarts_out +[v0] is ok. smarts_in==smarts_out +[v3] is ok. smarts_in==smarts_out +[+0] is ok. smarts_in==smarts_out +[#6]@[#6] is ok. smarts_in==smarts_out +[#9]/[#6] is ok. smarts_in==smarts_out +[#9]/[#6]=[C]/[#17] is ok. smarts_in==smarts_out diff --git a/api/tests/integration/tests/formats/smarts.py b/api/tests/integration/tests/formats/smarts.py index cb0fe5c7c9..86be90f3fa 100755 --- a/api/tests/integration/tests/formats/smarts.py +++ b/api/tests/integration/tests/formats/smarts.py @@ -112,7 +112,6 @@ def test_smarts_load_save(smarts_in): test_smarts_load_save("[v0]") test_smarts_load_save("[v3]") test_smarts_load_save("[+0]") -test_smarts_load_save("[!*]") test_smarts_load_save("[#6]@[#6]") test_smarts_load_save("[#9]/[#6]") test_smarts_load_save("[#9]/[#6]=[C]/[#17]") diff --git a/core/indigo-core/molecule/query_molecule.h b/core/indigo-core/molecule/query_molecule.h index 6cf9f7e9e5..b3f8c78ebf 100644 --- a/core/indigo-core/molecule/query_molecule.h +++ b/core/indigo-core/molecule/query_molecule.h @@ -118,6 +118,8 @@ namespace indigo // otherwise: no children PtrArray children; + bool artificial; // if true - added by parser to comply restrictions + // Check if node has any constraint of the specific type bool hasConstraint(int what_type); diff --git a/core/indigo-core/molecule/src/query_molecule.cpp b/core/indigo-core/molecule/src/query_molecule.cpp index aa74876478..a26c902040 100644 --- a/core/indigo-core/molecule/src/query_molecule.cpp +++ b/core/indigo-core/molecule/src/query_molecule.cpp @@ -506,7 +506,7 @@ bool QueryMolecule::isSaturatedAtom(int idx) throw Error("not implemented"); } -QueryMolecule::Node::Node(int type_) +QueryMolecule::Node::Node(int type_) : artificial(false) { type = (OpType)type_; } diff --git a/core/indigo-core/molecule/src/smiles_loader.cpp b/core/indigo-core/molecule/src/smiles_loader.cpp index 9621dc0908..46d065b9b6 100644 --- a/core/indigo-core/molecule/src/smiles_loader.cpp +++ b/core/indigo-core/molecule/src/smiles_loader.cpp @@ -1884,11 +1884,9 @@ void SmilesLoader::_loadParsedMolecule() _setRadicalsAndHCounts(); } - /* if (smarts_mode) // Forbid matching SMARTS atoms to hydrogens _forbidHydrogens(); - //*/ if (!inside_rsmiles) { @@ -2150,8 +2148,9 @@ void SmilesLoader::_forbidHydrogens() std::unique_ptr newatom; std::unique_ptr oldatom(_qmol->releaseAtom(i)); - newatom.reset( - QueryMolecule::Atom::und(QueryMolecule::Atom::nicht(new QueryMolecule::Atom(QueryMolecule::ATOM_NUMBER, ELEM_H)), oldatom.release())); + std::unique_ptr notH(QueryMolecule::Atom::nicht(new QueryMolecule::Atom(QueryMolecule::ATOM_NUMBER, ELEM_H))); + notH->artificial = true; + newatom.reset(QueryMolecule::Atom::und(notH.release(), oldatom.release())); _qmol->resetAtom(i, newatom.release()); } @@ -2957,29 +2956,22 @@ void SmilesLoader::_readAtom(Array& atom_str, bool first_in_brackets, _Ato { atom.star_atom = true; scanner.skip(1); - if (smarts_mode) + if (first_in_brackets && atom_str.size() < 2 && !smarts_mode) + { + atom.label = ELEM_RSITE; + } + else if (first_in_brackets && scanner.lookNext() == ':' && !inside_rsmiles) { - subatom = std::make_unique(QueryMolecule::ATOM_PSEUDO, "*"); + atom.label = ELEM_RSITE; } else { - if (first_in_brackets && atom_str.size() < 2) - { - atom.label = ELEM_RSITE; - } - else if (first_in_brackets && scanner.lookNext() == ':' && !inside_rsmiles) - { - atom.label = ELEM_RSITE; - } + if (qatom.get() == 0) + atom.label = ELEM_PSEUDO; else { - if (qatom.get() == 0) - atom.label = ELEM_PSEUDO; - else - { - subatom = std::make_unique(QueryMolecule::ATOM_NUMBER, ELEM_H); - subatom.reset(QueryMolecule::Atom::nicht(subatom.release())); - } + subatom = std::make_unique(QueryMolecule::ATOM_NUMBER, ELEM_H); + subatom.reset(QueryMolecule::Atom::nicht(subatom.release())); } } } diff --git a/core/indigo-core/molecule/src/smiles_saver.cpp b/core/indigo-core/molecule/src/smiles_saver.cpp index db33a31a5c..dc8a746b21 100644 --- a/core/indigo-core/molecule/src/smiles_saver.cpp +++ b/core/indigo-core/molecule/src/smiles_saver.cpp @@ -957,6 +957,15 @@ void SmilesSaver::_writeSmartsAtom(int idx, QueryMolecule::Atom* atom, int chira switch (atom->type) { case QueryMolecule::OP_NOT: { + if (atom->artificial) // Skip atoms added by loader (!#1) + { + break; + } + else if (QueryMolecule::isNotAtom(*atom, ELEM_H)) + { + _output.printf("*"); + break; + } _output.writeChar('!'); _writeSmartsAtom(idx, (QueryMolecule::Atom*)atom->children[0], chirality, depth + 1, has_or_parent, true); break; From e51d1d9ad27cb5b4c2ad93d2eca628ef82c94541 Mon Sep 17 00:00:00 2001 From: Aliaksandr Dziarkach <18146690+AliaksandrDziarkach@users.noreply.github.com> Date: Wed, 20 Sep 2023 12:01:20 +0300 Subject: [PATCH 04/14] #1282 SMARTS load/save errors in Indigo. Fix Unit Tests --- .../tests/rendering/ref/linux/smarts/0171.png | Bin 11304 -> 8689 bytes .../tests/rendering/ref/linux/smarts/0172.png | Bin 11027 -> 7535 bytes .../tests/rendering/ref/linux/smarts/0188.png | Bin 3760 -> 1430 bytes .../tests/rendering/ref/mac/smarts/0171.png | Bin 12193 -> 8689 bytes .../tests/rendering/ref/mac/smarts/0172.png | Bin 11851 -> 7535 bytes .../tests/rendering/ref/mac/smarts/0188.png | Bin 4047 -> 1430 bytes .../tests/rendering/ref/win/smarts/0171.png | Bin 7044 -> 8689 bytes .../tests/rendering/ref/win/smarts/0172.png | Bin 6609 -> 7535 bytes .../tests/rendering/ref/win/smarts/0188.png | Bin 2286 -> 1430 bytes 9 files changed, 0 insertions(+), 0 deletions(-) diff --git a/api/tests/integration/tests/rendering/ref/linux/smarts/0171.png b/api/tests/integration/tests/rendering/ref/linux/smarts/0171.png index d72cc13a609f9903bbd3afd43d92db1750f9ddfb..4b74e232e6913692a35700c7ebe1b6eebcbd537b 100644 GIT binary patch literal 8689 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 i0;Ev!e}4H;bB9VHuoCqOTe$?_CL}AVAWw85dw z>Af?v=FM8~-F4qu^T&j&BxL26?6c37@B8+NP*;`5!KB1QLPEk(RFKg`LPCat*LfHy z;Bn`jzaw};H&>FELAw9@m)BmBh=fFkq$ne){VwY$+s>GHAf?L=oqUUtg@v9gFu3$b zVz?r&2K{NUnQWnr`Dcl0hhChIy`}G>oi%z^du^g9Nwhf&xHK@tPa`PtxjKShHU(3f z1fzV!N49~&fhL?}e@lvB210jX5 z{HxG~I%^IC*aHaSaG@?PE^c=smr7XPH;|&9KsW;#)h1Rd|J~WF-jEnJ2F9eygqp-% zD4)K*J~1&dTp$sKkTX+`S78eca;}QF_BlGi~>)m0g9Hw(O+xl68&cVwC zrU7?fk{2zx4P0D)ji&QF#G$mbwzf7iTi@B?H|q|qGHTS-(Q(e9PaV0tyK_eWq?Wrn zj9rQXr3)RmLH|MOzP>e-h^UZdAQXFd^1_JG%F0U28_`9{@3>ldq0Gd@w79Tv+D0%C zO{HgSTzPRoh|s5n!C<1IqBA5#J{Lb9J$jVIytBLOc`%0)d9>76&F7_#Hu?f1dkVXY zeZL!gxk0RD-$xQ**3*j%M_bz|N8G}K0(~Lk2pK38S}8$IO?`j4iFap`kym}~v@=Sf zrKKgjL>STA-~V1G<%`|COAZYcRV3P5d;45*zj9Z8ZDbyNDQjNfctb4{69;qiV8>Ii z?g%qJKE6kK2{}2cG?q~4Cx6!_zZ;K5w}QgL-@kqlW1{tNCMPGa1>Cn+RIn19TwKf_ z&pz@l!wU-w>qYdLpO)nM8>*`ZuE?vXsQCK&R-3dB>cl)2DkztHmMknHViEM=!v|fG z2$azmbpKe|o3X_&cBf-U^VOziW)Ls(va+)7f z9CzHru&j0XwZ@6c$jR*s;HAyYhj({N)#_JrB?2?Iq#oivRws#jSuEyr-is1R%03NY zX6wQZ{YEi{v|QjZIYHhTB=GioV8F+|jf4b3$V&y!gpv~GPD?pCIT@K=_*9|K*}j#7 zg9F$=N5|vcT`~d!=hF?@aV?NFVwKC?-5Y(8Wc$3V#F$1#Mr=aP8#0gurlO*vA4IbB z1P+6imX;6D(apnntjBxJ5$!GBXU}>#HOqLPK7Govl~q-_5&@reymXLxUboa!1RBl6#KqzJ8m+9X zoJz#fN-+5;SLjvGmF71zq#(Si4eI2w^$iRbE>AZJI2=2!ptiP84|+#OM?*tHzkmOJ zb};{Y*Yf1YSN+(AyO$vM8SpgA5X;T3TezhacmfW~O+FV6pbQ9MnZJ2MNkmlW4RLu0 zg5|PKrk}L3veKl(x9pkI&AGixGp+xnWW}#?6lj;5Ee}#-DH_PDt*-&6ePmnrKYqNv zEvc*Hu`WSZ(bOdL;%szW+es>`sw!^n85a+P@ozVMSm{qfW z=t&93-XQi0RiO(oD}6Zz!m3xTDQ90y4GmwawN2W)eQ9gUviadF``c-6n$hJa_~uA_ zSYzY;?e7UZT5;dY6SHYowfS)8&3;Izub*EX3^vG{)Y8)O{k#5#IRoLN6`5zOtWQb? z`ua|-p9%=1Vt@(|o5f8VaLYwnQ(OBL71n|b4czO7A~|TVxHM zK}ESb!zSlMQhNXXeR(2e4a0S3RD-$h&FnKa3w!&O@83(UY|~~d^b((W9L;Ro~8t{?gM z`OlA*$VLQ3L=s~$t~U?*qp2ue8RHeSSxHp<{lzsv5n!pTeA|VM@#;IMshHa?Cd)`JNnSQ>EdfP)E-W3tyiy9yce>wvVhaS z%)Xd^NJd8HZpQ<^=6w5|lP2uFDZ_6txLV|-&u(asoZ$XsA#Kcr-kdu?MFf1#*eoZ$qHE-e*T{JXu z3-)14O}AQ= z9O*+D2o*ucq;hPVdYKJMjZ`l>4rQ-v5=}3I6u{*w3&b8uCFDt8J-C?fR==*T< zzv0M(8D>6_BPJ*YdD)trFFEDDkJFA_fS=4Ac@(K61qUg#FjCAYhAFSTHUSB0@s1THI_mdLvLK zw!=G#QTh~m9%`g4lAZ-!(orwdry=9L8U+FO=6xlnJO;Y~Or|JjYs->tZh2XGVt!l3 z;($(2P*6bN;`;1hYHF(T`0Evx{s z;%ddc0IEf!{nGmY)l7bN5s}PZK^wJ8EG1e-4zCv4{q>&k+iP27?yg~1NRX*Oy+3Ej z+&6=N{3P7Og9tgUary4%f`^C4U=bd}5OfywV{3~SAU)KFxZ2vRc@>3XO@-(9pKrW@$VL32`Ba%TtRL7tnJ% zUVjbtyE%_nh865?O7wJhb8~a!OM!%2YOtr`f6Mu!U-9C2ZCA+9*jRZQ*vVkaE%lP4 z^hYS0jH{bl5nl~mb_gP55+g0B1I`8lIzE<&Srxw`TfmWqnofqAh6Y3_vlI&-U$V(W zAbx?~p96mP7<@{~m(b7C2Xb8T@$r|a0J8M;^|2c_)$q-~5i2)U=0%97Bb0KYUM+)d zxL6C&^YoUMMm6vyq@*nWoLf;=7NI<-E?^W##EI%R_1C}jw5=XT-H+lGWOfQ|w+ds$ zyCVRm{khheD=wqkO&>}l`mW2%+t_%y-uBz_^0ESkgsKcZfx&JsrJIPyp}w!LsA@F; z315TJP+V6%j5~Y{Ufnr5IEcIN6RYCUh^FQA5CD@~*5Q10Yz_8Hx~8VF-|C=an#{V| z+A@^g|H}cq&^%|Z=qXL$D-%IOS$NWrWs!C7$VjC7%*qNittOcYov7$zEJ0!6Uk_G9 z1OAA5eQ;|_X=xGWMkfOxZ|Sq*_V)JLy{xJ#?g2~tek8LtwjI}D(o-!#9_fL2-Dquv zfZPCN7E(ZqCm6(j}Efjkx!Y=H>~BiCP@k zx}l8I(y{o4U*3?ghNB#yQtKddM1Z!#%E7^m;?nFp|M}IH#lYNLLrY6WaS?bpR1U>A zta&X7fSjwVtCEtEv$M0ZGIkkuN=nM@_;Y%C6s0#L`q-mg7@+^r3yh78S#J0PTwK36 z9&MH;;`uX9e$Wu6dOa9_eObuxQlua3)Y6jAa+9-T`&mk3qd+_He0MkflP4kKsn|=l zvbwsYRWclB>x1!6>iygHb=gR7E-yphzeh(ytDReCVq|pQZ+1T*t?*(YjWlTW{@73unT(-QpgQJ%kt#XHk)aO@k5-Bj*d$=V7PE#X_w6zU?N-6FQ}!% zadlRvR0abBpNXEW|DKSrekJwVFHf3LPgfT-#%XCBUQ$w05Jo?m)4jaBL|tQF85{dw zZIk7Eqp-sJ5^(SDZ-$bFEM%$uH$AAlHIf?Eg}4v}7;`;LPwW8M6wMX~4L%|w0^nD~ z`FR6Cay&eV3Jic60)y7q*GtrLccP-IFRotV|U5*Ty&{=iCFyB!HS zIgTNKnwDpQgo1*iV1(ot3`u?oXv^{Xx}+LHK=9o!b_yQ*C!`!Ex93ZacE(+kl;_85 zrmtQ_<8$-z6<ILBOGt$V4^76%>&w!5weFOE`asb;%WL87?KPuCHiOxm#+_=>9t}2K> zC>)1MZtXD-PaSw&*APuM&YbHTe1=WIEo04SFR7|Jp6S>T z(S*b^De}*+DagxvJzb<&DU44@sHv|{PD~scpbA6;8wqkQ%rN?=Pa|*#qwrmvoW8et z@$4Ro(kQs0`}o`d)A)yL8npHFI855o_{t{N)+9tks7CYHC&xf%Y7heCnpL-wPDz}r zP%heBB^wQ6|L6B&rBv)}zLl@p%nc0^cfcDA+@L`1(g`mm&Tv3?*en`Z(>ACubD2rC&CR8&)A zCQt-C^fmktuIlPq2P(>*=z0VRI{D*7KD#-(JodfSb{{3B$cTuc)6D_vi5!)O;>f(y zodNeJCr)5d%xXD@i(euG4w_=3^x4i4h|!S|5jXgx#Ql{T;YR{^;0JP*8!nWpa5HjL zhrB61IORo+T~fga>OU1B3=*Ii0j;PnMpaAe8vxik0`3QHZlr zDna}Md8p!n=!1fX4{3d0!`tdH9~>09aLmx`-0K1OakuQh4;m}3d+j%KuAz=7pUs;2P&O69`e0->NA9%jN#Ka5^3E3-%kSVCCsR3+X+PbPI zJ}2kr_O|RAD;8EH39IhR>@0<_om^1RN`dk7<8s!my;nT}cV~LhzxFoEJeM8CyS_ISuGv1qJlfpI6Ps@<| zN0u@^^1VBGz2a*}^_9Yza5S%>L6`4EKWG`C#u_CC;o6~7 zQ@mO(_@CNYA{Nljjus{E5JYpY&CE2^)$=k5Y4#5eHa9ncO0d7b|Hj^)Jzl~4Y=8UU zpcSP1NGiv{oeNv&%)|BCGOPbWG%H`S42kIw^1F5uBdeZ;o&byqqDuEe6#$I~V&Yx{ z0;ucR%+!h3o zZa4q=>}V-xczcb3-drK|^}KW3 z)+SOSJuZt6k(?H?xefx=ZsGxU*!)lGNf__+F_gJE_B zSC&3LJ)Pn}O(|I_$JD!6_dq#g8-TxCHz~H>-ojpSRfobFR-kv)@5#u^16H|y`Tn2Un^=3$`_9fz|7unIX>Snj0BO?E z{QzJn3+4aP;nwIu#W_7ab)!3YA|F%wChsCB>cfXgy*-2jI>_|9{fcTJ{`mR&A_${k zMCqUs#^|%r2s*tsG^8wf5zZI#`Qw~}^U>m$%boLs`B;;YGP7S_({kjMZ z%mt$A<7Irv48W{lQ_6;CW@h5>{W0=ETZaqakweZTpQi%JF++YRoYwyXA1LsEW|d(k zrKBXNsp8?`jeCiHzoHLSR#tYi*>#zggQ{z4c3)K$v1gB9lfM`8IcJ-oD(=aU)RPry zELCR#EGgXa`6_&6VBq0BHYO%v=~j0bRnC{>n^PL@9K3%oeUJCfyg}YX`5YAX(_1_dv{OIfqPN^+cX4M zl}Wo{;d`(#)4T1^F-muHpqgzC#LBm|UF~ER7Z+C&figfuNN8?h0RYTIE)k5Y>^~}X z2sWbeYp2crXwZ29ipi~``}FA(7Z+DK8NFxMz(BZ!lI7d4!^0n4Q`eUo9TP|HPI~YR zll4eAQPD^9lnTR)*nl#H_a~C0gYG_&r=|#F7xI)|Qri(Mq{b5n-XBHtzH*zsf5s-CSJ@qciKovm^p?*sR>0oXGj! zB&DX3*|lu^OMNaXK2vgD4y%#;za!A;SN;0}-CIBj{ttn!0F|x(KauBb$J9B}koyP6 z^6Z|>un%v${3@_G>*nR>UtC(+lm=aDXI^@)=RXtYSZatv|2=U|5Lf+!hJa&;x|UX9 zt@rUtYwBR>LH{&H8uHh)vAhvr1C4}#*78`$Lp)f_bCWi5T5c{bF9bYZm=R$S86CZy z6hE?Uxy&vuZjxONT0&`QsY)h)@uyENixhZQS62)QWNOJ;4_P12O%=)u_359jgH+8j z2YRDrRU`oSS0C~uI)L_@&!uO{UezMm59GW8PA)DDeS-xci$yJ9w}?uu&`0cp%kgGc zjayjtvh#VcT{ru2=ske+s+yjXLJIp~2Ff)`9dj1wNz)@gx3;tm49cp|Tg021no5ld zr02uUdfuP1fLIZaXINuH7`+G4i-#j--8!9U)Dhh32P^E}h;B|wmXRX#+41jy+mO336CV_#$ zW!Ter1^+)+*7EWLb1c}{*u=0-tA9_3>nR=WBFEn%1#o6%dOG-<>+bk=QaX?kRFjgD zCL>#H%FD|YGDsMMpjW@P1tEz;pOn+Np`&R)+;8yrECPTNShU*aMFe4pR{#ul?cHXy z?!ILorp`c~WXQXi>5w!qXcNpIFDVTf{5_-QGQkSuOU)Q$9`$gI^dPRh1@>pe9|5QM zfv7R-8T3XcMeO$cTxk`ug6q+yd*lsAQSb~pF-yS#bpm6ApFe*Bo(r^2HAO|QKex^O zZ|jE-Uuj!CD#n6Pk$4p&A-1`wdZ)GzhS%cfZ z1_uW}e86Zn29ge!c`ul*$wgE41=y~~t=jqPL-O?}kEjdcVj?s(G`?1MmX~9a;X`^q zLSH^93Ma!=6Z;!rAkc(oB^{-tg7xz( zJlL97!-_-J&B1zf+me44LQ$VH?ttDOg5Icb0n5Y)Y}@`T5~ZgPP0M*QJgUTdz|34C z(A=AyOhf>$U?8a z3}lCfN@Ixm-|9C$&dki@(60%6Ys-{6VleglG#9W_&}}gQpsKfDYQUl5C$AZDy8q*s zQwS6@1~I1}FA|uZ6d{5!RR^Vb0Vp#>#hMmUkiduzq<}}N+M~;%+xixx2Fe{<5mU(l&k3j3VbQV@V)MMIwlSdBahymdtut(pu%ks9bv@A#s=wgf7D}nbef!Tr#g41L(p;dolppNAdGm&zhmcWf#iG+kT_4h15 z_!C~l~)ZBUlk z7{P<3HGSwLaH5N=D~K&4L&J}ekrw9W3RYkYu+{hrq9z^81^y2`oqCK-mM-5lrIR&*qF)S6305#(>mCMPXkX zbH6PiF)%QwCv2Yy2N-+u`n24rR{wBwlZcX%l9;&HFg!CUskdww@W{%Ye0?_P(LTVH zLKi-T5Xt-!<@9b2MI;`&aM1sv@EsZz98>E6C#6PQUte#014F1iqym(}S!M=?I6P!` zY-(X`cXUB0#=v)4z2)4B!hYSxVruZ9UYt)@KaM$qoSfxQW^o=7EFo{!6}FQe96r{R=v-? zLbWj1HBcG(hAq0VyRf5(sxBfN#N4{f+JP`9e^Ppo!fu3}9Y05(IQ01O;}e`?K@qcH zih3SE+k}~d=Unzv0|Sw!NxL#%yD6V+8F51wy%xaS*WH~@Y7op*R_}Xjz>$%Ee4GW{ zxgXK?5iBcYD<~JJ8)+FCU_@VD{!DteSVy5)llw!n)4G(jwfrN_5RbwqnUW8CIUVBj zTT*WC?%XqV=RW-yi)B(ydkv4OPXV)7-`u0aL$_7F`XeMB8(QHe3O8Qt9nz7Jks-QG zFw?awee0yDtsOc~0!|lvo%FIL`3sh&{RSR;JpdY=aK}GCPw`&p-3gt)HV{?8!~%U( zF%`^xZf-#7p7Xu+f4~jzY*_I@V3$M^6&m|2L0FU?=8dHGm2#Rieo!

Ke0? zV|~{6XrpNN7pWk`ot#DMR^NWs2@O=Qguq@HEH<;r1=qIrHHNp=n!L9_zo0redv;~8 zbntnjv?HPwsnI4G>c%=$8v>kf591QbCGeoz#jiR8 zPEB3=v40Bqm$FL1Z;$9%u#$@JM$8$=TaC0Con-F$>iX;cEIVDkL|gz>=6P0BdKmsk z5kH=i8uL2|l){qeuP8+FxRLH*VL9 z37{Dq{8Ago_9u2q=Eq%Q+e5)K!MOMlP7DY_UN#yoF&7iP+EYCz!**@6QCh^PWy(K9 zb}Slw&&xw_Z$A@w(s_knJ2@4?Ha7M%MJx>XT3FUVSmXyO+Eh2^N77HNVM0=+wFb@= zHPiEjjsg+WjpyGX)w*|A1x@9;M%!i<;g?M!uiEwe@27Y|CqKph@qiw!si^$9pW+=N z8N&>d_8ieoMTM|LzRqKl!{RMKt6g_$FrFgh93_EhUvEv2zIWd1qsi&H2Ma$x{#F=} zOY`NS-XwHjLgWeh?YVs4tj{)T_K{BPPf^!8gVkT_mu6MZdQ4v!_tFjCNGUeteyFXcWh7aFI}0IS<) zx-F;{bd$#r^Lwr%mXxm7;;VLj5Mp9*`8hX5HV8)d!0IZJ|Cv(igJt^6(YEQ)HqGl? zak0wIOP{U+`~ZK}UNLcSG%!4JI3t5Vs*;pQ3SOe*z~oD7y2Hy8-J0{5XHY`9zfIWRt&OK&*YJ ze&O}xfl#OvNxS--JMb00H@EVg7FQ||M#nN@TCZWy!oa!J9Uj)}=K4;(z4Ga=YKUlP zoDzqK7E$e+Mge{i&yt))lj1P57}Hj3=rbCTt@|Aq7xp#0b@Koh`uvgK(d9lK!n|6Y z)V>zQ6$m3|2Zs~t7)8G?k21LI z+Ab5s;9n1f5={5+oRy_UjE?gN(9X|H_*gUiS?J~r=y)v!*8UMN%SGGh^@*SPlQAyX7P&l6>nwubDGHAs9xnvb~47 zA%mkg=Ce@(7p84>Vn_XJ19-n_;cubO#OuzFfsbj1hea~AzAueGOr&?4`V;9{s#zm841=UG|YKG0VU#yuMIq&a;1e!U# z9}n{ngt;lVXc`C;_pg2!ziqGY`n)(&EU@P>g#}}}QlDQ1zJhBo@BCT`$ANvCW}eW& zlQiH(u_8cGGl+U%;Td`V-Iw@_@g(lIFAAdN7T)H#&2lpsiVN~2QJDItvv%?#ZP z_w}4}*SdfF?ppWnyI5=Zc=^8h_TKM)o@c+$pBieQ9E?7M zLM3AFog%YJvNKk&nt+(ODg|-EWe?wa%we)%Lh55dx3;YI_fqS~&*3u??K9R{2x2KI zDG=a>PW&Vm2#_}p#Gh^d>Gu*{5m;za;DSH`%l~_MgtNozocmN)SJ$e}FjK9d{l2J( zNODqAqx0hQG|fjtvCN_3;^K^qyFTR^85!UbQgyz%e+!pm$HO!ri)(~C?Gx-R+YHV| ze0x}STce1OkT=t$gUIFFw1Y@^D-j6^iS)3g5FMg>Eq1tE*762=HvWPMM>auQzFlcd z_u~r;ox&3SFBdU7I=aN6u4R{o_GZMT=gdw?NeR-3G(5Md>8Fhl5epC1bDCeyj*dwW z^?9h8=lO2$divVh7Dau%Uk~{Z>B4(N@GG!$GMQ>vOQ750tSLGI}POixIHHJ^L&pw(hfpZTPpHWqcS!2x#D%xR! zUD9AV3-x{pdRqJUjs?-HRH(2e^wh3a9!a>;qi+pw_1b6U<>hU8-5Nm`emZzB3;FkU zx?m}+cQmUG3}|$~l7XZ`?n4O)-^o&gU)|9!d}NR530eC3`c_$$BD>;0e2_NlBz#P( zoOg0^g6vPZ&BDdSHG$p`tjx9&Jinybgl99VK5}^(=NP|rNWmO;c8R&^(J_q_I)3Qr7-pn!az1!vC0S$rJr2xT+{fu zM}*QT(9On)HJmKX!RRi}=6T;YaSgR*hJg&oV0*bT=VDxdl)=#l^Eme@Avr7|`1dQ$ zX`>ag9=B!Cu1XJ1XByA*6mEyQN+(K|elwjScP$uy!WB3TTKgRlMDvc}+oJOFlhfz0 za!*tRk^p{Iswa}Jdcw0Hm<)Q?R6LVW3#$`9?NhKeBqILZO<1o291cfmGB#LO>GRk% z;Xhv5L|3scRB@VrV(}7}CflyiK(=jp5l{&ALc)*r3SAfBUIk^a0vO6`^}6%h)R$bI zQ^pc)&rM;j8L9J~mR0ZkOLgeXI0!l5Nj5@`E07~s2_K{sVrq&B>wTz%4w9R(Kl8m; zY@8!0aIQ#sPTtdcV`pQt_nw6{!0)VC`KK2^%A+)km!Gg@&yM$<-)D%gN|`JAI5iQ} z%#2s+H`Navw>!A$em?V;)2+$?JajO_9s0U`)A1~70{lc)`z{1y_FWe zzRf)cYy199*&p6xd*>>JrS!4&8e?rFKD+&qB?K>v3)Y>&en;EC_#b+7!-GIZgtY)| zx<_jRsx$!`50RZx{CByNHKqT!M+Q?>U9Gh(3n66bJU?82uKXL01s=?Vc%tO@FfFGG zzCJ!aAm=H#ujBLQ{n>JFYhwsUgiC%jxgz_>WUgFxrmFxerkHfEc)SkN#Oh3_udmO0 zp0eP7xeFeHMYydGl^K0j+s=kui@#p!oNIKW=F#6<4rd}_iD8g98GFue%RmvVfC@X? zJDxI4Nltc}uKZY2^Mdp4W7pLvT0x;GqLH$gn3y{IspOOtFE20d(A3ma0J(7iu8=To z$m=h5b!$i@;%dJ~8K4^H@bFNt0**LGrr6WaWIvgopP#LF6igqq9{!+1L_o&qAd=4H zvl{1rePK&O59=_->TG%vPO6$Fq~v2OK$Fa8axuGz@!S~sNT-0ep=)W0#37T+Zc$NE zGN>}^N)xs(Z`$G_$%UD|BVs0O?+FUJ9j*<&C{X($eowZY58fgMa_#O` zVCgJ1sQKWFYCJk}FMA8i`u$XfxQE@^Kx&C@nPHoskJcSG6Rhag!y$>^)if}e0Trr? z!FweOz*p^sUf9`jKwCRB8}r3OnEQH?b135}6D%yX=NLUTL*EBUnU-PLxiWA_1>^{C56CWS1nl56};37x(&|$igoL$Y> z2bpBpgSVk=WHkFLRt9chzQ z)x@&tKzv=QtrY@YYTiS70FmWJeZHlVCS-eqxdz>EpKRn-J_$_FZEXOAZ`Atc_%BLs zEiJ8DQg%6)NNSiHNG~cXYG`Qacza4_?+cE~oe4@UEcuSli~h6i0Rge!CMPGcaPW=2 z<~`Cv5)0P`(?#tj3JX5G;Sv_s+17_P`-$}a>WPh|d1&?}5GySNm*k-yB+dhDdQMJG ztn|eOI^d?c$4GSEJ%NpdwXz*^T;be)T@PIWdrwJ8X&C-i-=b#5|G3078la#*nU~Qy znpRLD;a&D)1w1GxHJ`CJ=6rps+~g9OVoJoa;CDEfb+yWFNRag1m{0G`n>T=-TwM=F zbDxcmjRCw?AtU+QrYm2)HU5%o+V1}>=5Fuz?<3+Iowy*YPE*W5icX1cqm1rZ{j5{M zFu&X?7#w;SeR-s$5CCX~J;5|%^YbQfc$??$&zKm}JeSd&r$D0V6hfx~5ewKmIl&uU zk>w`MiFe+9t#n!b7ELee`jlDR5039-XGizg^+8II$3~{t!fy;+qT4GHkI;)U?CjyU zSTzL3X&<~w!TG~Lz*(Zg!j20qsge*PEvyh#koQog1V6lm!<3Xk{3w(f4(6mxNuTQa zppUh+M+xfEw)XbEpk+YCPk#P1EV~aAq9G2OZ}#Hm2i015v&~!bqfhdVH#4Q|wDIdM zN>)}@Sj6h;>fGEM0L;}2b^8+IseWa^jX!b`-FmuEYdfCIYjgsJRa=@nIZNI2&VD;p zJt0s%Q-p_-QZLwq^}+N44~>YY1C+92$45sL6cmz2BTw!>i&muqxkDv0(*wrX4FLx*s{C$RGE?Wqf~`x zx;zga4FJLI&4R3jhS#|Vm9#9Kg_^l`c6MQ;48^ZrZZwYK~gHnG}VT=*aol%OuTl! zo&~Qv6CWPoeT44#)1Kggu8oqP*PFl7ZkLEIF*+- zMsrPlck9}(cbz45#r(nE0m2(>zGAvL>zS@HN7fKS--?Ti9~>O8sitYac#%tCWo3n0 zY`+0OT5~0XeZj*%%BifZEG$&?Nli<$6G?Y-b4y4_5RM}H17JYP|LP1-)-4vR!L;K! zx8b~k0(%CEwqJnZUk~?(lhEsGX;oYF-eKg9dKX8OO?`7Q)jl>hCVjb6^Xbzk*5}C% za}E0!+Z9vd9P)kjjGp7w8fsNjNn>T+(Gp7Svo> zx$l!wg1!J3l`$yG`cNjlr1u`sT`GQfMtppZhkS%@6w%U+L;&V$xg)$lEptl~<=RM$ zkJAx*F*-V01pp6fg+e*y2>^)$OvH1a;kGd!wJq(p2!3+Rpj}-IXbdn#?DrhOzKL?6j(S!`y?ks=fdB+sI4q+_6i&)usITAPFjM`H@~?cq zINnA#ZI|C7XR~1-3>=9g+8707A}A;b6eux1F)@*nTNj9TSaW>#LNmHe!ttjNAUBKN z_<}6|v@XX$u`XjQDP<+4*G!w4G69$>^B$1>cbx1G{Yb+qv#09nvHi&6!a^EhJMCAm zmcduo#oU%1QN(jEZfH2$Dyc|5{8p-4l0l7MI5j_ym@@G)0c3MvX>Dz-si~=;&~4=0 zn&EwkTA4&Z{4>W%e3$_2e{X<=bQ zLjyTh#JiK>N3{$1DLo~nz=KCoUszZeGz6H{lzZQ?JTWvfY9zypxNXd=sPE|L_&kLV zaHK0Z@M&tsU1nm-daGthUxQh+qUGSP1HZq5gRu`F%7$CcgbxI`j>kN6Qaz_hIGy)g) z!ygR!?RQaw0%5+A`Bz%@CxgTcwp{|3c#IoHtZJkHqx9kM6XSRMrr2nr5il66gn@=D zEgcvhmhn9)<)M9Kp$O&xz!vpESS(_0Ybu(We^(M5qEfXtE zH*iEU($kwgcMTcYBhGY8O#@~fKff;E&gNx&O3nm0c;y4Z02qP6q-)+CH7f8R8(m#p zT}z4u$;E!1)7#9UX0HX^ENzmQ7f@A&ihEL(LkD8ER@Vl6q=tYTz<( z+V9{D7n|awsiIw7Cl9pCIuaR206}e(QdEr_uwahPR-EaN!yUo7Pr7u*;iRz&e9$VG zHpqz2XO7w&(Wc8t%j7|rOaccd{0<<&FzdYR8rXO2JnXH0*6@zek&$d6mhg^c3Jg{U;Kb5LBWZS(FsJpCVJnKUkcIb^vp@n$~roh^-W`Edtg;X{d4Qn2b3;i zcNs|(Vgk=E)%u-V2CZIDyP+)(P=~zD^NiZ&`Tyfyi{)31n9Lt`I?8G3>7mfg%}wdg zDW_Dk4kD+pfN`Czt*tki{WU;38D*$%hZEDT{9&{-j-~k0T{kddM37MJgCu8&OF*0A z|Jky^+JI(KGT%!iYB^hpghgDUn$}9O7)E7ra0(AtGA3d z)IU}!g%f%yyuFl$`gH;#V}`#>$kV?ROlrp2pv=@+`m#})t-w(v`?p)OI$K%G*BE_T z3qM|^Y#STXI&Q|bG2tqbWDA6j7~qjc4H4O$!M*i|l=l6(_lzlXN8e{=O4(1AzW&u+ zB$<6d5&{LScJM8|%S=gKo#~;OyvFdlqqDPVn_nXo4C%1z7-^i_c0)1ku@7A=u?pp^ zDa8cDxeHeW<@QdKhYx=K{0Y}vAavnNqCYx1n%?z1osohO0+XgnUwdKN{86g>o=?+% zO2B)Kh-1+=>$c^Q@r4z^Ur*+DYkqq*ccL3=`SgKTQ*9k7%p-ea7*9vXZ^2FEA%Vsaihf`cVVUjZ$c}%YvMS ziODX%X|nyB%S(R(_(I8Vv!NU2s%;ieD zT>ds|=mPIf9-g|8qNfw%zPw9M9`3l{)^4o0_`A8ezP!4oES}T5Mn!nNQo~y{srfdw zmj=9=xEH{y(VZbgh-f~xTmN9wf8roScTIA1j8}F$;tzM-piu+4Xn_K3sT75Umhg6q z*}c;_^+u@I%Y&~hkK(+X^MEoj9tK+cwTm`e9>A40A`meKS5^%Om$yn0{hd5 zhsviT7W&Ob2>1xT#HGhSYi&$q&9ZBVjMc31goBM71^S5b7ni#(H_cXm;oXsqs$~=B z?yQTDOcme(OoW|9D*FwPMN8zo_R?>cCejtSG>`|x;HKt&?3Mz_9$3QY$CDG!*rzSO zuHEINsBr_|xa%%Iwaya_0^8o8K|$qLEIU0~dM`*_$2mv*2XJCK)21`IfjN^C_#Z5q z|HZla|Fm4!UrP$vAAHH9g_$=;j5TY#f(u;-(SFV&px>^2AfA;S^LCfkURDdP zsoc#J7kG-KWgX8L*g-F@y7fq*1FkMGzl^*X52PE0zxzH#Ai^FLqFMKKOl2PdXxcE~ zth~P{e^Kp-=xjaZDfBBi8x}^P%A#QPQmm=Z2y(l-O7ue1rPP?*$?iszIt;{KYjfxpvSYJiDv5;Ui)Y+HyX5}SCqNpP^20ygovwl^jAdOcB}o-MC!LNsnGQXU3O z)}mtDJFxfEs=&wpyh{aZFeOQnDX{RVR3L6NG`_H0OQ<<)c?S98DWb^v-Vf?Oqa_HT zoYDc;S5ukf!Qv4YrZCqf_wAu47%N)_%w81KY?;9v`>y=Zz@x$57T=#Vk0IQ`{tirD zhsQxU*=@lWCv1Jkc-mKS|7Lf%GY8ZrF)%Ub9i;I zULV_h9@c|#Qw|&i2|0NW38B`u)jxQ&HEaj`bz@xPvCeX?dw#zgJ`4jXxfho5XEWwv zM>HheSXbAzS%Q~%S{L{>KIG<&vW_D-_1UaF8uSV$xrp^R9VYa{J@-`b%}YHFctt_iwlHod9MnHNF07D8)RlqwiXb`5 zC|mOo==rQ?e@RWeasKYOn<*#j!D0u#3FS9Vc##tYOyz7rBk$9``Q`Cx3MnQQYa5ld zEL|Z%R9KPSc1zpzf#h$4Yj0Z%>3qLY>o52IN;z0WaGzAQjFiu$fkxvqzt5L1a_46Z zG|q=6Gs6cW^SMjD)JsV8tUC$wrAEDg-V<_i}q$Y%WfMyJl}wHOHpe zwJ~%58%k$)!mUwuj6X8ulp;>TzjFV@qGE_VqQl$es~A>rPa(w2Fmtyy&9{vl|5(-G zO$q-Bo*Nz%Kkky(b?K~#uq-#{phy7gB(Dwe4AGIte~d>%DXTI*`^IiUv}&`gErNRB dZ$ll!#J-Xkl16pv1b7^x^i)m09QHE!zW~=>u#W%$ literal 11027 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 F{{xM{SsnlY diff --git a/api/tests/integration/tests/rendering/ref/mac/smarts/0171.png b/api/tests/integration/tests/rendering/ref/mac/smarts/0171.png index 18edf9affce95cc20dd846ec1733b6cc1096460a..4b74e232e6913692a35700c7ebe1b6eebcbd537b 100644 GIT binary patch literal 8689 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 literal 11851 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 UQ+vyH@KZP$2}SWD(f5A;3rCU=y8r+H diff --git a/api/tests/integration/tests/rendering/ref/mac/smarts/0188.png b/api/tests/integration/tests/rendering/ref/mac/smarts/0188.png index 93ac35f76c44c53cfbbc99f38949f1cc7b70fc15..4686828dd49d8ae737a533f3b00ce786e08e3172 100644 GIT binary patch literal 1430 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 VN7<=3@U04@rmX$AMDgXj{{XPAlG6YH diff --git a/api/tests/integration/tests/rendering/ref/win/smarts/0172.png b/api/tests/integration/tests/rendering/ref/win/smarts/0172.png index 530254289ab851fa365cf90613a3b0790081ca3e..01e1d351b0513eb0c1d31503495d13932b78db8e 100644 GIT binary patch literal 7535 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 literal 6609 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 b>>St_c^}@(xe$6fN<$}GzO5Bj-k15 zvyFa{8kUDo9095}x0ToTblJ0!h03m^mFFbH1kW4DEpRXx4jO(^3ii-5ODf`GQJqyS z!Z1a&aAj&W+Mh6mPwQ6G>8`=eg1qftdhJ^BETxejr24;!k!4o?m|QKjS3KQ!ZY8NG)F$kYele%Q!cq);dfjtFZxVx2&EfJ1PnC}?74CeLHJYw<20>&>_qH);J|YU@M% z-_{QGOToqN_0QI11d@f`yx_k?*e%%dnqJ5L5u19Z>7-AzLtM=v+gWW+Ix{~v>U)l9 zS>AP+9`Hz#2W_#l8N5Hw(^|t-7g8MDtE?=I#l~^;E!LDG_mh2c`52q9Xd5d=&;m(4 zBkj&n-n9fLgCGiBy+NvB##GWs+aIPRJc7o>l};0YT-d z6a-I^w&%LjSDTvD;C!s{$|rWsKD%f3ouT|>CJxb^4qxqC&8nMQTRs(&qobqq^MzFj zX3}ILaUqOI<%J8vjf0Oy7>i1@FCOd}^Qa_4!TD+eZD_mUT6;yZ>-&1eHnhKVIQ|EF zM8eSzLF*JHqOdRBDcPy+?G|iXP}uK{t)|~AoRSZpxqCws+R{FO)fnHMz4}p_ZE;G_H;+ocQ!9TJ_xz|G9wQzSpww!gR?o0}yFnRg z?(3^mo|TpL%&p<=bDo==#8<1^f_T4A^NC$;ZJ`vL5Z&74A|Xrra~IaNOpiuYkjNlnc(m4cfdYI+&2$B`cpGEv^|>Jj6L zW=e{R7;OSLG?5)H0k@UWCe}E1r>%B%>844=!|^y=EiPXtOqy!NXz{eEwl;e8;2;Rj z$B}T)e9lv(!Q&SmC4V1Y;yv9|7wgK2X?X32JBn@buI8)-^S83qc0(q0^)$jBjc^)_ zM%O#KoIJ~5-IQdGjMt}*=5P6vIt8)&I!d(07EKym*!|Q|8(s%$V{TJ z%C>D&1`{#BhJt7*%H)){qW_J`WT#;5r_*0`(RI>iRI|F|upB&fp)x0$^=)5fpX_3{ue21Ynf#c`iP)68is)Ek;FIKSx?;5oyBmRilENZ!@0BbxHtao;*`4~Cu zwz`s2F2%#5$Eh)!lo$DITdoHnpl?rz55Qv&6u`!eQlgn#YinOB{en=G~lV8m?$kO6P=t6GE^pN>Z+lwG$y^N#*h5?N;b z-xB_xM*e?^o+`}MKlLtCDIdnEfz}4k+WI7^72^;aT>!NN{**%cy4~>2Cw$uU02!Uu(r7$kB zFRqENPKatbpI@B=b+va#@+Y*dle_8jC|r2gQt~coElS04ougi{Qg6+S=7(_JsFwiz zJSo9BbElMb08$W_*_47v)#MceEN)G40usFHS)lHt8tbtSJtf`eeWG`NPPH_yT?w^~ zD&C&u#!PKncAvk__Wqm-aCK@s>m;u9R}qKq1BBM6)Q5;C*(Wz2d51@q`nxPr2EGm> z6Y|slS{O4ro0wjDc;U9$34>k_&C7Lagq$@70L-}OjsN&o-= From 3bb3e39ef4f22c88881b7dd4690f5674e5a1b5d8 Mon Sep 17 00:00:00 2001 From: Aliaksandr Dziarkach <18146690+AliaksandrDziarkach@users.noreply.github.com> Date: Wed, 20 Sep 2023 15:28:03 +0300 Subject: [PATCH 05/14] #1282 SMARTS load/save errors in Indigo. Fix Unit Tests --- .../integration/ref/formats/smarts.py.out | 2 -- api/tests/integration/tests/formats/smarts.py | 2 -- .../tests/rendering/ref/linux/smarts/0171.png | Bin 8689 -> 11304 bytes .../tests/rendering/ref/linux/smarts/0172.png | Bin 7535 -> 11027 bytes .../tests/rendering/ref/linux/smarts/0188.png | Bin 1430 -> 3760 bytes .../tests/rendering/ref/mac/smarts/0171.png | Bin 8689 -> 12193 bytes .../tests/rendering/ref/mac/smarts/0172.png | Bin 7535 -> 11851 bytes .../tests/rendering/ref/mac/smarts/0188.png | Bin 1430 -> 4047 bytes .../tests/rendering/ref/win/smarts/0171.png | Bin 8689 -> 7044 bytes .../tests/rendering/ref/win/smarts/0172.png | Bin 7535 -> 6609 bytes .../tests/rendering/ref/win/smarts/0188.png | Bin 1430 -> 2286 bytes .../molecule/src/smiles_loader.cpp | 7 +------ 12 files changed, 1 insertion(+), 10 deletions(-) diff --git a/api/tests/integration/ref/formats/smarts.py.out b/api/tests/integration/ref/formats/smarts.py.out index 02a711713e..46e73cc9c1 100644 --- a/api/tests/integration/ref/formats/smarts.py.out +++ b/api/tests/integration/ref/formats/smarts.py.out @@ -11,8 +11,6 @@ CC[C+5]CCCCC ([#8].[#6]).([#8].[#6]) is ok. smarts_in==smarts_out [!C!b] is ok. smarts_in==smarts_out [*] is ok. smarts_in==smarts_out -[*R] is ok. smarts_in==smarts_out -[*R0] is ok. smarts_in==smarts_out [*R1] is ok. smarts_in==smarts_out [*R3] is ok. smarts_in==smarts_out [r] is ok. smarts_in==smarts_out diff --git a/api/tests/integration/tests/formats/smarts.py b/api/tests/integration/tests/formats/smarts.py index 86be90f3fa..bc1fe6096d 100755 --- a/api/tests/integration/tests/formats/smarts.py +++ b/api/tests/integration/tests/formats/smarts.py @@ -100,8 +100,6 @@ def test_smarts_load_save(smarts_in): test_smarts_load_save("[!C!b]") test_smarts_load_save("[*]") -test_smarts_load_save("[*R]") -test_smarts_load_save("[*R0]") test_smarts_load_save("[*R1]") test_smarts_load_save("[*R3]") test_smarts_load_save("[r]") diff --git a/api/tests/integration/tests/rendering/ref/linux/smarts/0171.png b/api/tests/integration/tests/rendering/ref/linux/smarts/0171.png index 4b74e232e6913692a35700c7ebe1b6eebcbd537b..d72cc13a609f9903bbd3afd43d92db1750f9ddfb 100644 GIT binary patch literal 11304 zcmdUVbyVBYwkA?2#a)YpVl7bItvD2SEffn-id%6nrMSC8@dAP3R@|*f@#4V>w85dw z>Af?v=FM8~-F4qu^T&j&BxL26?6c37@B8+NP*;`5!KB1QLPEk(RFKg`LPCat*LfHy z;Bn`jzaw};H&>FELAw9@m)BmBh=fFkq$ne){VwY$+s>GHAf?L=oqUUtg@v9gFu3$b zVz?r&2K{NUnQWnr`Dcl0hhChIy`}G>oi%z^du^g9Nwhf&xHK@tPa`PtxjKShHU(3f z1fzV!N49~&fhL?}e@lvB210jX5 z{HxG~I%^IC*aHaSaG@?PE^c=smr7XPH;|&9KsW;#)h1Rd|J~WF-jEnJ2F9eygqp-% zD4)K*J~1&dTp$sKkTX+`S78eca;}QF_BlGi~>)m0g9Hw(O+xl68&cVwC zrU7?fk{2zx4P0D)ji&QF#G$mbwzf7iTi@B?H|q|qGHTS-(Q(e9PaV0tyK_eWq?Wrn zj9rQXr3)RmLH|MOzP>e-h^UZdAQXFd^1_JG%F0U28_`9{@3>ldq0Gd@w79Tv+D0%C zO{HgSTzPRoh|s5n!C<1IqBA5#J{Lb9J$jVIytBLOc`%0)d9>76&F7_#Hu?f1dkVXY zeZL!gxk0RD-$xQ**3*j%M_bz|N8G}K0(~Lk2pK38S}8$IO?`j4iFap`kym}~v@=Sf zrKKgjL>STA-~V1G<%`|COAZYcRV3P5d;45*zj9Z8ZDbyNDQjNfctb4{69;qiV8>Ii z?g%qJKE6kK2{}2cG?q~4Cx6!_zZ;K5w}QgL-@kqlW1{tNCMPGa1>Cn+RIn19TwKf_ z&pz@l!wU-w>qYdLpO)nM8>*`ZuE?vXsQCK&R-3dB>cl)2DkztHmMknHViEM=!v|fG z2$azmbpKe|o3X_&cBf-U^VOziW)Ls(va+)7f z9CzHru&j0XwZ@6c$jR*s;HAyYhj({N)#_JrB?2?Iq#oivRws#jSuEyr-is1R%03NY zX6wQZ{YEi{v|QjZIYHhTB=GioV8F+|jf4b3$V&y!gpv~GPD?pCIT@K=_*9|K*}j#7 zg9F$=N5|vcT`~d!=hF?@aV?NFVwKC?-5Y(8Wc$3V#F$1#Mr=aP8#0gurlO*vA4IbB z1P+6imX;6D(apnntjBxJ5$!GBXU}>#HOqLPK7Govl~q-_5&@reymXLxUboa!1RBl6#KqzJ8m+9X zoJz#fN-+5;SLjvGmF71zq#(Si4eI2w^$iRbE>AZJI2=2!ptiP84|+#OM?*tHzkmOJ zb};{Y*Yf1YSN+(AyO$vM8SpgA5X;T3TezhacmfW~O+FV6pbQ9MnZJ2MNkmlW4RLu0 zg5|PKrk}L3veKl(x9pkI&AGixGp+xnWW}#?6lj;5Ee}#-DH_PDt*-&6ePmnrKYqNv zEvc*Hu`WSZ(bOdL;%szW+es>`sw!^n85a+P@ozVMSm{qfW z=t&93-XQi0RiO(oD}6Zz!m3xTDQ90y4GmwawN2W)eQ9gUviadF``c-6n$hJa_~uA_ zSYzY;?e7UZT5;dY6SHYowfS)8&3;Izub*EX3^vG{)Y8)O{k#5#IRoLN6`5zOtWQb? z`ua|-p9%=1Vt@(|o5f8VaLYwnQ(OBL71n|b4czO7A~|TVxHM zK}ESb!zSlMQhNXXeR(2e4a0S3RD-$h&FnKa3w!&O@83(UY|~~d^b((W9L;Ro~8t{?gM z`OlA*$VLQ3L=s~$t~U?*qp2ue8RHeSSxHp<{lzsv5n!pTeA|VM@#;IMshHa?Cd)`JNnSQ>EdfP)E-W3tyiy9yce>wvVhaS z%)Xd^NJd8HZpQ<^=6w5|lP2uFDZ_6txLV|-&u(asoZ$XsA#Kcr-kdu?MFf1#*eoZ$qHE-e*T{JXu z3-)14O}AQ= z9O*+D2o*ucq;hPVdYKJMjZ`l>4rQ-v5=}3I6u{*w3&b8uCFDt8J-C?fR==*T< zzv0M(8D>6_BPJ*YdD)trFFEDDkJFA_fS=4Ac@(K61qUg#FjCAYhAFSTHUSB0@s1THI_mdLvLK zw!=G#QTh~m9%`g4lAZ-!(orwdry=9L8U+FO=6xlnJO;Y~Or|JjYs->tZh2XGVt!l3 z;($(2P*6bN;`;1hYHF(T`0Evx{s z;%ddc0IEf!{nGmY)l7bN5s}PZK^wJ8EG1e-4zCv4{q>&k+iP27?yg~1NRX*Oy+3Ej z+&6=N{3P7Og9tgUary4%f`^C4U=bd}5OfywV{3~SAU)KFxZ2vRc@>3XO@-(9pKrW@$VL32`Ba%TtRL7tnJ% zUVjbtyE%_nh865?O7wJhb8~a!OM!%2YOtr`f6Mu!U-9C2ZCA+9*jRZQ*vVkaE%lP4 z^hYS0jH{bl5nl~mb_gP55+g0B1I`8lIzE<&Srxw`TfmWqnofqAh6Y3_vlI&-U$V(W zAbx?~p96mP7<@{~m(b7C2Xb8T@$r|a0J8M;^|2c_)$q-~5i2)U=0%97Bb0KYUM+)d zxL6C&^YoUMMm6vyq@*nWoLf;=7NI<-E?^W##EI%R_1C}jw5=XT-H+lGWOfQ|w+ds$ zyCVRm{khheD=wqkO&>}l`mW2%+t_%y-uBz_^0ESkgsKcZfx&JsrJIPyp}w!LsA@F; z315TJP+V6%j5~Y{Ufnr5IEcIN6RYCUh^FQA5CD@~*5Q10Yz_8Hx~8VF-|C=an#{V| z+A@^g|H}cq&^%|Z=qXL$D-%IOS$NWrWs!C7$VjC7%*qNittOcYov7$zEJ0!6Uk_G9 z1OAA5eQ;|_X=xGWMkfOxZ|Sq*_V)JLy{xJ#?g2~tek8LtwjI}D(o-!#9_fL2-Dquv zfZPCN7E(ZqCm6(j}Efjkx!Y=H>~BiCP@k zx}l8I(y{o4U*3?ghNB#yQtKddM1Z!#%E7^m;?nFp|M}IH#lYNLLrY6WaS?bpR1U>A zta&X7fSjwVtCEtEv$M0ZGIkkuN=nM@_;Y%C6s0#L`q-mg7@+^r3yh78S#J0PTwK36 z9&MH;;`uX9e$Wu6dOa9_eObuxQlua3)Y6jAa+9-T`&mk3qd+_He0MkflP4kKsn|=l zvbwsYRWclB>x1!6>iygHb=gR7E-yphzeh(ytDReCVq|pQZ+1T*t?*(YjWlTW{@73unT(-QpgQJ%kt#XHk)aO@k5-Bj*d$=V7PE#X_w6zU?N-6FQ}!% zadlRvR0abBpNXEW|DKSrekJwVFHf3LPgfT-#%XCBUQ$w05Jo?m)4jaBL|tQF85{dw zZIk7Eqp-sJ5^(SDZ-$bFEM%$uH$AAlHIf?Eg}4v}7;`;LPwW8M6wMX~4L%|w0^nD~ z`FR6Cay&eV3Jic60)y7q*GtrLccP-IFRotV|U5*Ty&{=iCFyB!HS zIgTNKnwDpQgo1*iV1(ot3`u?oXv^{Xx}+LHK=9o!b_yQ*C!`!Ex93ZacE(+kl;_85 zrmtQ_<8$-z6<ILBOGt$V4^76%>&w!5weFOE`asb;%WL87?KPuCHiOxm#+_=>9t}2K> zC>)1MZtXD-PaSw&*APuM&YbHTe1=WIEo04SFR7|Jp6S>T z(S*b^De}*+DagxvJzb<&DU44@sHv|{PD~scpbA6;8wqkQ%rN?=Pa|*#qwrmvoW8et z@$4Ro(kQs0`}o`d)A)yL8npHFI855o_{t{N)+9tks7CYHC&xf%Y7heCnpL-wPDz}r zP%heBB^wQ6|L6B&rBv)}zLl@p%nc0^cfcDA+@L`1(g`mm&Tv3?*en`Z(>ACubD2rC&CR8&)A zCQt-C^fmktuIlPq2P(>*=z0VRI{D*7KD#-(JodfSb{{3B$cTuc)6D_vi5!)O;>f(y zodNeJCr)5d%xXD@i(euG4w_=3^x4i4h|!S|5jXgx#Ql{T;YR{^;0JP*8!nWpa5HjL zhrB61IORo+T~fga>OU1B3=*Ii0j;PnMpaAe8vxik0`3QHZlr zDna}Md8p!n=!1fX4{3d0!`tdH9~>09aLmx`-0K1OakuQh4;m}3d+j%KuAz=7pUs;2P&O69`e0->NA9%jN#Ka5^3E3-%kSVCCsR3+X+PbPI zJ}2kr_O|RAD;8EH39IhR>@0<_om^1RN`dk7<8s!my;nT}cV~LhzxFoEJeM8CyS_ISuGv1qJlfpI6Ps@<| zN0u@^^1VBGz2a*}^_9Yza5S%>L6`4EKWG`C#u_CC;o6~7 zQ@mO(_@CNYA{Nljjus{E5JYpY&CE2^)$=k5Y4#5eHa9ncO0d7b|Hj^)Jzl~4Y=8UU zpcSP1NGiv{oeNv&%)|BCGOPbWG%H`S42kIw^1F5uBdeZ;o&byqqDuEe6#$I~V&Yx{ z0;ucR%+!h3o zZa4q=>}V-xczcb3-drK|^}KW3 z)+SOSJuZt6k(?H?xefx=ZsGxU*!)lGNf__+F_gJE_B zSC&3LJ)Pn}O(|I_$JD!6_dq#g8-TxCHz~H>-ojpSRfobFR-kv)@5#u^16H|y`Tn2Un^=3$`_9fz|7unIX>Snj0BO?E z{QzJn3+4aP;nwIu#W_7ab)!3YA|F%wChsCB>cfXgy*-2jI>_|9{fcTJ{`mR&A_${k zMCqUs#^|%r2s*tsG^8wf5zZI#`Qw~}^U>m$%boLs`B;;YGP7S_({kjMZ z%mt$A<7Irv48W{lQ_6;CW@h5>{W0=ETZaqakweZTpQi%JF++YRoYwyXA1LsEW|d(k zrKBXNsp8?`jeCiHzoHLSR#tYi*>#zggQ{z4c3)K$v1gB9lfM`8IcJ-oD(=aU)RPry zELCR#EGgXa`6_&6VBq0BHYO%v=~j0bRnC{>n^PL@9K3%oeUJCfyg}YX`5YAX(_1_dv{OIfqPN^+cX4M zl}Wo{;d`(#)4T1^F-muHpqgzC#LBm|UF~ER7Z+C&figfuNN8?h0RYTIE)k5Y>^~}X z2sWbeYp2crXwZ29ipi~``}FA(7Z+DK8NFxMz(BZ!lI7d4!^0n4Q`eUo9TP|HPI~YR zll4eAQPD^9lnTR)*nl#H_a~C0gYG_&r=|#F7xI)|Qri(Mq{b5n-XBHtzH*zsf5s-CSJ@qciKovm^p?*sR>0oXGj! zB&DX3*|lu^OMNaXK2vgD4y%#;za!A;SN;0}-CIBj{ttn!0F|x(KauBb$J9B}koyP6 z^6Z|>un%v${3@_G>*nR>UtC(+lm=aDXI^@)=RXtYSZatv|2=U|5Lf+!hJa&;x|UX9 zt@rUtYwBR>LH{&H8uHh)vAhvr1C4}#*78`$Lp)f_bCWi5T5c{bF9bYZm=R$S86CZy z6hE?Uxy&vuZjxONT0&`QsY)h)@uyENixhZQS62)QWNOJ;4_P12O%=)u_359jgH+8j z2YRDrRU`oSS0C~uI)L_@&!uO{UezMm59GW8PA)DDeS-xci$yJ9w}?uu&`0cp%kgGc zjayjtvh#VcT{ru2=ske+s+yjXLJIp~2Ff)`9dj1wNz)@gx3;tm49cp|Tg021no5ld zr02uUdfuP1fLIZaXINuH7`+G4i-#j--8!9U)Dhh32P^E}h;B|wmXRX#+41jy+mO336CV_#$ zW!Ter1^+)+*7EWLb1c}{*u=0-tA9_3>nR=WBFEn%1#o6%dOG-<>+bk=QaX?kRFjgD zCL>#H%FD|YGDsMMpjW@P1tEz;pOn+Np`&R)+;8yrECPTNShU*aMFe4pR{#ul?cHXy z?!ILorp`c~WXQXi>5w!qXcNpIFDVTf{5_-QGQkSuOU)Q$9`$gI^dPRh1@>pe9|5QM zfv7R-8T3XcMeO$cTxk`ug6q+yd*lsAQSb~pF-yS#bpm6ApFe*Bo(r^2HAO|QKex^O zZ|jE-Uuj!CD#n6Pk$4p&A-1`wdZ)GzhS%cfZ z1_uW}e86Zn29ge!c`ul*$wgE41=y~~t=jqPL-O?}kEjdcVj?s(G`?1MmX~9a;X`^q zLSH^93Ma!=6Z;!rAkc(oB^{-tg7xz( zJlL97!-_-J&B1zf+me44LQ$VH?ttDOg5Icb0n5Y)Y}@`T5~ZgPP0M*QJgUTdz|34C z(A=AyOhf>$U?8a z3}lCfN@Ixm-|9C$&dki@(60%6Ys-{6VleglG#9W_&}}gQpsKfDYQUl5C$AZDy8q*s zQwS6@1~I1}FA|uZ6d{5!RR^Vb0Vp#>#hMmUkiduzq<}}N+M~;%+xixx2Fe{<5mU(l&k3j3VbQV@V)MMIwlSdBahymdtut(pu%ks9bv@A#s=wgf7D}nbef!Tr#g41L(p;dolppNAdGm&zhmcWf#iG+kT_4h15 z_!C~l~)ZBUlk z7{P<3HGSwLaH5N=D~K&4L&J}ekrw9W3RYkYu+{hrq9z^81^y2`oqCK-mM-5lrIR&*qF)S6305#(>mCMPXkX zbH6PiF)%QwCv2Yy2N-+u`n24rR{wBwlZcX%l9;&HFg!CUskdww@W{%Ye0?_P(LTVH zLKi-T5Xt-!<@9b2MI;`&aM1sv@EsZz98>E6C#6PQUte#014F1iqym(}S!M=?I6P!` zY-(X`cXUB0#=v)4z2)4B!hYSxVruZ9UYt)@KaM$qoSfxQW^o=7EFo{!6}FQe96r{R=v-? zLbWj1HBcG(hAq0VyRf5(sxBfN#N4{f+JP`9e^Ppo!fu3}9Y05(IQ01O;}e`?K@qcH zih3SE+k}~d=Unzv0|Sw!NxL#%yD6V+8F51wy%xaS*WH~@Y7op*R_}Xjz>$%Ee4GW{ zxgXK?5iBcYD<~JJ8)+FCU_@VD{!DteSVy5)llw!n)4G(jwfrN_5RbwqnUW8CIUVBj zTT*WC?%XqV=RW-yi)B(ydkv4OPXV)7-`u0aL$_7F`XeMB8(QHe3O8Qt9nz7Jks-QG zFw?awee0yDtsOc~0!|lvo%FIL`3sh&{RSR;JpdY=aK}GCPw`&p-3gt)HV{?8!~%U( zF%`^xZf-#7p7Xu+f4~jzY*_I@V3$M^6&m|2L0FU?=8dHGm2#Rieo!

Ke0? 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 diff --git a/api/tests/integration/tests/rendering/ref/linux/smarts/0188.png b/api/tests/integration/tests/rendering/ref/linux/smarts/0188.png index 4686828dd49d8ae737a533f3b00ce786e08e3172..aaecddee55e8d3eb053adf4ddfa190dd19dc8ee0 100644 GIT binary patch literal 3760 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 F{{xM{SsnlY literal 1430 zcmcgs`7_%I6#rsqovrFb$JGi|s??DPZA#mXBaJwV(9~7eqE+fD8?A1&6}sI>i=>pQ zV`yX@OA-+pWZY4VC_!5iMAp^T61B3~{b~P#o%ea~^L}{qnfc6o=H+^MxT>q@r~m+< zj&wu#$T(cqVF%@9v%+^_TSiLZC|3j^{in)VHADbVL?IEEuBMl)mW0IcUG#c84Ssfv z;8YrBb3>H|u|92)5gauh2lBA+a*siiW!&=W76M+;j{s>OCb^*(Yi{}Da% z8z)??>p8*7>S5%ExWI<6LmE)dt#Q-uUnv)6>dXqkQbA9_P*&Ng&2i5*<}=T<8U^!8 z@ws9b_)?nUv;q(D07?i&8)LMTd5ErH-9E% zAoWzC+#9@huvWSzTy~Rco+@faJW{xze;y4?Kgj1@q9 zQM=8tnFEHMxxYUm36rLZ8OBJPk!1C}80!AxTG0t7_d76m6Jm;OP#)yMdR>m(rGiQX z*cuL>`S@|&n~*F#Ac115R*Oi3LcPK#Jz(*#nMMuZAkfE<>H0=?Pia!EQaHCt$h9PoKIN^15r|~w{)?t~TcUx(SiJuWL3H-U(`oX&7ZC#M|sau1id2tD7 za&@kw56!kloMBm{bwsiD>Og845rge>voT7wi}!4K;MLcm^J=t#CG(-d-)FP$p>=h2 z7i)})?OD4zFYy*QaBK_tZpbidnOW^|gP7f^;3_VMjW0DeU*EVFAFKLr!2Xl9|7YEp z*EKT~sV-mw9BE4Gf=2csZU-nYd4jV}xqt~`{YELOOpk|euH?XimDBVR>5|u4l)2=E zwdq_zK-EC2gFS0!q3Y%K^Q|L5Br938$nxxzu*GEP9)FX~?o)G#GGz~~;PQw1XaV_d zo1eAvhukI$2cYQ5tt2#&Y7rJuy|aPrX6l34E9mt@ujFqptdTV(!fjW88e)J?eJqDy zc9*fX?e5Rd8BE4LsOrBG`P~!feZ~q!1jAF0UKB|wBJQ*T@a03fCJBpCdat!+1+KW3 zOOM{!gIe(=YXcIw^|*QW21l~VGxcBxrxUxV@{K@Z;}~OiEA7Rq(;QA50q7gr-xxo& z-d;;73YPBp-`q~PgT?pm)fJG+WAM&xKF3QHZf6Pu?!XgQP6APB^BChy7cYn$J$=#m zet(XzzE_HaI=9o|8M{TAn!N<-n_!;BMRLV#*r;pAUm}=MI(SSmG$YZO&d+E+&!WqR zeiAOoPB6B!J&bIbfDC!j`}%`72vkANIITk(*gmc-XuKpAC!&ICC0X z!pGgDT5sz@)Fvh>_S>$o*&tvjFQM`YG(w!}05=6=SY{3BFuRuJ12o*MLoyvk__Piq b>>St_c^}27Hdq(mg7!G&~pr!<_& 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 i0;Ev!e}4H;bB9VHuoCqOTe$?_CL}AVAWznOW@ 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 UQ+vyH@KZP$2}SWD(f5A;3rCU=y8r+H literal 7535 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 diff --git a/api/tests/integration/tests/rendering/ref/mac/smarts/0188.png b/api/tests/integration/tests/rendering/ref/mac/smarts/0188.png index 4686828dd49d8ae737a533f3b00ce786e08e3172..93ac35f76c44c53cfbbc99f38949f1cc7b70fc15 100644 GIT binary patch literal 4047 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 VN7<=3@U04@rmX$AMDgXj{{XPAlG6YH literal 8689 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 diff --git a/api/tests/integration/tests/rendering/ref/win/smarts/0188.png b/api/tests/integration/tests/rendering/ref/win/smarts/0188.png index 4686828dd49d8ae737a533f3b00ce786e08e3172..715ea06268482f58f664259cf800f4f9a2e07304 100644 GIT binary patch literal 2286 zcmc&$*H_bt8vKbUO?s1NBy^>@(xe$6fN<$}GzO5Bj-k15 zvyFa{8kUDo9095}x0ToTblJ0!h03m^mFFbH1kW4DEpRXx4jO(^3ii-5ODf`GQJqyS z!Z1a&aAj&W+Mh6mPwQ6G>8`=eg1qftdhJ^BETxejr24;!k!4o?m|QKjS3KQ!ZY8NG)F$kYele%Q!cq);dfjtFZxVx2&EfJ1PnC}?74CeLHJYw<20>&>_qH);J|YU@M% z-_{QGOToqN_0QI11d@f`yx_k?*e%%dnqJ5L5u19Z>7-AzLtM=v+gWW+Ix{~v>U)l9 zS>AP+9`Hz#2W_#l8N5Hw(^|t-7g8MDtE?=I#l~^;E!LDG_mh2c`52q9Xd5d=&;m(4 zBkj&n-n9fLgCGiBy+NvB##GWs+aIPRJc7o>l};0YT-d z6a-I^w&%LjSDTvD;C!s{$|rWsKD%f3ouT|>CJxb^4qxqC&8nMQTRs(&qobqq^MzFj zX3}ILaUqOI<%J8vjf0Oy7>i1@FCOd}^Qa_4!TD+eZD_mUT6;yZ>-&1eHnhKVIQ|EF zM8eSzLF*JHqOdRBDcPy+?G|iXP}uK{t)|~AoRSZpxqCws+R{FO)fnHMz4}p_ZE;G_H;+ocQ!9TJ_xz|G9wQzSpww!gR?o0}yFnRg z?(3^mo|TpL%&p<=bDo==#8<1^f_T4A^NC$;ZJ`vL5Z&74A|Xrra~IaNOpiuYkjNlnc(m4cfdYI+&2$B`cpGEv^|>Jj6L zW=e{R7;OSLG?5)H0k@UWCe}E1r>%B%>844=!|^y=EiPXtOqy!NXz{eEwl;e8;2;Rj z$B}T)e9lv(!Q&SmC4V1Y;yv9|7wgK2X?X32JBn@buI8)-^S83qc0(q0^)$jBjc^)_ zM%O#KoIJ~5-IQdGjMt}*=5P6vIt8)&I!d(07EKym*!|Q|8(s%$V{TJ z%C>D&1`{#BhJt7*%H)){qW_J`WT#;5r_*0`(RI>iRI|F|upB&fp)x0$^=)5fpX_3{ue21Ynf#c`iP)68is)Ek;FIKSx?;5oyBmRilENZ!@0BbxHtao;*`4~Cu zwz`s2F2%#5$Eh)!lo$DITdoHnpl?rz55Qv&6u`!eQlgn#YinOB{en=G~lV8m?$kO6P=t6GE^pN>Z+lwG$y^N#*h5?N;b z-xB_xM*e?^o+`}MKlLtCDIdnEfz}4k+WI7^72^;aT>!NN{**%cy4~>2Cw$uU02!Uu(r7$kB zFRqENPKatbpI@B=b+va#@+Y*dle_8jC|r2gQt~coElS04ougi{Qg6+S=7(_JsFwiz zJSo9BbElMb08$W_*_47v)#MceEN)G40usFHS)lHt8tbtSJtf`eeWG`NPPH_yT?w^~ zD&C&u#!PKncAvk__Wqm-aCK@s>m;u9R}qKq1BBM6)Q5;C*(Wz2d51@q`nxPr2EGm> z6Y|slS{O4ro0wjDc;U9$34>k_&C7Lagq$@70L-}OjsN&o-= literal 1430 zcmcgs`7_%I6#rsqovrFb$JGi|s??DPZA#mXBaJwV(9~7eqE+fD8?A1&6}sI>i=>pQ zV`yX@OA-+pWZY4VC_!5iMAp^T61B3~{b~P#o%ea~^L}{qnfc6o=H+^MxT>q@r~m+< zj&wu#$T(cqVF%@9v%+^_TSiLZC|3j^{in)VHADbVL?IEEuBMl)mW0IcUG#c84Ssfv z;8YrBb3>H|u|92)5gauh2lBA+a*siiW!&=W76M+;j{s>OCb^*(Yi{}Da% z8z)??>p8*7>S5%ExWI<6LmE)dt#Q-uUnv)6>dXqkQbA9_P*&Ng&2i5*<}=T<8U^!8 z@ws9b_)?nUv;q(D07?i&8)LMTd5ErH-9E% zAoWzC+#9@huvWSzTy~Rco+@faJW{xze;y4?Kgj1@q9 zQM=8tnFEHMxxYUm36rLZ8OBJPk!1C}80!AxTG0t7_d76m6Jm;OP#)yMdR>m(rGiQX z*cuL>`S@|&n~*F#Ac115R*Oi3LcPK#Jz(*#nMMuZAkfE<>H0=?Pia!EQaHCt$h9PoKIN^15r|~w{)?t~TcUx(SiJuWL3H-U(`oX&7ZC#M|sau1id2tD7 za&@kw56!kloMBm{bwsiD>Og845rge>voT7wi}!4K;MLcm^J=t#CG(-d-)FP$p>=h2 z7i)})?OD4zFYy*QaBK_tZpbidnOW^|gP7f^;3_VMjW0DeU*EVFAFKLr!2Xl9|7YEp z*EKT~sV-mw9BE4Gf=2csZU-nYd4jV}xqt~`{YELOOpk|euH?XimDBVR>5|u4l)2=E zwdq_zK-EC2gFS0!q3Y%K^Q|L5Br938$nxxzu*GEP9)FX~?o)G#GGz~~;PQw1XaV_d zo1eAvhukI$2cYQ5tt2#&Y7rJuy|aPrX6l34E9mt@ujFqptdTV(!fjW88e)J?eJqDy zc9*fX?e5Rd8BE4LsOrBG`P~!feZ~q!1jAF0UKB|wBJQ*T@a03fCJBpCdat!+1+KW3 zOOM{!gIe(=YXcIw^|*QW21l~VGxcBxrxUxV@{K@Z;}~OiEA7Rq(;QA50q7gr-xxo& z-d;;73YPBp-`q~PgT?pm)fJG+WAM&xKF3QHZf6Pu?!XgQP6APB^BChy7cYn$J$=#m zet(XzzE_HaI=9o|8M{TAn!N<-n_!;BMRLV#*r;pAUm}=MI(SSmG$YZO&d+E+&!WqR zeiAOoPB6B!J&bIbfDC!j`}%`72vkANIITk(*gmc-XuKpAC!&ICC0X z!pGgDT5sz@)Fvh>_S>$o*&tvjFQM`YG(w!}05=6=SY{3BFuRuJ12o*MLoyvk__Piq b>>St_c^}& atom_str, bool first_in_brackets, _Ato int rc = scanner.readUnsigned(); if (rc == 0) - if (smarts_mode) - subatom = std::make_unique(QueryMolecule::ATOM_SSSR_RINGS, 0); - else - subatom = std::make_unique(QueryMolecule::ATOM_RING_BONDS, 0); + subatom = std::make_unique(QueryMolecule::ATOM_RING_BONDS, 0); else subatom = std::make_unique(QueryMolecule::ATOM_SSSR_RINGS, rc); } - else if (smarts_mode) - subatom = std::make_unique(QueryMolecule::ATOM_SSSR_RINGS, 1, 100); else subatom = std::make_unique(QueryMolecule::ATOM_RING_BONDS, 1, 100); } From 085b10b56d40c3fa714ef0b0907512bccce4445f Mon Sep 17 00:00:00 2001 From: Aliaksandr Dziarkach Date: Wed, 20 Sep 2023 20:58:02 +0300 Subject: [PATCH 06/14] #1282 SMARTS load/save errors in Indigo. Add code to see failed UT logs --- .github/workflows/indigo-ci.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/indigo-ci.yaml b/.github/workflows/indigo-ci.yaml index 4a7a05e49b..571b9a2bc6 100644 --- a/.github/workflows/indigo-ci.yaml +++ b/.github/workflows/indigo-ci.yaml @@ -411,6 +411,8 @@ jobs: INDIGO_PATH: ${{ github.workspace }}/dist run: | java -Xss4m -jar jython.jar api/tests/integration/test.py -t 1 -j junit_report.xml + - name: Show diff + cat api/tests/integration/out/rendering/*.diff - name: Publish Test Report if: always() uses: mikepenz/action-junit-report@v3 From ca0ea716b6291f4043540761a430c6d2a6f613f1 Mon Sep 17 00:00:00 2001 From: Aliaksandr Dziarkach Date: Wed, 20 Sep 2023 21:04:13 +0300 Subject: [PATCH 07/14] #1282 SMARTS load/save errors in Indigo. Add code to see failed UT logs --- .github/workflows/indigo-ci.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/indigo-ci.yaml b/.github/workflows/indigo-ci.yaml index 571b9a2bc6..6251459338 100644 --- a/.github/workflows/indigo-ci.yaml +++ b/.github/workflows/indigo-ci.yaml @@ -412,6 +412,7 @@ jobs: run: | java -Xss4m -jar jython.jar api/tests/integration/test.py -t 1 -j junit_report.xml - name: Show diff + run: cat api/tests/integration/out/rendering/*.diff - name: Publish Test Report if: always() From 422fc12d152b521b2e42b58ead8094b0beabedfa Mon Sep 17 00:00:00 2001 From: Aliaksandr Dziarkach Date: Wed, 20 Sep 2023 21:44:27 +0300 Subject: [PATCH 08/14] #1282 SMARTS load/save Run another workflow. --- .github/workflows/indigo-ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/indigo-ci.yaml b/.github/workflows/indigo-ci.yaml index 6251459338..a32f9a7077 100644 --- a/.github/workflows/indigo-ci.yaml +++ b/.github/workflows/indigo-ci.yaml @@ -412,7 +412,7 @@ jobs: run: | java -Xss4m -jar jython.jar api/tests/integration/test.py -t 1 -j junit_report.xml - name: Show diff - run: + run: | cat api/tests/integration/out/rendering/*.diff - name: Publish Test Report if: always() From 0a574d4fca4ce1f0e467df7bc643765ebdb05881 Mon Sep 17 00:00:00 2001 From: Aliaksandr Dziarkach <18146690+AliaksandrDziarkach@users.noreply.github.com> Date: Wed, 20 Sep 2023 22:42:29 +0300 Subject: [PATCH 09/14] #1282 Revert actions Add log to test.py --- .github/workflows/indigo-ci.yaml | 3 --- api/tests/integration/test.py | 2 ++ 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/indigo-ci.yaml b/.github/workflows/indigo-ci.yaml index a32f9a7077..4a7a05e49b 100644 --- a/.github/workflows/indigo-ci.yaml +++ b/.github/workflows/indigo-ci.yaml @@ -411,9 +411,6 @@ jobs: INDIGO_PATH: ${{ github.workspace }}/dist run: | java -Xss4m -jar jython.jar api/tests/integration/test.py -t 1 -j junit_report.xml - - name: Show diff - run: | - cat api/tests/integration/out/rendering/*.diff - name: Publish Test Report if: always() uses: mikepenz/action-junit-report@v3 diff --git a/api/tests/integration/test.py b/api/tests/integration/test.py index 66d765239f..0140c7b4a1 100644 --- a/api/tests/integration/test.py +++ b/api/tests/integration/test.py @@ -346,6 +346,8 @@ def run_analyze_test(args): f.close() with stdout_lock: sys.__stdout__.write(out_message + "\n") + if test_status == "[FAILED]": + sys.__stdout__.write(msg + "\n") test_result = (root, filename, test_status, msg, tspent) return test_result From a62867b96050d95c8246a56e2ad2505a342abab2 Mon Sep 17 00:00:00 2001 From: Aliaksandr Dziarkach <18146690+AliaksandrDziarkach@users.noreply.github.com> Date: Wed, 20 Sep 2023 23:44:40 +0300 Subject: [PATCH 10/14] #1282 Add file to logs --- api/tests/integration/common/rendering/__init__.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/api/tests/integration/common/rendering/__init__.py b/api/tests/integration/common/rendering/__init__.py index 5b80150aea..fd81646747 100644 --- a/api/tests/integration/common/rendering/__init__.py +++ b/api/tests/integration/common/rendering/__init__.py @@ -1,6 +1,7 @@ import os import platform import sys +import base64 from env_indigo import getPlatform, isIronPython, isJython @@ -204,14 +205,17 @@ def checkBitmapSimilarity(filename, ref_filename): return "%s rendering status: Problem: %s" % (filename, str(e)) channels = ["red", "green", "blue", "alpha"] + with open("%s/out/%s" % (dirname, filename), "rb") as file: + binary_data = file.read() for i, result in enumerate(results): if result > (HASH_SIZE**2) * 0.1: return ( - "%s rendering status: Problem: PNG similarity is %s for %s channel" + "%s rendering status: Problem: PNG similarity is %s for %s channel\n%s\n" % ( filename, round(1 - (result / float(HASH_SIZE**2)), 2), channels[i], + base64.b64encode(binary_data), ) ) From cbf0cb0576516dff6344c338bc0b0dd85a74e5ad Mon Sep 17 00:00:00 2001 From: Aliaksandr Dziarkach <18146690+AliaksandrDziarkach@users.noreply.github.com> Date: Wed, 20 Sep 2023 23:57:23 +0300 Subject: [PATCH 11/14] #1282 Fix format --- api/tests/integration/common/rendering/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/tests/integration/common/rendering/__init__.py b/api/tests/integration/common/rendering/__init__.py index fd81646747..a72ccd4065 100644 --- a/api/tests/integration/common/rendering/__init__.py +++ b/api/tests/integration/common/rendering/__init__.py @@ -1,7 +1,7 @@ +import base64 import os import platform import sys -import base64 from env_indigo import getPlatform, isIronPython, isJython From 460ac3816c62a486b99f6f5b10fc01356b8fadb1 Mon Sep 17 00:00:00 2001 From: Aliaksandr Dziarkach <18146690+AliaksandrDziarkach@users.noreply.github.com> Date: Thu, 21 Sep 2023 12:49:28 +0300 Subject: [PATCH 12/14] #1282 SMARTS load/save errors in Indigo. Fix UTs --- .../tests/rendering/ref/linux/smarts/0190.png | Bin 5561 -> 5225 bytes .../tests/rendering/ref/mac/smarts/0190.png | Bin 6277 -> 5883 bytes .../tests/rendering/ref/win/smarts/0190.png | Bin 3156 -> 2997 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/api/tests/integration/tests/rendering/ref/linux/smarts/0190.png b/api/tests/integration/tests/rendering/ref/linux/smarts/0190.png index 0e59d707d1f1fb3a31aef5b9d8c9e7fae8b2825c..cbece9861c30f06ac683ede780af2b34ae27989e 100644 GIT binary patch literal 5225 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 literal 5561 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

*Mp(f~qf$e$LL2@uM9Ue@NW6joS2I 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 Date: Thu, 21 Sep 2023 13:48:40 +0300 Subject: [PATCH 13/14] #1282 SMARTS load/save errors in Indigo. Fix UT --- core/indigo-core/molecule/src/query_molecule.cpp | 1 - core/indigo-core/molecule/src/smiles_saver.cpp | 1 - 2 files changed, 2 deletions(-) diff --git a/core/indigo-core/molecule/src/query_molecule.cpp b/core/indigo-core/molecule/src/query_molecule.cpp index a26c902040..17ae527d92 100644 --- a/core/indigo-core/molecule/src/query_molecule.cpp +++ b/core/indigo-core/molecule/src/query_molecule.cpp @@ -1203,7 +1203,6 @@ bool QueryMolecule::Node::hasOP_OR() return true; } case OP_NOT: - // return children[0]->hasOP_OR(); return false; default: return false; diff --git a/core/indigo-core/molecule/src/smiles_saver.cpp b/core/indigo-core/molecule/src/smiles_saver.cpp index dc8a746b21..18fef61047 100644 --- a/core/indigo-core/molecule/src/smiles_saver.cpp +++ b/core/indigo-core/molecule/src/smiles_saver.cpp @@ -1188,7 +1188,6 @@ void SmilesSaver::_writeSmartsBond(int idx, QueryMolecule::Bond* bond, bool has_ { if (i > 0) writeAnd(_output, bond, has_or_parent); - //_output.writeChar(has_or_parent ? '&' : ';'); _writeSmartsBond(idx, (QueryMolecule::Bond*)bond->children[i], has_or_parent); } break; From d911bb063d6ce66afc73f5fd874657af1f9ea549 Mon Sep 17 00:00:00 2001 From: Aliaksandr Dziarkach Date: Thu, 21 Sep 2023 20:13:51 +0300 Subject: [PATCH 14/14] #1282 SMARTS load/save errors in Indigo. Fix UT --- .../ref/basic/load_structure.py.out | 2 +- .../integration/ref/formats/smarts.py.out | 12 ++-- api/tests/integration/tests/formats/smarts.py | 8 ++- core/indigo-core/common/base_cpp/output.h | 17 +++--- core/indigo-core/common/gzip/gzip_output.h | 2 +- .../indigo-core/molecule/src/smiles_saver.cpp | 58 +++++++++++-------- core/indigo-core/tests/tests/smarts.cpp | 10 ++-- 7 files changed, 61 insertions(+), 48 deletions(-) diff --git a/api/tests/integration/ref/basic/load_structure.py.out b/api/tests/integration/ref/basic/load_structure.py.out index 32a7d94091..cd0a855d06 100644 --- a/api/tests/integration/ref/basic/load_structure.py.out +++ b/api/tests/integration/ref/basic/load_structure.py.out @@ -26,7 +26,7 @@ C1C=CC=CC=1*>>C1C=C(*)C=CC=1 C1C=CC=CC=1* |$;;;;;;A$| (** #8 **): Smarts, (smarts parameter): -[#8AH]-[c]1-,:[c]-,:[c]-,:[c]-,:[c]-,:[c]-,:1 +[O;H]-[c]1-,:[c]-,:[c]-,:[c]-,:[c]-,:[c]-,:1 (** #9 **): Smarts, (query parameter): [OH]C1:C:C:C:C:C:1 diff --git a/api/tests/integration/ref/formats/smarts.py.out b/api/tests/integration/ref/formats/smarts.py.out index 46e73cc9c1..8c9ad54b94 100644 --- a/api/tests/integration/ref/formats/smarts.py.out +++ b/api/tests/integration/ref/formats/smarts.py.out @@ -1,18 +1,18 @@ **** Load and Save as Query **** -[#6]-[#6]-[#6+5]-[#6]-[#6]-[#6]-[#6]-[#6] +[#6]-[#6]-[#6;+5]-[#6]-[#6]-[#6]-[#6]-[#6] CC[C+5]CCCCC **** Load and Save as Molecule **** -[#6]-[#6]-[#6+5]-[#6]-[#6]-[#6]-[#6]-[#6] +[#6]-[#6]-[#6;+5]-[#6]-[#6]-[#6]-[#6]-[#6] CC[C+5]CCCCC **** Load and Save as Query with not list **** [#6]-[#6]-[!#5!#6!#7]-[#6]-[#6]-[#6]-[#6]-[#6]-[#6] **** Load and Save as Query with component-level grouping **** ([#8].[#6]) is ok. smarts_in==smarts_out ([#8].[#6]).([#8].[#6]) is ok. smarts_in==smarts_out -[!C!b] is ok. smarts_in==smarts_out +[!C;!b] is ok. smarts_in==smarts_out [*] is ok. smarts_in==smarts_out -[*R1] is ok. smarts_in==smarts_out -[*R3] is ok. smarts_in==smarts_out +[*;R1] is ok. smarts_in==smarts_out +[*;R3] is ok. smarts_in==smarts_out [r] is ok. smarts_in==smarts_out [r0] is ok. smarts_in==smarts_out [r1] is ok. smarts_in==smarts_out @@ -24,3 +24,5 @@ CC[C+5]CCCCC [#6]@[#6] is ok. smarts_in==smarts_out [#9]/[#6] is ok. smarts_in==smarts_out [#9]/[#6]=[C]/[#17] is ok. smarts_in==smarts_out +[O;H] is ok. smarts_in==smarts_out +[!O;H] is ok. smarts_in==smarts_out diff --git a/api/tests/integration/tests/formats/smarts.py b/api/tests/integration/tests/formats/smarts.py index bc1fe6096d..b421fd6801 100755 --- a/api/tests/integration/tests/formats/smarts.py +++ b/api/tests/integration/tests/formats/smarts.py @@ -98,10 +98,10 @@ def test_smarts_load_save(smarts_in): test_smarts_load_save("([#8].[#6])") test_smarts_load_save("([#8].[#6]).([#8].[#6])") -test_smarts_load_save("[!C!b]") +test_smarts_load_save("[!C;!b]") test_smarts_load_save("[*]") -test_smarts_load_save("[*R1]") -test_smarts_load_save("[*R3]") +test_smarts_load_save("[*;R1]") +test_smarts_load_save("[*;R3]") test_smarts_load_save("[r]") test_smarts_load_save("[r0]") test_smarts_load_save("[r1]") @@ -113,3 +113,5 @@ def test_smarts_load_save(smarts_in): test_smarts_load_save("[#6]@[#6]") test_smarts_load_save("[#9]/[#6]") test_smarts_load_save("[#9]/[#6]=[C]/[#17]") +test_smarts_load_save("[O;H]") +test_smarts_load_save("[!O;H]") diff --git a/core/indigo-core/common/base_cpp/output.h b/core/indigo-core/common/base_cpp/output.h index 2ae6679a0a..be40558b23 100644 --- a/core/indigo-core/common/base_cpp/output.h +++ b/core/indigo-core/common/base_cpp/output.h @@ -41,6 +41,10 @@ namespace indigo virtual void write(const void* data, int size) = 0; virtual void flush() = 0; + virtual long long tell() const noexcept + { + return 0; + } virtual void writeByte(byte value); @@ -63,18 +67,13 @@ namespace indigo void printfCR(const char* format, ...); }; - class DLLEXPORT OutputTell - { - virtual long long tell() const noexcept = 0; - }; - class DLLEXPORT OutputSeek { virtual void seek(long long offset, int from) = 0; void skip(int count); }; - class DLLEXPORT FileOutput : public Output, public OutputSeek, public OutputTell + class DLLEXPORT FileOutput : public Output, public OutputSeek { public: FileOutput(Encoding filename_encoding, const char* filename); @@ -96,7 +95,7 @@ namespace indigo FILE* _file; }; - class DLLEXPORT ArrayOutput : public Output, public OutputTell + class DLLEXPORT ArrayOutput : public Output { public: explicit ArrayOutput(Array& arr); @@ -111,7 +110,7 @@ namespace indigo Array& _arr; }; - class DLLEXPORT StringOutput : public Output, public OutputTell + class DLLEXPORT StringOutput : public Output { public: StringOutput() = delete; @@ -127,7 +126,7 @@ namespace indigo std::string& _str; }; - class DLLEXPORT StandardOutput : public Output, public OutputTell + class DLLEXPORT StandardOutput : public Output { public: explicit StandardOutput(); diff --git a/core/indigo-core/common/gzip/gzip_output.h b/core/indigo-core/common/gzip/gzip_output.h index d5653fa79e..6101e531c1 100644 --- a/core/indigo-core/common/gzip/gzip_output.h +++ b/core/indigo-core/common/gzip/gzip_output.h @@ -27,7 +27,7 @@ namespace indigo { - class GZipOutput : public Output, OutputTell + class GZipOutput : public Output { public: enum diff --git a/core/indigo-core/molecule/src/smiles_saver.cpp b/core/indigo-core/molecule/src/smiles_saver.cpp index 18fef61047..efa5a69d3a 100644 --- a/core/indigo-core/molecule/src/smiles_saver.cpp +++ b/core/indigo-core/molecule/src/smiles_saver.cpp @@ -971,42 +971,52 @@ void SmilesSaver::_writeSmartsAtom(int idx, QueryMolecule::Atom* atom, int chira break; } case QueryMolecule::OP_AND: { - // Convert a & #6 -> c, A & #6 -> C - if (atom->children.size() == 2 && - ((atom->children[0]->type == QueryMolecule::ATOM_AROMATICITY && atom->children[1]->type == QueryMolecule::ATOM_NUMBER) || - (atom->children[1]->type == QueryMolecule::ATOM_AROMATICITY && atom->children[0]->type == QueryMolecule::ATOM_NUMBER))) + bool has_number = false; + bool has_aromatic = false; + bool aromatic = false; + char atom_name[10]; + int cur_pos = _output.tell(); + for (i = 0; i < atom->children.size(); i++) { - int number = -1; - bool aromatic = false; - char atom_name[10]; - if (atom->children[0]->type == QueryMolecule::ATOM_NUMBER) + if (atom->children[i]->type == QueryMolecule::ATOM_NUMBER) { - number = static_cast(atom->children[0])->value_max; - aromatic = static_cast(atom->children[1])->value_min == ATOM_AROMATIC; + has_number = true; + strncpy(atom_name, Element::toString(static_cast(atom->children[0])->value_max), sizeof(atom_name)); } - else + if (atom->children[i]->type == QueryMolecule::ATOM_AROMATICITY) { - aromatic = static_cast(atom->children[0])->value_min == ATOM_AROMATIC; - number = static_cast(atom->children[1])->value_max; + has_aromatic = true; + aromatic = static_cast(atom->children[i])->value_min == ATOM_AROMATIC; } - strncpy(atom_name, Element::toString(number), sizeof(atom_name)); + } + if (has_aromatic && has_number) + { // Convert a & #6 -> c, A & #6 -> C if (aromatic) atom_name[0] = tolower(atom_name[0]); _output.printf("%s", atom_name); } - else + for (i = 0; i < atom->children.size(); i++) { - for (i = 0; i < atom->children.size(); i++) + if (has_aromatic && has_number && + (atom->children[i]->type == QueryMolecule::ATOM_AROMATICITY || atom->children[i]->type == QueryMolecule::ATOM_NUMBER)) { - if (atom->children[i]->type == QueryMolecule::ATOM_RADICAL || atom->children[i]->type == QueryMolecule::ATOM_VALENCE) - { - continue; - } + continue; + } + if (atom->children[i]->type == QueryMolecule::ATOM_RADICAL || atom->children[i]->type == QueryMolecule::ATOM_VALENCE) + { + continue; + } + if (atom->children[i]->type == QueryMolecule::OP_NOT && atom->children[i]->artificial) + { + continue; + } - if (i > 0) - writeAnd(_output, atom, has_or_parent); - _writeSmartsAtom(idx, (QueryMolecule::Atom*)atom->children[i], chirality, depth + 1, has_or_parent, has_not_parent); + if (_output.tell() > cur_pos) + { + _output.writeChar(has_or_parent ? '&' : ';'); + cur_pos = _output.tell(); } + _writeSmartsAtom(idx, (QueryMolecule::Atom*)atom->children[i], chirality, depth + 1, has_or_parent, has_not_parent); } break; } @@ -1187,7 +1197,7 @@ void SmilesSaver::_writeSmartsBond(int idx, QueryMolecule::Bond* bond, bool has_ for (i = 0; i < bond->children.size(); i++) { if (i > 0) - writeAnd(_output, bond, has_or_parent); + _output.writeChar(has_or_parent ? '&' : ';'); _writeSmartsBond(idx, (QueryMolecule::Bond*)bond->children[i], has_or_parent); } break; diff --git a/core/indigo-core/tests/tests/smarts.cpp b/core/indigo-core/tests/tests/smarts.cpp index 61e85b7d72..d5d3d17d75 100644 --- a/core/indigo-core/tests/tests/smarts.cpp +++ b/core/indigo-core/tests/tests/smarts.cpp @@ -114,15 +114,15 @@ TEST_F(IndigoCoreSmartsTest, h) EXPECT_FALSE(substructureMatch("C", "[*h5]")); EXPECT_FALSE(substructureMatch("C([H])([H])([H])[H]", "[Ch]")); - EXPECT_STREQ(smilesLoadSaveLoad("[#6;h]", true).c_str(), "[#6h]"); - EXPECT_STREQ(smilesLoadSaveLoad("[#6;h2]", true).c_str(), "[#6h2]"); + EXPECT_STREQ(smilesLoadSaveLoad("[#6;h]", true).c_str(), "[#6;h]"); + EXPECT_STREQ(smilesLoadSaveLoad("[#6;h2]", true).c_str(), "[#6;h2]"); } TEST_F(IndigoCoreSmartsTest, connectivity) { - EXPECT_STREQ(smilesLoadSaveLoad("[#7;X3]", true).c_str(), "[#7X3]"); - EXPECT_STREQ(smilesLoadSaveLoad("[#7X3]", true).c_str(), "[#7X3]"); - EXPECT_STREQ(smilesLoadSaveLoad("[NX3]", true).c_str(), "[#7X3]"); + EXPECT_STREQ(smilesLoadSaveLoad("[#7;X3]", true).c_str(), "[#7;X3]"); + EXPECT_STREQ(smilesLoadSaveLoad("[#7X3]", true).c_str(), "[#7;X3]"); + EXPECT_STREQ(smilesLoadSaveLoad("[NX3]", true).c_str(), "[#7;X3]"); } TEST_F(IndigoCoreSmartsTest, aliases)