import jalview.datamodel.*;
/**
- * DOCUMENT ME!
- *
- * @author $author$
+ * Parser for the JPred/JNet concise format. This is a series of CSV lines,
+ * each line is either a sequence (QUERY), a sequence profile (align;), or
+ * jnet prediction annotation (anything else).
+ * Automagic translation happens for annotation called 'JNETPRED' (translated to Secondary Structure Prediction), or 'JNETCONF' (translates to 'Prediction Confidence').
+ * Numeric scores are differentiated from symbolic by being parseable into a float vector. They are put in Scores.
+ * Symscores gets the others.
+ * JNetAnnotationMaker translates the data parsed by this object into annotation on an alignment. It is automatically called
+ * but can be used to transfer the annotation onto a sequence in another alignment (and insert gaps where necessary)
+ * @author jprocter
* @version $Revision$
*/
public class JPredFile
{
super(inFile, type);
}
-
+ public JPredFile(FileParse source) throws IOException
+ {
+ super(source);
+ }
/**
* DOCUMENT ME!
*
name = id.substring(id.indexOf(";") + 1) + "_" + ++i;
}
+ if (QuerySeqPosition==-1)
+ QuerySeqPosition = ids.size();
ids.addElement(name);
-
noSeqs++;
}
else
") has an unexpected number of columns");
}
- if (newSeq.getName().startsWith("QUERY") &&
+ if ((newSeq.getName().startsWith("QUERY") || newSeq.getName().startsWith("align;"))&&
(QuerySeqPosition == -1))
{
QuerySeqPosition = seqs.size();
seqs.addElement(newSeq);
}
+ if (seqs.size()>0)
+ {
+ // try to make annotation for a prediction only input (default if no alignment is given)
+ Alignment tal = new Alignment(this.getSeqsAsArray());
+ try {
+ JnetAnnotationMaker.add_annotation(this, tal, QuerySeqPosition, true);
+ } catch (Exception e)
+ {
+ tal = null;
+ IOException ex = new IOException("Couldn't parse concise annotation for prediction profile.\n"+e);
+ throw ex;
+ }
+ this.annotations = new Vector();
+ AlignmentAnnotation[] aan = tal.getAlignmentAnnotation();
+ for (int aai = 0; aan!=null && aai<aan.length; aai++)
+ {
+ annotations.addElement(aan[aai]);
+ }
+ }
}
/**
catch (java.io.IOException e)
{
System.err.println("Exception " + e);
- e.printStackTrace();
+ // e.printStackTrace(); not java 1.1 compatible!
}
}