Formatted source
[jalview.git] / src / MCview / PDBfile.java
1 /*\r
2 * Jalview - A Sequence Alignment Editor and Viewer\r
3 * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
4 *\r
5 * This program is free software; you can redistribute it and/or\r
6 * modify it under the terms of the GNU General Public License\r
7 * as published by the Free Software Foundation; either version 2\r
8 * of the License, or (at your option) any later version.\r
9 *\r
10 * This program is distributed in the hope that it will be useful,\r
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
13 * GNU General Public License for more details.\r
14 *\r
15 * You should have received a copy of the GNU General Public License\r
16 * along with this program; if not, write to the Free Software\r
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\r
18 */\r
19 package MCview;\r
20 \r
21 import jalview.datamodel.*;\r
22 \r
23 import java.io.*;\r
24 \r
25 import java.net.*;\r
26 \r
27 import java.util.*;\r
28 \r
29 \r
30 public class PDBfile extends jalview.io.FileParse {\r
31     public Vector chains = new Vector();\r
32     Vector lineArray = new Vector();\r
33 \r
34     public PDBfile(String[] lines) {\r
35         for (int i = 0; i < lines.length; i++)\r
36             lineArray.addElement(lines[i]);\r
37 \r
38         noLines = lineArray.size();\r
39         parse();\r
40     }\r
41 \r
42     public PDBfile(String inFile, String inType) throws IOException {\r
43         super(inFile, inType);\r
44 \r
45         String line;\r
46         this.lineArray = new Vector();\r
47 \r
48         BufferedReader dataIn;\r
49 \r
50         if (inType.equals("File")) {\r
51             dataIn = new BufferedReader(new FileReader(inFile));\r
52         }\r
53         else {\r
54             URL url = new URL(inFile);\r
55             this.fileSize = 0;\r
56             dataIn = new BufferedReader(new InputStreamReader(url.openStream()));\r
57         }\r
58 \r
59         while ((line = dataIn.readLine()) != null) {\r
60             lineArray.addElement(line);\r
61         }\r
62 \r
63         noLines = lineArray.size();\r
64 \r
65         parse();\r
66     }\r
67 \r
68     public void parse() {\r
69         for (int i = 0; i < lineArray.size(); i++) {\r
70             StringTokenizer str = new StringTokenizer(lineArray.elementAt(i)\r
71                                                                .toString());\r
72 \r
73             if (str.hasMoreTokens()) {\r
74                 String inStr = str.nextToken();\r
75 \r
76                 if (inStr.indexOf("ATOM") != -1) {\r
77                     try {\r
78                         myAtom tmpatom = new myAtom(str);\r
79 \r
80                         if (findChain(tmpatom.chain) != null) {\r
81                             //   System.out.println("Adding to chain " + tmpatom.chain);\r
82                             findChain(tmpatom.chain).atoms.addElement(tmpatom);\r
83                         } else {\r
84                             //  System.out.println("Making chain " + tmpatom.chain);\r
85                             PDBChain tmpchain = new PDBChain(tmpatom.chain);\r
86                             chains.addElement(tmpchain);\r
87                             tmpchain.atoms.addElement(tmpatom);\r
88                         }\r
89                     } catch (NumberFormatException e) {\r
90                         System.err.println("Caught" + e);\r
91                         System.err.println("Record not added to PDB model:" +\r
92                             lineArray.elementAt(i).toString());\r
93                     }\r
94                 }\r
95             }\r
96         }\r
97 \r
98         makeResidueList();\r
99         makeCaBondList();\r
100 \r
101         //    for (int i=0; i < chains.size() ; i++) {\r
102         //  String pog = ((PDBChain)chains.elementAt(i)).print();\r
103         //  System.out.println(pog);\r
104         // }\r
105     }\r
106 \r
107     public void makeResidueList() {\r
108         for (int i = 0; i < chains.size(); i++) {\r
109             ((PDBChain) chains.elementAt(i)).makeResidueList();\r
110         }\r
111     }\r
112 \r
113     public void makeCaBondList() {\r
114         for (int i = 0; i < chains.size(); i++) {\r
115             ((PDBChain) chains.elementAt(i)).makeCaBondList();\r
116         }\r
117     }\r
118 \r
119     public PDBChain findChain(String id) {\r
120         for (int i = 0; i < chains.size(); i++) {\r
121             // System.out.println("ID = " + id + " " +((PDBChain)chains.elementAt(i)).id);\r
122             if (((PDBChain) chains.elementAt(i)).id.equals(id)) {\r
123                 return (PDBChain) chains.elementAt(i);\r
124             }\r
125         }\r
126 \r
127         return null;\r
128     }\r
129 \r
130     public void setChargeColours() {\r
131         for (int i = 0; i < chains.size(); i++) {\r
132             ((PDBChain) chains.elementAt(i)).setChargeColours();\r
133         }\r
134     }\r
135 \r
136     public void setHydrophobicityColours() {\r
137         for (int i = 0; i < chains.size(); i++) {\r
138             ((PDBChain) chains.elementAt(i)).setHydrophobicityColours();\r
139         }\r
140     }\r
141 \r
142     public void colourBySequence(Sequence seq) {\r
143         //SMJS TODO\r
144         //    int max = seq.maxchain;\r
145         //    if (seq.maxchain != -1) {\r
146         //      ((PDBChain)chains.elementAt(max)).colourBySequence(seq);\r
147         //    }\r
148     }\r
149 \r
150     public void setChainColours() {\r
151         for (int i = 0; i < chains.size(); i++) {\r
152             ((PDBChain) chains.elementAt(i)).setChainColours();\r
153         }\r
154     }\r
155 \r
156     public static void main(String[] args) {\r
157         try {\r
158             PDBfile pdb = new PDBfile("enkp1.pdb", "File");\r
159         } catch (IOException e) {\r
160             System.out.println(e);\r
161             e.printStackTrace();\r
162             System.exit(0);\r
163         }\r
164     }\r
165 }\r