* 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
-\r
package MCview;\r
\r
-import jalview.datamodel.*;\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 Vector chains = new Vector();\r
+ public PDBfile(String[] lines) {\r
+ for (int i = 0; i < lines.length; i++)\r
+ lineArray.addElement(lines[i]);\r
\r
- Vector lineArray = new Vector();\r
+ parse();\r
+ }\r
\r
- public PDBfile(String [] lines)\r
- {\r
- for(int i=0; i<lines.length; i++)\r
- lineArray.addElement(lines[i]);\r
+ public PDBfile(String inFile, String inType) throws IOException {\r
+ super(inFile, inType);\r
\r
- noLines = lineArray.size();\r
- parse();\r
- }\r
+ String line;\r
+ this.lineArray = new Vector();\r
\r
- public PDBfile(String inFile, String inType) throws IOException {\r
+ BufferedReader dataIn;\r
\r
- super(inFile,inType);\r
\r
- String line;\r
- this.lineArray = new Vector();\r
- BufferedReader dataIn;\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
- if (inType.equals("File"))\r
- dataIn = new BufferedReader(new FileReader( inFile ));\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
- else\r
- {\r
- URL url = new URL(inFile);\r
- this.fileSize = 0;\r
- dataIn = new BufferedReader(new InputStreamReader(url.openStream()));\r
- }\r
+ while ((line = dataIn.readLine()) != null) {\r
+ lineArray.addElement(line);\r
+ }\r
\r
- while ((line = dataIn.readLine()) != null) {\r
- lineArray.addElement(line);\r
+\r
+ parse();\r
+ lineArray = null;\r
}\r
- noLines = lineArray.size();\r
\r
- parse();\r
+ public void parse()\r
+ {\r
+ PDBChain tmpchain;\r
+ String line;\r
+ boolean modelFlag = false;\r
+ boolean terFlag = false;\r
\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
- public void parse() {\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.err.println("Caught" + e);\r
- System.err.println("Record not added to PDB model:"+lineArray.elementAt(i).toString());\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
+ makeResidueList();\r
+ makeCaBondList();\r
}\r
- }\r
- public void makeCaBondList() {\r
- for (int i=0; i < chains.size() ; i++) {\r
- ((PDBChain)chains.elementAt(i)).makeCaBondList();\r
+\r
+ public void makeResidueList() {\r
+ for (int i = 0; i < chains.size(); i++) {\r
+ ((PDBChain) chains.elementAt(i)).makeResidueList();\r
+ }\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
+ public void makeCaBondList() {\r
+ for (int i = 0; i < chains.size(); i++) {\r
+ ((PDBChain) chains.elementAt(i)).makeCaBondList();\r
+ }\r
}\r
- return null;\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
- public void setChargeColours() {\r
- for (int i=0; i < chains.size(); i++) {\r
- ((PDBChain)chains.elementAt(i)).setChargeColours();\r
+ return null;\r
}\r
- }\r
\r
- public void setHydrophobicityColours() {\r
- for (int i=0; i < chains.size(); i++) {\r
- ((PDBChain)chains.elementAt(i)).setHydrophobicityColours();\r
+ public void setChargeColours() {\r
+ for (int i = 0; i < chains.size(); i++) {\r
+ ((PDBChain) chains.elementAt(i)).setChargeColours();\r
+ }\r
}\r
- }\r
-\r
- public void colourBySequence(Sequence 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
+ 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 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
- e.printStackTrace();\r
- System.exit(0);\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
}\r
-\r
-\r
-\r