/* * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8) * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle * * This file is part of Jalview. * * Jalview is free software: you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * * Jalview is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with Jalview. If not, see . */ package jalview.io; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; 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; import jalview.datamodel.SecondaryStructureAnnotation; import jalview.datamodel.Sequence; import jalview.datamodel.SequenceFeature; import jalview.datamodel.SequenceI; 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.exceptions.ExceptionUnmatchedClosingParentheses; 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; public class RnamlFile extends AlignFile { public int id; public String namefile; public String name; protected ArrayList 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; } @SuppressWarnings("unchecked") public void parse() throws FileNotFoundException, ExceptionPermissionDenied, ExceptionLoadingFailed, ExceptionFileFormatOrSyntax { result = RNAFactory.loadSecStrRNAML(getReader()); ArrayList allarray = new ArrayList(); ArrayList> 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 allarray = new ArrayList(); ArrayList> 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; } }