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.HashMap;
29 import java.util.List;
33 * A file parser for contact prediction files.
35 * An example file is the following
45 public class PContactPredictionFile extends AlignFile
47 public PContactPredictionFile(String inFile, DataSourceType fileSourceType)
50 super(inFile, fileSourceType);
54 public PContactPredictionFile(FileParse source) throws IOException
61 List<ContactMatrix> models = new ArrayList<ContactMatrix>();
63 public List<ContactMatrix> getContactMatrices()
70 * for a contact prediction
72 * alignment for target sequence
73 * contact matrix for sequence
74 * models generated that fit matrix
78 * TODO: create annotation rows from contact matrices.
80 * @see jalview.io.AlignFile#parse()
83 public void parse() throws IOException
87 * stash any header lines if we've been given a CASP-RR file
89 Map<String, String> header = new HashMap<String, String>();
90 ContactMatrix cm = null;
92 while ((line = nextLine()) != null)
95 double strength = Float.NaN;
96 String parts[] = line.split("\\s+");
98 // check for header tokens in parts[0]
100 // others - stash details
101 // MODEL - start a new matrix
104 if (parts.length == 3) // and all are integers
109 cm = new ContactMatrix(true);
115 left = Integer.parseInt(parts[0]);
116 right = Integer.parseInt(parts[1]);
117 strength = Double.parseDouble(parts[2]);
118 } catch (Exception x)
121 errormessage = "Couldn't process line: "
122 + x.getLocalizedMessage() + "\n" + line;
125 cm.addContact(left, right, (float) strength);
131 public String print(SequenceI[] sqs, boolean jvsuffix)
133 // TODO Auto-generated method stub