X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FMCview%2FPDBfile.java;h=63728ae816fe12b96a448fde9e38f7febb4aa25a;hb=56e5bdc625697d50d7d3f422616f0f1b40ca2828;hp=ce98a0698a8e4c0fd7e9fad745f4c68a7001050c;hpb=9b22c11a0e12a9320e41eca2cbcbe30f81eb1cb4;p=jalview.git diff --git a/src/MCview/PDBfile.java b/src/MCview/PDBfile.java index ce98a06..63728ae 100755 --- a/src/MCview/PDBfile.java +++ b/src/MCview/PDBfile.java @@ -1,137 +1,186 @@ +/* +* Jalview - A Sequence Alignment Editor and Viewer +* Copyright (C) 2005 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.gui.*; import java.io.*; + import java.net.*; + import java.util.*; +import java.awt.Color; +import jalview.io.AppletFormatAdapter; public class PDBfile extends jalview.io.FileParse { + public Vector chains = new Vector(); + Vector lineArray = new Vector(); + public String id; - public Vector chains = new Vector(); + public PDBfile(String[] lines) { + for (int i = 0; i < lines.length; i++) + lineArray.addElement(lines[i]); - Vector lineArray = new Vector(); + parse(); + } - public PDBfile(String inFile, String inType) throws IOException { + public PDBfile(String inFile, String inType) throws IOException { + super(inFile, inType); - super(inFile,inType); + String line; + this.lineArray = new Vector(); - String line; - this.lineArray = new Vector(); - BufferedReader dataIn; + BufferedReader dataIn; - if (inType.equals("File")) - dataIn = new BufferedReader(new FileReader( inFile )); - else - { - URL url = new URL(inFile); - this.fileSize = 0; - dataIn = new BufferedReader(new InputStreamReader(url.openStream())); - } + if (inType.equals(AppletFormatAdapter.FILE)) { + dataIn = new BufferedReader(new FileReader(inFile)); + } + else if(inType.equals(AppletFormatAdapter.PASTE)) + { + dataIn = new BufferedReader(new StringReader(inFile)); + } + else if (inType.equalsIgnoreCase(AppletFormatAdapter.CLASSLOADER)) + { + java.io.InputStream is = getClass().getResourceAsStream("/" + + inFile); - while ((line = dataIn.readLine()) != null) { - lineArray.addElement(line); + dataIn = new BufferedReader(new java.io.InputStreamReader(is)); + } + else + { + URL url = new URL(inFile); + dataIn = new BufferedReader(new InputStreamReader(url.openStream())); + } + + while ((line = dataIn.readLine()) != null) { + lineArray.addElement(line); + } + + + parse(); + lineArray = null; } - noLines = lineArray.size(); - parse(); + public void parse() + { + PDBChain tmpchain; + String line; + boolean modelFlag = false; + boolean terFlag = false; -} + for (int i = 0; i < lineArray.size(); i++) + { - public void parse() { + line = lineArray.elementAt(i).toString(); - System.out.println("Parsing"); - for (int i = 0; i < lineArray.size(); i++) { - StringTokenizer str = new StringTokenizer(lineArray.elementAt(i).toString()); - if (str.hasMoreTokens()) { - String inStr = str.nextToken(); + 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); + } - if (inStr.indexOf("ATOM") != -1) { - try { - myAtom tmpatom = new myAtom(str); - if (findChain(tmpatom.chain) != null) { - System.out.println("Adding to chain " + tmpatom.chain); - findChain(tmpatom.chain).atoms.addElement(tmpatom); - } else { - System.out.println("Making chain " + tmpatom.chain); - PDBChain tmpchain = new PDBChain(tmpatom.chain); - chains.addElement(tmpchain); - tmpchain.atoms.addElement(tmpatom); - } - } catch(NumberFormatException e) { - System.out.println("Caught" + e); - System.out.println("Atom not added"); } } - } - } - makeResidueList(); - makeCaBondList(); - // for (int i=0; i < chains.size() ; i++) { - // String pog = ((PDBChain)chains.elementAt(i)).print(); - // System.out.println(pog); - // } - } - - public void makeResidueList() { - for (int i=0; i < chains.size() ; i++) { - ((PDBChain)chains.elementAt(i)).makeResidueList(); + + makeResidueList(); + makeCaBondList(); } - } - public void makeCaBondList() { - for (int i=0; i < chains.size() ; i++) { - ((PDBChain)chains.elementAt(i)).makeCaBondList(); + + public void makeResidueList() { + for (int i = 0; i < chains.size(); i++) { + ((PDBChain) chains.elementAt(i)).makeResidueList(); + } } - } - - public PDBChain findChain(String id) { - for (int i=0; i < chains.size(); i++) { - // System.out.println("ID = " + id + " " +((PDBChain)chains.elementAt(i)).id); - if (((PDBChain)chains.elementAt(i)).id.equals(id)) { - return (PDBChain)chains.elementAt(i); - } + + public void makeCaBondList() { + for (int i = 0; i < chains.size(); i++) { + ((PDBChain) chains.elementAt(i)).makeCaBondList(); + } } - return null; - } + 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); + } + } - public void setChargeColours() { - for (int i=0; i < chains.size(); i++) { - ((PDBChain)chains.elementAt(i)).setChargeColours(); + return null; } - } - public void setHydrophobicityColours() { - for (int i=0; i < chains.size(); i++) { - ((PDBChain)chains.elementAt(i)).setHydrophobicityColours(); + public void setChargeColours() { + for (int i = 0; i < chains.size(); i++) { + ((PDBChain) chains.elementAt(i)).setChargeColours(); + } } - } - - public void colourBySequence(DrawableSequence seq) { -//SMJS TODO -// int max = seq.maxchain; -// if (seq.maxchain != -1) { -// ((PDBChain)chains.elementAt(max)).colourBySequence(seq); -// } - } - - public void setChainColours() { - for (int i=0; i < chains.size(); i++) { - ((PDBChain)chains.elementAt(i)).setChainColours(); + + public void setColours(jalview.schemes.ColourSchemeI cs) { + for (int i = 0; i < chains.size(); i++) { + ((PDBChain) chains.elementAt(i)).setChainColours(cs); + } } - } - public static void main(String[] args) { - try { - PDBfile pdb = new PDBfile("enkp1.pdb","File"); - } catch(IOException e) { - System.out.println(e); - System.exit(0); + + 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) + ); + } } - } } - - -