X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FStockholmFile.java;fp=src%2Fjalview%2Fio%2FStockholmFile.java;h=606540f5b4196d2eac2beab31f685da364d9239b;hb=bab4b08733a9543bdce5c0b9d1c32ca7d18ad9e3;hp=71e369eb6163e9bc31ecaa10336175c9d3e61f91;hpb=c4c5d134453fa4138d8857742ff05c09350d1283;p=jalview.git diff --git a/src/jalview/io/StockholmFile.java b/src/jalview/io/StockholmFile.java index 71e369e..606540f 100644 --- a/src/jalview/io/StockholmFile.java +++ b/src/jalview/io/StockholmFile.java @@ -83,7 +83,13 @@ public class StockholmFile extends AlignFile public static final Regex DETECT_BRACKETS = new Regex( "(<|>|\\[|\\]|\\(|\\)|\\{|\\})"); - public static final String RNASS_BRACKETS = "<>[]() {}AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz"; + // WUSS extended symbols. Avoid ambiguity with protein SS annotations by using NOT_RNASS first. + public static final String RNASS_BRACKETS = "<>[](){}AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz"; + + // use the following regex to decide an annotations (whole) line is NOT an RNA + // SS (it contains only E,H,e,h and other non-brace/non-alpha chars) + private static final Regex NOT_RNASS = new Regex( + "^[^<>[\\](){}A-DF-Za-df-z]*$"); StringBuffer out; // output buffer @@ -199,7 +205,7 @@ public class StockholmFile extends AlignFile String version; // String id; Hashtable seqAnn = new Hashtable(); // Sequence related annotations - LinkedHashMap seqs = new LinkedHashMap<>(); + LinkedHashMap seqs = new LinkedHashMap(); Regex p, r, rend, s, x; // Temporary line for processing RNA annotation // String RNAannot = ""; @@ -660,7 +666,7 @@ public class StockholmFile extends AlignFile strucAnn = new Hashtable(); } - Vector newStruc = new Vector<>(); + Vector newStruc = new Vector(); parseAnnotationRow(newStruc, type, ns); for (AlignmentAnnotation alan : newStruc) { @@ -712,7 +718,7 @@ public class StockholmFile extends AlignFile private void guessDatabaseFor(Sequence seqO, String dbr, String dbsource) { DBRefEntry dbrf = null; - List dbrs = new ArrayList<>(); + List dbrs = new ArrayList(); String seqdb = "Unknown", sdbac = "" + dbr; int st = -1, en = -1, p; if ((st = sdbac.indexOf("/")) > -1) @@ -816,12 +822,6 @@ public class StockholmFile extends AlignFile // convert1 = OPEN_PAREN.replaceAll(annots); // convert2 = CLOSE_PAREN.replaceAll(convert1); // annots = convert2; - - // DEBUG - System.out.println( - "*** parseAnnotationRow called with\n annotation='" - + annotation + "'\n label='" + label - + "'\n annots='" + annots + "'"); String type = label; if (label.contains("_cons")) @@ -837,7 +837,9 @@ public class StockholmFile extends AlignFile if (type.equalsIgnoreCase("secondary structure")) { ss = true; - isrnass = DETECT_BRACKETS.search(annots); + isrnass = !NOT_RNASS.search(annots); // sorry about the double negative + // here (it's easier for dealing with + // other non-alpha-non-brace chars) } if (type.equalsIgnoreCase("posterior probability")) { @@ -1019,9 +1021,7 @@ public class StockholmFile extends AlignFile String key = type2id(alAnot[j].label); boolean isrna = alAnot[j].isValidStruc(); - // bs debug - System.out.println("SEQUENCE " + i + "/" + s.length + " ISRNA=" - + isrna + "."); + if (isrna) { // hardwire to secondary structure if there is RNA secondary @@ -1043,9 +1043,6 @@ public class StockholmFile extends AlignFile { seq += outputCharacter(key, k, isrna, ann, s[i]); } - // bs debug - System.out.println("APPENDING SEQ: KEY=" + key + " ISRNA=" + isrna - + ".\n" + "SEQ=" + seq + "\n"); out.append(seq); out.append(newline); } @@ -1054,8 +1051,6 @@ public class StockholmFile extends AlignFile out.append(new Format("%-" + maxid + "s") .form(printId(s[i], jvSuffix) + " ")); out.append(s[i].getSequenceAsString()); - // bs debug - System.out.println("ALSO APPENDING " + s[i].getSequenceAsString()); out.append(newline); i++; } @@ -1103,12 +1098,6 @@ public class StockholmFile extends AlignFile { seq += outputCharacter(key, j, isrna, aa.annotations, null); } - - // bs debug - System.out.println( - "PRINTING SEQ: KEY=" + key + " ISRNA=" + isrna + ".\n" - + "SEQ=" + seq + "\n"); - out.append(seq); out.append(newline); }