44bf1bcc0092163bb03ebfaec92f8ce4403cebcd
[jalview.git] / src / MCview / PDBfile.java
1 package MCview;\r
2 \r
3 import jalview.datamodel.*;\r
4 import java.io.*;\r
5 import java.net.*;\r
6 import java.util.*;\r
7 \r
8 \r
9 public class PDBfile extends jalview.io.FileParse {\r
10 \r
11   public Vector chains = new Vector();\r
12 \r
13   Vector lineArray = new Vector();\r
14 \r
15   public PDBfile(String [] lines)\r
16   {\r
17     for(int i=0; i<lines.length; i++)\r
18       lineArray.addElement(lines[i]);\r
19 \r
20     noLines = lineArray.size();\r
21     parse();\r
22   }\r
23 \r
24   public PDBfile(String inFile, String inType) throws IOException {\r
25 \r
26     super(inFile,inType);\r
27 \r
28     String line;\r
29     this.lineArray = new Vector();\r
30     BufferedReader dataIn;\r
31 \r
32     if (inType.equals("File"))\r
33       dataIn =  new BufferedReader(new FileReader( inFile ));\r
34 \r
35     else\r
36     {\r
37       URL url = new URL(inFile);\r
38       this.fileSize = 0;\r
39       dataIn = new BufferedReader(new InputStreamReader(url.openStream()));\r
40     }\r
41 \r
42     while ((line = dataIn.readLine()) != null) {\r
43       lineArray.addElement(line);\r
44     }\r
45     noLines = lineArray.size();\r
46 \r
47     parse();\r
48 \r
49 }\r
50 \r
51 \r
52   public void parse() {\r
53 \r
54     for (int i = 0; i < lineArray.size(); i++) {\r
55       StringTokenizer str = new StringTokenizer(lineArray.elementAt(i).toString());\r
56       if (str.hasMoreTokens()) {\r
57         String inStr = str.nextToken();\r
58 \r
59         if (inStr.indexOf("ATOM") != -1) {\r
60           try {\r
61             myAtom tmpatom = new myAtom(str);\r
62             if (findChain(tmpatom.chain) != null) {\r
63            //   System.out.println("Adding to chain " + tmpatom.chain);\r
64               findChain(tmpatom.chain).atoms.addElement(tmpatom);\r
65             } else {\r
66             //  System.out.println("Making chain " + tmpatom.chain);\r
67               PDBChain tmpchain = new PDBChain(tmpatom.chain);\r
68               chains.addElement(tmpchain);\r
69               tmpchain.atoms.addElement(tmpatom);\r
70             }\r
71           } catch(NumberFormatException e) {\r
72             System.err.println("Caught" +  e);\r
73             System.err.println("Record not added to PDB model:"+lineArray.elementAt(i).toString());\r
74           }\r
75         }\r
76       }\r
77     }\r
78     makeResidueList();\r
79     makeCaBondList();\r
80     //    for (int i=0; i < chains.size() ; i++) {\r
81     //  String pog = ((PDBChain)chains.elementAt(i)).print();\r
82     //  System.out.println(pog);\r
83     // }\r
84   }\r
85 \r
86   public void makeResidueList() {\r
87     for (int i=0; i < chains.size() ; i++) {\r
88       ((PDBChain)chains.elementAt(i)).makeResidueList();\r
89     }\r
90   }\r
91   public void makeCaBondList() {\r
92     for (int i=0; i < chains.size() ; i++) {\r
93       ((PDBChain)chains.elementAt(i)).makeCaBondList();\r
94     }\r
95   }\r
96 \r
97   public PDBChain findChain(String id) {\r
98     for (int i=0; i < chains.size(); i++) {\r
99       // System.out.println("ID = " + id + " " +((PDBChain)chains.elementAt(i)).id);\r
100       if (((PDBChain)chains.elementAt(i)).id.equals(id)) {\r
101         return (PDBChain)chains.elementAt(i);\r
102       }\r
103     }\r
104     return null;\r
105   }\r
106 \r
107 \r
108   public void setChargeColours() {\r
109     for (int i=0; i < chains.size(); i++) {\r
110       ((PDBChain)chains.elementAt(i)).setChargeColours();\r
111     }\r
112   }\r
113 \r
114   public void setHydrophobicityColours() {\r
115     for (int i=0; i < chains.size(); i++) {\r
116       ((PDBChain)chains.elementAt(i)).setHydrophobicityColours();\r
117     }\r
118   }\r
119 \r
120   public void colourBySequence(Sequence seq) {\r
121 //SMJS TODO\r
122 //    int max = seq.maxchain;\r
123 //    if (seq.maxchain != -1) {\r
124 //      ((PDBChain)chains.elementAt(max)).colourBySequence(seq);\r
125 //    }\r
126   }\r
127 \r
128   public void setChainColours() {\r
129     for (int i=0; i < chains.size(); i++) {\r
130       ((PDBChain)chains.elementAt(i)).setChainColours();\r
131     }\r
132   }\r
133   public static void main(String[] args) {\r
134     try {\r
135       PDBfile pdb = new PDBfile("enkp1.pdb","File");\r
136     } catch(IOException e) {\r
137       System.out.println(e);\r
138       e.printStackTrace();\r
139       System.exit(0);\r
140     }\r
141   }\r
142 }\r
143 \r
144 \r
145 \r