*/
package jalview.io;
-import java.util.Locale;
-
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Hashtable;
import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.Vector;
import jalview.util.Format;
import jalview.util.MessageManager;
-// import org.apache.log4j.*;
-
/**
* This class is supposed to parse a Stockholm format file into Jalview There
* are TODOs in this class: we do not know what the database source and version
{
private static final String ANNOTATION = "annotation";
-// private static final Regex OPEN_PAREN = new Regex("(<|\\[)", "(");
-//
-// private static final Regex CLOSE_PAREN = new Regex("(>|\\])", ")");
+ // private static final Regex OPEN_PAREN = new Regex("(<|\\[)", "(");
+ //
+ // private static final Regex CLOSE_PAREN = new Regex("(>|\\])", ")");
public static final Regex DETECT_BRACKETS = new Regex(
"(<|>|\\[|\\]|\\(|\\)|\\{|\\})");
- // WUSS extended symbols. Avoid ambiguity with protein SS annotations by using NOT_RNASS first.
+ // 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]*$");
+ "^[^<>[\\](){}ADFJ-RUVWYZadfj-ruvwyz]*$");
StringBuffer out; // output buffer
+ umcp.getMessage() + ")";
throw new IOException(umcp);
}
- // DEBUG System.out.println("this is the secondary scructure:"
+ // DEBUG jalview.bin.Console.outPrintln("this is the secondary scructure:"
// +result.size());
SequenceI[] seqs = new SequenceI[result.size()];
String id = null;
for (int i = 0; i < result.size(); i++)
{
- // DEBUG System.err.println("Processing i'th sequence in Stockholm file")
+ // DEBUG jalview.bin.Console.errPrintln("Processing i'th sequence in Stockholm file")
RNA current = result.get(i);
String seq = current.getSeq();
String rna = current.getStructDBN(true);
- // DEBUG System.out.println(seq);
- // DEBUG System.err.println(rna);
+ // DEBUG jalview.bin.Console.outPrintln(seq);
+ // DEBUG jalview.bin.Console.errPrintln(rna);
int begin = 0;
int end = seq.length() - 1;
id = safeName(getDataName());
r = new Regex("# STOCKHOLM ([\\d\\.]+)");
if (!r.search(nextLine()))
{
- throw new IOException(MessageManager
- .getString("exception.stockholm_invalid_format"));
+ throw new IOException(
+ MessageManager.getString("exception.stockholm_invalid_format")
+ + " (" + r + ")");
}
else
{
Regex openparen = new Regex("(<|\\[)", "(");
Regex closeparen = new Regex("(>|\\])", ")");
-// // Detect if file is RNA by looking for bracket types
-// Regex detectbrackets = new Regex("(<|>|\\[|\\]|\\(|\\))");
+ // // Detect if file is RNA by looking for bracket types
+ // Regex detectbrackets = new Regex("(<|>|\\[|\\]|\\(|\\))");
rend.optimize();
p.optimize();
if (dbr != null)
{
// we could get very clever here - but for now - just try to
- // guess accession type from type of sequence, source of alignment plus
+ // guess accession type from type of sequence, source of alignment
+ // plus
// structure
// of accession
guessDatabaseFor(seqO, dbr, dbsource);
}
else if (!r.search(line))
{
- // System.err.println("Found sequence line: " + line);
+ // jalview.bin.Console.errPrintln("Found sequence line: " + line);
// Split sequence in sequence and accession parts
if (!x.search(line))
String annType = r.stringMatched(1);
String annContent = r.stringMatched(2);
- // System.err.println("type:" + annType + " content: " + annContent);
+ // jalview.bin.Console.errPrintln("type:" + annType + " content: " + annContent);
if (annType.equals("GF"))
{
treeName = an.stringMatched(2);
treeString = new StringBuffer();
}
- // TODO: JAL-3532 - this is where GF comments and database references are lost
- // suggest overriding this method for Stockholm files to catch and properly
+ // TODO: JAL-3532 - this is where GF comments and database
+ // references are lost
+ // suggest overriding this method for Stockholm files to catch and
+ // properly
// process CC, DR etc into multivalued properties
setAlignmentProperty(an.stringMatched(1), an.stringMatched(2));
}
else
{
// throw new IOException("Error parsing " + line);
- System.err.println(">> missing annotation: " + line);
+ jalview.bin.Console.errPrintln(">> missing annotation: " + line);
}
}
else if (annType.equals("GC"))
// }
else
{
- System.err.println(
+ jalview.bin.Console.errPrintln(
"Warning - couldn't parse sequence annotation row line:\n"
+ line);
// throw new IOException("Error parsing " + line);
}
if (dbsource == null)
{
- // make up an origin based on whether the sequence looks like it is nucleotide
+ // make up an origin based on whether the sequence looks like it is
+ // nucleotide
// or protein
dbsource = (seqO.isProtein()) ? "PFAM" : "RFAM";
}
annot.annotations.length);
System.arraycopy(els, 0, anns, annot.annotations.length, els.length);
annot.annotations = anns;
- // System.out.println("else: ");
+ // jalview.bin.Console.outPrintln("else: ");
}
return annot;
}
return ref.getSource().toString() + " ; "
+ ref.getAccessionId().toString();
}
+
@Override
public String print(SequenceI[] s, boolean jvSuffix)
{
}
}
- // output annotations
+ // output description and annotations
+
while (i < slen && (seq = s[i]) != null)
{
+ if (seq.getDescription() != null)
+ {
+ // out.append("#=GR ");
+ out.append(new Format("%-" + maxid + "s").form("#=GS "
+ + printId(seq, jvSuffix) + " DE " + seq.getDescription()));
+ out.append(newline);
+ }
+
AlignmentAnnotation[] alAnot = seq.getAnnotation();
if (alAnot != null)
{
{
return (String) typeIds.get(id);
}
- System.err.println(
+ jalview.bin.Console.errPrintln(
"Warning : Unknown Stockholm annotation type code " + id);
return id;
}
{
return key;
}
- System.err.println(
+ jalview.bin.Console.errPrintln(
"Warning : Unknown Stockholm annotation type: " + type);
return key;
}