Clover icon

jalviewX

  1. Project Clover database Wed Oct 31 2018 15:13:58 GMT
  2. Package jalview.io

File PfamFile.java

 

Coverage histogram

../../img/srcFileCovDistChart9.png
12% of files have more coverage

Code metrics

32
61
6
1
191
139
25
0.41
10.17
6
4.17

Classes

Class Line # Actions
PfamFile 32 61 25 17
0.8282828382.8%
 

Contributing tests

This file is covered by 8 tests. .

Source view

1    /*
2    * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3    * Copyright (C) $$Year-Rel$$ The Jalview Authors
4    *
5    * This file is part of Jalview.
6    *
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.
11    *
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.
16    *
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.
20    */
21    package jalview.io;
22   
23    import jalview.datamodel.Sequence;
24    import jalview.datamodel.SequenceI;
25    import jalview.util.Format;
26    import jalview.util.MessageManager;
27   
28    import java.io.IOException;
29    import java.util.ArrayList;
30    import java.util.HashMap;
31   
 
32    public class PfamFile extends AlignFile
33    {
34   
 
35  1 toggle public PfamFile()
36    {
37    }
38   
 
39  0 toggle public PfamFile(String inFile, DataSourceType sourceType)
40    throws IOException
41    {
42  0 super(inFile, sourceType);
43    }
44   
 
45  9 toggle public PfamFile(FileParse source) throws IOException
46    {
47  9 super(source);
48    }
49   
 
50  10 toggle @Override
51    public void initData()
52    {
53  10 super.initData();
54    }
55   
 
56  9 toggle @Override
57    public void parse() throws IOException
58    {
59  9 int i = 0;
60  9 String line;
61   
62  9 HashMap<String, StringBuffer> seqhash = new HashMap<String, StringBuffer>();
63  9 ArrayList<String> headers = new ArrayList<String>();
64  9 boolean useTabs = false;
65  9 int spces;
66  ? while ((line = nextLine()) != null)
67    {
68  41 if (line.indexOf("#") == 0)
69    {
70    // skip comment lines
71  0 continue;
72    }
73    // locate first space or (if already checked), tab
74  41 if (useTabs)
75    {
76  0 spces = line.indexOf("\t");
77    }
78    else
79    {
80  41 spces = line.indexOf(" ");
81    // check to see if we ought to split on tabs instead.
82  41 if (!useTabs && spces == -1)
83    {
84  3 useTabs = true;
85  3 spces = line.indexOf("\t");
86    }
87    }
88  41 if (spces <= 0)
89    {
90    // no sequence data to split on
91  1 continue;
92    }
93  40 String id = line.substring(0, spces);
94  40 StringBuffer tempseq;
95   
96  40 if (seqhash.containsKey(id))
97    {
98  0 tempseq = seqhash.get(id);
99    }
100    else
101    {
102  40 tempseq = new StringBuffer();
103  40 seqhash.put(id, tempseq);
104    }
105   
106  40 if (!(headers.contains(id)))
107    {
108  40 headers.add(id);
109    }
110  40 if (spces + 1 < line.length())
111    {
112  40 tempseq.append(line.substring(spces + 1).trim());
113    }
114    }
115   
116  9 this.noSeqs = headers.size();
117   
118  9 if (noSeqs < 1)
119    {
120  0 throw new IOException(MessageManager
121    .getString("exception.pfam_no_sequences_found"));
122    }
123   
124  49 for (i = 0; i < headers.size(); i++)
125    {
126  40 if (seqhash.get(headers.get(i)) != null)
127    {
128  40 if (maxLength < seqhash.get(headers.get(i)).toString().length())
129    {
130  10 maxLength = seqhash.get(headers.get(i)).toString().length();
131    }
132   
133  40 Sequence newSeq = parseId(headers.get(i).toString());
134  40 newSeq.setSequence(
135    seqhash.get(headers.get(i).toString()).toString());
136  40 seqs.addElement(newSeq);
137    }
138    else
139    {
140  0 System.err.println("PFAM File reader: Can't find sequence for "
141    + headers.get(i));
142    }
143    }
144    }
145   
 
146  1 toggle @Override
147    public String print(SequenceI[] s, boolean jvsuffix)
148    {
149  1 StringBuffer out = new StringBuffer("");
150   
151  1 int max = 0;
152  1 int maxid = 0;
153   
154  1 int i = 0;
155   
156  16 while ((i < s.length) && (s[i] != null))
157    {
158  15 String tmp = printId(s[i], jvsuffix);
159   
160  15 max = Math.max(max, s[i].getLength());
161   
162  15 if (tmp.length() > maxid)
163    {
164  3 maxid = tmp.length();
165    }
166   
167  15 i++;
168    }
169   
170  1 if (maxid < 15)
171    {
172  1 maxid = 15;
173    }
174   
175  1 int j = 0;
176   
177  16 while ((j < s.length) && (s[j] != null))
178    {
179  15 out.append(new Format("%-" + maxid + "s")
180    .form(printId(s[j], jvsuffix) + " "));
181   
182  15 out.append(s[j].getSequenceAsString());
183  15 out.append(newline);
184  15 j++;
185    }
186   
187  1 out.append(newline);
188   
189  1 return out.toString();
190    }
191    }