1 Clazz.declarePackage ("jalview.io");
\r
2 Clazz.load (["jalview.io.AlignFile"], "jalview.io.FastaFile", ["jalview.datamodel.AlignmentAnnotation", "$.Annotation", "java.lang.StringBuffer"], function () {
\r
3 c$ = Clazz.decorateAsClass (function () {
\r
6 Clazz.instantialize (this, arguments);
\r
7 }, jalview.io, "FastaFile", jalview.io.AlignFile);
\r
8 Clazz.makeConstructor (c$,
\r
10 Clazz.superConstructor (this, jalview.io.FastaFile, []);
\r
12 Clazz.overrideMethod (c$, "parse",
\r
14 var sb = new StringBuffer ();
\r
15 var firstLine = true;
\r
19 var annotation = false;
\r
20 while ((uline = this.nextLine ()) != null) {
\r
21 line = uline.trim ();
\r
22 if (line.length > 0) {
\r
23 if (line.charAt (0) == '>') {
\r
24 if (line.startsWith (">#_")) {
\r
26 this.annotations.addElement (this.makeAnnotation (seq, sb));
\r
30 seq.setSequence (sb.toString ());
\r
32 this.seqs.addElement (seq);
\r
33 }}seq = this.parseId (line.substring (1));
\r
35 sb = new StringBuffer ();
\r
36 if (line.startsWith (">#_")) {
\r
39 sb.append (annotation ? uline : line);
\r
42 this.annotations.addElement (this.makeAnnotation (seq, sb));
\r
43 } else if (!firstLine) {
\r
44 seq.setSequence (sb.toString ());
\r
45 this.seqs.addElement (seq);
\r
47 Clazz.defineMethod (c$, "makeAnnotation",
\r
48 function (seq, sb) {
\r
49 var anots = new Array (sb.length ());
\r
51 for (var i = 0; i < anots.length; i++) {
\r
52 var cn = sb.charAt (i);
\r
54 anots[i] = new jalview.datamodel.Annotation ("" + cn, null, ' ', NaN);
\r
56 var aa = new jalview.datamodel.AlignmentAnnotation (seq.getName ().substring (2), seq.getDescription (), anots);
\r
58 }, "jalview.datamodel.SequenceI,StringBuffer");
\r
59 Clazz.defineMethod (c$, "addAnnotations",
\r
61 this.addProperties (al);
\r
62 for (var i = 0; i < this.annotations.size (); i++) {
\r
63 var aa = this.annotations.elementAt (i);
\r
64 aa.setPadGaps (true, al.getGapCharacter ());
\r
65 al.addAnnotation (aa);
\r
67 }, "jalview.datamodel.Alignment");
\r
68 Clazz.defineMethod (c$, "print",
\r
70 this.out = new StringBuffer ();
\r
72 while ((i < s.length) && (s[i] != null)) {
\r
73 this.out.append (">" + this.printId (s[i]));
\r
74 if (s[i].getDescription () != null) {
\r
75 this.out.append (" " + s[i].getDescription ());
\r
76 }this.out.append (this.newline);
\r
77 var nochunks = (Clazz.doubleToInt (s[i].getLength () / this.len)) + 1;
\r
78 for (var j = 0; j < nochunks; j++) {
\r
79 var start = j * this.len;
\r
80 var end = start + this.len;
\r
81 if (end < s[i].getLength ()) {
\r
82 this.out.append (s[i].getSequenceAsString (start, end) + this.newline);
\r
83 } else if (start < s[i].getLength ()) {
\r
84 this.out.append (s[i].getSequenceAsString (start, s[i].getLength ()) + this.newline);
\r
88 return this.out.toString ();
\r
90 Clazz.defineMethod (c$, "print",
\r
92 return this.print (this.getSeqsAsArray ());
\r