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
String version;
// String id;
Hashtable seqAnn = new Hashtable(); // Sequence related annotations
- LinkedHashMap<String, String> seqs = new LinkedHashMap<>();
+ LinkedHashMap<String, String> seqs = new LinkedHashMap<String, String>();
Regex p, r, rend, s, x;
// Temporary line for processing RNA annotation
// String RNAannot = "";
strucAnn = new Hashtable();
}
- Vector<AlignmentAnnotation> newStruc = new Vector<>();
+ Vector<AlignmentAnnotation> newStruc = new Vector<AlignmentAnnotation>();
parseAnnotationRow(newStruc, type, ns);
for (AlignmentAnnotation alan : newStruc)
{
private void guessDatabaseFor(Sequence seqO, String dbr, String dbsource)
{
DBRefEntry dbrf = null;
- List<DBRefEntry> dbrs = new ArrayList<>();
+ List<DBRefEntry> dbrs = new ArrayList<DBRefEntry>();
String seqdb = "Unknown", sdbac = "" + dbr;
int st = -1, en = -1, p;
if ((st = sdbac.indexOf("/")) > -1)
// 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"))
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"))
{
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
{
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);
}
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++;
}
{
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);
}