updated to jalview 2.1 and begun ArchiveClient/VamsasClient/VamsasStore updates.
[jalview.git] / src / MCview / PDBfile.java
index 63728ae..5824575 100755 (executable)
-/*\r
-* Jalview - A Sequence Alignment Editor and Viewer\r
-* Copyright (C) 2005 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
-* as published by the Free Software Foundation; either version 2\r
-* of the License, or (at your option) any later version.\r
-*\r
-* This program is distributed in the hope that it will be useful,\r
-* but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
-* GNU General Public License for more details.\r
-*\r
-* You should have received a copy of the GNU General Public License\r
-* along with this program; if not, write to the Free Software\r
-* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\r
-*/\r
-package MCview;\r
-\r
-import java.io.*;\r
-\r
-import java.net.*;\r
-\r
-import java.util.*;\r
-import java.awt.Color;\r
-import jalview.io.AppletFormatAdapter;\r
-\r
-\r
-public class PDBfile extends jalview.io.FileParse {\r
-    public Vector chains = new Vector();\r
-    Vector lineArray = new Vector();\r
-    public String id;\r
-\r
-    public PDBfile(String[] lines) {\r
-        for (int i = 0; i < lines.length; i++)\r
-            lineArray.addElement(lines[i]);\r
-\r
-        parse();\r
-    }\r
-\r
-    public PDBfile(String inFile, String inType) throws IOException {\r
-        super(inFile, inType);\r
-\r
-        String line;\r
-        this.lineArray = new Vector();\r
-\r
-        BufferedReader dataIn;\r
-\r
-\r
-        if (inType.equals(AppletFormatAdapter.FILE)) {\r
-            dataIn = new BufferedReader(new FileReader(inFile));\r
-        }\r
-        else if(inType.equals(AppletFormatAdapter.PASTE))\r
-        {\r
-            dataIn = new BufferedReader(new StringReader(inFile));\r
-        }\r
-        else if (inType.equalsIgnoreCase(AppletFormatAdapter.CLASSLOADER))\r
-        {\r
-          java.io.InputStream is = getClass().getResourceAsStream("/" +\r
-              inFile);\r
-\r
-          dataIn = new BufferedReader(new java.io.InputStreamReader(is));\r
-        }\r
-        else\r
-        {\r
-            URL url = new URL(inFile);\r
-            dataIn = new BufferedReader(new InputStreamReader(url.openStream()));\r
-        }\r
-\r
-        while ((line = dataIn.readLine()) != null) {\r
-            lineArray.addElement(line);\r
-        }\r
-\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("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
-    }\r
-\r
-    public void makeResidueList() {\r
-        for (int i = 0; i < chains.size(); i++) {\r
-            ((PDBChain) chains.elementAt(i)).makeResidueList();\r
-        }\r
-    }\r
-\r
-    public void makeCaBondList() {\r
-        for (int i = 0; i < chains.size(); i++) {\r
-            ((PDBChain) chains.elementAt(i)).makeCaBondList();\r
-        }\r
-    }\r
-\r
-    public PDBChain findChain(String id) {\r
-        for (int i = 0; i < chains.size(); i++) {\r
-            if (((PDBChain) chains.elementAt(i)).id.equals(id)) {\r
-                return (PDBChain) chains.elementAt(i);\r
-            }\r
-        }\r
-\r
-        return null;\r
-    }\r
-\r
-    public void setChargeColours() {\r
-        for (int i = 0; i < chains.size(); i++) {\r
-            ((PDBChain) chains.elementAt(i)).setChargeColours();\r
-        }\r
-    }\r
-\r
-    public void setColours(jalview.schemes.ColourSchemeI cs) {\r
-        for (int i = 0; i < chains.size(); i++) {\r
-            ((PDBChain) chains.elementAt(i)).setChainColours(cs);\r
-        }\r
-    }\r
-\r
-    public void setChainColours()\r
-    {\r
-       for (int i = 0; i < chains.size(); i++)\r
-       {\r
-            ((PDBChain) chains.elementAt(i)).setChainColours(\r
-                     Color.getHSBColor(1.0f / (float)i, .4f, 1.0f)\r
-                );\r
-        }\r
-    }\r
-}\r
+/*
+* Jalview - A Sequence Alignment Editor and Viewer
+* Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+*/
+package MCview;
+
+import jalview.datamodel.*;
+
+import java.io.*;
+
+import java.util.*;
+import java.awt.Color;
+
+
+public class PDBfile extends jalview.io.AlignFile {
+    public Vector chains;
+    public String id;
+
+    public PDBfile(String inFile, String inType) throws IOException
+    {
+        super(inFile, inType);
+    }
+
+    public String print()
+    {
+      return null;
+    }
+
+    public void parse() throws IOException
+    {
+        chains = new Vector();
+
+        PDBChain tmpchain;
+        String line;
+        boolean modelFlag = false;
+        boolean terFlag = false;
+
+
+        int index = 0;
+        while((line = nextLine())!=null)
+        {
+           if (line.indexOf("HEADER") == 0)
+           {
+             id = line.substring(62, 67).trim();
+             continue;
+           }
+
+           if(line.indexOf("MODEL")==0)
+             modelFlag = true;
+
+           if(line.indexOf("TER")==0)
+             terFlag = true;
+
+           if(modelFlag && line.indexOf("ENDMDL")==0)
+             break;
+
+           if (    line.indexOf("ATOM")==0
+               || (line.indexOf("HETATM")==0 && !terFlag)
+             )
+            {
+              terFlag = false;
+
+
+              //Jalview is only interested in CA bonds????
+              if (!line.substring(12, 15).trim().equals("CA"))
+              {
+                continue;
+              }
+
+              Atom tmpatom = new Atom(line);
+              tmpchain = findChain(tmpatom.chain);
+              if (tmpchain != null)
+              {
+                tmpchain.atoms.addElement(tmpatom);
+              }
+              else
+              {
+                tmpchain = new PDBChain(tmpatom.chain);
+                chains.addElement(tmpchain);
+                tmpchain.atoms.addElement(tmpatom);
+              }
+          }
+          index ++;
+        }
+
+       makeResidueList();
+       makeCaBondList();
+
+       if(id==null)
+       {
+         id = inFile.getName();
+       }
+       for (int i = 0; i < chains.size(); i++)
+       {
+         SequenceI seq = ( (PDBChain) chains.elementAt(i)).
+             sequence;
+         seq.setName(id + "|" + seq.getName());
+         Sequence dataset = new Sequence(seq.
+             getName(),
+             seq.getSequence().toString(), seq.getStart(), seq.getEnd());
+
+         PDBEntry entry = new PDBEntry();
+         entry.setId(id);
+         if(inFile!=null)
+           entry.setFile(inFile.getAbsolutePath());
+
+         seq.setDatasetSequence(dataset);
+         dataset.addPDBId(entry);
+
+         getSeqs().addElement(seq);
+       }
+    }
+
+    public void makeResidueList() {
+        for (int i = 0; i < chains.size(); i++) {
+            ((PDBChain) chains.elementAt(i)).makeResidueList();
+        }
+    }
+
+    public void makeCaBondList() {
+        for (int i = 0; i < chains.size(); i++) {
+            ((PDBChain) chains.elementAt(i)).makeCaBondList();
+        }
+    }
+
+    public PDBChain findChain(String id) {
+        for (int i = 0; i < chains.size(); i++) {
+            if (((PDBChain) chains.elementAt(i)).id.equals(id)) {
+                return (PDBChain) chains.elementAt(i);
+            }
+        }
+
+        return null;
+    }
+
+    public void setChargeColours() {
+        for (int i = 0; i < chains.size(); i++) {
+            ((PDBChain) chains.elementAt(i)).setChargeColours();
+        }
+    }
+
+    public void setColours(jalview.schemes.ColourSchemeI cs) {
+        for (int i = 0; i < chains.size(); i++) {
+            ((PDBChain) chains.elementAt(i)).setChainColours(cs);
+        }
+    }
+
+    public void setChainColours()
+    {
+       for (int i = 0; i < chains.size(); i++)
+       {
+            ((PDBChain) chains.elementAt(i)).setChainColours(
+                     Color.getHSBColor(1.0f / (float)i, .4f, 1.0f)
+                );
+        }
+    }
+}