diff --git a/api/c/indigo-renderer/src/indigo_render2d.cpp b/api/c/indigo-renderer/src/indigo_render2d.cpp index 39b3221196..f40519a07e 100644 --- a/api/c/indigo-renderer/src/indigo_render2d.cpp +++ b/api/c/indigo-renderer/src/indigo_render2d.cpp @@ -20,6 +20,7 @@ #include "base_cpp/scanner.h" #include "molecule/molecule.h" #include "molecule/query_molecule.h" +#include "reaction/pathway_reaction.h" #include "reaction/query_reaction.h" #include "reaction/reaction.h" #include "render_cdxml.h" @@ -461,6 +462,8 @@ CEXPORT int indigoRender(int object, int output) { if (obj.getBaseReaction().isQueryReaction()) rp.rxn.reset(new QueryReaction()); + else if (obj.getBaseReaction().isPathwayReaction()) + rp.rxn.reset(new PathwayReaction()); else rp.rxn.reset(new Reaction()); rp.rxn->clone(self.getObject(object).getBaseReaction(), 0, 0, 0); diff --git a/api/c/indigo/indigo.h b/api/c/indigo/indigo.h index 1a400772b8..b03033a7e4 100644 --- a/api/c/indigo/indigo.h +++ b/api/c/indigo/indigo.h @@ -323,6 +323,7 @@ CEXPORT int indigoIterateProducts(int reaction); CEXPORT int indigoIterateCatalysts(int reaction); // Returns an iterator for reactants, products, and catalysts. CEXPORT int indigoIterateMolecules(int reaction); +CEXPORT int indigoIterateReactions(int reaction); CEXPORT int indigoSaveRxnfile(int reaction, int output); CEXPORT int indigoSaveRxnfileToFile(int reaction, const char* filename); diff --git a/api/c/indigo/src/indigo_internal.h b/api/c/indigo/src/indigo_internal.h index 00d1051e93..bab466f132 100644 --- a/api/c/indigo/src/indigo_internal.h +++ b/api/c/indigo/src/indigo_internal.h @@ -57,6 +57,7 @@ namespace indigo class BaseReaction; class QueryReaction; class Reaction; + class PathwayReaction; class Output; class Scanner; class SdfLoader; @@ -190,6 +191,7 @@ class DLLEXPORT IndigoObject virtual BaseReaction& getBaseReaction(); virtual QueryReaction& getQueryReaction(); virtual Reaction& getReaction(); + virtual PathwayReaction& getPathwayReaction(); virtual IndigoObject* clone(); diff --git a/api/c/indigo/src/indigo_layout.cpp b/api/c/indigo/src/indigo_layout.cpp index ebcdd1c123..ed27684f50 100644 --- a/api/c/indigo/src/indigo_layout.cpp +++ b/api/c/indigo/src/indigo_layout.cpp @@ -15,6 +15,8 @@ * See the License for the specific language governing permissions and * limitations under the License. ***************************************************************************/ +#include +#include #include "base_cpp/cancellation_handler.h" #include "indigo_internal.h" @@ -22,10 +24,9 @@ #include "indigo_reaction.h" #include "layout/molecule_cleaner_2d.h" #include "layout/molecule_layout.h" +#include "layout/pathway_layout.h" #include "layout/reaction_layout.h" #include "reaction/base_reaction.h" -#include -#include CEXPORT int indigoLayout(int object) { @@ -101,9 +102,12 @@ CEXPORT int indigoLayout(int object) else if (IndigoBaseReaction::is(obj)) { BaseReaction& rxn = obj.getBaseReaction(); - bool no_layout = rxn.intermediateCount() || rxn.specialConditionsCount() || rxn.meta().getNonChemicalMetaCount() || - obj.type == IndigoObject::PATHWAY_REACTION || rxn.multitaleCount(); - if (!no_layout) + if (rxn.isPathwayReaction()) + { + PathwayLayout pl(static_cast(rxn)); + pl.make(); + } + else { ReactionLayout rl(rxn, self.smart_layout, self.layout_options); rl.setMaxIterations(self.layout_max_iterations); diff --git a/api/c/indigo/src/indigo_object.cpp b/api/c/indigo/src/indigo_object.cpp index a48d327b8e..c4161ff11f 100644 --- a/api/c/indigo/src/indigo_object.cpp +++ b/api/c/indigo/src/indigo_object.cpp @@ -22,6 +22,7 @@ #include "base_cpp/output.h" #include "base_cpp/properties_map.h" +#include "reaction/pathway_reaction.h" #include "reaction/reaction.h" #include "indigo_internal.h" @@ -225,6 +226,11 @@ Reaction& IndigoObject::getReaction() throw IndigoError("%s is not a reaction", debugInfo()); } +PathwayReaction& IndigoObject::getPathwayReaction() +{ + throw IndigoError("%s is not a pathway reaction", debugInfo()); +} + BaseReaction& IndigoObject::getBaseReaction() { throw IndigoError("%s is not a base reaction", debugInfo()); diff --git a/api/c/indigo/src/indigo_reaction.cpp b/api/c/indigo/src/indigo_reaction.cpp index 0242592534..eb6438ed9b 100644 --- a/api/c/indigo/src/indigo_reaction.cpp +++ b/api/c/indigo/src/indigo_reaction.cpp @@ -23,6 +23,7 @@ #include "indigo_mapping.h" #include "indigo_molecule.h" #include "reaction/canonical_rsmiles_saver.h" +#include "reaction/pathway_reaction.h" #include "reaction/reaction_auto_loader.h" #include "reaction/reaction_automapper.h" #include "reaction/rsmiles_loader.h" @@ -60,7 +61,66 @@ const char* IndigoBaseReaction::debugInfo() const } // -// IndigoBaseReaction +// IndigoPathwayReaction +// + +IndigoPathwayReaction::IndigoPathwayReaction() : IndigoBaseReaction(PATHWAY_REACTION) +{ + init(); +} + +const char* IndigoPathwayReaction::debugInfo() const +{ + if (type == IndigoObject::PATHWAY_REACTION) + return ""; + return ""; +} + +IndigoPathwayReaction::~IndigoPathwayReaction() +{ +} + +void IndigoPathwayReaction::init(std::unique_ptr&& reaction) +{ + rxn = reaction ? std::move(reaction) : std::make_unique(); +} + +BaseReaction& IndigoPathwayReaction::getBaseReaction() +{ + assert(rxn); + return *rxn; +} + +PathwayReaction& IndigoPathwayReaction::getPathwayReaction() +{ + assert(rxn); + return dynamic_cast(*rxn); +} + +const char* IndigoPathwayReaction::getName() +{ + if (!rxn || rxn->name.ptr() == 0) + return ""; + return rxn->name.ptr(); +} + +IndigoObject* IndigoPathwayReaction::clone() +{ + return cloneFrom(*this); +} + +IndigoPathwayReaction* IndigoPathwayReaction::cloneFrom(IndigoObject& obj) +{ + Reaction& rxn = obj.getReaction(); + std::unique_ptr rxnptr = std::make_unique(); + rxnptr->rxn->clone(rxn, 0, 0, 0); + auto& props = obj.getProperties(); + rxnptr->copyProperties(props); + return rxnptr.release(); +} + +// +// IndigoReaction // IndigoReaction::IndigoReaction() : IndigoBaseReaction(REACTION) @@ -72,8 +132,6 @@ const char* IndigoReaction::debugInfo() const { if (type == IndigoObject::REACTION) return ""; - if (type == IndigoObject::PATHWAY_REACTION) - return ""; return ""; } @@ -83,7 +141,6 @@ IndigoReaction::~IndigoReaction() void IndigoReaction::init(std::unique_ptr&& reaction) { - type = !reaction || dynamic_cast(reaction.get()) ? IndigoObject::REACTION : IndigoObject::PATHWAY_REACTION; rxn = reaction ? std::move(reaction) : std::make_unique(); } @@ -226,37 +283,49 @@ IndigoReactionIter::~IndigoReactionIter() int IndigoReactionIter::_begin() { - if (_subtype == REACTANTS) + switch (_subtype) + { + case REACTANTS: return _rxn.reactantBegin(); - if (_subtype == PRODUCTS) + case PRODUCTS: return _rxn.productBegin(); - if (_subtype == CATALYSTS) + case CATALYSTS: return _rxn.catalystBegin(); - + case REACTIONS: + return _rxn.reactionBegin(); + } return _rxn.begin(); } int IndigoReactionIter::_end() { - if (_subtype == REACTANTS) + switch (_subtype) + { + case REACTANTS: return _rxn.reactantEnd(); - if (_subtype == PRODUCTS) + case PRODUCTS: return _rxn.productEnd(); - if (_subtype == CATALYSTS) + case CATALYSTS: return _rxn.catalystEnd(); - + case REACTIONS: + return _rxn.reactionEnd(); + } return _rxn.end(); } int IndigoReactionIter::_next(int i) { - if (_subtype == REACTANTS) + switch (_subtype) + { + case REACTANTS: return _rxn.reactantNext(i); - if (_subtype == PRODUCTS) + case PRODUCTS: return _rxn.productNext(i); - if (_subtype == CATALYSTS) + case CATALYSTS: return _rxn.catalystNext(i); - + case REACTIONS: + return _rxn.reactionNext(i); + } return _rxn.next(i); } @@ -272,7 +341,13 @@ IndigoObject* IndigoReactionIter::next() if (_idx == _end()) return 0; - if (_map) + if (_subtype == REACTION) + { + auto reaction = new IndigoReaction(); + reaction->init(_rxn.getBaseReaction(_idx)); + return reaction; + } + else if (_map) { return new IndigoReactionMolecule(_rxn, *_map, _idx); } @@ -380,9 +455,21 @@ CEXPORT int indigoLoadReaction(int source) loader.ignore_noncritical_query_features = self.ignore_noncritical_query_features; loader.dearomatize_on_load = self.dearomatize_on_load; loader.arom_options = self.arom_options; + auto rxn = loader.loadReaction(false); + std::unique_ptr rxnptr; + if (rxn->isPathwayReaction()) + { + auto pwr = std::make_unique(); + pwr->init(std::move(rxn)); + rxnptr = std::move(pwr); + } + else + { + auto reaction = std::make_unique(); + reaction->init(std::move(rxn)); + rxnptr = std::move(reaction); + } - std::unique_ptr rxnptr = std::make_unique(); - rxnptr->init(loader.loadReaction(false)); return self.addObject(rxnptr.release()); } INDIGO_END(-1); @@ -429,6 +516,11 @@ CEXPORT int indigoIterateMolecules(int reaction) return _indigoIterateReaction(reaction, IndigoReactionIter::MOLECULES); } +CEXPORT int indigoIterateReactions(int reaction) +{ + return _indigoIterateReaction(reaction, IndigoReactionIter::REACTIONS); +} + CEXPORT int indigoCreateReaction(void) { INDIGO_BEGIN diff --git a/api/c/indigo/src/indigo_reaction.h b/api/c/indigo/src/indigo_reaction.h index 28a85a194c..99698ab655 100644 --- a/api/c/indigo/src/indigo_reaction.h +++ b/api/c/indigo/src/indigo_reaction.h @@ -65,7 +65,7 @@ class DLLEXPORT IndigoReaction : public IndigoBaseReaction IndigoReaction(); ~IndigoReaction() override; - void init(std::unique_ptr&& = {}); + void init(std::unique_ptr&& reaction = {}); BaseReaction& getBaseReaction() override; Reaction& getReaction() override; const char* getName() override; @@ -79,6 +79,26 @@ class DLLEXPORT IndigoReaction : public IndigoBaseReaction std::unique_ptr rxn; }; +class DLLEXPORT IndigoPathwayReaction : public IndigoBaseReaction +{ +public: + IndigoPathwayReaction(); + ~IndigoPathwayReaction() override; + + void init(std::unique_ptr&& = {}); + BaseReaction& getBaseReaction() override; + PathwayReaction& getPathwayReaction() override; + const char* getName() override; + + IndigoObject* clone() override; + + static IndigoPathwayReaction* cloneFrom(IndigoObject& obj); + + const char* debugInfo() const override; + + std::unique_ptr rxn; +}; + class DLLEXPORT IndigoQueryReaction : public IndigoBaseReaction { public: @@ -131,7 +151,8 @@ class IndigoReactionIter : public IndigoObject REACTANTS, PRODUCTS, CATALYSTS, - MOLECULES + MOLECULES, + REACTIONS }; IndigoReactionIter(BaseReaction& rxn, MonomersProperties& map, int subtype); diff --git a/api/c/indigo/src/indigo_savers.cpp b/api/c/indigo/src/indigo_savers.cpp index 33e052a39b..a3cdb2ac37 100644 --- a/api/c/indigo/src/indigo_savers.cpp +++ b/api/c/indigo/src/indigo_savers.cpp @@ -770,9 +770,8 @@ CEXPORT int indigoSaveCml(int item, int output) } if (IndigoBaseReaction::is(obj)) { - Reaction& rxn = obj.getReaction(); + auto& rxn = obj.getBaseReaction(); ReactionCmlSaver saver(out); - saver.saveReaction(rxn); out.flush(); return 1; diff --git a/api/dotnet/src/IndigoLib.cs b/api/dotnet/src/IndigoLib.cs index 89cab17f09..eedb44c314 100644 --- a/api/dotnet/src/IndigoLib.cs +++ b/api/dotnet/src/IndigoLib.cs @@ -302,6 +302,9 @@ public unsafe class IndigoLib [DllImport("indigo"), SuppressUnmanagedCodeSecurity] public static extern int indigoIterateMolecules(int reader); + [DllImport("indigo"), SuppressUnmanagedCodeSecurity] + public static extern int indigoIterateReactions(int reader); + [DllImport("indigo"), SuppressUnmanagedCodeSecurity] public static extern int indigoSaveRxnfile(int reaction, int output); diff --git a/api/dotnet/src/IndigoObject.cs b/api/dotnet/src/IndigoObject.cs index e594a437d9..5f69b595a4 100644 --- a/api/dotnet/src/IndigoObject.cs +++ b/api/dotnet/src/IndigoObject.cs @@ -238,6 +238,12 @@ public IEnumerable iterateMolecules() return new IndigoObject(dispatcher, dispatcher.checkResult(IndigoLib.indigoIterateMolecules(self)), this); } + public IEnumerable iterateReactions() + { + dispatcher.setSessionID(); + return new IndigoObject(dispatcher, dispatcher.checkResult(IndigoLib.indigoIterateReactions(self)), this); + } + public string rxnfile() { dispatcher.setSessionID(); diff --git a/api/java/indigo/src/main/java/com/epam/indigo/IndigoLib.java b/api/java/indigo/src/main/java/com/epam/indigo/IndigoLib.java index 00f7977476..9fe7f07bcb 100644 --- a/api/java/indigo/src/main/java/com/epam/indigo/IndigoLib.java +++ b/api/java/indigo/src/main/java/com/epam/indigo/IndigoLib.java @@ -246,6 +246,8 @@ public interface IndigoLib extends Library { int indigoIterateMolecules(int reaction); + int indigoIterateReactions(int reaction); + int indigoSaveRxnfile(int reaction, int output); int indigoSaveRxnfileToFile(int reaction, String filename); diff --git a/api/java/indigo/src/main/java/com/epam/indigo/IndigoObject.java b/api/java/indigo/src/main/java/com/epam/indigo/IndigoObject.java index bed1ce6b65..57c8db9c93 100644 --- a/api/java/indigo/src/main/java/com/epam/indigo/IndigoObject.java +++ b/api/java/indigo/src/main/java/com/epam/indigo/IndigoObject.java @@ -221,6 +221,12 @@ public IndigoObject iterateMolecules() { dispatcher, Indigo.checkResult(this, lib.indigoIterateMolecules(self)), this); } + public IndigoObject iterateReactions() { + dispatcher.setSessionID(); + return new IndigoObject( + dispatcher, Indigo.checkResult(this, lib.indigoIterateReactions(self)), this); + } + public String rxnfile() { dispatcher.setSessionID(); return Indigo.checkResultString(this, lib.indigoRxnfile(self)); diff --git a/api/python/indigo/indigo/indigo_lib.py b/api/python/indigo/indigo/indigo_lib.py index b00a18193c..a55933e5d6 100644 --- a/api/python/indigo/indigo/indigo_lib.py +++ b/api/python/indigo/indigo/indigo_lib.py @@ -332,6 +332,8 @@ def __init__(self) -> None: IndigoLib.lib.indigoIterateCatalysts.argtypes = [c_int] IndigoLib.lib.indigoIterateMolecules.restype = c_int IndigoLib.lib.indigoIterateMolecules.argtypes = [c_int] + IndigoLib.lib.indigoIterateReactions.restype = c_int + IndigoLib.lib.indigoIterateReactions.argtypes = [c_int] IndigoLib.lib.indigoSaveRxnfileToFile.restype = c_int IndigoLib.lib.indigoSaveRxnfileToFile.argtypes = [c_int, c_char_p] IndigoLib.lib.indigoRxnfile.restype = c_char_p diff --git a/api/python/indigo/indigo/indigo_object.py b/api/python/indigo/indigo/indigo_object.py index 5a26b77961..684e368c97 100644 --- a/api/python/indigo/indigo/indigo_object.py +++ b/api/python/indigo/indigo/indigo_object.py @@ -508,6 +508,18 @@ def iterateMolecules(self): IndigoLib.checkResult(self._lib().indigoIterateMolecules(self.id)), ) + def iterateReactions(self): + """Reaction method iterates reactions + + Returns: + IndigoObject: reaction iterator + """ + + return IndigoObject( + self.session, + IndigoLib.checkResult(self._lib().indigoIterateReactions(self.id)), + ) + def saveRxnfile(self, filename): """Reaction method saves the reaction into an RXN file diff --git a/api/tests/integration/ref/formats/ket_to_rdf.py.out b/api/tests/integration/ref/formats/ket_to_rdf.py.out new file mode 100644 index 0000000000..8442abe18b --- /dev/null +++ b/api/tests/integration/ref/formats/ket_to_rdf.py.out @@ -0,0 +1,12 @@ +*** KET to RDF *** +multi.rdf:SUCCEED +pathway1.rdf:SUCCEED +pathway10.rdf:SUCCEED +pathway2.rdf:SUCCEED +pathway3.rdf:SUCCEED +pathway4.rdf:SUCCEED +pathway5.rdf:SUCCEED +pathway6.rdf:SUCCEED +pathway7.rdf:SUCCEED +pathway8.rdf:SUCCEED +pathway9.rdf:SUCCEED diff --git a/api/tests/integration/tests/basic/ref/crazystereo.ket b/api/tests/integration/tests/basic/ref/crazystereo.ket index 4e8bb3b987..31c229d90a 100644 --- a/api/tests/integration/tests/basic/ref/crazystereo.ket +++ b/api/tests/integration/tests/basic/ref/crazystereo.ket @@ -13,13 +13,13 @@ "mode": "open-angle", "pos": [ { - "x": 9.542718, - "y": 0.0, + "x": -5.2799, + "y": 0.5598, "z": 0.0 }, { - "x": 11.542719, - "y": 0.0, + "x": -4.3695, + "y": 0.85445, "z": 0.0 } ] @@ -33,80 +33,80 @@ { "label": "C", "location": [ - 4.071359, - 0.79999, + -8.3089, + 0.9723, 0.0 ] }, { "label": "C", "location": [ - 2.685678, - 1.59998, + -9.0234, + 1.3848, 0.0 ] }, { "label": "C", "location": [ - 1.3, - 0.79999, + -9.7379, + 0.9723, 0.0 ] }, { "label": "C", "location": [ - 1.3, - -0.79999, + -9.7379, + 0.1473, 0.0 ] }, { "label": "C", "location": [ - 2.685678, - -1.59998, + -9.0234, + -0.2652, 0.0 ] }, { "label": "C", "location": [ - 4.071359, - -0.79999, + -8.3089, + 0.1473, 0.0 ] }, { "label": "C", "location": [ - 5.456844, - -1.59998, + -7.5945, + -0.2652, 0.0 ] }, { "label": "C", "location": [ - 6.842718, - -0.79999, + -6.8799, + 0.1473, 0.0 ] }, { "label": "C", "location": [ - 6.842718, - 0.79999, + -6.8799, + 0.9723, 0.0 ] }, { "label": "C", "location": [ - 5.456844, - 1.59998, + -7.5945, + 1.3848, 0.0 ] } @@ -197,24 +197,24 @@ { "label": "C", "location": [ - 19.785242, - 3.599955, + 0.0884, + 2.7107, 0.0 ] }, { "label": "C", "location": [ - 18.399563, - 2.799964, + -0.6261, + 2.2982, 0.0 ] }, { "label": "C", "location": [ - 18.399563, - 1.199985, + -0.6261, + 1.4732, 0.0 ], "stereoLabel": "&1" @@ -222,32 +222,32 @@ { "label": "C", "location": [ - 19.785242, - 0.399995, + 0.0884, + 1.0607, 0.0 ] }, { "label": "C", "location": [ - 21.170923, - 1.199985, + 0.8029, + 1.4732, 0.0 ] }, { "label": "C", "location": [ - 21.170923, - 2.799964, + 0.8029, + 2.2982, 0.0 ] }, { "label": "C", "location": [ - 17.014078, - 0.399995, + -1.3405, + 1.0607, 0.0 ], "stereoLabel": "&1" @@ -255,64 +255,64 @@ { "label": "C", "location": [ - 15.628398, - 1.199985, + -2.055, + 1.4732, 0.0 ] }, { "label": "C", "location": [ - 14.242719, - 0.399995, + -2.7695, + 1.0607, 0.0 ] }, { "label": "C", "location": [ - 14.242719, - -1.199985, + -2.7695, + 0.2357, 0.0 ] }, { "label": "C", "location": [ - 15.628398, - -1.999975, + -2.055, + -0.1768, 0.0 ] }, { "label": "C", "location": [ - 17.014078, - -1.199985, + -1.3405, + 0.2357, 0.0 ] }, { "label": "P", "location": [ - 18.399563, - -1.999975, + -0.6261, + -0.1768, 0.0 ] }, { "label": "C", "location": [ - 19.999542, - -1.999975, + 0.1989, + -0.1768, 0.0 ] }, { "label": "C", "location": [ - 18.399563, - -3.599955, + -0.6261, + -1.0018, 0.0 ] } diff --git a/api/tests/integration/tests/formats/ket_cdxml.py b/api/tests/integration/tests/formats/ket_cdxml.py index 019ec78336..ab0437fb38 100644 --- a/api/tests/integration/tests/formats/ket_cdxml.py +++ b/api/tests/integration/tests/formats/ket_cdxml.py @@ -60,7 +60,9 @@ def find_diff(a, b): ket_result = ket.json() # with open(os.path.join(ref_path, filename + ".ket"), "w") as file: - # file.write(ket_result) + # file.write(ket_result) + # with open(os.path.join(ref_path, filename + ".cdxml"), "w") as file: + # file.write(cdxml_text) with open(os.path.join(ref_path, filename) + ".ket", "r") as file: ket_ref = file.read() @@ -95,8 +97,8 @@ def find_diff(a, b): print(getIndigoExceptionText(e)) raise SystemExit cdxml_text = ket.cdxml() - # with open(os.path.join(ref_path, filename) + ".cdxml", "w") as file: - # file.write(cdxml_text) + with open(os.path.join(ref_path, filename) + ".cdxml", "w") as file: + file.write(cdxml_text) indigo.loadMolecule( cdxml_text diff --git a/api/tests/integration/tests/formats/ket_retrosynthetic_arrow.py b/api/tests/integration/tests/formats/ket_retrosynthetic_arrow.py index be4d14fa14..a8981ea386 100644 --- a/api/tests/integration/tests/formats/ket_retrosynthetic_arrow.py +++ b/api/tests/integration/tests/formats/ket_retrosynthetic_arrow.py @@ -85,8 +85,12 @@ def getCML(reaction): print("output format: " + format_name) + # with open(os.path.join(ref_path, filename), "w") as file: + # file.write(parsed_format) + with open(os.path.join(ref_path, filename), "r") as file: format_ref = file.read() + diff = find_diff(format_ref, parsed_format) if not diff: print(filename + ":SUCCEED") diff --git a/api/tests/integration/tests/formats/ket_to_rdf.py b/api/tests/integration/tests/formats/ket_to_rdf.py new file mode 100644 index 0000000000..6179ae694b --- /dev/null +++ b/api/tests/integration/tests/formats/ket_to_rdf.py @@ -0,0 +1,74 @@ +import difflib +import os +import sys + + +def find_diff(a, b): + return "\n".join(difflib.unified_diff(a.splitlines(), b.splitlines())) + + +sys.path.append( + os.path.normpath( + os.path.join(os.path.abspath(__file__), "..", "..", "..", "common") + ) +) +from env_indigo import * # noqa + +indigo = Indigo() +indigo.setOption("json-saving-pretty", True) +indigo.setOption("molfile-saving-skip-date", True) +indigo.setOption("ignore-stereochemistry-errors", True) + +print("*** KET to RDF ***") + +root = joinPathPy("reactions/", __file__) +ref_path = joinPathPy("ref/", __file__) + +files = [ + "multi", + "pathway1", + "pathway2", + "pathway3", + "pathway4", + "pathway5", + "pathway6", + "pathway7", + "pathway8", + "pathway9", + "pathway10", +] + +files.sort() +for filename in files: + try: + ket = indigo.loadReactionFromFile( + os.path.join(root, filename + ".ket") + ) + except: + try: + ket = indigo.loadQueryReactionFromFile( + os.path.join(root, filename + ".ket") + ) + except IndigoException as e: + print(" %s" % (getIndigoExceptionText(e))) + + buffer = indigo.writeBuffer() + rdfSaver = indigo.createSaver(buffer, "rdf") + buffer.rdfHeader() + for rxn in ket.iterateReactions(): + rdfSaver.append(rxn.clone()) + rdfSaver.close() + rdf = buffer.toString() + + # with open(os.path.join(ref_path, filename) + ".rdf", "w") as file: + # file.write(rdf) + + with open(os.path.join(ref_path, filename) + ".rdf", "r") as file: + rdf_ref = file.read() + + diff = find_diff(rdf_ref, rdf) + if not diff: + print(filename + ".rdf:SUCCEED") + else: + print(filename + ".rdf:FAILED") + print(diff) diff --git a/api/tests/integration/tests/formats/reactions/pathway1.ket b/api/tests/integration/tests/formats/reactions/pathway1.ket new file mode 100644 index 0000000000..e8c29d5172 --- /dev/null +++ b/api/tests/integration/tests/formats/reactions/pathway1.ket @@ -0,0 +1 @@ +{"root":{"nodes":[{"$ref":"mol0"},{"$ref":"mol1"},{"$ref":"mol2"},{"$ref":"mol3"},{"$ref":"mol4"},{"$ref":"mol5"},{"type":"multi-tailed-arrow","data":{"head":{"position":{"x":10.887200355529786,"y":6.029025077819824,"z":0.0}},"spine":{"pos":[{"x":9.887200355529786,"y":10.788000106811524,"z":0.0},{"x":9.887200355529786,"y":1.2700501680374146,"z":0.0}]},"tails":{"pos":[{"x":9.387200355529786,"y":10.788000106811524,"z":0.0},{"x":9.387200355529786,"y":6.164050102233887,"z":0.0},{"x":9.387200355529786,"y":1.2700501680374146,"z":0.0}]},"zOrder":0}},{"type":"multi-tailed-arrow","data":{"head":{"position":{"x":4.789100646972656,"y":10.788000106811524,"z":0.0}},"spine":{"pos":[{"x":3.230299949645996,"y":12.923049926757813,"z":0.0},{"x":3.230299949645996,"y":8.652950286865235,"z":0.0}]},"tails":{"pos":[{"x":2.730299949645996,"y":12.923049926757813,"z":0.0},{"x":2.730299949645996,"y":8.652950286865235,"z":0.0}]},"zOrder":0}}]},"mol0":{"type":"molecule","atoms":[{"label":"C","location":[0.0,9.152899742126465,0.0]},{"label":"C","location":[1.730299949645996,9.153399467468262,0.0]},{"label":"C","location":[0.8668000102043152,9.652999877929688,0.0]},{"label":"C","location":[1.730299949645996,8.152399063110352,0.0]},{"label":"C","location":[0.0,8.147899627685547,0.0]},{"label":"C","location":[0.8690000176429749,7.652899742126465,0.0]}],"bonds":[{"type":2,"atoms":[2,0]},{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,5]},{"type":1,"atoms":[5,3]},{"type":2,"atoms":[3,1]},{"type":1,"atoms":[1,2]}]},"mol1":{"type":"molecule","atoms":[{"label":"C","location":[0.9205999374389648,13.693100929260254,0.0]},{"label":"C","location":[1.4210000038146973,12.153000831604004,0.0]},{"label":"C","location":[1.730299949645996,13.099300384521485,0.0]},{"label":"C","location":[0.4203000068664551,12.153000831604004,0.0]},{"label":"C","location":[0.1108999252319336,13.099300384521485,0.0]}],"bonds":[{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,3]},{"type":1,"atoms":[3,1]},{"type":2,"atoms":[1,2]},{"type":1,"atoms":[2,0]}]},"mol2":{"type":"molecule","atoms":[{"label":"C","location":[5.789100646972656,11.287999153137207,0.0]},{"label":"C","location":[5.789100646972656,10.287999153137207,0.0]},{"label":"C","location":[6.6551008224487309,9.787999153137207,0.0]},{"label":"C","location":[7.521200180053711,10.287999153137207,0.0]},{"label":"C","location":[7.521200180053711,11.287999153137207,0.0]},{"label":"C","location":[6.6551008224487309,11.787999153137207,0.0]},{"label":"C","location":[8.387200355529786,11.787999153137207,0.0]}],"bonds":[{"type":1,"atoms":[5,0]},{"type":1,"atoms":[0,1]},{"type":1,"atoms":[1,2]},{"type":1,"atoms":[2,3]},{"type":1,"atoms":[3,4]},{"type":1,"atoms":[4,5]},{"type":1,"atoms":[4,6]}]},"mol3":{"type":"molecule","atoms":[{"label":"C","location":[7.387200355529785,1.54010009765625,0.0]},{"label":"C","location":[7.887600898742676,0.0,0.0]},{"label":"C","location":[8.19680118560791,0.9463005065917969,0.0]},{"label":"C","location":[6.8867998123168949,0.0,0.0]},{"label":"C","location":[6.577500343322754,0.9463005065917969,0.0]},{"label":"C","location":[7.387200355529785,2.540100574493408,0.0]},{"label":"C","location":[8.387200355529786,2.540100574493408,0.0]}],"bonds":[{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,3]},{"type":1,"atoms":[3,1]},{"type":2,"atoms":[1,2]},{"type":1,"atoms":[2,0]},{"type":2,"atoms":[0,5]},{"type":1,"atoms":[5,6]}]},"mol4":{"type":"molecule","atoms":[{"label":"C","location":[6.196199893951416,6.670499801635742,0.0]},{"label":"C","location":[6.980099678039551,7.288000106811523,0.0]},{"label":"C","location":[7.953099727630615,7.065500259399414,0.0]},{"label":"C","location":[8.387199401855469,6.169699668884277,0.0]},{"label":"C","location":[6.201699733734131,5.663300514221191,0.0]},{"label":"C","location":[7.953799724578857,5.262599945068359,0.0]},{"label":"C","location":[6.980099678039551,5.04010009765625,0.0]},{"label":"C","location":[5.230299949645996,6.929300308227539,0.0]}],"bonds":[{"type":1,"atoms":[1,0]},{"type":1,"atoms":[0,4]},{"type":1,"atoms":[4,6]},{"type":1,"atoms":[6,5]},{"type":1,"atoms":[5,3]},{"type":1,"atoms":[3,2]},{"type":1,"atoms":[2,1]},{"type":1,"atoms":[0,7]}]},"mol5":{"type":"molecule","atoms":[{"label":"C","location":[12.753199577331543,6.882475852966309,0.0]},{"label":"C","location":[14.483498573303223,6.8829755783081059,0.0]},{"label":"C","location":[13.619999885559082,7.382575988769531,0.0]},{"label":"C","location":[14.483498573303223,5.882075309753418,0.0]},{"label":"C","location":[12.753199577331543,5.877575874328613,0.0]},{"label":"C","location":[13.622199058532715,5.382575988769531,0.0]},{"label":"C","location":[11.887200355529786,5.377575874328613,0.0]},{"label":"C","location":[12.915099143981934,4.67547607421875,0.0]},{"label":"C","location":[15.190600395202637,5.174975395202637,0.0]}],"bonds":[{"type":2,"atoms":[2,0]},{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,5]},{"type":1,"atoms":[5,3]},{"type":2,"atoms":[3,1]},{"type":1,"atoms":[1,2]},{"type":1,"atoms":[4,6]},{"type":2,"atoms":[5,7]},{"type":1,"atoms":[3,8]}]}} \ No newline at end of file diff --git a/api/tests/integration/tests/formats/reactions/pathway10.ket b/api/tests/integration/tests/formats/reactions/pathway10.ket new file mode 100644 index 0000000000..3a9f9a0bbc --- /dev/null +++ b/api/tests/integration/tests/formats/reactions/pathway10.ket @@ -0,0 +1 @@ +{"root":{"nodes":[{"$ref":"mol0"},{"$ref":"mol1"},{"$ref":"mol2"},{"$ref":"mol3"},{"$ref":"mol4"},{"$ref":"mol5"},{"$ref":"mol6"},{"$ref":"mol7"},{"$ref":"mol8"},{"$ref":"mol9"},{"type":"multi-tailed-arrow","data":{"head":{"position":{"x":14.06869888305664,"y":7.232524871826172,"z":0.0}},"spine":{"pos":[{"x":13.06869888305664,"y":11.472174644470215,"z":0.0},{"x":13.06869888305664,"y":2.992875099182129,"z":0.0}]},"tails":{"pos":[{"x":12.56869888305664,"y":11.472174644470215,"z":0.0},{"x":12.56869888305664,"y":2.992875099182129,"z":0.0}]},"zOrder":0}},{"type":"multi-tailed-arrow","data":{"head":{"position":{"x":4.23029899597168,"y":2.992875099182129,"z":0.0}},"spine":{"pos":[{"x":3.2302989959716799,"y":5.134649753570557,"z":0.0},{"x":3.2302989959716799,"y":0.851099967956543,"z":0.0}]},"tails":{"pos":[{"x":2.7302989959716799,"y":5.134649753570557,"z":0.0},{"x":2.7302989959716799,"y":0.851099967956543,"z":0.0}]},"zOrder":0}},{"type":"multi-tailed-arrow","data":{"head":{"position":{"x":5.860099792480469,"y":11.472174644470215,"z":0.0}},"spine":{"pos":[{"x":3.2302989959716799,"y":13.607199668884278,"z":0.0},{"x":3.2302989959716799,"y":9.337149620056153,"z":0.0}]},"tails":{"pos":[{"x":2.7302989959716799,"y":13.607199668884278,"z":0.0},{"x":2.7302989959716799,"y":9.337149620056153,"z":0.0}]},"zOrder":0}}]},"mol0":{"type":"molecule","atoms":[{"label":"C","location":[1.730299472808838,0.0,0.0]},{"label":"C","location":[1.7265992164611817,0.9950997829437256,0.0]},{"label":"C","location":[0.718299388885498,0.01289987564086914,0.0]},{"label":"C","location":[0.7157993316650391,0.9950997829437256,0.0]},{"label":"F","location":[0.008699417114257813,1.702199935913086,0.0]}],"bonds":[{"type":1,"atoms":[0,1]},{"type":1,"atoms":[1,3]},{"type":1,"atoms":[3,2]},{"type":1,"atoms":[2,0]},{"type":1,"atoms":[3,4]}]},"mol1":{"type":"molecule","atoms":[{"label":"C","location":[0.7289981842041016,4.202199935913086,0.0]},{"label":"C","location":[1.7302980422973633,4.202199935913086,0.0]},{"label":"C","location":[1.2296981811523438,5.067099571228027,0.0]},{"label":"Cl","location":[1.2296981811523438,6.067099571228027,0.0]}],"bonds":[{"type":1,"atoms":[0,1]},{"type":1,"atoms":[1,2]},{"type":1,"atoms":[2,0]},{"type":1,"atoms":[2,3]}]},"mol2":{"type":"molecule","atoms":[{"label":"C","location":[0.9206981658935547,10.107199668884278,0.0]},{"label":"C","location":[1.421098232269287,8.567100524902344,0.0]},{"label":"C","location":[1.7302985191345215,9.513299942016602,0.0]},{"label":"C","location":[0.42029857635498049,8.567100524902344,0.0]},{"label":"C","location":[0.11099815368652344,9.513299942016602,0.0]}],"bonds":[{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,3]},{"type":1,"atoms":[3,1]},{"type":2,"atoms":[1,2]},{"type":1,"atoms":[2,0]}]},"mol3":{"type":"molecule","atoms":[{"label":"C","location":[0.0,14.107100486755371,0.0]},{"label":"C","location":[1.730299472808838,14.107601165771485,0.0]},{"label":"C","location":[0.8667998313903809,14.607200622558594,0.0]},{"label":"C","location":[1.730299472808838,13.106700897216797,0.0]},{"label":"C","location":[0.0,13.102200508117676,0.0]},{"label":"C","location":[0.8689999580383301,12.607200622558594,0.0]}],"bonds":[{"type":2,"atoms":[2,0]},{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,5]},{"type":1,"atoms":[5,3]},{"type":2,"atoms":[3,1]},{"type":1,"atoms":[1,2]}]},"mol4":{"type":"molecule","atoms":[{"label":"C","location":[7.849699020385742,1.7228245735168458,0.0]},{"label":"C","location":[8.850898742675782,1.7228245735168458,0.0]},{"label":"C","location":[8.350399017333985,2.5878243446350099,0.0]},{"label":"O","location":[8.609199523925782,3.5537242889404299,0.0]}],"bonds":[{"type":1,"atoms":[0,1]},{"type":1,"atoms":[1,2]},{"type":1,"atoms":[2,0]},{"type":1,"atoms":[2,3]}]},"mol5":{"type":"molecule","atoms":[{"label":"C","location":[9.836698532104493,11.972175598144532,0.0]},{"label":"C","location":[9.836698532104493,10.972175598144532,0.0]},{"label":"C","location":[10.702698707580567,10.472175598144532,0.0]},{"label":"C","location":[11.56869888305664,10.972175598144532,0.0]},{"label":"C","location":[11.56869888305664,11.972175598144532,0.0]},{"label":"C","location":[10.702698707580567,12.472175598144532,0.0]}],"bonds":[{"type":1,"atoms":[5,0]},{"type":1,"atoms":[0,1]},{"type":1,"atoms":[1,2]},{"type":1,"atoms":[2,3]},{"type":1,"atoms":[3,4]},{"type":1,"atoms":[4,5]}]},"mol6":{"type":"molecule","atoms":[{"label":"C","location":[10.865299224853516,1.7228245735168458,0.0]},{"label":"C","location":[10.86159896850586,2.717924118041992,0.0]},{"label":"C","location":[9.853399276733399,1.7357244491577149,0.0]},{"label":"C","location":[9.850898742675782,2.717924118041992,0.0]},{"label":"N","location":[11.56869888305664,3.4250245094299318,0.0]}],"bonds":[{"type":1,"atoms":[0,1]},{"type":1,"atoms":[1,3]},{"type":1,"atoms":[3,2]},{"type":1,"atoms":[2,0]},{"type":1,"atoms":[1,4]}]},"mol7":{"type":"molecule","atoms":[{"label":"C","location":[6.040099143981934,3.262925624847412,0.0]},{"label":"C","location":[6.540499687194824,1.722825527191162,0.0]},{"label":"C","location":[6.849699020385742,2.669125556945801,0.0]},{"label":"C","location":[5.539699554443359,1.722825527191162,0.0]},{"label":"C","location":[5.23029899597168,2.669125556945801,0.0]},{"label":"S","location":[6.040099143981934,4.262925624847412,0.0]}],"bonds":[{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,3]},{"type":1,"atoms":[3,1]},{"type":2,"atoms":[1,2]},{"type":1,"atoms":[2,0]},{"type":1,"atoms":[0,5]}]},"mol8":{"type":"molecule","atoms":[{"label":"C","location":[7.87449836730957,10.472174644470215,0.0]},{"label":"C","location":[7.870798110961914,11.46727466583252,0.0]},{"label":"C","location":[6.862598419189453,10.485074996948243,0.0]},{"label":"C","location":[6.860099792480469,11.46727466583252,0.0]},{"label":"P","location":[8.836698532104493,11.72607421875,0.0]}],"bonds":[{"type":1,"atoms":[0,1]},{"type":1,"atoms":[1,3]},{"type":1,"atoms":[3,2]},{"type":1,"atoms":[2,0]},{"type":1,"atoms":[1,4]}]},"mol9":{"type":"molecule","atoms":[{"label":"O","location":[19.5054988861084,8.640325546264649,0.0]},{"label":"O","location":[19.5054988861084,6.765225410461426,0.0]},{"label":"O","location":[17.686098098754884,5.824725151062012,0.0]},{"label":"O","location":[15.866598129272461,6.765125274658203,0.0]},{"label":"O","location":[17.680498123168947,8.640325546264649,0.0]},{"label":"O","location":[15.06869888305664,8.046025276184082,0.0]},{"label":"C","location":[18.595699310302736,8.181224822998047,0.0],"stereoLabel":"abs"},{"label":"C","location":[18.595699310302736,7.229825496673584,0.0],"stereoLabel":"abs"},{"label":"C","location":[17.680498123168947,6.765125274658203,0.0],"stereoLabel":"abs"},{"label":"C","location":[16.770898818969728,7.229625225067139,0.0],"stereoLabel":"abs"},{"label":"C","location":[16.770898818969728,8.18112564086914,0.0],"stereoLabel":"abs"},{"label":"C","location":[15.866598129272461,8.640125274658204,0.0]}],"bonds":[{"type":1,"atoms":[5,11]},{"type":1,"atoms":[10,4]},{"type":1,"atoms":[4,6]},{"type":1,"atoms":[6,7]},{"type":1,"atoms":[7,8]},{"type":1,"atoms":[8,9]},{"type":1,"atoms":[9,10]},{"type":1,"atoms":[10,11],"stereo":1},{"type":1,"atoms":[6,0],"stereo":6},{"type":1,"atoms":[7,1],"stereo":6},{"type":1,"atoms":[8,2],"stereo":6},{"type":1,"atoms":[9,3],"stereo":6}]}} \ No newline at end of file diff --git a/api/tests/integration/tests/formats/reactions/pathway2.ket b/api/tests/integration/tests/formats/reactions/pathway2.ket new file mode 100644 index 0000000000..1cf306faf8 --- /dev/null +++ b/api/tests/integration/tests/formats/reactions/pathway2.ket @@ -0,0 +1 @@ +{"root":{"nodes":[{"$ref":"mol0"},{"$ref":"mol1"},{"$ref":"mol2"},{"$ref":"mol3"},{"$ref":"mol4"},{"type":"multi-tailed-arrow","data":{"head":{"position":{"x":10.328400611877442,"y":3.6550750732421877,"z":0.0}},"spine":{"pos":[{"x":9.328400611877442,"y":6.04010009765625,"z":0.0},{"x":9.328400611877442,"y":1.270049810409546,"z":0.0}]},"tails":{"pos":[{"x":8.828400611877442,"y":6.04010009765625,"z":0.0},{"x":8.828400611877442,"y":1.270049810409546,"z":0.0}]},"zOrder":0}},{"type":"multi-tailed-arrow","data":{"head":{"position":{"x":4.230299949645996,"y":6.04010009765625,"z":0.0}},"spine":{"pos":[{"x":3.230299949645996,"y":8.175149917602539,"z":0.0},{"x":3.230299949645996,"y":3.9050498008728029,"z":0.0}]},"tails":{"pos":[{"x":2.730299949645996,"y":8.175149917602539,"z":0.0},{"x":2.730299949645996,"y":3.9050498008728029,"z":0.0}]},"zOrder":0}}]},"mol0":{"type":"molecule","atoms":[{"label":"C","location":[0.0,4.404999732971191,0.0]},{"label":"C","location":[1.730299949645996,4.405499458312988,0.0]},{"label":"C","location":[0.8668000102043152,4.905099868774414,0.0]},{"label":"C","location":[1.730299949645996,3.4044995307922365,0.0]},{"label":"C","location":[0.0,3.3999996185302736,0.0]},{"label":"C","location":[0.8690000176429749,2.9049997329711916,0.0]}],"bonds":[{"type":2,"atoms":[2,0]},{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,5]},{"type":1,"atoms":[5,3]},{"type":2,"atoms":[3,1]},{"type":1,"atoms":[1,2]}]},"mol1":{"type":"molecule","atoms":[{"label":"C","location":[0.9205999374389648,8.945199966430664,0.0]},{"label":"C","location":[1.4210000038146973,7.405099868774414,0.0]},{"label":"C","location":[1.730299949645996,8.351400375366211,0.0]},{"label":"C","location":[0.4203000068664551,7.405099868774414,0.0]},{"label":"C","location":[0.1108999252319336,8.351400375366211,0.0]}],"bonds":[{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,3]},{"type":1,"atoms":[3,1]},{"type":2,"atoms":[1,2]},{"type":1,"atoms":[2,0]}]},"mol2":{"type":"molecule","atoms":[{"label":"C","location":[5.230299949645996,6.540100574493408,0.0]},{"label":"C","location":[5.230299949645996,5.540100574493408,0.0]},{"label":"C","location":[6.09630012512207,5.04010009765625,0.0]},{"label":"C","location":[6.962400436401367,5.540100574493408,0.0]},{"label":"C","location":[6.962400436401367,6.540100574493408,0.0]},{"label":"C","location":[6.09630012512207,7.040100574493408,0.0]},{"label":"C","location":[7.828400611877441,7.040100574493408,0.0]}],"bonds":[{"type":1,"atoms":[5,0]},{"type":1,"atoms":[0,1]},{"type":1,"atoms":[1,2]},{"type":1,"atoms":[2,3]},{"type":1,"atoms":[3,4]},{"type":1,"atoms":[4,5]},{"type":1,"atoms":[4,6]}]},"mol3":{"type":"molecule","atoms":[{"label":"C","location":[6.828400611877441,1.5400996208190919,0.0]},{"label":"C","location":[7.328801155090332,0.0,0.0]},{"label":"C","location":[7.638001441955566,0.9462995529174805,0.0]},{"label":"C","location":[6.328001976013184,0.0,0.0]},{"label":"C","location":[6.01870059967041,0.9462995529174805,0.0]},{"label":"C","location":[6.828400611877441,2.540099620819092,0.0]},{"label":"C","location":[7.828400611877441,2.540099620819092,0.0]}],"bonds":[{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,3]},{"type":1,"atoms":[3,1]},{"type":2,"atoms":[1,2]},{"type":1,"atoms":[2,0]},{"type":2,"atoms":[0,5]},{"type":1,"atoms":[5,6]}]},"mol4":{"type":"molecule","atoms":[{"label":"C","location":[12.1943998336792,4.508525371551514,0.0]},{"label":"C","location":[13.924700736999512,4.5090250968933109,0.0]},{"label":"C","location":[13.061200141906739,5.008625030517578,0.0]},{"label":"C","location":[13.924700736999512,3.5081253051757814,0.0]},{"label":"C","location":[12.1943998336792,3.50362491607666,0.0]},{"label":"C","location":[13.063399314880371,3.008625030517578,0.0]},{"label":"C","location":[11.328400611877442,3.00362491607666,0.0]},{"label":"C","location":[12.35629940032959,2.301525115966797,0.0]},{"label":"C","location":[14.631800651550293,2.801025390625,0.0]}],"bonds":[{"type":2,"atoms":[2,0]},{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,5]},{"type":1,"atoms":[5,3]},{"type":2,"atoms":[3,1]},{"type":1,"atoms":[1,2]},{"type":1,"atoms":[4,6]},{"type":2,"atoms":[5,7]},{"type":1,"atoms":[3,8]}]}} \ No newline at end of file diff --git a/api/tests/integration/tests/formats/reactions/pathway3.ket b/api/tests/integration/tests/formats/reactions/pathway3.ket new file mode 100644 index 0000000000..4656d6271d --- /dev/null +++ b/api/tests/integration/tests/formats/reactions/pathway3.ket @@ -0,0 +1 @@ +{"root":{"nodes":[{"$ref":"mol0"},{"$ref":"mol1"},{"$ref":"mol2"},{"$ref":"mol3"},{"type":"arrow","data":{"mode":"open-angle","pos":[{"x":8.828400611877442,"y":3.1351001262664797,"z":0.0},{"x":10.328400611877442,"y":3.1351003646850588,"z":0.0}]}},{"type":"multi-tailed-arrow","data":{"head":{"position":{"x":4.230299949645996,"y":3.1351001262664797,"z":0.0}},"spine":{"pos":[{"x":3.230299949645996,"y":5.270150184631348,"z":0.0},{"x":3.230299949645996,"y":1.0000500679016114,"z":0.0}]},"tails":{"pos":[{"x":2.730299949645996,"y":5.270150184631348,"z":0.0},{"x":2.730299949645996,"y":1.0000500679016114,"z":0.0}]},"zOrder":0}}]},"mol0":{"type":"molecule","atoms":[{"label":"C","location":[0.0,1.5,0.0]},{"label":"C","location":[1.730299949645996,1.5004997253417969,0.0]},{"label":"C","location":[0.8668000102043152,2.0001001358032228,0.0]},{"label":"C","location":[1.730299949645996,0.4994997978210449,0.0]},{"label":"C","location":[0.0,0.49499988555908205,0.0]},{"label":"C","location":[0.8690000176429749,0.0,0.0]}],"bonds":[{"type":2,"atoms":[2,0]},{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,5]},{"type":1,"atoms":[5,3]},{"type":2,"atoms":[3,1]},{"type":1,"atoms":[1,2]}]},"mol1":{"type":"molecule","atoms":[{"label":"C","location":[0.9205999374389648,6.040200233459473,0.0]},{"label":"C","location":[1.4210000038146973,4.500100135803223,0.0]},{"label":"C","location":[1.730299949645996,5.446400165557861,0.0]},{"label":"C","location":[0.4203000068664551,4.500100135803223,0.0]},{"label":"C","location":[0.1108999252319336,5.446400165557861,0.0]}],"bonds":[{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,3]},{"type":1,"atoms":[3,1]},{"type":2,"atoms":[1,2]},{"type":1,"atoms":[2,0]}]},"mol2":{"type":"molecule","atoms":[{"label":"C","location":[5.230299949645996,3.6350998878479006,0.0]},{"label":"C","location":[5.230299949645996,2.6350998878479006,0.0]},{"label":"C","location":[6.09630012512207,2.135099411010742,0.0]},{"label":"C","location":[6.962400436401367,2.6350998878479006,0.0]},{"label":"C","location":[6.962400436401367,3.6350998878479006,0.0]},{"label":"C","location":[6.09630012512207,4.1350998878479,0.0]},{"label":"C","location":[7.828400611877441,4.1350998878479,0.0]}],"bonds":[{"type":1,"atoms":[5,0]},{"type":1,"atoms":[0,1]},{"type":1,"atoms":[1,2]},{"type":1,"atoms":[2,3]},{"type":1,"atoms":[3,4]},{"type":1,"atoms":[4,5]},{"type":1,"atoms":[4,6]}]},"mol3":{"type":"molecule","atoms":[{"label":"C","location":[12.1943998336792,3.9885506629943849,0.0]},{"label":"C","location":[13.924700736999512,3.9890503883361818,0.0]},{"label":"C","location":[13.061200141906739,4.488650321960449,0.0]},{"label":"C","location":[13.924700736999512,2.9881505966186525,0.0]},{"label":"C","location":[12.1943998336792,2.9836502075195314,0.0]},{"label":"C","location":[13.063399314880371,2.488650321960449,0.0]},{"label":"C","location":[11.328400611877442,2.4836502075195314,0.0]},{"label":"C","location":[12.35629940032959,1.781550407409668,0.0]},{"label":"C","location":[14.631800651550293,2.281050682067871,0.0]}],"bonds":[{"type":2,"atoms":[2,0]},{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,5]},{"type":1,"atoms":[5,3]},{"type":2,"atoms":[3,1]},{"type":1,"atoms":[1,2]},{"type":1,"atoms":[4,6]},{"type":2,"atoms":[5,7]},{"type":1,"atoms":[3,8]}]}} \ No newline at end of file diff --git a/api/tests/integration/tests/formats/reactions/pathway4.ket b/api/tests/integration/tests/formats/reactions/pathway4.ket new file mode 100644 index 0000000000..c2bae8cad9 --- /dev/null +++ b/api/tests/integration/tests/formats/reactions/pathway4.ket @@ -0,0 +1 @@ +{"root":{"nodes":[{"$ref":"mol0"},{"$ref":"mol1"},{"$ref":"mol2"},{"type":"arrow","data":{"mode":"open-angle","pos":[{"x":8.717500686645508,"y":1.3535499572753907,"z":0.0},{"x":10.217500686645508,"y":1.3535499572753907,"z":0.0}]}},{"type":"arrow","data":{"mode":"open-angle","pos":[{"x":2.6194000244140627,"y":1.3535499572753907,"z":0.0},{"x":4.1194000244140629,"y":1.3535499572753907,"z":0.0}]}}]},"mol0":{"type":"molecule","atoms":[{"label":"C","location":[0.8097000122070313,2.1236000061035158,0.0]},{"label":"C","location":[1.3101000785827637,0.5834999084472656,0.0]},{"label":"C","location":[1.6194000244140626,1.5297999382019044,0.0]},{"label":"C","location":[0.3094000816345215,0.5834999084472656,0.0]},{"label":"C","location":[0.0,1.5297999382019044,0.0]}],"bonds":[{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,3]},{"type":1,"atoms":[3,1]},{"type":2,"atoms":[1,2]},{"type":1,"atoms":[2,0]}]},"mol1":{"type":"molecule","atoms":[{"label":"C","location":[5.1194000244140629,1.8535504341125489,0.0]},{"label":"C","location":[5.1194000244140629,0.8535504341125488,0.0]},{"label":"C","location":[5.985400199890137,0.3535499572753906,0.0]},{"label":"C","location":[6.851500511169434,0.8535504341125488,0.0]},{"label":"C","location":[6.851500511169434,1.8535504341125489,0.0]},{"label":"C","location":[5.985400199890137,2.353550434112549,0.0]},{"label":"C","location":[7.717500686645508,2.353550434112549,0.0]}],"bonds":[{"type":1,"atoms":[5,0]},{"type":1,"atoms":[0,1]},{"type":1,"atoms":[1,2]},{"type":1,"atoms":[2,3]},{"type":1,"atoms":[3,4]},{"type":1,"atoms":[4,5]},{"type":1,"atoms":[4,6]}]},"mol2":{"type":"molecule","atoms":[{"label":"C","location":[12.083499908447266,2.207000255584717,0.0]},{"label":"C","location":[13.813800811767579,2.2074999809265138,0.0]},{"label":"C","location":[12.950300216674805,2.7070999145507814,0.0]},{"label":"C","location":[13.813800811767579,1.2066001892089844,0.0]},{"label":"C","location":[12.083499908447266,1.2020998001098633,0.0]},{"label":"C","location":[12.952499389648438,0.7070999145507813,0.0]},{"label":"C","location":[11.217500686645508,0.7020998001098633,0.0]},{"label":"C","location":[12.245399475097657,0.0,0.0]},{"label":"C","location":[14.52090072631836,0.4995002746582031,0.0]}],"bonds":[{"type":2,"atoms":[2,0]},{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,5]},{"type":1,"atoms":[5,3]},{"type":2,"atoms":[3,1]},{"type":1,"atoms":[1,2]},{"type":1,"atoms":[4,6]},{"type":2,"atoms":[5,7]},{"type":1,"atoms":[3,8]}]}} \ No newline at end of file diff --git a/api/tests/integration/tests/formats/reactions/pathway5.ket b/api/tests/integration/tests/formats/reactions/pathway5.ket new file mode 100644 index 0000000000..058d99bcb7 --- /dev/null +++ b/api/tests/integration/tests/formats/reactions/pathway5.ket @@ -0,0 +1 @@ +{"root":{"nodes":[{"$ref":"mol0"},{"$ref":"mol1"},{"type":"arrow","data":{"mode":"open-angle","pos":[{"x":3.5981006622314455,"y":1.3535499572753907,"z":0.0},{"x":5.098100662231445,"y":1.3535499572753907,"z":0.0}]}}]},"mol0":{"type":"molecule","atoms":[{"label":"C","location":[0.0,1.8535504341125489,0.0]},{"label":"C","location":[0.0,0.8535504341125488,0.0]},{"label":"C","location":[0.8660001754760742,0.3535499572753906,0.0]},{"label":"C","location":[1.732100486755371,0.8535504341125488,0.0]},{"label":"C","location":[1.732100486755371,1.8535504341125489,0.0]},{"label":"C","location":[0.8660001754760742,2.353550434112549,0.0]},{"label":"C","location":[2.5981006622314455,2.353550434112549,0.0]}],"bonds":[{"type":1,"atoms":[5,0]},{"type":1,"atoms":[0,1]},{"type":1,"atoms":[1,2]},{"type":1,"atoms":[2,3]},{"type":1,"atoms":[3,4]},{"type":1,"atoms":[4,5]},{"type":1,"atoms":[4,6]}]},"mol1":{"type":"molecule","atoms":[{"label":"C","location":[6.964099884033203,2.207000255584717,0.0]},{"label":"C","location":[8.694400787353516,2.2074999809265138,0.0]},{"label":"C","location":[7.830900192260742,2.7070999145507814,0.0]},{"label":"C","location":[8.694400787353516,1.2066001892089844,0.0]},{"label":"C","location":[6.964099884033203,1.2020998001098633,0.0]},{"label":"C","location":[7.833099365234375,0.7070999145507813,0.0]},{"label":"C","location":[6.098100662231445,0.7020998001098633,0.0]},{"label":"C","location":[7.125999450683594,0.0,0.0]},{"label":"C","location":[9.401500701904297,0.4995002746582031,0.0]}],"bonds":[{"type":2,"atoms":[2,0]},{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,5]},{"type":1,"atoms":[5,3]},{"type":2,"atoms":[3,1]},{"type":1,"atoms":[1,2]},{"type":1,"atoms":[4,6]},{"type":2,"atoms":[5,7]},{"type":1,"atoms":[3,8]}]}} \ No newline at end of file diff --git a/api/tests/integration/tests/formats/reactions/pathway6.ket b/api/tests/integration/tests/formats/reactions/pathway6.ket new file mode 100644 index 0000000000..37c0309a4b --- /dev/null +++ b/api/tests/integration/tests/formats/reactions/pathway6.ket @@ -0,0 +1 @@ +{"root":{"nodes":[{"$ref":"mol0"},{"$ref":"mol1"},{"$ref":"mol2"},{"$ref":"mol3"},{"$ref":"mol4"},{"$ref":"mol5"},{"$ref":"mol6"},{"$ref":"mol7"},{"$ref":"mol8"},{"$ref":"mol9"},{"type":"multi-tailed-arrow","data":{"head":{"position":{"x":17.69059944152832,"y":11.327312469482422,"z":0.0}},"spine":{"pos":[{"x":16.69059944152832,"y":16.625598907470704,"z":0.0},{"x":16.69059944152832,"y":6.029025077819824,"z":0.0}]},"tails":{"pos":[{"x":16.19059944152832,"y":16.625598907470704,"z":0.0},{"x":16.19059944152832,"y":6.029025077819824,"z":0.0}]},"zOrder":0}},{"type":"multi-tailed-arrow","data":{"head":{"position":{"x":10.887199401855469,"y":6.029025077819824,"z":0.0}},"spine":{"pos":[{"x":9.887199401855469,"y":10.788000106811524,"z":0.0},{"x":9.887199401855469,"y":1.270050048828125,"z":0.0}]},"tails":{"pos":[{"x":9.387199401855469,"y":10.788000106811524,"z":0.0},{"x":9.387199401855469,"y":6.164050102233887,"z":0.0},{"x":9.387199401855469,"y":1.270050048828125,"z":0.0}]},"zOrder":0}},{"type":"multi-tailed-arrow","data":{"head":{"position":{"x":4.78909969329834,"y":10.788000106811524,"z":0.0}},"spine":{"pos":[{"x":3.2302989959716799,"y":12.923049926757813,"z":0.0},{"x":3.2302989959716799,"y":8.652950286865235,"z":0.0}]},"tails":{"pos":[{"x":2.7302989959716799,"y":12.923049926757813,"z":0.0},{"x":2.7302989959716799,"y":8.652950286865235,"z":0.0}]},"zOrder":0}},{"type":"arrow","data":{"mode":"open-angle","pos":[{"x":9.387199401855469,"y":16.625598907470704,"z":0.0},{"x":11.777299880981446,"y":16.625598907470704,"z":0.0}]}},{"type":"arrow","data":{"mode":"open-angle","pos":[{"x":2.7302989959716799,"y":16.625598907470704,"z":0.0},{"x":5.769199371337891,"y":16.625598907470704,"z":0.0}]}}]},"mol0":{"type":"molecule","atoms":[{"label":"C","location":[0.0,9.152899742126465,0.0]},{"label":"C","location":[1.730299949645996,9.153399467468262,0.0]},{"label":"C","location":[0.8668000102043152,9.652999877929688,0.0]},{"label":"C","location":[1.730299949645996,8.152399063110352,0.0]},{"label":"C","location":[0.0,8.147899627685547,0.0]},{"label":"C","location":[0.8690000176429749,7.652899742126465,0.0]}],"bonds":[{"type":2,"atoms":[2,0]},{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,5]},{"type":1,"atoms":[5,3]},{"type":2,"atoms":[3,1]},{"type":1,"atoms":[1,2]}]},"mol1":{"type":"molecule","atoms":[{"label":"C","location":[0.9205989837646484,13.693100929260254,0.0]},{"label":"C","location":[1.4209990501403809,12.153000831604004,0.0]},{"label":"C","location":[1.7302989959716797,13.099300384521485,0.0]},{"label":"C","location":[0.42029905319213869,12.153000831604004,0.0]},{"label":"C","location":[0.11089897155761719,13.099300384521485,0.0]}],"bonds":[{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,3]},{"type":1,"atoms":[3,1]},{"type":2,"atoms":[1,2]},{"type":1,"atoms":[2,0]}]},"mol2":{"type":"molecule","atoms":[{"label":"C","location":[5.78909969329834,11.287999153137207,0.0]},{"label":"C","location":[5.78909969329834,10.287999153137207,0.0]},{"label":"C","location":[6.655099868774414,9.787999153137207,0.0]},{"label":"C","location":[7.5211992263793949,10.287999153137207,0.0]},{"label":"C","location":[7.5211992263793949,11.287999153137207,0.0]},{"label":"C","location":[6.655099868774414,11.787999153137207,0.0]},{"label":"C","location":[8.387199401855469,11.787999153137207,0.0]}],"bonds":[{"type":1,"atoms":[5,0]},{"type":1,"atoms":[0,1]},{"type":1,"atoms":[1,2]},{"type":1,"atoms":[2,3]},{"type":1,"atoms":[3,4]},{"type":1,"atoms":[4,5]},{"type":1,"atoms":[4,6]}]},"mol3":{"type":"molecule","atoms":[{"label":"C","location":[7.387199401855469,1.54010009765625,0.0]},{"label":"C","location":[7.887599945068359,0.0,0.0]},{"label":"C","location":[8.196800231933594,0.9463005065917969,0.0]},{"label":"C","location":[6.886798858642578,0.0,0.0]},{"label":"C","location":[6.5774993896484379,0.9463005065917969,0.0]},{"label":"C","location":[7.387199401855469,2.540100574493408,0.0]},{"label":"C","location":[8.387199401855469,2.540100574493408,0.0]}],"bonds":[{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,3]},{"type":1,"atoms":[3,1]},{"type":2,"atoms":[1,2]},{"type":1,"atoms":[2,0]},{"type":2,"atoms":[0,5]},{"type":1,"atoms":[5,6]}]},"mol4":{"type":"molecule","atoms":[{"label":"C","location":[6.1961989402771,6.670499801635742,0.0]},{"label":"C","location":[6.980098724365234,7.288000106811523,0.0]},{"label":"C","location":[7.953098773956299,7.065500259399414,0.0]},{"label":"C","location":[8.387199401855469,6.169699668884277,0.0]},{"label":"C","location":[6.2016987800598148,5.663300514221191,0.0]},{"label":"C","location":[7.953798770904541,5.262599945068359,0.0]},{"label":"C","location":[6.980098724365234,5.04010009765625,0.0]},{"label":"C","location":[5.23029899597168,6.929300308227539,0.0]}],"bonds":[{"type":1,"atoms":[1,0]},{"type":1,"atoms":[0,4]},{"type":1,"atoms":[4,6]},{"type":1,"atoms":[6,5]},{"type":1,"atoms":[5,3]},{"type":1,"atoms":[3,2]},{"type":1,"atoms":[2,1]},{"type":1,"atoms":[0,7]}]},"mol5":{"type":"molecule","atoms":[{"label":"C","location":[0.7290992736816406,16.193099975585939,0.0]},{"label":"C","location":[1.730299472808838,16.193099975585939,0.0]},{"label":"C","location":[1.2296996116638184,17.0580997467041,0.0]}],"bonds":[{"type":1,"atoms":[0,1]},{"type":1,"atoms":[1,2]},{"type":1,"atoms":[2,0]}]},"mol6":{"type":"molecule","atoms":[{"label":"C","location":[7.57819938659668,17.395048141479493,0.0]},{"label":"C","location":[8.387199401855469,16.807247161865236,0.0]},{"label":"C","location":[8.07819938659668,15.856148719787598,0.0]},{"label":"C","location":[7.07819938659668,15.856148719787598,0.0]},{"label":"C","location":[6.769199371337891,16.807247161865236,0.0]}],"bonds":[{"type":1,"atoms":[0,4]},{"type":1,"atoms":[4,3]},{"type":1,"atoms":[3,2]},{"type":1,"atoms":[2,1]},{"type":1,"atoms":[1,0]}]},"mol7":{"type":"molecule","atoms":[{"label":"C","location":[12.753199577331543,6.882476806640625,0.0]},{"label":"C","location":[14.483499526977539,6.882976531982422,0.0]},{"label":"C","location":[13.619999885559082,7.382575988769531,0.0]},{"label":"C","location":[14.483499526977539,5.882076263427734,0.0]},{"label":"C","location":[12.753199577331543,5.87757682800293,0.0]},{"label":"C","location":[13.622200012207032,5.382575988769531,0.0]},{"label":"C","location":[11.887199401855469,5.37757682800293,0.0]},{"label":"C","location":[12.91510009765625,4.67547607421875,0.0]},{"label":"C","location":[15.19059944152832,5.174976348876953,0.0]}],"bonds":[{"type":2,"atoms":[2,0]},{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,5]},{"type":1,"atoms":[5,3]},{"type":2,"atoms":[3,1]},{"type":1,"atoms":[1,2]},{"type":1,"atoms":[4,6]},{"type":2,"atoms":[5,7]},{"type":1,"atoms":[3,8]}]},"mol8":{"type":"molecule","atoms":[{"label":"C","location":[12.777299880981446,16.12434959411621,0.0]},{"label":"C","location":[12.777498245239258,17.126850128173829,0.0]},{"label":"C","location":[13.482599258422852,17.832149505615236,0.0]},{"label":"C","location":[13.482799530029297,15.418949127197266,0.0]},{"label":"C","location":[14.485198974609375,15.418949127197266,0.0]},{"label":"C","location":[15.19059944152832,16.12434959411621,0.0]},{"label":"C","location":[15.190498352050782,17.126850128173829,0.0]},{"label":"C","location":[14.485198974609375,17.83224868774414,0.0]}],"bonds":[{"type":1,"atoms":[1,0]},{"type":1,"atoms":[0,3]},{"type":1,"atoms":[3,4]},{"type":1,"atoms":[4,5]},{"type":1,"atoms":[5,6]},{"type":1,"atoms":[6,7]},{"type":1,"atoms":[7,2]},{"type":1,"atoms":[2,1]}]},"mol9":{"type":"molecule","atoms":[{"label":"C","location":[18.69059944152832,9.22191333770752,0.0]},{"label":"C","location":[18.690797805786134,10.22441291809082,0.0]},{"label":"C","location":[19.395998001098634,10.92961311340332,0.0]},{"label":"C","location":[19.396198272705079,8.516512870788575,0.0]},{"label":"C","location":[20.39859962463379,8.516512870788575,0.0]},{"label":"C","location":[21.1039981842041,9.22191333770752,0.0]},{"label":"C","location":[21.103899002075197,10.22441291809082,0.0]},{"label":"C","location":[20.39859962463379,10.929713249206543,0.0]},{"label":"C","location":[18.773998260498048,12.43021297454834,0.0]},{"label":"C","location":[18.774198532104493,13.43271255493164,0.0]},{"label":"C","location":[19.479299545288087,14.138012886047364,0.0]},{"label":"C","location":[19.4794979095459,11.724812507629395,0.0]},{"label":"C","location":[20.48189926147461,11.724812507629395,0.0]},{"label":"C","location":[21.187297821044923,12.43021297454834,0.0]},{"label":"C","location":[21.187198638916017,13.43271255493164,0.0]},{"label":"C","location":[20.48189926147461,14.138113021850586,0.0]}],"bonds":[{"type":1,"atoms":[1,0]},{"type":1,"atoms":[0,3]},{"type":1,"atoms":[3,4]},{"type":1,"atoms":[4,5]},{"type":1,"atoms":[5,6]},{"type":1,"atoms":[6,7]},{"type":1,"atoms":[7,2]},{"type":1,"atoms":[2,1]},{"type":1,"atoms":[9,8]},{"type":1,"atoms":[8,11]},{"type":1,"atoms":[11,12]},{"type":1,"atoms":[12,13]},{"type":1,"atoms":[13,14]},{"type":1,"atoms":[14,15]},{"type":1,"atoms":[15,10]},{"type":1,"atoms":[10,9]},{"type":1,"atoms":[11,2]}]}} \ No newline at end of file diff --git a/api/tests/integration/tests/formats/reactions/pathway7.ket b/api/tests/integration/tests/formats/reactions/pathway7.ket new file mode 100644 index 0000000000..d1f8e3558a --- /dev/null +++ b/api/tests/integration/tests/formats/reactions/pathway7.ket @@ -0,0 +1 @@ +{"root":{"nodes":[{"$ref":"mol0"},{"$ref":"mol1"},{"$ref":"mol2"},{"$ref":"mol3"},{"$ref":"mol4"},{"$ref":"mol5"},{"$ref":"mol6"},{"type":"multi-tailed-arrow","data":{"head":{"position":{"x":35.554100036621097,"y":11.332690238952637,"z":0.0}},"spine":{"pos":[{"x":34.554100036621097,"y":17.61530303955078,"z":0.0},{"x":34.554100036621097,"y":5.050076961517334,"z":0.0}]},"tails":{"pos":[{"x":34.054100036621097,"y":17.61530303955078,"z":0.0},{"x":34.054100036621097,"y":5.050076961517334,"z":0.0}]},"zOrder":0}},{"type":"multi-tailed-arrow","data":{"head":{"position":{"x":17.133800506591798,"y":5.050076961517334,"z":0.0}},"spine":{"pos":[{"x":16.133800506591798,"y":9.329853057861329,"z":0.0},{"x":16.133800506591798,"y":0.7703008651733398,"z":0.0}]},"tails":{"pos":[{"x":15.633800506591797,"y":9.329853057861329,"z":0.0},{"x":15.633800506591797,"y":4.788802146911621,"z":0.0},{"x":15.633800506591797,"y":0.7703008651733398,"z":0.0}]},"zOrder":0}},{"type":"arrow","data":{"mode":"open-angle","pos":[{"x":15.633800506591797,"y":17.61530303955078,"z":0.0},{"x":31.158401489257814,"y":17.61530303955078,"z":0.0}]}}]},"mol0":{"type":"molecule","atoms":[{"label":"C","location":[14.633800506591797,0.0,0.0]},{"label":"C","location":[14.63010025024414,0.9959011077880859,0.0]},{"label":"C","location":[13.621000289916993,0.01300048828125,0.0]},{"label":"C","location":[13.618499755859375,0.9959011077880859,0.0]},{"label":"C","location":[12.624900817871094,1.5406017303466797,0.0]}],"bonds":[{"type":1,"atoms":[0,1]},{"type":1,"atoms":[1,3]},{"type":1,"atoms":[3,2]},{"type":1,"atoms":[2,0]},{"type":1,"atoms":[4,3]}]},"mol1":{"type":"molecule","atoms":[{"label":"C","location":[13.77079963684082,4.04060173034668,0.0]},{"label":"C","location":[13.767099380493164,5.036502838134766,0.0]},{"label":"C","location":[12.757999420166016,4.053503036499023,0.0]},{"label":"C","location":[12.755499839782715,5.036502838134766,0.0]},{"label":"C","location":[12.220600128173829,5.414302825927734,0.0]},{"label":"C","location":[14.63379955291748,5.5370025634765629,0.0]}],"bonds":[{"type":1,"atoms":[0,1]},{"type":1,"atoms":[1,3]},{"type":1,"atoms":[3,2]},{"type":1,"atoms":[2,0]},{"type":1,"atoms":[4,3]},{"type":1,"atoms":[1,5]}]},"mol2":{"type":"molecule","atoms":[{"label":"C","location":[13.51500129699707,8.998703002929688,0.0]},{"label":"C","location":[13.511301040649414,9.994604110717774,0.0]},{"label":"C","location":[12.502300262451172,9.011602401733399,0.0]},{"label":"C","location":[12.499801635742188,9.994604110717774,0.0]},{"label":"C","location":[11.964801788330079,10.497503280639649,0.0]},{"label":"C","location":[14.09160041809082,10.622703552246094,0.0]},{"label":"C","location":[14.633800506591797,8.037002563476563,0.0]}],"bonds":[{"type":1,"atoms":[0,1]},{"type":1,"atoms":[1,3]},{"type":1,"atoms":[3,2]},{"type":1,"atoms":[2,0]},{"type":1,"atoms":[4,3]},{"type":1,"atoms":[5,1]},{"type":1,"atoms":[6,0]}]},"mol3":{"type":"molecule","atoms":[{"label":"C","location":[5.077700614929199,14.603903770446778,0.0]},{"label":"C","location":[5.143000602722168,13.122703552246094,0.0]},{"label":"C","location":[4.682801246643066,13.844404220581055,0.0]},{"label":"C","location":[5.998101234436035,13.160404205322266,0.0]},{"label":"C","location":[5.932900428771973,14.64150333404541,0.0]},{"label":"C","location":[6.393099784851074,13.919803619384766,0.0]},{"label":"C","location":[9.280800819396973,13.43640422821045,0.0]},{"label":"C","location":[9.106600761413575,14.908703804016114,0.0]},{"label":"C","location":[8.76870059967041,14.12230396270752,0.0]},{"label":"C","location":[9.9566011428833,15.00930404663086,0.0]},{"label":"C","location":[10.1308012008667,13.537003517150879,0.0]},{"label":"C","location":[10.468701362609864,14.323403358459473,0.0]},{"label":"C","location":[0.8977994918823242,15.269204139709473,0.0]},{"label":"C","location":[2.261599540710449,14.687603950500489,0.0]},{"label":"C","location":[1.7475996017456055,15.372103691101075,0.0]},{"label":"C","location":[1.9258012771606446,13.900303840637207,0.0]},{"label":"C","location":[0.5621004104614258,14.481904029846192,0.0]},{"label":"C","location":[1.0760011672973633,13.797403335571289,0.0]},{"label":"C","location":[0.7950010299682617,16.119003295898439,0.0]},{"label":"C","location":[1.9805002212524415,17.009204864501954,0.0]},{"label":"C","location":[1.644700050354004,16.221904754638673,0.0]},{"label":"C","location":[1.4666013717651368,17.693702697753908,0.0]},{"label":"C","location":[0.28100013732910159,16.803504943847658,0.0]},{"label":"C","location":[0.6168003082275391,17.590805053710939,0.0]},{"label":"C","location":[1.6995000839233399,19.33080291748047,0.0]},{"label":"C","location":[0.5139007568359375,18.44060516357422,0.0]},{"label":"C","location":[1.3636999130249024,18.543502807617189,0.0]},{"label":"C","location":[0.0,19.125102996826173,0.0]},{"label":"C","location":[1.185500144958496,20.015304565429689,0.0]},{"label":"C","location":[0.3358001708984375,19.912403106689454,0.0]},{"label":"C","location":[14.63379955291748,15.865303993225098,0.0]},{"label":"C","location":[13.290200233459473,16.491905212402345,0.0]},{"label":"C","location":[14.142899513244629,16.566402435302736,0.0]},{"label":"C","location":[12.928400993347168,15.716103553771973,0.0]},{"label":"C","location":[14.272099494934082,15.08950424194336,0.0]},{"label":"C","location":[13.419400215148926,15.014904022216797,0.0]},{"label":"C","location":[12.724699974060059,18.04580307006836,0.0]},{"label":"C","location":[14.0683012008667,17.419204711914064,0.0]},{"label":"C","location":[13.21560001373291,17.3446044921875,0.0]},{"label":"C","location":[14.430100440979004,18.194904327392579,0.0]},{"label":"C","location":[13.086400032043457,18.821502685546876,0.0]},{"label":"C","location":[13.939101219177246,18.896102905273439,0.0]},{"label":"C","location":[12.520899772644043,20.375404357910158,0.0]},{"label":"C","location":[13.86460018157959,19.748804092407228,0.0]},{"label":"C","location":[13.011799812316895,19.674203872680665,0.0]},{"label":"C","location":[14.226300239562989,20.52460479736328,0.0]},{"label":"C","location":[12.88270092010498,21.151203155517579,0.0]},{"label":"C","location":[13.735400199890137,21.22580337524414,0.0]},{"label":"C","location":[4.027100563049316,20.74320411682129,0.0]},{"label":"C","location":[5.163599967956543,21.69530487060547,0.0]},{"label":"C","location":[4.320500373840332,21.547304153442384,0.0]},{"label":"C","location":[5.713299751281738,21.039203643798829,0.0]},{"label":"C","location":[4.576800346374512,20.087003707885743,0.0]},{"label":"C","location":[5.419899940490723,20.235004425048829,0.0]},{"label":"C","location":[8.527600288391114,22.07030487060547,0.0]},{"label":"C","location":[9.842801094055176,21.386104583740236,0.0]},{"label":"C","location":[9.38270092010498,22.1079044342041,0.0]},{"label":"C","location":[9.447800636291504,20.6267032623291,0.0]},{"label":"C","location":[8.132599830627442,21.310903549194337,0.0]},{"label":"C","location":[8.592700004577637,20.58910369873047,0.0]}],"bonds":[{"type":2,"atoms":[2,0]},{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,5]},{"type":1,"atoms":[5,3]},{"type":2,"atoms":[3,1]},{"type":1,"atoms":[1,2]},{"type":2,"atoms":[8,6]},{"type":1,"atoms":[6,10]},{"type":2,"atoms":[10,11]},{"type":1,"atoms":[11,9]},{"type":2,"atoms":[9,7]},{"type":1,"atoms":[7,8]},{"type":1,"atoms":[5,8]},{"type":2,"atoms":[14,12]},{"type":1,"atoms":[12,16]},{"type":2,"atoms":[16,17]},{"type":1,"atoms":[17,15]},{"type":2,"atoms":[15,13]},{"type":1,"atoms":[13,14]},{"type":1,"atoms":[13,2]},{"type":2,"atoms":[20,18]},{"type":1,"atoms":[18,22]},{"type":2,"atoms":[22,23]},{"type":1,"atoms":[23,21]},{"type":2,"atoms":[21,19]},{"type":1,"atoms":[19,20]},{"type":1,"atoms":[18,12]},{"type":1,"atoms":[20,14]},{"type":2,"atoms":[26,24]},{"type":1,"atoms":[24,28]},{"type":2,"atoms":[28,29]},{"type":1,"atoms":[29,27]},{"type":2,"atoms":[27,25]},{"type":1,"atoms":[25,26]},{"type":1,"atoms":[21,26]},{"type":1,"atoms":[23,25]},{"type":2,"atoms":[32,30]},{"type":1,"atoms":[30,34]},{"type":2,"atoms":[34,35]},{"type":1,"atoms":[35,33]},{"type":2,"atoms":[33,31]},{"type":1,"atoms":[31,32]},{"type":1,"atoms":[11,33]},{"type":2,"atoms":[38,36]},{"type":1,"atoms":[36,40]},{"type":2,"atoms":[40,41]},{"type":1,"atoms":[41,39]},{"type":2,"atoms":[39,37]},{"type":1,"atoms":[37,38]},{"type":2,"atoms":[44,42]},{"type":1,"atoms":[42,46]},{"type":2,"atoms":[46,47]},{"type":1,"atoms":[47,45]},{"type":2,"atoms":[45,43]},{"type":1,"atoms":[43,44]},{"type":1,"atoms":[38,31]},{"type":1,"atoms":[37,32]},{"type":1,"atoms":[44,40]},{"type":1,"atoms":[43,41]},{"type":2,"atoms":[50,48]},{"type":1,"atoms":[48,52]},{"type":2,"atoms":[52,53]},{"type":1,"atoms":[53,51]},{"type":2,"atoms":[51,49]},{"type":1,"atoms":[49,50]},{"type":2,"atoms":[56,54]},{"type":1,"atoms":[54,58]},{"type":2,"atoms":[58,59]},{"type":1,"atoms":[59,57]},{"type":2,"atoms":[57,55]},{"type":1,"atoms":[55,56]},{"type":1,"atoms":[24,48]},{"type":1,"atoms":[51,58]},{"type":1,"atoms":[55,42]}]},"mol4":{"type":"molecule","atoms":[{"label":"C","location":[32.606201171875,18.003204345703126,0.0]},{"label":"C","location":[32.15840148925781,17.22740364074707,0.0]},{"label":"C","location":[33.054100036621097,17.22740364074707,0.0]}],"bonds":[{"type":1,"atoms":[0,1]},{"type":1,"atoms":[1,2]},{"type":1,"atoms":[2,0]}]},"mol5":{"type":"molecule","atoms":[{"label":"C","location":[23.36840057373047,2.478177070617676,0.0]},{"label":"C","location":[23.44110107421875,0.9284772872924805,0.0]},{"label":"C","location":[22.957401275634767,1.6823768615722657,0.0]},{"label":"C","location":[24.335800170898439,0.9704771041870117,0.0]},{"label":"C","location":[24.263099670410158,2.520176887512207,0.0]},{"label":"C","location":[24.74679946899414,1.7663774490356446,0.0]},{"label":"C","location":[27.679500579833986,1.267277717590332,0.0]},{"label":"C","location":[27.47930145263672,2.8056774139404299,0.0]},{"label":"C","location":[27.135299682617189,1.9786767959594727,0.0]},{"label":"C","location":[28.367599487304689,2.9211769104003908,0.0]},{"label":"C","location":[28.567699432373048,1.382777214050293,0.0]},{"label":"C","location":[28.911701202392579,2.2097768783569338,0.0]},{"label":"C","location":[19.037700653076173,3.100677490234375,0.0]},{"label":"C","location":[20.459400177001954,2.4794769287109377,0.0]},{"label":"C","location":[19.927900314331056,3.2004776000976564,0.0]},{"label":"C","location":[20.10070037841797,1.658677101135254,0.0]},{"label":"C","location":[18.679100036621095,2.2798776626586916,0.0]},{"label":"C","location":[19.210601806640626,1.5588769912719727,0.0]},{"label":"C","location":[18.93790054321289,3.990777015686035,0.0]},{"label":"C","location":[20.18670082092285,4.911376953125,0.0]},{"label":"C","location":[19.828102111816408,4.090577125549316,0.0]},{"label":"C","location":[19.655200958251954,5.632377624511719,0.0]},{"label":"C","location":[18.406400680541993,4.711777687072754,0.0]},{"label":"C","location":[18.765100479125978,5.5325775146484379,0.0]},{"label":"C","location":[19.91400146484375,7.3432769775390629,0.0]},{"label":"C","location":[18.665300369262697,6.422677040100098,0.0]},{"label":"C","location":[19.555400848388673,6.522477149963379,0.0]},{"label":"C","location":[18.133800506591798,7.143677711486816,0.0]},{"label":"C","location":[19.38249969482422,8.064176559448243,0.0]},{"label":"C","location":[18.492401123046876,7.964377403259277,0.0]},{"label":"C","location":[33.054100036621097,3.877377510070801,0.0]},{"label":"C","location":[31.505401611328126,3.9678773880004885,0.0]},{"label":"C","location":[32.30590057373047,4.369677543640137,0.0]},{"label":"C","location":[31.453102111816408,3.0736770629882814,0.0]},{"label":"C","location":[33.00189971923828,2.9831771850585939,0.0]},{"label":"C","location":[32.20130157470703,2.5813770294189455,0.0]},{"label":"C","location":[30.355300903320314,5.260777473449707,0.0]},{"label":"C","location":[31.904102325439454,5.170177459716797,0.0]},{"label":"C","location":[31.103500366210939,4.768377304077148,0.0]},{"label":"C","location":[31.956298828125,6.0643768310546879,0.0]},{"label":"C","location":[30.40760040283203,6.154877662658691,0.0]},{"label":"C","location":[31.208099365234376,6.556777000427246,0.0]},{"label":"C","location":[29.25749969482422,7.447776794433594,0.0]},{"label":"C","location":[30.80630111694336,7.357276916503906,0.0]},{"label":"C","location":[30.005699157714845,6.955477714538574,0.0]},{"label":"C","location":[30.858501434326173,8.251477241516114,0.0]},{"label":"C","location":[29.309799194335939,8.3419771194458,0.0]},{"label":"C","location":[30.110301971435548,8.74377727508545,0.0]},{"label":"C","location":[22.230998992919923,8.404277801513672,0.0]},{"label":"C","location":[23.5885009765625,9.155277252197266,0.0]},{"label":"C","location":[22.69300079345703,9.171676635742188,0.0]},{"label":"C","location":[24.02210235595703,8.371577262878418,0.0]},{"label":"C","location":[22.66469955444336,7.620477199554443,0.0]},{"label":"C","location":[23.560199737548829,7.604177474975586,0.0]},{"label":"C","location":[26.48870086669922,8.59357738494873,0.0]},{"label":"C","location":[26.912601470947267,7.207577705383301,0.0]},{"label":"C","location":[27.2041015625,8.054576873779297,0.0]},{"label":"C","location":[26.01700210571289,7.223176956176758,0.0]},{"label":"C","location":[25.755001068115236,8.07967758178711,0.0]}],"bonds":[{"type":2,"atoms":[2,0]},{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,5]},{"type":1,"atoms":[5,3]},{"type":2,"atoms":[3,1]},{"type":1,"atoms":[1,2]},{"type":2,"atoms":[8,6]},{"type":1,"atoms":[6,10]},{"type":2,"atoms":[10,11]},{"type":1,"atoms":[11,9]},{"type":2,"atoms":[9,7]},{"type":1,"atoms":[7,8]},{"type":1,"atoms":[5,8]},{"type":2,"atoms":[14,12]},{"type":1,"atoms":[12,16]},{"type":2,"atoms":[16,17]},{"type":1,"atoms":[17,15]},{"type":2,"atoms":[15,13]},{"type":1,"atoms":[13,14]},{"type":1,"atoms":[13,2]},{"type":2,"atoms":[20,18]},{"type":1,"atoms":[18,22]},{"type":2,"atoms":[22,23]},{"type":1,"atoms":[23,21]},{"type":2,"atoms":[21,19]},{"type":1,"atoms":[19,20]},{"type":1,"atoms":[18,12]},{"type":1,"atoms":[20,14]},{"type":2,"atoms":[26,24]},{"type":1,"atoms":[24,28]},{"type":2,"atoms":[28,29]},{"type":1,"atoms":[29,27]},{"type":2,"atoms":[27,25]},{"type":1,"atoms":[25,26]},{"type":1,"atoms":[21,26]},{"type":1,"atoms":[23,25]},{"type":2,"atoms":[32,30]},{"type":1,"atoms":[30,34]},{"type":2,"atoms":[34,35]},{"type":1,"atoms":[35,33]},{"type":2,"atoms":[33,31]},{"type":1,"atoms":[31,32]},{"type":1,"atoms":[11,33]},{"type":2,"atoms":[38,36]},{"type":1,"atoms":[36,40]},{"type":2,"atoms":[40,41]},{"type":1,"atoms":[41,39]},{"type":2,"atoms":[39,37]},{"type":1,"atoms":[37,38]},{"type":2,"atoms":[44,42]},{"type":1,"atoms":[42,46]},{"type":2,"atoms":[46,47]},{"type":1,"atoms":[47,45]},{"type":2,"atoms":[45,43]},{"type":1,"atoms":[43,44]},{"type":1,"atoms":[38,31]},{"type":1,"atoms":[37,32]},{"type":1,"atoms":[44,40]},{"type":1,"atoms":[43,41]},{"type":2,"atoms":[50,48]},{"type":1,"atoms":[48,52]},{"type":2,"atoms":[52,53]},{"type":1,"atoms":[53,51]},{"type":2,"atoms":[51,49]},{"type":1,"atoms":[49,50]},{"type":1,"atoms":[24,48]},{"type":1,"atoms":[54,58]},{"type":2,"atoms":[58,57]},{"type":1,"atoms":[57,55]},{"type":2,"atoms":[55,56]},{"type":1,"atoms":[56,54]},{"type":1,"atoms":[51,58]},{"type":1,"atoms":[56,46]}]},"mol6":{"type":"molecule","atoms":[{"label":"C","location":[37.724403381347659,12.502989768981934,0.0]},{"label":"C","location":[38.551902770996097,12.160189628601075,0.0]},{"label":"C","location":[38.89470291137695,11.332690238952637,0.0]},{"label":"C","location":[36.89690017700195,12.160189628601075,0.0]},{"label":"C","location":[36.554100036621097,11.332690238952637,0.0]},{"label":"C","location":[36.89690017700195,10.505189895629883,0.0]},{"label":"C","location":[37.724403381347659,10.162389755249024,0.0]},{"label":"C","location":[38.551902770996097,10.505189895629883,0.0]}],"bonds":[{"type":1,"atoms":[1,0]},{"type":1,"atoms":[0,3]},{"type":1,"atoms":[3,4]},{"type":1,"atoms":[4,5]},{"type":1,"atoms":[5,6]},{"type":1,"atoms":[6,7]},{"type":1,"atoms":[7,2]},{"type":1,"atoms":[2,1]}]}} \ No newline at end of file diff --git a/api/tests/integration/tests/formats/reactions/pathway8.ket b/api/tests/integration/tests/formats/reactions/pathway8.ket new file mode 100644 index 0000000000..4db87af454 --- /dev/null +++ b/api/tests/integration/tests/formats/reactions/pathway8.ket @@ -0,0 +1 @@ +{"root":{"nodes":[{"$ref":"mol0"},{"$ref":"mol1"},{"$ref":"mol2"},{"$ref":"mol3"},{"$ref":"mol4"},{"$ref":"mol5"},{"$ref":"mol6"},{"$ref":"mol7"},{"$ref":"mol8"},{"$ref":"mol9"},{"type":"arrow","data":{"mode":"open-angle","pos":[{"x":2.6194000244140627,"y":4.124800205230713,"z":0.0},{"x":4.1194000244140629,"y":4.124800205230713,"z":0.0}]}},{"type":"multi-tailed-arrow","data":{"head":{"position":{"x":27.17820167541504,"y":19.806150436401368,"z":0.0}},"spine":{"pos":[{"x":26.17820167541504,"y":25.366600036621095,"z":0.0},{"x":26.17820167541504,"y":14.245699882507325,"z":0.0}]},"tails":{"pos":[{"x":25.67820167541504,"y":25.366600036621095,"z":0.0},{"x":25.67820167541504,"y":14.245699882507325,"z":0.0}]},"zOrder":0}},{"type":"arrow","data":{"mode":"open-angle","pos":[{"x":21.163801193237306,"y":14.24570083618164,"z":0.0},{"x":22.676902770996095,"y":14.245699882507325,"z":0.0}]}},{"type":"arrow","data":{"mode":"open-angle","pos":[{"x":2.7320003509521486,"y":14.24570083618164,"z":0.0},{"x":4.5186004638671879,"y":14.24570083618164,"z":0.0}]}},{"type":"arrow","data":{"mode":"open-angle","pos":[{"x":21.163801193237306,"y":25.366600036621095,"z":0.0},{"x":22.663801193237306,"y":25.366600036621095,"z":0.0}]}},{"type":"multi-tailed-arrow","data":{"head":{"position":{"x":4.232000350952148,"y":25.366600036621095,"z":0.0}},"spine":{"pos":[{"x":3.2320003509521486,"y":27.498849868774415,"z":0.0},{"x":3.2320003509521486,"y":23.234352111816408,"z":0.0}]},"tails":{"pos":[{"x":2.7320003509521486,"y":27.498849868774415,"z":0.0},{"x":2.7320003509521486,"y":23.234352111816408,"z":0.0}]},"zOrder":0}}]},"mol0":{"type":"molecule","atoms":[{"label":"C","location":[0.9282002449035645,23.998802185058595,0.0]},{"label":"C","location":[1.4250001907348633,22.46990394592285,0.0]},{"label":"C","location":[1.7320001125335694,23.409202575683595,0.0]},{"label":"C","location":[0.4315004348754883,22.46990394592285,0.0]},{"label":"C","location":[0.12430000305175781,23.409202575683595,0.0]}],"bonds":[{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,3]},{"type":1,"atoms":[3,1]},{"type":2,"atoms":[1,2]},{"type":1,"atoms":[2,0]}]},"mol1":{"type":"molecule","atoms":[{"label":"C","location":[0.0,27.99880027770996,0.0]},{"label":"C","location":[0.0,26.99880027770996,0.0]},{"label":"C","location":[0.8659999966621399,26.49880027770996,0.0]},{"label":"C","location":[1.7320001125335694,26.99880027770996,0.0]},{"label":"C","location":[1.7320001125335694,27.99880027770996,0.0]},{"label":"C","location":[0.8659999966621399,28.498899459838868,0.0]}],"bonds":[{"type":1,"atoms":[5,0]},{"type":1,"atoms":[0,1]},{"type":1,"atoms":[1,2]},{"type":1,"atoms":[2,3]},{"type":1,"atoms":[3,4]},{"type":1,"atoms":[4,5]}]},"mol2":{"type":"molecule","atoms":[{"label":"C","location":[10.600299835205079,11.232000350952149,0.0]},{"label":"C","location":[10.665599822998047,9.749600410461426,0.0]},{"label":"C","location":[10.205100059509278,10.47189998626709,0.0]},{"label":"C","location":[11.521400451660157,9.787300109863282,0.0]},{"label":"C","location":[11.456100463867188,11.269599914550782,0.0]},{"label":"C","location":[11.91670036315918,10.547300338745118,0.0]},{"label":"C","location":[14.806600570678711,10.063600540161133,0.0]},{"label":"C","location":[14.63230037689209,11.53700065612793,0.0]},{"label":"C","location":[14.294099807739258,10.75,0.0]},{"label":"C","location":[15.482999801635743,11.637700080871582,0.0]},{"label":"C","location":[15.657299995422364,10.164199829101563,0.0]},{"label":"C","location":[15.995500564575196,10.951200485229493,0.0]},{"label":"C","location":[6.417099952697754,11.89780044555664,0.0]},{"label":"C","location":[7.782000541687012,11.31570053100586,0.0]},{"label":"C","location":[7.267600059509277,12.000800132751465,0.0]},{"label":"C","location":[7.445899963378906,10.527800559997559,0.0]},{"label":"C","location":[6.081200122833252,11.10990047454834,0.0]},{"label":"C","location":[6.5954999923706059,10.424799919128418,0.0]},{"label":"C","location":[6.314300537109375,12.748200416564942,0.0]},{"label":"C","location":[7.500699996948242,13.639100074768067,0.0]},{"label":"C","location":[7.164600372314453,12.851200103759766,0.0]},{"label":"C","location":[6.986400604248047,14.324199676513672,0.0]},{"label":"C","location":[5.799900054931641,13.433300018310547,0.0]},{"label":"C","location":[6.135900497436523,14.221200942993164,0.0]},{"label":"C","location":[7.219500541687012,15.96250057220459,0.0]},{"label":"C","location":[6.032900333404541,15.071599960327149,0.0]},{"label":"C","location":[6.883399963378906,15.174600601196289,0.0]},{"label":"C","location":[5.5186004638671879,15.75670051574707,0.0]},{"label":"C","location":[6.705100059509277,16.647600173950197,0.0]},{"label":"C","location":[5.854700088500977,16.544599533081056,0.0]},{"label":"C","location":[20.163799285888673,12.494300842285157,0.0]},{"label":"C","location":[18.81920051574707,13.121400833129883,0.0]},{"label":"C","location":[19.672500610351564,13.196000099182129,0.0]},{"label":"C","location":[18.45709991455078,12.345000267028809,0.0]},{"label":"C","location":[19.801799774169923,11.717900276184082,0.0]},{"label":"C","location":[18.948501586914064,11.643301010131836,0.0]},{"label":"C","location":[18.25320053100586,14.67650032043457,0.0]},{"label":"C","location":[19.597900390625,14.049400329589844,0.0]},{"label":"C","location":[18.74449920654297,13.974800109863282,0.0]},{"label":"C","location":[19.95989990234375,14.825700759887696,0.0]},{"label":"C","location":[18.61520004272461,15.452800750732422,0.0]},{"label":"C","location":[19.46860122680664,15.52750015258789,0.0]},{"label":"C","location":[18.049301147460939,17.00790023803711,0.0]},{"label":"C","location":[19.394001007080079,16.380901336669923,0.0]},{"label":"C","location":[18.54050064086914,16.30620002746582,0.0]},{"label":"C","location":[19.756000518798829,17.15730094909668,0.0]},{"label":"C","location":[18.411300659179689,17.784299850463868,0.0]},{"label":"C","location":[19.264699935913087,17.85900115966797,0.0]},{"label":"C","location":[9.548900604248047,17.375999450683595,0.0]},{"label":"C","location":[10.686200141906739,18.328899383544923,0.0]},{"label":"C","location":[9.842500686645508,18.180700302124025,0.0]},{"label":"C","location":[11.236400604248047,17.672300338745118,0.0]},{"label":"C","location":[10.099000930786133,16.71929931640625,0.0]},{"label":"C","location":[10.942700386047364,16.867401123046876,0.0]},{"label":"C","location":[14.052900314331055,18.704200744628908,0.0]},{"label":"C","location":[15.369100570678711,18.019399642944337,0.0]},{"label":"C","location":[14.908599853515625,18.74180030822754,0.0]},{"label":"C","location":[14.973800659179688,17.2593994140625,0.0]},{"label":"C","location":[13.657600402832032,17.94420051574707,0.0]},{"label":"C","location":[14.118000030517579,17.221799850463868,0.0]}],"bonds":[{"type":2,"atoms":[2,0]},{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,5]},{"type":1,"atoms":[5,3]},{"type":2,"atoms":[3,1]},{"type":1,"atoms":[1,2]},{"type":2,"atoms":[8,6]},{"type":1,"atoms":[6,10]},{"type":2,"atoms":[10,11]},{"type":1,"atoms":[11,9]},{"type":2,"atoms":[9,7]},{"type":1,"atoms":[7,8]},{"type":1,"atoms":[5,8]},{"type":2,"atoms":[14,12]},{"type":1,"atoms":[12,16]},{"type":2,"atoms":[16,17]},{"type":1,"atoms":[17,15]},{"type":2,"atoms":[15,13]},{"type":1,"atoms":[13,14]},{"type":1,"atoms":[13,2]},{"type":2,"atoms":[20,18]},{"type":1,"atoms":[18,22]},{"type":2,"atoms":[22,23]},{"type":1,"atoms":[23,21]},{"type":2,"atoms":[21,19]},{"type":1,"atoms":[19,20]},{"type":1,"atoms":[18,12]},{"type":1,"atoms":[20,14]},{"type":2,"atoms":[26,24]},{"type":1,"atoms":[24,28]},{"type":2,"atoms":[28,29]},{"type":1,"atoms":[29,27]},{"type":2,"atoms":[27,25]},{"type":1,"atoms":[25,26]},{"type":1,"atoms":[21,26]},{"type":1,"atoms":[23,25]},{"type":2,"atoms":[32,30]},{"type":1,"atoms":[30,34]},{"type":2,"atoms":[34,35]},{"type":1,"atoms":[35,33]},{"type":2,"atoms":[33,31]},{"type":1,"atoms":[31,32]},{"type":1,"atoms":[11,33]},{"type":2,"atoms":[38,36]},{"type":1,"atoms":[36,40]},{"type":2,"atoms":[40,41]},{"type":1,"atoms":[41,39]},{"type":2,"atoms":[39,37]},{"type":1,"atoms":[37,38]},{"type":2,"atoms":[44,42]},{"type":1,"atoms":[42,46]},{"type":2,"atoms":[46,47]},{"type":1,"atoms":[47,45]},{"type":2,"atoms":[45,43]},{"type":1,"atoms":[43,44]},{"type":1,"atoms":[38,31]},{"type":1,"atoms":[37,32]},{"type":1,"atoms":[44,40]},{"type":1,"atoms":[43,41]},{"type":2,"atoms":[50,48]},{"type":1,"atoms":[48,52]},{"type":2,"atoms":[52,53]},{"type":1,"atoms":[53,51]},{"type":2,"atoms":[51,49]},{"type":1,"atoms":[49,50]},{"type":2,"atoms":[56,54]},{"type":1,"atoms":[54,58]},{"type":2,"atoms":[58,59]},{"type":1,"atoms":[59,57]},{"type":2,"atoms":[57,55]},{"type":1,"atoms":[55,56]},{"type":1,"atoms":[24,48]},{"type":1,"atoms":[51,58]},{"type":1,"atoms":[55,42]}]},"mol3":{"type":"molecule","atoms":[{"label":"C","location":[0.00170135498046875,14.745601654052735,0.0]},{"label":"C","location":[1.7320013046264649,14.746101379394532,0.0]},{"label":"C","location":[0.8684015274047852,15.245701789855957,0.0]},{"label":"C","location":[1.7320013046264649,13.745201110839844,0.0]},{"label":"C","location":[0.00170135498046875,13.740701675415039,0.0]},{"label":"C","location":[0.8706011772155762,13.245701789855957,0.0]}],"bonds":[{"type":2,"atoms":[2,0]},{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,5]},{"type":1,"atoms":[5,3]},{"type":2,"atoms":[3,1]},{"type":1,"atoms":[1,2]}]},"mol4":{"type":"molecule","atoms":[{"label":"C","location":[10.470600128173829,22.792699813842775,0.0]},{"label":"C","location":[10.543401718139649,21.24180030822754,0.0]},{"label":"C","location":[10.059301376342774,21.996301651000978,0.0]},{"label":"C","location":[11.438800811767579,21.28390121459961,0.0]},{"label":"C","location":[11.36600112915039,22.834800720214845,0.0]},{"label":"C","location":[11.850101470947266,22.080400466918947,0.0]},{"label":"C","location":[14.785100936889649,21.580900192260743,0.0]},{"label":"C","location":[14.584701538085938,23.120500564575197,0.0]},{"label":"C","location":[14.240501403808594,22.292800903320314,0.0]},{"label":"C","location":[15.473701477050782,23.236101150512697,0.0]},{"label":"C","location":[15.674001693725586,21.696500778198243,0.0]},{"label":"C","location":[16.01820182800293,22.52410125732422,0.0]},{"label":"C","location":[6.136600494384766,23.415700912475587,0.0]},{"label":"C","location":[7.55940055847168,22.79400062561035,0.0]},{"label":"C","location":[7.027500152587891,23.515600204467775,0.0]},{"label":"C","location":[7.200401306152344,21.97260093688965,0.0]},{"label":"C","location":[5.777700424194336,22.594301223754884,0.0]},{"label":"C","location":[6.309600830078125,21.87270164489746,0.0]},{"label":"C","location":[6.036701202392578,24.306501388549806,0.0]},{"label":"C","location":[7.286500930786133,25.227800369262697,0.0]},{"label":"C","location":[6.927600860595703,24.406400680541993,0.0]},{"label":"C","location":[6.7545013427734379,25.94940185546875,0.0]},{"label":"C","location":[5.504800796508789,25.028100967407228,0.0]},{"label":"C","location":[5.863801956176758,25.84950065612793,0.0]},{"label":"C","location":[7.013601303100586,27.661602020263673,0.0]},{"label":"C","location":[5.7639007568359379,26.74030113220215,0.0]},{"label":"C","location":[6.654701232910156,26.840200424194337,0.0]},{"label":"C","location":[5.232000350952148,27.46190071105957,0.0]},{"label":"C","location":[6.481601715087891,28.383100509643556,0.0]},{"label":"C","location":[5.590801239013672,28.283201217651368,0.0]},{"label":"C","location":[20.163801193237306,24.19300079345703,0.0]},{"label":"C","location":[18.613901138305665,24.283599853515626,0.0]},{"label":"C","location":[19.415102005004884,24.685701370239259,0.0]},{"label":"C","location":[18.561601638793947,23.388700485229493,0.0]},{"label":"C","location":[20.111600875854493,23.2981014251709,0.0]},{"label":"C","location":[19.310401916503908,22.895999908447267,0.0]},{"label":"C","location":[17.463001251220704,25.577499389648439,0.0]},{"label":"C","location":[19.01300048828125,25.486801147460939,0.0]},{"label":"C","location":[18.211700439453126,25.084701538085939,0.0]},{"label":"C","location":[19.065200805664064,26.38170051574707,0.0]},{"label":"C","location":[17.515300750732423,26.472301483154298,0.0]},{"label":"C","location":[18.3164005279541,26.874500274658204,0.0]},{"label":"C","location":[16.364301681518556,27.76620101928711,0.0]},{"label":"C","location":[17.9143009185791,27.675601959228517,0.0]},{"label":"C","location":[17.113101959228517,27.273500442504884,0.0]},{"label":"C","location":[17.966501235961915,28.570499420166017,0.0]},{"label":"C","location":[16.416601181030275,28.661100387573243,0.0]},{"label":"C","location":[17.21780014038086,29.063201904296876,0.0]},{"label":"C","location":[9.332300186157227,28.723400115966798,0.0]},{"label":"C","location":[10.690900802612305,29.475000381469728,0.0]},{"label":"C","location":[9.794700622558594,29.49140167236328,0.0]},{"label":"C","location":[11.124801635742188,28.69070053100586,0.0]},{"label":"C","location":[9.766401290893555,27.939001083374025,0.0]},{"label":"C","location":[10.662601470947266,27.922700881958009,0.0]},{"label":"C","location":[13.593400955200196,28.912900924682618,0.0]},{"label":"C","location":[14.017601013183594,27.525800704956056,0.0]},{"label":"C","location":[14.309301376342774,28.37350082397461,0.0]},{"label":"C","location":[13.121301651000977,27.541400909423829,0.0]},{"label":"C","location":[12.859100341796875,28.398601531982423,0.0]}],"bonds":[{"type":2,"atoms":[2,0]},{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,5]},{"type":1,"atoms":[5,3]},{"type":2,"atoms":[3,1]},{"type":1,"atoms":[1,2]},{"type":2,"atoms":[8,6]},{"type":1,"atoms":[6,10]},{"type":2,"atoms":[10,11]},{"type":1,"atoms":[11,9]},{"type":2,"atoms":[9,7]},{"type":1,"atoms":[7,8]},{"type":1,"atoms":[5,8]},{"type":2,"atoms":[14,12]},{"type":1,"atoms":[12,16]},{"type":2,"atoms":[16,17]},{"type":1,"atoms":[17,15]},{"type":2,"atoms":[15,13]},{"type":1,"atoms":[13,14]},{"type":1,"atoms":[13,2]},{"type":2,"atoms":[20,18]},{"type":1,"atoms":[18,22]},{"type":2,"atoms":[22,23]},{"type":1,"atoms":[23,21]},{"type":2,"atoms":[21,19]},{"type":1,"atoms":[19,20]},{"type":1,"atoms":[18,12]},{"type":1,"atoms":[20,14]},{"type":2,"atoms":[26,24]},{"type":1,"atoms":[24,28]},{"type":2,"atoms":[28,29]},{"type":1,"atoms":[29,27]},{"type":2,"atoms":[27,25]},{"type":1,"atoms":[25,26]},{"type":1,"atoms":[21,26]},{"type":1,"atoms":[23,25]},{"type":2,"atoms":[32,30]},{"type":1,"atoms":[30,34]},{"type":2,"atoms":[34,35]},{"type":1,"atoms":[35,33]},{"type":2,"atoms":[33,31]},{"type":1,"atoms":[31,32]},{"type":1,"atoms":[11,33]},{"type":2,"atoms":[38,36]},{"type":1,"atoms":[36,40]},{"type":2,"atoms":[40,41]},{"type":1,"atoms":[41,39]},{"type":2,"atoms":[39,37]},{"type":1,"atoms":[37,38]},{"type":2,"atoms":[44,42]},{"type":1,"atoms":[42,46]},{"type":2,"atoms":[46,47]},{"type":1,"atoms":[47,45]},{"type":2,"atoms":[45,43]},{"type":1,"atoms":[43,44]},{"type":1,"atoms":[38,31]},{"type":1,"atoms":[37,32]},{"type":1,"atoms":[44,40]},{"type":1,"atoms":[43,41]},{"type":2,"atoms":[50,48]},{"type":1,"atoms":[48,52]},{"type":2,"atoms":[52,53]},{"type":1,"atoms":[53,51]},{"type":2,"atoms":[51,49]},{"type":1,"atoms":[49,50]},{"type":1,"atoms":[24,48]},{"type":1,"atoms":[54,58]},{"type":2,"atoms":[58,57]},{"type":1,"atoms":[57,55]},{"type":2,"atoms":[55,56]},{"type":1,"atoms":[56,54]},{"type":1,"atoms":[51,58]},{"type":1,"atoms":[56,46]}]},"mol5":{"type":"molecule","atoms":[{"label":"C","location":[0.8097000122070313,4.89484977722168,0.0]},{"label":"C","location":[1.3101005554199219,3.3547496795654299,0.0]},{"label":"C","location":[1.6194000244140626,4.3009490966796879,0.0]},{"label":"C","location":[0.3094005584716797,3.3547496795654299,0.0]},{"label":"C","location":[0.0,4.3009490966796879,0.0]}],"bonds":[{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,3]},{"type":1,"atoms":[3,1]},{"type":2,"atoms":[1,2]},{"type":1,"atoms":[2,0]}]},"mol6":{"type":"molecule","atoms":[{"label":"C","location":[23.676902770996095,13.813199996948243,0.0]},{"label":"C","location":[24.678203582763673,13.813199996948243,0.0]},{"label":"C","location":[24.177602767944337,14.678199768066407,0.0]}],"bonds":[{"type":1,"atoms":[0,1]},{"type":1,"atoms":[1,2]},{"type":1,"atoms":[2,0]}]},"mol7":{"type":"molecule","atoms":[{"label":"C","location":[24.67820167541504,24.869050979614259,0.0]},{"label":"C","location":[24.674501419067384,25.864151000976564,0.0]},{"label":"C","location":[23.666301727294923,24.88195037841797,0.0]},{"label":"C","location":[23.663801193237306,25.864151000976564,0.0]}],"bonds":[{"type":1,"atoms":[0,1]},{"type":1,"atoms":[1,3]},{"type":1,"atoms":[3,2]},{"type":1,"atoms":[2,0]}]},"mol8":{"type":"molecule","atoms":[{"label":"C","location":[10.357999801635743,1.5508995056152344,0.0]},{"label":"C","location":[10.430801391601563,0.0,0.0]},{"label":"C","location":[9.946701049804688,0.7545013427734375,0.0]},{"label":"C","location":[11.326200485229493,0.04210090637207031,0.0]},{"label":"C","location":[11.253400802612305,1.5930004119873047,0.0]},{"label":"C","location":[11.73750114440918,0.8386001586914063,0.0]},{"label":"C","location":[14.672500610351563,0.3390998840332031,0.0]},{"label":"C","location":[14.472101211547852,1.8787002563476563,0.0]},{"label":"C","location":[14.127901077270508,1.0510005950927735,0.0]},{"label":"C","location":[15.361101150512696,1.9943008422851563,0.0]},{"label":"C","location":[15.5614013671875,0.4547004699707031,0.0]},{"label":"C","location":[15.905601501464844,1.2823009490966797,0.0]},{"label":"C","location":[6.02400016784668,2.173900604248047,0.0]},{"label":"C","location":[7.446800231933594,1.5522003173828126,0.0]},{"label":"C","location":[6.914899826049805,2.2737998962402345,0.0]},{"label":"C","location":[7.087800979614258,0.7308006286621094,0.0]},{"label":"C","location":[5.66510009765625,1.3525009155273438,0.0]},{"label":"C","location":[6.197000503540039,0.6309013366699219,0.0]},{"label":"C","location":[5.924100875854492,3.0647010803222658,0.0]},{"label":"C","location":[7.173900604248047,3.9860000610351564,0.0]},{"label":"C","location":[6.815000534057617,3.164600372314453,0.0]},{"label":"C","location":[6.641901016235352,4.7076005935668949,0.0]},{"label":"C","location":[5.392200469970703,3.7863006591796877,0.0]},{"label":"C","location":[5.751201629638672,4.607700347900391,0.0]},{"label":"C","location":[6.9010009765625,6.419800758361816,0.0]},{"label":"C","location":[5.651300430297852,5.498500823974609,0.0]},{"label":"C","location":[6.54210090637207,5.598400115966797,0.0]},{"label":"C","location":[5.1194000244140629,6.220100402832031,0.0]},{"label":"C","location":[6.369001388549805,7.141300201416016,0.0]},{"label":"C","location":[5.478200912475586,7.041400909423828,0.0]},{"label":"C","location":[20.05120086669922,2.951200485229492,0.0]},{"label":"C","location":[18.501300811767579,3.041799545288086,0.0]},{"label":"C","location":[19.302501678466798,3.4439010620117189,0.0]},{"label":"C","location":[18.44900131225586,2.146900177001953,0.0]},{"label":"C","location":[19.999000549316408,2.0563011169433595,0.0]},{"label":"C","location":[19.19780158996582,1.6541996002197266,0.0]},{"label":"C","location":[17.350400924682618,4.335700035095215,0.0]},{"label":"C","location":[18.900400161743165,4.245000839233398,0.0]},{"label":"C","location":[18.09910011291504,3.842900276184082,0.0]},{"label":"C","location":[18.952600479125978,5.139900207519531,0.0]},{"label":"C","location":[17.402700424194337,5.230500221252441,0.0]},{"label":"C","location":[18.203800201416017,5.632699966430664,0.0]},{"label":"C","location":[16.25170135498047,6.52440071105957,0.0]},{"label":"C","location":[17.801700592041017,6.43380069732666,0.0]},{"label":"C","location":[17.00050163269043,6.031700134277344,0.0]},{"label":"C","location":[17.853900909423829,7.328700065612793,0.0]},{"label":"C","location":[16.304000854492189,7.419300079345703,0.0]},{"label":"C","location":[17.105199813842775,7.8214006423950199,0.0]},{"label":"C","location":[9.21969985961914,7.481600761413574,0.0]},{"label":"C","location":[10.578300476074219,8.233200073242188,0.0]},{"label":"C","location":[9.682100296020508,8.249600410461426,0.0]},{"label":"C","location":[11.012201309204102,7.44890022277832,0.0]},{"label":"C","location":[9.653800964355469,6.697200775146484,0.0]},{"label":"C","location":[10.55000114440918,6.680900573730469,0.0]},{"label":"C","location":[13.48080062866211,7.671100616455078,0.0]},{"label":"C","location":[13.905000686645508,6.284000396728516,0.0]},{"label":"C","location":[14.196701049804688,7.13170051574707,0.0]},{"label":"C","location":[13.00870132446289,6.299600601196289,0.0]},{"label":"C","location":[12.746500015258789,7.156800270080566,0.0]}],"bonds":[{"type":2,"atoms":[2,0]},{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,5]},{"type":1,"atoms":[5,3]},{"type":2,"atoms":[3,1]},{"type":1,"atoms":[1,2]},{"type":2,"atoms":[8,6]},{"type":1,"atoms":[6,10]},{"type":2,"atoms":[10,11]},{"type":1,"atoms":[11,9]},{"type":2,"atoms":[9,7]},{"type":1,"atoms":[7,8]},{"type":1,"atoms":[5,8]},{"type":2,"atoms":[14,12]},{"type":1,"atoms":[12,16]},{"type":2,"atoms":[16,17]},{"type":1,"atoms":[17,15]},{"type":2,"atoms":[15,13]},{"type":1,"atoms":[13,14]},{"type":1,"atoms":[13,2]},{"type":2,"atoms":[20,18]},{"type":1,"atoms":[18,22]},{"type":2,"atoms":[22,23]},{"type":1,"atoms":[23,21]},{"type":2,"atoms":[21,19]},{"type":1,"atoms":[19,20]},{"type":1,"atoms":[18,12]},{"type":1,"atoms":[20,14]},{"type":2,"atoms":[26,24]},{"type":1,"atoms":[24,28]},{"type":2,"atoms":[28,29]},{"type":1,"atoms":[29,27]},{"type":2,"atoms":[27,25]},{"type":1,"atoms":[25,26]},{"type":1,"atoms":[21,26]},{"type":1,"atoms":[23,25]},{"type":2,"atoms":[32,30]},{"type":1,"atoms":[30,34]},{"type":2,"atoms":[34,35]},{"type":1,"atoms":[35,33]},{"type":2,"atoms":[33,31]},{"type":1,"atoms":[31,32]},{"type":1,"atoms":[11,33]},{"type":2,"atoms":[38,36]},{"type":1,"atoms":[36,40]},{"type":2,"atoms":[40,41]},{"type":1,"atoms":[41,39]},{"type":2,"atoms":[39,37]},{"type":1,"atoms":[37,38]},{"type":2,"atoms":[44,42]},{"type":1,"atoms":[42,46]},{"type":2,"atoms":[46,47]},{"type":1,"atoms":[47,45]},{"type":2,"atoms":[45,43]},{"type":1,"atoms":[43,44]},{"type":1,"atoms":[38,31]},{"type":1,"atoms":[37,32]},{"type":1,"atoms":[44,40]},{"type":1,"atoms":[43,41]},{"type":2,"atoms":[50,48]},{"type":1,"atoms":[48,52]},{"type":2,"atoms":[52,53]},{"type":1,"atoms":[53,51]},{"type":2,"atoms":[51,49]},{"type":1,"atoms":[49,50]},{"type":1,"atoms":[24,48]},{"type":1,"atoms":[54,58]},{"type":2,"atoms":[58,57]},{"type":1,"atoms":[57,55]},{"type":2,"atoms":[55,56]},{"type":1,"atoms":[56,54]},{"type":1,"atoms":[51,58]},{"type":1,"atoms":[56,46]}]},"mol9":{"type":"molecule","atoms":[{"label":"C","location":[28.17820167541504,19.304950714111329,0.0]},{"label":"C","location":[28.178401947021486,20.307449340820314,0.0]},{"label":"C","location":[28.883602142333986,21.012649536132814,0.0]},{"label":"C","location":[28.88380241394043,18.59954833984375,0.0]},{"label":"C","location":[29.886201858520509,18.59954833984375,0.0]},{"label":"C","location":[30.591602325439454,19.304950714111329,0.0]},{"label":"C","location":[30.591503143310548,20.307449340820314,0.0]},{"label":"C","location":[29.886201858520509,21.01274871826172,0.0]}],"bonds":[{"type":1,"atoms":[1,0]},{"type":1,"atoms":[0,3]},{"type":1,"atoms":[3,4]},{"type":1,"atoms":[4,5]},{"type":1,"atoms":[5,6]},{"type":1,"atoms":[6,7]},{"type":1,"atoms":[7,2]},{"type":1,"atoms":[2,1]}]}} \ No newline at end of file diff --git a/api/tests/integration/tests/formats/reactions/pathway9.ket b/api/tests/integration/tests/formats/reactions/pathway9.ket new file mode 100644 index 0000000000..2400b7e8c4 --- /dev/null +++ b/api/tests/integration/tests/formats/reactions/pathway9.ket @@ -0,0 +1 @@ +{"root":{"nodes":[{"$ref":"mol0"},{"$ref":"mol1"},{"$ref":"mol2"},{"$ref":"mol3"},{"$ref":"mol4"},{"$ref":"mol5"},{"$ref":"mol6"},{"$ref":"mol7"},{"$ref":"mol8"},{"$ref":"mol9"},{"$ref":"mol10"},{"$ref":"mol11"},{"$ref":"mol12"},{"$ref":"mol13"},{"$ref":"mol14"},{"$ref":"mol15"},{"type":"arrow","data":{"mode":"open-angle","pos":[{"x":2.6194000244140627,"y":4.124800205230713,"z":0.0},{"x":4.1194000244140629,"y":4.124800205230713,"z":0.0}]}},{"type":"multi-tailed-arrow","data":{"head":{"position":{"x":27.17820167541504,"y":19.806150436401368,"z":0.0}},"spine":{"pos":[{"x":26.17820167541504,"y":25.366600036621095,"z":0.0},{"x":26.17820167541504,"y":14.245699882507325,"z":0.0}]},"tails":{"pos":[{"x":25.67820167541504,"y":25.366600036621095,"z":0.0},{"x":25.67820167541504,"y":14.245699882507325,"z":0.0}]},"zOrder":0}},{"type":"arrow","data":{"mode":"open-angle","pos":[{"x":21.163801193237306,"y":14.24570083618164,"z":0.0},{"x":22.676902770996095,"y":14.245699882507325,"z":0.0}]}},{"type":"arrow","data":{"mode":"open-angle","pos":[{"x":2.7320003509521486,"y":14.24570083618164,"z":0.0},{"x":4.5186004638671879,"y":14.24570083618164,"z":0.0}]}},{"type":"arrow","data":{"mode":"open-angle","pos":[{"x":21.163801193237306,"y":25.366600036621095,"z":0.0},{"x":22.663801193237306,"y":25.366600036621095,"z":0.0}]}},{"type":"multi-tailed-arrow","data":{"head":{"position":{"x":4.232000350952148,"y":25.366600036621095,"z":0.0}},"spine":{"pos":[{"x":3.2320003509521486,"y":27.498849868774415,"z":0.0},{"x":3.2320003509521486,"y":23.234352111816408,"z":0.0}]},"tails":{"pos":[{"x":2.7320003509521486,"y":27.498849868774415,"z":0.0},{"x":2.7320003509521486,"y":23.234352111816408,"z":0.0}]},"zOrder":0}},{"type":"multi-tailed-arrow","data":{"head":{"position":{"x":10.887200355529786,"y":37.020423889160159,"z":0.0}},"spine":{"pos":[{"x":9.887200355529786,"y":41.77939987182617,"z":0.0},{"x":9.887200355529786,"y":32.26144790649414,"z":0.0}]},"tails":{"pos":[{"x":9.387200355529786,"y":41.77939987182617,"z":0.0},{"x":9.387200355529786,"y":37.15544891357422,"z":0.0},{"x":9.387200355529786,"y":32.26144790649414,"z":0.0}]},"zOrder":0}},{"type":"multi-tailed-arrow","data":{"head":{"position":{"x":4.789100646972656,"y":41.77939987182617,"z":0.0}},"spine":{"pos":[{"x":3.230299949645996,"y":43.91444778442383,"z":0.0},{"x":3.230299949645996,"y":39.64434814453125,"z":0.0}]},"tails":{"pos":[{"x":2.730299949645996,"y":43.91444778442383,"z":0.0},{"x":2.730299949645996,"y":39.64434814453125,"z":0.0}]},"zOrder":0}}]},"mol0":{"type":"molecule","atoms":[{"label":"C","location":[0.9282002449035645,23.998802185058595,0.0]},{"label":"C","location":[1.4250001907348633,22.46990394592285,0.0]},{"label":"C","location":[1.7320001125335694,23.409202575683595,0.0]},{"label":"C","location":[0.4315004348754883,22.46990394592285,0.0]},{"label":"C","location":[0.12430000305175781,23.409202575683595,0.0]}],"bonds":[{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,3]},{"type":1,"atoms":[3,1]},{"type":2,"atoms":[1,2]},{"type":1,"atoms":[2,0]}]},"mol1":{"type":"molecule","atoms":[{"label":"C","location":[0.0,27.99880027770996,0.0]},{"label":"C","location":[0.0,26.99880027770996,0.0]},{"label":"C","location":[0.8659999966621399,26.49880027770996,0.0]},{"label":"C","location":[1.7320001125335694,26.99880027770996,0.0]},{"label":"C","location":[1.7320001125335694,27.99880027770996,0.0]},{"label":"C","location":[0.8659999966621399,28.498899459838868,0.0]}],"bonds":[{"type":1,"atoms":[5,0]},{"type":1,"atoms":[0,1]},{"type":1,"atoms":[1,2]},{"type":1,"atoms":[2,3]},{"type":1,"atoms":[3,4]},{"type":1,"atoms":[4,5]}]},"mol2":{"type":"molecule","atoms":[{"label":"C","location":[10.600299835205079,11.232000350952149,0.0]},{"label":"C","location":[10.665599822998047,9.749600410461426,0.0]},{"label":"C","location":[10.205100059509278,10.47189998626709,0.0]},{"label":"C","location":[11.521400451660157,9.787300109863282,0.0]},{"label":"C","location":[11.456100463867188,11.269599914550782,0.0]},{"label":"C","location":[11.91670036315918,10.547300338745118,0.0]},{"label":"C","location":[14.806600570678711,10.063600540161133,0.0]},{"label":"C","location":[14.63230037689209,11.53700065612793,0.0]},{"label":"C","location":[14.294099807739258,10.75,0.0]},{"label":"C","location":[15.482999801635743,11.637700080871582,0.0]},{"label":"C","location":[15.657299995422364,10.164199829101563,0.0]},{"label":"C","location":[15.995500564575196,10.951200485229493,0.0]},{"label":"C","location":[6.417099952697754,11.89780044555664,0.0]},{"label":"C","location":[7.782000541687012,11.31570053100586,0.0]},{"label":"C","location":[7.267600059509277,12.000800132751465,0.0]},{"label":"C","location":[7.445899963378906,10.527800559997559,0.0]},{"label":"C","location":[6.081200122833252,11.10990047454834,0.0]},{"label":"C","location":[6.5954999923706059,10.424799919128418,0.0]},{"label":"C","location":[6.314300537109375,12.748200416564942,0.0]},{"label":"C","location":[7.500699996948242,13.639100074768067,0.0]},{"label":"C","location":[7.164600372314453,12.851200103759766,0.0]},{"label":"C","location":[6.986400604248047,14.324199676513672,0.0]},{"label":"C","location":[5.799900054931641,13.433300018310547,0.0]},{"label":"C","location":[6.135900497436523,14.221200942993164,0.0]},{"label":"C","location":[7.219500541687012,15.96250057220459,0.0]},{"label":"C","location":[6.032900333404541,15.071599960327149,0.0]},{"label":"C","location":[6.883399963378906,15.174600601196289,0.0]},{"label":"C","location":[5.5186004638671879,15.75670051574707,0.0]},{"label":"C","location":[6.705100059509277,16.647600173950197,0.0]},{"label":"C","location":[5.854700088500977,16.544599533081056,0.0]},{"label":"C","location":[20.163799285888673,12.494300842285157,0.0]},{"label":"C","location":[18.81920051574707,13.121400833129883,0.0]},{"label":"C","location":[19.672500610351564,13.196000099182129,0.0]},{"label":"C","location":[18.45709991455078,12.345000267028809,0.0]},{"label":"C","location":[19.801799774169923,11.717900276184082,0.0]},{"label":"C","location":[18.948501586914064,11.643301010131836,0.0]},{"label":"C","location":[18.25320053100586,14.67650032043457,0.0]},{"label":"C","location":[19.597900390625,14.049400329589844,0.0]},{"label":"C","location":[18.74449920654297,13.974800109863282,0.0]},{"label":"C","location":[19.95989990234375,14.825700759887696,0.0]},{"label":"C","location":[18.61520004272461,15.452800750732422,0.0]},{"label":"C","location":[19.46860122680664,15.52750015258789,0.0]},{"label":"C","location":[18.049301147460939,17.00790023803711,0.0]},{"label":"C","location":[19.394001007080079,16.380901336669923,0.0]},{"label":"C","location":[18.54050064086914,16.30620002746582,0.0]},{"label":"C","location":[19.756000518798829,17.15730094909668,0.0]},{"label":"C","location":[18.411300659179689,17.784299850463868,0.0]},{"label":"C","location":[19.264699935913087,17.85900115966797,0.0]},{"label":"C","location":[9.548900604248047,17.375999450683595,0.0]},{"label":"C","location":[10.686200141906739,18.328899383544923,0.0]},{"label":"C","location":[9.842500686645508,18.180700302124025,0.0]},{"label":"C","location":[11.236400604248047,17.672300338745118,0.0]},{"label":"C","location":[10.099000930786133,16.71929931640625,0.0]},{"label":"C","location":[10.942700386047364,16.867401123046876,0.0]},{"label":"C","location":[14.052900314331055,18.704200744628908,0.0]},{"label":"C","location":[15.369100570678711,18.019399642944337,0.0]},{"label":"C","location":[14.908599853515625,18.74180030822754,0.0]},{"label":"C","location":[14.973800659179688,17.2593994140625,0.0]},{"label":"C","location":[13.657600402832032,17.94420051574707,0.0]},{"label":"C","location":[14.118000030517579,17.221799850463868,0.0]}],"bonds":[{"type":2,"atoms":[2,0]},{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,5]},{"type":1,"atoms":[5,3]},{"type":2,"atoms":[3,1]},{"type":1,"atoms":[1,2]},{"type":2,"atoms":[8,6]},{"type":1,"atoms":[6,10]},{"type":2,"atoms":[10,11]},{"type":1,"atoms":[11,9]},{"type":2,"atoms":[9,7]},{"type":1,"atoms":[7,8]},{"type":1,"atoms":[5,8]},{"type":2,"atoms":[14,12]},{"type":1,"atoms":[12,16]},{"type":2,"atoms":[16,17]},{"type":1,"atoms":[17,15]},{"type":2,"atoms":[15,13]},{"type":1,"atoms":[13,14]},{"type":1,"atoms":[13,2]},{"type":2,"atoms":[20,18]},{"type":1,"atoms":[18,22]},{"type":2,"atoms":[22,23]},{"type":1,"atoms":[23,21]},{"type":2,"atoms":[21,19]},{"type":1,"atoms":[19,20]},{"type":1,"atoms":[18,12]},{"type":1,"atoms":[20,14]},{"type":2,"atoms":[26,24]},{"type":1,"atoms":[24,28]},{"type":2,"atoms":[28,29]},{"type":1,"atoms":[29,27]},{"type":2,"atoms":[27,25]},{"type":1,"atoms":[25,26]},{"type":1,"atoms":[21,26]},{"type":1,"atoms":[23,25]},{"type":2,"atoms":[32,30]},{"type":1,"atoms":[30,34]},{"type":2,"atoms":[34,35]},{"type":1,"atoms":[35,33]},{"type":2,"atoms":[33,31]},{"type":1,"atoms":[31,32]},{"type":1,"atoms":[11,33]},{"type":2,"atoms":[38,36]},{"type":1,"atoms":[36,40]},{"type":2,"atoms":[40,41]},{"type":1,"atoms":[41,39]},{"type":2,"atoms":[39,37]},{"type":1,"atoms":[37,38]},{"type":2,"atoms":[44,42]},{"type":1,"atoms":[42,46]},{"type":2,"atoms":[46,47]},{"type":1,"atoms":[47,45]},{"type":2,"atoms":[45,43]},{"type":1,"atoms":[43,44]},{"type":1,"atoms":[38,31]},{"type":1,"atoms":[37,32]},{"type":1,"atoms":[44,40]},{"type":1,"atoms":[43,41]},{"type":2,"atoms":[50,48]},{"type":1,"atoms":[48,52]},{"type":2,"atoms":[52,53]},{"type":1,"atoms":[53,51]},{"type":2,"atoms":[51,49]},{"type":1,"atoms":[49,50]},{"type":2,"atoms":[56,54]},{"type":1,"atoms":[54,58]},{"type":2,"atoms":[58,59]},{"type":1,"atoms":[59,57]},{"type":2,"atoms":[57,55]},{"type":1,"atoms":[55,56]},{"type":1,"atoms":[24,48]},{"type":1,"atoms":[51,58]},{"type":1,"atoms":[55,42]}]},"mol3":{"type":"molecule","atoms":[{"label":"C","location":[0.00170135498046875,14.745601654052735,0.0]},{"label":"C","location":[1.7320013046264649,14.746101379394532,0.0]},{"label":"C","location":[0.8684015274047852,15.245701789855957,0.0]},{"label":"C","location":[1.7320013046264649,13.745201110839844,0.0]},{"label":"C","location":[0.00170135498046875,13.740701675415039,0.0]},{"label":"C","location":[0.8706011772155762,13.245701789855957,0.0]}],"bonds":[{"type":2,"atoms":[2,0]},{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,5]},{"type":1,"atoms":[5,3]},{"type":2,"atoms":[3,1]},{"type":1,"atoms":[1,2]}]},"mol4":{"type":"molecule","atoms":[{"label":"C","location":[10.470600128173829,22.792699813842775,0.0]},{"label":"C","location":[10.543401718139649,21.24180030822754,0.0]},{"label":"C","location":[10.059301376342774,21.996301651000978,0.0]},{"label":"C","location":[11.438800811767579,21.28390121459961,0.0]},{"label":"C","location":[11.36600112915039,22.834800720214845,0.0]},{"label":"C","location":[11.850101470947266,22.080400466918947,0.0]},{"label":"C","location":[14.785100936889649,21.580900192260743,0.0]},{"label":"C","location":[14.584701538085938,23.120500564575197,0.0]},{"label":"C","location":[14.240501403808594,22.292800903320314,0.0]},{"label":"C","location":[15.473701477050782,23.236101150512697,0.0]},{"label":"C","location":[15.674001693725586,21.696500778198243,0.0]},{"label":"C","location":[16.01820182800293,22.52410125732422,0.0]},{"label":"C","location":[6.136600494384766,23.415700912475587,0.0]},{"label":"C","location":[7.55940055847168,22.79400062561035,0.0]},{"label":"C","location":[7.027500152587891,23.515600204467775,0.0]},{"label":"C","location":[7.200401306152344,21.97260093688965,0.0]},{"label":"C","location":[5.777700424194336,22.594301223754884,0.0]},{"label":"C","location":[6.309600830078125,21.87270164489746,0.0]},{"label":"C","location":[6.036701202392578,24.306501388549806,0.0]},{"label":"C","location":[7.286500930786133,25.227800369262697,0.0]},{"label":"C","location":[6.927600860595703,24.406400680541993,0.0]},{"label":"C","location":[6.7545013427734379,25.94940185546875,0.0]},{"label":"C","location":[5.504800796508789,25.028100967407228,0.0]},{"label":"C","location":[5.863801956176758,25.84950065612793,0.0]},{"label":"C","location":[7.013601303100586,27.661602020263673,0.0]},{"label":"C","location":[5.7639007568359379,26.74030113220215,0.0]},{"label":"C","location":[6.654701232910156,26.840200424194337,0.0]},{"label":"C","location":[5.232000350952148,27.46190071105957,0.0]},{"label":"C","location":[6.481601715087891,28.383100509643556,0.0]},{"label":"C","location":[5.590801239013672,28.283201217651368,0.0]},{"label":"C","location":[20.163801193237306,24.19300079345703,0.0]},{"label":"C","location":[18.613901138305665,24.283599853515626,0.0]},{"label":"C","location":[19.415102005004884,24.685701370239259,0.0]},{"label":"C","location":[18.561601638793947,23.388700485229493,0.0]},{"label":"C","location":[20.111600875854493,23.2981014251709,0.0]},{"label":"C","location":[19.310401916503908,22.895999908447267,0.0]},{"label":"C","location":[17.463001251220704,25.577499389648439,0.0]},{"label":"C","location":[19.01300048828125,25.486801147460939,0.0]},{"label":"C","location":[18.211700439453126,25.084701538085939,0.0]},{"label":"C","location":[19.065200805664064,26.38170051574707,0.0]},{"label":"C","location":[17.515300750732423,26.472301483154298,0.0]},{"label":"C","location":[18.3164005279541,26.874500274658204,0.0]},{"label":"C","location":[16.364301681518556,27.76620101928711,0.0]},{"label":"C","location":[17.9143009185791,27.675601959228517,0.0]},{"label":"C","location":[17.113101959228517,27.273500442504884,0.0]},{"label":"C","location":[17.966501235961915,28.570499420166017,0.0]},{"label":"C","location":[16.416601181030275,28.661100387573243,0.0]},{"label":"C","location":[17.21780014038086,29.063201904296876,0.0]},{"label":"C","location":[9.332300186157227,28.723400115966798,0.0]},{"label":"C","location":[10.690900802612305,29.475000381469728,0.0]},{"label":"C","location":[9.794700622558594,29.49140167236328,0.0]},{"label":"C","location":[11.124801635742188,28.69070053100586,0.0]},{"label":"C","location":[9.766401290893555,27.939001083374025,0.0]},{"label":"C","location":[10.662601470947266,27.922700881958009,0.0]},{"label":"C","location":[13.593400955200196,28.912900924682618,0.0]},{"label":"C","location":[14.017601013183594,27.525800704956056,0.0]},{"label":"C","location":[14.309301376342774,28.37350082397461,0.0]},{"label":"C","location":[13.121301651000977,27.541400909423829,0.0]},{"label":"C","location":[12.859100341796875,28.398601531982423,0.0]}],"bonds":[{"type":2,"atoms":[2,0]},{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,5]},{"type":1,"atoms":[5,3]},{"type":2,"atoms":[3,1]},{"type":1,"atoms":[1,2]},{"type":2,"atoms":[8,6]},{"type":1,"atoms":[6,10]},{"type":2,"atoms":[10,11]},{"type":1,"atoms":[11,9]},{"type":2,"atoms":[9,7]},{"type":1,"atoms":[7,8]},{"type":1,"atoms":[5,8]},{"type":2,"atoms":[14,12]},{"type":1,"atoms":[12,16]},{"type":2,"atoms":[16,17]},{"type":1,"atoms":[17,15]},{"type":2,"atoms":[15,13]},{"type":1,"atoms":[13,14]},{"type":1,"atoms":[13,2]},{"type":2,"atoms":[20,18]},{"type":1,"atoms":[18,22]},{"type":2,"atoms":[22,23]},{"type":1,"atoms":[23,21]},{"type":2,"atoms":[21,19]},{"type":1,"atoms":[19,20]},{"type":1,"atoms":[18,12]},{"type":1,"atoms":[20,14]},{"type":2,"atoms":[26,24]},{"type":1,"atoms":[24,28]},{"type":2,"atoms":[28,29]},{"type":1,"atoms":[29,27]},{"type":2,"atoms":[27,25]},{"type":1,"atoms":[25,26]},{"type":1,"atoms":[21,26]},{"type":1,"atoms":[23,25]},{"type":2,"atoms":[32,30]},{"type":1,"atoms":[30,34]},{"type":2,"atoms":[34,35]},{"type":1,"atoms":[35,33]},{"type":2,"atoms":[33,31]},{"type":1,"atoms":[31,32]},{"type":1,"atoms":[11,33]},{"type":2,"atoms":[38,36]},{"type":1,"atoms":[36,40]},{"type":2,"atoms":[40,41]},{"type":1,"atoms":[41,39]},{"type":2,"atoms":[39,37]},{"type":1,"atoms":[37,38]},{"type":2,"atoms":[44,42]},{"type":1,"atoms":[42,46]},{"type":2,"atoms":[46,47]},{"type":1,"atoms":[47,45]},{"type":2,"atoms":[45,43]},{"type":1,"atoms":[43,44]},{"type":1,"atoms":[38,31]},{"type":1,"atoms":[37,32]},{"type":1,"atoms":[44,40]},{"type":1,"atoms":[43,41]},{"type":2,"atoms":[50,48]},{"type":1,"atoms":[48,52]},{"type":2,"atoms":[52,53]},{"type":1,"atoms":[53,51]},{"type":2,"atoms":[51,49]},{"type":1,"atoms":[49,50]},{"type":1,"atoms":[24,48]},{"type":1,"atoms":[54,58]},{"type":2,"atoms":[58,57]},{"type":1,"atoms":[57,55]},{"type":2,"atoms":[55,56]},{"type":1,"atoms":[56,54]},{"type":1,"atoms":[51,58]},{"type":1,"atoms":[56,46]}]},"mol5":{"type":"molecule","atoms":[{"label":"C","location":[0.8097000122070313,4.89484977722168,0.0]},{"label":"C","location":[1.3101005554199219,3.3547496795654299,0.0]},{"label":"C","location":[1.6194000244140626,4.3009490966796879,0.0]},{"label":"C","location":[0.3094005584716797,3.3547496795654299,0.0]},{"label":"C","location":[0.0,4.3009490966796879,0.0]}],"bonds":[{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,3]},{"type":1,"atoms":[3,1]},{"type":2,"atoms":[1,2]},{"type":1,"atoms":[2,0]}]},"mol6":{"type":"molecule","atoms":[{"label":"C","location":[23.676902770996095,13.813199996948243,0.0]},{"label":"C","location":[24.678203582763673,13.813199996948243,0.0]},{"label":"C","location":[24.177602767944337,14.678199768066407,0.0]}],"bonds":[{"type":1,"atoms":[0,1]},{"type":1,"atoms":[1,2]},{"type":1,"atoms":[2,0]}]},"mol7":{"type":"molecule","atoms":[{"label":"C","location":[24.67820167541504,24.869050979614259,0.0]},{"label":"C","location":[24.674501419067384,25.864151000976564,0.0]},{"label":"C","location":[23.666301727294923,24.88195037841797,0.0]},{"label":"C","location":[23.663801193237306,25.864151000976564,0.0]}],"bonds":[{"type":1,"atoms":[0,1]},{"type":1,"atoms":[1,3]},{"type":1,"atoms":[3,2]},{"type":1,"atoms":[2,0]}]},"mol8":{"type":"molecule","atoms":[{"label":"C","location":[0.0,40.1442985534668,0.0]},{"label":"C","location":[1.730299949645996,40.144798278808597,0.0]},{"label":"C","location":[0.8668000102043152,40.64440155029297,0.0]},{"label":"C","location":[1.730299949645996,39.143798828125,0.0]},{"label":"C","location":[0.0,39.13929748535156,0.0]},{"label":"C","location":[0.8690000176429749,38.6442985534668,0.0]}],"bonds":[{"type":2,"atoms":[2,0]},{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,5]},{"type":1,"atoms":[5,3]},{"type":2,"atoms":[3,1]},{"type":1,"atoms":[1,2]}]},"mol9":{"type":"molecule","atoms":[{"label":"C","location":[0.9205999374389648,44.68449783325195,0.0]},{"label":"C","location":[1.4210000038146973,43.1443977355957,0.0]},{"label":"C","location":[1.730299949645996,44.0906982421875,0.0]},{"label":"C","location":[0.4203000068664551,43.1443977355957,0.0]},{"label":"C","location":[0.1108999252319336,44.0906982421875,0.0]}],"bonds":[{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,3]},{"type":1,"atoms":[3,1]},{"type":2,"atoms":[1,2]},{"type":1,"atoms":[2,0]}]},"mol10":{"type":"molecule","atoms":[{"label":"C","location":[5.789100646972656,42.27939987182617,0.0]},{"label":"C","location":[5.789100646972656,41.27939987182617,0.0]},{"label":"C","location":[6.6551008224487309,40.77939987182617,0.0]},{"label":"C","location":[7.521200180053711,41.27939987182617,0.0]},{"label":"C","location":[7.521200180053711,42.27939987182617,0.0]},{"label":"C","location":[6.6551008224487309,42.77939987182617,0.0]},{"label":"C","location":[8.387200355529786,42.77939987182617,0.0]}],"bonds":[{"type":1,"atoms":[5,0]},{"type":1,"atoms":[0,1]},{"type":1,"atoms":[1,2]},{"type":1,"atoms":[2,3]},{"type":1,"atoms":[3,4]},{"type":1,"atoms":[4,5]},{"type":1,"atoms":[4,6]}]},"mol11":{"type":"molecule","atoms":[{"label":"C","location":[7.387200355529785,32.531497955322269,0.0]},{"label":"C","location":[7.887600898742676,30.991397857666017,0.0]},{"label":"C","location":[8.19680118560791,31.937698364257814,0.0]},{"label":"C","location":[6.8867998123168949,30.991397857666017,0.0]},{"label":"C","location":[6.577500343322754,31.937698364257814,0.0]},{"label":"C","location":[7.387200355529785,33.531497955322269,0.0]},{"label":"C","location":[8.387200355529786,33.531497955322269,0.0]}],"bonds":[{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,3]},{"type":1,"atoms":[3,1]},{"type":2,"atoms":[1,2]},{"type":1,"atoms":[2,0]},{"type":2,"atoms":[0,5]},{"type":1,"atoms":[5,6]}]},"mol12":{"type":"molecule","atoms":[{"label":"C","location":[6.196199893951416,37.661895751953128,0.0]},{"label":"C","location":[6.980099678039551,38.279396057128909,0.0]},{"label":"C","location":[7.953099727630615,38.0568962097168,0.0]},{"label":"C","location":[8.387199401855469,37.161094665527347,0.0]},{"label":"C","location":[6.201699733734131,36.65469741821289,0.0]},{"label":"C","location":[7.953799724578857,36.253997802734378,0.0]},{"label":"C","location":[6.980099678039551,36.031497955322269,0.0]},{"label":"C","location":[5.230299949645996,37.92069625854492,0.0]}],"bonds":[{"type":1,"atoms":[1,0]},{"type":1,"atoms":[0,4]},{"type":1,"atoms":[4,6]},{"type":1,"atoms":[6,5]},{"type":1,"atoms":[5,3]},{"type":1,"atoms":[3,2]},{"type":1,"atoms":[2,1]},{"type":1,"atoms":[0,7]}]},"mol13":{"type":"molecule","atoms":[{"label":"C","location":[10.357999801635743,1.5508995056152344,0.0]},{"label":"C","location":[10.430801391601563,0.0,0.0]},{"label":"C","location":[9.946701049804688,0.7545013427734375,0.0]},{"label":"C","location":[11.326200485229493,0.04210090637207031,0.0]},{"label":"C","location":[11.253400802612305,1.5930004119873047,0.0]},{"label":"C","location":[11.73750114440918,0.8386001586914063,0.0]},{"label":"C","location":[14.672500610351563,0.3390998840332031,0.0]},{"label":"C","location":[14.472101211547852,1.8787002563476563,0.0]},{"label":"C","location":[14.127901077270508,1.0510005950927735,0.0]},{"label":"C","location":[15.361101150512696,1.9943008422851563,0.0]},{"label":"C","location":[15.5614013671875,0.4547004699707031,0.0]},{"label":"C","location":[15.905601501464844,1.2823009490966797,0.0]},{"label":"C","location":[6.02400016784668,2.173900604248047,0.0]},{"label":"C","location":[7.446800231933594,1.5522003173828126,0.0]},{"label":"C","location":[6.914899826049805,2.2737998962402345,0.0]},{"label":"C","location":[7.087800979614258,0.7308006286621094,0.0]},{"label":"C","location":[5.66510009765625,1.3525009155273438,0.0]},{"label":"C","location":[6.197000503540039,0.6309013366699219,0.0]},{"label":"C","location":[5.924100875854492,3.0647010803222658,0.0]},{"label":"C","location":[7.173900604248047,3.9860000610351564,0.0]},{"label":"C","location":[6.815000534057617,3.164600372314453,0.0]},{"label":"C","location":[6.641901016235352,4.7076005935668949,0.0]},{"label":"C","location":[5.392200469970703,3.7863006591796877,0.0]},{"label":"C","location":[5.751201629638672,4.607700347900391,0.0]},{"label":"C","location":[6.9010009765625,6.419800758361816,0.0]},{"label":"C","location":[5.651300430297852,5.498500823974609,0.0]},{"label":"C","location":[6.54210090637207,5.598400115966797,0.0]},{"label":"C","location":[5.1194000244140629,6.220100402832031,0.0]},{"label":"C","location":[6.369001388549805,7.141300201416016,0.0]},{"label":"C","location":[5.478200912475586,7.041400909423828,0.0]},{"label":"C","location":[20.05120086669922,2.951200485229492,0.0]},{"label":"C","location":[18.501300811767579,3.041799545288086,0.0]},{"label":"C","location":[19.302501678466798,3.4439010620117189,0.0]},{"label":"C","location":[18.44900131225586,2.146900177001953,0.0]},{"label":"C","location":[19.999000549316408,2.0563011169433595,0.0]},{"label":"C","location":[19.19780158996582,1.6541996002197266,0.0]},{"label":"C","location":[17.350400924682618,4.335700035095215,0.0]},{"label":"C","location":[18.900400161743165,4.245000839233398,0.0]},{"label":"C","location":[18.09910011291504,3.842900276184082,0.0]},{"label":"C","location":[18.952600479125978,5.139900207519531,0.0]},{"label":"C","location":[17.402700424194337,5.230500221252441,0.0]},{"label":"C","location":[18.203800201416017,5.632699966430664,0.0]},{"label":"C","location":[16.25170135498047,6.52440071105957,0.0]},{"label":"C","location":[17.801700592041017,6.43380069732666,0.0]},{"label":"C","location":[17.00050163269043,6.031700134277344,0.0]},{"label":"C","location":[17.853900909423829,7.328700065612793,0.0]},{"label":"C","location":[16.304000854492189,7.419300079345703,0.0]},{"label":"C","location":[17.105199813842775,7.8214006423950199,0.0]},{"label":"C","location":[9.21969985961914,7.481600761413574,0.0]},{"label":"C","location":[10.578300476074219,8.233200073242188,0.0]},{"label":"C","location":[9.682100296020508,8.249600410461426,0.0]},{"label":"C","location":[11.012201309204102,7.44890022277832,0.0]},{"label":"C","location":[9.653800964355469,6.697200775146484,0.0]},{"label":"C","location":[10.55000114440918,6.680900573730469,0.0]},{"label":"C","location":[13.48080062866211,7.671100616455078,0.0]},{"label":"C","location":[13.905000686645508,6.284000396728516,0.0]},{"label":"C","location":[14.196701049804688,7.13170051574707,0.0]},{"label":"C","location":[13.00870132446289,6.299600601196289,0.0]},{"label":"C","location":[12.746500015258789,7.156800270080566,0.0]}],"bonds":[{"type":2,"atoms":[2,0]},{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,5]},{"type":1,"atoms":[5,3]},{"type":2,"atoms":[3,1]},{"type":1,"atoms":[1,2]},{"type":2,"atoms":[8,6]},{"type":1,"atoms":[6,10]},{"type":2,"atoms":[10,11]},{"type":1,"atoms":[11,9]},{"type":2,"atoms":[9,7]},{"type":1,"atoms":[7,8]},{"type":1,"atoms":[5,8]},{"type":2,"atoms":[14,12]},{"type":1,"atoms":[12,16]},{"type":2,"atoms":[16,17]},{"type":1,"atoms":[17,15]},{"type":2,"atoms":[15,13]},{"type":1,"atoms":[13,14]},{"type":1,"atoms":[13,2]},{"type":2,"atoms":[20,18]},{"type":1,"atoms":[18,22]},{"type":2,"atoms":[22,23]},{"type":1,"atoms":[23,21]},{"type":2,"atoms":[21,19]},{"type":1,"atoms":[19,20]},{"type":1,"atoms":[18,12]},{"type":1,"atoms":[20,14]},{"type":2,"atoms":[26,24]},{"type":1,"atoms":[24,28]},{"type":2,"atoms":[28,29]},{"type":1,"atoms":[29,27]},{"type":2,"atoms":[27,25]},{"type":1,"atoms":[25,26]},{"type":1,"atoms":[21,26]},{"type":1,"atoms":[23,25]},{"type":2,"atoms":[32,30]},{"type":1,"atoms":[30,34]},{"type":2,"atoms":[34,35]},{"type":1,"atoms":[35,33]},{"type":2,"atoms":[33,31]},{"type":1,"atoms":[31,32]},{"type":1,"atoms":[11,33]},{"type":2,"atoms":[38,36]},{"type":1,"atoms":[36,40]},{"type":2,"atoms":[40,41]},{"type":1,"atoms":[41,39]},{"type":2,"atoms":[39,37]},{"type":1,"atoms":[37,38]},{"type":2,"atoms":[44,42]},{"type":1,"atoms":[42,46]},{"type":2,"atoms":[46,47]},{"type":1,"atoms":[47,45]},{"type":2,"atoms":[45,43]},{"type":1,"atoms":[43,44]},{"type":1,"atoms":[38,31]},{"type":1,"atoms":[37,32]},{"type":1,"atoms":[44,40]},{"type":1,"atoms":[43,41]},{"type":2,"atoms":[50,48]},{"type":1,"atoms":[48,52]},{"type":2,"atoms":[52,53]},{"type":1,"atoms":[53,51]},{"type":2,"atoms":[51,49]},{"type":1,"atoms":[49,50]},{"type":1,"atoms":[24,48]},{"type":1,"atoms":[54,58]},{"type":2,"atoms":[58,57]},{"type":1,"atoms":[57,55]},{"type":2,"atoms":[55,56]},{"type":1,"atoms":[56,54]},{"type":1,"atoms":[51,58]},{"type":1,"atoms":[56,46]}]},"mol14":{"type":"molecule","atoms":[{"label":"C","location":[28.17820167541504,19.304950714111329,0.0]},{"label":"C","location":[28.178401947021486,20.307449340820314,0.0]},{"label":"C","location":[28.883602142333986,21.012649536132814,0.0]},{"label":"C","location":[28.88380241394043,18.59954833984375,0.0]},{"label":"C","location":[29.886201858520509,18.59954833984375,0.0]},{"label":"C","location":[30.591602325439454,19.304950714111329,0.0]},{"label":"C","location":[30.591503143310548,20.307449340820314,0.0]},{"label":"C","location":[29.886201858520509,21.01274871826172,0.0]}],"bonds":[{"type":1,"atoms":[1,0]},{"type":1,"atoms":[0,3]},{"type":1,"atoms":[3,4]},{"type":1,"atoms":[4,5]},{"type":1,"atoms":[5,6]},{"type":1,"atoms":[6,7]},{"type":1,"atoms":[7,2]},{"type":1,"atoms":[2,1]}]},"mol15":{"type":"molecule","atoms":[{"label":"C","location":[12.753199577331543,37.87387466430664,0.0]},{"label":"C","location":[14.483498573303223,37.87437438964844,0.0]},{"label":"C","location":[13.619999885559082,38.37397384643555,0.0]},{"label":"C","location":[14.483498573303223,36.87347412109375,0.0]},{"label":"C","location":[12.753199577331543,36.86897277832031,0.0]},{"label":"C","location":[13.622199058532715,36.37397384643555,0.0]},{"label":"C","location":[11.887200355529786,36.36897277832031,0.0]},{"label":"C","location":[12.915099143981934,35.666873931884769,0.0]},{"label":"C","location":[15.190600395202637,36.16637420654297,0.0]}],"bonds":[{"type":2,"atoms":[2,0]},{"type":1,"atoms":[0,4]},{"type":2,"atoms":[4,5]},{"type":1,"atoms":[5,3]},{"type":2,"atoms":[3,1]},{"type":1,"atoms":[1,2]},{"type":1,"atoms":[4,6]},{"type":2,"atoms":[5,7]},{"type":1,"atoms":[3,8]}]}} \ No newline at end of file diff --git a/api/tests/integration/tests/formats/ref/ket_retro_arrow_and_simple_arrow.b64cdx b/api/tests/integration/tests/formats/ref/ket_retro_arrow_and_simple_arrow.b64cdx index c53b59b060..216a358b6f 100644 --- a/api/tests/integration/tests/formats/ref/ket_retro_arrow_and_simple_arrow.b64cdx +++ b/api/tests/integration/tests/formats/ref/ket_retro_arrow_and_simple_arrow.b64cdx @@ -1 +1 @@ -VmpDRDAxMDAEAwIBAAAAAAAAAAAAAAAAAAAAAAUIBAAAAB4AGggCAAMAGwgCAAQAAAEkAAAAAgACAOn9BQBBcmlhbAMA6f0PAFRpbWVzIE5ldyBSb21hbgADMgAIAP///////wAAAAAAAP//AAAAAP////8AAAAA//8AAAAA/////wAAAAD/////AAD//wGAAAAAABAIAgABAA8IAgABAAOABAAAAASABQAAAAACCADFGc4AZATuAAAABIAGAAAAAAIIAMkZsABkBO4AAAAEgAcAAAAAAggAyxmhAFYJ1AAAAASACAAAAAIEAgAHACsEAgACAAACCADLGaEAev8HAQaAAAAAAAACCADLGaEAev8HASMIAQAAAAcZAAIAAAADAGAAyAAAAAIAAwAgAMgAAABOSDIAAAAABYAZAAAABAYEAAUAAAAFBgQABgAAAAAABYAaAAAABAYEAAYAAAAFBgQABwAAAAAABYAbAAAABAYEAAYAAAAFBgQACAAAAAAAAAADgAkAAAAEgAoAAAACBAIACAArBAIAAQAAAggAyRmwAII/fAEGgAAAAAAAAggAyRmwAII/fAEjCAEAAAAHDgABAAAAAwBgAMgAAABPSAAAAAAEgAsAAAAAAggAxxm/AGI6lgEAAASADAAAAAIEAgAIACsEAgABAAACCADJGbAAuDWwAQaAAAAAAAACCADJGbAAuDWwASMIAQAAAAcOAAEAAAADAGAAyAAAAE9IAAAAAAWAHAAAAAQGBAAKAAAABQYEAAsAAAAAAAWAHQAAAAQGBAALAAAABQYEAAwAAAAAAAAAA4ANAAAABIAOAAAAAAIIAHsEnACQ32gCAAAEgA8AAAAAAggAuqatAJgkgQIAAASAEAAAAAACCAAWL8oAgN93AgAABIARAAAAAAIIABYvygCc31kCAAAEgBIAAAAAAggAuqatAISaUAIAAAWAHgAAAAQGBAAOAAAABQYEABIAAAAAAAWAHwAAAAQGBAASAAAABQYEABEAAAAAAAWAIAAAAAQGBAARAAAABQYEABAAAAAAAAWAIQAAAAQGBAAQAAAABQYEAA8AAAAAAAWAIgAAAAQGBAAPAAAABQYEAA4AAAAAAAAAIYATAAAABAIQAMcZswDuIFcBxxmzAPRVIwE3CgIAAAA1CgIAAgAvCgIAAwAgCgIAWAIwCgIAWAIxCgIAlgAzCgIAWAIHAgwA7qBWAccZswAAAAAACAIMAPTVIwHHGbMAAAAAAAAAB4AjAAAAEwAEABMAAAAACgIAAQACCgIAIAAgCgIAWAIEAhAAxxmzAO6gVgHHGbMA9NUjAQAAIYAWAAAABAIQAG8urgD0VyQCby6uAFqT7gE3CgIAAAAvCgIAAQAgCgIAyggxCgIAMwI1CgIAAgAwCgIAGQAHAgwA9FckAm8urgAAAAAACAIMAFqT7gFvLq4AAAAAAAAADYAAAAAADoAAAAAAAQwEAAkAAAACDAQABAAAAAQMBAAjAAAAAAAOgAAAAAABDAQABAAAAAIMBAANAAAABAwEABYAAAAAAAAAAAAAAAAA \ No newline at end of file +VmpDRDAxMDAEAwIBAAAAAAAAAAAAAAAAAAAAAAUIBAAAAB4AGggCAAMAGwgCAAQAAAEkAAAAAgACAOn9BQBBcmlhbAMA6f0PAFRpbWVzIE5ldyBSb21hbgADMgAIAP///////wAAAAAAAP//AAAAAP////8AAAAA//8AAAAA/////wAAAAD/////AAD//wGAAAAAABAIAgABAA8IAgABAAOABAAAAASABQAAAAACCADFGc4AZATuAAAABIAGAAAAAAIIAMkZsABkBO4AAAAEgAcAAAAAAggAyxmhAFYJ1AAAAASACAAAAAIEAgAHACsEAgACAAACCADLGaEAev8HAQaAAAAAAAACCADLGaEAev8HASMIAQAAAAcZAAIAAAADAGAAyAAAAAIAAwAgAMgAAABOSDIAAAAABYAZAAAABAYEAAUAAAAFBgQABgAAAAAABYAaAAAABAYEAAYAAAAFBgQABwAAAAAABYAbAAAABAYEAAYAAAAFBgQACAAAAAAAAAADgAkAAAAEgAoAAAACBAIACAArBAIAAQAAAggAyRmwAII/fAEGgAAAAAAAAggAyRmwAII/fAEjCAEAAAAHDgABAAAAAwBgAMgAAABPSAAAAAAEgAsAAAAAAggAxxm/AGI6lgEAAASADAAAAAIEAgAIACsEAgABAAACCADJGbAAuDWwAQaAAAAAAAACCADJGbAAuDWwASMIAQAAAAcOAAEAAAADAGAAyAAAAE9IAAAAAAWAHAAAAAQGBAAKAAAABQYEAAsAAAAAAAWAHQAAAAQGBAALAAAABQYEAAwAAAAAAAAAA4ANAAAABIAOAAAAAAIIAHsEnACQ32gCAAAEgA8AAAAAAggAuqatAJgkgQIAAASAEAAAAAACCAAWL8oAgN93AgAABIARAAAAAAIIABYvygCc31kCAAAEgBIAAAAAAggAuqatAISaUAIAAAWAHgAAAAQGBAAOAAAABQYEABIAAAAAAAWAHwAAAAQGBAASAAAABQYEABEAAAAAAAWAIAAAAAQGBAARAAAABQYEABAAAAAAAAWAIQAAAAQGBAAQAAAABQYEAA8AAAAAAAWAIgAAAAQGBAAPAAAABQYEAA4AAAAAAAAAIYATAAAABAIQAMcZswDuIFcBxxmzAPRVIwE3CgIAAAA1CgIAAgAvCgIAAwAgCgIAWAIwCgIAWAIxCgIAlgAzCgIAWAIHAgwA7qBWAccZswAAAAAACAIMAPTVIwHHGbMAAAAAAAAAB4AjAAAAEwAEABMAAAAACgIAAQACCgIAIAAgCgIAWAIEAhAAxxmzAO6gVgHHGbMA9NUjAQAAIYAWAAAABAIQAG8urgD0VyQCby6uAFqT7gE3CgIAAAAvCgIAAQAgCgIAyggxCgIAMwI1CgIAAgAwCgIAGQAHAgwA9FckAm8urgAAAAAACAIMAFqT7gFvLq4AAAAAAAAADYAAAAAADoAAAAAAAQwEAAQAAAACDAQADQAAAAQMBAAjAAAAAAAOgAAAAAABDAQACQAAAAIMBAAEAAAABAwEABYAAAAAAAAAAAAAAAAA \ No newline at end of file diff --git a/api/tests/integration/tests/formats/ref/ket_retro_arrow_and_simple_arrow.cdxml b/api/tests/integration/tests/formats/ref/ket_retro_arrow_and_simple_arrow.cdxml index cc9d1881f0..07a9ba4c5e 100644 --- a/api/tests/integration/tests/formats/ref/ket_retro_arrow_and_simple_arrow.cdxml +++ b/api/tests/integration/tests/formats/ref/ket_retro_arrow_and_simple_arrow.cdxml @@ -62,8 +62,8 @@ - - + + diff --git a/api/tests/integration/tests/formats/ref/ket_simple_arrow_retro_arrow_sum_of_products.b64cdx b/api/tests/integration/tests/formats/ref/ket_simple_arrow_retro_arrow_sum_of_products.b64cdx index 27b0d17ed1..2f46df441c 100644 --- a/api/tests/integration/tests/formats/ref/ket_simple_arrow_retro_arrow_sum_of_products.b64cdx +++ b/api/tests/integration/tests/formats/ref/ket_simple_arrow_retro_arrow_sum_of_products.b64cdx @@ -1 +1 @@ -VmpDRDAxMDAEAwIBAAAAAAAAAAAAAAAAAAAAAAUIBAAAAB4AGggCAAMAGwgCAAQAAAEkAAAAAgACAOn9BQBBcmlhbAMA6f0PAFRpbWVzIE5ldyBSb21hbgADMgAIAP///////wAAAAAAAP//AAAAAP////8AAAAA//8AAAAA/////wAAAAD/////AAD//wGAAAAAABAIAgABAA8IAgABAAOABAAAAASABQAAAAACCABWawgBqHMxAQAABIAGAAAAAAIIAFpr6gCoczEBAAAEgAcAAAAAAggAW2vbAJp4FwEAAASACAAAAAIEAgAHACsEAgACAAACCABba9sAvG5LAQaAAAAAAAACCABba9sAvG5LASMIAQAAAAcZAAIAAAADAGAAyAAAAAIAAwAgAMgAAABOSDIAAAAABYAiAAAABAYEAAUAAAAFBgQABgAAAAAABYAjAAAABAYEAAYAAAAFBgQABwAAAAAABYAkAAAABAYEAAYAAAAFBgQACAAAAAAAAAADgAkAAAAEgAoAAAACBAIACAArBAIAAQAAAggAWmvqAMiuvwEGgAAAAAAAAggAWmvqAMiuvwEjCAEAAAAHDgABAAAAAwBgAMgAAABPSAAAAAAEgAsAAAAAAggAWGv5AKap2QEAAASADAAAAAIEAgAIACsEAgABAAACCABaa+oA/KTzAQaAAAAAAAACCABaa+oA/KTzASMIAQAAAAcOAAEAAAADAGAAyAAAAE9IAAAAAAWAJQAAAAQGBAAKAAAABQYEAAsAAAAAAAWAJgAAAAQGBAALAAAABQYEAAwAAAAAAAAAA4ANAAAABIAOAAAAAAIIAAtW1gDUTqwCAAAEgA8AAAAAAggAS/jnANyTxAIAAASAEAAAAAACCACogAQByE67AgAABIARAAAAAAIIAKiABAHgTp0CAAAEgBIAAAAAAggAS/jnAMgJlAIAAAWAJwAAAAQGBAAOAAAABQYEABIAAAAAAAWAKAAAAAQGBAASAAAABQYEABEAAAAAAAWAKQAAAAQGBAARAAAABQYEABAAAAAAAAWAKgAAAAQGBAAQAAAABQYEAA8AAAAAAAWAKwAAAAQGBAAPAAAABQYEAA4AAAAAAAAAA4ATAAAABIAUAAAAAAIIAGVR1gAwzxMDAAAEgBUAAAAAAggAToUEASzSIgMAAASAFgAAAAACCAA8IugAIBksAwAABIAXAAAAAAIIAE6FBAE4zAQDAAAEgBgAAAAAAggAPCLoAHyE+wIAAAWALAAAAAQGBAAUAAAABQYEABgAAAAAAAWALQAAAAQGBAAYAAAABQYEABcAAAAABgIAAgAAAAWALgAAAAQGBAAXAAAABQYEABUAAAAAAAWALwAAAAQGBAAVAAAABQYEABYAAAAABgIAAgAAAAWAMAAAAAQGBAAWAAAABQYEABQAAAAAAAAAIYAZAAAABAIQAFhr7QA0kJoBWGvtADrFZgE3CgIAAAAvCgIAAQAgCgIAyggxCgIAMwI1CgIAAgAwCgIAGQAHAgwANJCaAVhr7QAAAAAACAIMADrFZgFYa+0AAAAAAAAAIYAcAAAABAIQAP//7AD4wHAC///sAABAJwI3CgIAAAA1CgIAAgAvCgIAAwAgCgIAWAIwCgIAWAIxCgIAlgAzCgIAWAIHAgwA+EBwAv//7AAAAAAACAIMAADAJwL//+wAAAAAAAAAB4AxAAAAEwAEABwAAAAACgIAAQACCgIAIAAgCgIAWAIEAhAA///sAPhAcAL//+wAAMAnAgAAB4AfAAAABAIQAFpr+QDMjuECWuvxAMyO4QIACgIABwAHCgIACAAAAA2AAAAAAA6AAAAAAAEMBAAEAAAAAgwEAAkAAAAEDAQAGQAAAAAADoAAAAAAAQwIABMAAAANAAAAAgwEAAkAAAAEDAQAMQAAAAAAAAAAAAAAAAA= \ No newline at end of file +VmpDRDAxMDAEAwIBAAAAAAAAAAAAAAAAAAAAAAUIBAAAAB4AGggCAAMAGwgCAAQAAAEkAAAAAgACAOn9BQBBcmlhbAMA6f0PAFRpbWVzIE5ldyBSb21hbgADMgAIAP///////wAAAAAAAP//AAAAAP////8AAAAA//8AAAAA/////wAAAAD/////AAD//wGAAAAAABAIAgABAA8IAgABAAOABAAAAASABQAAAAACCAALVtYA1E6sAgAABIAGAAAAAAIIAEv45wDck8QCAAAEgAcAAAAAAggAqIAEAchOuwIAAASACAAAAAACCACogAQB4E6dAgAABIAJAAAAAAIIAEv45wDICZQCAAAFgCIAAAAEBgQABQAAAAUGBAAJAAAAAAAFgCMAAAAEBgQACQAAAAUGBAAIAAAAAAAFgCQAAAAEBgQACAAAAAUGBAAHAAAAAAAFgCUAAAAEBgQABwAAAAUGBAAGAAAAAAAFgCYAAAAEBgQABgAAAAUGBAAFAAAAAAAAAAOACgAAAASACwAAAAACCABlUdYAMM8TAwAABIAMAAAAAAIIAE6FBAEs0iIDAAAEgA0AAAAAAggAPCLoACAZLAMAAASADgAAAAACCABOhQQBOMwEAwAABIAPAAAAAAIIADwi6AB8hPsCAAAFgCcAAAAEBgQACwAAAAUGBAAPAAAAAAAFgCgAAAAEBgQADwAAAAUGBAAOAAAAAAYCAAIAAAAFgCkAAAAEBgQADgAAAAUGBAAMAAAAAAAFgCoAAAAEBgQADAAAAAUGBAANAAAAAAYCAAIAAAAFgCsAAAAEBgQADQAAAAUGBAALAAAAAAAAAAOAEAAAAASAEQAAAAACCABWawgBqHMxAQAABIASAAAAAAIIAFpr6gCoczEBAAAEgBMAAAAAAggAW2vbAJp4FwEAAASAFAAAAAIEAgAHACsEAgACAAACCABba9sAvG5LAQaAAAAAAAACCABba9sAvG5LASMIAQAAAAcZAAIAAAADAGAAyAAAAAIAAwAgAMgAAABOSDIAAAAABYAsAAAABAYEABEAAAAFBgQAEgAAAAAABYAtAAAABAYEABIAAAAFBgQAEwAAAAAABYAuAAAABAYEABIAAAAFBgQAFAAAAAAAAAADgBUAAAAEgBYAAAACBAIACAArBAIAAQAAAggAWmvqAMiuvwEGgAAAAAAAAggAWmvqAMiuvwEjCAEAAAAHDgABAAAAAwBgAMgAAABPSAAAAAAEgBcAAAAAAggAWGv5AKap2QEAAASAGAAAAAIEAgAIACsEAgABAAACCABaa+oA/KTzAQaAAAAAAAACCABaa+oA/KTzASMIAQAAAAcOAAEAAAADAGAAyAAAAE9IAAAAAAWALwAAAAQGBAAWAAAABQYEABcAAAAAAAWAMAAAAAQGBAAXAAAABQYEABgAAAAAAAAAIYAZAAAABAIQAFhr7QA0kJoBWGvtADrFZgE3CgIAAAAvCgIAAQAgCgIAyggxCgIAMwI1CgIAAgAwCgIAGQAHAgwANJCaAVhr7QAAAAAACAIMADrFZgFYa+0AAAAAAAAAIYAcAAAABAIQAP//7AD4wHAC///sAABAJwI3CgIAAAA1CgIAAgAvCgIAAwAgCgIAWAIwCgIAWAIxCgIAlgAzCgIAWAIHAgwA+EBwAv//7AAAAAAACAIMAADAJwL//+wAAAAAAAAAB4AxAAAAEwAEABwAAAAACgIAAQACCgIAIAAgCgIAWAIEAhAA///sAPhAcAL//+wAAMAnAgAAB4AfAAAABAIQAFpr+QDMjuECWuvxAMyO4QIACgIABwAHCgIACAAAAA2AAAAAAA6AAAAAAAEMCAAEAAAACgAAAAIMBAAVAAAABAwEABkAAAAAAA6AAAAAAAEMBAAQAAAAAgwEABUAAAAEDAQAMQAAAAAAAAAAAAAAAAA= \ No newline at end of file diff --git a/api/tests/integration/tests/formats/ref/ket_simple_arrow_retro_arrow_sum_of_products.cdxml b/api/tests/integration/tests/formats/ref/ket_simple_arrow_retro_arrow_sum_of_products.cdxml index 57d5203788..0b016f9dc4 100644 --- a/api/tests/integration/tests/formats/ref/ket_simple_arrow_retro_arrow_sum_of_products.cdxml +++ b/api/tests/integration/tests/formats/ref/ket_simple_arrow_retro_arrow_sum_of_products.cdxml @@ -18,65 +18,65 @@ - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + NH 2 - - - + + + - - + + OH - - + + OH - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - + + diff --git a/api/tests/integration/tests/formats/ref/ket_simple_arrow_retro_arrow_sum_of_products.cml b/api/tests/integration/tests/formats/ref/ket_simple_arrow_retro_arrow_sum_of_products.cml index a72e11c694..e3758cd197 100644 --- a/api/tests/integration/tests/formats/ref/ket_simple_arrow_retro_arrow_sum_of_products.cml +++ b/api/tests/integration/tests/formats/ref/ket_simple_arrow_retro_arrow_sum_of_products.cml @@ -2,19 +2,6 @@ - - - - - - - - - - - - - @@ -51,6 +38,19 @@ + + + + + + + + + + + + + diff --git a/api/tests/integration/tests/formats/ref/ket_simple_arrow_retro_arrow_sum_of_products.smarts b/api/tests/integration/tests/formats/ref/ket_simple_arrow_retro_arrow_sum_of_products.smarts index ef43a39c45..3168821c16 100644 --- a/api/tests/integration/tests/formats/ref/ket_simple_arrow_retro_arrow_sum_of_products.smarts +++ b/api/tests/integration/tests/formats/ref/ket_simple_arrow_retro_arrow_sum_of_products.smarts @@ -1 +1 @@ -[#6]-[#6](-[#7])-[#6].[#6]1-[#6]-[#6]-[#6]-[#6]-1.[#6]1-[#6]=[#6]-[#6]=[#6]-1>>[#8]-[#6]-[#8] \ No newline at end of file +[#6]1-[#6]-[#6]-[#6]-[#6]-1.[#6]1-[#6]=[#6]-[#6]=[#6]-1.[#6]-[#6](-[#7])-[#6]>>[#8]-[#6]-[#8] \ No newline at end of file diff --git a/api/tests/integration/tests/formats/ref/ket_simple_arrow_retro_arrow_sum_of_products.smi b/api/tests/integration/tests/formats/ref/ket_simple_arrow_retro_arrow_sum_of_products.smi index 1ad2aa86f0..aab9da2128 100644 --- a/api/tests/integration/tests/formats/ref/ket_simple_arrow_retro_arrow_sum_of_products.smi +++ b/api/tests/integration/tests/formats/ref/ket_simple_arrow_retro_arrow_sum_of_products.smi @@ -1 +1 @@ -CC(N)C.C1CCCC1.C1C=CC=C1>>OCO \ No newline at end of file +C1CCCC1.C1C=CC=C1.CC(N)C>>OCO \ No newline at end of file diff --git a/api/tests/integration/tests/formats/ref/ket_simple_arrow_retro_arrow_sum_of_products_2000.rxn b/api/tests/integration/tests/formats/ref/ket_simple_arrow_retro_arrow_sum_of_products_2000.rxn index 564592aaf7..2a4d964e8a 100644 --- a/api/tests/integration/tests/formats/ref/ket_simple_arrow_retro_arrow_sum_of_products_2000.rxn +++ b/api/tests/integration/tests/formats/ref/ket_simple_arrow_retro_arrow_sum_of_products_2000.rxn @@ -7,19 +7,6 @@ $MOL -INDIGO-01000000002D - 4 3 0 0 0 0 0 0 0 0999 V2000 - 10.1817 -8.8140 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 - 10.1817 -7.8140 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 - 9.3157 -7.3140 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 - 11.0478 -7.3140 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0 - 1 2 1 0 0 0 0 - 2 3 1 0 0 0 0 - 2 4 1 0 0 0 0 -M END -$MOL - - -INDIGO-01000000002D - 5 5 0 0 0 0 0 0 0 0999 V2000 22.8103 -7.1445 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 23.6193 -7.7323 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 @@ -52,6 +39,19 @@ $MOL -INDIGO-01000000002D + 4 3 0 0 0 0 0 0 0 0999 V2000 + 10.1817 -8.8140 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.1817 -7.8140 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.3157 -7.3140 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.0478 -7.3140 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0 + 1 2 1 0 0 0 0 + 2 3 1 0 0 0 0 + 2 4 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + 3 2 0 0 0 0 0 0 0 0999 V2000 14.9228 -7.8140 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 15.7888 -8.3140 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/api/tests/integration/tests/formats/ref/ket_simple_arrow_retro_arrow_sum_of_products_3000.rxn b/api/tests/integration/tests/formats/ref/ket_simple_arrow_retro_arrow_sum_of_products_3000.rxn index 2514843869..c8eae2944a 100644 --- a/api/tests/integration/tests/formats/ref/ket_simple_arrow_retro_arrow_sum_of_products_3000.rxn +++ b/api/tests/integration/tests/formats/ref/ket_simple_arrow_retro_arrow_sum_of_products_3000.rxn @@ -5,20 +5,6 @@ $RXN V3000 M V30 COUNTS 3 1 M V30 BEGIN REACTANT M V30 BEGIN CTAB -M V30 COUNTS 4 3 0 0 0 -M V30 BEGIN ATOM -M V30 1 C 10.1817 -8.81398 0.0 0 -M V30 2 C 10.1817 -7.81398 0.0 0 -M V30 3 C 9.3157 -7.31398 0.0 0 -M V30 4 N 11.0478 -7.31398 0.0 0 -M V30 END ATOM -M V30 BEGIN BOND -M V30 1 1 1 2 -M V30 2 1 2 3 -M V30 3 1 2 4 -M V30 END BOND -M V30 END CTAB -M V30 BEGIN CTAB M V30 COUNTS 5 5 0 0 0 M V30 BEGIN ATOM M V30 1 C 22.8103 -7.14454 0.0 0 @@ -52,6 +38,20 @@ M V30 4 2 2 3 M V30 5 1 3 1 M V30 END BOND M V30 END CTAB +M V30 BEGIN CTAB +M V30 COUNTS 4 3 0 0 0 +M V30 BEGIN ATOM +M V30 1 C 10.1817 -8.81398 0.0 0 +M V30 2 C 10.1817 -7.81398 0.0 0 +M V30 3 C 9.3157 -7.31398 0.0 0 +M V30 4 N 11.0478 -7.31398 0.0 0 +M V30 END ATOM +M V30 BEGIN BOND +M V30 1 1 1 2 +M V30 2 1 2 3 +M V30 3 1 2 4 +M V30 END BOND +M V30 END CTAB M V30 END REACTANT M V30 BEGIN PRODUCT M V30 BEGIN CTAB diff --git a/api/tests/integration/tests/formats/ref/multi.cdxml b/api/tests/integration/tests/formats/ref/multi.cdxml index c87087f5d8..2a343711b0 100644 --- a/api/tests/integration/tests/formats/ref/multi.cdxml +++ b/api/tests/integration/tests/formats/ref/multi.cdxml @@ -43,48 +43,48 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + @@ -92,8 +92,8 @@ - - + + diff --git a/api/tests/integration/tests/formats/ref/multi.rdf b/api/tests/integration/tests/formats/ref/multi.rdf new file mode 100644 index 0000000000..ad6475d438 --- /dev/null +++ b/api/tests/integration/tests/formats/ref/multi.rdf @@ -0,0 +1,147 @@ +$RDFILE 1 +$DATM 01/00/00 00:00 +$RDFILE 1 +$DATM 01/00/00 00:00 +$RFMT +$RXN + + -INDIGO- 0100000000 + + 3 2 +$MOL + + -INDIGO-01000000002D + + 4 4 0 0 0 0 0 0 0 0999 V2000 + 3.5322 -4.1225 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3.5285 -3.1275 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 2.5203 -4.1096 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 2.5178 -3.1275 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 2 1 0 0 0 0 + 1 3 1 0 0 0 0 + 2 4 1 0 0 0 0 + 3 4 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 3 3 0 0 0 0 0 0 0 0999 V2000 + 5.2744 -4.0825 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.2756 -4.0825 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.7751 -3.2175 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 2 1 0 0 0 0 + 1 3 1 0 0 0 0 + 2 3 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 3 2 0 0 0 0 0 0 0 0999 V2000 + 0.4000 -2.7000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + -0.1000 -3.5660 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.4000 -4.4321 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 2 1 0 0 0 0 + 2 3 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 7 7 0 0 0 0 0 0 0 0999 V2000 + 10.8545 -3.1186 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.6384 -2.5010 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.6114 -2.7236 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.0455 -3.6194 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.8600 -4.1258 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.6121 -4.5264 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.6384 -4.7490 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 2 1 0 0 0 0 + 2 3 1 0 0 0 0 + 3 4 1 0 0 0 0 + 4 6 1 0 0 0 0 + 1 5 1 0 0 0 0 + 5 7 1 0 0 0 0 + 6 7 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 6 6 0 0 0 0 0 0 0 0999 V2000 + 15.5090 -2.8250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.5090 -3.8250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 16.3750 -4.3250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.2410 -3.8250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.2410 -2.8250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 16.3750 -2.3250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 6 1 0 0 0 0 + 1 2 1 0 0 0 0 + 2 3 1 0 0 0 0 + 3 4 1 0 0 0 0 + 4 5 1 0 0 0 0 + 5 6 1 0 0 0 0 +M END +$RFMT +$RXN + + -INDIGO- 0100000000 + + 2 1 +$MOL + + -INDIGO-01000000002D + + 7 7 0 0 0 0 0 0 0 0999 V2000 + 10.8545 -3.1186 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.6384 -2.5010 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.6114 -2.7236 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.0455 -3.6194 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.8600 -4.1258 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.6121 -4.5264 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.6384 -4.7490 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 2 1 0 0 0 0 + 2 3 1 0 0 0 0 + 3 4 1 0 0 0 0 + 4 6 1 0 0 0 0 + 1 5 1 0 0 0 0 + 5 7 1 0 0 0 0 + 6 7 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 6 6 0 0 0 0 0 0 0 0999 V2000 + 15.5090 -2.8250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.5090 -3.8250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 16.3750 -4.3250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.2410 -3.8250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.2410 -2.8250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 16.3750 -2.3250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 6 1 0 0 0 0 + 1 2 1 0 0 0 0 + 2 3 1 0 0 0 0 + 3 4 1 0 0 0 0 + 4 5 1 0 0 0 0 + 5 6 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 6 6 0 0 0 0 0 0 0 0999 V2000 + 22.5598 -3.0501 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 24.2902 -3.0496 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 23.4266 -2.5500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 24.2902 -4.0505 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 22.5598 -4.0550 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 23.4288 -4.5500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 4 2 2 0 0 0 0 + 1 5 1 0 0 0 0 + 2 3 1 0 0 0 0 + 5 6 2 0 0 0 0 + 6 4 1 0 0 0 0 +M END diff --git a/api/tests/integration/tests/formats/ref/multi_overlap.cdxml b/api/tests/integration/tests/formats/ref/multi_overlap.cdxml index ab7a0755d7..b8b04bc8d1 100644 --- a/api/tests/integration/tests/formats/ref/multi_overlap.cdxml +++ b/api/tests/integration/tests/formats/ref/multi_overlap.cdxml @@ -18,50 +18,50 @@ - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + O - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - + + + + + + + @@ -98,8 +98,8 @@ - - + + diff --git a/api/tests/integration/tests/formats/ref/pathway1.rdf b/api/tests/integration/tests/formats/ref/pathway1.rdf new file mode 100644 index 0000000000..d3cff0b676 --- /dev/null +++ b/api/tests/integration/tests/formats/ref/pathway1.rdf @@ -0,0 +1,156 @@ +$RDFILE 1 +$DATM 01/00/00 00:00 +$RDFILE 1 +$DATM 01/00/00 00:00 +$RFMT +$RXN + + -INDIGO- 0100000000 + + 2 1 +$MOL + + -INDIGO-01000000002D + + 5 5 0 0 0 0 0 0 0 0999 V2000 + 0.9206 13.6931 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.4210 12.1530 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7303 13.0993 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.4203 12.1530 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.1109 13.0993 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 5 1 0 0 0 0 + 5 4 2 0 0 0 0 + 4 2 1 0 0 0 0 + 2 3 2 0 0 0 0 + 3 1 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 6 6 0 0 0 0 0 0 0 0999 V2000 + 0.0000 9.1529 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7303 9.1534 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.8668 9.6530 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7303 8.1524 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.0000 8.1479 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.8690 7.6529 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 1 5 1 0 0 0 0 + 5 6 2 0 0 0 0 + 6 4 1 0 0 0 0 + 4 2 2 0 0 0 0 + 2 3 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 7 7 0 0 0 0 0 0 0 0999 V2000 + 5.7891 11.2880 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.7891 10.2880 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.6551 9.7880 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.5212 10.2880 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.5212 11.2880 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.6551 11.7880 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.3872 11.7880 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6 1 1 0 0 0 0 + 1 2 1 0 0 0 0 + 2 3 1 0 0 0 0 + 3 4 1 0 0 0 0 + 4 5 1 0 0 0 0 + 5 6 1 0 0 0 0 + 5 7 1 0 0 0 0 +M END +$RFMT +$RXN + + -INDIGO- 0100000000 + + 3 1 +$MOL + + -INDIGO-01000000002D + + 7 7 0 0 0 0 0 0 0 0999 V2000 + 5.7891 11.2880 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.7891 10.2880 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.6551 9.7880 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.5212 10.2880 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.5212 11.2880 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.6551 11.7880 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.3872 11.7880 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6 1 1 0 0 0 0 + 1 2 1 0 0 0 0 + 2 3 1 0 0 0 0 + 3 4 1 0 0 0 0 + 4 5 1 0 0 0 0 + 5 6 1 0 0 0 0 + 5 7 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 8 8 0 0 0 0 0 0 0 0999 V2000 + 6.1962 6.6705 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.9801 7.2880 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.9531 7.0655 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.3872 6.1697 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.2017 5.6633 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.9538 5.2626 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.9801 5.0401 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.2303 6.9293 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 2 1 1 0 0 0 0 + 1 5 1 0 0 0 0 + 5 7 1 0 0 0 0 + 7 6 1 0 0 0 0 + 6 4 1 0 0 0 0 + 4 3 1 0 0 0 0 + 3 2 1 0 0 0 0 + 1 8 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 7 7 0 0 0 0 0 0 0 0999 V2000 + 7.3872 1.5401 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.8876 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.1968 0.9463 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.8868 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.5775 0.9463 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.3872 2.5401 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.3872 2.5401 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 5 1 0 0 0 0 + 5 4 2 0 0 0 0 + 4 2 1 0 0 0 0 + 2 3 2 0 0 0 0 + 3 1 1 0 0 0 0 + 1 6 2 0 0 0 0 + 6 7 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 9 9 0 0 0 0 0 0 0 0999 V2000 + 12.7532 6.8825 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.4835 6.8830 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.6200 7.3826 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.4835 5.8821 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.7532 5.8776 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.6222 5.3826 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.8872 5.3776 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.9151 4.6755 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.1906 5.1750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 1 5 1 0 0 0 0 + 5 6 2 0 0 0 0 + 6 4 1 0 0 0 0 + 4 2 2 0 0 0 0 + 2 3 1 0 0 0 0 + 5 7 1 0 0 0 0 + 6 8 2 0 0 0 0 + 4 9 1 0 0 0 0 +M END diff --git a/api/tests/integration/tests/formats/ref/pathway10.rdf b/api/tests/integration/tests/formats/ref/pathway10.rdf new file mode 100644 index 0000000000..136f00f28c --- /dev/null +++ b/api/tests/integration/tests/formats/ref/pathway10.rdf @@ -0,0 +1,186 @@ +$RDFILE 1 +$DATM 01/00/00 00:00 +$RDFILE 1 +$DATM 01/00/00 00:00 +$RFMT +$RXN + + -INDIGO- 0100000000 + + 7 3 +$MOL + + -INDIGO-01000000002D + + 5 5 0 0 0 0 0 0 0 0999 V2000 + 1.7303 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7266 0.9951 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.7183 0.0129 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.7158 0.9951 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.0087 1.7022 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0 + 1 2 1 0 0 0 0 + 2 4 1 0 0 0 0 + 4 3 1 0 0 0 0 + 3 1 1 0 0 0 0 + 4 5 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 4 4 0 0 0 0 0 0 0 0999 V2000 + 0.7290 4.2022 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7303 4.2022 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.2297 5.0671 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.2297 6.0671 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0 + 1 2 1 0 0 0 0 + 2 3 1 0 0 0 0 + 3 1 1 0 0 0 0 + 3 4 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 5 5 0 0 0 0 0 0 0 0999 V2000 + 0.9207 10.1072 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.4211 8.5671 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7303 9.5133 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.4203 8.5671 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.1110 9.5133 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 5 1 0 0 0 0 + 5 4 2 0 0 0 0 + 4 2 1 0 0 0 0 + 2 3 2 0 0 0 0 + 3 1 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 6 6 0 0 0 0 0 0 0 0999 V2000 + 0.0000 14.1071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7303 14.1076 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.8668 14.6072 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7303 13.1067 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.0000 13.1022 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.8690 12.6072 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 1 5 1 0 0 0 0 + 5 6 2 0 0 0 0 + 6 4 1 0 0 0 0 + 4 2 2 0 0 0 0 + 2 3 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 4 4 0 0 0 0 0 0 0 0999 V2000 + 7.8497 1.7228 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.8509 1.7228 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.3504 2.5878 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.6092 3.5537 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 1 2 1 0 0 0 0 + 2 3 1 0 0 0 0 + 3 1 1 0 0 0 0 + 3 4 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 6 6 0 0 0 0 0 0 0 0999 V2000 + 9.8367 11.9722 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.8367 10.9722 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.7027 10.4722 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.5687 10.9722 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.5687 11.9722 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.7027 12.4722 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6 1 1 0 0 0 0 + 1 2 1 0 0 0 0 + 2 3 1 0 0 0 0 + 3 4 1 0 0 0 0 + 4 5 1 0 0 0 0 + 5 6 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 5 5 0 0 0 0 0 0 0 0999 V2000 + 10.8653 1.7228 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.8616 2.7179 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.8534 1.7357 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.8509 2.7179 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.5687 3.4250 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0 + 1 2 1 0 0 0 0 + 2 4 1 0 0 0 0 + 4 3 1 0 0 0 0 + 3 1 1 0 0 0 0 + 2 5 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 6 6 0 0 0 0 0 0 0 0999 V2000 + 6.0401 3.2629 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.5405 1.7228 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.8497 2.6691 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.5397 1.7228 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.2303 2.6691 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.0401 4.2629 0.0000 S 0 0 0 0 0 0 0 0 0 0 0 0 + 1 5 1 0 0 0 0 + 5 4 2 0 0 0 0 + 4 2 1 0 0 0 0 + 2 3 2 0 0 0 0 + 3 1 1 0 0 0 0 + 1 6 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 5 5 0 0 0 0 0 0 0 0999 V2000 + 7.8745 10.4722 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.8708 11.4673 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.8626 10.4851 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.8601 11.4673 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.8367 11.7261 0.0000 P 0 0 0 0 0 0 0 0 0 0 0 0 + 1 2 1 0 0 0 0 + 2 4 1 0 0 0 0 + 4 3 1 0 0 0 0 + 3 1 1 0 0 0 0 + 2 5 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 12 12 0 0 1 0 0 0 0 0999 V2000 + 19.5055 8.6403 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 19.5055 6.7652 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 17.6861 5.8247 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 15.8666 6.7651 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 17.6805 8.6403 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 15.0687 8.0460 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 18.5957 8.1812 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 18.5957 7.2298 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 17.6805 6.7651 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 16.7709 7.2296 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 16.7709 8.1811 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0 + 15.8666 8.6401 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6 12 1 0 0 0 0 + 11 5 1 0 0 0 0 + 5 7 1 0 0 0 0 + 7 8 1 0 0 0 0 + 8 9 1 0 0 0 0 + 9 10 1 0 0 0 0 + 10 11 1 0 0 0 0 + 11 12 1 1 0 0 0 + 7 1 1 6 0 0 0 + 8 2 1 6 0 0 0 + 9 3 1 6 0 0 0 + 10 4 1 6 0 0 0 +M END diff --git a/api/tests/integration/tests/formats/ref/pathway2.rdf b/api/tests/integration/tests/formats/ref/pathway2.rdf new file mode 100644 index 0000000000..8e25eb284e --- /dev/null +++ b/api/tests/integration/tests/formats/ref/pathway2.rdf @@ -0,0 +1,134 @@ +$RDFILE 1 +$DATM 01/00/00 00:00 +$RDFILE 1 +$DATM 01/00/00 00:00 +$RFMT +$RXN + + -INDIGO- 0100000000 + + 2 1 +$MOL + + -INDIGO-01000000002D + + 5 5 0 0 0 0 0 0 0 0999 V2000 + 0.9206 8.9452 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.4210 7.4051 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7303 8.3514 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.4203 7.4051 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.1109 8.3514 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 5 1 0 0 0 0 + 5 4 2 0 0 0 0 + 4 2 1 0 0 0 0 + 2 3 2 0 0 0 0 + 3 1 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 6 6 0 0 0 0 0 0 0 0999 V2000 + 0.0000 4.4050 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7303 4.4055 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.8668 4.9051 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7303 3.4045 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.0000 3.4000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.8690 2.9050 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 1 5 1 0 0 0 0 + 5 6 2 0 0 0 0 + 6 4 1 0 0 0 0 + 4 2 2 0 0 0 0 + 2 3 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 7 7 0 0 0 0 0 0 0 0999 V2000 + 5.2303 6.5401 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.2303 5.5401 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.0963 5.0401 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.9624 5.5401 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.9624 6.5401 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.0963 7.0401 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.8284 7.0401 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6 1 1 0 0 0 0 + 1 2 1 0 0 0 0 + 2 3 1 0 0 0 0 + 3 4 1 0 0 0 0 + 4 5 1 0 0 0 0 + 5 6 1 0 0 0 0 + 5 7 1 0 0 0 0 +M END +$RFMT +$RXN + + -INDIGO- 0100000000 + + 2 1 +$MOL + + -INDIGO-01000000002D + + 7 7 0 0 0 0 0 0 0 0999 V2000 + 5.2303 6.5401 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.2303 5.5401 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.0963 5.0401 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.9624 5.5401 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.9624 6.5401 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.0963 7.0401 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.8284 7.0401 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6 1 1 0 0 0 0 + 1 2 1 0 0 0 0 + 2 3 1 0 0 0 0 + 3 4 1 0 0 0 0 + 4 5 1 0 0 0 0 + 5 6 1 0 0 0 0 + 5 7 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 7 7 0 0 0 0 0 0 0 0999 V2000 + 6.8284 1.5401 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.3288 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.6380 0.9463 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.3280 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.0187 0.9463 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.8284 2.5401 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.8284 2.5401 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 5 1 0 0 0 0 + 5 4 2 0 0 0 0 + 4 2 1 0 0 0 0 + 2 3 2 0 0 0 0 + 3 1 1 0 0 0 0 + 1 6 2 0 0 0 0 + 6 7 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 9 9 0 0 0 0 0 0 0 0999 V2000 + 12.1944 4.5085 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.9247 4.5090 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.0612 5.0086 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.9247 3.5081 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.1944 3.5036 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.0634 3.0086 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.3284 3.0036 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.3563 2.3015 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.6318 2.8010 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 1 5 1 0 0 0 0 + 5 6 2 0 0 0 0 + 6 4 1 0 0 0 0 + 4 2 2 0 0 0 0 + 2 3 1 0 0 0 0 + 5 7 1 0 0 0 0 + 6 8 2 0 0 0 0 + 4 9 1 0 0 0 0 +M END diff --git a/api/tests/integration/tests/formats/ref/pathway3.rdf b/api/tests/integration/tests/formats/ref/pathway3.rdf new file mode 100644 index 0000000000..069bf3bd7f --- /dev/null +++ b/api/tests/integration/tests/formats/ref/pathway3.rdf @@ -0,0 +1,114 @@ +$RDFILE 1 +$DATM 01/00/00 00:00 +$RDFILE 1 +$DATM 01/00/00 00:00 +$RFMT +$RXN + + -INDIGO- 0100000000 + + 2 1 +$MOL + + -INDIGO-01000000002D + + 5 5 0 0 0 0 0 0 0 0999 V2000 + 0.9206 6.0402 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.4210 4.5001 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7303 5.4464 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.4203 4.5001 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.1109 5.4464 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 5 1 0 0 0 0 + 5 4 2 0 0 0 0 + 4 2 1 0 0 0 0 + 2 3 2 0 0 0 0 + 3 1 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 6 6 0 0 0 0 0 0 0 0999 V2000 + 0.0000 1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7303 1.5005 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.8668 2.0001 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7303 0.4995 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.0000 0.4950 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.8690 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 1 5 1 0 0 0 0 + 5 6 2 0 0 0 0 + 6 4 1 0 0 0 0 + 4 2 2 0 0 0 0 + 2 3 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 7 7 0 0 0 0 0 0 0 0999 V2000 + 5.2303 3.6351 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.2303 2.6351 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.0963 2.1351 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.9624 2.6351 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.9624 3.6351 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.0963 4.1351 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.8284 4.1351 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6 1 1 0 0 0 0 + 1 2 1 0 0 0 0 + 2 3 1 0 0 0 0 + 3 4 1 0 0 0 0 + 4 5 1 0 0 0 0 + 5 6 1 0 0 0 0 + 5 7 1 0 0 0 0 +M END +$RFMT +$RXN + + -INDIGO- 0100000000 + + 1 1 +$MOL + + -INDIGO-01000000002D + + 7 7 0 0 0 0 0 0 0 0999 V2000 + 5.2303 3.6351 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.2303 2.6351 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.0963 2.1351 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.9624 2.6351 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.9624 3.6351 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.0963 4.1351 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.8284 4.1351 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6 1 1 0 0 0 0 + 1 2 1 0 0 0 0 + 2 3 1 0 0 0 0 + 3 4 1 0 0 0 0 + 4 5 1 0 0 0 0 + 5 6 1 0 0 0 0 + 5 7 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 9 9 0 0 0 0 0 0 0 0999 V2000 + 12.1944 3.9886 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.9247 3.9891 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.0612 4.4887 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.9247 2.9882 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.1944 2.9837 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.0634 2.4887 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.3284 2.4837 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.3563 1.7816 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.6318 2.2811 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 1 5 1 0 0 0 0 + 5 6 2 0 0 0 0 + 6 4 1 0 0 0 0 + 4 2 2 0 0 0 0 + 2 3 1 0 0 0 0 + 5 7 1 0 0 0 0 + 6 8 2 0 0 0 0 + 4 9 1 0 0 0 0 +M END diff --git a/api/tests/integration/tests/formats/ref/pathway4.rdf b/api/tests/integration/tests/formats/ref/pathway4.rdf new file mode 100644 index 0000000000..82e8a317ce --- /dev/null +++ b/api/tests/integration/tests/formats/ref/pathway4.rdf @@ -0,0 +1,96 @@ +$RDFILE 1 +$DATM 01/00/00 00:00 +$RDFILE 1 +$DATM 01/00/00 00:00 +$RFMT +$RXN + + -INDIGO- 0100000000 + + 1 1 +$MOL + + -INDIGO-01000000002D + + 5 5 0 0 0 0 0 0 0 0999 V2000 + 0.8097 2.1236 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.3101 0.5835 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.6194 1.5298 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.3094 0.5835 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.0000 1.5298 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 5 1 0 0 0 0 + 5 4 2 0 0 0 0 + 4 2 1 0 0 0 0 + 2 3 2 0 0 0 0 + 3 1 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 7 7 0 0 0 0 0 0 0 0999 V2000 + 5.1194 1.8536 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.1194 0.8536 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.9854 0.3535 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.8515 0.8536 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.8515 1.8536 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.9854 2.3536 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.7175 2.3536 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6 1 1 0 0 0 0 + 1 2 1 0 0 0 0 + 2 3 1 0 0 0 0 + 3 4 1 0 0 0 0 + 4 5 1 0 0 0 0 + 5 6 1 0 0 0 0 + 5 7 1 0 0 0 0 +M END +$RFMT +$RXN + + -INDIGO- 0100000000 + + 1 1 +$MOL + + -INDIGO-01000000002D + + 7 7 0 0 0 0 0 0 0 0999 V2000 + 5.1194 1.8536 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.1194 0.8536 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.9854 0.3535 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.8515 0.8536 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.8515 1.8536 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.9854 2.3536 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.7175 2.3536 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6 1 1 0 0 0 0 + 1 2 1 0 0 0 0 + 2 3 1 0 0 0 0 + 3 4 1 0 0 0 0 + 4 5 1 0 0 0 0 + 5 6 1 0 0 0 0 + 5 7 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 9 9 0 0 0 0 0 0 0 0999 V2000 + 12.0835 2.2070 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.8138 2.2075 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.9503 2.7071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.8138 1.2066 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.0835 1.2021 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.9525 0.7071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.2175 0.7021 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.2454 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.5209 0.4995 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 1 5 1 0 0 0 0 + 5 6 2 0 0 0 0 + 6 4 1 0 0 0 0 + 4 2 2 0 0 0 0 + 2 3 1 0 0 0 0 + 5 7 1 0 0 0 0 + 6 8 2 0 0 0 0 + 4 9 1 0 0 0 0 +M END diff --git a/api/tests/integration/tests/formats/ref/pathway5.rdf b/api/tests/integration/tests/formats/ref/pathway5.rdf new file mode 100644 index 0000000000..449ae7eeb2 --- /dev/null +++ b/api/tests/integration/tests/formats/ref/pathway5.rdf @@ -0,0 +1,54 @@ +$RDFILE 1 +$DATM 01/00/00 00:00 +$RDFILE 1 +$DATM 01/00/00 00:00 +$RFMT +$RXN + + -INDIGO- 0100000000 + + 1 1 +$MOL + + -INDIGO-01000000002D + + 7 7 0 0 0 0 0 0 0 0999 V2000 + 0.0000 1.8536 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.0000 0.8536 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.8660 0.3535 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7321 0.8536 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7321 1.8536 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.8660 2.3536 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 2.5981 2.3536 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6 1 1 0 0 0 0 + 1 2 1 0 0 0 0 + 2 3 1 0 0 0 0 + 3 4 1 0 0 0 0 + 4 5 1 0 0 0 0 + 5 6 1 0 0 0 0 + 5 7 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 9 9 0 0 0 0 0 0 0 0999 V2000 + 6.9641 2.2070 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.6944 2.2075 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.8309 2.7071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.6944 1.2066 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.9641 1.2021 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.8331 0.7071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.0981 0.7021 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.1260 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.4015 0.4995 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 1 5 1 0 0 0 0 + 5 6 2 0 0 0 0 + 6 4 1 0 0 0 0 + 4 2 2 0 0 0 0 + 2 3 1 0 0 0 0 + 5 7 1 0 0 0 0 + 6 8 2 0 0 0 0 + 4 9 1 0 0 0 0 +M END diff --git a/api/tests/integration/tests/formats/ref/pathway6.rdf b/api/tests/integration/tests/formats/ref/pathway6.rdf new file mode 100644 index 0000000000..df5f611c61 --- /dev/null +++ b/api/tests/integration/tests/formats/ref/pathway6.rdf @@ -0,0 +1,325 @@ +$RDFILE 1 +$DATM 01/00/00 00:00 +$RDFILE 1 +$DATM 01/00/00 00:00 +$RFMT +$RXN + + -INDIGO- 0100000000 + + 2 1 +$MOL + + -INDIGO-01000000002D + + 5 5 0 0 0 0 0 0 0 0999 V2000 + 0.9206 13.6931 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.4210 12.1530 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7303 13.0993 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.4203 12.1530 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.1109 13.0993 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 5 1 0 0 0 0 + 5 4 2 0 0 0 0 + 4 2 1 0 0 0 0 + 2 3 2 0 0 0 0 + 3 1 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 6 6 0 0 0 0 0 0 0 0999 V2000 + 0.0000 9.1529 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7303 9.1534 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.8668 9.6530 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7303 8.1524 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.0000 8.1479 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.8690 7.6529 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 1 5 1 0 0 0 0 + 5 6 2 0 0 0 0 + 6 4 1 0 0 0 0 + 4 2 2 0 0 0 0 + 2 3 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 7 7 0 0 0 0 0 0 0 0999 V2000 + 5.7891 11.2880 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.7891 10.2880 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.6551 9.7880 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.5212 10.2880 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.5212 11.2880 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.6551 11.7880 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.3872 11.7880 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6 1 1 0 0 0 0 + 1 2 1 0 0 0 0 + 2 3 1 0 0 0 0 + 3 4 1 0 0 0 0 + 4 5 1 0 0 0 0 + 5 6 1 0 0 0 0 + 5 7 1 0 0 0 0 +M END +$RFMT +$RXN + + -INDIGO- 0100000000 + + 1 1 +$MOL + + -INDIGO-01000000002D + + 3 3 0 0 0 0 0 0 0 0999 V2000 + 0.7291 16.1931 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7303 16.1931 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.2297 17.0581 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 2 1 0 0 0 0 + 2 3 1 0 0 0 0 + 3 1 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 5 5 0 0 0 0 0 0 0 0999 V2000 + 7.5782 17.3950 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.3872 16.8072 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.0782 15.8561 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.0782 15.8561 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.7692 16.8072 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 5 1 0 0 0 0 + 5 4 1 0 0 0 0 + 4 3 1 0 0 0 0 + 3 2 1 0 0 0 0 + 2 1 1 0 0 0 0 +M END +$RFMT +$RXN + + -INDIGO- 0100000000 + + 3 1 +$MOL + + -INDIGO-01000000002D + + 7 7 0 0 0 0 0 0 0 0999 V2000 + 5.7891 11.2880 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.7891 10.2880 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.6551 9.7880 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.5212 10.2880 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.5212 11.2880 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.6551 11.7880 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.3872 11.7880 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6 1 1 0 0 0 0 + 1 2 1 0 0 0 0 + 2 3 1 0 0 0 0 + 3 4 1 0 0 0 0 + 4 5 1 0 0 0 0 + 5 6 1 0 0 0 0 + 5 7 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 8 8 0 0 0 0 0 0 0 0999 V2000 + 6.1962 6.6705 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.9801 7.2880 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.9531 7.0655 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.3872 6.1697 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.2017 5.6633 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.9538 5.2626 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.9801 5.0401 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.2303 6.9293 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 2 1 1 0 0 0 0 + 1 5 1 0 0 0 0 + 5 7 1 0 0 0 0 + 7 6 1 0 0 0 0 + 6 4 1 0 0 0 0 + 4 3 1 0 0 0 0 + 3 2 1 0 0 0 0 + 1 8 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 7 7 0 0 0 0 0 0 0 0999 V2000 + 7.3872 1.5401 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.8876 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.1968 0.9463 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.8868 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.5775 0.9463 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.3872 2.5401 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.3872 2.5401 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 5 1 0 0 0 0 + 5 4 2 0 0 0 0 + 4 2 1 0 0 0 0 + 2 3 2 0 0 0 0 + 3 1 1 0 0 0 0 + 1 6 2 0 0 0 0 + 6 7 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 9 9 0 0 0 0 0 0 0 0999 V2000 + 12.7532 6.8825 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.4835 6.8830 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.6200 7.3826 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.4835 5.8821 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.7532 5.8776 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.6222 5.3826 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.8872 5.3776 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.9151 4.6755 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.1906 5.1750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 1 5 1 0 0 0 0 + 5 6 2 0 0 0 0 + 6 4 1 0 0 0 0 + 4 2 2 0 0 0 0 + 2 3 1 0 0 0 0 + 5 7 1 0 0 0 0 + 6 8 2 0 0 0 0 + 4 9 1 0 0 0 0 +M END +$RFMT +$RXN + + -INDIGO- 0100000000 + + 1 1 +$MOL + + -INDIGO-01000000002D + + 5 5 0 0 0 0 0 0 0 0999 V2000 + 7.5782 17.3950 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.3872 16.8072 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.0782 15.8561 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.0782 15.8561 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.7692 16.8072 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 5 1 0 0 0 0 + 5 4 1 0 0 0 0 + 4 3 1 0 0 0 0 + 3 2 1 0 0 0 0 + 2 1 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 8 8 0 0 0 0 0 0 0 0999 V2000 + 12.7773 16.1243 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.7775 17.1269 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.4826 17.8321 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.4828 15.4189 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.4852 15.4189 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.1906 16.1243 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.1905 17.1269 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.4852 17.8322 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 2 1 1 0 0 0 0 + 1 4 1 0 0 0 0 + 4 5 1 0 0 0 0 + 5 6 1 0 0 0 0 + 6 7 1 0 0 0 0 + 7 8 1 0 0 0 0 + 8 3 1 0 0 0 0 + 3 2 1 0 0 0 0 +M END +$RFMT +$RXN + + -INDIGO- 0100000000 + + 2 1 +$MOL + + -INDIGO-01000000002D + + 8 8 0 0 0 0 0 0 0 0999 V2000 + 12.7773 16.1243 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.7775 17.1269 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.4826 17.8321 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.4828 15.4189 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.4852 15.4189 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.1906 16.1243 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.1905 17.1269 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.4852 17.8322 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 2 1 1 0 0 0 0 + 1 4 1 0 0 0 0 + 4 5 1 0 0 0 0 + 5 6 1 0 0 0 0 + 6 7 1 0 0 0 0 + 7 8 1 0 0 0 0 + 8 3 1 0 0 0 0 + 3 2 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 9 9 0 0 0 0 0 0 0 0999 V2000 + 12.7532 6.8825 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.4835 6.8830 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.6200 7.3826 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.4835 5.8821 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.7532 5.8776 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.6222 5.3826 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.8872 5.3776 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.9151 4.6755 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.1906 5.1750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 1 5 1 0 0 0 0 + 5 6 2 0 0 0 0 + 6 4 1 0 0 0 0 + 4 2 2 0 0 0 0 + 2 3 1 0 0 0 0 + 5 7 1 0 0 0 0 + 6 8 2 0 0 0 0 + 4 9 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 16 17 0 0 0 0 0 0 0 0999 V2000 + 18.6906 9.2219 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.6908 10.2244 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.3960 10.9296 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.3962 8.5165 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 20.3986 8.5165 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 21.1040 9.2219 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 21.1039 10.2244 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 20.3986 10.9297 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.7740 12.4302 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.7742 13.4327 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.4793 14.1380 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.4795 11.7248 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 20.4819 11.7248 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 21.1873 12.4302 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 21.1872 13.4327 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 20.4819 14.1381 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 2 1 1 0 0 0 0 + 1 4 1 0 0 0 0 + 4 5 1 0 0 0 0 + 5 6 1 0 0 0 0 + 6 7 1 0 0 0 0 + 7 8 1 0 0 0 0 + 8 3 1 0 0 0 0 + 3 2 1 0 0 0 0 + 10 9 1 0 0 0 0 + 9 12 1 0 0 0 0 + 12 13 1 0 0 0 0 + 13 14 1 0 0 0 0 + 14 15 1 0 0 0 0 + 15 16 1 0 0 0 0 + 16 11 1 0 0 0 0 + 11 10 1 0 0 0 0 + 12 3 1 0 0 0 0 +M END diff --git a/api/tests/integration/tests/formats/ref/pathway7.rdf b/api/tests/integration/tests/formats/ref/pathway7.rdf new file mode 100644 index 0000000000..1d23e6b07a --- /dev/null +++ b/api/tests/integration/tests/formats/ref/pathway7.rdf @@ -0,0 +1,538 @@ +$RDFILE 1 +$DATM 01/00/00 00:00 +$RDFILE 1 +$DATM 01/00/00 00:00 +$RFMT +$RXN + + -INDIGO- 0100000000 + + 1 1 +$MOL + + -INDIGO-01000000002D + + 60 74 0 0 0 0 0 0 0 0999 V2000 + 5.0777 14.6039 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.1430 13.1227 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 4.6828 13.8444 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.9981 13.1604 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.9329 14.6415 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.3931 13.9198 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.2808 13.4364 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.1066 14.9087 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.7687 14.1223 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.9566 15.0093 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.1308 13.5370 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.4687 14.3234 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.8978 15.2692 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 2.2616 14.6876 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7476 15.3721 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.9258 13.9003 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.5621 14.4819 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.0760 13.7974 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.7950 16.1190 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.9805 17.0092 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.6447 16.2219 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.4666 17.6937 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.2810 16.8035 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.6168 17.5908 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.6995 19.3308 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.5139 18.4406 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.3637 18.5435 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.0000 19.1251 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.1855 20.0153 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.3358 19.9124 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.6338 15.8653 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.2902 16.4919 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.1429 16.5664 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.9284 15.7161 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.2721 15.0895 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.4194 15.0149 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.7247 18.0458 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.0683 17.4192 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.2156 17.3446 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.4301 18.1949 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.0864 18.8215 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.9391 18.8961 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.5209 20.3754 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.8646 19.7488 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.0118 19.6742 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.2263 20.5246 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.8827 21.1512 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.7354 21.2258 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 4.0271 20.7432 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.1636 21.6953 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 4.3205 21.5473 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.7133 21.0392 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 4.5768 20.0870 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.4199 20.2350 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.5276 22.0703 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.8428 21.3861 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.3827 22.1079 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.4478 20.6267 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.1326 21.3109 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.5927 20.5891 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 1 5 1 0 0 0 0 + 5 6 2 0 0 0 0 + 6 4 1 0 0 0 0 + 4 2 2 0 0 0 0 + 2 3 1 0 0 0 0 + 9 7 2 0 0 0 0 + 7 11 1 0 0 0 0 + 11 12 2 0 0 0 0 + 12 10 1 0 0 0 0 + 10 8 2 0 0 0 0 + 8 9 1 0 0 0 0 + 6 9 1 0 0 0 0 + 15 13 2 0 0 0 0 + 13 17 1 0 0 0 0 + 17 18 2 0 0 0 0 + 18 16 1 0 0 0 0 + 16 14 2 0 0 0 0 + 14 15 1 0 0 0 0 + 14 3 1 0 0 0 0 + 21 19 2 0 0 0 0 + 19 23 1 0 0 0 0 + 23 24 2 0 0 0 0 + 24 22 1 0 0 0 0 + 22 20 2 0 0 0 0 + 20 21 1 0 0 0 0 + 19 13 1 0 0 0 0 + 21 15 1 0 0 0 0 + 27 25 2 0 0 0 0 + 25 29 1 0 0 0 0 + 29 30 2 0 0 0 0 + 30 28 1 0 0 0 0 + 28 26 2 0 0 0 0 + 26 27 1 0 0 0 0 + 22 27 1 0 0 0 0 + 24 26 1 0 0 0 0 + 33 31 2 0 0 0 0 + 31 35 1 0 0 0 0 + 35 36 2 0 0 0 0 + 36 34 1 0 0 0 0 + 34 32 2 0 0 0 0 + 32 33 1 0 0 0 0 + 12 34 1 0 0 0 0 + 39 37 2 0 0 0 0 + 37 41 1 0 0 0 0 + 41 42 2 0 0 0 0 + 42 40 1 0 0 0 0 + 40 38 2 0 0 0 0 + 38 39 1 0 0 0 0 + 45 43 2 0 0 0 0 + 43 47 1 0 0 0 0 + 47 48 2 0 0 0 0 + 48 46 1 0 0 0 0 + 46 44 2 0 0 0 0 + 44 45 1 0 0 0 0 + 39 32 1 0 0 0 0 + 38 33 1 0 0 0 0 + 45 41 1 0 0 0 0 + 44 42 1 0 0 0 0 + 51 49 2 0 0 0 0 + 49 53 1 0 0 0 0 + 53 54 2 0 0 0 0 + 54 52 1 0 0 0 0 + 52 50 2 0 0 0 0 + 50 51 1 0 0 0 0 + 57 55 2 0 0 0 0 + 55 59 1 0 0 0 0 + 59 60 2 0 0 0 0 + 60 58 1 0 0 0 0 + 58 56 2 0 0 0 0 + 56 57 1 0 0 0 0 + 25 49 1 0 0 0 0 + 52 59 1 0 0 0 0 + 56 43 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 3 3 0 0 0 0 0 0 0 0999 V2000 + 32.6062 18.0032 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 32.1584 17.2274 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 33.0541 17.2274 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 2 1 0 0 0 0 + 2 3 1 0 0 0 0 + 3 1 1 0 0 0 0 +M END +$RFMT +$RXN + + -INDIGO- 0100000000 + + 3 1 +$MOL + + -INDIGO-01000000002D + + 7 7 0 0 0 0 0 0 0 0999 V2000 + 13.5150 8.9987 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.5113 9.9946 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.5023 9.0116 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.4998 9.9946 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.9648 10.4975 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.0916 10.6227 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.6338 8.0370 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 2 1 0 0 0 0 + 2 4 1 0 0 0 0 + 4 3 1 0 0 0 0 + 3 1 1 0 0 0 0 + 5 4 1 0 0 0 0 + 6 2 1 0 0 0 0 + 7 1 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 6 6 0 0 0 0 0 0 0 0999 V2000 + 13.7708 4.0406 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.7671 5.0365 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.7580 4.0535 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.7555 5.0365 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.2206 5.4143 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.6338 5.5370 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 2 1 0 0 0 0 + 2 4 1 0 0 0 0 + 4 3 1 0 0 0 0 + 3 1 1 0 0 0 0 + 5 4 1 0 0 0 0 + 2 6 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 5 5 0 0 0 0 0 0 0 0999 V2000 + 14.6338 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.6301 0.9959 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.6210 0.0130 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.6185 0.9959 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.6249 1.5406 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 2 1 0 0 0 0 + 2 4 1 0 0 0 0 + 4 3 1 0 0 0 0 + 3 1 1 0 0 0 0 + 5 4 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 59 73 0 0 0 0 0 0 0 0999 V2000 + 23.3684 2.4782 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 23.4411 0.9285 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 22.9574 1.6824 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 24.3358 0.9705 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 24.2631 2.5202 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 24.7468 1.7664 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 27.6795 1.2673 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 27.4793 2.8057 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 27.1353 1.9787 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 28.3676 2.9212 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 28.5677 1.3828 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 28.9117 2.2098 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.0377 3.1007 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 20.4594 2.4795 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.9279 3.2005 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 20.1007 1.6587 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.6791 2.2799 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.2106 1.5589 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.9379 3.9908 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 20.1867 4.9114 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.8281 4.0906 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.6552 5.6324 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.4064 4.7118 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.7651 5.5326 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.9140 7.3433 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.6653 6.4227 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.5554 6.5225 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.1338 7.1437 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.3825 8.0642 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.4924 7.9644 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 33.0541 3.8774 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 31.5054 3.9679 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 32.3059 4.3697 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 31.4531 3.0737 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 33.0019 2.9832 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 32.2013 2.5814 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 30.3553 5.2608 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 31.9041 5.1702 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 31.1035 4.7684 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 31.9563 6.0644 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 30.4076 6.1549 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 31.2081 6.5568 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 29.2575 7.4478 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 30.8063 7.3573 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 30.0057 6.9555 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 30.8585 8.2515 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 29.3098 8.3420 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 30.1103 8.7438 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 22.2310 8.4043 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 23.5885 9.1553 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 22.6930 9.1717 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 24.0221 8.3716 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 22.6647 7.6205 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 23.5602 7.6042 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 26.4887 8.5936 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 26.9126 7.2076 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 27.2041 8.0546 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 26.0170 7.2232 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 25.7550 8.0797 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 1 5 1 0 0 0 0 + 5 6 2 0 0 0 0 + 6 4 1 0 0 0 0 + 4 2 2 0 0 0 0 + 2 3 1 0 0 0 0 + 9 7 2 0 0 0 0 + 7 11 1 0 0 0 0 + 11 12 2 0 0 0 0 + 12 10 1 0 0 0 0 + 10 8 2 0 0 0 0 + 8 9 1 0 0 0 0 + 6 9 1 0 0 0 0 + 15 13 2 0 0 0 0 + 13 17 1 0 0 0 0 + 17 18 2 0 0 0 0 + 18 16 1 0 0 0 0 + 16 14 2 0 0 0 0 + 14 15 1 0 0 0 0 + 14 3 1 0 0 0 0 + 21 19 2 0 0 0 0 + 19 23 1 0 0 0 0 + 23 24 2 0 0 0 0 + 24 22 1 0 0 0 0 + 22 20 2 0 0 0 0 + 20 21 1 0 0 0 0 + 19 13 1 0 0 0 0 + 21 15 1 0 0 0 0 + 27 25 2 0 0 0 0 + 25 29 1 0 0 0 0 + 29 30 2 0 0 0 0 + 30 28 1 0 0 0 0 + 28 26 2 0 0 0 0 + 26 27 1 0 0 0 0 + 22 27 1 0 0 0 0 + 24 26 1 0 0 0 0 + 33 31 2 0 0 0 0 + 31 35 1 0 0 0 0 + 35 36 2 0 0 0 0 + 36 34 1 0 0 0 0 + 34 32 2 0 0 0 0 + 32 33 1 0 0 0 0 + 12 34 1 0 0 0 0 + 39 37 2 0 0 0 0 + 37 41 1 0 0 0 0 + 41 42 2 0 0 0 0 + 42 40 1 0 0 0 0 + 40 38 2 0 0 0 0 + 38 39 1 0 0 0 0 + 45 43 2 0 0 0 0 + 43 47 1 0 0 0 0 + 47 48 2 0 0 0 0 + 48 46 1 0 0 0 0 + 46 44 2 0 0 0 0 + 44 45 1 0 0 0 0 + 39 32 1 0 0 0 0 + 38 33 1 0 0 0 0 + 45 41 1 0 0 0 0 + 44 42 1 0 0 0 0 + 51 49 2 0 0 0 0 + 49 53 1 0 0 0 0 + 53 54 2 0 0 0 0 + 54 52 1 0 0 0 0 + 52 50 2 0 0 0 0 + 50 51 1 0 0 0 0 + 25 49 1 0 0 0 0 + 55 59 1 0 0 0 0 + 59 58 2 0 0 0 0 + 58 56 1 0 0 0 0 + 56 57 2 0 0 0 0 + 57 55 1 0 0 0 0 + 52 59 1 0 0 0 0 + 57 47 1 0 0 0 0 +M END +$RFMT +$RXN + + -INDIGO- 0100000000 + + 2 1 +$MOL + + -INDIGO-01000000002D + + 3 3 0 0 0 0 0 0 0 0999 V2000 + 32.6062 18.0032 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 32.1584 17.2274 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 33.0541 17.2274 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 2 1 0 0 0 0 + 2 3 1 0 0 0 0 + 3 1 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 59 73 0 0 0 0 0 0 0 0999 V2000 + 23.3684 2.4782 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 23.4411 0.9285 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 22.9574 1.6824 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 24.3358 0.9705 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 24.2631 2.5202 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 24.7468 1.7664 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 27.6795 1.2673 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 27.4793 2.8057 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 27.1353 1.9787 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 28.3676 2.9212 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 28.5677 1.3828 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 28.9117 2.2098 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.0377 3.1007 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 20.4594 2.4795 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.9279 3.2005 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 20.1007 1.6587 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.6791 2.2799 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.2106 1.5589 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.9379 3.9908 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 20.1867 4.9114 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.8281 4.0906 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.6552 5.6324 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.4064 4.7118 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.7651 5.5326 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.9140 7.3433 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.6653 6.4227 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.5554 6.5225 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.1338 7.1437 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.3825 8.0642 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.4924 7.9644 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 33.0541 3.8774 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 31.5054 3.9679 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 32.3059 4.3697 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 31.4531 3.0737 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 33.0019 2.9832 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 32.2013 2.5814 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 30.3553 5.2608 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 31.9041 5.1702 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 31.1035 4.7684 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 31.9563 6.0644 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 30.4076 6.1549 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 31.2081 6.5568 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 29.2575 7.4478 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 30.8063 7.3573 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 30.0057 6.9555 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 30.8585 8.2515 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 29.3098 8.3420 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 30.1103 8.7438 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 22.2310 8.4043 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 23.5885 9.1553 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 22.6930 9.1717 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 24.0221 8.3716 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 22.6647 7.6205 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 23.5602 7.6042 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 26.4887 8.5936 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 26.9126 7.2076 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 27.2041 8.0546 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 26.0170 7.2232 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 25.7550 8.0797 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 1 5 1 0 0 0 0 + 5 6 2 0 0 0 0 + 6 4 1 0 0 0 0 + 4 2 2 0 0 0 0 + 2 3 1 0 0 0 0 + 9 7 2 0 0 0 0 + 7 11 1 0 0 0 0 + 11 12 2 0 0 0 0 + 12 10 1 0 0 0 0 + 10 8 2 0 0 0 0 + 8 9 1 0 0 0 0 + 6 9 1 0 0 0 0 + 15 13 2 0 0 0 0 + 13 17 1 0 0 0 0 + 17 18 2 0 0 0 0 + 18 16 1 0 0 0 0 + 16 14 2 0 0 0 0 + 14 15 1 0 0 0 0 + 14 3 1 0 0 0 0 + 21 19 2 0 0 0 0 + 19 23 1 0 0 0 0 + 23 24 2 0 0 0 0 + 24 22 1 0 0 0 0 + 22 20 2 0 0 0 0 + 20 21 1 0 0 0 0 + 19 13 1 0 0 0 0 + 21 15 1 0 0 0 0 + 27 25 2 0 0 0 0 + 25 29 1 0 0 0 0 + 29 30 2 0 0 0 0 + 30 28 1 0 0 0 0 + 28 26 2 0 0 0 0 + 26 27 1 0 0 0 0 + 22 27 1 0 0 0 0 + 24 26 1 0 0 0 0 + 33 31 2 0 0 0 0 + 31 35 1 0 0 0 0 + 35 36 2 0 0 0 0 + 36 34 1 0 0 0 0 + 34 32 2 0 0 0 0 + 32 33 1 0 0 0 0 + 12 34 1 0 0 0 0 + 39 37 2 0 0 0 0 + 37 41 1 0 0 0 0 + 41 42 2 0 0 0 0 + 42 40 1 0 0 0 0 + 40 38 2 0 0 0 0 + 38 39 1 0 0 0 0 + 45 43 2 0 0 0 0 + 43 47 1 0 0 0 0 + 47 48 2 0 0 0 0 + 48 46 1 0 0 0 0 + 46 44 2 0 0 0 0 + 44 45 1 0 0 0 0 + 39 32 1 0 0 0 0 + 38 33 1 0 0 0 0 + 45 41 1 0 0 0 0 + 44 42 1 0 0 0 0 + 51 49 2 0 0 0 0 + 49 53 1 0 0 0 0 + 53 54 2 0 0 0 0 + 54 52 1 0 0 0 0 + 52 50 2 0 0 0 0 + 50 51 1 0 0 0 0 + 25 49 1 0 0 0 0 + 55 59 1 0 0 0 0 + 59 58 2 0 0 0 0 + 58 56 1 0 0 0 0 + 56 57 2 0 0 0 0 + 57 55 1 0 0 0 0 + 52 59 1 0 0 0 0 + 57 47 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 8 8 0 0 0 0 0 0 0 0999 V2000 + 37.7244 12.5030 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 38.5519 12.1602 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 38.8947 11.3327 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 36.8969 12.1602 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 36.5541 11.3327 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 36.8969 10.5052 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 37.7244 10.1624 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 38.5519 10.5052 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 2 1 1 0 0 0 0 + 1 4 1 0 0 0 0 + 4 5 1 0 0 0 0 + 5 6 1 0 0 0 0 + 6 7 1 0 0 0 0 + 7 8 1 0 0 0 0 + 8 3 1 0 0 0 0 + 3 2 1 0 0 0 0 +M END diff --git a/api/tests/integration/tests/formats/ref/pathway8.rdf b/api/tests/integration/tests/formats/ref/pathway8.rdf new file mode 100644 index 0000000000..587cbbfd57 --- /dev/null +++ b/api/tests/integration/tests/formats/ref/pathway8.rdf @@ -0,0 +1,876 @@ +$RDFILE 1 +$DATM 01/00/00 00:00 +$RDFILE 1 +$DATM 01/00/00 00:00 +$RFMT +$RXN + + -INDIGO- 0100000000 + + 1 1 +$MOL + + -INDIGO-01000000002D + + 6 6 0 0 0 0 0 0 0 0999 V2000 + 0.0017 14.7456 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7320 14.7461 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.8684 15.2457 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7320 13.7452 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.0017 13.7407 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.8706 13.2457 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 1 5 1 0 0 0 0 + 5 6 2 0 0 0 0 + 6 4 1 0 0 0 0 + 4 2 2 0 0 0 0 + 2 3 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 60 74 0 0 0 0 0 0 0 0999 V2000 + 10.6003 11.2320 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.6656 9.7496 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.2051 10.4719 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.5214 9.7873 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.4561 11.2696 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.9167 10.5473 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.8066 10.0636 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.6323 11.5370 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.2941 10.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.4830 11.6377 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.6573 10.1642 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.9955 10.9512 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.4171 11.8978 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.7820 11.3157 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.2676 12.0008 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.4459 10.5278 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.0812 11.1099 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.5955 10.4248 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.3143 12.7482 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.5007 13.6391 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.1646 12.8512 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.9864 14.3242 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.7999 13.4333 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.1359 14.2212 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.2195 15.9625 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.0329 15.0716 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.8834 15.1746 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.5186 15.7567 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.7051 16.6476 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.8547 16.5446 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 20.1638 12.4943 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.8192 13.1214 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.6725 13.1960 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.4571 12.3450 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.8018 11.7179 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.9485 11.6433 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.2532 14.6765 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.5979 14.0494 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.7445 13.9748 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.9599 14.8257 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.6152 15.4528 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.4686 15.5275 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.0493 17.0079 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.3940 16.3809 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.5405 16.3062 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.7560 17.1573 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.4113 17.7843 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.2647 17.8590 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.5489 17.3760 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.6862 18.3289 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.8425 18.1807 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.2364 17.6723 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.0990 16.7193 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.9427 16.8674 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.0529 18.7042 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.3691 18.0194 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.9086 18.7418 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.9738 17.2594 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.6576 17.9442 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.1180 17.2218 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 1 5 1 0 0 0 0 + 5 6 2 0 0 0 0 + 6 4 1 0 0 0 0 + 4 2 2 0 0 0 0 + 2 3 1 0 0 0 0 + 9 7 2 0 0 0 0 + 7 11 1 0 0 0 0 + 11 12 2 0 0 0 0 + 12 10 1 0 0 0 0 + 10 8 2 0 0 0 0 + 8 9 1 0 0 0 0 + 6 9 1 0 0 0 0 + 15 13 2 0 0 0 0 + 13 17 1 0 0 0 0 + 17 18 2 0 0 0 0 + 18 16 1 0 0 0 0 + 16 14 2 0 0 0 0 + 14 15 1 0 0 0 0 + 14 3 1 0 0 0 0 + 21 19 2 0 0 0 0 + 19 23 1 0 0 0 0 + 23 24 2 0 0 0 0 + 24 22 1 0 0 0 0 + 22 20 2 0 0 0 0 + 20 21 1 0 0 0 0 + 19 13 1 0 0 0 0 + 21 15 1 0 0 0 0 + 27 25 2 0 0 0 0 + 25 29 1 0 0 0 0 + 29 30 2 0 0 0 0 + 30 28 1 0 0 0 0 + 28 26 2 0 0 0 0 + 26 27 1 0 0 0 0 + 22 27 1 0 0 0 0 + 24 26 1 0 0 0 0 + 33 31 2 0 0 0 0 + 31 35 1 0 0 0 0 + 35 36 2 0 0 0 0 + 36 34 1 0 0 0 0 + 34 32 2 0 0 0 0 + 32 33 1 0 0 0 0 + 12 34 1 0 0 0 0 + 39 37 2 0 0 0 0 + 37 41 1 0 0 0 0 + 41 42 2 0 0 0 0 + 42 40 1 0 0 0 0 + 40 38 2 0 0 0 0 + 38 39 1 0 0 0 0 + 45 43 2 0 0 0 0 + 43 47 1 0 0 0 0 + 47 48 2 0 0 0 0 + 48 46 1 0 0 0 0 + 46 44 2 0 0 0 0 + 44 45 1 0 0 0 0 + 39 32 1 0 0 0 0 + 38 33 1 0 0 0 0 + 45 41 1 0 0 0 0 + 44 42 1 0 0 0 0 + 51 49 2 0 0 0 0 + 49 53 1 0 0 0 0 + 53 54 2 0 0 0 0 + 54 52 1 0 0 0 0 + 52 50 2 0 0 0 0 + 50 51 1 0 0 0 0 + 57 55 2 0 0 0 0 + 55 59 1 0 0 0 0 + 59 60 2 0 0 0 0 + 60 58 1 0 0 0 0 + 58 56 2 0 0 0 0 + 56 57 1 0 0 0 0 + 25 49 1 0 0 0 0 + 52 59 1 0 0 0 0 + 56 43 1 0 0 0 0 +M END +$RFMT +$RXN + + -INDIGO- 0100000000 + + 2 1 +$MOL + + -INDIGO-01000000002D + + 6 6 0 0 0 0 0 0 0 0999 V2000 + 0.0000 27.9988 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.0000 26.9988 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.8660 26.4988 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7320 26.9988 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7320 27.9988 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.8660 28.4989 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6 1 1 0 0 0 0 + 1 2 1 0 0 0 0 + 2 3 1 0 0 0 0 + 3 4 1 0 0 0 0 + 4 5 1 0 0 0 0 + 5 6 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 5 5 0 0 0 0 0 0 0 0999 V2000 + 0.9282 23.9988 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.4250 22.4699 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7320 23.4092 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.4315 22.4699 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.1243 23.4092 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 5 1 0 0 0 0 + 5 4 2 0 0 0 0 + 4 2 1 0 0 0 0 + 2 3 2 0 0 0 0 + 3 1 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 59 73 0 0 0 0 0 0 0 0999 V2000 + 10.4706 22.7927 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.5434 21.2418 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.0593 21.9963 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.4388 21.2839 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.3660 22.8348 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.8501 22.0804 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.7851 21.5809 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.5847 23.1205 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.2405 22.2928 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.4737 23.2361 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.6740 21.6965 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 16.0182 22.5241 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.1366 23.4157 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.5594 22.7940 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.0275 23.5156 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.2004 21.9726 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.7777 22.5943 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.3096 21.8727 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.0367 24.3065 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.2865 25.2278 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.9276 24.4064 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.7545 25.9494 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.5048 25.0281 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.8638 25.8495 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.0136 27.6616 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.7639 26.7403 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.6547 26.8402 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.2320 27.4619 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.4816 28.3831 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.5908 28.2832 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 20.1638 24.1930 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.6139 24.2836 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.4151 24.6857 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.5616 23.3887 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 20.1116 23.2981 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.3104 22.8960 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.4630 25.5775 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.0130 25.4868 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.2117 25.0847 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.0652 26.3817 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.5153 26.4723 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.3164 26.8745 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 16.3643 27.7662 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.9143 27.6756 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.1131 27.2735 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.9665 28.5705 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 16.4166 28.6611 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.2178 29.0632 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.3323 28.7234 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.6909 29.4750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.7947 29.4914 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.1248 28.6907 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.7664 27.9390 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.6626 27.9227 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.5934 28.9129 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.0176 27.5258 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.3093 28.3735 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.1213 27.5414 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.8591 28.3986 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 1 5 1 0 0 0 0 + 5 6 2 0 0 0 0 + 6 4 1 0 0 0 0 + 4 2 2 0 0 0 0 + 2 3 1 0 0 0 0 + 9 7 2 0 0 0 0 + 7 11 1 0 0 0 0 + 11 12 2 0 0 0 0 + 12 10 1 0 0 0 0 + 10 8 2 0 0 0 0 + 8 9 1 0 0 0 0 + 6 9 1 0 0 0 0 + 15 13 2 0 0 0 0 + 13 17 1 0 0 0 0 + 17 18 2 0 0 0 0 + 18 16 1 0 0 0 0 + 16 14 2 0 0 0 0 + 14 15 1 0 0 0 0 + 14 3 1 0 0 0 0 + 21 19 2 0 0 0 0 + 19 23 1 0 0 0 0 + 23 24 2 0 0 0 0 + 24 22 1 0 0 0 0 + 22 20 2 0 0 0 0 + 20 21 1 0 0 0 0 + 19 13 1 0 0 0 0 + 21 15 1 0 0 0 0 + 27 25 2 0 0 0 0 + 25 29 1 0 0 0 0 + 29 30 2 0 0 0 0 + 30 28 1 0 0 0 0 + 28 26 2 0 0 0 0 + 26 27 1 0 0 0 0 + 22 27 1 0 0 0 0 + 24 26 1 0 0 0 0 + 33 31 2 0 0 0 0 + 31 35 1 0 0 0 0 + 35 36 2 0 0 0 0 + 36 34 1 0 0 0 0 + 34 32 2 0 0 0 0 + 32 33 1 0 0 0 0 + 12 34 1 0 0 0 0 + 39 37 2 0 0 0 0 + 37 41 1 0 0 0 0 + 41 42 2 0 0 0 0 + 42 40 1 0 0 0 0 + 40 38 2 0 0 0 0 + 38 39 1 0 0 0 0 + 45 43 2 0 0 0 0 + 43 47 1 0 0 0 0 + 47 48 2 0 0 0 0 + 48 46 1 0 0 0 0 + 46 44 2 0 0 0 0 + 44 45 1 0 0 0 0 + 39 32 1 0 0 0 0 + 38 33 1 0 0 0 0 + 45 41 1 0 0 0 0 + 44 42 1 0 0 0 0 + 51 49 2 0 0 0 0 + 49 53 1 0 0 0 0 + 53 54 2 0 0 0 0 + 54 52 1 0 0 0 0 + 52 50 2 0 0 0 0 + 50 51 1 0 0 0 0 + 25 49 1 0 0 0 0 + 55 59 1 0 0 0 0 + 59 58 2 0 0 0 0 + 58 56 1 0 0 0 0 + 56 57 2 0 0 0 0 + 57 55 1 0 0 0 0 + 52 59 1 0 0 0 0 + 57 47 1 0 0 0 0 +M END +$RFMT +$RXN + + -INDIGO- 0100000000 + + 1 1 +$MOL + + -INDIGO-01000000002D + + 60 74 0 0 0 0 0 0 0 0999 V2000 + 10.6003 11.2320 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.6656 9.7496 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.2051 10.4719 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.5214 9.7873 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.4561 11.2696 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.9167 10.5473 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.8066 10.0636 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.6323 11.5370 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.2941 10.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.4830 11.6377 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.6573 10.1642 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.9955 10.9512 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.4171 11.8978 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.7820 11.3157 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.2676 12.0008 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.4459 10.5278 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.0812 11.1099 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.5955 10.4248 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.3143 12.7482 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.5007 13.6391 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.1646 12.8512 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.9864 14.3242 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.7999 13.4333 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.1359 14.2212 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.2195 15.9625 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.0329 15.0716 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.8834 15.1746 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.5186 15.7567 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.7051 16.6476 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.8547 16.5446 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 20.1638 12.4943 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.8192 13.1214 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.6725 13.1960 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.4571 12.3450 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.8018 11.7179 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.9485 11.6433 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.2532 14.6765 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.5979 14.0494 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.7445 13.9748 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.9599 14.8257 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.6152 15.4528 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.4686 15.5275 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.0493 17.0079 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.3940 16.3809 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.5405 16.3062 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.7560 17.1573 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.4113 17.7843 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.2647 17.8590 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.5489 17.3760 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.6862 18.3289 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.8425 18.1807 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.2364 17.6723 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.0990 16.7193 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.9427 16.8674 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.0529 18.7042 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.3691 18.0194 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.9086 18.7418 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.9738 17.2594 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.6576 17.9442 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.1180 17.2218 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 1 5 1 0 0 0 0 + 5 6 2 0 0 0 0 + 6 4 1 0 0 0 0 + 4 2 2 0 0 0 0 + 2 3 1 0 0 0 0 + 9 7 2 0 0 0 0 + 7 11 1 0 0 0 0 + 11 12 2 0 0 0 0 + 12 10 1 0 0 0 0 + 10 8 2 0 0 0 0 + 8 9 1 0 0 0 0 + 6 9 1 0 0 0 0 + 15 13 2 0 0 0 0 + 13 17 1 0 0 0 0 + 17 18 2 0 0 0 0 + 18 16 1 0 0 0 0 + 16 14 2 0 0 0 0 + 14 15 1 0 0 0 0 + 14 3 1 0 0 0 0 + 21 19 2 0 0 0 0 + 19 23 1 0 0 0 0 + 23 24 2 0 0 0 0 + 24 22 1 0 0 0 0 + 22 20 2 0 0 0 0 + 20 21 1 0 0 0 0 + 19 13 1 0 0 0 0 + 21 15 1 0 0 0 0 + 27 25 2 0 0 0 0 + 25 29 1 0 0 0 0 + 29 30 2 0 0 0 0 + 30 28 1 0 0 0 0 + 28 26 2 0 0 0 0 + 26 27 1 0 0 0 0 + 22 27 1 0 0 0 0 + 24 26 1 0 0 0 0 + 33 31 2 0 0 0 0 + 31 35 1 0 0 0 0 + 35 36 2 0 0 0 0 + 36 34 1 0 0 0 0 + 34 32 2 0 0 0 0 + 32 33 1 0 0 0 0 + 12 34 1 0 0 0 0 + 39 37 2 0 0 0 0 + 37 41 1 0 0 0 0 + 41 42 2 0 0 0 0 + 42 40 1 0 0 0 0 + 40 38 2 0 0 0 0 + 38 39 1 0 0 0 0 + 45 43 2 0 0 0 0 + 43 47 1 0 0 0 0 + 47 48 2 0 0 0 0 + 48 46 1 0 0 0 0 + 46 44 2 0 0 0 0 + 44 45 1 0 0 0 0 + 39 32 1 0 0 0 0 + 38 33 1 0 0 0 0 + 45 41 1 0 0 0 0 + 44 42 1 0 0 0 0 + 51 49 2 0 0 0 0 + 49 53 1 0 0 0 0 + 53 54 2 0 0 0 0 + 54 52 1 0 0 0 0 + 52 50 2 0 0 0 0 + 50 51 1 0 0 0 0 + 57 55 2 0 0 0 0 + 55 59 1 0 0 0 0 + 59 60 2 0 0 0 0 + 60 58 1 0 0 0 0 + 58 56 2 0 0 0 0 + 56 57 1 0 0 0 0 + 25 49 1 0 0 0 0 + 52 59 1 0 0 0 0 + 56 43 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 3 3 0 0 0 0 0 0 0 0999 V2000 + 23.6769 13.8132 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 24.6782 13.8132 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 24.1776 14.6782 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 2 1 0 0 0 0 + 2 3 1 0 0 0 0 + 3 1 1 0 0 0 0 +M END +$RFMT +$RXN + + -INDIGO- 0100000000 + + 1 1 +$MOL + + -INDIGO-01000000002D + + 59 73 0 0 0 0 0 0 0 0999 V2000 + 10.4706 22.7927 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.5434 21.2418 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.0593 21.9963 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.4388 21.2839 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.3660 22.8348 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.8501 22.0804 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.7851 21.5809 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.5847 23.1205 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.2405 22.2928 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.4737 23.2361 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.6740 21.6965 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 16.0182 22.5241 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.1366 23.4157 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.5594 22.7940 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.0275 23.5156 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.2004 21.9726 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.7777 22.5943 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.3096 21.8727 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.0367 24.3065 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.2865 25.2278 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.9276 24.4064 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.7545 25.9494 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.5048 25.0281 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.8638 25.8495 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.0136 27.6616 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.7639 26.7403 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.6547 26.8402 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.2320 27.4619 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.4816 28.3831 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.5908 28.2832 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 20.1638 24.1930 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.6139 24.2836 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.4151 24.6857 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.5616 23.3887 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 20.1116 23.2981 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.3104 22.8960 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.4630 25.5775 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.0130 25.4868 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.2117 25.0847 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.0652 26.3817 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.5153 26.4723 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.3164 26.8745 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 16.3643 27.7662 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.9143 27.6756 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.1131 27.2735 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.9665 28.5705 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 16.4166 28.6611 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.2178 29.0632 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.3323 28.7234 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.6909 29.4750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.7947 29.4914 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.1248 28.6907 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.7664 27.9390 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.6626 27.9227 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.5934 28.9129 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.0176 27.5258 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.3093 28.3735 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.1213 27.5414 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.8591 28.3986 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 1 5 1 0 0 0 0 + 5 6 2 0 0 0 0 + 6 4 1 0 0 0 0 + 4 2 2 0 0 0 0 + 2 3 1 0 0 0 0 + 9 7 2 0 0 0 0 + 7 11 1 0 0 0 0 + 11 12 2 0 0 0 0 + 12 10 1 0 0 0 0 + 10 8 2 0 0 0 0 + 8 9 1 0 0 0 0 + 6 9 1 0 0 0 0 + 15 13 2 0 0 0 0 + 13 17 1 0 0 0 0 + 17 18 2 0 0 0 0 + 18 16 1 0 0 0 0 + 16 14 2 0 0 0 0 + 14 15 1 0 0 0 0 + 14 3 1 0 0 0 0 + 21 19 2 0 0 0 0 + 19 23 1 0 0 0 0 + 23 24 2 0 0 0 0 + 24 22 1 0 0 0 0 + 22 20 2 0 0 0 0 + 20 21 1 0 0 0 0 + 19 13 1 0 0 0 0 + 21 15 1 0 0 0 0 + 27 25 2 0 0 0 0 + 25 29 1 0 0 0 0 + 29 30 2 0 0 0 0 + 30 28 1 0 0 0 0 + 28 26 2 0 0 0 0 + 26 27 1 0 0 0 0 + 22 27 1 0 0 0 0 + 24 26 1 0 0 0 0 + 33 31 2 0 0 0 0 + 31 35 1 0 0 0 0 + 35 36 2 0 0 0 0 + 36 34 1 0 0 0 0 + 34 32 2 0 0 0 0 + 32 33 1 0 0 0 0 + 12 34 1 0 0 0 0 + 39 37 2 0 0 0 0 + 37 41 1 0 0 0 0 + 41 42 2 0 0 0 0 + 42 40 1 0 0 0 0 + 40 38 2 0 0 0 0 + 38 39 1 0 0 0 0 + 45 43 2 0 0 0 0 + 43 47 1 0 0 0 0 + 47 48 2 0 0 0 0 + 48 46 1 0 0 0 0 + 46 44 2 0 0 0 0 + 44 45 1 0 0 0 0 + 39 32 1 0 0 0 0 + 38 33 1 0 0 0 0 + 45 41 1 0 0 0 0 + 44 42 1 0 0 0 0 + 51 49 2 0 0 0 0 + 49 53 1 0 0 0 0 + 53 54 2 0 0 0 0 + 54 52 1 0 0 0 0 + 52 50 2 0 0 0 0 + 50 51 1 0 0 0 0 + 25 49 1 0 0 0 0 + 55 59 1 0 0 0 0 + 59 58 2 0 0 0 0 + 58 56 1 0 0 0 0 + 56 57 2 0 0 0 0 + 57 55 1 0 0 0 0 + 52 59 1 0 0 0 0 + 57 47 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 4 4 0 0 0 0 0 0 0 0999 V2000 + 24.6782 24.8691 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 24.6745 25.8642 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 23.6663 24.8820 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 23.6638 25.8642 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 2 1 0 0 0 0 + 2 4 1 0 0 0 0 + 4 3 1 0 0 0 0 + 3 1 1 0 0 0 0 +M END +$RFMT +$RXN + + -INDIGO- 0100000000 + + 1 1 +$MOL + + -INDIGO-01000000002D + + 5 5 0 0 0 0 0 0 0 0999 V2000 + 0.8097 4.8948 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.3101 3.3547 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.6194 4.3009 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.3094 3.3547 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.0000 4.3009 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 5 1 0 0 0 0 + 5 4 2 0 0 0 0 + 4 2 1 0 0 0 0 + 2 3 2 0 0 0 0 + 3 1 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 59 73 0 0 0 0 0 0 0 0999 V2000 + 10.3580 1.5509 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.4308 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.9467 0.7545 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.3262 0.0421 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.2534 1.5930 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.7375 0.8386 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.6725 0.3391 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.4721 1.8787 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.1279 1.0510 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.3611 1.9943 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.5614 0.4547 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.9056 1.2823 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.0240 2.1739 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.4468 1.5522 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.9149 2.2738 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.0878 0.7308 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.6651 1.3525 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.1970 0.6309 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.9241 3.0647 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.1739 3.9860 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.8150 3.1646 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.6419 4.7076 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.3922 3.7863 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.7512 4.6077 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.9010 6.4198 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.6513 5.4985 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.5421 5.5984 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.1194 6.2201 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.3690 7.1413 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.4782 7.0414 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 20.0512 2.9512 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.5013 3.0418 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.3025 3.4439 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.4490 2.1469 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.9990 2.0563 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.1978 1.6542 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.3504 4.3357 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.9004 4.2450 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.0991 3.8429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.9526 5.1399 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.4027 5.2305 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.2038 5.6327 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 16.2517 6.5244 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.8017 6.4338 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.0005 6.0317 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.8539 7.3287 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 16.3040 7.4193 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.1052 7.8214 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.2197 7.4816 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.5783 8.2332 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.6821 8.2496 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.0122 7.4489 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.6538 6.6972 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.5500 6.6809 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.4808 7.6711 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.9050 6.2840 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.1967 7.1317 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.0087 6.2996 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.7465 7.1568 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 1 5 1 0 0 0 0 + 5 6 2 0 0 0 0 + 6 4 1 0 0 0 0 + 4 2 2 0 0 0 0 + 2 3 1 0 0 0 0 + 9 7 2 0 0 0 0 + 7 11 1 0 0 0 0 + 11 12 2 0 0 0 0 + 12 10 1 0 0 0 0 + 10 8 2 0 0 0 0 + 8 9 1 0 0 0 0 + 6 9 1 0 0 0 0 + 15 13 2 0 0 0 0 + 13 17 1 0 0 0 0 + 17 18 2 0 0 0 0 + 18 16 1 0 0 0 0 + 16 14 2 0 0 0 0 + 14 15 1 0 0 0 0 + 14 3 1 0 0 0 0 + 21 19 2 0 0 0 0 + 19 23 1 0 0 0 0 + 23 24 2 0 0 0 0 + 24 22 1 0 0 0 0 + 22 20 2 0 0 0 0 + 20 21 1 0 0 0 0 + 19 13 1 0 0 0 0 + 21 15 1 0 0 0 0 + 27 25 2 0 0 0 0 + 25 29 1 0 0 0 0 + 29 30 2 0 0 0 0 + 30 28 1 0 0 0 0 + 28 26 2 0 0 0 0 + 26 27 1 0 0 0 0 + 22 27 1 0 0 0 0 + 24 26 1 0 0 0 0 + 33 31 2 0 0 0 0 + 31 35 1 0 0 0 0 + 35 36 2 0 0 0 0 + 36 34 1 0 0 0 0 + 34 32 2 0 0 0 0 + 32 33 1 0 0 0 0 + 12 34 1 0 0 0 0 + 39 37 2 0 0 0 0 + 37 41 1 0 0 0 0 + 41 42 2 0 0 0 0 + 42 40 1 0 0 0 0 + 40 38 2 0 0 0 0 + 38 39 1 0 0 0 0 + 45 43 2 0 0 0 0 + 43 47 1 0 0 0 0 + 47 48 2 0 0 0 0 + 48 46 1 0 0 0 0 + 46 44 2 0 0 0 0 + 44 45 1 0 0 0 0 + 39 32 1 0 0 0 0 + 38 33 1 0 0 0 0 + 45 41 1 0 0 0 0 + 44 42 1 0 0 0 0 + 51 49 2 0 0 0 0 + 49 53 1 0 0 0 0 + 53 54 2 0 0 0 0 + 54 52 1 0 0 0 0 + 52 50 2 0 0 0 0 + 50 51 1 0 0 0 0 + 25 49 1 0 0 0 0 + 55 59 1 0 0 0 0 + 59 58 2 0 0 0 0 + 58 56 1 0 0 0 0 + 56 57 2 0 0 0 0 + 57 55 1 0 0 0 0 + 52 59 1 0 0 0 0 + 57 47 1 0 0 0 0 +M END +$RFMT +$RXN + + -INDIGO- 0100000000 + + 2 1 +$MOL + + -INDIGO-01000000002D + + 4 4 0 0 0 0 0 0 0 0999 V2000 + 24.6782 24.8691 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 24.6745 25.8642 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 23.6663 24.8820 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 23.6638 25.8642 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 2 1 0 0 0 0 + 2 4 1 0 0 0 0 + 4 3 1 0 0 0 0 + 3 1 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 3 3 0 0 0 0 0 0 0 0999 V2000 + 23.6769 13.8132 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 24.6782 13.8132 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 24.1776 14.6782 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 2 1 0 0 0 0 + 2 3 1 0 0 0 0 + 3 1 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 8 8 0 0 0 0 0 0 0 0999 V2000 + 28.1782 19.3050 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 28.1784 20.3074 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 28.8836 21.0126 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 28.8838 18.5995 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 29.8862 18.5995 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 30.5916 19.3050 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 30.5915 20.3074 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 29.8862 21.0127 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 2 1 1 0 0 0 0 + 1 4 1 0 0 0 0 + 4 5 1 0 0 0 0 + 5 6 1 0 0 0 0 + 6 7 1 0 0 0 0 + 7 8 1 0 0 0 0 + 8 3 1 0 0 0 0 + 3 2 1 0 0 0 0 +M END diff --git a/api/tests/integration/tests/formats/ref/pathway9.rdf b/api/tests/integration/tests/formats/ref/pathway9.rdf new file mode 100644 index 0000000000..abce544de0 --- /dev/null +++ b/api/tests/integration/tests/formats/ref/pathway9.rdf @@ -0,0 +1,1028 @@ +$RDFILE 1 +$DATM 01/00/00 00:00 +$RDFILE 1 +$DATM 01/00/00 00:00 +$RFMT +$RXN + + -INDIGO- 0100000000 + + 1 1 +$MOL + + -INDIGO-01000000002D + + 6 6 0 0 0 0 0 0 0 0999 V2000 + 0.0017 14.7456 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7320 14.7461 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.8684 15.2457 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7320 13.7452 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.0017 13.7407 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.8706 13.2457 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 1 5 1 0 0 0 0 + 5 6 2 0 0 0 0 + 6 4 1 0 0 0 0 + 4 2 2 0 0 0 0 + 2 3 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 60 74 0 0 0 0 0 0 0 0999 V2000 + 10.6003 11.2320 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.6656 9.7496 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.2051 10.4719 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.5214 9.7873 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.4561 11.2696 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.9167 10.5473 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.8066 10.0636 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.6323 11.5370 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.2941 10.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.4830 11.6377 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.6573 10.1642 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.9955 10.9512 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.4171 11.8978 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.7820 11.3157 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.2676 12.0008 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.4459 10.5278 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.0812 11.1099 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.5955 10.4248 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.3143 12.7482 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.5007 13.6391 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.1646 12.8512 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.9864 14.3242 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.7999 13.4333 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.1359 14.2212 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.2195 15.9625 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.0329 15.0716 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.8834 15.1746 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.5186 15.7567 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.7051 16.6476 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.8547 16.5446 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 20.1638 12.4943 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.8192 13.1214 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.6725 13.1960 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.4571 12.3450 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.8018 11.7179 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.9485 11.6433 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.2532 14.6765 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.5979 14.0494 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.7445 13.9748 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.9599 14.8257 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.6152 15.4528 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.4686 15.5275 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.0493 17.0079 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.3940 16.3809 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.5405 16.3062 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.7560 17.1573 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.4113 17.7843 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.2647 17.8590 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.5489 17.3760 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.6862 18.3289 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.8425 18.1807 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.2364 17.6723 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.0990 16.7193 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.9427 16.8674 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.0529 18.7042 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.3691 18.0194 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.9086 18.7418 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.9738 17.2594 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.6576 17.9442 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.1180 17.2218 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 1 5 1 0 0 0 0 + 5 6 2 0 0 0 0 + 6 4 1 0 0 0 0 + 4 2 2 0 0 0 0 + 2 3 1 0 0 0 0 + 9 7 2 0 0 0 0 + 7 11 1 0 0 0 0 + 11 12 2 0 0 0 0 + 12 10 1 0 0 0 0 + 10 8 2 0 0 0 0 + 8 9 1 0 0 0 0 + 6 9 1 0 0 0 0 + 15 13 2 0 0 0 0 + 13 17 1 0 0 0 0 + 17 18 2 0 0 0 0 + 18 16 1 0 0 0 0 + 16 14 2 0 0 0 0 + 14 15 1 0 0 0 0 + 14 3 1 0 0 0 0 + 21 19 2 0 0 0 0 + 19 23 1 0 0 0 0 + 23 24 2 0 0 0 0 + 24 22 1 0 0 0 0 + 22 20 2 0 0 0 0 + 20 21 1 0 0 0 0 + 19 13 1 0 0 0 0 + 21 15 1 0 0 0 0 + 27 25 2 0 0 0 0 + 25 29 1 0 0 0 0 + 29 30 2 0 0 0 0 + 30 28 1 0 0 0 0 + 28 26 2 0 0 0 0 + 26 27 1 0 0 0 0 + 22 27 1 0 0 0 0 + 24 26 1 0 0 0 0 + 33 31 2 0 0 0 0 + 31 35 1 0 0 0 0 + 35 36 2 0 0 0 0 + 36 34 1 0 0 0 0 + 34 32 2 0 0 0 0 + 32 33 1 0 0 0 0 + 12 34 1 0 0 0 0 + 39 37 2 0 0 0 0 + 37 41 1 0 0 0 0 + 41 42 2 0 0 0 0 + 42 40 1 0 0 0 0 + 40 38 2 0 0 0 0 + 38 39 1 0 0 0 0 + 45 43 2 0 0 0 0 + 43 47 1 0 0 0 0 + 47 48 2 0 0 0 0 + 48 46 1 0 0 0 0 + 46 44 2 0 0 0 0 + 44 45 1 0 0 0 0 + 39 32 1 0 0 0 0 + 38 33 1 0 0 0 0 + 45 41 1 0 0 0 0 + 44 42 1 0 0 0 0 + 51 49 2 0 0 0 0 + 49 53 1 0 0 0 0 + 53 54 2 0 0 0 0 + 54 52 1 0 0 0 0 + 52 50 2 0 0 0 0 + 50 51 1 0 0 0 0 + 57 55 2 0 0 0 0 + 55 59 1 0 0 0 0 + 59 60 2 0 0 0 0 + 60 58 1 0 0 0 0 + 58 56 2 0 0 0 0 + 56 57 1 0 0 0 0 + 25 49 1 0 0 0 0 + 52 59 1 0 0 0 0 + 56 43 1 0 0 0 0 +M END +$RFMT +$RXN + + -INDIGO- 0100000000 + + 2 1 +$MOL + + -INDIGO-01000000002D + + 6 6 0 0 0 0 0 0 0 0999 V2000 + 0.0000 27.9988 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.0000 26.9988 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.8660 26.4988 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7320 26.9988 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7320 27.9988 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.8660 28.4989 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6 1 1 0 0 0 0 + 1 2 1 0 0 0 0 + 2 3 1 0 0 0 0 + 3 4 1 0 0 0 0 + 4 5 1 0 0 0 0 + 5 6 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 5 5 0 0 0 0 0 0 0 0999 V2000 + 0.9282 23.9988 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.4250 22.4699 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7320 23.4092 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.4315 22.4699 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.1243 23.4092 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 5 1 0 0 0 0 + 5 4 2 0 0 0 0 + 4 2 1 0 0 0 0 + 2 3 2 0 0 0 0 + 3 1 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 59 73 0 0 0 0 0 0 0 0999 V2000 + 10.4706 22.7927 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.5434 21.2418 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.0593 21.9963 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.4388 21.2839 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.3660 22.8348 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.8501 22.0804 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.7851 21.5809 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.5847 23.1205 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.2405 22.2928 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.4737 23.2361 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.6740 21.6965 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 16.0182 22.5241 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.1366 23.4157 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.5594 22.7940 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.0275 23.5156 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.2004 21.9726 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.7777 22.5943 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.3096 21.8727 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.0367 24.3065 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.2865 25.2278 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.9276 24.4064 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.7545 25.9494 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.5048 25.0281 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.8638 25.8495 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.0136 27.6616 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.7639 26.7403 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.6547 26.8402 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.2320 27.4619 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.4816 28.3831 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.5908 28.2832 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 20.1638 24.1930 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.6139 24.2836 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.4151 24.6857 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.5616 23.3887 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 20.1116 23.2981 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.3104 22.8960 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.4630 25.5775 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.0130 25.4868 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.2117 25.0847 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.0652 26.3817 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.5153 26.4723 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.3164 26.8745 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 16.3643 27.7662 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.9143 27.6756 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.1131 27.2735 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.9665 28.5705 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 16.4166 28.6611 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.2178 29.0632 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.3323 28.7234 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.6909 29.4750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.7947 29.4914 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.1248 28.6907 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.7664 27.9390 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.6626 27.9227 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.5934 28.9129 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.0176 27.5258 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.3093 28.3735 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.1213 27.5414 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.8591 28.3986 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 1 5 1 0 0 0 0 + 5 6 2 0 0 0 0 + 6 4 1 0 0 0 0 + 4 2 2 0 0 0 0 + 2 3 1 0 0 0 0 + 9 7 2 0 0 0 0 + 7 11 1 0 0 0 0 + 11 12 2 0 0 0 0 + 12 10 1 0 0 0 0 + 10 8 2 0 0 0 0 + 8 9 1 0 0 0 0 + 6 9 1 0 0 0 0 + 15 13 2 0 0 0 0 + 13 17 1 0 0 0 0 + 17 18 2 0 0 0 0 + 18 16 1 0 0 0 0 + 16 14 2 0 0 0 0 + 14 15 1 0 0 0 0 + 14 3 1 0 0 0 0 + 21 19 2 0 0 0 0 + 19 23 1 0 0 0 0 + 23 24 2 0 0 0 0 + 24 22 1 0 0 0 0 + 22 20 2 0 0 0 0 + 20 21 1 0 0 0 0 + 19 13 1 0 0 0 0 + 21 15 1 0 0 0 0 + 27 25 2 0 0 0 0 + 25 29 1 0 0 0 0 + 29 30 2 0 0 0 0 + 30 28 1 0 0 0 0 + 28 26 2 0 0 0 0 + 26 27 1 0 0 0 0 + 22 27 1 0 0 0 0 + 24 26 1 0 0 0 0 + 33 31 2 0 0 0 0 + 31 35 1 0 0 0 0 + 35 36 2 0 0 0 0 + 36 34 1 0 0 0 0 + 34 32 2 0 0 0 0 + 32 33 1 0 0 0 0 + 12 34 1 0 0 0 0 + 39 37 2 0 0 0 0 + 37 41 1 0 0 0 0 + 41 42 2 0 0 0 0 + 42 40 1 0 0 0 0 + 40 38 2 0 0 0 0 + 38 39 1 0 0 0 0 + 45 43 2 0 0 0 0 + 43 47 1 0 0 0 0 + 47 48 2 0 0 0 0 + 48 46 1 0 0 0 0 + 46 44 2 0 0 0 0 + 44 45 1 0 0 0 0 + 39 32 1 0 0 0 0 + 38 33 1 0 0 0 0 + 45 41 1 0 0 0 0 + 44 42 1 0 0 0 0 + 51 49 2 0 0 0 0 + 49 53 1 0 0 0 0 + 53 54 2 0 0 0 0 + 54 52 1 0 0 0 0 + 52 50 2 0 0 0 0 + 50 51 1 0 0 0 0 + 25 49 1 0 0 0 0 + 55 59 1 0 0 0 0 + 59 58 2 0 0 0 0 + 58 56 1 0 0 0 0 + 56 57 2 0 0 0 0 + 57 55 1 0 0 0 0 + 52 59 1 0 0 0 0 + 57 47 1 0 0 0 0 +M END +$RFMT +$RXN + + -INDIGO- 0100000000 + + 1 1 +$MOL + + -INDIGO-01000000002D + + 60 74 0 0 0 0 0 0 0 0999 V2000 + 10.6003 11.2320 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.6656 9.7496 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.2051 10.4719 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.5214 9.7873 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.4561 11.2696 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.9167 10.5473 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.8066 10.0636 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.6323 11.5370 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.2941 10.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.4830 11.6377 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.6573 10.1642 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.9955 10.9512 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.4171 11.8978 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.7820 11.3157 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.2676 12.0008 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.4459 10.5278 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.0812 11.1099 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.5955 10.4248 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.3143 12.7482 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.5007 13.6391 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.1646 12.8512 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.9864 14.3242 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.7999 13.4333 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.1359 14.2212 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.2195 15.9625 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.0329 15.0716 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.8834 15.1746 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.5186 15.7567 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.7051 16.6476 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.8547 16.5446 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 20.1638 12.4943 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.8192 13.1214 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.6725 13.1960 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.4571 12.3450 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.8018 11.7179 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.9485 11.6433 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.2532 14.6765 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.5979 14.0494 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.7445 13.9748 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.9599 14.8257 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.6152 15.4528 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.4686 15.5275 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.0493 17.0079 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.3940 16.3809 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.5405 16.3062 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.7560 17.1573 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.4113 17.7843 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.2647 17.8590 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.5489 17.3760 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.6862 18.3289 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.8425 18.1807 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.2364 17.6723 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.0990 16.7193 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.9427 16.8674 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.0529 18.7042 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.3691 18.0194 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.9086 18.7418 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.9738 17.2594 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.6576 17.9442 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.1180 17.2218 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 1 5 1 0 0 0 0 + 5 6 2 0 0 0 0 + 6 4 1 0 0 0 0 + 4 2 2 0 0 0 0 + 2 3 1 0 0 0 0 + 9 7 2 0 0 0 0 + 7 11 1 0 0 0 0 + 11 12 2 0 0 0 0 + 12 10 1 0 0 0 0 + 10 8 2 0 0 0 0 + 8 9 1 0 0 0 0 + 6 9 1 0 0 0 0 + 15 13 2 0 0 0 0 + 13 17 1 0 0 0 0 + 17 18 2 0 0 0 0 + 18 16 1 0 0 0 0 + 16 14 2 0 0 0 0 + 14 15 1 0 0 0 0 + 14 3 1 0 0 0 0 + 21 19 2 0 0 0 0 + 19 23 1 0 0 0 0 + 23 24 2 0 0 0 0 + 24 22 1 0 0 0 0 + 22 20 2 0 0 0 0 + 20 21 1 0 0 0 0 + 19 13 1 0 0 0 0 + 21 15 1 0 0 0 0 + 27 25 2 0 0 0 0 + 25 29 1 0 0 0 0 + 29 30 2 0 0 0 0 + 30 28 1 0 0 0 0 + 28 26 2 0 0 0 0 + 26 27 1 0 0 0 0 + 22 27 1 0 0 0 0 + 24 26 1 0 0 0 0 + 33 31 2 0 0 0 0 + 31 35 1 0 0 0 0 + 35 36 2 0 0 0 0 + 36 34 1 0 0 0 0 + 34 32 2 0 0 0 0 + 32 33 1 0 0 0 0 + 12 34 1 0 0 0 0 + 39 37 2 0 0 0 0 + 37 41 1 0 0 0 0 + 41 42 2 0 0 0 0 + 42 40 1 0 0 0 0 + 40 38 2 0 0 0 0 + 38 39 1 0 0 0 0 + 45 43 2 0 0 0 0 + 43 47 1 0 0 0 0 + 47 48 2 0 0 0 0 + 48 46 1 0 0 0 0 + 46 44 2 0 0 0 0 + 44 45 1 0 0 0 0 + 39 32 1 0 0 0 0 + 38 33 1 0 0 0 0 + 45 41 1 0 0 0 0 + 44 42 1 0 0 0 0 + 51 49 2 0 0 0 0 + 49 53 1 0 0 0 0 + 53 54 2 0 0 0 0 + 54 52 1 0 0 0 0 + 52 50 2 0 0 0 0 + 50 51 1 0 0 0 0 + 57 55 2 0 0 0 0 + 55 59 1 0 0 0 0 + 59 60 2 0 0 0 0 + 60 58 1 0 0 0 0 + 58 56 2 0 0 0 0 + 56 57 1 0 0 0 0 + 25 49 1 0 0 0 0 + 52 59 1 0 0 0 0 + 56 43 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 3 3 0 0 0 0 0 0 0 0999 V2000 + 23.6769 13.8132 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 24.6782 13.8132 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 24.1776 14.6782 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 2 1 0 0 0 0 + 2 3 1 0 0 0 0 + 3 1 1 0 0 0 0 +M END +$RFMT +$RXN + + -INDIGO- 0100000000 + + 1 1 +$MOL + + -INDIGO-01000000002D + + 59 73 0 0 0 0 0 0 0 0999 V2000 + 10.4706 22.7927 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.5434 21.2418 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.0593 21.9963 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.4388 21.2839 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.3660 22.8348 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.8501 22.0804 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.7851 21.5809 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.5847 23.1205 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.2405 22.2928 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.4737 23.2361 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.6740 21.6965 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 16.0182 22.5241 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.1366 23.4157 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.5594 22.7940 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.0275 23.5156 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.2004 21.9726 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.7777 22.5943 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.3096 21.8727 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.0367 24.3065 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.2865 25.2278 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.9276 24.4064 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.7545 25.9494 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.5048 25.0281 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.8638 25.8495 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.0136 27.6616 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.7639 26.7403 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.6547 26.8402 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.2320 27.4619 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.4816 28.3831 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.5908 28.2832 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 20.1638 24.1930 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.6139 24.2836 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.4151 24.6857 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.5616 23.3887 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 20.1116 23.2981 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.3104 22.8960 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.4630 25.5775 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.0130 25.4868 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.2117 25.0847 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.0652 26.3817 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.5153 26.4723 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.3164 26.8745 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 16.3643 27.7662 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.9143 27.6756 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.1131 27.2735 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.9665 28.5705 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 16.4166 28.6611 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.2178 29.0632 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.3323 28.7234 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.6909 29.4750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.7947 29.4914 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.1248 28.6907 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.7664 27.9390 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.6626 27.9227 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.5934 28.9129 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.0176 27.5258 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.3093 28.3735 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.1213 27.5414 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.8591 28.3986 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 1 5 1 0 0 0 0 + 5 6 2 0 0 0 0 + 6 4 1 0 0 0 0 + 4 2 2 0 0 0 0 + 2 3 1 0 0 0 0 + 9 7 2 0 0 0 0 + 7 11 1 0 0 0 0 + 11 12 2 0 0 0 0 + 12 10 1 0 0 0 0 + 10 8 2 0 0 0 0 + 8 9 1 0 0 0 0 + 6 9 1 0 0 0 0 + 15 13 2 0 0 0 0 + 13 17 1 0 0 0 0 + 17 18 2 0 0 0 0 + 18 16 1 0 0 0 0 + 16 14 2 0 0 0 0 + 14 15 1 0 0 0 0 + 14 3 1 0 0 0 0 + 21 19 2 0 0 0 0 + 19 23 1 0 0 0 0 + 23 24 2 0 0 0 0 + 24 22 1 0 0 0 0 + 22 20 2 0 0 0 0 + 20 21 1 0 0 0 0 + 19 13 1 0 0 0 0 + 21 15 1 0 0 0 0 + 27 25 2 0 0 0 0 + 25 29 1 0 0 0 0 + 29 30 2 0 0 0 0 + 30 28 1 0 0 0 0 + 28 26 2 0 0 0 0 + 26 27 1 0 0 0 0 + 22 27 1 0 0 0 0 + 24 26 1 0 0 0 0 + 33 31 2 0 0 0 0 + 31 35 1 0 0 0 0 + 35 36 2 0 0 0 0 + 36 34 1 0 0 0 0 + 34 32 2 0 0 0 0 + 32 33 1 0 0 0 0 + 12 34 1 0 0 0 0 + 39 37 2 0 0 0 0 + 37 41 1 0 0 0 0 + 41 42 2 0 0 0 0 + 42 40 1 0 0 0 0 + 40 38 2 0 0 0 0 + 38 39 1 0 0 0 0 + 45 43 2 0 0 0 0 + 43 47 1 0 0 0 0 + 47 48 2 0 0 0 0 + 48 46 1 0 0 0 0 + 46 44 2 0 0 0 0 + 44 45 1 0 0 0 0 + 39 32 1 0 0 0 0 + 38 33 1 0 0 0 0 + 45 41 1 0 0 0 0 + 44 42 1 0 0 0 0 + 51 49 2 0 0 0 0 + 49 53 1 0 0 0 0 + 53 54 2 0 0 0 0 + 54 52 1 0 0 0 0 + 52 50 2 0 0 0 0 + 50 51 1 0 0 0 0 + 25 49 1 0 0 0 0 + 55 59 1 0 0 0 0 + 59 58 2 0 0 0 0 + 58 56 1 0 0 0 0 + 56 57 2 0 0 0 0 + 57 55 1 0 0 0 0 + 52 59 1 0 0 0 0 + 57 47 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 4 4 0 0 0 0 0 0 0 0999 V2000 + 24.6782 24.8691 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 24.6745 25.8642 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 23.6663 24.8820 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 23.6638 25.8642 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 2 1 0 0 0 0 + 2 4 1 0 0 0 0 + 4 3 1 0 0 0 0 + 3 1 1 0 0 0 0 +M END +$RFMT +$RXN + + -INDIGO- 0100000000 + + 2 1 +$MOL + + -INDIGO-01000000002D + + 5 5 0 0 0 0 0 0 0 0999 V2000 + 0.9206 44.6845 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.4210 43.1444 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7303 44.0907 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.4203 43.1444 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.1109 44.0907 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 5 1 0 0 0 0 + 5 4 2 0 0 0 0 + 4 2 1 0 0 0 0 + 2 3 2 0 0 0 0 + 3 1 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 6 6 0 0 0 0 0 0 0 0999 V2000 + 0.0000 40.1443 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7303 40.1448 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.8668 40.6444 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7303 39.1438 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.0000 39.1393 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.8690 38.6443 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 1 5 1 0 0 0 0 + 5 6 2 0 0 0 0 + 6 4 1 0 0 0 0 + 4 2 2 0 0 0 0 + 2 3 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 7 7 0 0 0 0 0 0 0 0999 V2000 + 5.7891 42.2794 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.7891 41.2794 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.6551 40.7794 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.5212 41.2794 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.5212 42.2794 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.6551 42.7794 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.3872 42.7794 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6 1 1 0 0 0 0 + 1 2 1 0 0 0 0 + 2 3 1 0 0 0 0 + 3 4 1 0 0 0 0 + 4 5 1 0 0 0 0 + 5 6 1 0 0 0 0 + 5 7 1 0 0 0 0 +M END +$RFMT +$RXN + + -INDIGO- 0100000000 + + 1 1 +$MOL + + -INDIGO-01000000002D + + 5 5 0 0 0 0 0 0 0 0999 V2000 + 0.8097 4.8948 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.3101 3.3547 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.6194 4.3009 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.3094 3.3547 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 0.0000 4.3009 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 5 1 0 0 0 0 + 5 4 2 0 0 0 0 + 4 2 1 0 0 0 0 + 2 3 2 0 0 0 0 + 3 1 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 59 73 0 0 0 0 0 0 0 0999 V2000 + 10.3580 1.5509 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.4308 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.9467 0.7545 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.3262 0.0421 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.2534 1.5930 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.7375 0.8386 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.6725 0.3391 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.4721 1.8787 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.1279 1.0510 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.3611 1.9943 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.5614 0.4547 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.9056 1.2823 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.0240 2.1739 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.4468 1.5522 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.9149 2.2738 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.0878 0.7308 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.6651 1.3525 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.1970 0.6309 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.9241 3.0647 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.1739 3.9860 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.8150 3.1646 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.6419 4.7076 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.3922 3.7863 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.7512 4.6077 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.9010 6.4198 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.6513 5.4985 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.5421 5.5984 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.1194 6.2201 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.3690 7.1413 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.4782 7.0414 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 20.0512 2.9512 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.5013 3.0418 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.3025 3.4439 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.4490 2.1469 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.9990 2.0563 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.1978 1.6542 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.3504 4.3357 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.9004 4.2450 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.0991 3.8429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.9526 5.1399 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.4027 5.2305 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.2038 5.6327 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 16.2517 6.5244 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.8017 6.4338 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.0005 6.0317 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.8539 7.3287 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 16.3040 7.4193 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 17.1052 7.8214 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.2197 7.4816 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.5783 8.2332 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.6821 8.2496 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.0122 7.4489 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 9.6538 6.6972 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 10.5500 6.6809 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.4808 7.6711 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.9050 6.2840 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.1967 7.1317 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.0087 6.2996 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.7465 7.1568 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 1 5 1 0 0 0 0 + 5 6 2 0 0 0 0 + 6 4 1 0 0 0 0 + 4 2 2 0 0 0 0 + 2 3 1 0 0 0 0 + 9 7 2 0 0 0 0 + 7 11 1 0 0 0 0 + 11 12 2 0 0 0 0 + 12 10 1 0 0 0 0 + 10 8 2 0 0 0 0 + 8 9 1 0 0 0 0 + 6 9 1 0 0 0 0 + 15 13 2 0 0 0 0 + 13 17 1 0 0 0 0 + 17 18 2 0 0 0 0 + 18 16 1 0 0 0 0 + 16 14 2 0 0 0 0 + 14 15 1 0 0 0 0 + 14 3 1 0 0 0 0 + 21 19 2 0 0 0 0 + 19 23 1 0 0 0 0 + 23 24 2 0 0 0 0 + 24 22 1 0 0 0 0 + 22 20 2 0 0 0 0 + 20 21 1 0 0 0 0 + 19 13 1 0 0 0 0 + 21 15 1 0 0 0 0 + 27 25 2 0 0 0 0 + 25 29 1 0 0 0 0 + 29 30 2 0 0 0 0 + 30 28 1 0 0 0 0 + 28 26 2 0 0 0 0 + 26 27 1 0 0 0 0 + 22 27 1 0 0 0 0 + 24 26 1 0 0 0 0 + 33 31 2 0 0 0 0 + 31 35 1 0 0 0 0 + 35 36 2 0 0 0 0 + 36 34 1 0 0 0 0 + 34 32 2 0 0 0 0 + 32 33 1 0 0 0 0 + 12 34 1 0 0 0 0 + 39 37 2 0 0 0 0 + 37 41 1 0 0 0 0 + 41 42 2 0 0 0 0 + 42 40 1 0 0 0 0 + 40 38 2 0 0 0 0 + 38 39 1 0 0 0 0 + 45 43 2 0 0 0 0 + 43 47 1 0 0 0 0 + 47 48 2 0 0 0 0 + 48 46 1 0 0 0 0 + 46 44 2 0 0 0 0 + 44 45 1 0 0 0 0 + 39 32 1 0 0 0 0 + 38 33 1 0 0 0 0 + 45 41 1 0 0 0 0 + 44 42 1 0 0 0 0 + 51 49 2 0 0 0 0 + 49 53 1 0 0 0 0 + 53 54 2 0 0 0 0 + 54 52 1 0 0 0 0 + 52 50 2 0 0 0 0 + 50 51 1 0 0 0 0 + 25 49 1 0 0 0 0 + 55 59 1 0 0 0 0 + 59 58 2 0 0 0 0 + 58 56 1 0 0 0 0 + 56 57 2 0 0 0 0 + 57 55 1 0 0 0 0 + 52 59 1 0 0 0 0 + 57 47 1 0 0 0 0 +M END +$RFMT +$RXN + + -INDIGO- 0100000000 + + 2 1 +$MOL + + -INDIGO-01000000002D + + 4 4 0 0 0 0 0 0 0 0999 V2000 + 24.6782 24.8691 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 24.6745 25.8642 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 23.6663 24.8820 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 23.6638 25.8642 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 2 1 0 0 0 0 + 2 4 1 0 0 0 0 + 4 3 1 0 0 0 0 + 3 1 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 3 3 0 0 0 0 0 0 0 0999 V2000 + 23.6769 13.8132 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 24.6782 13.8132 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 24.1776 14.6782 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 2 1 0 0 0 0 + 2 3 1 0 0 0 0 + 3 1 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 8 8 0 0 0 0 0 0 0 0999 V2000 + 28.1782 19.3050 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 28.1784 20.3074 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 28.8836 21.0126 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 28.8838 18.5995 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 29.8862 18.5995 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 30.5916 19.3050 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 30.5915 20.3074 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 29.8862 21.0127 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 2 1 1 0 0 0 0 + 1 4 1 0 0 0 0 + 4 5 1 0 0 0 0 + 5 6 1 0 0 0 0 + 6 7 1 0 0 0 0 + 7 8 1 0 0 0 0 + 8 3 1 0 0 0 0 + 3 2 1 0 0 0 0 +M END +$RFMT +$RXN + + -INDIGO- 0100000000 + + 3 1 +$MOL + + -INDIGO-01000000002D + + 7 7 0 0 0 0 0 0 0 0999 V2000 + 5.7891 42.2794 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.7891 41.2794 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.6551 40.7794 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.5212 41.2794 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.5212 42.2794 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.6551 42.7794 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.3872 42.7794 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6 1 1 0 0 0 0 + 1 2 1 0 0 0 0 + 2 3 1 0 0 0 0 + 3 4 1 0 0 0 0 + 4 5 1 0 0 0 0 + 5 6 1 0 0 0 0 + 5 7 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 8 8 0 0 0 0 0 0 0 0999 V2000 + 6.1962 37.6619 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.9801 38.2794 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.9531 38.0569 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.3872 37.1611 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.2017 36.6547 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.9538 36.2540 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.9801 36.0315 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 5.2303 37.9207 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 2 1 1 0 0 0 0 + 1 5 1 0 0 0 0 + 5 7 1 0 0 0 0 + 7 6 1 0 0 0 0 + 6 4 1 0 0 0 0 + 4 3 1 0 0 0 0 + 3 2 1 0 0 0 0 + 1 8 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 7 7 0 0 0 0 0 0 0 0999 V2000 + 7.3872 32.5315 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.8876 30.9914 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.1968 31.9377 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.8868 30.9914 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 6.5775 31.9377 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 7.3872 33.5315 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 8.3872 33.5315 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1 5 1 0 0 0 0 + 5 4 2 0 0 0 0 + 4 2 1 0 0 0 0 + 2 3 2 0 0 0 0 + 3 1 1 0 0 0 0 + 1 6 2 0 0 0 0 + 6 7 1 0 0 0 0 +M END +$MOL + + -INDIGO-01000000002D + + 9 9 0 0 0 0 0 0 0 0999 V2000 + 12.7532 37.8739 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.4835 37.8744 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.6200 38.3740 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.4835 36.8735 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.7532 36.8690 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.6222 36.3740 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 11.8872 36.3690 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 12.9151 35.6669 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.1906 36.1664 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 1 5 1 0 0 0 0 + 5 6 2 0 0 0 0 + 6 4 1 0 0 0 0 + 4 2 2 0 0 0 0 + 2 3 1 0 0 0 0 + 5 7 1 0 0 0 0 + 6 8 2 0 0 0 0 + 4 9 1 0 0 0 0 +M END diff --git a/api/tests/integration/tests/layout/acs_style_reaction.py b/api/tests/integration/tests/layout/acs_style_reaction.py index d11c9754bf..8bb2ac28cb 100644 --- a/api/tests/integration/tests/layout/acs_style_reaction.py +++ b/api/tests/integration/tests/layout/acs_style_reaction.py @@ -30,6 +30,10 @@ def find_diff(a, b): rxn = indigo.loadReactionFromFile(os.path.join(root, "acs_before_layout.ket")) indigo.setOption("reaction-component-margin-size", "0.0") rxn.layout() + +# with open(os.path.join(ref, "acs_after_layout_zero_margin.ket"), "w") as file: +# file.write(rxn.json()) + res = reactionLayoutDiff( indigo, rxn, @@ -44,6 +48,10 @@ def find_diff(a, b): indigo.setOption("bond-length", "40.0") indigo.setOption("reaction-component-margin-size", "20.0") rxn.layout() + +# with open(os.path.join(ref, "acs_after_layout_default_margin.ket"), "w") as file: +# file.write(rxn.json()) + res = reactionLayoutDiff( indigo, rxn, @@ -57,8 +65,8 @@ def find_diff(a, b): rxn = indigo.loadReaction("CN.CO>CC.CC>CF.CP") rxn.layout() filename = "acs_issue_2389.ket" -with open(os.path.join(ref, filename), "w") as file: - file.write(rxn.json()) +# with open(os.path.join(ref, filename), "w") as file: +# file.write(rxn.json()) with open(os.path.join(ref, filename), "r") as file: ket_ref = file.read() ket = rxn.json() diff --git a/api/tests/integration/tests/layout/ref/932-agents.ket b/api/tests/integration/tests/layout/ref/932-agents.ket index 7f3ee63b8c..02732241e6 100644 --- a/api/tests/integration/tests/layout/ref/932-agents.ket +++ b/api/tests/integration/tests/layout/ref/932-agents.ket @@ -232,7 +232,7 @@ "label": "C", "location": [ 15.200002, - 2.69282, + 2.39282, 0.0 ] }, @@ -240,7 +240,7 @@ "label": "C", "location": [ 16.585642, - 1.89282, + 1.59282, 0.0 ] }, @@ -248,7 +248,7 @@ "label": "C", "location": [ 17.971283, - 2.69282, + 2.39282, 0.0 ] } @@ -277,7 +277,7 @@ "label": "C", "location": [ 20.371281, - 2.29282, + 1.99282, 0.0 ] } @@ -291,7 +291,7 @@ "label": "P", "location": [ 22.771278, - 2.29282, + 1.99282, 0.0 ] } @@ -305,7 +305,7 @@ "label": "C", "location": [ 25.171276, - 2.69282, + 2.39282, 0.0 ] }, @@ -313,7 +313,7 @@ "label": "C", "location": [ 26.556917, - 1.89282, + 1.59282, 0.0 ] }, @@ -321,7 +321,7 @@ "label": "C", "location": [ 27.942556, - 2.69282, + 2.39282, 0.0 ] } @@ -350,7 +350,7 @@ "label": "C", "location": [ 30.342554, - 2.985641, + 2.685641, 0.0 ] }, @@ -358,7 +358,7 @@ "label": "C", "location": [ 31.942554, - 2.985641, + 2.685641, 0.0 ] }, @@ -366,7 +366,7 @@ "label": "C", "location": [ 31.142553, - 1.6, + 1.3, 0.0 ] } @@ -402,7 +402,7 @@ "label": "F", "location": [ 34.342552, - 2.29282, + 1.99282, 0.0 ] } @@ -416,7 +416,7 @@ "label": "I", "location": [ 36.74255, - 2.29282, + 1.99282, 0.0 ] } diff --git a/api/tests/integration/tests/layout/ref/acs_after_layout_default_margin.ket b/api/tests/integration/tests/layout/ref/acs_after_layout_default_margin.ket index 25db5ab4b4..39fbce4a03 100644 --- a/api/tests/integration/tests/layout/ref/acs_after_layout_default_margin.ket +++ b/api/tests/integration/tests/layout/ref/acs_after_layout_default_margin.ket @@ -298,7 +298,7 @@ "label": "N", "location": [ 17.525787, - 5.10503, + 4.80503, 0.0 ] }, @@ -306,7 +306,7 @@ "label": "N", "location": [ 15.925788, - 5.10503, + 4.80503, 0.0 ] }, @@ -314,7 +314,7 @@ "label": "C", "location": [ 14.928204, - 3.8541, + 3.5541, 0.0 ] }, @@ -322,7 +322,7 @@ "label": "C", "location": [ 15.284236, - 2.294215, + 1.994215, 0.0 ] }, @@ -330,7 +330,7 @@ "label": "C", "location": [ 18.523373, - 3.854097, + 3.554097, 0.0 ] }, @@ -338,7 +338,7 @@ "label": "N", "location": [ 16.725786, - 1.6, + 1.3, 0.0 ] }, @@ -346,7 +346,7 @@ "label": "C", "location": [ 18.167337, - 2.294213, + 1.994213, 0.0 ] } diff --git a/api/tests/integration/tests/layout/ref/acs_after_layout_zero_margin.ket b/api/tests/integration/tests/layout/ref/acs_after_layout_zero_margin.ket index ebdf125553..e9fa3ff5ad 100644 --- a/api/tests/integration/tests/layout/ref/acs_after_layout_zero_margin.ket +++ b/api/tests/integration/tests/layout/ref/acs_after_layout_zero_margin.ket @@ -298,7 +298,7 @@ "label": "N", "location": [ 14.325787, - 4.30503, + 4.00503, 0.0 ] }, @@ -306,7 +306,7 @@ "label": "N", "location": [ 12.725787, - 4.30503, + 4.00503, 0.0 ] }, @@ -314,7 +314,7 @@ "label": "C", "location": [ 11.728203, - 3.0541, + 2.754099, 0.0 ] }, @@ -322,7 +322,7 @@ "label": "C", "location": [ 12.084235, - 1.494215, + 1.194215, 0.0 ] }, @@ -330,7 +330,7 @@ "label": "C", "location": [ 15.323371, - 3.054097, + 2.754097, 0.0 ] }, @@ -338,7 +338,7 @@ "label": "N", "location": [ 13.525785, - 0.8, + 0.5, 0.0 ] }, @@ -346,7 +346,7 @@ "label": "C", "location": [ 14.967336, - 1.494213, + 1.194212, 0.0 ] } diff --git a/api/tests/integration/tests/layout/ref/acs_issue_2389.ket b/api/tests/integration/tests/layout/ref/acs_issue_2389.ket index 2bbbd9420c..1a30999a1a 100644 --- a/api/tests/integration/tests/layout/ref/acs_issue_2389.ket +++ b/api/tests/integration/tests/layout/ref/acs_issue_2389.ket @@ -122,7 +122,7 @@ "label": "C", "location": [ 11.200002, - 1.6, + 1.3, 0.0 ] }, @@ -130,7 +130,7 @@ "label": "C", "location": [ 12.800002, - 1.6, + 1.3, 0.0 ] } @@ -152,7 +152,7 @@ "label": "C", "location": [ 15.200003, - 1.6, + 1.3, 0.0 ] }, @@ -160,7 +160,7 @@ "label": "C", "location": [ 16.800003, - 1.6, + 1.3, 0.0 ] } diff --git a/api/tests/integration/tests/layout/ref/balance.ket b/api/tests/integration/tests/layout/ref/balance.ket index 5e8dbe1d8a..4b3b89a3e2 100644 --- a/api/tests/integration/tests/layout/ref/balance.ket +++ b/api/tests/integration/tests/layout/ref/balance.ket @@ -16,7 +16,7 @@ { "type": "plus", "location": [ - 4.699999809265137, + 4.400000095367432, 0.0, 0.0 ] @@ -24,7 +24,7 @@ { "type": "plus", "location": [ - 17.700000762939454, + 17.999998092651368, 0.0, 0.0 ] @@ -35,12 +35,12 @@ "mode": "equilibrium-filled-half-bow", "pos": [ { - "x": 9.100000381469729, + "x": 9.600000381469729, "y": 0.0, "z": 0.0 }, { - "x": 13.30000114440918, + "x": 12.800000190734864, "y": 0.0, "z": 0.0 } @@ -55,7 +55,7 @@ { "label": "C", "location": [ - 1.2999999523162842, + 0.800000011920929, 0.6928203105926514, 0.0 ] @@ -63,7 +63,7 @@ { "label": "C", "location": [ - 2.899999856948853, + 2.399999856948853, 0.6928203105926514, 0.0 ] @@ -71,7 +71,7 @@ { "label": "C", "location": [ - 2.0999999046325685, + 1.5999999046325684, -0.6928203105926514, 0.0 ] @@ -107,7 +107,7 @@ { "label": "C", "location": [ - 6.5, + 6.40000057220459, 0.7999999523162842, 0.0 ] @@ -115,7 +115,7 @@ { "label": "C", "location": [ - 8.100000381469727, + 8.0, 0.7999999523162842, 0.0 ] @@ -123,7 +123,7 @@ { "label": "C", "location": [ - 6.5, + 6.40000057220459, -0.7999999523162842, 0.0 ] @@ -131,7 +131,7 @@ { "label": "C", "location": [ - 8.100000381469727, + 8.0, -0.7999999523162842, 0.0 ] @@ -174,7 +174,7 @@ { "label": "C", "location": [ - 14.30000114440918, + 14.40000057220459, 0.7999999523162842, 0.0 ] @@ -182,7 +182,7 @@ { "label": "C", "location": [ - 15.900001525878908, + 16.0, 0.7999999523162842, 0.0 ] @@ -190,7 +190,7 @@ { "label": "C", "location": [ - 14.30000114440918, + 14.40000057220459, -0.7999999523162842, 0.0 ] @@ -198,7 +198,7 @@ { "label": "C", "location": [ - 15.900001525878908, + 16.0, -0.7999999523162842, 0.0 ] @@ -241,7 +241,7 @@ { "label": "C", "location": [ - 19.5, + 19.999996185302736, 0.6928203105926514, 0.0 ] @@ -249,7 +249,7 @@ { "label": "C", "location": [ - 21.100000381469728, + 21.59999656677246, 0.6928203105926514, 0.0 ] @@ -257,7 +257,7 @@ { "label": "C", "location": [ - 20.299999237060548, + 20.79999542236328, -0.6928203105926514, 0.0 ] diff --git a/api/tests/integration/tests/rendering/reactions/multitail_arrow.ket b/api/tests/integration/tests/rendering/reactions/multitail_arrow.ket index cb181349f2..64f562cfaa 100644 --- a/api/tests/integration/tests/rendering/reactions/multitail_arrow.ket +++ b/api/tests/integration/tests/rendering/reactions/multitail_arrow.ket @@ -28,13 +28,13 @@ "mode": "open-angle", "pos": [ { - "x": 16.45013736263736, - "y": -7.94549617049617, + "x": 20.191063613913478, + "y": -13.115784925498332, "z": 0 }, { - "x": 18.45013736263736, - "y": -7.94549617049617, + "x": 22.191063613913478, + "y": -13.115784925498332, "z": 0 } ] @@ -43,8 +43,8 @@ { "type": "plus", "location": [ - 11.850137362637362, - -8.09549617049617, + 15.591063613913482, + -13.265784925498332, 0 ], "prop": {} @@ -54,21 +54,21 @@ "data": { "head": { "position": { - "x": 25.12513736263736, - "y": -7.920496170496172, + "x": 28.84106361391348, + "y": -14.365784925498334, "z": 0 } }, "spine": { "pos": [ { - "x": 23.662637362637362, - "y": -6.670496170496172, + "x": 27.37856361391348, + "y": -13.115784925498334, "z": 0 }, { - "x": 23.662637362637362, - "y": -14.870496170496173, + "x": 27.37856361391348, + "y": -21.315784925498335, "z": 0 } ] @@ -76,23 +76,23 @@ "tails": { "pos": [ { - "x": 23.25013736263736, - "y": -6.670496170496172, + "x": 26.96606361391348, + "y": -13.115784925498334, "z": 0 }, { - "x": 23.25013736263736, - "y": -11.395496170496173, + "x": 26.96606361391348, + "y": -17.840784925498333, "z": 0 }, { - "x": 23.25013736263736, - "y": -12.982996170496174, + "x": 26.96606361391348, + "y": -19.428284925498332, "z": 0 }, { - "x": 23.25013736263736, - "y": -14.870496170496173, + "x": 26.96606361391348, + "y": -21.315784925498335, "z": 0 } ] @@ -110,48 +110,48 @@ { "label": "C", "location": [ - 8.884986514765929, - -7.6080705876707775, + 12.625912766042049, + -12.778359342672939, 0 ] }, { "label": "C", "location": [ - 10.615288210508796, - -7.607585399673374, + 14.356214461784916, + -12.777874154675535, 0 ] }, { "label": "C", "location": [ - 9.751774872128602, - -7.107963059346357, + 13.492701123404721, + -12.278251814348518, 0 ] }, { "label": "C", "location": [ - 10.615288210508796, - -8.608528238318318, + 14.356214461784916, + -13.77881699332048, 0 ] }, { "label": "C", "location": [ - 8.884986514765929, - -8.613016227294308, + 12.625912766042049, + -13.78330498229647, 0 ] }, { "label": "C", "location": [ - 9.75395821811692, - -9.108029281645983, + 13.49488446939304, + -14.278318036648145, 0 ] } @@ -199,7 +199,12 @@ 2 ] } - ] + ], + "stereoFlagPosition": { + "x": 14.356214461784916, + "y": 11.278251814348518, + "z": 0 + } }, "mol1": { "type": "molecule", @@ -207,48 +212,48 @@ { "label": "C", "location": [ - 13.134882561653708, - -8.416249432070881, + 16.875808812929826, + -13.586538187073042, 0 ] }, { "label": "C", "location": [ - 14.358047544488958, - -7.192398289789401, + 18.098973795765076, + -12.362687044791562, 0 ] }, { "label": "C", "location": [ - 13.394165062397763, - -7.449708082125545, + 17.135091313673882, + -12.619996837127706, 0 ] }, { "label": "C", "location": [ - 15.06582101327491, - -7.900171758575355, + 18.806747264551028, + -13.070460513577517, 0 ] }, { "label": "C", "location": [ - 13.845486438155358, - -9.126853308572532, + 17.586412689431477, + -14.297142063574693, 0 ] }, { "label": "C", "location": [ - 14.809969309762005, - -8.862424611981755, + 18.550895561038125, + -14.032713366983916, 0 ] } @@ -296,7 +301,12 @@ 2 ] } - ] + ], + "stereoFlagPosition": { + "x": 18.806747264551028, + "y": 11.362687044791562, + "z": 0 + } }, "mol2": { "type": "molecule", @@ -304,64 +314,64 @@ { "label": "C", "location": [ - 19.355971052307332, - -8.521741477272869, + 23.09689730358345, + -13.69203023227503, 0 ] }, { "label": "C", "location": [ - 19.356172012638805, - -7.519250863719475, + 23.097098263914923, + -12.689539618721637, 0 ] }, { "label": "C", "location": [ - 20.061341815777794, - -6.813980580414748, + 23.802268067053912, + -11.98426933541691, 0 ] }, { "label": "C", "location": [ - 20.06154277610927, - -9.227112240743331, + 23.80246902738539, + -14.397400995745492, 0 ] }, { "label": "C", "location": [ - 21.063932909496927, - -9.227112240743331, + 24.804859160773045, + -14.397400995745492, 0 ] }, { "label": "C", "location": [ - 21.76930367296739, - -8.521741477272869, + 25.510229924243507, + -13.69203023227503, 0 ] }, { "label": "C", "location": [ - 21.769203192801655, - -7.519250863719475, + 25.510129444077773, + -12.689539618721637, 0 ] }, { "label": "C", "location": [ - 21.063932909496927, - -6.813880100249011, + 24.804859160773045, + -11.984168855251172, 0 ] } @@ -423,7 +433,12 @@ 1 ] } - ] + ], + "stereoFlagPosition": { + "x": 25.510229924243507, + "y": 10.984168855251172, + "z": 0 + } }, "mol3": { "type": "molecule", @@ -431,56 +446,56 @@ { "label": "C", "location": [ - 25.492113742592892, - -7.656599441391686, + 29.208039993869008, + -14.101888196393848, 0 ] }, { "label": "C", "location": [ - 26.27604712841188, - -7.039027797471936, + 29.991973379687995, + -13.484316552474098, 0 ] }, { "label": "C", "location": [ - 27.24907802699773, - -7.261577942264295, + 30.965004278273845, + -13.706866697266456, 0 ] }, { "label": "C", "location": [ - 27.683160982681837, - -8.157387345964949, + 31.399087233957953, + -14.60267610096711, 0 ] }, { "label": "C", "location": [ - 25.497622409543194, - -8.663784075069433, + 29.21354866081931, + -15.109072830071595, 0 ] }, { "label": "C", "location": [ - 27.249779130064134, - -9.064414398728045, + 30.96570538134025, + -15.509703153730207, 0 ] }, { "label": "C", "location": [ - 26.27604712841188, - -9.286964543520405, + 29.991973379687995, + -15.732253298522567, 0 ] } @@ -543,40 +558,40 @@ { "label": "C", "location": [ - 21.325187401380575, - -10.41794995124567, + 25.041113652656694, + -16.863238706247834, 0 ] }, { "label": "C", "location": [ - 21.82557483347525, - -11.95804238974667, + 25.54150108475137, + -18.403331144748833, 0 ] }, { "label": "C", "location": [ - 22.13481426650976, - -11.011809755655634, + 25.85074051778588, + -17.457098510657794, 0 ] }, { "label": "C", "location": [ - 20.824799969285895, - -11.95804238974667, + 24.540726220562014, + -18.403331144748833, 0 ] }, { "label": "C", "location": [ - 20.515460458764966, - -11.011809755655634, + 24.231386710041086, + -17.457098510657794, 0 ] } @@ -625,40 +640,40 @@ { "label": "C", "location": [ - 21.375187401380572, - -12.055449951245674, + 25.09111365265669, + -18.500738706247834, 0 ] }, { "label": "C", "location": [ - 21.87557483347525, - -13.595542389746672, + 25.591501084751368, + -20.040831144748832, 0 ] }, { "label": "C", "location": [ - 22.184814266509758, - -12.649309755655636, + 25.900740517785877, + -19.094598510657796, 0 ] }, { "label": "C", "location": [ - 20.874799969285892, - -13.595542389746672, + 24.59072622056201, + -20.040831144748832, 0 ] }, { "label": "C", "location": [ - 20.565460458764964, - -12.649309755655636, + 24.281386710041083, + -19.094598510657796, 0 ] } @@ -707,40 +722,40 @@ { "label": "C", "location": [ - 21.46268740138057, - -13.855449951245673, + 25.17861365265669, + -20.300738706247834, 0 ] }, { "label": "C", "location": [ - 21.96307483347525, - -15.39554238974667, + 25.67900108475137, + -21.84083114474883, 0 ] }, { "label": "C", "location": [ - 22.27231426650976, - -14.449309755655637, + 25.98824051778588, + -20.894598510657797, 0 ] }, { "label": "C", "location": [ - 20.962299969285894, - -15.39554238974667, + 24.678226220562014, + -21.84083114474883, 0 ] }, { "label": "C", "location": [ - 20.652960458764966, - -14.449309755655637, + 24.368886710041085, + -20.894598510657797, 0 ] } @@ -783,4 +798,4 @@ } ] } -} +} \ No newline at end of file diff --git a/api/tests/integration/tests/rendering/ref/linux/multitail_arrow.png b/api/tests/integration/tests/rendering/ref/linux/multitail_arrow.png index ff116a0b06..f14a80fb80 100644 Binary files a/api/tests/integration/tests/rendering/ref/linux/multitail_arrow.png and b/api/tests/integration/tests/rendering/ref/linux/multitail_arrow.png differ diff --git a/api/tests/integration/tests/rendering/ref/mac/multitail_arrow.png b/api/tests/integration/tests/rendering/ref/mac/multitail_arrow.png index ff116a0b06..f14a80fb80 100644 Binary files a/api/tests/integration/tests/rendering/ref/mac/multitail_arrow.png and b/api/tests/integration/tests/rendering/ref/mac/multitail_arrow.png differ diff --git a/api/tests/integration/tests/rendering/ref/win/multitail_arrow.png b/api/tests/integration/tests/rendering/ref/win/multitail_arrow.png index ff116a0b06..f14a80fb80 100644 Binary files a/api/tests/integration/tests/rendering/ref/win/multitail_arrow.png and b/api/tests/integration/tests/rendering/ref/win/multitail_arrow.png differ diff --git a/api/wasm/indigo-ketcher/indigo-ketcher.cpp b/api/wasm/indigo-ketcher/indigo-ketcher.cpp index 9c99d6cb63..f67b8d275b 100644 --- a/api/wasm/indigo-ketcher/indigo-ketcher.cpp +++ b/api/wasm/indigo-ketcher/indigo-ketcher.cpp @@ -208,6 +208,20 @@ namespace indigo print_js(outputFormat.c_str()); result = _checkResultString(indigoToString(buffer.id)); } + else if (outputFormat == "rdf" || outputFormat == "chemical/x-rdf") + { + auto buffer = IndigoObject(_checkResult(indigoWriteBuffer())); + auto reac_it = IndigoObject(_checkResult(indigoIterateReactions(id()))); + indigoRdfHeader(buffer.id); + while (indigoHasNext(reac_it.id)) + { + const auto reac_obj = IndigoObject(_checkResult(indigoNext(reac_it.id))); + const auto reac = IndigoObject(_checkResult(indigoClone(reac_obj.id))); + indigoRdfAppend(buffer.id, reac.id); + } + print_js(outputFormat.c_str()); + result = _checkResultString(indigoToString(buffer.id)); + } else { std::stringstream ss; diff --git a/api/wasm/indigo-ketcher/test/pathway.ket b/api/wasm/indigo-ketcher/test/pathway.ket new file mode 100644 index 0000000000..dbe68dfdf1 --- /dev/null +++ b/api/wasm/indigo-ketcher/test/pathway.ket @@ -0,0 +1,264 @@ +{ + "root": { + "nodes": [ + { + "$ref": "mol0" + }, + { + "$ref": "mol1" + }, + { + "$ref": "mol2" + }, + { + "type": "multi-tailed-arrow", + "data": { + "head": { + "position": { + "x": 12.725, + "y": -7.2, + "z": 0 + } + }, + "spine": { + "pos": [ + { + "x": 11.925, + "y": -5.95, + "z": 0 + }, + { + "x": 11.925, + "y": -8.45, + "z": 0 + } + ] + }, + "tails": { + "pos": [ + { + "x": 11.525, + "y": -5.95, + "z": 0 + }, + { + "x": 11.525, + "y": -8.45, + "z": 0 + } + ] + }, + "zOrder": 0 + } + } + ], + "connections": [], + "templates": [] + }, + "mol0": { + "type": "molecule", + "atoms": [ + { + "label": "C", + "location": [ + 10.60720745473898, + -6.3225487434647185, + 0 + ] + }, + { + "label": "C", + "location": [ + 10.603504114664911, + -5.327451256535282, + 0 + ] + }, + { + "label": "C", + "location": [ + 9.595294802067826, + -6.309637098341615, + 0 + ] + }, + { + "label": "C", + "location": [ + 9.592792545261023, + -5.327451256535282, + 0 + ] + } + ], + "bonds": [ + { + "type": 1, + "atoms": [ + 0, + 1 + ] + }, + { + "type": 1, + "atoms": [ + 1, + 3 + ] + }, + { + "type": 1, + "atoms": [ + 3, + 2 + ] + }, + { + "type": 1, + "atoms": [ + 2, + 0 + ] + } + ], + "stereoFlagPosition": { + "x": 10.60720745473898, + "y": 4.327451256535282, + "z": 0 + } + }, + "mol1": { + "type": "molecule", + "atoms": [ + { + "label": "C", + "location": [ + 9.47437421436393, + -8.932470415521406, + 0 + ] + }, + { + "label": "C", + "location": [ + 10.475625785636073, + -8.932470415521406, + 0 + ] + }, + { + "label": "C", + "location": [ + 9.975050188048687, + -8.067529584478596, + 0 + ] + } + ], + "bonds": [ + { + "type": 1, + "atoms": [ + 0, + 1 + ] + }, + { + "type": 1, + "atoms": [ + 1, + 2 + ] + }, + { + "type": 1, + "atoms": [ + 2, + 0 + ] + } + ] + }, + "mol2": { + "type": "molecule", + "atoms": [ + { + "label": "C", + "location": [ + 14.5, + -6.430559548551434, + 0 + ] + }, + { + "label": "C", + "location": [ + 15.308989960649672, + -7.018352254200232, + 0 + ] + }, + { + "label": "C", + "location": [ + 14.999993795209933, + -7.969440451448566, + 0 + ] + }, + { + "label": "C", + "location": [ + 14.000006204790067, + -7.969440451448566, + 0 + ] + }, + { + "label": "C", + "location": [ + 13.691010039350328, + -7.018352254200232, + 0 + ] + } + ], + "bonds": [ + { + "type": 1, + "atoms": [ + 0, + 4 + ] + }, + { + "type": 1, + "atoms": [ + 4, + 3 + ] + }, + { + "type": 1, + "atoms": [ + 3, + 2 + ] + }, + { + "type": 1, + "atoms": [ + 2, + 1 + ] + }, + { + "type": 1, + "atoms": [ + 1, + 0 + ] + } + ] + } +} \ No newline at end of file diff --git a/api/wasm/indigo-ketcher/test/pathway_layout.ket b/api/wasm/indigo-ketcher/test/pathway_layout.ket new file mode 100644 index 0000000000..882ea603eb --- /dev/null +++ b/api/wasm/indigo-ketcher/test/pathway_layout.ket @@ -0,0 +1 @@ +{"root":{"nodes":[{"$ref":"mol0"},{"$ref":"mol1"},{"$ref":"mol2"},{"type":"multi-tailed-arrow","data":{"head":{"position":{"x":3.5144147872924806,"y":2.2125582695007326,"z":0.0}},"spine":{"pos":[{"x":2.5144147872924806,"y":3.927567958831787,"z":0.0},{"x":2.5144147872924806,"y":0.49754875898361208,"z":0.0}]},"tails":{"pos":[{"x":2.0144147872924806,"y":3.927567958831787,"z":0.0},{"x":2.0144147872924806,"y":0.49754875898361208,"z":0.0}]},"zOrder":0}}]},"mol0":{"type":"molecule","atoms":[{"label":"C","location":[5.323404312133789,2.981998920440674,0.0]},{"label":"C","location":[6.132393836975098,2.3942065238952638,0.0]},{"label":"C","location":[5.823397636413574,1.4431180953979493,0.0]},{"label":"C","location":[4.823410987854004,1.4431180953979493,0.0]},{"label":"C","location":[4.5144147872924809,2.3942065238952638,0.0]}],"bonds":[{"type":1,"atoms":[0,4]},{"type":1,"atoms":[4,3]},{"type":1,"atoms":[3,2]},{"type":1,"atoms":[2,1]},{"type":1,"atoms":[1,0]}]},"mol1":{"type":"molecule","atoms":[{"label":"C","location":[1.0144147872924805,0.0,0.0]},{"label":"C","location":[1.010711669921875,0.9950976371765137,0.0]},{"label":"C","location":[0.00250244140625,0.012911796569824219,0.0]},{"label":"C","location":[0.0,0.9950976371765137,0.0]}],"bonds":[{"type":1,"atoms":[0,1]},{"type":1,"atoms":[1,3]},{"type":1,"atoms":[3,2]},{"type":1,"atoms":[2,0]}]},"mol2":{"type":"molecule","atoms":[{"label":"C","location":[0.013162612915039063,3.495098114013672,0.0]},{"label":"C","location":[1.0144147872924805,3.495098114013672,0.0]},{"label":"C","location":[0.5138387680053711,4.360038757324219,0.0]}],"bonds":[{"type":1,"atoms":[0,1]},{"type":1,"atoms":[1,2]},{"type":1,"atoms":[2,0]}]}} \ No newline at end of file diff --git a/api/wasm/indigo-ketcher/test/test.js b/api/wasm/indigo-ketcher/test/test.js index 43d0bec95d..06d593849c 100644 --- a/api/wasm/indigo-ketcher/test/test.js +++ b/api/wasm/indigo-ketcher/test/test.js @@ -989,6 +989,29 @@ M END }); } + { + test("layout", "pathway", () => { + var fs = require('fs'); + const pathway = fs.readFileSync("pathway.ket"); + let options = new indigo.MapStringString(); + options.set('aromatize-skip-superatoms', 'true'); + options.set('dearomatize-on-load', 'false'); + options.set('gross-formula-add-rsites', 'true'); + options.set('ignore-no-chiral-flag', 'false'); + options.set('ignore-stereochemistry-errors', 'true'); + options.set('input-format', "chemical/x-unknown"); + options.set('mass-skip-error-on-pseudoatoms', 'false'); + options.set('output-content-type', "application/json"); + options.set('smart-layout', 'true'); + let ket = JSON.parse(indigo.layout(pathway, "ket", options)).struct; + // fs.writeFileSync("pathway_layout.ket", ket); + const ket_ref = fs.readFileSync("pathway_layout.ket"); + assert.equal(ket, ket_ref.toString().trim()); + options.delete(); + assert(true); + }); + } + // Run tests run(); }); diff --git a/core/indigo-core/common/math/algebra.h b/core/indigo-core/common/math/algebra.h index a4b607313b..0c7d2ca0a0 100644 --- a/core/indigo-core/common/math/algebra.h +++ b/core/indigo-core/common/math/algebra.h @@ -21,6 +21,7 @@ #include #include +#include #include #include "base_c/defs.h" @@ -291,6 +292,36 @@ namespace indigo } }; + inline bool rayIntersectsSegment(const Vec2f& beg, const Vec2f& end, const Vec2f& a, const Vec2f& b) + { + Vec2f ray = end - beg; + + // Vector of the segment + Vec2f segment = a - b; + + // Calculate the cross products + float cross1 = Vec2f::cross(ray, segment); + if (fabs(cross1) < 1e-6) + { + // Parallel segments + return false; + } + + // Compute the cross product of vectors (beg - a) and (beg - b) + Vec2f vecBA = beg - a; + Vec2f vecBB = beg - b; + + float t = Vec2f::cross(vecBA, segment) / cross1; + if (t < 0) + { + // Intersection is behind the starting point + return false; + } + + float u = Vec2f::cross(vecBA, ray) / cross1; + return (u >= 0 && u <= 1); + } + struct Rect2f { @@ -327,21 +358,15 @@ namespace indigo inline bool rayIntersectsRect(const Vec2f& begin, const Vec2f& end) { - Vec2f v = end - begin; - Vec2f vr(v.y, -v.x); // perpendicular vector - auto lb = _leftBottom - begin; - auto lt = leftTop() - begin; - auto rt = _rightTop - begin; - auto rb = rightBottom() - begin; - // same_sign means no intersection - bool same_sign = std::signbit(Vec2f::dot(vr, lb)) == std::signbit(Vec2f::dot(vr, lt)) && - std::signbit(Vec2f::dot(vr, lt)) == std::signbit(Vec2f::dot(vr, rt)) && - std::signbit(Vec2f::dot(vr, rt)) == std::signbit(Vec2f::dot(vr, rb)); - - return !same_sign && Vec2f::cross(lb, vr) > 0 && Vec2f::cross(lt, vr) > 0 && Vec2f::cross(rt, vr) > 0 && Vec2f::cross(rb, vr) > 0; + auto lb = _leftBottom; + auto lt = leftTop(); + auto rt = _rightTop; + auto rb = rightBottom(); + return rayIntersectsSegment(begin, end, lb, lt) || rayIntersectsSegment(begin, end, lt, rt) || rayIntersectsSegment(begin, end, rt, rb) || + rayIntersectsSegment(begin, end, rb, lb); } - inline double pointDistance(const Vec2f& pt) + inline float pointDistance(const Vec2f& pt) { if (pt.x <= left()) { diff --git a/core/indigo-core/layout/pathway_layout.h b/core/indigo-core/layout/pathway_layout.h index 67f44e5492..498a2d68d9 100644 --- a/core/indigo-core/layout/pathway_layout.h +++ b/core/indigo-core/layout/pathway_layout.h @@ -93,7 +93,7 @@ namespace indigo for (int i = 0; i < simpleReaction.reactantIndexes.size(); ++i) { // check if it is a final reactant - if (!reactionNode.successorReactants.find(i)) + if (!reactionNode.connectedReactants.find(i)) { auto ridx = simpleReaction.reactantIndexes[i]; reactantsNoPrecursors.emplace_back(reaction, nodeIdx, ridx); diff --git a/core/indigo-core/layout/reaction_layout.h b/core/indigo-core/layout/reaction_layout.h index b1066e4f6c..806b7a59f2 100644 --- a/core/indigo-core/layout/reaction_layout.h +++ b/core/indigo-core/layout/reaction_layout.h @@ -43,6 +43,8 @@ namespace indigo void make(); + void makePathwayFromSimple(); + // layout if reaction components are not in the places void fixLayout(); void processSideBoxes(std::vector& pluses, Rect2f& type_box, int side); @@ -63,6 +65,7 @@ namespace indigo }; private: + void _makePathway(); void _updateMetadata(); void _pushMol(Metalayout::LayoutLine& line, int id, bool is_agent = false); void _pushSpace(Metalayout::LayoutLine& line, float size); diff --git a/core/indigo-core/layout/src/pathway_layout.cpp b/core/indigo-core/layout/src/pathway_layout.cpp index 6e5b445f57..fe540d39d7 100644 --- a/core/indigo-core/layout/src/pathway_layout.cpp +++ b/core/indigo-core/layout/src/pathway_layout.cpp @@ -80,10 +80,9 @@ void PathwayLayout::buildLayoutTree() for (int i = 0; i < _reaction.getReactionNodeCount(); ++i) { auto& reactionNode = _reaction.getReactionNode(i); - auto& currentLayoutItem = _layoutItems[i]; // add successor reactants to layout items - for (int j : reactionNode.precursorReactionsIndexes) + for (int j : reactionNode.precursorReactionIndexes) { auto& precursorLayoutItem = _layoutItems[j]; auto lastChild = currentLayoutItem.getLastChild(); diff --git a/core/indigo-core/layout/src/reaction_layout.cpp b/core/indigo-core/layout/src/reaction_layout.cpp index cb27148d3c..4347f4d22e 100644 --- a/core/indigo-core/layout/src/reaction_layout.cpp +++ b/core/indigo-core/layout/src/reaction_layout.cpp @@ -15,15 +15,17 @@ * See the License for the specific language governing permissions and * limitations under the License. ***************************************************************************/ +#include +#include +#include -#include "layout/reaction_layout.h" #include "layout/molecule_layout.h" +#include "layout/reaction_layout.h" #include "molecule/ket_commons.h" #include "molecule/molecule.h" +#include "reaction/pathway_reaction_builder.h" #include "reaction/reaction.h" -#include -#include -#include +#include "reaction/reaction_multistep_detector.h" #ifdef _MSC_VER #pragma warning(push, 4) @@ -51,51 +53,49 @@ void ReactionLayout::fixLayout() { int arrows_count = _r.meta().getMetaCount(KETReactionArrow::CID); int simple_count = _r.meta().getMetaCount(KETSimpleObject::CID) + _r.meta().getMetaCount(KETTextObject::CID); - if (arrows_count > 1 || simple_count) + int multi_count = _r.meta().getMetaCount(KETReactionMultitailArrow::CID); + if (arrows_count > 1 || simple_count || multi_count) return; - Vec2f rmax{Vec2f::min_coord(), Vec2f::min_coord()}, pmin{Vec2f::max_coord(), Vec2f::max_coord()}; Rect2f bb; - if (_r.isRetrosyntetic()) + // Calculate rightTop of reactant bounding box + bool invalid_layout = false; + float cur_left = 0, cur_right = 0; + for (int i = _r.isRetrosyntetic() ? _r.productBegin() : _r.reactantBegin(); i != (_r.isRetrosyntetic() ? _r.productEnd() : _r.reactantEnd()); + i = _r.isRetrosyntetic() ? _r.productNext(i) : _r.reactantNext(i)) { - // Calculate rightTop of product bounding box - for (int i = _r.productBegin(); i != _r.productEnd(); i = _r.productNext(i)) + _r.getBaseMolecule(i).getBoundingBox(bb); + if (i == 0 || (bb.left() > cur_left && bb.right() > cur_right)) { - _r.getBaseMolecule(i).getBoundingBox(bb); - rmax.max(bb.rightTop()); - } - - // Calculate leftBottom of reactant bounding box - for (int i = _r.reactantBegin(); i != _r.reactantEnd(); i = _r.reactantNext(i)) - { - _r.getBaseMolecule(i).getBoundingBox(bb); - pmin.min(bb.leftBottom()); + cur_left = bb.left(); + cur_right = bb.right(); } + else + invalid_layout = true; } - else - { - // Calculate rightTop of reactant bounding box - for (int i = _r.reactantBegin(); i != _r.reactantEnd(); i = _r.reactantNext(i)) - { - _r.getBaseMolecule(i).getBoundingBox(bb); - rmax.max(bb.rightTop()); - } - // Calculate leftBottom of product bounding box - for (int i = _r.productBegin(); i != _r.productEnd(); i = _r.productNext(i)) + // Calculate leftBottom of product bounding box + for (int i = _r.isRetrosyntetic() ? _r.reactantBegin() : _r.productBegin(); i != (_r.isRetrosyntetic() ? _r.reactantEnd() : _r.productEnd()); + i = _r.isRetrosyntetic() ? _r.reactantNext(i) : _r.productNext(i)) + { + _r.getBaseMolecule(i).getBoundingBox(bb); + if (bb.left() > cur_left && bb.right() > cur_right) { - _r.getBaseMolecule(i).getBoundingBox(bb); - pmin.min(bb.leftBottom()); + cur_left = bb.left(); + cur_right = bb.right(); } + else + invalid_layout = true; } + // if left side of product bb at left of right side of reactant bb - fix layout - if (rmax.x > pmin.x) + if (invalid_layout) { ReactionLayout rl(_r, true); rl.preserve_molecule_layout = true; rl.make(); } - else if (_r.meta().getMetaCount(KETReactionArrow::CID) == 0) + else if (_r.meta().getMetaCount(KETReactionArrow::CID) == 0 && _r.meta().getMetaCount(KETReactionMultitailArrow::CID) == 0) _updateMetadata(); } @@ -205,11 +205,43 @@ void ReactionLayout::processSideBoxes(std::vector& pluses, Rect2f& type_b } } +void ReactionLayout::makePathwayFromSimple() +{ + std::deque reactions; + for (int i = 0; i < _r.reactionBlocksCount(); i++) + { + auto& rb = _r.reactionBlock(i); + if (rb.products.size() || rb.reactants.size()) + { + auto& rc = reactions.emplace_back(); + for (int j = 0; j < rb.reactants.size(); j++) + rc.addReactantCopy(_r.getBaseMolecule(rb.reactants[j]), 0, 0); + for (int j = 0; j < rb.products.size(); j++) + rc.addProductCopy(_r.getBaseMolecule(rb.products[j]), 0, 0); + } + } + PathwayReactionBuilder prb; + auto pwr = prb.buildPathwayReaction(reactions); + _r.meta().resetReactionData(); + pwr->meta().append(_r.meta()); + pwr->copyToReaction(_r); +} + void ReactionLayout::make() { int arrows_count = _r.meta().getMetaCount(KETReactionArrow::CID); int simple_count = _r.meta().getNonChemicalMetaCount(); - if (arrows_count > 1 || simple_count) + int multi_count = _r.meta().getMetaCount(KETReactionMultitailArrow::CID); + if (simple_count) + return; + + if (_r.reactionBlocksCount() > 1 && _r.intermediateCount() == 0 && multi_count == 0) + { + makePathwayFromSimple(); + return; + } + + if (arrows_count > 1) return; // not implemented yet // update layout of molecules, if needed diff --git a/core/indigo-core/molecule/ket_commons.h b/core/indigo-core/molecule/ket_commons.h index cb20e1a89a..6feed635ac 100644 --- a/core/indigo-core/molecule/ket_commons.h +++ b/core/indigo-core/molecule/ket_commons.h @@ -490,6 +490,13 @@ namespace indigo std::vector indexes; int role; std::vector arrows_to; + std::vector arrows_from; + }; + + struct PathwayComponent + { + int product_csb_idx; + std::vector reactant_csb_indexes; }; struct ReactionComponent @@ -516,6 +523,7 @@ namespace indigo ARROW_ELLIPTICAL_ARC_OPEN_ANGLE, ARROW_ELLIPTICAL_ARC_OPEN_HALF_ANGLE, ARROW_RETROSYNTHETIC, + ARROW_MULTITAIL }; enum diff --git a/core/indigo-core/molecule/src/molecule_json_loader.cpp b/core/indigo-core/molecule/src/molecule_json_loader.cpp index bb01a7fbdb..a24a421dbf 100644 --- a/core/indigo-core/molecule/src/molecule_json_loader.cpp +++ b/core/indigo-core/molecule/src/molecule_json_loader.cpp @@ -784,7 +784,7 @@ void MoleculeJsonLoader::parseBonds(const rapidjson::Value& bonds, BaseMolecule& } } -void indigo::MoleculeJsonLoader::parseHighlight(const rapidjson::Value& highlight, BaseMolecule& mol) +void MoleculeJsonLoader::parseHighlight(const rapidjson::Value& highlight, BaseMolecule& mol) { for (rapidjson::SizeType i = 0; i < highlight.Size(); ++i) { @@ -1733,7 +1733,7 @@ void MoleculeJsonLoader::loadMolecule(BaseMolecule& mol, bool load_arrows) ml.layout_orientation = UNCPECIFIED; ml.updateSGroups(); loadMetaObjects(_meta_objects, mol.meta()); - int arrows_count = mol.meta().getMetaCount(KETReactionArrow::CID); + int arrows_count = mol.meta().getMetaCount(KETReactionArrow::CID) + mol.meta().getMetaCount(KETReactionMultitailArrow::CID); if (arrows_count && !load_arrows) throw Error("Not a molecule. Found %d arrows.", arrows_count); } diff --git a/core/indigo-core/reaction/base_reaction.h b/core/indigo-core/reaction/base_reaction.h index 80197f38f6..0bbe077a5f 100644 --- a/core/indigo-core/reaction/base_reaction.h +++ b/core/indigo-core/reaction/base_reaction.h @@ -36,6 +36,7 @@ namespace indigo class Reaction; class QueryReaction; class BaseReaction; + class PathwayReaction; struct SpecialCondition { @@ -81,11 +82,9 @@ namespace indigo { reactants.copy(other.reactants); products.copy(other.products); - arrow_index = other.arrow_index; } Array reactants; Array products; - int arrow_index; }; class DLLEXPORT BaseReaction : public NonCopyable @@ -105,11 +104,6 @@ namespace indigo MetaDataStorage& meta(); - bool isMultistep() - { - return _reactionBlocks.size(); - } - // 'neu' means 'new' in German virtual BaseReaction* neu() = 0; @@ -192,10 +186,47 @@ namespace indigo { return _nextElement(side, -1); } + int sideNext(int side, int index) { return _nextElement(side, index); } + + virtual int reactionsCount() + { + return _reactionBlocks.size(); + } + + virtual int reactionBegin() + { + int i = 0; + for (; i < _reactionBlocks.size(); ++i) + { + auto& rb = _reactionBlocks[i]; + if (rb.products.size() || rb.reactants.size()) + break; + } + return i; + } + + virtual int reactionEnd() + { + if (_reactionBlocks.size() == 0) + return 1; + return _reactionBlocks.size(); + } + + virtual int reactionNext(int i) + { + while (++i < _reactionBlocks.size()) + { + auto& rb = _reactionBlocks[i]; + if (rb.products.size() || rb.reactants.size()) + break; + } + return i; + } + // dkuzminov: we either need to have a parameter "side" for method sideEnd() or we should exclude the set of "different" xxxEnd methods for sake of the // single "end" method int sideEnd() @@ -277,13 +308,17 @@ namespace indigo // poor man's dynamic casting virtual Reaction& asReaction(); virtual QueryReaction& asQueryReaction(); + virtual PathwayReaction& asPathwayReaction(); virtual bool isQueryReaction(); + virtual bool isPathwayReaction(); BaseMolecule& getBaseMolecule(int index) { return *_allMolecules.at(index); } + virtual std::unique_ptr getBaseReaction(int index) = 0; + int getAAM(int index, int atom); int getReactingCenter(int index, int bond); int getInversion(int index, int atom); @@ -363,6 +398,7 @@ namespace indigo bool isRetrosynthetic = false; virtual void _clone(BaseReaction& other, int index, int i, ObjArray>* mol_mappings); + virtual void _cloneSub(BaseReaction& other); }; } // namespace indigo diff --git a/core/indigo-core/reaction/pathway_reaction.h b/core/indigo-core/reaction/pathway_reaction.h index d63e86836f..7894a566a4 100644 --- a/core/indigo-core/reaction/pathway_reaction.h +++ b/core/indigo-core/reaction/pathway_reaction.h @@ -35,26 +35,6 @@ namespace indigo class DLLEXPORT PathwayReaction : public BaseReaction { public: - struct SuccessorReaction - { - SuccessorReaction(int reactionIdx, Array& ridxs) : reactionIdx(reactionIdx) - { - reactantIndexes.copy(ridxs); - } - SuccessorReaction(const SuccessorReaction& other) : reactionIdx(other.reactionIdx) - { - reactantIndexes.copy(other.reactantIndexes); - } - SuccessorReaction& operator=(const SuccessorReaction& other) - { - reactionIdx = other.reactionIdx; - reactantIndexes.copy(other.reactantIndexes); - return *this; - } - int reactionIdx; - Array reactantIndexes; - }; - struct SimpleReaction { struct Plus @@ -87,23 +67,34 @@ namespace indigo { reactionIdx = other.reactionIdx; multiTailMetaIndex = other.multiTailMetaIndex; - for (int i = 0; i < other.successorReactions.size(); ++i) - successorReactions.push(other.successorReactions[i]); - precursorReactionsIndexes.copy(other.precursorReactionsIndexes); + for (int i = 0; i < other.successorReactionIndexes.size(); ++i) + successorReactionIndexes.push(other.successorReactionIndexes[i]); + precursorReactionIndexes.copy(other.precursorReactionIndexes); } int reactionIdx; // vector of successor reactions indexes and their corresponding reactant indexes - ObjArray successorReactions; + Array successorReactionIndexes; // vector of precursor reactions indexes - Array precursorReactionsIndexes; + Array precursorReactionIndexes; // utility information - RedBlackSet successorReactants; + RedBlackSet connectedReactants; // where the precursors' products are connected to int multiTailMetaIndex; }; PathwayReaction(); ~PathwayReaction() override; + std::unique_ptr getBaseReaction(int index) override + { + std::unique_ptr reaction(new Reaction()); + auto& sr = _reactions[index]; + for (auto pidx : sr.productIndexes) + reaction->addProductCopy(*_molecules[pidx], 0, 0); + for (auto ridx : sr.reactantIndexes) + reaction->addReactantCopy(*_molecules[ridx], 0, 0); + return reaction; + } + std::vector getRootReactions() const; auto& getReactionNode(int node_idx) @@ -136,12 +127,85 @@ namespace indigo return static_cast(_reactions.size()); } + int reactionsCount() override + { + return _reactions.size(); + } + Reaction& asReaction() override { _rootReaction.clone(*this); return _rootReaction; } + void copyToReaction(BaseReaction& reaction) + { + reaction.clear(); + reaction.meta().clone(meta()); + // collect roles + std::map mol_roles; + for (int i = 0; i < _reactions.size(); ++i) + { + auto& reac = _reactions[i]; + for (auto mol_idx : reac.productIndexes) + { + auto product_it = mol_roles.find(mol_idx); + if (product_it != mol_roles.end()) + { + if (product_it->second == REACTANT) + product_it->second = INTERMEDIATE; + } + else + mol_roles.emplace(mol_idx, PRODUCT); + } + + for (auto mol_idx : reac.reactantIndexes) + { + auto reactant_it = mol_roles.find(mol_idx); + if (reactant_it != mol_roles.end()) + { + if (reactant_it->second == PRODUCT) + reactant_it->second = INTERMEDIATE; + } + else + mol_roles.emplace(mol_idx, REACTANT); + } + } + + // copy molecules into Reaction + for (auto& kvp : mol_roles) + { + switch (kvp.second) + { + case PRODUCT: + reaction.addProductCopy(*_molecules[kvp.first], 0, 0); + break; + case REACTANT: + reaction.addReactantCopy(*_molecules[kvp.first], 0, 0); + break; + case INTERMEDIATE: + reaction.addIntermediateCopy(*_molecules[kvp.first], 0, 0); + break; + case CATALYST: + reaction.addCatalystCopy(*_molecules[kvp.first], 0, 0); + break; + case UNDEFINED: + reaction.addUndefinedCopy(*_molecules[kvp.first], 0, 0); + break; + } + } + } + + bool isPathwayReaction() override + { + return true; + } + + PathwayReaction& asPathwayReaction() override + { + return *this; + } + ReactionNode& addReactionNode() { ReactionNode rn; @@ -165,19 +229,37 @@ namespace indigo return {static_cast(_reactions.size() - 1), _reactions[_reactions.size() - 1]}; } - void clone(PathwayReaction&); BaseReaction* neu() override; bool aromatize(const AromaticityOptions& options) override; + + int reactionBegin() override + { + return _reactions.size() ? 0 : 1; + } + + int reactionEnd() override + { + return _reactions.size(); + } + + int reactionNext(int i) override + { + return ++i; + } + + void clear() override; + DECL_ERROR; protected: int _addBaseMolecule(int side) override; + void _cloneSub(BaseReaction& other) override; private: ObjArray _reactionNodes; PtrArray _molecules; ObjArray _reactions; - Reaction _rootReaction; + Reaction _rootReaction; // copy of root reaction }; } // namespace indigo diff --git a/core/indigo-core/reaction/pathway_reaction_builder.h b/core/indigo-core/reaction/pathway_reaction_builder.h index d281e46cfa..fe4dd1fdef 100644 --- a/core/indigo-core/reaction/pathway_reaction_builder.h +++ b/core/indigo-core/reaction/pathway_reaction_builder.h @@ -48,6 +48,7 @@ namespace indigo PathwayReactionBuilder(); ~PathwayReactionBuilder(); std::unique_ptr buildPathwayReaction(std::deque& reactions); + static void buildRootReaction(PathwayReaction& reaction); DECL_ERROR; private: @@ -62,7 +63,7 @@ namespace indigo void buildInchiDescriptors(std::deque& reactions); void buildNodes(std::deque& reactions); auto findSuccessorReactions(int reactionIdx); - void buildReactions(std::deque& reactions); + void buildReactions(); std::vector _reactionInchiDescriptors; std::unordered_map> _reactantToReactions; diff --git a/core/indigo-core/reaction/query_reaction.h b/core/indigo-core/reaction/query_reaction.h index b702d04462..887c5ad7b1 100644 --- a/core/indigo-core/reaction/query_reaction.h +++ b/core/indigo-core/reaction/query_reaction.h @@ -52,6 +52,7 @@ namespace indigo bool aromatize(const AromaticityOptions& options) override; BaseReaction* neu() override; + std::unique_ptr getBaseReaction(int index) override; QueryReaction& asQueryReaction() override; bool isQueryReaction() override; diff --git a/core/indigo-core/reaction/reaction.h b/core/indigo-core/reaction/reaction.h index 837022360a..aaabfb815a 100644 --- a/core/indigo-core/reaction/reaction.h +++ b/core/indigo-core/reaction/reaction.h @@ -63,6 +63,8 @@ namespace indigo Reaction& asReaction() override; + std::unique_ptr getBaseReaction(int index) override; + /* void dearomatizeBonds(); void aromatizeQueryBonds(); diff --git a/core/indigo-core/reaction/reaction_cml_saver.h b/core/indigo-core/reaction/reaction_cml_saver.h index b9d280b07c..d8208b4fde 100644 --- a/core/indigo-core/reaction/reaction_cml_saver.h +++ b/core/indigo-core/reaction/reaction_cml_saver.h @@ -26,6 +26,7 @@ namespace indigo class Output; class Reaction; + class BaseReaction; class ReactionCmlSaver { @@ -33,7 +34,7 @@ namespace indigo explicit ReactionCmlSaver(Output& output); ~ReactionCmlSaver(); - void saveReaction(Reaction& rxn); + void saveReaction(BaseReaction& rxn); bool skip_cml_tag; // skips and tags DECL_ERROR; diff --git a/core/indigo-core/reaction/reaction_json_loader.h b/core/indigo-core/reaction/reaction_json_loader.h index 686779494a..524d739194 100644 --- a/core/indigo-core/reaction/reaction_json_loader.h +++ b/core/indigo-core/reaction/reaction_json_loader.h @@ -60,8 +60,8 @@ namespace indigo rapidjson::Value _molecule; MoleculeJsonLoader _loader; - Reaction* _prxn; - QueryReaction* _pqrxn; + // Reaction* _prxn; + // QueryReaction* _pqrxn; Molecule _mol; QueryMolecule _qmol; BaseMolecule* _pmol; diff --git a/core/indigo-core/reaction/reaction_multistep_detector.h b/core/indigo-core/reaction/reaction_multistep_detector.h index 121b498899..de0716a28d 100644 --- a/core/indigo-core/reaction/reaction_multistep_detector.h +++ b/core/indigo-core/reaction/reaction_multistep_detector.h @@ -36,13 +36,26 @@ namespace indigo class BaseMolecule; class BaseReaction; + class PathwayReaction; class ReactionMultistepDetector { public: + enum class ReactionType + { + ESimpleReaction, + EMutistepReaction, + EPathwayReaction + }; + ReactionMultistepDetector(BaseMolecule& mol); ~ReactionMultistepDetector(); - void buildReaction(BaseReaction& rxn); + ReactionType detectReaction(); + void constructMultipleArrowReaction(BaseReaction& rxn); + void constructSimpleArrowReaction(BaseReaction& rxn); + + void constructPathwayReaction(PathwayReaction& rxn); + typedef std::pair FLOAT_INT_PAIR; typedef std::vector FLOAT_INT_PAIRS; const Vec2f PLUS_BBOX_SHIFT = {0.9f, 0.9f}; @@ -51,7 +64,10 @@ namespace indigo DECL_ERROR; private: - void constructMultipleArrowReaction(BaseReaction& rxn); + void createSummBlocks(); + bool detectArrows(); + bool detectMultitailArrows(); + bool findPlusNeighbours(const Vec2f& plus_pos, const FLOAT_INT_PAIRS& mol_tops, const FLOAT_INT_PAIRS& mol_bottoms, const FLOAT_INT_PAIRS& mol_lefts, const FLOAT_INT_PAIRS& mol_rights, std::pair& connection); @@ -59,6 +75,8 @@ namespace indigo std::vector _reaction_components; std::vector _component_summ_blocks; std::list _component_summ_blocks_list; + + int _moleculeCount; }; } // namespace indigo diff --git a/core/indigo-core/reaction/src/base_reaction.cpp b/core/indigo-core/reaction/src/base_reaction.cpp index 0af7c3ea6c..993bccaaf3 100644 --- a/core/indigo-core/reaction/src/base_reaction.cpp +++ b/core/indigo-core/reaction/src/base_reaction.cpp @@ -392,14 +392,18 @@ void BaseReaction::clone(BaseReaction& other, Array* mol_mapping, ObjArray< name.copy(other.name); _meta.clone(other._meta); - isRetrosynthetic = other.isRetrosynthetic; + _cloneSub(other); } void BaseReaction::_clone(BaseReaction& other, int index, int i, ObjArray>* mol_mappings) { } +void BaseReaction::_cloneSub(BaseReaction& other) +{ +} + Reaction& BaseReaction::asReaction() { throw Error("asReaction(): not a Reaction"); @@ -410,11 +414,21 @@ QueryReaction& BaseReaction::asQueryReaction() throw Error("asQueryReaction(): not a QueryReaction"); } +PathwayReaction& BaseReaction::asPathwayReaction() +{ + throw Error("asPathwayReaction(): not a PathwayReaction"); +} + bool BaseReaction::isQueryReaction() { return false; } +bool BaseReaction::isPathwayReaction() +{ + return false; +} + void BaseReaction::remove(int i) { int side = _types[i]; diff --git a/core/indigo-core/reaction/src/pathway_reaction.cpp b/core/indigo-core/reaction/src/pathway_reaction.cpp index c38a10b0b2..3e146b1663 100644 --- a/core/indigo-core/reaction/src/pathway_reaction.cpp +++ b/core/indigo-core/reaction/src/pathway_reaction.cpp @@ -39,34 +39,43 @@ std::vector PathwayReaction::getRootReactions() const { std::vector root_reactions; for (int i = 0; i < _reactionNodes.size(); ++i) - if (_reactionNodes[i].successorReactions.size() == 0) + if (_reactionNodes[i].successorReactionIndexes.size() == 0) root_reactions.push_back(i); return root_reactions; } -void PathwayReaction::clone(PathwayReaction& reaction) +void PathwayReaction::_cloneSub(BaseReaction& other) { - BaseReaction::clone(reaction); - for (int i = 0; i < _reactionNodes.size(); ++i) + clear(); + PathwayReaction& other_pwr = other.asPathwayReaction(); + for (int i = 0; i < other_pwr._reactionNodes.size(); ++i) { - auto& other = _reactionNodes[i]; - auto& rn = reaction._reactionNodes.push(); - rn.reactionIdx = other.reactionIdx; - rn.precursorReactionsIndexes.copy(other.precursorReactionsIndexes); - for (int j = 0; j < other.successorReactions.size(); ++j) + auto& other_rnode = other_pwr._reactionNodes[i]; + auto& rn = _reactionNodes.push(); + rn.reactionIdx = other_rnode.reactionIdx; + rn.precursorReactionIndexes.copy(other_rnode.precursorReactionIndexes); + for (int j = 0; j < other_rnode.successorReactionIndexes.size(); ++j) { - auto& sr = other.successorReactions[j]; - rn.successorReactions.push(sr); + auto& sr = other_rnode.successorReactionIndexes[j]; + rn.successorReactionIndexes.push(sr); } } - for (int i = 0; i < reaction._reactions.size(); ++i) + for (int i = 0; i < other_pwr._reactions.size(); ++i) { - auto& other = reaction._reactions[i]; + auto& other_reaction = other_pwr._reactions[i]; auto& rc = _reactions.push(); - rc.productIndexes.copy(other.productIndexes); - rc.reactantIndexes.copy(other.reactantIndexes); + rc.productIndexes.copy(other_reaction.productIndexes); + rc.reactantIndexes.copy(other_reaction.reactantIndexes); + } + + for (int i = 0; i < other_pwr._molecules.size(); ++i) + { + auto other_molecule = other_pwr._molecules[i]; + addMolecule(*other_molecule); } + + _rootReaction.clone(other_pwr._rootReaction); } BaseReaction* PathwayReaction::neu() @@ -74,6 +83,15 @@ BaseReaction* PathwayReaction::neu() return new PathwayReaction; } +void PathwayReaction::clear() +{ + BaseReaction::clear(); + _reactionNodes.clear(); + _reactions.clear(); + _rootReaction.clear(); + _molecules.clear(); +} + int PathwayReaction::_addBaseMolecule(int side) { int idx = _allMolecules.add(new Molecule()); diff --git a/core/indigo-core/reaction/src/pathway_reaction_builder.cpp b/core/indigo-core/reaction/src/pathway_reaction_builder.cpp index 5c93130df7..2f5c791ffe 100644 --- a/core/indigo-core/reaction/src/pathway_reaction_builder.cpp +++ b/core/indigo-core/reaction/src/pathway_reaction_builder.cpp @@ -79,7 +79,7 @@ auto PathwayReactionBuilder::findSuccessorReactions(int reactionIdx) return matchedReactions; } -void PathwayReactionBuilder::buildReactions(std::deque& reactions) +void PathwayReactionBuilder::buildReactions() { for (int i = 0; i < (int)_reactionInchiDescriptors.size(); ++i) { @@ -162,24 +162,24 @@ void PathwayReactionBuilder::buildNodes(std::deque& reactions) auto& val = m_it->second; Array val_arr; val_arr.copy(val); - if (rn.successorReactions.size() == 0) + if (rn.successorReactionIndexes.size() == 0) { auto& rnj = _pathwayReaction->getReactionNode(j); // check if the reactant is already in use as a successor bool found = false; for (auto ridx : val) { - found = rnj.successorReactants.find(ridx); + found = rnj.connectedReactants.find(ridx); if (found) break; } if (!found) { m_it++; - rn.successorReactions.push(j, val_arr); - rnj.precursorReactionsIndexes.push(i); + rn.successorReactionIndexes.push(j); + rnj.precursorReactionIndexes.push(i); for (auto ridx : val) - rnj.successorReactants.insert(ridx); + rnj.connectedReactants.insert(ridx); } else { @@ -207,29 +207,33 @@ void PathwayReactionBuilder::buildNodes(std::deque& reactions) } } -std::unique_ptr PathwayReactionBuilder::buildPathwayReaction(std::deque& reactions) +void PathwayReactionBuilder::buildRootReaction(PathwayReaction& reaction) { - buildInchiDescriptors(reactions); - buildNodes(reactions); - buildReactions(reactions); - const auto& rr = _pathwayReaction->getRootReactions(); - PathwayLayout pl(*_pathwayReaction); - pl.make(); - if (rr.size()) + const auto& root_reactions = reaction.getRootReactions(); + if (root_reactions.size()) { - auto& first_root = _pathwayReaction->getReaction(rr.back()); + auto& first_root = reaction.getReaction(root_reactions.back()); for (auto& idx : first_root.reactantIndexes) { - auto& mol = _pathwayReaction->getMolecule(idx); - _pathwayReaction->addReactantCopy(mol, 0, 0); + auto& mol = reaction.getMolecule(idx); + reaction.addReactantCopy(mol, 0, 0); } for (auto& idx : first_root.productIndexes) { - auto& mol = _pathwayReaction->getMolecule(idx); - _pathwayReaction->addProductCopy(mol, 0, 0); + auto& mol = reaction.getMolecule(idx); + reaction.addProductCopy(mol, 0, 0); } } +} +std::unique_ptr PathwayReactionBuilder::buildPathwayReaction(std::deque& reactions) +{ + buildInchiDescriptors(reactions); + buildNodes(reactions); + buildReactions(); + PathwayLayout pl(*_pathwayReaction); + pl.make(); + buildRootReaction(*_pathwayReaction); return std::move(_pathwayReaction); } \ No newline at end of file diff --git a/core/indigo-core/reaction/src/query_reaction.cpp b/core/indigo-core/reaction/src/query_reaction.cpp index 84192b4d90..d4d6e7fb81 100644 --- a/core/indigo-core/reaction/src/query_reaction.cpp +++ b/core/indigo-core/reaction/src/query_reaction.cpp @@ -180,6 +180,13 @@ int QueryReaction::_addBaseMolecule(int side) return idx; } +std::unique_ptr QueryReaction::getBaseReaction(int index) +{ + std::unique_ptr query_reaction; + query_reaction->clone(*this); + return query_reaction; +} + bool QueryReaction::aromatize(const AromaticityOptions& options) { bool arom_found = false; diff --git a/core/indigo-core/reaction/src/reaction.cpp b/core/indigo-core/reaction/src/reaction.cpp index b1e6265042..ac77370bfc 100644 --- a/core/indigo-core/reaction/src/reaction.cpp +++ b/core/indigo-core/reaction/src/reaction.cpp @@ -16,9 +16,11 @@ * limitations under the License. ***************************************************************************/ -#include "reaction/reaction.h" +#include + #include "molecule/molecule_arom.h" #include "molecule/molecule_dearom.h" +#include "reaction/reaction.h" #include "reaction/reaction_automapper.h" using namespace indigo; @@ -56,9 +58,7 @@ void Reaction::saveBondOrders(Reaction& reaction, ObjArray>& bond_typ while (bond_types.size() < reaction.end()) bond_types.push(); - int i; - - for (i = reaction.begin(); i != reaction.end(); i = reaction.next(i)) + for (int i = reaction.begin(); i != reaction.end(); i = reaction.next(i)) { Molecule::saveBondOrders(reaction.getMolecule(i), bond_types[i]); } @@ -66,10 +66,7 @@ void Reaction::saveBondOrders(Reaction& reaction, ObjArray>& bond_typ void Reaction::loadBondOrders(Reaction& reaction, ObjArray>& bond_types) { - - int i; - - for (i = reaction.begin(); i != reaction.end(); i = reaction.next(i)) + for (int i = reaction.begin(); i != reaction.end(); i = reaction.next(i)) { Molecule::loadBondOrders(reaction.getMolecule(i), bond_types[i]); } @@ -90,6 +87,24 @@ Reaction& Reaction::asReaction() return *this; } +std::unique_ptr Reaction::getBaseReaction(int index) +{ + std::unique_ptr reaction(neu()); + if (_reactionBlocks.size()) + { + auto& rb = _reactionBlocks[index]; + for (auto ridx : rb.reactants) + reaction->addReactantCopy(getBaseMolecule(ridx), 0, 0); + + for (auto pidx : rb.products) + reaction->addProductCopy(getBaseMolecule(pidx), 0, 0); + + return reaction; + } + reaction->clone(*this); + return reaction; +} + BaseReaction* Reaction::neu() { return new Reaction(); @@ -97,8 +112,6 @@ BaseReaction* Reaction::neu() void Reaction::checkForConsistency(Reaction& rxn) { - int i; - - for (i = rxn.begin(); i != rxn.end(); i = rxn.next(i)) + for (int i = rxn.begin(); i != rxn.end(); i = rxn.next(i)) Molecule::checkForConsistency(rxn.getMolecule(i)); } diff --git a/core/indigo-core/reaction/src/reaction_auto_loader.cpp b/core/indigo-core/reaction/src/reaction_auto_loader.cpp index 3aee36dd19..e2d290f58b 100644 --- a/core/indigo-core/reaction/src/reaction_auto_loader.cpp +++ b/core/indigo-core/reaction/src/reaction_auto_loader.cpp @@ -283,6 +283,8 @@ std::unique_ptr ReactionAutoLoader::_loadReaction(bool query) { if (_scanner->findWord("arrow")) { + _scanner->seek(pos, SEEK_SET); + bool is_pathway = _scanner->findWord("multi-tailed-arrow"); using namespace rapidjson; _scanner->seek(pos, SEEK_SET); { @@ -303,18 +305,30 @@ std::unique_ptr ReactionAutoLoader::_loadReaction(bool query) loader.ignore_noncritical_query_features = ignore_noncritical_query_features; loader.treat_x_as_pseudoatom = treat_x_as_pseudoatom; loader.ignore_no_chiral_flag = ignore_no_chiral_flag; - if (query) + std::unique_ptr reaction; + if (is_pathway) + { + auto pwr = std::make_unique(); + loader.loadReaction(*pwr); + if (pwr->reactionsCount() == 0) // something went wrong + { + reaction = std::make_unique(); + reaction->clone(*pwr); + } + else + reaction = std::move(pwr); + } + else if (query) { - auto reaction = std::make_unique(); + reaction = std::make_unique(); loader.loadReaction(*reaction); - return reaction; } else { - auto reaction = std::make_unique(); + reaction = std::make_unique(); loader.loadReaction(*reaction); - return reaction; } + return reaction; } } return nullptr; diff --git a/core/indigo-core/reaction/src/reaction_cml_saver.cpp b/core/indigo-core/reaction/src/reaction_cml_saver.cpp index 3f34c6bac6..3af4328847 100644 --- a/core/indigo-core/reaction/src/reaction_cml_saver.cpp +++ b/core/indigo-core/reaction/src/reaction_cml_saver.cpp @@ -34,7 +34,7 @@ ReactionCmlSaver::~ReactionCmlSaver() { } -void ReactionCmlSaver::saveReaction(Reaction& rxn) +void ReactionCmlSaver::saveReaction(BaseReaction& rxn) { if (!skip_cml_tag) { @@ -61,21 +61,21 @@ void ReactionCmlSaver::saveReaction(Reaction& rxn) { _output.printf("\n"); for (i = rxn.reactantBegin(); i != rxn.reactantEnd(); i = rxn.reactantNext(i)) - molsaver.saveMolecule(rxn.getMolecule(i)); + molsaver.saveMolecule(rxn.getBaseMolecule(i).asMolecule()); _output.printf("\n"); } if (rxn.productsCount() > 0) { _output.printf("\n"); for (i = rxn.productBegin(); i != rxn.productEnd(); i = rxn.productNext(i)) - molsaver.saveMolecule(rxn.getMolecule(i)); + molsaver.saveMolecule(rxn.getBaseMolecule(i).asMolecule()); _output.printf("\n"); } if (rxn.catalystCount() > 0) { _output.printf("\n"); for (i = rxn.catalystBegin(); i != rxn.catalystEnd(); i = rxn.catalystNext(i)) - molsaver.saveMolecule(rxn.getMolecule(i)); + molsaver.saveMolecule(rxn.getBaseMolecule(i).asMolecule()); _output.printf("\n"); } _output.printf("\n"); diff --git a/core/indigo-core/reaction/src/reaction_json_loader.cpp b/core/indigo-core/reaction/src/reaction_json_loader.cpp index bfec827047..2b4a4aef9f 100644 --- a/core/indigo-core/reaction/src/reaction_json_loader.cpp +++ b/core/indigo-core/reaction/src/reaction_json_loader.cpp @@ -24,6 +24,8 @@ #include #include +#include "reaction/pathway_reaction.h" +#include "reaction/pathway_reaction_builder.h" #include "reaction/query_reaction.h" #include "reaction/reaction.h" #include "reaction/reaction_json_loader.h" @@ -34,8 +36,7 @@ using namespace rapidjson; IMPL_ERROR(ReactionJsonLoader, "reaction KET loader"); -ReactionJsonLoader::ReactionJsonLoader(Document& ket) - : _loader(ket), _molecule(kArrayType), _prxn(nullptr), _pqrxn(nullptr), ignore_noncritical_query_features(false) +ReactionJsonLoader::ReactionJsonLoader(Document& ket) : _loader(ket), _molecule(kArrayType), ignore_noncritical_query_features(false) { ignore_bad_valence = false; } @@ -52,36 +53,41 @@ void ReactionJsonLoader::loadReaction(BaseReaction& rxn) _loader.ignore_no_chiral_flag = ignore_no_chiral_flag; if (rxn.isQueryReaction()) - _pqrxn = &rxn.asQueryReaction(); - else - _prxn = &rxn.asReaction(); - - if (_prxn) - { - _pmol = &_mol; - _loader.loadMolecule(_mol, true); - } - else if (_pqrxn) { _loader.loadMolecule(_qmol, true); _pmol = &_qmol; } else - throw Error("unknown reaction type: %s", typeid(rxn).name()); + { + _pmol = &_mol; + _loader.loadMolecule(_mol, true); + } rxn.original_format = BaseMolecule::KET; rxn.meta().clone(_pmol->meta()); - _pmol->meta().resetMetaData(); - int arrow_count = rxn.meta().getMetaCount(KETReactionArrow::CID) + rxn.meta().getMetaCount(KETReactionMultitailArrow::CID); - if (arrow_count == 0) + int arrow_count = rxn.meta().getMetaCount(KETReactionArrow::CID); + int multi_count = rxn.meta().getMetaCount(KETReactionMultitailArrow::CID); + if (arrow_count == 0 && multi_count == 0) throw Error("No arrow in the reaction"); - if (arrow_count > 1) + if (arrow_count > 1 || multi_count > 0) { ReactionMultistepDetector md(*_pmol); - md.buildReaction(rxn); + switch (md.detectReaction()) + { + case ReactionMultistepDetector::ReactionType::EPathwayReaction: + md.constructPathwayReaction(static_cast(rxn)); + PathwayReactionBuilder::buildRootReaction(static_cast(rxn)); + break; + case ReactionMultistepDetector::ReactionType::EMutistepReaction: + md.constructMultipleArrowReaction(rxn); + break; + case ReactionMultistepDetector::ReactionType::ESimpleReaction: + md.constructSimpleArrowReaction(rxn); + break; + } } else parseOneArrowReaction(rxn); diff --git a/core/indigo-core/reaction/src/reaction_multistep_detector.cpp b/core/indigo-core/reaction/src/reaction_multistep_detector.cpp index e7e1977ac0..a02ca5d415 100644 --- a/core/indigo-core/reaction/src/reaction_multistep_detector.cpp +++ b/core/indigo-core/reaction/src/reaction_multistep_detector.cpp @@ -17,6 +17,7 @@ ***************************************************************************/ #include "reaction/reaction_multistep_detector.h" +#include "reaction/pathway_reaction.h" #include "reaction/reaction.h" using namespace indigo; @@ -37,27 +38,27 @@ ReactionMultistepDetector::~ReactionMultistepDetector() { } -ReactionMultistepDetector::ReactionMultistepDetector(BaseMolecule& bmol) : _bmol(bmol) +ReactionMultistepDetector::ReactionMultistepDetector(BaseMolecule& bmol) : _bmol(bmol), _moleculeCount(0) { } -void ReactionMultistepDetector::buildReaction(BaseReaction& rxn) +void ReactionMultistepDetector::createSummBlocks() { auto pair_comp_asc = [](const FLOAT_INT_PAIR& a, const FLOAT_INT_PAIR& b) { return b.first > a.first; }; auto pair_comp_des = [](const FLOAT_INT_PAIR& a, const FLOAT_INT_PAIR& b) { return b.first < a.first; }; auto pair_comp_mol_asc = [](const FLOAT_INT_PAIR& a, const FLOAT_INT_PAIR& b) { return b.second > a.second; }; std::list> s_neighbors; getSGroupAtoms(_bmol, s_neighbors); - int count = _bmol.countComponents(s_neighbors); - _reaction_components.reserve(count); + _moleculeCount = _bmol.countComponents(s_neighbors); + _reaction_components.reserve(_moleculeCount); FLOAT_INT_PAIRS mol_tops, mol_bottoms, mol_lefts, mol_rights; // collect components - for (int i = 0; i < count; ++i) + for (int i = 0; i < _moleculeCount; ++i) { Filter filter(_bmol.getDecomposition().ptr(), Filter::EQ, i); std::unique_ptr component; - if (rxn.isQueryReaction()) + if (_bmol.isQueryMolecule()) component = std::make_unique(); else component = std::make_unique(); @@ -74,9 +75,9 @@ void ReactionMultistepDetector::buildReaction(BaseReaction& rxn) _reaction_components.emplace_back(ReactionComponent::MOLECULE, bbox, i, std::move(component)); } - for (int i = 0; i < rxn.meta().getMetaCount(KETReactionPlus::CID); ++i) + for (int i = 0; i < _bmol.meta().getMetaCount(KETReactionPlus::CID); ++i) { - auto& plus = (const KETReactionPlus&)rxn.meta().getMetaObject(KETReactionPlus::CID, i); + auto& plus = (const KETReactionPlus&)_bmol.meta().getMetaObject(KETReactionPlus::CID, i); const auto& plus_pos = plus.getPos(); Rect2f bbox(plus_pos - PLUS_BBOX_SHIFT, plus_pos + PLUS_BBOX_SHIFT); _reaction_components.emplace_back(ReactionComponent::PLUS, bbox, i, std::unique_ptr(nullptr)); @@ -88,13 +89,13 @@ void ReactionMultistepDetector::buildReaction(BaseReaction& rxn) mol_rights.emplace_back(bbox.right(), index); } - for (int i = 0; i < rxn.meta().getMetaCount(KETReactionArrow::CID); ++i) + for (int i = 0; i < _bmol.meta().getMetaCount(KETReactionArrow::CID); ++i) { - auto& arrow = (const KETReactionArrow&)rxn.meta().getMetaObject(KETReactionArrow::CID, i); + auto& arrow = (const KETReactionArrow&)_bmol.meta().getMetaObject(KETReactionArrow::CID, i); int arrow_type = arrow.getArrowType(); bool reverseReactionOrder = arrow_type == KETReactionArrow::ERetrosynthetic; const Vec2f& arr_begin = !reverseReactionOrder ? arrow.getTail() : arrow.getHead(); - const Vec2f& arr_end = !reverseReactionOrder ? arrow.getTail() : arrow.getHead(); + const Vec2f& arr_end = !reverseReactionOrder ? arrow.getHead() : arrow.getTail(); Rect2f bbox(arr_begin - ARROW_BBOX_SHIFT, arr_end + ARROW_BBOX_SHIFT); _reaction_components.emplace_back(arrow_type, bbox, i, std::unique_ptr(nullptr)); _reaction_components.back().coordinates.push_back(arr_begin); @@ -106,21 +107,40 @@ void ReactionMultistepDetector::buildReaction(BaseReaction& rxn) mol_rights.emplace_back(bbox.right(), index); } + for (int i = 0; i < _bmol.meta().getMetaCount(KETReactionMultitailArrow::CID); ++i) + { + auto& multi = (const KETReactionMultitailArrow&)_bmol.meta().getMetaObject(KETReactionMultitailArrow::CID, i); + auto& tails = multi.getTails(); + Rect2f bbox(Vec2f(tails.top().x, tails.top().y), Vec2f(multi.getHead().x, multi.getSpineBegin().y)); + _reaction_components.emplace_back(ReactionComponent::ARROW_MULTITAIL, bbox, i, std::unique_ptr(nullptr)); + _reaction_components.back().coordinates.push_back(multi.getHead()); + for (auto& tail : tails) + _reaction_components.back().coordinates.push_back(tail); + _reaction_components.back().coordinates.push_back(multi.getSpineBegin()); + _reaction_components.back().coordinates.push_back(multi.getSpineEnd()); + + int index = static_cast(_reaction_components.size() - 1); + mol_tops.emplace_back(bbox.top(), index); + mol_bottoms.emplace_back(bbox.bottom(), index); + mol_lefts.emplace_back(bbox.left(), index); + mol_rights.emplace_back(bbox.right(), index); + } + // sort components std::sort(mol_tops.begin(), mol_tops.end(), pair_comp_asc); std::sort(mol_bottoms.begin(), mol_bottoms.end(), pair_comp_des); std::sort(mol_lefts.begin(), mol_lefts.end(), pair_comp_des); std::sort(mol_rights.begin(), mol_rights.end(), pair_comp_asc); - for (int i = 0; i < rxn.meta().getMetaCount(KETReactionPlus::CID); ++i) + for (int i = 0; i < _bmol.meta().getMetaCount(KETReactionPlus::CID); ++i) { - auto& plus = static_cast(rxn.meta().getMetaObject(KETReactionPlus::CID, i)); + auto& plus = static_cast(_bmol.meta().getMetaObject(KETReactionPlus::CID, i)); auto& plus_pos = plus.getPos(); std::pair plus_connection; // (component1_index, component2_index) if (findPlusNeighbours(plus_pos, mol_tops, mol_bottoms, mol_lefts, mol_rights, plus_connection)) { - _reaction_components[count + i].summ_block_idx = ReactionComponent::CONNECTED; // mark plus as connected + _reaction_components[_moleculeCount + i].summ_block_idx = ReactionComponent::CONNECTED; // mark plus as connected auto rc_connection = std::make_pair(std::ref(_reaction_components[plus_connection.first]), std::ref(_reaction_components[plus_connection.second])); // component1, component2 @@ -214,23 +234,37 @@ void ReactionMultistepDetector::buildReaction(BaseReaction& rxn) _component_summ_blocks.back().indexes.push_back(static_cast(i)); } } +} + +ReactionMultistepDetector::ReactionType ReactionMultistepDetector::detectReaction() +{ + createSummBlocks(); + bool has_multistep = detectArrows(); + bool has_multitail = detectMultitailArrows(); + return has_multitail ? ReactionType::EPathwayReaction : (has_multistep ? ReactionType ::EMutistepReaction : ReactionType::ESimpleReaction); +} - // handle arrows - for (int i = 0; i < rxn.meta().getMetaCount(KETReactionArrow::CID); ++i) +bool ReactionMultistepDetector::detectArrows() +{ + int arrow_count = _bmol.meta().getMetaCount(KETReactionArrow::CID); + if (arrow_count == 0) + return false; + for (int i = 0; i < arrow_count; ++i) { - auto& arrow = (const KETReactionArrow&)rxn.meta().getMetaObject(KETReactionArrow::CID, i); + auto& arrow = (const KETReactionArrow&)_bmol.meta().getMetaObject(KETReactionArrow::CID, i); int arrow_type = arrow.getArrowType(); bool reverseReactionOrder = arrow_type == KETReactionArrow::ERetrosynthetic; const Vec2f& arr_begin = !reverseReactionOrder ? arrow.getTail() : arrow.getHead(); const Vec2f& arr_end = !reverseReactionOrder ? arrow.getHead() : arrow.getTail(); - double min_dist_prod = -1, min_dist_reac = -1; + + float min_dist_prod = -1, min_dist_reac = -1; int idx_cs_min_prod = -1, idx_cs_min_reac = -1; for (int index_cs = 0; index_cs < static_cast(_component_summ_blocks.size()); ++index_cs) { auto& csb = _component_summ_blocks[index_cs]; if (csb.bbox.rayIntersectsRect(arr_end, arr_begin)) { - double dist = csb.bbox.pointDistance(arr_end); + float dist = csb.bbox.pointDistance(arr_end); if (min_dist_prod < 0 || dist < min_dist_prod) { min_dist_prod = dist; @@ -239,7 +273,7 @@ void ReactionMultistepDetector::buildReaction(BaseReaction& rxn) } else if (csb.bbox.rayIntersectsRect(arr_begin, arr_end)) { - double dist = csb.bbox.pointDistance(arr_begin); + float dist = csb.bbox.pointDistance(arr_begin); if (min_dist_reac < 0 || dist < min_dist_reac) { min_dist_reac = dist; @@ -248,12 +282,10 @@ void ReactionMultistepDetector::buildReaction(BaseReaction& rxn) } } - auto& rb = rxn.addReactionBlock(); - rb.arrow_index = i; - + // TODO: add upper limit if (min_dist_prod > 0 && min_dist_reac > 0) // if both ends present { - auto& rc_arrow = _reaction_components[count + rxn.meta().getMetaCount(KETReactionPlus::CID) + i]; + auto& rc_arrow = _reaction_components[_moleculeCount + _bmol.meta().getMetaCount(KETReactionPlus::CID) + i]; rc_arrow.summ_block_idx = ReactionComponent::CONNECTED; // mark arrow as connected auto& csb_min_prod = _component_summ_blocks[idx_cs_min_prod]; if (csb_min_prod.role == BaseReaction::UNDEFINED) @@ -267,17 +299,120 @@ void ReactionMultistepDetector::buildReaction(BaseReaction& rxn) else if (csb_min_reac.role == BaseReaction::PRODUCT) csb_min_reac.role = BaseReaction::INTERMEDIATE; - // idx_cs_min_reac -> idx_cs_min_prod + // idx_cs_min_reac <-> idx_cs_min_prod csb_min_reac.arrows_to.push_back(idx_cs_min_prod); - for (auto ri : csb_min_reac.indexes) - rb.reactants.push(_reaction_components[ri].index); - for (auto pi : csb_min_prod.indexes) - rb.products.push(_reaction_components[pi].index); + csb_min_prod.arrows_from.push_back(idx_cs_min_reac); } } + return arrow_count > 1; +} + +bool ReactionMultistepDetector::detectMultitailArrows() +{ + int pathway_count = _bmol.meta().getMetaCount(KETReactionMultitailArrow::CID); + + if (pathway_count == 0) + return false; + + bool bad_pathway = false; - // _component_summ_blocks, _reaction_components - result - constructMultipleArrowReaction(rxn); + for (int i = 0; i < pathway_count; ++i) + { + auto& multi = (const KETReactionMultitailArrow&)_bmol.meta().getMetaObject(KETReactionMultitailArrow::CID, i); + float min_dist_prod = -1; + int idx_cs_min_prod = -1; + auto arr_begin = multi.getHead(); + auto arr_end = arr_begin; + arr_end.x = multi.getSpineBegin().x; + auto& tails = multi.getTails(); + std::vector> min_dist_reactants; + min_dist_reactants.resize(tails.size(), std::make_pair(-1.0f, -1)); + + for (int index_cs = 0; index_cs < static_cast(_component_summ_blocks.size()); ++index_cs) + { + auto& csb = _component_summ_blocks[index_cs]; + if (csb.bbox.rayIntersectsRect(arr_begin, arr_end)) + { + float dist = csb.bbox.pointDistance(arr_end); + if (min_dist_prod < 0 || dist < min_dist_prod) + { + min_dist_prod = dist; + idx_cs_min_prod = index_cs; + } + } + + for (int j = 0; j < tails.size(); ++j) + { + auto arr_begin = tails[j]; + auto arr_end = arr_begin; + arr_begin.x = multi.getSpineBegin().x; + + if (csb.bbox.rayIntersectsRect(arr_end, arr_begin)) + { + auto dist = csb.bbox.pointDistance(arr_begin); + if (min_dist_reactants[j].first < 0 || dist < min_dist_reactants[j].first) + { + min_dist_reactants[j].first = dist; + min_dist_reactants[j].second = index_cs; + } + } + } + } + + for (auto& [min_dist, idx_cs_min_rc] : min_dist_reactants) + { + if (min_dist < 0) + bad_pathway = true; + } + + // TODO: add upper limit + if (idx_cs_min_prod < 0) + bad_pathway = true; + else + { + auto& csb_min_prod = _component_summ_blocks[idx_cs_min_prod]; + auto& rc_arrow = + _reaction_components[_moleculeCount + _bmol.meta().getMetaCount(KETReactionPlus::CID) + _bmol.meta().getMetaCount(KETReactionArrow::CID) + i]; + rc_arrow.summ_block_idx = ReactionComponent::CONNECTED; // mark arrow as connected + if (csb_min_prod.role == BaseReaction::UNDEFINED) + csb_min_prod.role = BaseReaction::PRODUCT; + else if (csb_min_prod.role == BaseReaction::REACTANT) + csb_min_prod.role = BaseReaction::INTERMEDIATE; + } + + PathwayComponent pwc; + + for (int j = 0; j < (int)min_dist_reactants.size(); ++j) + { + auto& reac = min_dist_reactants[j]; + if (reac.first > 0) + { + auto& csb_min_reac = _component_summ_blocks[reac.second]; + if (csb_min_reac.role == BaseReaction::UNDEFINED) + csb_min_reac.role = BaseReaction::REACTANT; + else if (csb_min_reac.role == BaseReaction::PRODUCT) + csb_min_reac.role = BaseReaction::INTERMEDIATE; + + // idx_cs_min_reac <-> idx_cs_min_prod + + if (idx_cs_min_prod >= 0) + { + csb_min_reac.arrows_to.push_back(idx_cs_min_prod); + _component_summ_blocks[idx_cs_min_prod].arrows_from.push_back(reac.second); + } + } + } + } + for (auto& csb : _component_summ_blocks) + { + // no undefined components allowed + if (csb.role == BaseReaction::UNDEFINED) + { + csb.role = BaseReaction::REACTANT; + bad_pathway = true; + } + } + return !bad_pathway; } bool ReactionMultistepDetector::findPlusNeighbours(const Vec2f& plus_pos, const FLOAT_INT_PAIRS& mol_tops, const FLOAT_INT_PAIRS& mol_bottoms, @@ -356,8 +491,8 @@ bool ReactionMultistepDetector::findPlusNeighbours(const Vec2f& plus_pos, const if (rights_row_it != rights_row.end() && lefts_row_it != lefts_row.end()) { min_distance_h = std::min(std::fabs(rights_row_it->first - plus_pos_x.first), std::fabs(plus_pos_x.first - lefts_row_it->first)); - connection.first = lefts_row_it->second; - connection.second = rights_row_it->second; + connection.second = lefts_row_it->second; + connection.first = rights_row_it->second; result = _reaction_components[connection.first].component_type == ReactionComponent::MOLECULE && _reaction_components[connection.second].component_type == ReactionComponent::MOLECULE; } @@ -376,33 +511,206 @@ bool ReactionMultistepDetector::findPlusNeighbours(const Vec2f& plus_pos, const return result; } +void ReactionMultistepDetector::constructPathwayReaction(PathwayReaction& rxn) +{ + std::unordered_map rc_to_molecule; + std::vector> csb_to_reaction; + std::vector, std::vector>> csb_reactions; + std::vector> csb_to_reactant_indexes; + + for (int i = 0; i < (int)_component_summ_blocks.size(); ++i) + { + csb_to_reaction.emplace_back(); + auto& csb = _component_summ_blocks[i]; + if (csb.role == BaseReaction::PRODUCT || csb.role == BaseReaction::INTERMEDIATE) + { + // one product = one reaction, one reaction node + // map reactionNode <> csb_reaction + auto& rcidx_to_reactant = csb_to_reactant_indexes.emplace_back(); + rxn.addReactionNode(); + csb_to_reaction.back().emplace((int)csb_reactions.size()); + csb_reactions.emplace_back().second.push_back(i); // add csb as product + + auto [sri, sr] = rxn.addReaction(); + // add products + for (auto rc_idx : csb.indexes) + { + auto& rc = _reaction_components[rc_idx]; + auto it_copied = rc_to_molecule.find(rc_idx); + int mol_idx = -1; + if (it_copied != rc_to_molecule.end()) + mol_idx = it_copied->second; + else + { + mol_idx = rxn.addMolecule(*rc.molecule); + rc_to_molecule.emplace(rc_idx, mol_idx); + } + sr.productIndexes.push(mol_idx); + } + + // add reactants + for (auto reactant_idx : csb.arrows_from) + { + csb_reactions.back().first.push_back(reactant_idx); + auto& csb_reactant = _component_summ_blocks[reactant_idx]; + for (auto rc_idx : csb_reactant.indexes) + { + auto& rc = _reaction_components[rc_idx]; + auto it_copied = rc_to_molecule.find(rc_idx); + int mol_idx = -1; + if (it_copied != rc_to_molecule.end()) + mol_idx = it_copied->second; + else + { + mol_idx = rxn.addMolecule(*rc.molecule); + rc_to_molecule.emplace(rc_idx, mol_idx); + } + rcidx_to_reactant.emplace(rc_idx, (int)sr.reactantIndexes.size()); + sr.reactantIndexes.push(mol_idx); + } + } + } + } + + for (int i = 0; i < (int)csb_reactions.size(); ++i) + { + auto& csb_reaction = csb_reactions[i]; + auto& rn = rxn.getReactionNode(i); + // normally we have only one summblock here + for (auto csb_product_idx : csb_reaction.second) + { + auto& csb_product = _component_summ_blocks[csb_product_idx]; + for (auto reactant_csb_idx : csb_product.arrows_to) + { + // look up for reactions where the reactant_csb_idx summ block presents + auto successors = csb_to_reaction[reactant_csb_idx]; + // remove the current reaction + successors.erase(i); // remove the current reaction + // add successor reactions + for (auto reac_idx : successors) + rn.successorReactionIndexes.push(reac_idx); + } + } + + for (auto csb_reactant_idx : csb_reaction.first) + { + auto& csb_reactant = _component_summ_blocks[csb_reactant_idx]; + auto precursors = csb_to_reaction[csb_reactant_idx]; + for (auto reac_idx : precursors) + rn.precursorReactionIndexes.push(reac_idx); + + if (csb_reactant.arrows_from.size()) + { + auto& rcidx_to_reactant = csb_to_reactant_indexes[i]; + for (auto ridx : csb_reactant.indexes) + { + auto rcidx_it = rcidx_to_reactant.find(ridx); + if (rcidx_it != rcidx_to_reactant.end()) + rn.connectedReactants.insert(rcidx_it->second); + } + } + } + } +} + void ReactionMultistepDetector::constructMultipleArrowReaction(BaseReaction& rxn) { // _reaction_components -> allMolecules // _component_summ_blocks -> - for (auto& rc : _reaction_components) + std::unordered_map copied_components; + for (int i = 0; i < (int)_component_summ_blocks.size(); ++i) { - if (rc.component_type == ReactionComponent::MOLECULE) + auto& csb = _component_summ_blocks[i]; + for (auto idx : csb.indexes) { - auto& csb = _component_summ_blocks[rc.summ_block_idx]; - switch (csb.role) + auto& rc = _reaction_components[idx]; + if (!copied_components.count(idx)) + switch (csb.role) + { + case BaseReaction::INTERMEDIATE: + copied_components.emplace(idx, rxn.addIntermediateCopy(*rc.molecule, 0, 0)); + break; + case BaseReaction::REACTANT: + copied_components.emplace(idx, rxn.addReactantCopy(*rc.molecule, 0, 0)); + break; + case BaseReaction::PRODUCT: + copied_components.emplace(idx, rxn.addProductCopy(*rc.molecule, 0, 0)); + break; + case BaseReaction::UNDEFINED: + copied_components.emplace(idx, rxn.addUndefinedCopy(*rc.molecule, 0, 0)); + break; + default: + break; + } + } + } + + for (int i = 0; i < (int)_component_summ_blocks.size(); ++i) + { + auto& csb = _component_summ_blocks[i]; + for (auto csb_index : csb.arrows_to) + { + auto& rb = rxn.addReactionBlock(); + // add reactants + for (auto ridx : csb.indexes) { - case BaseReaction::REACTANT: - rxn.addReactantCopy(*rc.molecule, 0, 0); - break; - case BaseReaction::PRODUCT: + auto r_it = copied_components.find(ridx); + if (r_it != copied_components.end()) + rb.reactants.push(r_it->second); + } + + // add products + auto& csb_product = _component_summ_blocks[csb_index]; + for (auto pidx : csb_product.indexes) + { + auto p_it = copied_components.find(pidx); + if (p_it != copied_components.end()) + rb.products.push(p_it->second); + } + } + } +} + +void indigo::ReactionMultistepDetector::constructSimpleArrowReaction(BaseReaction& rxn) +{ + for (auto& csb : _component_summ_blocks) + { + switch (csb.role) + { + case BaseReaction::PRODUCT: { + for (auto idx : csb.indexes) + { + auto& rc = _reaction_components[idx]; rxn.addProductCopy(*rc.molecule, 0, 0); - break; - case BaseReaction::INTERMEDIATE: + } + } + break; + case BaseReaction::REACTANT: { + for (auto idx : csb.indexes) + { + auto& rc = _reaction_components[idx]; + rxn.addReactantCopy(*rc.molecule, 0, 0); + } + } + break; + case BaseReaction::INTERMEDIATE: { + for (auto idx : csb.indexes) + { + auto& rc = _reaction_components[idx]; rxn.addIntermediateCopy(*rc.molecule, 0, 0); - break; - case BaseReaction::UNDEFINED: + } + } + break; + case BaseReaction::UNDEFINED: { + for (auto idx : csb.indexes) + { + auto& rc = _reaction_components[idx]; rxn.addUndefinedCopy(*rc.molecule, 0, 0); - break; - case BaseReaction::CATALYST: - rxn.addCatalystCopy(*rc.molecule, 0, 0); - break; } } + break; + default: + break; + } } } diff --git a/core/render2d/src/render_item_aux.cpp b/core/render2d/src/render_item_aux.cpp index b64cb27b7f..05e6263d9e 100644 --- a/core/render2d/src/render_item_aux.cpp +++ b/core/render2d/src/render_item_aux.cpp @@ -263,6 +263,7 @@ void RenderItemAuxiliary::_drawArrow(const KETReactionArrow& ar) void RenderItemAuxiliary::_drawArrow(const KETReactionMultitailArrow& ar) { + _rc.setLineWidth(_settings.bondLineWidth); const float radius = KETReactionMultitailArrow::TAIL_ARC_RADIUS; // In order to avoid a slight gap, that becomes apparent with the highest zoom. const float gap = .01f; diff --git a/core/render2d/src/render_item_reaction.cpp b/core/render2d/src/render_item_reaction.cpp index f75ef9f0b8..eb0dc7cec4 100644 --- a/core/render2d/src/render_item_reaction.cpp +++ b/core/render2d/src/render_item_reaction.cpp @@ -19,6 +19,7 @@ #include "render_item_reaction.h" #include "base_cpp/output.h" #include "layout/metalayout.h" +#include "reaction/pathway_reaction.h" #include "reaction/query_reaction.h" #include "reaction/reaction.h" #include "render_context.h" @@ -41,11 +42,12 @@ void RenderItemReaction::init() throw Error("reaction not set"); int arrows_count = rxn->meta().getMetaCount(KETReactionArrow::CID); - if (rxn->begin() >= rxn->end() && !arrows_count) // no reactants or products + int multi_count = rxn->meta().getMetaCount(KETReactionMultitailArrow::CID); + if (rxn->begin() >= rxn->end() && !arrows_count && !multi_count) // no reactants or products return; int simple_count = rxn->meta().getMetaCount(KETSimpleObject::CID) + rxn->meta().getMetaCount(KETTextObject::CID); - if (arrows_count || simple_count) + if (arrows_count || simple_count || multi_count) { initWithMeta(); } @@ -113,14 +115,29 @@ void RenderItemReaction::initWithMeta() max = aux.max; items.push(_meta); - for (int i = rxn->begin(); i < rxn->end(); i = rxn->next(i)) + if (rxn->isPathwayReaction()) { - auto mol = _addFragment(i); - items.push(mol); - auto& frag = _factory.getItemFragment(mol); - frag.min.set(0, 0); - frag.max.set(0, 0); + auto& pwr = rxn->asPathwayReaction(); + for (int i = 0; i < pwr.getMoleculeCount(); ++i) + { + int mol = _factory.addItemFragment(); + _factory.getItemFragment(mol).mol = &pwr.getMolecule(i); + _factory.getItemFragment(mol).init(); + items.push(mol); + auto& frag = _factory.getItemFragment(mol); + frag.min.set(0, 0); + frag.max.set(0, 0); + } } + else + for (int i = rxn->begin(); i < rxn->end(); i = rxn->next(i)) + { + auto mol = _addFragment(i); + items.push(mol); + auto& frag = _factory.getItemFragment(mol); + frag.min.set(0, 0); + frag.max.set(0, 0); + } } int RenderItemReaction::_addPlus() diff --git a/utils/indigo-depict/main.c b/utils/indigo-depict/main.c index c2cd27f850..74f0c58b84 100644 --- a/utils/indigo-depict/main.c +++ b/utils/indigo-depict/main.c @@ -1088,6 +1088,19 @@ int main(int argc, char* argv[]) return -1; } } + else if (p.out_ext == OEXT_RDR) + { + writer = indigoWriteFile(p.outfile); + indigoRdfHeader(writer); + auto it_id = indigoIterateReactions(obj); + while (indigoHasNext(it_id)) + { + const auto robj = indigoNext(it_id); + const auto rxn_id = indigoClone(robj); + auto rc = indigoRdfAppend(writer, rxn_id); + } + indigoFree(writer); + } else { indigoSaveJsonToFile(obj, p.outfile); diff --git a/utils/indigo-service/backend/service/tests/api/indigo_test.py b/utils/indigo-service/backend/service/tests/api/indigo_test.py index db995043a8..b4d6da48cd 100644 --- a/utils/indigo-service/backend/service/tests/api/indigo_test.py +++ b/utils/indigo-service/backend/service/tests/api/indigo_test.py @@ -477,7 +477,7 @@ def test_headers_wrong(self): formats = "chemical/x-mdl-rxnfile, chemical/x-mdl-molfile, chemical/x-indigo-ket, \ chemical/x-daylight-smiles, chemical/x-cml, chemical/x-inchi, chemical/x-inchi-key, \ chemical/x-iupac, chemical/x-daylight-smarts, chemical/x-inchi-aux, chemical/x-chemaxon-cxsmiles, \ -chemical/x-cdxml, chemical/x-cdx, chemical/x-sdf, chemical/x-peptide-sequence, \ +chemical/x-cdxml, chemical/x-cdx, chemical/x-sdf, chemical/x-rdf, chemical/x-peptide-sequence, \ chemical/x-rna-sequence, chemical/x-dna-sequence, chemical/x-sequence, chemical/x-peptide-fasta, \ chemical/x-rna-fasta, chemical/x-dna-fasta, chemical/x-fasta, chemical/x-idt, chemical/x-helm." expected_text = ( diff --git a/utils/indigo-service/backend/service/v2/indigo_api.py b/utils/indigo-service/backend/service/v2/indigo_api.py index 477d11a586..c14f8953f2 100644 --- a/utils/indigo-service/backend/service/v2/indigo_api.py +++ b/utils/indigo-service/backend/service/v2/indigo_api.py @@ -456,6 +456,14 @@ def save_moldata( sdfSaver.append(frag.clone()) sdfSaver.close() return buffer.toString() + elif output_format == "chemical/x-rdf": + buffer = indigo.writeBuffer() + rdfSaver = indigo.createSaver(buffer, "rdf") + buffer.rdfHeader() + for reac in md.struct.iterateReactions(): + rdfSaver.append(reac.clone()) + rdfSaver.close() + return buffer.toString() raise HttpException("Format %s is not supported" % output_format, 400) diff --git a/utils/indigo-service/backend/service/v2/validation.py b/utils/indigo-service/backend/service/v2/validation.py index 05ded7b01b..6f88115f89 100644 --- a/utils/indigo-service/backend/service/v2/validation.py +++ b/utils/indigo-service/backend/service/v2/validation.py @@ -24,6 +24,7 @@ class InputFormatSchema(Schema): "chemical/x-cdxml", "chemical/x-cdx", "chemical/x-sdf", + "chemical/x-rdf", "chemical/x-peptide-sequence", "chemical/x-rna-sequence", "chemical/x-dna-sequence",