From: Miguel <mig...@us...> - 2004-06-07 22:48:22
|
Update of /cvsroot/jmol/Jmol/src/org/openscience/jmol/viewer/datamodel In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2458/src/org/openscience/jmol/viewer/datamodel Modified Files: AlphaMonomer.java AminoMonomer.java Atom.java Group.java Monomer.java Mps.java MpsRenderer.java NucleicMonomer.java Polymer.java RocketsRenderer.java Log Message: added polymerLength as an atom attribute + all Monomers are now part of a Polymer ... perhaps of length 1 Index: AlphaMonomer.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/openscience/jmol/viewer/datamodel/AlphaMonomer.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- AlphaMonomer.java 6 Jun 2004 07:56:17 -0000 1.11 +++ AlphaMonomer.java 7 Jun 2004 22:48:10 -0000 1.12 @@ -86,6 +86,14 @@ : null); } + Atom getInitiatorAtom() { + return getLeadAtom(); + } + + Atom getTerminatorAtom() { + return getLeadAtom(); + } + void findNearestAtomIndex(int x, int y, Closest closest, short madBegin, short madEnd) { } Index: AminoMonomer.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/openscience/jmol/viewer/datamodel/AminoMonomer.java,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- AminoMonomer.java 6 Jun 2004 10:16:03 -0000 1.14 +++ AminoMonomer.java 7 Jun 2004 22:48:10 -0000 1.15 @@ -88,6 +88,14 @@ return getWingAtomPoint(); } + Atom getInitiatorAtom() { + return getNitrogenAtom(); + } + + Atom getTerminatorAtom() { + return getAtomFromOffsetIndex(offsets[4] != -1 ? 4 : 3); + } + //////////////////////////////////////////////////////////////// Atom getAtom(byte specialAtomID) { Index: Atom.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/openscience/jmol/viewer/datamodel/Atom.java,v retrieving revision 1.77 retrieving revision 1.78 diff -u -r1.77 -r1.78 --- Atom.java 6 Jun 2004 10:25:27 -0000 1.77 +++ Atom.java 7 Jun 2004 22:48:10 -0000 1.78 @@ -420,6 +420,10 @@ return group; } + public int getPolymerLength() { + return group.getPolymerLength(); + } + /* Polymer getPolymer() { return group.polymer; @@ -570,76 +574,80 @@ --ich; // a percent sign at the end of the string break; } + String strT = ""; char ch = strFormat.charAt(ich++); switch (ch) { case 'i': - strLabel += getAtomNumber(); + strT = "" + getAtomNumber(); break; case 'a': - strLabel += getAtomName(); + strT = getAtomName(); break; case 'e': - strLabel += JmolConstants.elementSymbols[elementNumber]; + strT = JmolConstants.elementSymbols[elementNumber]; break; case 'x': - strLabel += point3f.x; + strT = "" + point3f.x; break; case 'y': - strLabel += point3f.y; + strT = "" + point3f.y; break; case 'z': - strLabel += point3f.z; + strT = "" + point3f.z; break; case 'X': - strLabel += atomIndex; + strT = "" + atomIndex; break; case 'C': int formalCharge = getFormalCharge(); if (formalCharge > 0) - strLabel += "" + formalCharge + "+"; + strT = "" + formalCharge + "+"; else if (formalCharge < 0) - strLabel += "" + -formalCharge + "-"; + strT = "" + -formalCharge + "-"; else - strLabel += "0"; + strT = "0"; break; case 'P': float partialCharge = getPartialCharge(); if (Float.isNaN(partialCharge)) - strLabel += "?"; + strT = "?"; else - strLabel += partialCharge; + strT = "" + partialCharge; break; case 'V': - strLabel += getVanderwaalsRadiusFloat(); + strT = "" + getVanderwaalsRadiusFloat(); break; case 'I': - strLabel += getBondingRadiusFloat(); + strT = "" + getBondingRadiusFloat(); break; case 'b': // these two are the same case 't': - strLabel += (getBfactor100() / 100.0); + strT = "" + (getBfactor100() / 100.0); break; case 'q': - strLabel += occupancy; + strT = "" + occupancy; break; case 'c': // these two are the same case 's': - strLabel += getChainID(); + strT = "" + getChainID(); + break; + case 'L': + strT = "" + getPolymerLength(); break; case 'M': - strLabel += "/" + getModelID(); + strT = "/" + getModelID(); break; case 'm': - strLabel += "<X>"; + strT = "<X>"; break; case 'n': - strLabel += getGroup3(); + strT = getGroup3(); break; case 'r': - strLabel += getSeqcodeString(); + strT = getSeqcodeString(); break; case 'U': - strLabel += getIdentity(); + strT = getIdentity(); break; case '{': // client property name int ichCloseBracket = strFormat.indexOf('}', ich); @@ -647,14 +655,15 @@ String propertyName = strFormat.substring(ich, ichCloseBracket); String value = getClientAtomStringProperty(propertyName); if (value != null) - strLabel += value; + strT = value; ich = ichCloseBracket + 1; break; } // malformed will fall into default: - strLabel += "%" + ch; + strT = "%" + ch; } + strLabel += strT; } strLabel += strFormat.substring(ich); if (strLabel.length() == 0) Index: Group.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/openscience/jmol/viewer/datamodel/Group.java,v retrieving revision 1.26 retrieving revision 1.27 diff -u -r1.26 -r1.27 --- Group.java 31 May 2004 17:52:13 -0000 1.26 +++ Group.java 7 Jun 2004 22:48:10 -0000 1.27 @@ -107,6 +107,10 @@ return chain.chainID; } + public int getPolymerLength() { + return 0; + } + byte getProteinStructureType() { return JmolConstants.PROTEIN_STRUCTURE_NONE; } Index: Monomer.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/openscience/jmol/viewer/datamodel/Monomer.java,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- Monomer.java 6 Jun 2004 07:56:17 -0000 1.16 +++ Monomer.java 7 Jun 2004 22:48:10 -0000 1.17 @@ -48,6 +48,10 @@ this.polymer = polymer; } + public int getPolymerLength() { + return polymer == null ? 0 : polymer.count; + } + //////////////////////////////////////////////////////////////// static byte[] scanForOffsets(int firstAtomIndex, @@ -185,6 +189,9 @@ return getAtomPointFromOffsetIndex(1); } + abstract Atom getInitiatorAtom(); + abstract Atom getTerminatorAtom(); + /** * Selects LeadAtom when this Monomer is clicked ... iff it is * closer to the user. Index: Mps.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/openscience/jmol/viewer/datamodel/Mps.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- Mps.java 6 Jun 2004 07:56:17 -0000 1.7 +++ Mps.java 7 Jun 2004 22:48:10 -0000 1.8 @@ -160,11 +160,14 @@ this.madTurnRandom = (short)madTurnRandom; this.madDnaRna = (short)madDnaRna; - monomerCount = polymer == null ? 0 : polymer.getCount(); + // FIXME + // I don't think that polymer can ever be null for this thing + // so stop checking for null and see if it explodes + monomerCount = polymer == null ? 0 : polymer.count; if (monomerCount > 0) { colixes = new short[monomerCount]; mads = new short[monomerCount + 1]; - monomers = polymer.getMonomers(); + monomers = polymer.monomers; leadMidpoints = polymer.getLeadMidpoints(); wingVectors = polymer.getWingVectors(); Index: MpsRenderer.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/openscience/jmol/viewer/datamodel/MpsRenderer.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- MpsRenderer.java 29 May 2004 19:02:51 -0000 1.2 +++ MpsRenderer.java 7 Jun 2004 22:48:10 -0000 1.3 @@ -91,7 +91,7 @@ int diameterMid = viewer.scaleToScreen(monomers[i].getLeadAtom().getScreenZ(), madThis); - g3d.fillHermite(colix, 4, + g3d.fillHermite(colix, monomers[i].isNucleicMonomer() ? 4 : 7, diameterBeg, diameterMid, diameterEnd, leadMidpointScreens[iPrev1], leadMidpointScreens[i], leadMidpointScreens[iNext1], leadMidpointScreens[iNext2]); Index: NucleicMonomer.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/openscience/jmol/viewer/datamodel/NucleicMonomer.java,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 --- NucleicMonomer.java 6 Jun 2004 07:56:17 -0000 1.18 +++ NucleicMonomer.java 7 Jun 2004 22:48:10 -0000 1.19 @@ -60,6 +60,9 @@ -JmolConstants.ATOMID_H5T_TERMINUS, // 20 H5T terminus -JmolConstants.ATOMID_O5T_TERMINUS, // 21 O5T terminus JmolConstants.ATOMID_O5_PRIME // 22 O5' terminus + + -JmolConstants.ATOMID_H3T_TERMINUS, // 23 H3T terminus + JmolConstants.ATOMID_O3_PRIME // 24 O3' terminus }; static Monomer @@ -171,6 +174,14 @@ return getSpecialAtomPoint(interestingNucleicAtomIDs, specialAtomID); } + Atom getInitiatorAtom() { + return getLeadAtom(); + } + + Atom getTerminatorAtom() { + return getAtomFromOffsetIndex(offsets[23] != -1 ? 23 : 24); + } + void getBaseRing6Points(Point3f[] ring6Points) { for (int i = 6; --i >= 0; ) ring6Points[i] = getAtomPointFromOffsetIndex(i + 3); Index: Polymer.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/openscience/jmol/viewer/datamodel/Polymer.java,v retrieving revision 1.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- Polymer.java 6 Jun 2004 07:56:17 -0000 1.21 +++ Polymer.java 7 Jun 2004 22:48:10 -0000 1.22 @@ -92,7 +92,7 @@ if (firstNonMainchain == i) ++firstNonMainchain; } - if (count < 2) + if (count == 0) return null; Monomer[] monomers = new Monomer[count]; for (int i = 0, j = 0; i < chain.groupCount; ++i) { @@ -123,7 +123,7 @@ if (firstNonMainchain == i) ++firstNonMainchain; } - if (count < 2) + if (count == 0) return null; Monomer[] monomers = new Monomer[count]; for (int i = 0, j = 0; i < chain.groupCount; ++i) { @@ -152,7 +152,7 @@ continue; ++count; } - if (count < 2) + if (count == 0) return null; Monomer[] monomers = new Monomer[count]; for (int i = 0, j = 0; i < chain.groupCount; ++i) { @@ -175,14 +175,6 @@ return monomers[0].getChainID(); } - int getCount() { - return count; - } - - Monomer[] getMonomers() { - return monomers; - } - int[] getLeadAtomIndices() { if (atomIndices == null) { atomIndices = new int[count]; @@ -204,6 +196,14 @@ return monomers[monomerIndex].getLeadAtomPoint(); } + final Point3f getInitiatorPoint() { + return monomers[0].getInitiatorAtom().point3f; + } + + final Point3f getTerminatorPoint() { + return monomers[count - 1].getTerminatorAtom().point3f; + } + final Atom getLeadAtom(int monomerIndex) { return monomers[monomerIndex].getLeadAtom(); } @@ -258,7 +258,8 @@ Vector3f vectorD = new Vector3f(); Point3f leadPointPrev, leadPoint; - leadMidpoints[0] = leadPointPrev = leadPoint = getLeadPoint(0); + leadMidpoints[0] = getInitiatorPoint(); + leadPoint = getLeadPoint(0); Vector3f previousVectorD = null; for (int i = 1; i < count; ++i) { leadPointPrev = leadPoint; @@ -279,7 +280,7 @@ previousVectorD = wingVectors[i] = new Vector3f(vectorD); } } - leadMidpoints[count] = getLeadPoint(count - 1); + leadMidpoints[count] = getTerminatorPoint(); if (! hasWingPoints) { // auto-calculate wing vectors based upon lead atom positions only // seems to work like a charm! :-) Index: RocketsRenderer.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/openscience/jmol/viewer/datamodel/RocketsRenderer.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- RocketsRenderer.java 30 May 2004 08:45:51 -0000 1.9 +++ RocketsRenderer.java 7 Jun 2004 22:48:10 -0000 1.10 @@ -82,8 +82,8 @@ Point3f[] cordMidPoints; void initializeChain(AminoPolymer aminopolymer) { - monomers = aminopolymer.getMonomers(); - monomerCount = aminopolymer.getCount(); + monomers = aminopolymer.monomers; + monomerCount = aminopolymer.count; isSpecials = calcIsSpecials(monomerCount, monomers); cordMidPoints = calcRopeMidPoints(aminopolymer); screens = getScreens(); |