Clazz.declarePackage ("JS"); Clazz.load (["JS.CIPData"], "JS.CIPDataSmiles", ["JU.Lst", "$.Measure", "JU.BSUtil"], function () { c$ = Clazz.decorateAsClass (function () { this.smiles = null; this.nodes = null; Clazz.instantialize (this, arguments); }, JS, "CIPDataSmiles", JS.CIPData); Clazz.prepareFields (c$, function () { this.nodes = new Array (6); }); Clazz.overrideMethod (c$, "isSmiles", function () { return true; }); Clazz.makeConstructor (c$, function () { Clazz.superConstructor (this, JS.CIPDataSmiles, []); }); Clazz.defineMethod (c$, "setAtomsForSmiles", function (vwr, smiles) { this.vwr = vwr; this.smiles = smiles; this.atoms = vwr.getSmilesAtoms (smiles); this.bsAtoms = JU.BSUtil.newBitSet2 (0, this.atoms.length); this.bsMolecule = this.bsAtoms.clone (); this.init (); return this; }, "JV.Viewer,~S"); Clazz.overrideMethod (c$, "getList", function (smarts) { return this.vwr.getSubstructureSetArrayForNodes (smarts, this.atoms, 2); }, "~S"); Clazz.overrideMethod (c$, "match", function (smarts) { return this.vwr.getSmartsMatchForNodes (smarts, this.atoms); }, "~S"); Clazz.overrideMethod (c$, "getBondOrder", function (bond) { return (bond).getRealCovalentOrder (); }, "JU.SimpleEdge"); Clazz.overrideMethod (c$, "isCis", function (a, b, c, d) { var stereo1 = this.getStereoEdge (b.atom, a.atom); var stereo2 = this.getStereoEdge (c.atom, d.atom); return (stereo1 == 0 || stereo2 == 0 ? 0 : stereo1 != stereo2 ? 14 : 13); }, "JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom"); Clazz.defineMethod (c$, "getStereoEdge", function (atom, winner) { var edges = atom.getEdges (); var order = 0; for (var i = edges.length; --i >= 0; ) { var edge = edges[i]; switch (order = edge.getCovalentOrder ()) { case 1025: return (edge.getOtherNode (atom) === winner) == (edge.getAtom1 () === atom) ? 1041 : order; case 1041: return (edges[i].getOtherNode (atom) === winner) == (edge.getAtom1 () === atom) ? 1025 : order; } } return 0; }, "JU.SimpleNode,JU.SimpleNode"); Clazz.overrideMethod (c$, "isPositiveTorsion", function (a, b, c, d) { var center = this.findCumulativeCenter (b, c); if (center == null) return 0; var jn = center.stereo.getAlleneAtoms (center, b.atom); if (jn == null) return 0; center.stereo.setTopoCoordinates (center, null, null, jn); var angle = JU.Measure.computeTorsion (jn[0].getXYZ (), jn[1].getXYZ (), jn[2].getXYZ (), jn[3].getXYZ (), true); return ((angle > 0) == ((a.atom.getIndex () == jn[0].getIndex ()) && (d.atom.getIndex () == jn[3].getIndex ()) || (a.atom.getIndex () == jn[1].getIndex ()) && (d.atom.getIndex () == jn[2].getIndex ())) ? 18 : 17); }, "JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom"); Clazz.defineMethod (c$, "findCumulativeCenter", function (a, a2) { var center = a.atom; var c = null; var b = null; while (center != null && center !== a2.atom) { var edges = center.getEdges (); for (var i = edges.length; --i >= 0; ) { if (edges[i].getCovalentOrder () == 2 && (c = edges[i].getOtherNode (center)) !== b) { var sa = c; if (sa.stereo != null) { return sa; }}} b = center; center = c; } return null; }, "JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom"); Clazz.overrideMethod (c$, "setCoord", function (atom, atoms) { var a = atom; if (a.stereo == null) return false; var edges = a.getEdges (); for (var i = edges.length; --i >= 0; ) this.nodes[i] = edges[i].getOtherNode (a); a.stereo.setTopoCoordinates (a, null, null, this.nodes); return true; }, "JU.SimpleNode,~A"); Clazz.defineMethod (c$, "getSmilesChiralityArray", function () { var chirality = new JU.Lst (); for (var i = 0; i < this.atoms.length; i++) { var a = this.atoms[i]; var pt = a.getPatternIndex (); if (pt >= 0) { var c = a.getCIPChirality (false); chirality.addLast (c); }} return chirality.toArray ( new Array (chirality.size ())); }); });