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
// 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);
}
String ch = (annot == null)
? ((sequenceI == null) ? "-"
: Character.toString(sequenceI.getCharAt(k)))
- : annot.displayCharacter;
+ : (annot.displayCharacter == null
+ ? String.valueOf(annot.secondaryStructure)
+ : annot.displayCharacter);
+ if (ch == null)
+ {
+ ch = " ";
+ }
if (key != null && key.equals("SS"))
{
char ssannotchar = ' ';
}
if (charset)
{
- if (ssannotchar == ' ' && isrna)
- {
- ssannotchar = '.';
- }
- return ssannotchar;
+ return (ssannotchar == ' ' && isrna) ? '.' : ssannotchar;
}
}