+++ /dev/null
-package fr.orsay.lri.varna.factories;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Hashtable;
-import java.util.Stack;
-
-import fr.orsay.lri.varna.exceptions.ExceptionFileFormatOrSyntax;
-import fr.orsay.lri.varna.exceptions.ExceptionUnmatchedClosingParentheses;
-import fr.orsay.lri.varna.models.rna.RNA;
-
-/**
- * BH SwingJS -- must explicitly check for array out of bounds
- */
-public class RNAAlignment {
- private ArrayList<String> _lst = new ArrayList<String> ();
- private Hashtable<String, Integer> _index = new Hashtable<String, Integer> ();
- private Hashtable<String, String> _accession = new Hashtable<String, String> ();
- private String _secStr = "";
-
- public void addSequence(String id, String s)
- {
- if (!_index.containsKey(id))
- {
- _index.put(id,_lst.size());
- _lst.add(s);
- }
- _lst.set(_index.get(id),s);
- }
-
- public void setSecStr(String s)
- {
- _secStr = s;
- }
-
- public void setAccession(String id, String AC)
- {
- _accession.put(id,AC);
- }
-
- public ArrayList<RNA> getRNAs() throws ExceptionUnmatchedClosingParentheses
- {
- ArrayList<RNA> result = new ArrayList<RNA>();
- int[] str = RNAFactory.parseSecStr(_secStr);
- ArrayList<String> ids = new ArrayList<String>(_index.keySet());
- Collections.sort(ids,new Comparator<String>(){
- public int compare(String o1, String o2) {
- return o1.compareToIgnoreCase(o2);
- }});
- for (String id: ids )
- {
- int n = _index.get(id);
- String seq = _lst.get(n);
- if (seq.length() != str.length)
- throw new ArrayIndexOutOfBoundsException(); // BH SwingJS -- must explicitly check for array out of bounds
- String nseq ="";
- String nstr ="";
- for(int i=0;i<seq.length();i++)
- {
- char c = seq.charAt(i);
- int j = str[i];
-
- if (!(c=='.' || c==':' || c=='-'))
- {
- nseq += c;
- if (j==-1)
- {
- nstr += '.';
- }
- else
- {
- int cp = seq.charAt(j);
- if (cp=='.' || cp==':' || cp=='-')
- {
- nstr += '.';
- }
- else
- {
- nstr += _secStr.charAt(i);
- }
- }
- }
- }
- RNA r = new RNA();
- try {
- r.setRNA(nseq, nstr);
- r.setName(id);
- if (_accession.containsKey(id))
- {
- r.setID(_accession.get(id));
- }
- else
- {
- r.setID(id);
- }
- result.add(r);
- } catch (ExceptionFileFormatOrSyntax e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- return result;
- }
-}