+package jalview.io;
+
+
+
+
+
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.Annotation;
+import jalview.datamodel.SecondaryStructureAnnotation;
+import jalview.datamodel.Sequence;
+import jalview.datamodel.SequenceFeature;
+import jalview.datamodel.SequenceI;
+
+import java.io.BufferedReader;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.Reader;
+import java.io.FileReader;
+import java.lang.reflect.Array;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Vector;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+
+import com.stevesoft.pat.Regex;
+
+import fr.orsay.lri.varna.exceptions.ExceptionFileFormatOrSyntax;
+import fr.orsay.lri.varna.exceptions.ExceptionLoadingFailed;
+import fr.orsay.lri.varna.exceptions.ExceptionPermissionDenied;
+import fr.orsay.lri.varna.factories.RNAFactory;
+import fr.orsay.lri.varna.models.rna.RNA;
+import fr.orsay.lri.varna.utils.RNAMLParser;
+
+
+
+
+public class RnamlFile extends AlignFile
+{
+ public String id;
+
+ public RnamlFile()
+ {
+ super();
+
+ }
+
+ public RnamlFile(String inFile, String type) throws IOException, ExceptionFileFormatOrSyntax, ParserConfigurationException, SAXException, ExceptionPermissionDenied, ExceptionLoadingFailed
+ {
+ super(inFile, type);
+
+ }
+
+ public RnamlFile(FileParse source) throws IOException, ExceptionFileFormatOrSyntax, ParserConfigurationException, SAXException, ExceptionPermissionDenied, ExceptionLoadingFailed
+ {
+ super(source);
+
+ }
+
+
+
+
+ public void parse() throws ExceptionPermissionDenied, ExceptionLoadingFailed, ExceptionFileFormatOrSyntax, FileNotFoundException
+ {
+ System.out.println("this is a rnaml file");
+
+
+ FileReader fr = null;
+ fr = new FileReader(inFile);
+
+ BufferedReader r = new BufferedReader (fr);
+
+ Hashtable seqhash = new Hashtable();
+ Vector headers = new Vector();
+ //ArrayList<String> seq =new ArrayList();
+ System.out.println(r);
+ ArrayList<RNA> result = RNAFactory.loadSecStrRNAML(r);
+
+ System.out.println("this is the secondary scructure:" +result.toArray());
+ System.out.println("this is the secondary scructure:" +result.toString());
+ System.out.println("this is the secondary scructure:" +result.size());
+ for(int i=0;i<result.size();i++)
+ {
+ System.out.println(result.get(0).getSeq());
+ System.out.println(result.get(0).getStructBPSEQ());
+ System.out.println(result.get(0).getStructDBN(true));
+ String rna1 =result.get(0).getStructDBN(true);
+ System.out.println(result.get(0).getAnnotations());
+ String seq = result.get(0).getSeq();
+ System.out.println(type); //the type is "File"
+ System.out.println(inFile );//inFile is the path
+ int begin=0;
+ int end = seq.length()-1;
+ SequenceI[] seqs = new SequenceI[1];
+ id = safeName(getDataName());
+ seqs[0] = new Sequence(id, seq, begin, end);
+ SequenceFeature feat = new SequenceFeature(type, "",5, 13, 0f, null);
+ seqs[0].addSequenceFeature(feat);
+ this.setSeqs(seqs);
+
+ String[] annot=new String[10000] ;
+ Annotation[] ann = new Annotation[1000];
+ for(int j=0;j<rna1.length();j++)
+ {
+ annot[j] =rna1.substring(j,j+1);
+ System.out.println(annot[j]);
+ }
+
+ for(int k=0;k<rna1.length();k++)
+ {
+ ann[k] = new Annotation(annot[k], "", ' ', 0f);
+
+ ann[k].secondaryStructure = jalview.schemes.ResidueProperties.getRNASecStrucState(annot[k]).charAt(0);
+
+ }
+ AlignmentAnnotation align = new AlignmentAnnotation("Secondary structure","",ann);
+ seqs[0].addAlignmentAnnotation(align);
+ this.annotations.addElement(align);
+ }
+
+
+
+
+
+
+
+
+
+
+// for(RNAMLParser.RNATmp rnaTmp : RNAMLData.getMolecules())
+// {
+// // Retrieving parsed data
+// seq = rnaTmp.getSequence(); //contient la séquence sous forme de liste
+// System.out.println(seq);
+// String seqAsStr = "";
+// for(String s:seq)
+// {
+// // Only consider last character, e.g. in case of modified nucleotide
+// seqAsStr += s.charAt(s.length()-1);
+// }
+// int begin=0;
+// int end = seqAsStr.length()-1;
+// SequenceI[] seqs = new SequenceI[1];
+// id = safeName(getDataName());
+// seqs[0] = new Sequence(id, seqAsStr, begin, end);
+// SequenceFeature feat = new SequenceFeature(type, "",5, 13, 0f, null);
+//
+// seqs[0].addSequenceFeature(feat);
+// this.setSeqs(seqs);
+
+ //String pos = annot.substring(1, 2);
+ //System.out.println(annot);
+ //System.out.println(pos);
+
+ // ann[1] = new Annotation(pos, "", ' ', 0f);
+ // ann[1].secondaryStructure = 'A';
+ //System.out.println(ann[1]);
+
+ // toto.annotations=ann;
+
+
+
+//// Annotation[] els = new Annotation[seq.size()];
+//
+// //System.err.println(""+seq.size());
+// Vector<RNAMLParser.BPTemp> allbpsTmp = rnaTmp.getStructure();
+// String[] annot = new String[10000];
+//
+// //Annotation[] ann = new Annotation[allbpsTmp.size()];
+// for (int i = 0; i < allbpsTmp.size(); i++) {
+// RNAMLParser.BPTemp bp = allbpsTmp.get(i);
+// //System.err.println("toto ="+bp);
+// int bp5 = bp.pos5;
+// annot[bp5]= "(";
+// //annot[bp5]= '(';
+// System.out.println(annot[bp5]);
+// //System.out.println("bp5 ="+bp5);
+// int bp3 = bp.pos3;
+//
+// annot[bp3]= ")";
+// System.out.println(annot[bp3]);
+// //System.out.println(annot.get(bp3));
+//
+// //String pos1 = annot.substring(bp5, bp5+1);
+// //String pos2 = annot.substring(bp3, bp3+1);
+// //ann[i] = new Annotation(pos1, "", ' ', 0f);
+// //ann[i+1] = new Annotation(pos2, "", ' ', 0f);
+// //System.out.println(pos1);
+//
+// //System.out.println("bp3 ="+bp3);
+// //ModeleBP newStyle = bp.createBPStyle(mb, part);
+// }
+// Annotation[] ann = new Annotation[annot.length+1];
+// for(int i=0;i<annot.length;i++)
+// {
+// if(annot[i]==null)
+// {
+// annot[i]=".";
+// }
+//
+// ann[i] = new Annotation(annot[i], "", ' ', 0f);
+// //System.out.print(annot[i]);
+// }
+//
+// AlignmentAnnotation toto = new AlignmentAnnotation("Secondary structure","",ann);
+// this.annotations.addElement(toto);
+
+ // Creating empty structure of suitable size
+// int[] str = new int[seq.size()];
+// for (int i=0;i<str.length;i++)
+// { str[i] = -1; }
+// Vector<RNAMLParser.BPTemp> allbpsTmp = rnaTmp.getStructure();
+// for (int i = 0; i < allbpsTmp.size(); i++) {
+// RNAMLParser.BPTemp bp = allbpsTmp.get(i);
+// //System.err.println("toto ="+bp);
+// int bp5 = bp.pos5;
+// //System.out.println("bp5 ="+bp5);
+// int bp3 = bp.pos3;
+ //System.out.println("bp3 ="+bp3);
+ //ModeleBP newStyle = bp.createBPStyle(mb, part);
+// }
+ //Annotation ann;
+ //ann = new Annotation(bp5, "", ' ', 0f);
+
+ //}
+
+
+
+// return result;
+
+}
+
+
+ public static String print(SequenceI[] s)
+ {
+ return "not yet implemented";
+ }
+
+ public String print()
+ {
+ System.out.print("affiche :");
+ return print(getSeqsAsArray());
+ }
+
+ /**
+ * 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;
+ }
+
+}
+