UNPKG

biojs-vis-pdbviewer

Version:

A BioJS 2.0 component to view protein structures

351 lines (348 loc) 10.8 kB
Clazz.declarePackage ("JM"); Clazz.load (["java.lang.Short", "JV.JC"], "JM.Group", ["java.util.Hashtable", "JU.BS", "$.Quat", "J.c.STR", "JU.BSUtil", "$.Escape", "$.Logger"], function () { c$ = Clazz.decorateAsClass (function () { this.groupIndex = 0; this.group1 = '\0'; this.chain = null; this.firstAtomIndex = -1; this.leadAtomIndex = -1; this.lastAtomIndex = 0; this.seqcode = 0; this.groupID = 0; this.$isProtein = false; this.selectedIndex = 0; this.shapeVisibilityFlags = 0; this.bsAdded = null; Clazz.instantialize (this, arguments); }, JM, "Group"); Clazz.defineMethod (c$, "getGroupIndex", function () { return this.groupIndex; }); Clazz.defineMethod (c$, "setGroupIndex", function (groupIndex) { this.groupIndex = groupIndex; }, "~N"); Clazz.makeConstructor (c$, function () { }); Clazz.defineMethod (c$, "setGroup", function (chain, group3, seqcode, firstAtomIndex, lastAtomIndex) { this.chain = chain; this.seqcode = seqcode; if (group3 == null) group3 = ""; this.groupID = JV.JC.getGroupIdFor (group3); this.$isProtein = (this.groupID >= 1 && this.groupID < 24); this.firstAtomIndex = firstAtomIndex; this.lastAtomIndex = lastAtomIndex; return this; }, "JM.Chain,~S,~N,~N,~N"); Clazz.defineMethod (c$, "setModelSet", function (modelSet) { this.chain.model.ms = modelSet; }, "JM.ModelSet"); Clazz.defineMethod (c$, "setShapeVisibility", function (visFlag, isVisible) { if (isVisible) { this.shapeVisibilityFlags |= visFlag; } else { this.shapeVisibilityFlags &= ~visFlag; }}, "~N,~B"); Clazz.defineMethod (c$, "getGroup3", function () { return JV.JC.group3Names[this.groupID]; }); Clazz.defineMethod (c$, "getGroup1", function () { return (this.groupID < JV.JC.predefinedGroup1Names.length ? JV.JC.predefinedGroup1Names[this.groupID] : this.group1.charCodeAt (0) > 1 ? this.group1 : this.group1.charCodeAt (0) == 1 ? '?' : (this.group1 = this.getGroup1b ())); }); Clazz.defineMethod (c$, "getGroup1b", function () { return '?'; }); Clazz.defineMethod (c$, "getGroupID", function () { return this.groupID; }); Clazz.defineMethod (c$, "getChainID", function () { return this.chain.chainID; }); Clazz.defineMethod (c$, "getBioPolymerLength", function () { return 0; }); Clazz.defineMethod (c$, "getMonomerIndex", function () { return -1; }); Clazz.defineMethod (c$, "getGroups", function () { return null; }); Clazz.defineMethod (c$, "getStructure", function () { return null; }); Clazz.defineMethod (c$, "getStrucNo", function () { return 0; }); Clazz.defineMethod (c$, "getProteinStructureType", function () { return J.c.STR.NOT; }); Clazz.defineMethod (c$, "getProteinStructureSubType", function () { return this.getProteinStructureType (); }); Clazz.defineMethod (c$, "setProteinStructureType", function (type, monomerIndexCurrent) { return -1; }, "J.c.STR,~N"); Clazz.defineMethod (c$, "isProtein", function () { return this.$isProtein; }); Clazz.defineMethod (c$, "isNucleic", function () { return (this.groupID >= 24 && this.groupID < 42); }); Clazz.defineMethod (c$, "isDna", function () { return false; }); Clazz.defineMethod (c$, "isRna", function () { return false; }); Clazz.defineMethod (c$, "isPurine", function () { return false; }); Clazz.defineMethod (c$, "isPyrimidine", function () { return false; }); Clazz.defineMethod (c$, "isCarbohydrate", function () { return false; }); Clazz.defineMethod (c$, "getResno", function () { return (this.seqcode == -2147483648 ? 0 : this.seqcode >> 8); }); c$.getSeqNumberFor = Clazz.defineMethod (c$, "getSeqNumberFor", function (seqcode) { return (JM.Group.haveSequenceNumber (seqcode) ? seqcode >> 8 : 2147483647); }, "~N"); c$.haveSequenceNumber = Clazz.defineMethod (c$, "haveSequenceNumber", function (seqcode) { return ((seqcode & 128) != 0); }, "~N"); Clazz.defineMethod (c$, "getSeqcodeString", function () { return JM.Group.getSeqcodeStringFor (this.seqcode); }); c$.getSeqcodeFor = Clazz.defineMethod (c$, "getSeqcodeFor", function (seqNo, insCode) { if (seqNo == -2147483648) return seqNo; if (!((insCode >= 'A' && insCode <= 'Z') || (insCode >= 'a' && insCode <= 'z') || (insCode >= '0' && insCode <= '9') || insCode == '?' || insCode == '*')) { if (insCode != ' ' && insCode != '\0') JU.Logger.warn ("unrecognized insertionCode:" + insCode); insCode = '\0'; }return ((seqNo == 2147483647 ? 0 : (seqNo << 8) | 128)) + insCode.charCodeAt (0); }, "~N,~S"); c$.getSeqcodeStringFor = Clazz.defineMethod (c$, "getSeqcodeStringFor", function (seqcode) { if (seqcode == -2147483648) return null; return (seqcode & 127) == 0 ? "" + (seqcode >> 8) : "" + (seqcode >> 8) + '^' + String.fromCharCode (seqcode & 127); }, "~N"); Clazz.defineMethod (c$, "getInsertionCode", function () { if (this.seqcode == -2147483648) return '\0'; return String.fromCharCode (this.seqcode & 127); }); c$.getInsertionCodeFor = Clazz.defineMethod (c$, "getInsertionCodeFor", function (seqcode) { return (seqcode & 127); }, "~N"); c$.getInsertionCodeChar = Clazz.defineMethod (c$, "getInsertionCodeChar", function (seqcode) { return (seqcode == -2147483648 ? '\0' : String.fromCharCode (seqcode & 127)); }, "~N"); Clazz.defineMethod (c$, "isAdded", function (atomIndex) { return this.bsAdded != null && this.bsAdded.get (atomIndex); }, "~N"); Clazz.defineMethod (c$, "addAtoms", function (atomIndex) { if (this.bsAdded == null) this.bsAdded = new JU.BS (); this.bsAdded.set (atomIndex); }, "~N"); Clazz.defineMethod (c$, "selectAtoms", function (bs) { bs.setBits (this.firstAtomIndex, this.lastAtomIndex + 1); if (this.bsAdded != null) bs.or (this.bsAdded); return this.lastAtomIndex; }, "JU.BS"); Clazz.defineMethod (c$, "isSelected", function (bs) { var pt = bs.nextSetBit (this.firstAtomIndex); return (pt >= 0 && pt <= this.lastAtomIndex || this.bsAdded != null && this.bsAdded.intersects (bs)); }, "JU.BS"); Clazz.defineMethod (c$, "isHetero", function () { return this.chain.getAtom (this.firstAtomIndex).isHetero (); }); Clazz.overrideMethod (c$, "toString", function () { return "[" + this.getGroup3 () + "-" + this.getSeqcodeString () + "]"; }); Clazz.defineMethod (c$, "scaleToScreen", function (Z, mar) { return this.chain.model.ms.vwr.tm.scaleToScreen (Z, mar); }, "~N,~N"); Clazz.defineMethod (c$, "isCursorOnTopOf", function (atom, x, y, radius, champ) { return this.chain.model.ms.isCursorOnTopOf (atom, x, y, radius, champ); }, "JM.Atom,~N,~N,~N,JM.Atom"); Clazz.defineMethod (c$, "isAtomHidden", function (atomIndex) { return this.chain.model.ms.isAtomHidden (atomIndex); }, "~N"); Clazz.defineMethod (c$, "getModel", function () { return this.chain.model; }); Clazz.defineMethod (c$, "getModelIndex", function () { return this.chain.model.modelIndex; }); Clazz.defineMethod (c$, "getSelectedMonomerCount", function () { return 0; }); Clazz.defineMethod (c$, "getSelectedMonomerIndex", function () { return -1; }); Clazz.defineMethod (c$, "getSelectedGroupIndex", function () { return this.selectedIndex; }); Clazz.defineMethod (c$, "isLeadAtom", function (atomIndex) { return false; }, "~N"); Clazz.defineMethod (c$, "getLeadAtomOr", function (atom) { var a = this.getLeadAtom (); return (a == null ? atom : a); }, "JM.Atom"); Clazz.defineMethod (c$, "getLeadAtom", function () { return null; }); Clazz.defineMethod (c$, "getQuaternion", function (qType) { return null; }, "~S"); Clazz.defineMethod (c$, "getQuaternionFrame", function (atoms) { if (this.lastAtomIndex - this.firstAtomIndex < 3) return null; var pt = this.firstAtomIndex; return JU.Quat.getQuaternionFrame (atoms[pt], atoms[++pt], atoms[++pt]); }, "~A"); Clazz.defineMethod (c$, "setStrucNo", function (i) { }, "~N"); Clazz.defineMethod (c$, "getHelixData", function (tokType, qType, mStep) { return JU.Escape.escapeHelical (null, tokType, null, null, null); }, "~N,~S,~N"); Clazz.defineMethod (c$, "isWithinStructure", function (type) { return false; }, "J.c.STR"); Clazz.defineMethod (c$, "getProteinStructureTag", function () { return null; }); Clazz.defineMethod (c$, "getStructureId", function () { return ""; }); Clazz.defineMethod (c$, "getBioPolymerIndexInModel", function () { return -1; }); Clazz.defineMethod (c$, "isCrossLinked", function (g) { return false; }, "JM.Group"); Clazz.defineMethod (c$, "getCrossLinkLead", function (vReturn) { return false; }, "JU.Lst"); Clazz.defineMethod (c$, "isConnectedPrevious", function () { return false; }); Clazz.defineMethod (c$, "getNitrogenAtom", function () { return null; }); Clazz.defineMethod (c$, "getCarbonylOxygenAtom", function () { return null; }); Clazz.defineMethod (c$, "fixIndices", function (atomsDeleted, bsDeleted) { this.firstAtomIndex -= atomsDeleted; this.leadAtomIndex -= atomsDeleted; this.lastAtomIndex -= atomsDeleted; if (this.bsAdded != null) JU.BSUtil.deleteBits (this.bsAdded, bsDeleted); }, "~N,JU.BS"); Clazz.defineMethod (c$, "getGroupInfo", function (igroup, ptTemp) { var infoGroup = new java.util.Hashtable (); infoGroup.put ("groupIndex", Integer.$valueOf (igroup)); infoGroup.put ("groupID", Short.$valueOf (this.groupID)); var s = this.getSeqcodeString (); if (s != null) infoGroup.put ("seqCode", s); infoGroup.put ("_apt1", Integer.$valueOf (this.firstAtomIndex)); infoGroup.put ("_apt2", Integer.$valueOf (this.lastAtomIndex)); if (this.bsAdded != null) infoGroup.put ("addedAtoms", this.bsAdded); infoGroup.put ("atomInfo1", this.chain.model.ms.getAtomInfo (this.firstAtomIndex, null, ptTemp)); infoGroup.put ("atomInfo2", this.chain.model.ms.getAtomInfo (this.lastAtomIndex, null, ptTemp)); infoGroup.put ("visibilityFlags", Integer.$valueOf (this.shapeVisibilityFlags)); return infoGroup; }, "~N,JU.P3"); Clazz.defineMethod (c$, "getMinZ", function (atoms, minZ) { minZ[0] = 2147483647; for (var i = this.firstAtomIndex; i <= this.lastAtomIndex; i++) this.checkMinZ (atoms[i], minZ); if (this.bsAdded != null) for (var i = this.bsAdded.nextSetBit (0); i >= 0; i = this.bsAdded.nextSetBit (i + 1)) this.checkMinZ (atoms[i], minZ); }, "~A,~A"); Clazz.defineMethod (c$, "checkMinZ", function (atom, minZ) { var z = atom.sZ - Clazz.doubleToInt (atom.sD / 2) - 2; if (z < minZ[0]) minZ[0] = Math.max (1, z); }, "JM.Atom,~A"); Clazz.defineMethod (c$, "getGroupParameter", function (tok) { return NaN; }, "~N"); Clazz.defineMethod (c$, "getAtomIndex", function (name, offset) { return -1; }, "~S,~N"); Clazz.defineMethod (c$, "getBSSideChain", function () { return new JU.BS (); }); Clazz.defineStatics (c$, "SEQUENCE_NUMBER_FLAG", 0x80, "INSERTION_CODE_MASK", 0x7F, "SEQUENCE_NUMBER_SHIFT", 8); });