JAL-1140 reinstate the simpler version of parsing code from annotate3d update
authorJim Procter <jprocter@compbio.dundee.ac.uk>
Thu, 14 Feb 2013 18:08:54 +0000 (18:08 +0000)
committerJim Procter <jprocter@compbio.dundee.ac.uk>
Thu, 14 Feb 2013 18:08:54 +0000 (18:08 +0000)
src/jalview/io/RnamlFile.java

index 1d14dae..7b89909 100644 (file)
@@ -22,11 +22,7 @@ import java.io.FileNotFoundException;
 import java.io.FileReader;
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.Vector;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
 
-import jalview.analysis.SecStrConsensus;
 import jalview.analysis.SecStrConsensus.SimpleBP;
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.Annotation;
@@ -39,210 +35,181 @@ import fr.orsay.lri.varna.exceptions.ExceptionPermissionDenied;
 import fr.orsay.lri.varna.factories.RNAFactory;
 import fr.orsay.lri.varna.models.rna.RNA;
 
-/**
- * @author jimp
- *
- */
-public class RnamlFile extends AlignFile {
-       public int id;
-       public String namefile;
-       public String name;
-       protected ArrayList<RNA> result;
-
-       public RnamlFile() {
-               super();
-
-       }
-
-       public RnamlFile(String inFile, String type) throws Exception {
-               super(inFile, type);
-
-       }
-
-       public RnamlFile(FileParse source) throws Exception {
-               super(source);
-
-       }
-
-       public BufferedReader CreateReader() throws FileNotFoundException {
-               FileReader fr = null;
-               fr = new FileReader(inFile);
-
-               BufferedReader r = new BufferedReader(fr);
-               return r;
-       }
-
-       /* (non-Javadoc)
-        * @see jalview.io.AlignFile#parse()
-        */
-       public void parse() throws IOException
-       {
-        // rather than lose exception semantics whilst parsing RNAML with VARNA we
-        // wrap the routine and catch all exceptions before passing them up the
-        // chain as an IOException
-         try {
-           _parse();
-         } catch (Exception x)
-         {
-           error=true;
-           errormessage="Problem parsing data as RNAML ("+x.getMessage()+")";
-           throw new IOException("Couldn't parse the datasource as RNAML",x);
-         }
-       }
-       @SuppressWarnings("unchecked")
-       public void _parse() throws FileNotFoundException,
-                       ExceptionPermissionDenied, ExceptionLoadingFailed,
-                       ExceptionFileFormatOrSyntax {
-
-               result = RNAFactory.loadSecStrRNAML(getReader());
-
-               ArrayList<ArrayList> allarray = new ArrayList();
-               ArrayList<ArrayList<SimpleBP>> BP = new ArrayList();
-               ArrayList strucinarray = new ArrayList();
-               SequenceI[] seqs = new SequenceI[result.size()];
-               namefile = inFile.getName();
-
-               for (int i = 0; i < result.size(); i++) {
-
-                       RNA current = result.get(i);
-                       String rna = current.getStructDBN(true);
-                       String seq = current.getSeq();
-                       int begin = 1;
-                       int end = 1000;
-                       id = i;
-                       System.out.println("id=" + i);
-                       name = this.safeName(namefile, i);
-                       seqs[i] = new Sequence(name, seq, begin, end);
-
-                       seqs[i].setEnd(seqs[i].findPosition(seqs[i].getLength()));
-                       String[] annot = new String[rna.length()];
-                       Annotation[] ann = new Annotation[rna.length()];
-
-                       for (int j = 0; j < rna.length(); j++) {
-                               annot[j] = "" + rna.charAt(j);
-
-                       }
-                       for (int k = 0; k < rna.length(); k++) {
-                               ann[k] = new Annotation(annot[k], "",
-                                               jalview.schemes.ResidueProperties.getRNASecStrucState(
-                                                               annot[k]).charAt(0), 0f);
-                       }
-
-                       AlignmentAnnotation align = new AlignmentAnnotation("Sec. str.",
-                                       current.getID(), ann);
-
-                       seqs[i].addAlignmentAnnotation(align);
-                       seqs[i].setRNA(result.get(i));
-
-                       char[] struc = align.getRNAStruc().toCharArray();
-
-                       allarray.add(strucinarray);
-
-                       this.annotations.addElement(align);
-                       BP.add(align.bps);
-                       
-               }
-               this.setSeqs(seqs);
-               int[] tab = SecStrConsensus.extractConsensus(BP);
-
-
-       }
-
-       public void parse(BufferedReader r) throws ExceptionPermissionDenied,
-                       ExceptionLoadingFailed, ExceptionFileFormatOrSyntax {
-
-               result = RNAFactory.loadSecStrRNAML(r);
-
-               ArrayList<ArrayList> allarray = new ArrayList();
-               ArrayList<ArrayList<SimpleBP>> BP = new ArrayList();
-               ArrayList strucinarray = new ArrayList();
-               SequenceI[] seqs = new SequenceI[result.size()];
-               namefile = inFile.getName();
-
-               for (int i = 0; i < result.size(); i++) {
-
-                       RNA current = result.get(i);
-                       String rna = current.getStructDBN(true);
-
-                       String seq = current.getSeq();
-                       int begin = 1;
-                       int end = 1000;
-                       id = i;
-                       name = this.safeName(namefile, i);
-                       seqs[i] = new Sequence(name, seq, begin, end);
-
-                       seqs[i].setEnd(seqs[i].findPosition(seqs[i].getLength()));
-                       String[] annot = new String[rna.length()];
-                       Annotation[] ann = new Annotation[rna.length()];
-
-                       for (int j = 0; j < rna.length(); j++) {
-                               annot[j] = "" + rna.charAt(j);
-
-                       }
-                       for (int k = 0; k < rna.length(); k++) {
-                               ann[k] = new Annotation(annot[k], "",
-                                               jalview.schemes.ResidueProperties.getRNASecStrucState(
-                                                               annot[k]).charAt(0), 0f);
-                       }
-
-                       AlignmentAnnotation align = new AlignmentAnnotation("Sec. str.",
-                                       current.getID(), ann);
-
-                       seqs[i].addAlignmentAnnotation(align);
-                       seqs[i].setRNA(result.get(i));
-
-                       char[] struc = align.getRNAStruc().toCharArray();
-                       for (int y = 0; y < struc.length; y++) {
-                               strucinarray.add(struc[y]);
-                               // System.out.println("structy"+struc[y]);
-                       }
-                       // System.out.println("Sequence"+i+"\t : "+strucinarray.toString());
-                       allarray.add(strucinarray);
-
-                       this.annotations.addElement(align);
-                       System.out.println(rna);
-                       BP.add(align.bps);
-                       System.out.println(align.bps.size());
-               }
-               this.setSeqs(seqs);
-               int[] tab = SecStrConsensus.extractConsensus(BP);
-
-       
-       }
-
-       
-
-       public static String print(SequenceI[] s) {
-               return "not yet implemented";
-       }
-
-       public String print() {
-               System.out.print("print :");
-               return print(getSeqsAsArray());
-       }
-
-       public ArrayList getRNA() {
-               return result;
-       }
-
-       public Vector getAnnot() {
-               return annotations;
-       }
-
-       // public static void main(String[] args) {
-       // Pattern p= Pattern.compile("(.+)[.][^.]+");
-       // Matcher m = p.matcher("toto.xml.zip");
-       // System.out.println(m.matches());
-       // System.out.println(m.group(1));
-       // }
-       public String safeName(String namefile, int id) {
-
-               Pattern p = Pattern.compile("(.*)[.][^.]+");
-               Matcher m = p.matcher(namefile);
-               name = m.group(1) + "_" + id;
-
-               return name;
-
-       }
-
+public class RnamlFile extends AlignFile
+{
+  public String id;
+
+  protected ArrayList<RNA> result;
+
+  public RnamlFile()
+  {
+    super();
+
+  }
+
+  public RnamlFile(String inFile, String type) throws IOException
+  {
+    super(inFile, type);
+
+  }
+
+  public RnamlFile(FileParse source) throws IOException
+  {
+    super(source);
+
+  }
+
+  public BufferedReader CreateReader() throws FileNotFoundException
+  {
+    FileReader fr = null;
+    fr = new FileReader(inFile);
+
+    BufferedReader r = new BufferedReader(fr);
+    return r;
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see jalview.io.AlignFile#parse()
+   */
+  public void parse() throws IOException
+  {
+    if (System.getProperty("java.version").indexOf("1.6") > -1
+            || System.getProperty("java.version").indexOf("1.5") > -1)
+    {
+      // patch for 'This parser does not support specification "null" version
+      // "null"' error
+      // this hack ensures we get a properly updated SAXParserFactory on older
+      // JVMs
+      // thanks to Stefan Birkner over at https://coderwall.com/p/kqsrrw
+      System.setProperty("javax.xml.parsers.SAXParserFactory",
+              "com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl");
+    }
+    // rather than lose exception semantics whilst parsing RNAML with VARNA we
+    // wrap the routine and catch all exceptions before passing them up the
+    // chain as an IOException
+    try
+    {
+      _parse();
+    } catch (ExceptionPermissionDenied pdx)
+    {
+      errormessage = "Couldn't access datasource (" + pdx.getMessage()
+              + ")";
+      throw new IOException(pdx);
+    } catch (ExceptionLoadingFailed lf)
+    {
+      errormessage = "Couldn't process data as RNAML file ("
+              + lf.getMessage() + ")";
+      throw new IOException(lf);
+    } catch (ExceptionFileFormatOrSyntax iff)
+    {
+      errormessage = "Invalid RNAML file (" + iff.getMessage() + ")";
+      throw new IOException(iff);
+    } catch (Exception x)
+    {
+      error = true;
+      errormessage = "Problem parsing data as RNAML (" + x.getMessage()
+              + ")";
+      throw new IOException("Couldn't parse the datasource as RNAML", x);
+    }
+  }
+
+  @SuppressWarnings("unchecked")
+  public void _parse() throws FileNotFoundException,
+          ExceptionPermissionDenied, ExceptionLoadingFailed,
+          ExceptionFileFormatOrSyntax
+  {
+
+    result = RNAFactory.loadSecStrRNAML(getReader());
+
+    ArrayList<ArrayList> allarray = new ArrayList();
+    ArrayList<ArrayList<SimpleBP>> BP = new ArrayList();
+    ArrayList strucinarray = new ArrayList();
+    SequenceI[] seqs = new SequenceI[result.size()];
+
+    for (int i = 0; i < result.size(); i++)
+    {
+
+      RNA current = result.get(i);
+      String rna = current.getStructDBN(true);
+      String seq = current.getSeq();
+      int begin = 1;
+      int end = seq.length();
+
+      id = current.getName();
+      seqs[i] = new Sequence(id, seq, begin, end);
+
+      seqs[i].setEnd(seqs[i].findPosition(seqs[i].getLength()));
+      String[] annot = new String[rna.length()];
+      Annotation[] ann = new Annotation[rna.length()];
+
+      for (int j = 0; j < rna.length(); j++)
+      {
+        annot[j] = "" + rna.charAt(j);
+
+      }
+      for (int k = 0; k < rna.length(); k++)
+      {
+        ann[k] = new Annotation(annot[k], "",
+                jalview.schemes.ResidueProperties.getRNASecStrucState(
+                        annot[k]).charAt(0), 0f);
+      }
+
+      AlignmentAnnotation align = new AlignmentAnnotation("Sec. str.",
+              current.getID(), ann);
+
+      seqs[i].addAlignmentAnnotation(align);
+      seqs[i].setRNA(result.get(i));
+
+      allarray.add(strucinarray);
+
+      annotations.addElement(align);
+      BP.add(align.bps);
+
+    }
+
+    setSeqs(seqs);
+  }
+
+  public static String print(SequenceI[] s)
+  {
+    return "not yet implemented";
+  }
+
+  public String print()
+  {
+    System.out.print("print :");
+    return print(getSeqsAsArray());
+  }
+
+  public ArrayList getRNA()
+  {
+    return result;
+  }
+
+  // public static void main(String[] args) {
+  // Pattern p= Pattern.compile("(.+)[.][^.]+");
+  // Matcher m = p.matcher("toto.xml.zip");
+  // System.out.println(m.matches());
+  // System.out.println(m.group(1));
+  // }
+  /**
+   * make a friendly ID string.
+   * 
+   * @param dataName
+   * @return truncated dataName to after last '/'
+   */
+  private String safeName(String dataName)
+  {
+    int b = 0;
+    while ((b = dataName.indexOf("/")) > -1 && b < dataName.length())
+    {
+      dataName = dataName.substring(b + 1).trim();
+
+    }
+    int e = (dataName.length() - dataName.indexOf(".")) + 1;
+    dataName = dataName.substring(1, e).trim();
+    return dataName;
+  }
 }