1 Clazz.declarePackage ("jalview.io");
\r
2 Clazz.load (["jalview.io.AlignFile"], "jalview.io.JPredFile", ["jalview.datamodel.Alignment", "$.Sequence", "jalview.io.JnetAnnotationMaker", "jalview.util.MessageManager", "java.io.IOException", "java.lang.Float", "$.StringBuffer", "java.util.Hashtable", "$.StringTokenizer", "$.Vector"], function () {
\r
3 c$ = Clazz.decorateAsClass (function () {
\r
7 this.Symscores = null;
\r
8 this.QuerySeqPosition = 0;
\r
9 this.annotSeqs = null;
\r
10 Clazz.instantialize (this, arguments);
\r
11 }, jalview.io, "JPredFile", jalview.io.AlignFile);
\r
12 Clazz.defineMethod (c$, "setQuerySeqPosition",
\r
13 function (QuerySeqPosition) {
\r
14 this.QuerySeqPosition = QuerySeqPosition;
\r
16 Clazz.defineMethod (c$, "getQuerySeqPosition",
\r
18 return this.QuerySeqPosition;
\r
20 Clazz.defineMethod (c$, "getScores",
\r
24 Clazz.defineMethod (c$, "getSymscores",
\r
26 return this.Symscores;
\r
28 Clazz.defineMethod (c$, "initData",
\r
30 Clazz.superCall (this, jalview.io.JPredFile, "initData", []);
\r
31 this.Scores = new java.util.Hashtable ();
\r
35 Clazz.overrideMethod (c$, "parse",
\r
38 this.QuerySeqPosition = -1;
\r
40 var seq_entries = new java.util.Vector ();
\r
41 var ids = new java.util.Vector ();
\r
42 var Symscores = new java.util.Hashtable ();
\r
43 while ((line = this.nextLine ()) != null) {
\r
44 var str = new java.util.StringTokenizer (line, ":");
\r
46 if (!str.hasMoreTokens ()) {
\r
48 }id = str.nextToken ();
\r
49 var seqsym = str.nextToken ();
\r
50 var symbols = new java.util.StringTokenizer (seqsym, ",");
\r
51 var numSymbols = symbols.countTokens ();
\r
52 if (numSymbols == 0) {
\r
54 }if (seqsym.length != (2 * numSymbols)) {
\r
55 if (this.Scores.containsKey (id)) {
\r
57 while (this.Scores.containsKey (id + "_" + i)) {
\r
61 }var scores = new java.util.Vector ();
\r
63 var ascore = "dead";
\r
65 while (symbols.hasMoreTokens ()) {
\r
66 ascore = symbols.nextToken ();
\r
67 var score = new Float (ascore);
\r
68 scores.addElement (score);
\r
70 this.Scores.put (id, scores);
\r
72 if (Clazz.exceptionOf (e, Exception)) {
\r
74 for (var j = 0; j < i; j++) {
\r
75 scores.setElementAt ((scores.elementAt (j)).toString (), j);
\r
77 scores.addElement (ascore);
\r
78 while (symbols.hasMoreTokens ()) {
\r
79 ascore = symbols.nextToken ();
\r
80 scores.addElement (ascore);
\r
82 this.Scores.put (id, scores);
\r
87 } else if (id.equals ("jnetconf")) {
\r
88 id = "Prediction Confidence";
\r
89 this.conf = new java.util.Vector (numSymbols);
\r
90 for (var i = 0; i < numSymbols; i++) {
\r
91 this.conf.setElementAt (symbols.nextToken (), i);
\r
94 var newseq = new StringBuffer ();
\r
95 for (var i = 0; i < numSymbols; i++) {
\r
96 newseq.append (symbols.nextToken ());
\r
98 if (id.indexOf (";") > -1) {
\r
99 seq_entries.addElement (newseq);
\r
101 var name = id.substring (id.indexOf (";") + 1);
\r
102 while (ids.lastIndexOf (name) > -1) {
\r
103 name = id.substring (id.indexOf (";") + 1) + "_" + ++i;
\r
105 if (this.QuerySeqPosition == -1) this.QuerySeqPosition = ids.size ();
\r
106 ids.addElement (name);
\r
109 if (id.equals ("JNETPRED")) {
\r
110 id = "Predicted Secondary Structure";
\r
111 }seq_entries.addElement (newseq.toString ());
\r
112 ids.addElement (id);
\r
113 Symscores.put (id, new Integer (ids.size () - 1));
\r
115 this.maxLength = seq_entries.elementAt (0).toString ().length;
\r
116 for (var i = 0; i < ids.size (); i++) {
\r
117 var newSeq = new jalview.datamodel.Sequence (ids.elementAt (i).toString (), seq_entries.elementAt (i).toString (), 1, seq_entries.elementAt (i).toString ().length);
\r
118 if (this.maxLength != seq_entries.elementAt (i).toString ().length) {
\r
119 throw new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.jpredconcide_entry_has_unexpected_number_of_columns", Clazz.newArray (-1, [ids.elementAt (i).toString ()])));
\r
120 }if ((newSeq.getName ().startsWith ("QUERY") || newSeq.getName ().startsWith ("align;")) && (this.QuerySeqPosition == -1)) {
\r
121 this.QuerySeqPosition = this.seqs.size ();
\r
122 }this.seqs.addElement (newSeq);
\r
124 if (this.seqs.size () > 0 && this.QuerySeqPosition > -1) {
\r
125 var tal = new jalview.datamodel.Alignment (this.getSeqsAsArray ());
\r
127 jalview.io.JnetAnnotationMaker.add_annotation (this, tal, this.QuerySeqPosition, true);
\r
129 if (Clazz.exceptionOf (e, Exception)) {
\r
131 var ex = new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.couldnt_parse_concise_annotation_for_prediction", Clazz.newArray (-1, [e.getMessage ()])));
\r
132 e.printStackTrace ();
\r
138 this.annotations = new java.util.Vector ();
\r
139 var aan = tal.getAlignmentAnnotation ();
\r
140 for (var aai = 0; aan != null && aai < aan.length; aai++) {
\r
141 this.annotations.addElement (aan[aai]);
\r
144 Clazz.overrideMethod (c$, "print",
\r
146 return "Not Supported";
\r
148 c$.main = Clazz.defineMethod (c$, "main",
\r
151 var blc = new jalview.io.JPredFile (args[0], "File");
\r
152 for (var i = 0; i < blc.seqs.size (); i++) {
\r
153 System.out.println ((blc.seqs.elementAt (i)).getName () + "\n" + (blc.seqs.elementAt (i)).getSequenceAsString () + "\n");
\r
156 if (Clazz.exceptionOf (e, java.io.IOException)) {
\r
157 System.err.println ("Exception " + e);
\r
163 Clazz.defineMethod (c$, "removeNonSequences",
\r
165 if (this.annotSeqs != null) {
\r
167 }this.annotSeqs = new java.util.Vector ();
\r
168 var newseqs = new java.util.Vector ();
\r
170 var j = this.seqs.size ();
\r
171 for (; i < this.QuerySeqPosition; i++) {
\r
172 this.annotSeqs.addElement (this.seqs.elementAt (i));
\r
175 var sq = this.seqs.elementAt (j - 1);
\r
176 if (sq.getName ().toUpperCase ().startsWith ("JPRED")) {
\r
177 this.annotSeqs.addElement (sq);
\r
178 this.seqs.removeElementAt (--j);
\r
179 }}for (; i < j; i++) {
\r
180 newseqs.addElement (this.seqs.elementAt (i));
\r
182 this.seqs.removeAllElements ();
\r
183 this.seqs = newseqs;
\r