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 () {
6 Clazz.instantialize (this, arguments);
7 }, jalview.io, "FastaFile", jalview.io.AlignFile);
8 Clazz.makeConstructor (c$,
10 Clazz.superConstructor (this, jalview.io.FastaFile, []);
12 Clazz.overrideMethod (c$, "parse",
14 var sb = new StringBuffer ();
19 var annotation = false;
20 while ((uline = this.nextLine ()) != null) {
22 if (line.length > 0) {
23 if (line.charAt (0) == '>') {
24 if (line.startsWith (">#_")) {
26 this.annotations.addElement (this.makeAnnotation (seq, sb));
30 seq.setSequence (sb.toString ());
32 this.seqs.addElement (seq);
33 }}seq = this.parseId (line.substring (1));
35 sb = new StringBuffer ();
36 if (line.startsWith (">#_")) {
39 sb.append (annotation ? uline : line);
42 this.annotations.addElement (this.makeAnnotation (seq, sb));
43 } else if (!firstLine) {
44 seq.setSequence (sb.toString ());
45 this.seqs.addElement (seq);
47 Clazz.defineMethod (c$, "makeAnnotation",
48 ($fz = function (seq, sb) {
49 var anots = new Array (sb.length ());
51 for (var i = 0; i < anots.length; i++) {
52 var cn = sb.charAt (i);
54 anots[i] = new jalview.datamodel.Annotation ("" + cn, null, ' ', NaN);
56 var aa = new jalview.datamodel.AlignmentAnnotation (seq.getName ().substring (2), seq.getDescription (), anots);
58 }, $fz.isPrivate = true, $fz), "jalview.datamodel.SequenceI,StringBuffer");
59 Clazz.defineMethod (c$, "addAnnotations",
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);
67 }, "jalview.datamodel.Alignment");
68 Clazz.defineMethod (c$, "print",
70 this.out = new StringBuffer ();
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);
88 return this.out.toString ();
90 Clazz.defineMethod (c$, "print",
92 return this.print (this.getSeqsAsArray ());