// be written out
if (ss)
{
- if (detectbrackets.search(pos))
+ //if (" .-_".indexOf(pos) == -1)
{
- ann.secondaryStructure = jalview.schemes.ResidueProperties
- .getRNASecStrucState(pos).charAt(0);
- }
- else
- {
- ann.secondaryStructure = jalview.schemes.ResidueProperties
- .getDssp3state(pos).charAt(0);
- }
+ if (detectbrackets.search(pos))
+ {
+ ann.secondaryStructure = jalview.schemes.ResidueProperties
+ .getRNASecStrucState(pos).charAt(0);
+ }
+ else
+ {
+ ann.secondaryStructure = jalview.schemes.ResidueProperties
+ .getDssp3state(pos).charAt(0);
+ }
- if (ann.secondaryStructure == pos.charAt(0) || pos.charAt(0) == 'C')
- {
- ann.displayCharacter = ""; // null; // " ";
- }
- else
- {
- ann.displayCharacter = " " + ann.displayCharacter;
+ if (ann.secondaryStructure == pos.charAt(0))
+ {
+ ann.displayCharacter = ""; // null; // " ";
+ }
+ else
+ {
+ ann.displayCharacter = " " + ann.displayCharacter;
+ }
}
+
}
els[i] = ann;
out.append(new Format("%-" + maxid + "s").form("#=GR "
+ printId(s[i]) + " " + key + " "));
ann = alAnot[j].annotations;
+ boolean isrna = alAnot[j].isValidStruc();
String seq = "";
for (int k = 0; k < ann.length; k++)
{
- annot = ann[k];
- String ch = (annot == null) ? Character.toString(s[i]
- .getCharAt(k)) : annot.displayCharacter;
- if (ch.length() == 0)
- {
- if (key.equals("SS"))
- {
- char ll = annot.secondaryStructure;
- seq = (Character.toString(ll).equals(" ")) ? seq + "C"
- : seq + ll;
- }
- else
- {
- seq += ".";
- }
- }
- else if (ch.length() == 1)
- {
- seq += ch;
- }
- else if (ch.length() > 1)
- {
- seq += ch.charAt(1);
- }
+ seq += outputCharacter(key, k, isrna, ann, s[i]);
}
out.append(seq);
out.append(newline);
for (int ia = 0; ia < al.getAlignmentAnnotation().length; ia++)
{
aa = al.getAlignmentAnnotation()[ia];
- if (aa.autoCalculated || !aa.visible)
+ if (aa.autoCalculated || !aa.visible || aa.sequenceRef != null)
{
continue;
}
String seq = "";
String label;
-
+ String key = "";
if (aa.label.equals("seq"))
{
label = "seq_cons";
}
else
{
- label = type2id(aa.label.toLowerCase()) + "_cons";
+ label = (key = type2id(aa.label.toLowerCase())) + "_cons";
}
if (label == null)
boolean isrna = aa.isValidStruc();
for (int j = 0; j < aa.annotations.length; j++)
{
- String ch = (aa.annotations[j] == null) ? "-"
- : aa.annotations[j].displayCharacter;
- if (ch.length() == 0 || isrna)
- {
- char ll = aa.annotations[j].secondaryStructure;
- if (Character.toString(ll).equals(" "))
- {
- seq += "C";
- }
- else
- {
- seq += ll;
- }
- }
- else if (ch.length() == 1)
- {
- seq += ch;
- }
- else if (ch.length() > 1)
- {
- seq += ch.charAt(1);
- }
+ seq += outputCharacter(key, j, isrna, aa.annotations, null);
}
out.append(seq);
out.append(newline);
return out.toString();
}
+ /**
+ * add an annotation character to the output row
+ *
+ * @param seq
+ * @param key
+ * @param k
+ * @param isrna
+ * @param ann
+ * @param sequenceI
+ */
+ private char outputCharacter(String key, int k,
+ boolean isrna, Annotation[] ann, SequenceI sequenceI)
+ {
+ char seq = ' ';
+ Annotation annot = ann[k];
+ String ch = (annot == null) ? ((sequenceI == null) ? "-" : Character
+ .toString(sequenceI.getCharAt(k)))
+ : annot.displayCharacter;
+ if (key.equals("SS"))
+ {
+ if (annot == null)
+ {
+ // sensible gap character if one is available or make one up
+ return sequenceI == null ? '-' : sequenceI
+ .getCharAt(k);
+ }
+ else
+ {
+ // valid secondary structure AND no alternative label (e.g. ' B')
+ if (annot.secondaryStructure > ' ' && ch.length() < 2)
+ {
+ return annot.secondaryStructure;
+ }
+ }
+ }
+
+ if (ch.length() == 0)
+ {
+ seq = '.';
+ }
+ else if (ch.length() == 1)
+ {
+ seq = ch.charAt(0);
+ }
+ else if (ch.length() > 1)
+ {
+ seq = ch.charAt(1);
+ }
+ return seq;
+ }
+
public String print()
{
out = new StringBuffer();