Clover icon

Coverage Report

  1. Project Clover database Thu Nov 7 2024 17:01:39 GMT
  2. Package jalview.io

File PfamFile.java

 

Coverage histogram

../../img/srcFileCovDistChart0.png
0% of files have more coverage

Code metrics

32
61
6
1
192
140
25
0.41
10.17
6
4.17

Classes

Class Line # Actions
PfamFile 32 61 25
0.00%
 

Contributing tests

No tests hitting this source file were found.

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  0 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  0 toggle public PfamFile(FileParse source) throws IOException
46    {
47  0 super(source);
48    }
49   
 
50  0 toggle @Override
51    public void initData()
52    {
53  0 super.initData();
54    }
55   
 
56  0 toggle @Override
57    public void parse() throws IOException
58    {
59  0 int i = 0;
60  0 String line;
61   
62  0 HashMap<String, StringBuffer> seqhash = new HashMap<String, StringBuffer>();
63  0 ArrayList<String> headers = new ArrayList<String>();
64  0 boolean useTabs = false;
65  0 int spces;
66  0 while ((line = nextLine()) != null)
67    {
68  0 if (line.indexOf("#") == 0)
69    {
70    // skip comment lines
71  0 continue;
72    }
73    // locate first space or (if already checked), tab
74  0 if (useTabs)
75    {
76  0 spces = line.indexOf("\t");
77    }
78    else
79    {
80  0 spces = line.indexOf(" ");
81    // check to see if we ought to split on tabs instead.
82  0 if (!useTabs && spces == -1)
83    {
84  0 useTabs = true;
85  0 spces = line.indexOf("\t");
86    }
87    }
88  0 if (spces <= 0)
89    {
90    // no sequence data to split on
91  0 continue;
92    }
93  0 String id = line.substring(0, spces);
94  0 StringBuffer tempseq;
95   
96  0 if (seqhash.containsKey(id))
97    {
98  0 tempseq = seqhash.get(id);
99    }
100    else
101    {
102  0 tempseq = new StringBuffer();
103  0 seqhash.put(id, tempseq);
104    }
105   
106  0 if (!(headers.contains(id)))
107    {
108  0 headers.add(id);
109    }
110  0 if (spces + 1 < line.length())
111    {
112  0 tempseq.append(line.substring(spces + 1).trim());
113    }
114    }
115   
116  0 this.noSeqs = headers.size();
117   
118  0 if (noSeqs < 1)
119    {
120  0 throw new IOException(MessageManager
121    .getString("exception.pfam_no_sequences_found"));
122    }
123   
124  0 for (i = 0; i < headers.size(); i++)
125    {
126  0 if (seqhash.get(headers.get(i)) != null)
127    {
128  0 if (maxLength < seqhash.get(headers.get(i)).toString().length())
129    {
130  0 maxLength = seqhash.get(headers.get(i)).toString().length();
131    }
132   
133  0 Sequence newSeq = parseId(headers.get(i).toString());
134  0 newSeq.setSequence(
135    seqhash.get(headers.get(i).toString()).toString());
136  0 seqs.addElement(newSeq);
137    }
138    else
139    {
140  0 jalview.bin.Console
141    .errPrintln("PFAM File reader: Can't find sequence for "
142    + headers.get(i));
143    }
144    }
145    }
146   
 
147  0 toggle @Override
148    public String print(SequenceI[] s, boolean jvsuffix)
149    {
150  0 StringBuffer out = new StringBuffer("");
151   
152  0 int max = 0;
153  0 int maxid = 0;
154   
155  0 int i = 0;
156   
157  0 while ((i < s.length) && (s[i] != null))
158    {
159  0 String tmp = printId(s[i], jvsuffix);
160   
161  0 max = Math.max(max, s[i].getLength());
162   
163  0 if (tmp.length() > maxid)
164    {
165  0 maxid = tmp.length();
166    }
167   
168  0 i++;
169    }
170   
171  0 if (maxid < 15)
172    {
173  0 maxid = 15;
174    }
175   
176  0 int j = 0;
177   
178  0 while ((j < s.length) && (s[j] != null))
179    {
180  0 out.append(new Format("%-" + maxid + "s")
181    .form(printId(s[j], jvsuffix) + " "));
182   
183  0 out.append(s[j].getSequenceAsString());
184  0 out.append(newline);
185  0 j++;
186    }
187   
188  0 out.append(newline);
189   
190  0 return out.toString();
191    }
192    }