Merge branch 'master' of https://source.jalview.org/git/jalviewjs.git
[jalviewjs.git] / site / j2s / jalview / io / MSFfile.js
index d80fbdc..ee2e3af 100644 (file)
-Clazz.declarePackage ("jalview.io");\r
-Clazz.load (["jalview.io.AlignFile"], "jalview.io.MSFfile", ["jalview.datamodel.Sequence", "jalview.util.Comparison", "$.Format", "java.lang.StringBuffer", "java.util.Hashtable", "$.StringTokenizer", "$.Vector"], function () {\r
-c$ = Clazz.declareType (jalview.io, "MSFfile", jalview.io.AlignFile);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, jalview.io.MSFfile, []);\r
-});\r
-Clazz.overrideMethod (c$, "parse", \r
-function () {\r
-var i = 0;\r
-var seqFlag = false;\r
-var key =  String.instantialize ();\r
-var headers =  new java.util.Vector ();\r
-var seqhash =  new java.util.Hashtable ();\r
-var line;\r
-try {\r
-while ((line = this.nextLine ()) != null) {\r
-var str =  new java.util.StringTokenizer (line);\r
-while (str.hasMoreTokens ()) {\r
-var inStr = str.nextToken ();\r
-if (inStr.indexOf ("Name:") != -1) {\r
-key = str.nextToken ();\r
-headers.addElement (key);\r
-}if (inStr.indexOf ("//") != -1) {\r
-seqFlag = true;\r
-}if ((inStr.indexOf ("//") == -1) && (seqFlag == true)) {\r
-key = inStr;\r
-var tempseq;\r
-if (seqhash.containsKey (key)) {\r
-tempseq = seqhash.get (key);\r
-} else {\r
-tempseq =  new StringBuffer ();\r
-seqhash.put (key, tempseq);\r
-}while (str.hasMoreTokens ()) {\r
-tempseq.append (str.nextToken ());\r
-}\r
-}}\r
-}\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, java.io.IOException)) {\r
-System.err.println ("Exception parsing MSFFile " + e);\r
-e.printStackTrace ();\r
-} else {\r
-throw e;\r
-}\r
-}\r
-this.noSeqs = headers.size ();\r
-for (i = 0; i < headers.size (); i++) {\r
-if (seqhash.get (headers.elementAt (i)) != null) {\r
-var head = headers.elementAt (i).toString ();\r
-var seq = seqhash.get (head).toString ();\r
-if (this.maxLength < head.length) {\r
-this.maxLength = head.length;\r
-}seq = seq.$replace ('~', '-');\r
-var newSeq = this.parseId (head);\r
-newSeq.setSequence (seq);\r
-this.seqs.addElement (newSeq);\r
-} else {\r
-System.err.println ("MSFFile Parser: Can't find sequence for " + headers.elementAt (i));\r
-}}\r
-});\r
-Clazz.defineMethod (c$, "checkSum", \r
-function (seq) {\r
-var check = 0;\r
-var sequence = seq.toUpperCase ();\r
-for (var i = 0; i < sequence.length; i++) {\r
-try {\r
-var value = sequence.charCodeAt (i);\r
-if (value != -1) {\r
-check += (i % 57 + 1) * value;\r
-}} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-System.err.println ("Exception during MSF Checksum calculation");\r
-e.printStackTrace ();\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}\r
-return check % 10000;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "print", \r
-function (seqs) {\r
-var is_NA = jalview.util.Comparison.isNucleotide (seqs);\r
-var s =  new Array (seqs.length);\r
-var out =  new StringBuffer ("!!" + (is_NA ? "NA" : "AA") + "_MULTIPLE_ALIGNMENT 1.0");\r
-out.append (this.newline);\r
-out.append (this.newline);\r
-var max = 0;\r
-var maxid = 0;\r
-var i = 0;\r
-while ((i < seqs.length) && (seqs[i] != null)) {\r
-s[i] =  new jalview.datamodel.Sequence (seqs[i].getName (), seqs[i].getSequenceAsString ().$replace ('-', '.'), seqs[i].getStart (), seqs[i].getEnd ());\r
-var sb =  new StringBuffer ();\r
-sb.append (s[i].getSequence ());\r
-for (var ii = 0; ii < sb.length (); ii++) {\r
-if (sb.charAt (ii) == '.') {\r
-sb.setCharAt (ii, '~');\r
-} else {\r
-break;\r
-}}\r
-for (var ii = sb.length () - 1; ii > 0; ii--) {\r
-if (sb.charAt (ii) == '.') {\r
-sb.setCharAt (ii, '~');\r
-} else {\r
-break;\r
-}}\r
-s[i].setSequence (sb.toString ());\r
-if (s[i].getSequence ().length > max) {\r
-max = s[i].getSequence ().length;\r
-}i++;\r
-}\r
-var maxLenpad =  new jalview.util.Format ("%" + ( String.instantialize ("" + max)).length + "d");\r
-var maxChkpad =  new jalview.util.Format ("%" + ( String.instantialize ("1" + max)).length + "d");\r
-i = 0;\r
-var bigChecksum = 0;\r
-var checksums =  Clazz.newIntArray (s.length, 0);\r
-while (i < s.length) {\r
-checksums[i] = this.checkSum (s[i].getSequenceAsString ());\r
-bigChecksum += checksums[i];\r
-i++;\r
-}\r
-var maxNB = 0;\r
-out.append ("   MSF: " + s[0].getSequence ().length + "   Type: " + (is_NA ? "N" : "P") + "    Check:  " + (bigChecksum % 10000) + "   ..");\r
-out.append (this.newline);\r
-out.append (this.newline);\r
-out.append (this.newline);\r
-var nameBlock =  new Array (s.length);\r
-var idBlock =  new Array (s.length);\r
-i = 0;\r
-while ((i < s.length) && (s[i] != null)) {\r
-nameBlock[i] =  String.instantialize ("  Name: " + this.printId (s[i]) + " ");\r
-idBlock[i] =  String.instantialize ("Len: " + maxLenpad.formLong (s[i].getSequence ().length) + "  Check: " + maxChkpad.formLong (checksums[i]) + "  Weight: 1.00" + this.newline);\r
-if (s[i].getName ().length > maxid) {\r
-maxid = s[i].getName ().length;\r
-}if (nameBlock[i].length > maxNB) {\r
-maxNB = nameBlock[i].length;\r
-}i++;\r
-}\r
-if (maxid < 10) {\r
-maxid = 10;\r
-}if (maxNB < 15) {\r
-maxNB = 15;\r
-}var nbFormat =  new jalview.util.Format ("%-" + maxNB + "s");\r
-for (i = 0; (i < s.length) && (s[i] != null); i++) {\r
-out.append (nbFormat.form (nameBlock[i]) + idBlock[i]);\r
-}\r
-maxid++;\r
-out.append (this.newline);\r
-out.append (this.newline);\r
-out.append ("//");\r
-out.append (this.newline);\r
-out.append (this.newline);\r
-var len = 50;\r
-var nochunks = (Clazz.doubleToInt (max / len)) + 1;\r
-if ((max % len) == 0) {\r
-nochunks--;\r
-}for (i = 0; i < nochunks; i++) {\r
-var j = 0;\r
-while ((j < s.length) && (s[j] != null)) {\r
-var name = this.printId (s[j]);\r
-out.append ( new jalview.util.Format ("%-" + maxid + "s").form (name + " "));\r
-for (var k = 0; k < 5; k++) {\r
-var start = (i * 50) + (k * 10);\r
-var end = start + 10;\r
-if ((end < s[j].getSequence ().length) && (start < s[j].getSequence ().length)) {\r
-out.append (s[j].getSequence (start, end));\r
-if (k < 4) {\r
-out.append (" ");\r
-} else {\r
-out.append (this.newline);\r
-}} else {\r
-if (start < s[j].getSequence ().length) {\r
-out.append (s[j].getSequenceAsString ().substring (start));\r
-out.append (this.newline);\r
-} else {\r
-if (k == 0) {\r
-out.append (this.newline);\r
-}}}}\r
-j++;\r
-}\r
-out.append (this.newline);\r
-}\r
-return out.toString ();\r
-}, "~A");\r
-Clazz.defineMethod (c$, "print", \r
-function () {\r
-return this.print (this.getSeqsAsArray ());\r
-});\r
-});\r
+Clazz.declarePackage ("jalview.io");
+Clazz.load (["jalview.io.AlignFile"], "jalview.io.MSFfile", ["jalview.datamodel.Sequence", "jalview.util.Comparison", "$.Format", "java.lang.StringBuffer", "java.util.Hashtable", "$.StringTokenizer", "$.Vector"], function () {
+c$ = Clazz.declareType (jalview.io, "MSFfile", jalview.io.AlignFile);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, jalview.io.MSFfile, []);
+});
+Clazz.overrideMethod (c$, "parse", 
+function () {
+var i = 0;
+var seqFlag = false;
+var key =  String.instantialize ();
+var headers =  new java.util.Vector ();
+var seqhash =  new java.util.Hashtable ();
+var line;
+try {
+while ((line = this.nextLine ()) != null) {
+var str =  new java.util.StringTokenizer (line);
+while (str.hasMoreTokens ()) {
+var inStr = str.nextToken ();
+if (inStr.indexOf ("Name:") != -1) {
+key = str.nextToken ();
+headers.addElement (key);
+}if (inStr.indexOf ("//") != -1) {
+seqFlag = true;
+}if ((inStr.indexOf ("//") == -1) && (seqFlag == true)) {
+key = inStr;
+var tempseq;
+if (seqhash.containsKey (key)) {
+tempseq = seqhash.get (key);
+} else {
+tempseq =  new StringBuffer ();
+seqhash.put (key, tempseq);
+}while (str.hasMoreTokens ()) {
+tempseq.append (str.nextToken ());
+}
+}}
+}
+} catch (e) {
+if (Clazz.exceptionOf (e, java.io.IOException)) {
+System.err.println ("Exception parsing MSFFile " + e);
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+this.noSeqs = headers.size ();
+for (i = 0; i < headers.size (); i++) {
+if (seqhash.get (headers.elementAt (i)) != null) {
+var head = headers.elementAt (i).toString ();
+var seq = seqhash.get (head).toString ();
+if (this.maxLength < head.length) {
+this.maxLength = head.length;
+}seq = seq.$replace ('~', '-');
+var newSeq = this.parseId (head);
+newSeq.setSequence (seq);
+this.seqs.addElement (newSeq);
+} else {
+System.err.println ("MSFFile Parser: Can't find sequence for " + headers.elementAt (i));
+}}
+});
+Clazz.defineMethod (c$, "checkSum", 
+function (seq) {
+var check = 0;
+var sequence = seq.toUpperCase ();
+for (var i = 0; i < sequence.length; i++) {
+try {
+var value = sequence.charCodeAt (i);
+if (value != -1) {
+check += (i % 57 + 1) * value;
+}} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+System.err.println ("Exception during MSF Checksum calculation");
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+}
+return check % 10000;
+}, "~S");
+Clazz.defineMethod (c$, "print", 
+function (seqs) {
+var is_NA = jalview.util.Comparison.isNucleotide (seqs);
+var s =  new Array (seqs.length);
+var out =  new StringBuffer ("!!" + (is_NA ? "NA" : "AA") + "_MULTIPLE_ALIGNMENT 1.0");
+out.append (this.newline);
+out.append (this.newline);
+var max = 0;
+var maxid = 0;
+var i = 0;
+while ((i < seqs.length) && (seqs[i] != null)) {
+s[i] =  new jalview.datamodel.Sequence (seqs[i].getName (), seqs[i].getSequenceAsString ().$replace ('-', '.'), seqs[i].getStart (), seqs[i].getEnd ());
+var sb =  new StringBuffer ();
+sb.append (s[i].getSequence ());
+for (var ii = 0; ii < sb.length (); ii++) {
+if (sb.charAt (ii) == '.') {
+sb.setCharAt (ii, '~');
+} else {
+break;
+}}
+for (var ii = sb.length () - 1; ii > 0; ii--) {
+if (sb.charAt (ii) == '.') {
+sb.setCharAt (ii, '~');
+} else {
+break;
+}}
+s[i].setSequence (sb.toString ());
+if (s[i].getSequence ().length > max) {
+max = s[i].getSequence ().length;
+}i++;
+}
+var maxLenpad =  new jalview.util.Format ("%" + ( String.instantialize ("" + max)).length + "d");
+var maxChkpad =  new jalview.util.Format ("%" + ( String.instantialize ("1" + max)).length + "d");
+i = 0;
+var bigChecksum = 0;
+var checksums =  Clazz.newIntArray (s.length, 0);
+while (i < s.length) {
+checksums[i] = this.checkSum (s[i].getSequenceAsString ());
+bigChecksum += checksums[i];
+i++;
+}
+var maxNB = 0;
+out.append ("   MSF: " + s[0].getSequence ().length + "   Type: " + (is_NA ? "N" : "P") + "    Check:  " + (bigChecksum % 10000) + "   ..");
+out.append (this.newline);
+out.append (this.newline);
+out.append (this.newline);
+var nameBlock =  new Array (s.length);
+var idBlock =  new Array (s.length);
+i = 0;
+while ((i < s.length) && (s[i] != null)) {
+nameBlock[i] =  String.instantialize ("  Name: " + this.printId (s[i]) + " ");
+idBlock[i] =  String.instantialize ("Len: " + maxLenpad.formLong (s[i].getSequence ().length) + "  Check: " + maxChkpad.formLong (checksums[i]) + "  Weight: 1.00" + this.newline);
+if (s[i].getName ().length > maxid) {
+maxid = s[i].getName ().length;
+}if (nameBlock[i].length > maxNB) {
+maxNB = nameBlock[i].length;
+}i++;
+}
+if (maxid < 10) {
+maxid = 10;
+}if (maxNB < 15) {
+maxNB = 15;
+}var nbFormat =  new jalview.util.Format ("%-" + maxNB + "s");
+for (i = 0; (i < s.length) && (s[i] != null); i++) {
+out.append (nbFormat.form (nameBlock[i]) + idBlock[i]);
+}
+maxid++;
+out.append (this.newline);
+out.append (this.newline);
+out.append ("//");
+out.append (this.newline);
+out.append (this.newline);
+var len = 50;
+var nochunks = (Clazz.doubleToInt (max / len)) + 1;
+if ((max % len) == 0) {
+nochunks--;
+}for (i = 0; i < nochunks; i++) {
+var j = 0;
+while ((j < s.length) && (s[j] != null)) {
+var name = this.printId (s[j]);
+out.append ( new jalview.util.Format ("%-" + maxid + "s").form (name + " "));
+for (var k = 0; k < 5; k++) {
+var start = (i * 50) + (k * 10);
+var end = start + 10;
+if ((end < s[j].getSequence ().length) && (start < s[j].getSequence ().length)) {
+out.append (s[j].getSequence (start, end));
+if (k < 4) {
+out.append (" ");
+} else {
+out.append (this.newline);
+}} else {
+if (start < s[j].getSequence ().length) {
+out.append (s[j].getSequenceAsString ().substring (start));
+out.append (this.newline);
+} else {
+if (k == 0) {
+out.append (this.newline);
+}}}}
+j++;
+}
+out.append (this.newline);
+}
+return out.toString ();
+}, "~A");
+Clazz.defineMethod (c$, "print", 
+function () {
+return this.print (this.getSeqsAsArray ());
+});
+});