1 Clazz.declarePackage ("jalview.io");
\r
2 Clazz.load (null, "jalview.io.AppletFormatAdapter", ["MCview.PDBfile", "jalview.datamodel.Alignment", "jalview.io.FileParse", "$.IdentifyFile", "jalview.jsdev.GenericFileAdapter", "jalview.util.MessageManager", "java.io.IOException", "java.lang.Exception", "$.StringBuffer"], function () {
\r
3 c$ = Clazz.decorateAsClass (function () {
\r
4 this.viewpanel = null;
\r
5 this.annotFromStructure = false;
\r
6 this.localSecondaryStruct = false;
\r
7 this.serviceSecondaryStruct = false;
\r
8 this.alignFile = null;
\r
10 this.newline = null;
\r
11 this.exportSettings = null;
\r
12 Clazz.instantialize (this, arguments);
\r
13 }, jalview.io, "AppletFormatAdapter");
\r
14 Clazz.prepareFields (c$, function () {
\r
15 this.newline = System.getProperty ("line.separator");
\r
17 Clazz.makeConstructor (c$,
\r
20 Clazz.makeConstructor (c$,
\r
21 function (viewpanel) {
\r
22 this.viewpanel = viewpanel;
\r
23 }, "jalview.api.AlignmentViewPanel");
\r
24 Clazz.makeConstructor (c$,
\r
25 function (alignPanel, settings) {
\r
26 this.viewpanel = alignPanel;
\r
27 this.exportSettings = settings;
\r
28 }, "jalview.api.AlignmentViewPanel,jalview.api.AlignExportSettingI");
\r
29 c$.prettyPrint = Clazz.defineMethod (c$, "prettyPrint",
\r
31 var list = new StringBuffer ();
\r
32 for (var i = 0, iSize = els.length - 1; i < iSize; i++) {
\r
33 list.append (els[i]);
\r
36 list.append (" and " + els[els.length - 1] + ".");
\r
37 return list.toString ();
\r
39 Clazz.defineMethod (c$, "setNewlineString",
\r
43 Clazz.defineMethod (c$, "getNewlineString",
\r
45 return this.newline;
\r
47 c$.isValidFormat = Clazz.defineMethod (c$, "isValidFormat",
\r
49 return jalview.io.AppletFormatAdapter.isValidFormat (format, false);
\r
51 c$.isValidFormat = Clazz.defineMethod (c$, "isValidFormat",
\r
52 function (format, forwriting) {
\r
54 var format_list = (forwriting) ? jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS : jalview.io.AppletFormatAdapter.READABLE_FORMATS;
\r
55 for (var element, $element = 0, $$element = format_list; $element < $$element.length && ((element = $$element[$element]) || true); $element++) {
\r
56 if (element.equalsIgnoreCase (format)) {
\r
61 Clazz.defineMethod (c$, "readFile",
\r
62 function (inFile, type, format) {
\r
63 this.inFile = inFile;
\r
65 if (format.equals ("FASTA")) {
\r
66 this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("FastaFile", [inFile, type]);
\r
67 } else if (format.equals ("MSF")) {
\r
68 this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("MSFfile", [inFile, type]);
\r
69 } else if (format.equals ("PileUp")) {
\r
70 this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PileUpfile", [inFile, type]);
\r
71 } else if (format.equals ("CLUSTAL")) {
\r
72 this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("ClustalFile", [inFile, type]);
\r
73 } else if (format.equals ("BLC")) {
\r
74 this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("BLCFile", [inFile, type]);
\r
75 } else if (format.equals ("PIR")) {
\r
76 this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PIRFile", [inFile, type]);
\r
77 } else if (format.equals ("PFAM")) {
\r
78 this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PfamFile", [inFile, type]);
\r
79 } else if (format.equals ("JnetFile")) {
\r
80 this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("JPredFile", [inFile, type]);
\r
81 (this.alignFile).removeNonSequences ();
\r
82 } else if (format.equals ("PDB")) {
\r
83 this.alignFile = new MCview.PDBfile (this.annotFromStructure, this.localSecondaryStruct, this.serviceSecondaryStruct, inFile, type);
\r
84 } else if (format.equals ("STH")) {
\r
85 this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("StockholmFile", [inFile, type]);
\r
86 } else if (format.equals ("SimpleBLAST")) {
\r
87 this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("SimpleBlastFile", [inFile, type]);
\r
88 } else if (format.equals ("PHYLIP")) {
\r
89 this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PhylipFile", [inFile, type]);
\r
90 } else if (format.equals ("JSON")) {
\r
91 this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("JSONFile", [inFile, type]);
\r
92 } else if (format.equals ("HTML")) {
\r
93 this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("HtmlFile", [inFile, type]);
\r
94 } else if (format.equals ("RNAML")) {
\r
95 this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("RnamlFile", [inFile, type]);
\r
96 } else if (format.equals ("GFF v2 or v3")) {
\r
97 this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("Gff3File", [inFile, type]);
\r
98 }return this.buildAlignmentFrom (this.alignFile);
\r
100 if (Clazz.exceptionOf (e, Exception)) {
\r
101 e.printStackTrace ();
\r
102 System.err.println ("Failed to read alignment using the '" + format + "' reader.\n" + e);
\r
103 if (e.getMessage () != null && e.getMessage ().startsWith (jalview.io.AppletFormatAdapter.INVALID_CHARACTERS)) {
\r
104 throw new java.io.IOException (e.getMessage ());
\r
105 }if (type.equalsIgnoreCase ("Paste")) {
\r
107 this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("FastaFile", [">UNKNOWN\n" + inFile, "Paste"]);
\r
108 return this.buildAlignmentFrom (this.alignFile);
\r
110 if (Clazz.exceptionOf (ex, Exception)) {
\r
111 if (ex.toString ().startsWith (jalview.io.AppletFormatAdapter.INVALID_CHARACTERS)) {
\r
112 throw new java.io.IOException (e.getMessage ());
\r
113 }ex.printStackTrace ();
\r
118 }throw new java.io.IOException (jalview.io.AppletFormatAdapter.SUPPORTED_FORMATS);
\r
124 Clazz.defineMethod (c$, "readFromFile",
\r
125 function (source, format) {
\r
126 this.inFile = source.getInFile ();
\r
127 var type = source.type;
\r
129 if (format.equals ("FASTA")) {
\r
130 this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("FastaFile", [source]);
\r
131 } else if (format.equals ("MSF")) {
\r
132 this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("MSFfile", [source]);
\r
133 } else if (format.equals ("PileUp")) {
\r
134 this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PileUpfile", [source]);
\r
135 } else if (format.equals ("CLUSTAL")) {
\r
136 this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("ClustalFile", [source]);
\r
137 } else if (format.equals ("BLC")) {
\r
138 this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("BLCFile", [source]);
\r
139 } else if (format.equals ("PIR")) {
\r
140 this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PIRFile", [source]);
\r
141 } else if (format.equals ("PFAM")) {
\r
142 this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PfamFile", [source]);
\r
143 } else if (format.equals ("JnetFile")) {
\r
144 this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("JPredFile", [source]);
\r
145 (this.alignFile).removeNonSequences ();
\r
146 } else if (format.equals ("PDB")) {
\r
147 this.alignFile = new MCview.PDBfile (this.annotFromStructure, this.localSecondaryStruct, this.serviceSecondaryStruct, source);
\r
148 } else if (format.equals ("STH")) {
\r
149 this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("StockholmFile", [source]);
\r
150 } else if (format.equals ("RNAML")) {
\r
151 this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("RnamlFile", [source]);
\r
152 } else if (format.equals ("SimpleBLAST")) {
\r
153 this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("SimpleBlastFile", [source]);
\r
154 } else if (format.equals ("PHYLIP")) {
\r
155 this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PhylipFile", [source]);
\r
156 } else if (format.equals ("GFF v2 or v3")) {
\r
157 this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("Gff3File", [this.inFile, type]);
\r
158 } else if (format.equals ("JSON")) {
\r
159 this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("JSONFile", [source]);
\r
160 } else if (format.equals ("HTML")) {
\r
161 this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("HtmlFile", [source]);
\r
162 }return this.buildAlignmentFrom (this.alignFile);
\r
164 if (Clazz.exceptionOf (e, Exception)) {
\r
165 e.printStackTrace ();
\r
166 System.err.println ("Failed to read alignment using the '" + format + "' reader.\n" + e);
\r
167 if (e.getMessage () != null && e.getMessage ().startsWith (jalview.io.AppletFormatAdapter.INVALID_CHARACTERS)) {
\r
168 throw new java.io.IOException (e.getMessage ());
\r
169 }if (type.equalsIgnoreCase ("Paste")) {
\r
171 this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("FastaFile", [">UNKNOWN\n" + this.inFile, "Paste"]);
\r
172 return this.buildAlignmentFrom (this.alignFile);
\r
174 if (Clazz.exceptionOf (ex, Exception)) {
\r
175 if (ex.toString ().startsWith (jalview.io.AppletFormatAdapter.INVALID_CHARACTERS)) {
\r
176 throw new java.io.IOException (e.getMessage ());
\r
177 }ex.printStackTrace ();
\r
182 }throw new java.io.IOException (jalview.io.AppletFormatAdapter.SUPPORTED_FORMATS);
\r
187 }, "jalview.io.FileParse,~S");
\r
188 Clazz.defineMethod (c$, "buildAlignmentFrom",
\r
189 function (alignFile2) {
\r
190 var al = new jalview.datamodel.Alignment (this.alignFile.getSeqsAsArray ());
\r
191 this.alignFile.addAnnotations (al);
\r
192 this.alignFile.addGroups (al);
\r
194 }, "jalview.io.AlignFile");
\r
195 Clazz.defineMethod (c$, "formatSequences",
\r
196 function (format, jvsuffix, ap, selectedOnly) {
\r
197 var selvew = ap.getAlignViewport ().getAlignmentView (selectedOnly, false);
\r
198 var aselview = selvew.getVisibleAlignment (ap.getAlignViewport ().getGapCharacter ());
\r
199 var ala = (ap.getAlignViewport ().getVisibleAlignmentAnnotation (selectedOnly));
\r
201 for (var aa, $aa = ala.iterator (); $aa.hasNext () && ((aa = $aa.next ()) || true);) {
\r
202 aselview.addAnnotation (aa);
\r
204 }this.viewpanel = ap;
\r
205 return this.formatSequences (format, aselview, jvsuffix);
\r
206 }, "~S,~B,jalview.api.AlignmentViewPanel,~B");
\r
207 Clazz.defineMethod (c$, "formatSequences",
\r
208 function (format, alignment, jvsuffix) {
\r
211 if (format.equalsIgnoreCase ("FASTA")) {
\r
212 afile = jalview.jsdev.GenericFileAdapter.getFile ("FastaFile", []);
\r
213 } else if (format.equalsIgnoreCase ("MSF")) {
\r
214 afile = jalview.jsdev.GenericFileAdapter.getFile ("MSFfile", []);
\r
215 } else if (format.equalsIgnoreCase ("PileUp")) {
\r
216 afile = jalview.jsdev.GenericFileAdapter.getFile ("PileUpfile", []);
\r
217 } else if (format.equalsIgnoreCase ("CLUSTAL")) {
\r
218 afile = jalview.jsdev.GenericFileAdapter.getFile ("ClustalFile", []);
\r
219 } else if (format.equalsIgnoreCase ("BLC")) {
\r
220 afile = jalview.jsdev.GenericFileAdapter.getFile ("BLCFile", []);
\r
221 } else if (format.equalsIgnoreCase ("PIR")) {
\r
222 afile = jalview.jsdev.GenericFileAdapter.getFile ("PIRFile", []);
\r
223 } else if (format.equalsIgnoreCase ("PFAM")) {
\r
224 afile = jalview.jsdev.GenericFileAdapter.getFile ("PfamFile", []);
\r
225 } else if (format.equalsIgnoreCase ("STH")) {
\r
226 afile = jalview.jsdev.GenericFileAdapter.getFile ("StockholmFile", [alignment]);
\r
227 } else if (format.equalsIgnoreCase ("AMSA")) {
\r
228 afile = jalview.jsdev.GenericFileAdapter.getFile ("AMSAFile", [alignment]);
\r
229 } else if (format.equalsIgnoreCase ("PHYLIP")) {
\r
230 afile = jalview.jsdev.GenericFileAdapter.getFile ("PhylipFile", []);
\r
231 } else if (format.equalsIgnoreCase ("JSON")) {
\r
232 afile = jalview.jsdev.GenericFileAdapter.getFile ("JSONFile", []);
\r
233 } else if (format.equalsIgnoreCase ("RNAML")) {
\r
234 afile = jalview.jsdev.GenericFileAdapter.getFile ("RnamlFile", []);
\r
236 throw new Exception (jalview.util.MessageManager.getString ("error.implementation_error_unknown_file_format_string"));
\r
237 }afile.setNewlineString (this.newline);
\r
238 afile.addJVSuffix (jvsuffix);
\r
239 afile.setExportSettings (this.exportSettings);
\r
240 afile.configureForView (this.viewpanel);
\r
241 if (this.viewpanel == null || this.viewpanel.getAlignment () == null || this.viewpanel.getAlignment () !== alignment) {
\r
242 afile.setSeqs (alignment.getSequencesArray ());
\r
244 afile.setSeqs (this.viewpanel.getAlignment ().getSequencesArray ());
\r
245 }var afileresp = afile.print ();
\r
246 if (afile.hasWarningMessage ()) {
\r
247 System.err.println ("Warning raised when writing as " + format + " : " + afile.getWarningMessage ());
\r
250 if (Clazz.exceptionOf (e, Exception)) {
\r
251 System.err.println ("Failed to write alignment as a '" + format + "' file\n");
\r
252 e.printStackTrace ();
\r
258 }, "~S,jalview.datamodel.AlignmentI,~B");
\r
259 c$.checkProtocol = Clazz.defineMethod (c$, "checkProtocol",
\r
261 var protocol = jalview.io.AppletFormatAdapter.FILE;
\r
262 var ft = file.toLowerCase ().trim ();
\r
263 if (ft.indexOf ("http:") == 0 || ft.indexOf ("https:") == 0 || ft.indexOf ("file:") == 0) {
\r
264 protocol = jalview.io.AppletFormatAdapter.URL;
\r
267 c$.resolveProtocol = Clazz.defineMethod (c$, "resolveProtocol",
\r
268 function (file, format) {
\r
269 return jalview.io.AppletFormatAdapter.resolveProtocol (file, format, false);
\r
271 c$.resolveProtocol = Clazz.defineMethod (c$, "resolveProtocol",
\r
272 function (file, format, debug) {
\r
273 var protocol = null;
\r
275 System.out.println ("resolving datasource started with:\n>>file\n" + file + ">>endfile");
\r
278 var is = System.getSecurityManager ().getClass ().getResourceAsStream ("/" + file);
\r
283 System.err.println ("Resource '" + file + "' was " + (rtn ? "" : "not") + " located by classloader.");
\r
285 protocol = jalview.io.AppletFormatAdapter.CLASSLOADER;
\r
287 if (Clazz.exceptionOf (ex, Exception)) {
\r
288 System.err.println ("Exception checking resources: " + file + " " + ex);
\r
293 if (file.indexOf ("://") > -1) {
\r
294 protocol = jalview.io.AppletFormatAdapter.URL;
\r
296 protocol = jalview.io.AppletFormatAdapter.FILE;
\r
300 System.out.println ("Trying to get contents of resource as " + protocol + ":");
\r
301 }fp = new jalview.io.FileParse (file, protocol);
\r
302 if (!fp.isValid ()) {
\r
306 System.out.println ("Successful.");
\r
308 if (Clazz.exceptionOf (e, Exception)) {
\r
310 System.err.println ("Exception when accessing content: " + e);
\r
318 System.out.println ("Accessing as paste.");
\r
319 }protocol = jalview.io.AppletFormatAdapter.PASTE;
\r
322 fp = new jalview.io.FileParse (file, protocol);
\r
323 if (!fp.isValid ()) {
\r
326 if (Clazz.exceptionOf (e, Exception)) {
\r
327 System.err.println ("Failed to access content as paste!");
\r
328 e.printStackTrace ();
\r
336 }if (format == null || format.length == 0) {
\r
340 var idformat = new jalview.io.IdentifyFile ().Identify (file, protocol);
\r
341 if (idformat == null) {
\r
343 System.out.println ("Format not identified. Inaccessible file.");
\r
346 System.out.println ("Format identified as " + idformat + "and expected as " + format);
\r
347 }if (idformat.equals (format)) {
\r
349 System.out.println ("Protocol identified as " + protocol);
\r
353 System.out.println ("File deemed not accessible via " + protocol);
\r
357 if (Clazz.exceptionOf (e, Exception)) {
\r
359 System.err.println ("File deemed not accessible via " + protocol);
\r
360 e.printStackTrace ();
\r
367 Clazz.defineMethod (c$, "getAlignFile",
\r
369 return this.alignFile;
\r
371 Clazz.defineMethod (c$, "setAlignFile",
\r
372 function (alignFile) {
\r
373 this.alignFile = alignFile;
\r
374 }, "jalview.io.AlignFile");
\r
375 Clazz.defineStatics (c$,
\r
379 "CLASSLOADER", "ClassLoader");
\r
380 c$.READABLE_FORMATS = c$.prototype.READABLE_FORMATS = Clazz.newArray (-1, ["BLC", "CLUSTAL", "FASTA", "MSF", "PileUp", "PIR", "PFAM", "STH", "PDB", "JnetFile", "RNAML", "PHYLIP", "JSON", "GFF v2 or v3", "HTML"]);
\r
381 c$.READABLE_EXTENSIONS = c$.prototype.READABLE_EXTENSIONS = Clazz.newArray (-1, ["fa, fasta, mfa, fastq", "aln", "pfam", "msf", "pir", "blc", "amsa", "sto,stk", "xml,rnaml", "phy", "json", ".gff2,gff3", "jar,jvp", "html"]);
\r
382 c$.READABLE_FNAMES = c$.prototype.READABLE_FNAMES = Clazz.newArray (-1, ["Fasta", "Clustal", "PFAM", "MSF", "PIR", "BLC", "AMSA", "Stockholm", "RNAML", "PHYLIP", "JSON", "GFF v2 or v3", "Jalview", "HTML"]);
\r
383 c$.WRITEABLE_FORMATS = c$.prototype.WRITEABLE_FORMATS = Clazz.newArray (-1, ["BLC", "CLUSTAL", "FASTA", "MSF", "PileUp", "PIR", "PFAM", "AMSA", "STH", "PHYLIP", "JSON"]);
\r
384 c$.WRITABLE_EXTENSIONS = c$.prototype.WRITABLE_EXTENSIONS = Clazz.newArray (-1, ["fa, fasta, mfa, fastq", "aln", "pfam", "msf", "pir", "blc", "amsa", "sto,stk", "phy", "json", "jvp"]);
\r
385 c$.WRITABLE_FNAMES = c$.prototype.WRITABLE_FNAMES = Clazz.newArray (-1, ["Fasta", "Clustal", "PFAM", "MSF", "PIR", "BLC", "AMSA", "STH", "PHYLIP", "JSON", "Jalview"]);
\r
386 Clazz.defineStatics (c$,
\r
387 "INVALID_CHARACTERS", "Contains invalid characters");
\r
388 c$.SUPPORTED_FORMATS = c$.prototype.SUPPORTED_FORMATS = "Formats currently supported are\n" + jalview.io.AppletFormatAdapter.prettyPrint (jalview.io.AppletFormatAdapter.READABLE_FORMATS);
\r