Revision: 20485
          http://sourceforge.net/p/jmol/code/20485
Author:   hansonr
Date:     2015-05-07 11:53:05 +0000 (Thu, 07 May 2015)
Log Message:
-----------
JmolVersion="14.3.13_2015.05.07"

bug fix: isolated bio groups such as AMP, which are not part of biopolymers, 
can result in crashes
         when colored or queried about their parameters (Hiroufmi Suzuki)

Modified Paths:
--------------
    branches/v14_2/Jmol/src/org/jmol/modelsetbio/AlphaMonomer.java
    branches/v14_2/Jmol/src/org/jmol/modelsetbio/AminoMonomer.java
    branches/v14_2/Jmol/src/org/jmol/modelsetbio/Monomer.java
    branches/v14_2/Jmol/src/org/jmol/modelsetbio/NucleicMonomer.java
    branches/v14_2/Jmol/src/org/jmol/modelsetbio/PhosphorusMonomer.java
    branches/v14_2/Jmol/src/org/jmol/viewer/Jmol.properties

Modified: branches/v14_2/Jmol/src/org/jmol/modelsetbio/AlphaMonomer.java
===================================================================
--- branches/v14_2/Jmol/src/org/jmol/modelsetbio/AlphaMonomer.java      
2015-05-07 11:52:58 UTC (rev 20484)
+++ branches/v14_2/Jmol/src/org/jmol/modelsetbio/AlphaMonomer.java      
2015-05-07 11:53:05 UTC (rev 20485)
@@ -226,6 +226,8 @@
   }
 
   protected Quat getQuaternionAlpha(char qType) {
+    if (monomerIndex < 0)
+      return null;
     /*
      * also NucleicMonomer, AminoMonomer
      * 

Modified: branches/v14_2/Jmol/src/org/jmol/modelsetbio/AminoMonomer.java
===================================================================
--- branches/v14_2/Jmol/src/org/jmol/modelsetbio/AminoMonomer.java      
2015-05-07 11:52:58 UTC (rev 20484)
+++ branches/v14_2/Jmol/src/org/jmol/modelsetbio/AminoMonomer.java      
2015-05-07 11:53:05 UTC (rev 20485)
@@ -208,7 +208,7 @@
 
   public boolean getNHPoint(P3 aminoHydrogenPoint, V3 vNH,
                             boolean jmolHPoint, boolean dsspIgnoreHydrogens) {
-    if (monomerIndex == 0 || groupID == JC.GROUPID_PROLINE)
+    if (monomerIndex <= 0 || groupID == JC.GROUPID_PROLINE)
       return false;
     Atom nitrogenPoint = getNitrogenAtom();
     P3 nhPoint = getNitrogenHydrogenPoint();
@@ -252,6 +252,8 @@
   
   @Override
   P3 getQuaternionFrameCenter(char qType) {
+    if (monomerIndex < 0)
+      return null;
     switch (qType) {
     default:
     case 'a':
@@ -278,6 +280,8 @@
 
   @Override
   public Quat getQuaternion(char qType) {
+    if (monomerIndex < 0)
+      return null;
     /*
      * also NucleicMonomer
      *  

Modified: branches/v14_2/Jmol/src/org/jmol/modelsetbio/Monomer.java
===================================================================
--- branches/v14_2/Jmol/src/org/jmol/modelsetbio/Monomer.java   2015-05-07 
11:52:58 UTC (rev 20484)
+++ branches/v14_2/Jmol/src/org/jmol/modelsetbio/Monomer.java   2015-05-07 
11:53:05 UTC (rev 20485)
@@ -58,6 +58,8 @@
 
   protected byte[] offsets;
 
+  int monomerIndex = -1;
+
   protected static boolean have(byte[] offsets, byte n) {
     return (offsets[n] & 0xFF) != 0xFF;
   }
@@ -76,26 +78,24 @@
       leadAtomIndex = firstAtomIndex + offset;
   }
 
-  int monomerIndex;
-
   void setBioPolymer(BioPolymer polymer, int index) {
-    this.bioPolymer = polymer;
+    bioPolymer = polymer;
     monomerIndex = index;
   }
 
   @Override
   public int getSelectedMonomerCount() {
-    return bioPolymer.getSelectedMonomerCount();
+    return (bioPolymer == null  ? 0 : bioPolymer.getSelectedMonomerCount());
   }
   
   @Override
   public int getSelectedMonomerIndex() {
-    return (monomerIndex >= 0 && bioPolymer.isMonomerSelected(monomerIndex) ? 
monomerIndex : -1);
+    return (bioPolymer == null || !bioPolymer.isMonomerSelected(monomerIndex) 
? -1 : monomerIndex);
   }
   
   @Override
   public int getBioPolymerLength() {
-    return bioPolymer == null ? 0 : bioPolymer.monomerCount;
+    return (bioPolymer == null ? 0 : bioPolymer.monomerCount);
   }
 
   @Override
@@ -105,19 +105,21 @@
 
   @Override
   public int getAtomIndex(String name, int offset) {
-    Group[] groups = bioPolymer.monomers;
-    int ipt = monomerIndex + offset;
-    if (ipt >= 0 && ipt < groups.length) {
-      Group m = groups[ipt];
-      if (offset == 1 && !m.isConnectedPrevious())
-        return -1;
-      if ("0".equals(name))
-        return m.leadAtomIndex;
-      Atom[] atoms = chain.model.ms.at;
-      // this is OK -- only used for finding special atom by name
-      for (int i = m.firstAtomIndex; i <= m.lastAtomIndex; i++)
-        if (name == null || name.equalsIgnoreCase(atoms[i].getAtomName()))
-          return i;
+    if (bioPolymer != null) {
+      Group[] groups = bioPolymer.monomers;
+      int ipt = monomerIndex + offset;
+      if (ipt >= 0 && ipt < groups.length) {
+        Group m = groups[ipt];
+        if (offset == 1 && !m.isConnectedPrevious())
+          return -1;
+        if ("0".equals(name))
+          return m.leadAtomIndex;
+        Atom[] atoms = chain.model.ms.at;
+        // this is OK -- only used for finding special atom by name
+        for (int i = m.firstAtomIndex; i <= m.lastAtomIndex; i++)
+          if (name == null || name.equalsIgnoreCase(atoms[i].getAtomName()))
+            return i;
+      }
     }
     return -1;
   }
@@ -360,6 +362,8 @@
   }
 
   protected Object getHelixData2(int tokType, char qType, int mStep) {
+    if (monomerIndex < 0)
+      return null;
     int iPrev = monomerIndex - mStep;
     Monomer prev = (mStep < 1 || monomerIndex <= 0 ? null
         : bioPolymer.monomers[iPrev]);
@@ -478,6 +482,8 @@
 
   @Override
   public float getGroupParameter(int tok) {
+    if (bioPolymer == null)
+      return 0;
     if (!bioPolymer.haveParameters)
       bioPolymer.calcParameters();
     switch (tok) {

Modified: branches/v14_2/Jmol/src/org/jmol/modelsetbio/NucleicMonomer.java
===================================================================
--- branches/v14_2/Jmol/src/org/jmol/modelsetbio/NucleicMonomer.java    
2015-05-07 11:52:58 UTC (rev 20484)
+++ branches/v14_2/Jmol/src/org/jmol/modelsetbio/NucleicMonomer.java    
2015-05-07 11:53:05 UTC (rev 20485)
@@ -385,6 +385,8 @@
 
   @Override
   public Quat getQuaternion(char qType) {
+    if (bioPolymer == null)
+      return null;
     // quaternionFrame 'c' from  
     // Sarver M, Zirbel CL, Stombaugh J, Mokdad A, Leontis NB. 
     // FR3D: finding local and composite recurrent structural motifs in RNA 3D 
structures. 
@@ -547,6 +549,7 @@
   }
 
   private Lst<BasePair> bps;
+  
   public void addBasePair(BasePair bp) {
     if (bps == null)
       bps = new Lst<BasePair>();
@@ -559,8 +562,12 @@
       group1 = g;
   }
   
+  /**
+   * 
+   * @return list of base pairs associated with this monomer, possibly more 
than one if noncanonical
+   */
   public Lst<BasePair> getBasePairs() {
-    if (!((NucleicPolymer) bioPolymer).isDssrSet)
+    if (bioPolymer != null && !((NucleicPolymer) bioPolymer).isDssrSet)
       
bioPolymer.model.ms.vwr.getAnnotationParser().setAllDSSRParametersForModel(bioPolymer.model.ms.vwr,
 bioPolymer.model.modelIndex);    
     return bps;
   }

Modified: branches/v14_2/Jmol/src/org/jmol/modelsetbio/PhosphorusMonomer.java
===================================================================
--- branches/v14_2/Jmol/src/org/jmol/modelsetbio/PhosphorusMonomer.java 
2015-05-07 11:52:58 UTC (rev 20484)
+++ branches/v14_2/Jmol/src/org/jmol/modelsetbio/PhosphorusMonomer.java 
2015-05-07 11:53:05 UTC (rev 20485)
@@ -131,7 +131,7 @@
     //vA = ptP(i+1) - ptP
     //vB = ptP(i-1) - ptP
     int i = monomerIndex;
-    if (i == 0 || i >= bioPolymer.monomerCount - 1)
+    if (i <= 0 || i >= bioPolymer.monomerCount - 1)
       return null;
     P3 ptP = bioPolymer.monomers[i].getAtomFromOffsetIndex(P);
     P3 ptA, ptB;

Modified: branches/v14_2/Jmol/src/org/jmol/viewer/Jmol.properties
===================================================================
--- branches/v14_2/Jmol/src/org/jmol/viewer/Jmol.properties     2015-05-07 
11:52:58 UTC (rev 20484)
+++ branches/v14_2/Jmol/src/org/jmol/viewer/Jmol.properties     2015-05-07 
11:53:05 UTC (rev 20485)
@@ -4,8 +4,13 @@
 # THIS IS THE RELEASE BRANCH 
 # BUG FIXES ONLY, PLEASE
 
-Jmol.___JmolVersion="14.2.13_2015.05.05"
+JmolVersion="14.2.13_2015.05.07"
 
+bug fix: isolated bio groups such as AMP, which are not part of biopolymers, 
can result in crashes
+         when colored or queried about their parameters
+
+JmolVersion="14.2.13_2015.05.05"
+
 bug fix: set modifyStructureCallback does not work with "JmolScript:...."
 
 JmolVersion="14.2.13_2015.05.02"

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
Jmol-commits mailing list
Jmol-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jmol-commits

Reply via email to