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