Applet changes
[jalview.git] / src / MCview / PDBfile.java
index 2b22b24..d7b7c97 100755 (executable)
@@ -67,45 +67,70 @@ public class PDBfile extends jalview.io.FileParse {
         noLines = lineArray.size();\r
 \r
         parse();\r
+        lineArray = null;\r
     }\r
 \r
     public void parse()\r
     {\r
+        PDBChain tmpchain;\r
         String line;\r
+        boolean modelFlag = false;\r
+        boolean terFlag = false;\r
+\r
+\r
         for (int i = 0; i < lineArray.size(); i++)\r
         {\r
 \r
            line = lineArray.elementAt(i).toString();\r
 \r
+\r
            if (line.indexOf("HEADER") == 0)\r
            {\r
              id = line.substring(62, 67).trim();\r
              continue;\r
            }\r
 \r
-                if (line.indexOf("ATOM") == 0) {\r
-                    try {\r
-                        Atom tmpatom = new Atom(line);\r
-\r
-                        if (findChain(tmpatom.chain) != null)\r
-                        {\r
-                            findChain(tmpatom.chain).atoms.addElement(tmpatom);\r
-                        } else\r
-                        {\r
-                            PDBChain tmpchain = new PDBChain(tmpatom.chain);\r
-                            chains.addElement(tmpchain);\r
-                            tmpchain.atoms.addElement(tmpatom);\r
-                        }\r
-                    } catch (NumberFormatException e) {\r
-                        System.err.println("Caught" + e);\r
-                        System.err.println("Record not added to PDB model:" +\r
-                            lineArray.elementAt(i).toString());\r
-                    }\r
-                }\r
+           if(line.indexOf("MODEL")==0)\r
+             modelFlag = true;\r
+\r
+           if(line.indexOf("TER")==0)\r
+             terFlag = true;\r
+\r
+           if(modelFlag && line.indexOf("ENDMDL")==0)\r
+             break;\r
+\r
+           if (    line.indexOf("ATOM")==0\r
+               || (line.indexOf("HETATM")==0 && !terFlag)\r
+             )\r
+            {\r
+              terFlag = false;\r
+\r
+\r
+              //Jalview is only interested in CA bonds????\r
+              if (!line.substring(12, 15).trim().equals("CA"))\r
+              {\r
+                continue;\r
+              }\r
+\r
+              Atom tmpatom = new Atom(line);\r
+\r
+              tmpchain = findChain(tmpatom.chain);\r
+              if (tmpchain != null)\r
+              {\r
+                tmpchain.atoms.addElement(tmpatom);\r
+              }\r
+              else\r
+              {\r
+                tmpchain = new PDBChain(tmpatom.chain);\r
+                chains.addElement(tmpchain);\r
+                tmpchain.atoms.addElement(tmpatom);\r
+              }\r
+\r
+          }\r
         }\r
 \r
-        makeResidueList();\r
-        makeCaBondList();\r
+       makeResidueList();\r
+       makeCaBondList();\r
     }\r
 \r
     public void makeResidueList() {\r