X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FRnamlFile.java;h=f48f825030baf8a6581a851ca383b9be94462db1;hb=fbc92d8f171f75002890bfa0ea1f436f7125d3b5;hp=d366edcb24c30b9437f7a9228cf7d0342d0872e3;hpb=aced09c4feeaf3406269442c14e54abeeb4cad81;p=jalview.git diff --git a/src/jalview/io/RnamlFile.java b/src/jalview/io/RnamlFile.java index d366edc..f48f825 100644 --- a/src/jalview/io/RnamlFile.java +++ b/src/jalview/io/RnamlFile.java @@ -1,6 +1,6 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2) - * Copyright (C) 2014 The Jalview Authors + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors * * This file is part of Jalview. * @@ -20,18 +20,21 @@ */ package jalview.io; +import jalview.analysis.Rna; +import jalview.datamodel.AlignmentAnnotation; +import jalview.datamodel.Annotation; +import jalview.datamodel.Sequence; +import jalview.datamodel.SequenceI; +import jalview.util.MessageManager; + import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; +import java.util.List; -import jalview.analysis.SecStrConsensus.SimpleBP; -import jalview.datamodel.AlignmentAnnotation; -import jalview.datamodel.Annotation; -import jalview.datamodel.Sequence; -import jalview.datamodel.SequenceI; -import jalview.util.MessageManager; +import com.stevesoft.pat.Regex; import fr.orsay.lri.varna.exceptions.ExceptionFileFormatOrSyntax; import fr.orsay.lri.varna.exceptions.ExceptionLoadingFailed; @@ -77,6 +80,7 @@ public class RnamlFile extends AlignFile * * @see jalview.io.AlignFile#parse() */ + @Override public void parse() throws IOException { if (System.getProperty("java.version").indexOf("1.6") > -1 @@ -98,21 +102,29 @@ public class RnamlFile extends AlignFile _parse(); } catch (ExceptionPermissionDenied pdx) { - errormessage = MessageManager.formatMessage("exception.rnaml_couldnt_access_datasource", new String[]{pdx.getMessage()}); + errormessage = MessageManager.formatMessage( + "exception.rnaml_couldnt_access_datasource", + new String[] { pdx.getMessage() }); throw new IOException(pdx); } catch (ExceptionLoadingFailed lf) { - errormessage = MessageManager.formatMessage("exception.ranml_couldnt_process_data", new String[]{lf.getMessage()}); + errormessage = MessageManager.formatMessage( + "exception.ranml_couldnt_process_data", + new String[] { lf.getMessage() }); throw new IOException(lf); } catch (ExceptionFileFormatOrSyntax iff) { - errormessage = MessageManager.formatMessage("exception.ranml_invalid_file", new String[]{iff.getMessage()}); + errormessage = MessageManager.formatMessage( + "exception.ranml_invalid_file", + new String[] { iff.getMessage() }); throw new IOException(iff); } catch (Exception x) { error = true; - errormessage = MessageManager.formatMessage("exception.ranml_problem_parsing_data", new String[]{x.getMessage()}); - throw new IOException(errormessage , x); + errormessage = MessageManager.formatMessage( + "exception.ranml_problem_parsing_data", + new String[] { x.getMessage() }); + throw new IOException(errormessage, x); } } @@ -124,10 +136,10 @@ public class RnamlFile extends AlignFile result = RNAFactory.loadSecStrRNAML(getReader()); - ArrayList allarray = new ArrayList(); - ArrayList> BP = new ArrayList(); - ArrayList strucinarray = new ArrayList(); - SequenceI[] seqs = new SequenceI[result.size()]; + // ArrayList allarray = new ArrayList(); + // ArrayList> BP = new ArrayList(); + // ArrayList strucinarray = new ArrayList(); + SequenceI[] sqs = new SequenceI[result.size()]; for (int i = 0; i < result.size(); i++) { @@ -139,9 +151,17 @@ public class RnamlFile extends AlignFile int end = seq.length(); id = current.getName(); - seqs[i] = new Sequence(id, seq, begin, end); + if (id == null || id.trim().length() == 0) + { + id = safeName(getDataName()); + if (result.size() > 1) + { + id += "." + i; + } + } + sqs[i] = new Sequence(id, seq, begin, end); - seqs[i].setEnd(seqs[i].findPosition(seqs[i].getLength())); + sqs[i].setEnd(sqs[i].findPosition(sqs[i].getLength())); String[] annot = new String[rna.length()]; Annotation[] ann = new Annotation[rna.length()]; @@ -152,25 +172,27 @@ public class RnamlFile extends AlignFile } for (int k = 0; k < rna.length(); k++) { - ann[k] = new Annotation(annot[k], "", - jalview.schemes.ResidueProperties.getRNASecStrucState( - annot[k]).charAt(0), 0f); + ann[k] = new Annotation(annot[k], "", Rna.getRNASecStrucState( + annot[k]).charAt(0), 0f); } - AlignmentAnnotation align = new AlignmentAnnotation("Sec. str.", - current.getID(), ann); + AlignmentAnnotation align = new AlignmentAnnotation( + "Secondary Structure", + current.getID().trim().length() > 0 ? "Secondary Structure for " + + current.getID() + : "", ann); - seqs[i].addAlignmentAnnotation(align); - seqs[i].setRNA(result.get(i)); + sqs[i].addAlignmentAnnotation(align); + sqs[i].setRNA(result.get(i)); - allarray.add(strucinarray); + // allarray.add(strucinarray); annotations.addElement(align); - BP.add(align.bps); + // BP.add(align.bps); } - setSeqs(seqs); + setSeqs(sqs); } public static String print(SequenceI[] s) @@ -178,13 +200,14 @@ public class RnamlFile extends AlignFile return "not yet implemented"; } + @Override public String print() { System.out.print("print :"); return print(getSeqsAsArray()); } - public ArrayList getRNA() + public List getRNA() { return result; } @@ -204,13 +227,18 @@ public class RnamlFile extends AlignFile private String safeName(String dataName) { int b = 0; - while ((b = dataName.indexOf("/")) > -1 && b < dataName.length()) + if ((b = dataName.lastIndexOf(".")) > 0) { - dataName = dataName.substring(b + 1).trim(); - + dataName = dataName.substring(0, b - 1); + } + b = 0; + Regex m = new Regex("[\\/]?([-A-Za-z0-9]+)\\.?"); + String mm = dataName; + while (m.searchFrom(dataName, b)) + { + mm = m.stringMatched(); + b = m.matchedTo(); } - int e = (dataName.length() - dataName.indexOf(".")) + 1; - dataName = dataName.substring(1, e).trim(); - return dataName; + return mm; } }