JAL-730
authorjprocter <Jim Procter>
Thu, 6 Jan 2011 15:53:25 +0000 (15:53 +0000)
committerjprocter <Jim Procter>
Thu, 6 Jan 2011 15:53:25 +0000 (15:53 +0000)
src/MCview/Atom.java
src/MCview/PDBfile.java

index 8b160ef..0a3bd39 100755 (executable)
@@ -50,9 +50,10 @@ public class Atom
   public int atomIndex;
 
   public float occupancy = 0;
   public int atomIndex;
 
   public float occupancy = 0;
-
+  
   public float tfactor = 0;
   public float tfactor = 0;
-
+  // need these if we ever want to export Atom data
+  // public boolean tfacset=true,occset=true;
   public boolean isSelected = false;
 
   public Atom(String str)
   public boolean isSelected = false;
 
   public Atom(String str)
@@ -71,9 +72,22 @@ public class Atom
     this.x = (float) (new Float(str.substring(30, 38).trim()).floatValue());
     this.y = (float) (new Float(str.substring(38, 46).trim()).floatValue());
     this.z = (float) (new Float(str.substring(47, 55).trim()).floatValue());
     this.x = (float) (new Float(str.substring(30, 38).trim()).floatValue());
     this.y = (float) (new Float(str.substring(38, 46).trim()).floatValue());
     this.z = (float) (new Float(str.substring(47, 55).trim()).floatValue());
-    occupancy = (float) (new Float(str.substring(54, 60).trim())
-            .floatValue());
-    tfactor = (float) (new Float(str.substring(60, 66).trim()).floatValue());
+    // optional entries - see JAL-730
+    String tm = str.substring(54, 60).trim();
+    if (tm.length()>0) {
+      occupancy = (float) (new Float(tm)).floatValue();
+    } else {
+      occupancy = 1f; // default occupancy
+      // see note above: occset=false;
+    }
+    tm = str.substring(60, 66).trim();
+    if (tm.length()>0)
+    {
+      tfactor = (float) (new Float(tm).floatValue());
+    } else {
+      tfactor = 1f;
+      //see note above: tfacset=false;
+    }
   }
 
   public Atom(float x, float y, float z)
   }
 
   public Atom(float x, float y, float z)
index c55a519..30f7e42 100755 (executable)
@@ -56,18 +56,18 @@ public class PDBfile extends jalview.io.AlignFile
     // TODO set the filename sensibly - try using data source name.
     id = safeName(getDataName());
 
     // TODO set the filename sensibly - try using data source name.
     id = safeName(getDataName());
 
-    try
-    {
       chains = new Vector();
 
       PDBChain tmpchain;
       chains = new Vector();
 
       PDBChain tmpchain;
-      String line;
+      String line=null;
       boolean modelFlag = false;
       boolean terFlag = false;
       String lastID = "";
 
       int index = 0;
       String atomnam = null;
       boolean modelFlag = false;
       boolean terFlag = false;
       String lastID = "";
 
       int index = 0;
       String atomnam = null;
+      try
+      {
       while ((line = nextLine()) != null)
       {
         if (line.indexOf("HEADER") == 0)
       while ((line = nextLine()) != null)
       {
         if (line.indexOf("HEADER") == 0)
@@ -185,6 +185,13 @@ public class PDBfile extends jalview.io.AlignFile
       System.out.println("OUT OF MEMORY LOADING PDB FILE");
       throw new IOException("Out of memory loading PDB File");
     }
       System.out.println("OUT OF MEMORY LOADING PDB FILE");
       throw new IOException("Out of memory loading PDB File");
     }
+    catch (NumberFormatException ex)
+    {
+      if (line!=null) {
+        System.err.println("Couldn't read number from line:");
+        System.err.println(line);
+      }
+    }
   }
 
   /**
   }
 
   /**