v2
[jalview.git] / src / jalview / io / RnamlFile.java
index e614e6b..69786fb 100644 (file)
@@ -10,6 +10,7 @@ import jalview.datamodel.SecondaryStructureAnnotation;
 import jalview.datamodel.Sequence;
 import jalview.datamodel.SequenceFeature;
 import jalview.datamodel.SequenceI;
+import jalview.ws.jws1.Annotate3D;
 
 import java.io.BufferedReader;
 import java.io.FileNotFoundException;
@@ -36,6 +37,7 @@ 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.factories.RNAFactory.RNAFileType;
 import fr.orsay.lri.varna.models.rna.RNA;
 import fr.orsay.lri.varna.utils.RNAMLParser;
 
@@ -45,6 +47,7 @@ import fr.orsay.lri.varna.utils.RNAMLParser;
 public class RnamlFile extends AlignFile
 {
         public String id;
+        protected ArrayList<RNA> result;
         
         public RnamlFile()
          {
@@ -52,36 +55,114 @@ public class RnamlFile extends AlignFile
                
          }
         
-        public RnamlFile(String inFile, String type) throws IOException, ExceptionFileFormatOrSyntax, ParserConfigurationException, SAXException, ExceptionPermissionDenied, ExceptionLoadingFailed
+        public RnamlFile(String inFile, String type) throws IOException, ExceptionFileFormatOrSyntax, ParserConfigurationException, SAXException, ExceptionPermissionDenied, ExceptionLoadingFailed, InterruptedException
          {
            super(inFile, type);
            
          }
 
-         public RnamlFile(FileParse source) throws IOException, ExceptionFileFormatOrSyntax, ParserConfigurationException, SAXException, ExceptionPermissionDenied, ExceptionLoadingFailed
+         public RnamlFile(FileParse source) throws IOException, ExceptionFileFormatOrSyntax, ParserConfigurationException, SAXException, ExceptionPermissionDenied, ExceptionLoadingFailed, InterruptedException
          {
            super(source);
            
          }
          
+//       public RnamlFile(BufferedReader r) throws IOException, ExceptionFileFormatOrSyntax, ParserConfigurationException, SAXException, ExceptionPermissionDenied, ExceptionLoadingFailed
+//       {
+//                     super();            
+//                 parse(r);
+//                 // sets the index of each sequence in the alignment
+//                 for( int i=0,c=seqs.size(); i<c; i++ ) {  
+//                     seqs.get(i).setIndex(i);  
+//                 }
+//               
+//         
+//       }
          
+       public BufferedReader CreateReader() throws FileNotFoundException
+       {
+                FileReader fr = null;
+                 fr = new FileReader(inFile); 
+                 
+                 BufferedReader r = new BufferedReader (fr);
+                 return r;
+       }
        
        
-         public void parse() throws ExceptionPermissionDenied, ExceptionLoadingFailed, ExceptionFileFormatOrSyntax, FileNotFoundException 
-         {
-                 System.out.println("this is a rnaml file");
-                 
-                 
-                 FileReader fr = null;
+       public void parse() throws FileNotFoundException, ExceptionPermissionDenied, ExceptionLoadingFailed, ExceptionFileFormatOrSyntax
+       {
+                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);
+                  
+                 
+                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);
+                 seqs[0].setRNA(result.get(begin));
+                 this.annotations.addElement(align);
+                 
+                 
+               }
+               
+               //Annotate3D tintin = new Annotate3D();
+                 
+               //System.out.println(tintin);  
+       }
+         
+       
+         public void parse(BufferedReader r) throws ExceptionPermissionDenied, ExceptionLoadingFailed, ExceptionFileFormatOrSyntax 
+         {
+                  System.out.println("parse with Buffer (RnamlFile");
                  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(r);
+                 
+                 result = RNAFactory.loadSecStr(r,RNAFileType.FILE_TYPE_RNAML);
                  
                  System.out.println("this is the secondary scructure:" +result.toArray());
                  System.out.println("this is the secondary scructure:" +result.toString());
@@ -110,7 +191,7 @@ public class RnamlFile extends AlignFile
                  for(int j=0;j<rna1.length();j++)
                        {
                  annot[j] =rna1.substring(j,j+1);
-                 System.out.println(annot[j]);
+                 //System.out.println(annot[j]);
                        }
                  
                  for(int k=0;k<rna1.length();k++)
@@ -124,8 +205,9 @@ public class RnamlFile extends AlignFile
                  seqs[0].addAlignmentAnnotation(align);
                  this.annotations.addElement(align);
                }
+               //Annotate3D tintin = new Annotate3D();
                  
-                 
+               //System.out.println(tintin);  
                  
                  
                  
@@ -268,5 +350,14 @@ public class RnamlFile extends AlignFile
            return dataName;
          }
          
+         public ArrayList getRNA()
+         {
+                 return result;
+         }
+         
+         public Vector getAnnot()
+         {
+                 return annotations;
+         }
 }