2 * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3 * Copyright (C) $$Year-Rel$$ The Jalview Authors
5 * This file is part of Jalview.
7 * Jalview is free software: you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation, either version 3
10 * of the License, or (at your option) any later version.
12 * Jalview is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty
14 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 * PURPOSE. See the GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
19 * The Jalview Authors are detailed in the 'AUTHORS' file.
23 import jalview.datamodel.ContactMatrix;
24 import jalview.datamodel.SequenceI;
26 import java.io.IOException;
27 import java.util.ArrayList;
28 import java.util.BitSet;
29 import java.util.HashMap;
30 import java.util.List;
34 * A file parser for contact prediction files.
36 * An example file is the following
46 public class PContactPredictionFile extends AlignFile
48 protected static final String CONTACT_PREDICTION = "CONTACT_PREDICTION";
50 public PContactPredictionFile(String inFile,
51 DataSourceType fileSourceType) throws IOException
53 super(inFile, fileSourceType);
57 public PContactPredictionFile(FileParse source) throws IOException
64 List<ContactMatrix> models = new ArrayList<ContactMatrix>();
66 public List<ContactMatrix> getContactMatrices()
73 * for a contact prediction
75 * alignment for target sequence
76 * contact matrix for sequence
77 * models generated that fit matrix
81 * TODO: create annotation rows from contact matrices.
83 * @see jalview.io.AlignFile#parse()
86 public void parse() throws IOException
90 * stash any header lines if we've been given a CASP-RR file
92 Map<String, String> header = new HashMap<String, String>();
93 ContactMatrix cm = null;
95 while ((line = nextLine()) != null)
98 double strength = Float.NaN;
99 String parts[] = line.split("\\s+");
101 // check for header tokens in parts[0]
103 // others - stash details
104 // MODEL - start a new matrix
107 if (parts.length == 3) // and all are integers
112 cm = new ContactMatrix(true)
115 public String getType()
117 return CONTACT_PREDICTION;
121 public int getHeight()
123 // TODO Auto-generated method stub
124 // return maximum contact height
129 public int getWidth()
131 // TODO Auto-generated method stub
132 // return total number of residues with contacts
141 left = Integer.parseInt(parts[0]);
142 right = Integer.parseInt(parts[1]);
143 strength = Double.parseDouble(parts[2]);
144 } catch (Exception x)
147 errormessage = "Couldn't process line: " + x.getLocalizedMessage()
151 cm.addContact(left, right, (float) strength);
155 throw (new Error("Not Implemented yet."));
159 public String print(SequenceI[] sqs, boolean jvsuffix)
161 // TODO Auto-generated method stub