JAL-1807 includes ?j2sdebug flag and DebugJS._(msg)
[jalviewjs.git] / bin / jalview / io / FastaFile.js
1 Clazz.declarePackage ("jalview.io");
2 Clazz.load (["jalview.io.AlignFile"], "jalview.io.FastaFile", ["jalview.datamodel.AlignmentAnnotation", "$.Annotation", "java.lang.StringBuffer"], function () {
3 c$ = Clazz.decorateAsClass (function () {
4 this.len = 72;
5 this.out = null;
6 Clazz.instantialize (this, arguments);
7 }, jalview.io, "FastaFile", jalview.io.AlignFile);
8 Clazz.makeConstructor (c$, 
9 function () {
10 Clazz.superConstructor (this, jalview.io.FastaFile, []);
11 });
12 Clazz.overrideMethod (c$, "parse", 
13 function () {
14 var sb =  new StringBuffer ();
15 var firstLine = true;
16 var line;
17 var uline;
18 var seq = null;
19 var annotation = false;
20 while ((uline = this.nextLine ()) != null) {
21 line = uline.trim ();
22 if (line.length > 0) {
23 if (line.charAt (0) == '>') {
24 if (line.startsWith (">#_")) {
25 if (annotation) {
26 this.annotations.addElement (this.makeAnnotation (seq, sb));
27 }} else {
28 annotation = false;
29 }if (!firstLine) {
30 seq.setSequence (sb.toString ());
31 if (!annotation) {
32 this.seqs.addElement (seq);
33 }}seq = this.parseId (line.substring (1));
34 firstLine = false;
35 sb =  new StringBuffer ();
36 if (line.startsWith (">#_")) {
37 annotation = true;
38 }} else {
39 sb.append (annotation ? uline : line);
40 }}}
41 if (annotation) {
42 this.annotations.addElement (this.makeAnnotation (seq, sb));
43 } else if (!firstLine) {
44 seq.setSequence (sb.toString ());
45 this.seqs.addElement (seq);
46 }});
47 Clazz.defineMethod (c$, "makeAnnotation", 
48 ($fz = function (seq, sb) {
49 var anots =  new Array (sb.length ());
50 var cb;
51 for (var i = 0; i < anots.length; i++) {
52 var cn = sb.charAt (i);
53 if (cn != ' ') {
54 anots[i] =  new jalview.datamodel.Annotation ("" + cn, null, ' ', NaN);
55 }}
56 var aa =  new jalview.datamodel.AlignmentAnnotation (seq.getName ().substring (2), seq.getDescription (), anots);
57 return aa;
58 }, $fz.isPrivate = true, $fz), "jalview.datamodel.SequenceI,StringBuffer");
59 Clazz.defineMethod (c$, "addAnnotations", 
60 function (al) {
61 this.addProperties (al);
62 for (var i = 0; i < this.annotations.size (); i++) {
63 var aa = this.annotations.elementAt (i);
64 aa.setPadGaps (true, al.getGapCharacter ());
65 al.addAnnotation (aa);
66 }
67 }, "jalview.datamodel.Alignment");
68 Clazz.defineMethod (c$, "print", 
69 function (s) {
70 this.out =  new StringBuffer ();
71 var i = 0;
72 while ((i < s.length) && (s[i] != null)) {
73 this.out.append (">" + this.printId (s[i]));
74 if (s[i].getDescription () != null) {
75 this.out.append (" " + s[i].getDescription ());
76 }this.out.append (this.newline);
77 var nochunks = (Clazz.doubleToInt (s[i].getLength () / this.len)) + 1;
78 for (var j = 0; j < nochunks; j++) {
79 var start = j * this.len;
80 var end = start + this.len;
81 if (end < s[i].getLength ()) {
82 this.out.append (s[i].getSequenceAsString (start, end) + this.newline);
83 } else if (start < s[i].getLength ()) {
84 this.out.append (s[i].getSequenceAsString (start, s[i].getLength ()) + this.newline);
85 }}
86 i++;
87 }
88 return this.out.toString ();
89 }, "~A");
90 Clazz.defineMethod (c$, "print", 
91 function () {
92 return this.print (this.getSeqsAsArray ());
93 });
94 });