warning message changed
[jalview.git] / src / MCview / PDBfile.java
index d7b7c97..4d2a8d5 100755 (executable)
@@ -1,6 +1,6 @@
 /*\r
 * Jalview - A Sequence Alignment Editor and Viewer\r
-* Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
+* Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
 *\r
 * This program is free software; you can redistribute it and/or\r
 * modify it under the terms of the GNU General Public License\r
 */\r
 package MCview;\r
 \r
-import java.io.*;\r
+import jalview.datamodel.*;\r
 \r
-import java.net.*;\r
+import java.io.*;\r
 \r
 import java.util.*;\r
 import java.awt.Color;\r
 \r
 \r
-public class PDBfile extends jalview.io.FileParse {\r
-    public Vector chains = new Vector();\r
-    Vector lineArray = new Vector();\r
-    String id;\r
-\r
-    public PDBfile(String[] lines) {\r
-        for (int i = 0; i < lines.length; i++)\r
-            lineArray.addElement(lines[i]);\r
-\r
-        noLines = lineArray.size();\r
-        parse();\r
-    }\r
+public class PDBfile extends jalview.io.AlignFile {\r
+    public Vector chains;\r
+    public String id;\r
 \r
-    public PDBfile(String inFile, String inType) throws IOException {\r
+    public PDBfile(String inFile, String inType) throws IOException\r
+    {\r
         super(inFile, inType);\r
+    }\r
 \r
-        String line;\r
-        this.lineArray = new Vector();\r
-\r
-        BufferedReader dataIn;\r
-\r
-        if (inType.equals("File")) {\r
-            dataIn = new BufferedReader(new FileReader(inFile));\r
-        }\r
-        else if(inType.equals("Paste"))\r
-        {\r
-            dataIn = new BufferedReader(new StringReader(inFile));\r
-        }\r
-        else {\r
-            URL url = new URL(inFile);\r
-            this.fileSize = 0;\r
-            dataIn = new BufferedReader(new InputStreamReader(url.openStream()));\r
-        }\r
-\r
-        while ((line = dataIn.readLine()) != null) {\r
-            lineArray.addElement(line);\r
-        }\r
-\r
-        noLines = lineArray.size();\r
-\r
-        parse();\r
-        lineArray = null;\r
+    public String print()\r
+    {\r
+      return null;\r
     }\r
 \r
-    public void parse()\r
+    public void parse() throws IOException\r
     {\r
+      try{\r
+        chains = new Vector();\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
+        int index = 0;\r
+        while ( (line = nextLine()) != null)\r
         {\r
+          if (line.indexOf("HEADER") == 0)\r
+          {\r
+            id = line.substring(62, 67).trim();\r
+            continue;\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
+          if (line.indexOf("MODEL") == 0)\r
+            modelFlag = true;\r
 \r
-           if(line.indexOf("MODEL")==0)\r
-             modelFlag = true;\r
+          if (line.indexOf("TER") == 0)\r
+            terFlag = true;\r
 \r
-           if(line.indexOf("TER")==0)\r
-             terFlag = true;\r
+          if (modelFlag && line.indexOf("ENDMDL") == 0)\r
+            break;\r
 \r
-           if(modelFlag && line.indexOf("ENDMDL")==0)\r
-             break;\r
+          if (line.indexOf("ATOM") == 0\r
+              || (line.indexOf("HETATM") == 0 && !terFlag)\r
+              )\r
+          {\r
+            terFlag = false;\r
 \r
-           if (    line.indexOf("ATOM")==0\r
-               || (line.indexOf("HETATM")==0 && !terFlag)\r
-             )\r
+            //Jalview is only interested in CA bonds????\r
+            if (!line.substring(12, 15).trim().equals("CA"))\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
+              continue;\r
+            }\r
 \r
+            Atom tmpatom = new Atom(line);\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
+          index++;\r
         }\r
 \r
-       makeResidueList();\r
-       makeCaBondList();\r
+        makeResidueList();\r
+        makeCaBondList();\r
+\r
+        if (id == null)\r
+        {\r
+          id = inFile.getName();\r
+        }\r
+        for (int i = 0; i < chains.size(); i++)\r
+        {\r
+          SequenceI seq = ( (PDBChain) chains.elementAt(i)).\r
+              sequence;\r
+          seq.setName(id + "|" + seq.getName());\r
+          Sequence dataset = new Sequence(seq.\r
+                                          getName(),\r
+                                          seq.getSequence().toString(),\r
+                                          seq.getStart(), seq.getEnd());\r
+\r
+          PDBEntry entry = new PDBEntry();\r
+          entry.setId(id);\r
+          if (inFile != null)\r
+            entry.setFile(inFile.getAbsolutePath());\r
+\r
+          seq.setDatasetSequence(dataset);\r
+          dataset.addPDBId(entry);\r
+\r
+          getSeqs().addElement(seq);\r
+        }\r
+      }catch(OutOfMemoryError er)\r
+      {\r
+        System.out.println("OUT OF MEMORY LOADING PDB FILE");\r
+        throw new IOException("Out of memory loading PDB File");\r
+      }\r
     }\r
 \r
     public void makeResidueList() {\r
@@ -161,9 +158,9 @@ public class PDBfile extends jalview.io.FileParse {
         }\r
     }\r
 \r
-    public void setHydrophobicityColours() {\r
+    public void setColours(jalview.schemes.ColourSchemeI cs) {\r
         for (int i = 0; i < chains.size(); i++) {\r
-            ((PDBChain) chains.elementAt(i)).setHydrophobicityColours();\r
+            ((PDBChain) chains.elementAt(i)).setChainColours(cs);\r
         }\r
     }\r
 \r