X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=site%2Fj2s%2Fjalview%2Fio%2FPfamFile.js;fp=site%2Fj2s%2Fjalview%2Fio%2FPfamFile.js;h=47e9cc182cdfcb436c2878336e4080816d30a762;hb=4231d40261fef32ce4570a6bbad0d35df44e8baf;hp=0000000000000000000000000000000000000000;hpb=c07eb2c5794833bd0241000d6844d783fe10cb82;p=jalview.git diff --git a/site/j2s/jalview/io/PfamFile.js b/site/j2s/jalview/io/PfamFile.js new file mode 100644 index 0000000..47e9cc1 --- /dev/null +++ b/site/j2s/jalview/io/PfamFile.js @@ -0,0 +1,76 @@ +Clazz.declarePackage ("jalview.io"); +Clazz.load (["jalview.io.AlignFile"], "jalview.io.PfamFile", ["jalview.util.Format", "$.MessageManager", "java.io.IOException", "java.lang.StringBuffer", "java.util.Hashtable", "$.StringTokenizer", "$.Vector"], function () { +c$ = Clazz.declareType (jalview.io, "PfamFile", jalview.io.AlignFile); +Clazz.makeConstructor (c$, +function () { +Clazz.superConstructor (this, jalview.io.PfamFile, []); +}); +Clazz.overrideMethod (c$, "parse", +function () { +var i = 0; +var line; +var seqhash = new java.util.Hashtable (); +var headers = new java.util.Vector (); +while ((line = this.nextLine ()) != null) { +if (line.indexOf (" ") != 0) { +if (line.indexOf ("#") != 0) { +var str = new java.util.StringTokenizer (line, " "); +var id = ""; +if (str.hasMoreTokens ()) { +id = str.nextToken (); +var tempseq; +if (seqhash.containsKey (id)) { +tempseq = seqhash.get (id); +} else { +tempseq = new StringBuffer (); +seqhash.put (id, tempseq); +}if (!(headers.contains (id))) { +headers.addElement (id); +}if (str.hasMoreTokens ()) { +tempseq.append (str.nextToken ()); +}}}}} +this.noSeqs = headers.size (); +if (this.noSeqs < 1) { +throw new java.io.IOException (jalview.util.MessageManager.getString ("exception.pfam_no_sequences_found")); +}for (i = 0; i < headers.size (); i++) { +if (seqhash.get (headers.elementAt (i)) != null) { +if (this.maxLength < seqhash.get (headers.elementAt (i)).toString ().length) { +this.maxLength = seqhash.get (headers.elementAt (i)).toString ().length; +}var newSeq = this.parseId (headers.elementAt (i).toString ()); +newSeq.setSequence (seqhash.get (headers.elementAt (i).toString ()).toString ()); +this.seqs.addElement (newSeq); +} else { +System.err.println ("PFAM File reader: Can't find sequence for " + headers.elementAt (i)); +}} +}); +Clazz.defineMethod (c$, "print", +function (s) { +var out = new StringBuffer (""); +var max = 0; +var maxid = 0; +var i = 0; +while ((i < s.length) && (s[i] != null)) { +var tmp = this.printId (s[i]); +if (s[i].getSequence ().length > max) { +max = s[i].getSequence ().length; +}if (tmp.length > maxid) { +maxid = tmp.length; +}i++; +} +if (maxid < 15) { +maxid = 15; +}var j = 0; +while ((j < s.length) && (s[j] != null)) { +out.append ( new jalview.util.Format ("%-" + maxid + "s").form (this.printId (s[j]) + " ")); +out.append (s[j].getSequenceAsString ()); +out.append (this.newline); +j++; +} +out.append (this.newline); +return out.toString (); +}, "~A"); +Clazz.defineMethod (c$, "print", +function () { +return this.print (this.getSeqsAsArray ()); +}); +});