updated to jalview 2.1 and begun ArchiveClient/VamsasClient/VamsasStore updates.
[jalview.git] / src / MCview / PDBfile.java
index ce98a06..5824575 100755 (executable)
-package MCview;\r
-\r
-import jalview.gui.*;\r
-import java.io.*;\r
-import java.net.*;\r
-import java.util.*;\r
-\r
-\r
-public class PDBfile extends jalview.io.FileParse {\r
-\r
-  public Vector chains = new Vector();\r
-\r
-  Vector lineArray = new Vector();\r
-\r
-  public PDBfile(String inFile, String inType) throws IOException {\r
-\r
-    super(inFile,inType);\r
-\r
-    String line;\r
-    this.lineArray = new Vector();\r
-    BufferedReader dataIn;\r
-\r
-    if (inType.equals("File"))\r
-      dataIn =  new BufferedReader(new FileReader( inFile ));\r
-\r
-    else\r
-    {\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
-    noLines = lineArray.size();\r
-\r
-    parse();\r
-\r
-}\r
-\r
-\r
-  public void parse() {\r
-\r
-    System.out.println("Parsing");\r
-\r
-    for (int i = 0; i < lineArray.size(); i++) {\r
-      StringTokenizer str = new StringTokenizer(lineArray.elementAt(i).toString());\r
-      if (str.hasMoreTokens()) {\r
-        String inStr = str.nextToken();\r
-\r
-        if (inStr.indexOf("ATOM") != -1) {\r
-          try {\r
-            myAtom tmpatom = new myAtom(str);\r
-            if (findChain(tmpatom.chain) != null) {\r
-              System.out.println("Adding to chain " + tmpatom.chain);\r
-              findChain(tmpatom.chain).atoms.addElement(tmpatom);\r
-            } else {\r
-              System.out.println("Making chain " + tmpatom.chain);\r
-              PDBChain tmpchain = new PDBChain(tmpatom.chain);\r
-              chains.addElement(tmpchain);\r
-              tmpchain.atoms.addElement(tmpatom);\r
-            }\r
-          } catch(NumberFormatException e) {\r
-            System.out.println("Caught" +  e);\r
-            System.out.println("Atom not added");\r
-          }\r
-        }\r
-      }\r
-    }\r
-    makeResidueList();\r
-    makeCaBondList();\r
-    //    for (int i=0; i < chains.size() ; i++) {\r
-    //  String pog = ((PDBChain)chains.elementAt(i)).print();\r
-    //  System.out.println(pog);\r
-    // }\r
-  }\r
-\r
-  public void makeResidueList() {\r
-    for (int i=0; i < chains.size() ; i++) {\r
-      ((PDBChain)chains.elementAt(i)).makeResidueList();\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
-      // System.out.println("ID = " + id + " " +((PDBChain)chains.elementAt(i)).id);\r
-      if (((PDBChain)chains.elementAt(i)).id.equals(id)) {\r
-        return (PDBChain)chains.elementAt(i);\r
-      }\r
-    }\r
-    return null;\r
-  }\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 setHydrophobicityColours() {\r
-    for (int i=0; i < chains.size(); i++) {\r
-      ((PDBChain)chains.elementAt(i)).setHydrophobicityColours();\r
-    }\r
-  }\r
-\r
-  public void colourBySequence(DrawableSequence seq) {\r
-//SMJS TODO\r
-//    int max = seq.maxchain;\r
-//    if (seq.maxchain != -1) {\r
-//      ((PDBChain)chains.elementAt(max)).colourBySequence(seq);\r
-//    }\r
-  }\r
-\r
-  public void setChainColours() {\r
-    for (int i=0; i < chains.size(); i++) {\r
-      ((PDBChain)chains.elementAt(i)).setChainColours();\r
-    }\r
-  }\r
-  public static void main(String[] args) {\r
-    try {\r
-      PDBfile pdb = new PDBfile("enkp1.pdb","File");\r
-    } catch(IOException e) {\r
-      System.out.println(e);\r
-      System.exit(0);\r
-    }\r
-  }\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)
+                );
+        }
+    }
+}