note to callers of adjustPanelHeight
[jalview.git] / src / MCview / PDBfile.java
index 5fd3d10..3df320c 100755 (executable)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.4)
- * Copyright (C) 2008 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer (Development Version 2.4.1)
+ * Copyright (C) 2009 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
@@ -55,7 +55,7 @@ public class PDBfile extends jalview.io.AlignFile
   public void parse() throws IOException
   {
     // TODO set the filename sensibly
-    id = (inFile == null) ? "PDBFILE" : inFile.getName();
+    id = (inFile == null || inFile.getName()==null || inFile.getName().length()==0) ? "PDBFILE" : inFile.getName();
     try
     {
       chains = new Vector();
@@ -64,14 +64,28 @@ public class PDBfile extends jalview.io.AlignFile
       String line;
       boolean modelFlag = false;
       boolean terFlag = false;
+      String lastID="";
 
       int index = 0;
+      String atomnam=null;
       while ((line = nextLine()) != null)
       {
         if (line.indexOf("HEADER") == 0)
         {
-          id = line.substring(62, 67).trim();
-          continue;
+          if (line.length()>62)
+          {
+            String tid;
+            if (line.length()>67) {
+              tid = line.substring(62, 67).trim();
+            } else {
+              tid=line.substring(62).trim();
+            }
+            if (tid.length()>0)
+            {
+              id = tid;
+            }
+            continue;
+          }
         }
         // Were we to do anything with SEQRES - we start it here
         if (line.indexOf("SEQRES") == 0)
@@ -98,7 +112,8 @@ public class PDBfile extends jalview.io.AlignFile
           terFlag = false;
 
           // Jalview is only interested in CA bonds????
-          if (!line.substring(12, 15).trim().equals("CA"))
+          atomnam = line.substring(12, 15).trim();
+          if (!atomnam.equals("CA") && !atomnam.equals("P"))
           {
             continue;
           }
@@ -107,6 +122,11 @@ public class PDBfile extends jalview.io.AlignFile
           tmpchain = findChain(tmpatom.chain);
           if (tmpchain != null)
           {
+            if (tmpatom.resNumIns.trim().equals(lastID))
+            {
+              //  phosphorylated protein - seen both CA and P..
+              continue;
+            }
             tmpchain.atoms.addElement(tmpatom);
           }
           else
@@ -115,6 +135,7 @@ public class PDBfile extends jalview.io.AlignFile
             chains.addElement(tmpchain);
             tmpchain.atoms.addElement(tmpatom);
           }
+          lastID = tmpatom.resNumIns.trim();
         }
         index++;
       }