JAL-1807
[jalview.git] / site / j2s / jalview / io / PfamFile.js
diff --git a/site/j2s/jalview/io/PfamFile.js b/site/j2s/jalview/io/PfamFile.js
new file mode 100644 (file)
index 0000000..47e9cc1
--- /dev/null
@@ -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 ());
+});
+});