Clover icon

jalviewX

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

File RnamlFile.java

 

Coverage histogram

../../img/srcFileCovDistChart7.png
28% of files have more coverage

Code metrics

18
58
9
1
239
156
24
0.41
6.44
9
2.67

Classes

Class Line # Actions
RnamlFile 45 58 24 29
0.6588235565.9%
 

Contributing tests

This file is covered by 1 test. .

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.analysis.Rna;
24    import jalview.datamodel.AlignmentAnnotation;
25    import jalview.datamodel.Annotation;
26    import jalview.datamodel.Sequence;
27    import jalview.datamodel.SequenceI;
28    import jalview.util.MessageManager;
29   
30    import java.io.BufferedReader;
31    import java.io.FileNotFoundException;
32    import java.io.FileReader;
33    import java.io.IOException;
34    import java.util.ArrayList;
35    import java.util.List;
36   
37    import com.stevesoft.pat.Regex;
38   
39    import fr.orsay.lri.varna.exceptions.ExceptionFileFormatOrSyntax;
40    import fr.orsay.lri.varna.exceptions.ExceptionLoadingFailed;
41    import fr.orsay.lri.varna.exceptions.ExceptionPermissionDenied;
42    import fr.orsay.lri.varna.factories.RNAFactory;
43    import fr.orsay.lri.varna.models.rna.RNA;
44   
 
45    public class RnamlFile extends AlignFile
46    {
47    public String id;
48   
49    protected ArrayList<RNA> result;
50   
 
51  0 toggle public RnamlFile()
52    {
53  0 super();
54   
55    }
56   
 
57  0 toggle public RnamlFile(String inFile, DataSourceType type) throws IOException
58    {
59  0 super(inFile, type);
60   
61    }
62   
 
63  1 toggle public RnamlFile(FileParse source) throws IOException
64    {
65  1 super(source);
66   
67    }
68   
 
69  0 toggle public BufferedReader CreateReader() throws FileNotFoundException
70    {
71  0 FileReader fr = null;
72  0 fr = new FileReader(inFile);
73   
74  0 BufferedReader r = new BufferedReader(fr);
75  0 return r;
76    }
77   
78    /*
79    * (non-Javadoc)
80    *
81    * @see jalview.io.AlignFile#parse()
82    */
 
83  1 toggle @Override
84    public void parse() throws IOException
85    {
86  1 if (System.getProperty("java.version").indexOf("1.6") > -1
87    || System.getProperty("java.version").indexOf("1.5") > -1)
88    {
89    // patch for 'This parser does not support specification "null" version
90    // "null"' error
91    // this hack ensures we get a properly updated SAXParserFactory on older
92    // JVMs
93    // thanks to Stefan Birkner over at https://coderwall.com/p/kqsrrw
94  0 System.setProperty("javax.xml.parsers.SAXParserFactory",
95    "com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl");
96    }
97    // rather than lose exception semantics whilst parsing RNAML with VARNA we
98    // wrap the routine and catch all exceptions before passing them up the
99    // chain as an IOException
100  1 try
101    {
102  1 _parse();
103    } catch (ExceptionPermissionDenied pdx)
104    {
105  0 errormessage = MessageManager.formatMessage(
106    "exception.rnaml_couldnt_access_datasource", new String[]
107    { pdx.getMessage() });
108  0 throw new IOException(pdx);
109    } catch (ExceptionLoadingFailed lf)
110    {
111  0 errormessage = MessageManager.formatMessage(
112    "exception.ranml_couldnt_process_data", new String[]
113    { lf.getMessage() });
114  0 throw new IOException(lf);
115    } catch (ExceptionFileFormatOrSyntax iff)
116    {
117  0 errormessage = MessageManager
118    .formatMessage("exception.ranml_invalid_file", new String[]
119    { iff.getMessage() });
120  0 throw new IOException(iff);
121    } catch (Exception x)
122    {
123  0 error = true;
124  0 errormessage = MessageManager.formatMessage(
125    "exception.ranml_problem_parsing_data", new String[]
126    { x.getMessage() });
127  0 throw new IOException(errormessage, x);
128    }
129    }
130   
 
131  1 toggle @SuppressWarnings("unchecked")
132    public void _parse()
133    throws FileNotFoundException, ExceptionPermissionDenied,
134    ExceptionLoadingFailed, ExceptionFileFormatOrSyntax
135    {
136   
137  1 result = RNAFactory.loadSecStrRNAML(getReader());
138   
139    // ArrayList<ArrayList> allarray = new ArrayList();
140    // ArrayList<ArrayList<SimpleBP>> BP = new ArrayList();
141    // ArrayList strucinarray = new ArrayList();
142  1 SequenceI[] sqs = new SequenceI[result.size()];
143   
144  3 for (int i = 0; i < result.size(); i++)
145    {
146   
147  2 RNA current = result.get(i);
148  2 String rna = current.getStructDBN(true);
149  2 String seq = current.getSeq();
150  2 int begin = 1;
151  2 int end = seq.length();
152   
153  2 id = current.getName();
154  2 if (id == null || id.trim().length() == 0)
155    {
156  2 id = safeName(getDataName());
157  2 if (result.size() > 1)
158    {
159  2 id += "." + i;
160    }
161    }
162  2 sqs[i] = new Sequence(id, seq, begin, end);
163   
164  2 sqs[i].setEnd(sqs[i].findPosition(sqs[i].getLength()));
165  2 String[] annot = new String[rna.length()];
166  2 Annotation[] ann = new Annotation[rna.length()];
167   
168  545 for (int j = 0; j < rna.length(); j++)
169    {
170  543 annot[j] = "" + rna.charAt(j);
171   
172    }
173  545 for (int k = 0; k < rna.length(); k++)
174    {
175  543 ann[k] = new Annotation(annot[k], "",
176    Rna.getRNASecStrucState(annot[k]).charAt(0), 0f);
177    }
178   
179  2 AlignmentAnnotation align = new AlignmentAnnotation(
180    "Secondary Structure",
181  2 current.getID().trim().length() > 0
182    ? "Secondary Structure for " + current.getID()
183    : "",
184    ann);
185   
186  2 sqs[i].addAlignmentAnnotation(align);
187  2 sqs[i].setRNA(result.get(i));
188   
189    // allarray.add(strucinarray);
190   
191  2 annotations.addElement(align);
192    // BP.add(align.bps);
193   
194    }
195   
196  1 setSeqs(sqs);
197    }
198   
 
199  0 toggle @Override
200    public String print(SequenceI[] s, boolean jvSuffix)
201    {
202  0 return "not yet implemented";
203    }
204   
 
205  0 toggle public List<RNA> getRNA()
206    {
207  0 return result;
208    }
209   
210    // public static void main(String[] args) {
211    // Pattern p= Pattern.compile("(.+)[.][^.]+");
212    // Matcher m = p.matcher("toto.xml.zip");
213    // System.out.println(m.matches());
214    // System.out.println(m.group(1));
215    // }
216    /**
217    * make a friendly ID string.
218    *
219    * @param dataName
220    * @return truncated dataName to after last '/'
221    */
 
222  2 toggle private String safeName(String dataName)
223    {
224  2 int b = 0;
225  ? if ((b = dataName.lastIndexOf(".")) > 0)
226    {
227  2 dataName = dataName.substring(0, b - 1);
228    }
229  2 b = 0;
230  2 Regex m = new Regex("[\\/]?([-A-Za-z0-9]+)\\.?");
231  2 String mm = dataName;
232  8 while (m.searchFrom(dataName, b))
233    {
234  6 mm = m.stringMatched();
235  6 b = m.matchedTo();
236    }
237  2 return mm;
238    }
239    }