2 * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3 * Copyright (C) $$Year-Rel$$ The Jalview Authors
5 * This file is part of Jalview.
7 * Jalview is free software: you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation, either version 3
10 * of the License, or (at your option) any later version.
12 * Jalview is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty
14 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 * PURPOSE. See the GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
19 * The Jalview Authors are detailed in the 'AUTHORS' file.
23 import static org.testng.AssertJUnit.assertNotNull;
24 import static org.testng.AssertJUnit.assertTrue;
26 import jalview.datamodel.AlignmentI;
27 import jalview.datamodel.ColumnSelection;
28 import jalview.datamodel.PDBEntry;
29 import jalview.datamodel.PDBEntry.Type;
30 import jalview.datamodel.SequenceI;
31 import jalview.gui.Desktop;
32 import jalview.gui.JvOptionPane;
33 import jalview.io.AnnotationFile.ViewDef;
34 import jalview.structure.StructureSelectionManager;
37 import java.util.Hashtable;
39 import org.testng.Assert;
40 import org.testng.annotations.BeforeClass;
41 import org.testng.annotations.DataProvider;
42 import org.testng.annotations.Test;
44 public class AnnotationFileIOTest
47 private StructureSelectionManager ssm = null;
49 private AlignmentI al = null;
51 @BeforeClass(alwaysRun = true)
52 public void setUpJvOptionPane()
54 JvOptionPane.setInteractiveMode(false);
55 JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
58 static String TestFiles[][] = {
59 { "Test example annotation import/export", "examples/uniref50.fa",
60 "examples/testdata/example_annot_file.jva" },
61 { "Test multiple combine annotation statements import/export",
62 "examples/uniref50.fa",
63 "examples/testdata/test_combine_annot.jva" },
65 "Test multiple combine annotation statements with sequence_ref import/export",
66 "examples/uniref50.fa", "examples/testdata/uniref50_iupred.jva" },
68 "Test group only annotation file parsing results in parser indicating annotation was parsed",
69 "examples/uniref50.fa", "examples/testdata/test_grpannot.jva" },
70 { "Test hiding/showing of insertions on sequence_ref",
71 "examples/uniref50.fa", "examples/testdata/uniref50_seqref.jva" } };
73 @Test(groups = { "Functional" })
74 public void exampleAnnotationFileIO() throws Exception
76 for (String[] testPair : TestFiles)
78 testAnnotationFileIO(testPair[0], new File(testPair[1]), new File(
83 AlignmentI readAlignmentFile(File f)
85 System.out.println("Reading file: " + f);
86 String ff = f.getPath();
89 FormatAdapter rf = new FormatAdapter();
91 AlignmentI al = rf.readFile(ff, DataSourceType.FILE,
92 new IdentifyFile().identify(ff, DataSourceType.FILE));
94 // make sure dataset is initialised ? not sure about this
95 for (int i = 0; i < al.getSequencesArray().length; ++i)
97 al.getSequenceAt(i).createDatasetSequence();
99 assertNotNull("Couldn't read supplied alignment data.", al);
101 } catch (Exception e)
105 Assert.fail("Couln't read the alignment in file '" + f.toString() + "'");
110 * test alignment data in given file can be imported, exported and reimported
114 * - source datafile (IdentifyFile.identify() should work with it)
116 * - label for IO class used to write and read back in the data from
119 void testAnnotationFileIO(String testname, File f, File annotFile)
121 System.out.println("Test: " + testname + "\nReading annotation file '"
122 + annotFile + "' onto : " + f);
123 String af = annotFile.getPath();
126 AlignmentI al = readAlignmentFile(f);
127 ColumnSelection cs = new ColumnSelection();
131 + "\nAlignment was not annotated - annotation file not imported.",
132 new AnnotationFile().readAnnotationFile(al, cs, af,
133 DataSourceType.FILE));
135 AnnotationFile aff = new AnnotationFile();
136 ViewDef v = aff.new ViewDef(null, al.getHiddenSequences(), cs,
138 String anfileout = new AnnotationFile().printAnnotations(
139 al.getAlignmentAnnotation(), al.getGroups(),
140 al.getProperties(), null, al, v);
144 + "\nAlignment annotation file was not regenerated. Null string",
149 + "\nAlignment annotation file was not regenerated. Empty string",
150 anfileout.length() > "JALVIEW_ANNOTATION".length());
152 System.out.println("Output annotation file:\n" + anfileout
155 AlignmentI al_new = readAlignmentFile(f);
159 + "\nregenerated annotation file did not annotate alignment.",
160 new AnnotationFile().readAnnotationFile(al_new, anfileout,
161 DataSourceType.PASTE));
163 // test for consistency in io
164 StockholmFileTest.testAlignmentEquivalence(al, al_new, false);
166 } catch (Exception e)
172 + "\nCouldn't complete Annotation file roundtrip input/output/input test for '"
177 @BeforeClass(alwaysRun = true)
178 void testProcessStructModel()
180 File alignmentFile = new File(
181 "examples/testdata/phyre2results/56da5616b4559c93/allhits.fasta");
182 String annotationFile = "examples/testdata/phyre2results/56da5616b4559c93/allhits.ann";
183 ColumnSelection cs = new ColumnSelection();
184 al = readAlignmentFile(alignmentFile);
185 boolean annotationRead = new AnnotationFile().readAnnotationFile(al,
186 cs, annotationFile, DataSourceType.FILE);
187 Assert.assertTrue(annotationRead);
188 ssm = StructureSelectionManager
189 .getStructureSelectionManager(Desktop.instance);
190 System.out.println("bla");
194 groups = { "Functional" },
195 dataProvider = "phyre2ModelPDBEntryDataProvider")
196 void testSequence_PDBEntryAssociation(String[] structModelHeader, String baseDir,
197 String structModelDataStr)
199 String structModelData[] = structModelDataStr.split("\t");
200 String templateSeq = structModelData[1];
201 String pdbId = structModelData[2];
203 SequenceI testSeq = al.findName(templateSeq);
204 Assert.assertNotNull(testSeq);
205 PDBEntry actualPDBEntry = testSeq.getDatasetSequence().getPDBEntry(
207 Assert.assertNotNull(actualPDBEntry);
209 PDBEntry expectedPDBEntry = new PDBEntry(pdbId, " ", Type.PDB, baseDir
211 String phyre2ModelDesc = AnnotationFile.generatePhyre2InfoHTMLTable(structModelHeader,
213 expectedPDBEntry.setProperty("PHYRE2_MODEL_INFO", phyre2ModelDesc);
214 Assert.assertEquals(actualPDBEntry, expectedPDBEntry);
218 groups = { "Functional" },
219 dataProvider = "phyre2ModelMappingDataProvider")
220 void testPhyre2ModelRegistration(String phyre2ModelFile,
221 String expectedPhyre2FastaMappingFile)
224 String actualFastaMappingFile = ssm
225 .getPhyre2FastaFileFor(phyre2ModelFile);
226 Assert.assertNotNull(actualFastaMappingFile);
227 Assert.assertEquals(actualFastaMappingFile,
228 expectedPhyre2FastaMappingFile);
232 groups = { "Functional" },
233 dataProvider = "phyre2InfoHTMLTableDataProvider")
234 void testGeneratePhyre2InfoHTMLTable(String caseDescription,
235 String[] header, String[] data, String expectedHtml)
237 System.out.println(">>>> Testing Case - " + caseDescription);
238 String actualHtmlGenerated = AnnotationFile
239 .generatePhyre2InfoHTMLTable(header, data);
240 System.out.println("-----> " + actualHtmlGenerated);
241 Assert.assertEquals(actualHtmlGenerated, expectedHtml);
245 groups = { "Functional" },
246 dataProvider = "StructModelHtmlDataProvider")
247 void testIsGenerateStructInfoHtml(String caseDescription,
248 String[] header, String[] data, boolean expectedOutcome)
250 System.out.println(">>>> Testing Case - " + caseDescription);
251 boolean actual = AnnotationFile.isGenerateStructInfoHtml(header, data);
252 Assert.assertEquals(actual, expectedOutcome);
255 @Test(groups = { "Functional" }, dataProvider = "FilePathProvider")
256 void testResolveAbsolutePath(String caseDescription, String suppliedPath,
257 String baseURI, String expectedURI)
259 System.out.println(">>>> Testing Case - " + caseDescription);
260 String actualURI = AnnotationFile.resolveAbsolutePath(suppliedPath,
262 Assert.assertEquals(actualURI, expectedURI);
265 @DataProvider(name = "phyre2ModelPDBEntryDataProvider")
266 public static Object[][] phyre2ModelPDBEntryDataProvider()
268 String[] structModelHeader = new String[] { "QUERY_SEQ",
269 "TEMPLATE_SEQ", "MODEL_FILE", "MAPPING_FILE", "Confidence",
270 "% I.D", "Aligned Range", "Other Information"};
271 String baseDir = "examples/testdata/phyre2results/56da5616b4559c93/";
273 return new Object[][] {
277 "FER_CAPAN_1-144\tc4n58A_\tc4n58A_.1.pdb\tc4n58A_.1.fasta\t1\t54\t48-143\t<b>PDB Header: </b>Hyrolase<br><b>Chain: "
278 + "</b>A<br><b>PDB Molecule: </b>Pectocin m2<br> <b>PDB Title: </b>Crystal structure of pectocin m2 at 1.86 amgtroms" },
282 "FER_CAPAN_1-144\td1a70a_\td1a70a_.2.pdb\td1a70a_.2.fasta\t1\t71\t48-144\t<b>Fold: </b>Beta-Grasp (ubiquitin-like)<br>"
283 + "<b>Superfamily: </b>2Fe-2S ferredoxin-like<br><b>Family: </b>2Fe-2S ferredoxin-related" },
287 "FER_CAPAN_1-144\td1offa_\td1offa_.3.pdb\td1offa_.3.fasta\t1\t73\t48-142\t<b>Fold: </b>Beta-Grasp (ubiquitin-like)<br>"
288 + "<b>Superfamily: </b>2Fe-2S ferredoxin-like<br><b>Family: </b>2Fe-2S ferredoxin-related" },
292 "FER_CAPAN_1-144\td1frra_\td1frra_.4.pdb\td1frra_.4.fasta\t0.999\t62\t49-142\t<b>Fold: </b>Beta-Grasp (ubiquitin-like)<br>"
293 + "<b>Superfamily: </b>2Fe-2S ferredoxin-like<br><b>Family: </b>2Fe-2S ferredoxin-related" },
297 "FER_CAPAN_1-144\td1pfda_\td1pfda_.5.pdb\td1pfda_.5.fasta\t0.999\t70\t48-143\t<b>Fold: </b>Beta-Grasp (ubiquitin-like)<br>"
298 + "<b>Superfamily: </b>2Fe-2S ferredoxin-like<br><b>Family: </b>2Fe-2S ferredoxin-related" },
302 "FER_CAPAN_1-144\td1frda_\td1frda_.6.pdb\td1frda_.6.fasta\t0.999\t50\t48-143\t<b>Fold: </b>Beta-Grasp (ubiquitin-like)<br>"
303 + "<b>Superfamily: </b>2Fe-2S ferredoxin-like<br><b>Family: </b>2Fe-2S ferredoxin-related" },
307 "FER_CAPAN_1-144\td1fxia_\td1fxia_.7.pdb\td1fxia_.7.fasta\t0.999\t62\t48-142\t<b>Fold: </b>Beta-Grasp (ubiquitin-like)<br>"
308 + "<b>Superfamily: </b>2Fe-2S ferredoxin-like<br><b>Family: </b>2Fe-2S ferredoxin-related" },
312 "FER_CAPAN_1-144\td1gaqb_\td1gaqb_.8.pdb\td1gaqb_.8.fasta\t0.999\t71\t48-144\t<b>Fold: </b>Beta-Grasp (ubiquitin-like)<br>"
313 + "<b>Superfamily: </b>2Fe-2S ferredoxin-like<br><b>Family: </b>2Fe-2S ferredoxin-related" },
317 "FER_CAPAN_1-144\td1iuea_\td1iuea_.9.pdb\td1iuea_.9.fasta\t0.999\t48\t48-142\t<b>Fold: </b>Beta-Grasp (ubiquitin-like)<br>"
318 + "<b>Superfamily: </b>2Fe-2S ferredoxin-like<br><b>Family: </b>2Fe-2S ferredoxin-related" },
322 "FER_CAPAN_1-144\td1awda_\td1awda_.10.pdb\td1awda_.10.fasta\t0.999\t68\t50-142\t<b>Fold: </b>Beta-Grasp (ubiquitin-like)<br>"
323 + "<b>Superfamily: </b>2Fe-2S ferredoxin-like<br><b>Family: </b>2Fe-2S ferredoxin-related" },
327 "FER_CAPAN_1-144\td1wria_\td1wria_.11.pdb\td1wria_.11.fasta\t0.999\t59\t49-142\t<b>Fold: </b>Beta-Grasp (ubiquitin-like)<br>"
328 + "<b>Superfamily: </b>2Fe-2S ferredoxin-like<br><b>Family: </b>2Fe-2S ferredoxin-related" },
332 "FER_CAPAN_1-144\td1czpa_\td1czpa_.12.pdb\td1czpa_.12.fasta\t0.999\t64\t48-142\t<b>Fold: </b>Beta-Grasp (ubiquitin-like)<br>"
333 + "<b>Superfamily: </b>2Fe-2S ferredoxin-like<br><b>Family: </b>2Fe-2S ferredoxin-related" },
337 "FER_CAPAN_1-144\td2cjoa_\td2cjoa_.13.pdb\td2cjoa_.13.fasta\t0.999\t63\t48-142\t<b>Fold: </b>Beta-Grasp (ubiquitin-like)<br>"
338 + "<b>Superfamily: </b>2Fe-2S ferredoxin-like<br><b>Family: </b>2Fe-2S ferredoxin-related" },
342 "FER_CAPAN_1-144\td4fxca_\td4fxca_.14.pdb\td4fxca_.14.fasta\t0.999\t64\t48-142\t<b>Fold: </b>Beta-Grasp (ubiquitin-like)<br>"
343 + "<b>Superfamily: </b>2Fe-2S ferredoxin-like<br><b>Family: </b>2Fe-2S ferredoxin-related" },
347 "FER_CAPAN_1-144\tc4itkA_\tc4itkA_.15.pdb\tc4itkA_.15.fasta\t0.999\t57\t50-142\t<b>PDB Header: </b>Electron transport<br>"
348 + "<b>Chain: </b>A<br><b>PDB Molecule: </b>Apoferredoxin <br><b>PDB Title: </b>The structure of c.reinhardtii ferredoxin 2" },
352 "FER_CAPAN_1-144\tc1krhA_\tc1krhA_.16.pdb\tc1krhA_.16.fasta\t0.999\t25\t48-142\t<b>PDB Header: </b>Oxidoreductase<br><b>Chain: "
353 + "</b>A<br><b>PDB Molecule: </b>Benzoate 1,2-deoxygenase reductase <br> <b>PDB Title: </b>X-ray structure of benzoate "
354 + "deoxygenate reductase" },
358 "FER_CAPAN_1-144\td1krha3\td1krha3.17.pdb\td1krha3.17.fasta\t0.999\t24\t48-143\t<b>Fold: </b>Beta-Grasp (ubiquitin-like)<br>"
359 + "<b>Superfamily: </b>2Fe-2S ferredoxin-like<br><b>Family: </b>2Fe-2S ferredoxin domains from multi domain proteins" },
363 "FER_CAPAN_1-144\td1jq4a_\td1jq4a_.18.pdb\td1jq4a_.18.fasta\t0.999\t29\t47-138\t<b>Fold: </b>Beta-Grasp (ubiquitin-like)<br>"
364 + "<b>Superfamily: </b>2Fe-2S ferredoxin-like<br><b>Family: </b>2Fe-2S ferredoxin domains from multi domain proteins" },
368 "FER_CAPAN_1-144\tc4wqmA_\tc4wqmA_.19.pdb\tc4wqmA_.19.fasta\t0.999\t28\t49-144\t<b>PDB header: </b>Oxidoreductase<br><b>Chain: "
369 + "</b>A<br><b>PDB Molecule: </b>Toluene-4-monooxygenase electron transfer component<br><b>PDB Title: </b>Structure of the "
370 + "toluene 4-monooxygenase nah oxidoreductase t4mof,2 k270s k271s variant" },
374 "FER_CAPAN_1-144\tc2piaA_\tc2piaA_.20.pdb\tc2piaA_.20.fasta\t0.999\t22\t1-136\t<b>PDB header: </b>Reductase<br><b>Chain: "
375 + "</b>A<br><b>PDB Molecule: </b>Phthalate deoxygenase reductase<br><b>PDB Title: </b>Phthalate deoxygenate reductase: a"
376 + " modular structure for2 electron transfer from pyridine nucleotides to [2fe-2s]" }
380 @DataProvider(name = "phyre2ModelMappingDataProvider")
381 public static Object[][] phyre2ModelMappingDataProvider()
383 return new Object[][] {
385 { "examples/testdata/phyre2results/56da5616b4559c93/c4n58A_.1.pdb",
386 "examples/testdata/phyre2results/56da5616b4559c93/c4n58A_.1.fasta" },
387 { "examples/testdata/phyre2results/56da5616b4559c93/d1a70a_.2.pdb",
388 "examples/testdata/phyre2results/56da5616b4559c93/d1a70a_.2.fasta" },
389 { "examples/testdata/phyre2results/56da5616b4559c93/d1offa_.3.pdb",
390 "examples/testdata/phyre2results/56da5616b4559c93/d1offa_.3.fasta" },
391 { "examples/testdata/phyre2results/56da5616b4559c93/d1frra_.4.pdb",
392 "examples/testdata/phyre2results/56da5616b4559c93/d1frra_.4.fasta" },
393 { "examples/testdata/phyre2results/56da5616b4559c93/d1pfda_.5.pdb",
394 "examples/testdata/phyre2results/56da5616b4559c93/d1pfda_.5.fasta" },
395 { "examples/testdata/phyre2results/56da5616b4559c93/d1frda_.6.pdb",
396 "examples/testdata/phyre2results/56da5616b4559c93/d1frda_.6.fasta" },
398 { "examples/testdata/phyre2results/56da5616b4559c93/d1fxia_.7.pdb",
399 "examples/testdata/phyre2results/56da5616b4559c93/d1fxia_.7.fasta" },
401 { "examples/testdata/phyre2results/56da5616b4559c93/d1gaqb_.8.pdb",
402 "examples/testdata/phyre2results/56da5616b4559c93/d1gaqb_.8.fasta" },
403 { "examples/testdata/phyre2results/56da5616b4559c93/d1iuea_.9.pdb",
404 "examples/testdata/phyre2results/56da5616b4559c93/d1iuea_.9.fasta" },
406 "examples/testdata/phyre2results/56da5616b4559c93/d1awda_.10.pdb",
407 "examples/testdata/phyre2results/56da5616b4559c93/d1awda_.10.fasta" },
409 "examples/testdata/phyre2results/56da5616b4559c93/d1wria_.11.pdb",
410 "examples/testdata/phyre2results/56da5616b4559c93/d1wria_.11.fasta" },
412 "examples/testdata/phyre2results/56da5616b4559c93/d1czpa_.12.pdb",
413 "examples/testdata/phyre2results/56da5616b4559c93/d1czpa_.12.fasta" },
415 "examples/testdata/phyre2results/56da5616b4559c93/d2cjoa_.13.pdb",
416 "examples/testdata/phyre2results/56da5616b4559c93/d2cjoa_.13.fasta" },
418 "examples/testdata/phyre2results/56da5616b4559c93/d4fxca_.14.pdb",
419 "examples/testdata/phyre2results/56da5616b4559c93/d4fxca_.14.fasta" },
421 "examples/testdata/phyre2results/56da5616b4559c93/c4itkA_.15.pdb",
422 "examples/testdata/phyre2results/56da5616b4559c93/c4itkA_.15.fasta" },
424 "examples/testdata/phyre2results/56da5616b4559c93/c1krhA_.16.pdb",
425 "examples/testdata/phyre2results/56da5616b4559c93/c1krhA_.16.fasta" },
427 "examples/testdata/phyre2results/56da5616b4559c93/d1krha3.17.pdb",
428 "examples/testdata/phyre2results/56da5616b4559c93/d1krha3.17.fasta" },
430 "examples/testdata/phyre2results/56da5616b4559c93/d1jq4a_.18.pdb",
431 "examples/testdata/phyre2results/56da5616b4559c93/d1jq4a_.18.fasta" },
433 "examples/testdata/phyre2results/56da5616b4559c93/c4wqmA_.19.pdb",
434 "examples/testdata/phyre2results/56da5616b4559c93/c4wqmA_.19.fasta" },
436 "examples/testdata/phyre2results/56da5616b4559c93/c2piaA_.20.pdb",
437 "examples/testdata/phyre2results/56da5616b4559c93/c2piaA_.20.fasta" }
442 @DataProvider(name = "phyre2InfoHTMLTableDataProvider")
443 public static Object[][] phyre2InfoHTMLTableDataProvider()
445 return new Object[][] {
447 "STRUCTMODEL Annotation with no headear information provided",
449 new String[] { "FER_CAPAN_1-144", "d1a70a_ d1a70a_.2.pdb",
450 "d1a70a_.2.fasta", }, "" },
452 "STRUCTMODEL Annotation with complete compulsary data and headear information provided",
453 new String[] { "HEADER_STRUCT_MODEL", "QUERY_SEQ",
454 "TEMPLATE_SEQ", "MODEL_FILE", "MAPPING_FILE" },
455 new String[] { "FER_CAPAN_1-144", "d1a70a_ d1a70a_.2.pdb",
456 "d1a70a_.2.fasta", },
457 "<html><table border=\"1\" width=100%><tr><td colspan=\"2\"><strong>Phyre2 Template Info</strong></td></tr></table></html>" },
459 "STRUCTMODEL Annotation with complete compulsary data and headear information provided",
460 new String[] { "HEADER_STRUCT_MODEL", "QUERY_SEQ",
461 "TEMPLATE_SEQ", "MODEL_FILE", "MAPPING_FILE", "Confidence",
462 "% I.D", "Aligned Range", "Other Information", "Coverage" },
465 "d1a70a_ d1a70a_.2.pdb",
470 "<b>Fold: </b>Beta-Grasp (ubiquitin-like)<br><b>Superfamily: </b>2Fe-2S ferredoxin-like<br><b>Family: </b>2Fe-2S ferredoxin-related" },
471 "<html><table border=\"1\" width=100%><tr><td colspan=\"2\"><strong>Phyre2 Template Info</strong></td></tr><tr><td>MAPPING_FILE</td><td>71</td></tr><tr><td>Confidence</td><td>48-144</td></tr><tr><td>% I.D</td><td><b>Fold: </b>Beta-Grasp (ubiquitin-like)<br><b>Superfamily: </b>2Fe-2S ferredoxin-like<br><b>Family: </b>2Fe-2S ferredoxin-related</td></tr></table></html>" } };
474 @DataProvider(name = "StructModelHtmlDataProvider")
475 public static Object[][] IsGenerateStructInfoHtmlDataProvider()
477 return new Object[][] {
478 { "STRUCTMODEL Annotation with no headear or data provided", null,
481 "STRUCTMODEL Annotation with headear information and no data column provided",
482 new String[] { "HEADER_STRUCT_MODEL", "QUERY_SEQ" }, null,
485 "STRUCTMODEL Annotation with no headear information provided",
487 new String[] { "FER_CAPAN_1-144", "d1a70a_ d1a70a_.2.pdb",
488 "d1a70a_.2.fasta", }, false },
490 "STRUCTMODEL Annotation with only two headear information and two data column provided",
491 new String[] { "HEADER_STRUCT_MODEL", "QUERY_SEQ" },
492 new String[] { "FER_CAPAN_1-144", "d1a70a_" }, false },
494 "STRUCTMODEL Annotation with complete compulsary data and headear information provided",
495 new String[] { "HEADER_STRUCT_MODEL", "QUERY_SEQ",
496 "TEMPLATE_SEQ", "MODEL_FILE", "MAPPING_FILE" },
497 new String[] { "FER_CAPAN_1-144", "d1a70a_", "d1a70a_.2.pdb",
498 "d1a70a_.2.fasta", }, true },
500 "STRUCTMODEL Annotation with complete compulsary data and headear information provided",
501 new String[] { "HEADER_STRUCT_MODEL", "QUERY_SEQ",
502 "TEMPLATE_SEQ", "MODEL_FILE", "MAPPING_FILE", "Confidence",
503 "% I.D", "Aligned Range", "Other Information", "Coverage" },
512 "<b>Fold: </b>Beta-Grasp (ubiquitin-like)<br><b>Superfamily: </b>2Fe-2S ferredoxin-like<br><b>Family: </b>2Fe-2S ferredoxin-related" },
516 @DataProvider(name = "FilePathProvider")
517 public static Object[][] filePathProvider()
519 return new Object[][] {
520 { "relative local file path resolution", "c4n58A_.1.pdb", "",
522 { "relative local file path resolution", "c4n58A_.1.pdb",
523 "/examples/testdata/phyre2results/",
524 "/examples/testdata/phyre2results/c4n58A_.1.pdb" },
526 "relative URL path resolution",
528 "http://www.jalview.org/builds/develop/examples/testdata/phyre2results/",
529 "http://www.jalview.org/builds/develop/examples/testdata/phyre2results/c4n58A_.1.pdb" },
531 "Absolute local file path resolution",
532 "/examples/testdata/phyre2results_xx/c4n58A_.1.pdb",
533 "/examples/testdata/phyre2results/",
534 "/examples/testdata/phyre2results_xx/c4n58A_.1.pdb" },
536 "Absolute URL path resolution",
537 "http://www.jalview.org/builds/develop/another_directory/c4n58A_.1.pdb",
538 "http://www.jalview.org/builds/develop/examples/testdata/phyre2results/",
539 "http://www.jalview.org/builds/develop/another_directory/c4n58A_.1.pdb" } };