X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fio%2FAnnotationFileIOTest.java;fp=test%2Fjalview%2Fio%2FAnnotationFileIOTest.java;h=14b4747458af225dbbd423d89e4de8df1b05a0b4;hb=refs%2Fheads%2Ffeatures%2FJAL-2136_phyre2_integration_updated;hp=6a00cde06026f67122a8e062fe8ee8ceccd9ddf1;hpb=12d4dfa00a5e93ae1de1d8409c6d5ca2bc8af13f;p=jalview.git diff --git a/test/jalview/io/AnnotationFileIOTest.java b/test/jalview/io/AnnotationFileIOTest.java index 6a00cde..14b4747 100644 --- a/test/jalview/io/AnnotationFileIOTest.java +++ b/test/jalview/io/AnnotationFileIOTest.java @@ -24,20 +24,31 @@ import static org.testng.AssertJUnit.assertNotNull; import static org.testng.AssertJUnit.assertTrue; import jalview.datamodel.AlignmentI; +import jalview.datamodel.DynamicData; import jalview.datamodel.HiddenColumns; +import jalview.datamodel.PDBEntry; +import jalview.datamodel.PDBEntry.Type; +import jalview.datamodel.SequenceI; import jalview.gui.JvOptionPane; import jalview.io.AnnotationFile.ViewDef; +import jalview.structure.StructureSelectionManager; import java.io.File; import java.util.Hashtable; +import java.util.List; import org.testng.Assert; import org.testng.annotations.BeforeClass; +import org.testng.annotations.DataProvider; import org.testng.annotations.Test; public class AnnotationFileIOTest { + private StructureSelectionManager ssm = null; + + private AlignmentI al = null; + @BeforeClass(alwaysRun = true) public void setUpJvOptionPane() { @@ -106,8 +117,7 @@ public class AnnotationFileIOTest * - label for IO class used to write and read back in the data from * f */ - void testAnnotationFileIO(String testname, File f, - File annotFile) + void testAnnotationFileIO(String testname, File f, File annotFile) { System.out.println("Test: " + testname + "\nReading annotation file '" + annotFile + "' onto : " + f); @@ -165,4 +175,354 @@ public class AnnotationFileIOTest + "\nCouldn't complete Annotation file roundtrip input/output/input test for '" + annotFile + "'."); } + + + @BeforeClass(alwaysRun = true) + void testProcessStructModel() + { + try + { + + ssm = StructureSelectionManager.getStructureSelectionManager(); + } catch (NullPointerException e) + { + ssm = new StructureSelectionManager(); + } + File alignmentFile = new File( + "examples/testdata/phyre2results/56da5616b4559c93/allhits.fasta"); + String annotationFile = "examples/testdata/phyre2results/56da5616b4559c93/allhits.ann"; + HiddenColumns cs = new HiddenColumns(); + al = readAlignmentFile(alignmentFile); + boolean annotationRead = new AnnotationFile().readAnnotationFile(al, + cs, annotationFile, DataSourceType.FILE); + Assert.assertTrue(annotationRead); + System.out.println("bla"); + } + + @Test( + groups = { "Functional" }, + dataProvider = "phyre2ModelPDBEntryDataProvider") + void testSequence_PDBEntryAssociation(String[] structModelHeader, String baseDir, + String structModelDataStr) + { + String structModelData[] = structModelDataStr.split("\t"); + String templateSeq = structModelData[1]; + String pdbId = structModelData[2]; + + SequenceI testSeq = al.findName(templateSeq); + Assert.assertNotNull(testSeq); + PDBEntry actualPDBEntry = testSeq.getDatasetSequence().getPDBEntry( + pdbId); + Assert.assertNotNull(actualPDBEntry); + + PDBEntry expectedPDBEntry = new PDBEntry(pdbId, " ", Type.PDB, baseDir + + pdbId); + List phyreDD = AnnotationFile + .generatePhyreDynamicDataList(structModelHeader, + structModelData); + expectedPDBEntry.setProperty("DYNAMIC_DATA_PHYRE2", phyreDD); + + Assert.assertEquals(actualPDBEntry, expectedPDBEntry); + } + + @Test( + groups = { "Functional" }, + dataProvider = "phyre2ModelMappingDataProvider") + void testPhyre2ModelRegistration(String phyre2ModelFile, + String expectedPhyre2FastaMappingFile) + { + + String actualFastaMappingFile = ssm + .getPhyre2FastaFileFor(phyre2ModelFile); + Assert.assertNotNull(actualFastaMappingFile); + Assert.assertEquals(actualFastaMappingFile, + expectedPhyre2FastaMappingFile); + } + + @Test(groups = { "Functional" }, dataProvider = "FilePathProvider") + void testResolveAbsolutePath(String caseDescription, String suppliedPath, + String baseURI, String expectedURI) + { + System.out.println(">>>> Testing Case - " + caseDescription); + String actualURI = AnnotationFile.resolveAbsolutePath(suppliedPath, + baseURI); + Assert.assertEquals(actualURI, expectedURI); + } + + @DataProvider(name = "phyre2ModelPDBEntryDataProvider") + public static Object[][] phyre2ModelPDBEntryDataProvider() + { + String[] structModelHeader = new String[] { "QUERY_SEQ", + "TEMPLATE_SEQ", "MODEL_FILE", "MAPPING_FILE", "Confidence", + "% I.D", "Aligned Range", "Other Information"}; + String baseDir = "examples/testdata/phyre2results/56da5616b4559c93/"; + + return new Object[][] { + { + structModelHeader, + baseDir, + "FER_CAPAN_1-144\tc4n58A_\tc4n58A_.1.pdb\tc4n58A_.1.fasta\t1\t54\t48-143\tPDB Header: Hyrolase
Chain: " + + "A
PDB Molecule: Pectocin m2
PDB Title: Crystal structure of pectocin m2 at 1.86 amgtroms" }, + { + structModelHeader, + baseDir, + "FER_CAPAN_1-144\td1a70a_\td1a70a_.2.pdb\td1a70a_.2.fasta\t1\t71\t48-144\tFold: Beta-Grasp (ubiquitin-like)
" + + "Superfamily: 2Fe-2S ferredoxin-like
Family: 2Fe-2S ferredoxin-related" }, + { + structModelHeader, + baseDir, + "FER_CAPAN_1-144\td1offa_\td1offa_.3.pdb\td1offa_.3.fasta\t1\t73\t48-142\tFold: Beta-Grasp (ubiquitin-like)
" + + "Superfamily: 2Fe-2S ferredoxin-like
Family: 2Fe-2S ferredoxin-related" }, + { + structModelHeader, + baseDir, + "FER_CAPAN_1-144\td1frra_\td1frra_.4.pdb\td1frra_.4.fasta\t0.999\t62\t49-142\tFold: Beta-Grasp (ubiquitin-like)
" + + "Superfamily: 2Fe-2S ferredoxin-like
Family: 2Fe-2S ferredoxin-related" }, + { + structModelHeader, + baseDir, + "FER_CAPAN_1-144\td1pfda_\td1pfda_.5.pdb\td1pfda_.5.fasta\t0.999\t70\t48-143\tFold: Beta-Grasp (ubiquitin-like)
" + + "Superfamily: 2Fe-2S ferredoxin-like
Family: 2Fe-2S ferredoxin-related" }, + { + structModelHeader, + baseDir, + "FER_CAPAN_1-144\td1frda_\td1frda_.6.pdb\td1frda_.6.fasta\t0.999\t50\t48-143\tFold: Beta-Grasp (ubiquitin-like)
" + + "Superfamily: 2Fe-2S ferredoxin-like
Family: 2Fe-2S ferredoxin-related" }, + { + structModelHeader, + baseDir, + "FER_CAPAN_1-144\td1fxia_\td1fxia_.7.pdb\td1fxia_.7.fasta\t0.999\t62\t48-142\tFold: Beta-Grasp (ubiquitin-like)
" + + "Superfamily: 2Fe-2S ferredoxin-like
Family: 2Fe-2S ferredoxin-related" }, + { + structModelHeader, + baseDir, + "FER_CAPAN_1-144\td1gaqb_\td1gaqb_.8.pdb\td1gaqb_.8.fasta\t0.999\t71\t48-144\tFold: Beta-Grasp (ubiquitin-like)
" + + "Superfamily: 2Fe-2S ferredoxin-like
Family: 2Fe-2S ferredoxin-related" }, + { + structModelHeader, + baseDir, + "FER_CAPAN_1-144\td1iuea_\td1iuea_.9.pdb\td1iuea_.9.fasta\t0.999\t48\t48-142\tFold: Beta-Grasp (ubiquitin-like)
" + + "Superfamily: 2Fe-2S ferredoxin-like
Family: 2Fe-2S ferredoxin-related" }, + { + structModelHeader, + baseDir, + "FER_CAPAN_1-144\td1awda_\td1awda_.10.pdb\td1awda_.10.fasta\t0.999\t68\t50-142\tFold: Beta-Grasp (ubiquitin-like)
" + + "Superfamily: 2Fe-2S ferredoxin-like
Family: 2Fe-2S ferredoxin-related" }, + { + structModelHeader, + baseDir, + "FER_CAPAN_1-144\td1wria_\td1wria_.11.pdb\td1wria_.11.fasta\t0.999\t59\t49-142\tFold: Beta-Grasp (ubiquitin-like)
" + + "Superfamily: 2Fe-2S ferredoxin-like
Family: 2Fe-2S ferredoxin-related" }, + { + structModelHeader, + baseDir, + "FER_CAPAN_1-144\td1czpa_\td1czpa_.12.pdb\td1czpa_.12.fasta\t0.999\t64\t48-142\tFold: Beta-Grasp (ubiquitin-like)
" + + "Superfamily: 2Fe-2S ferredoxin-like
Family: 2Fe-2S ferredoxin-related" }, + { + structModelHeader, + baseDir, + "FER_CAPAN_1-144\td2cjoa_\td2cjoa_.13.pdb\td2cjoa_.13.fasta\t0.999\t63\t48-142\tFold: Beta-Grasp (ubiquitin-like)
" + + "Superfamily: 2Fe-2S ferredoxin-like
Family: 2Fe-2S ferredoxin-related" }, + { + structModelHeader, + baseDir, + "FER_CAPAN_1-144\td4fxca_\td4fxca_.14.pdb\td4fxca_.14.fasta\t0.999\t64\t48-142\tFold: Beta-Grasp (ubiquitin-like)
" + + "Superfamily: 2Fe-2S ferredoxin-like
Family: 2Fe-2S ferredoxin-related" }, + { + structModelHeader, + baseDir, + "FER_CAPAN_1-144\tc4itkA_\tc4itkA_.15.pdb\tc4itkA_.15.fasta\t0.999\t57\t50-142\tPDB Header: Electron transport
" + + "Chain: A
PDB Molecule: Apoferredoxin
PDB Title: The structure of c.reinhardtii ferredoxin 2" }, + { + structModelHeader, + baseDir, + "FER_CAPAN_1-144\tc1krhA_\tc1krhA_.16.pdb\tc1krhA_.16.fasta\t0.999\t25\t48-142\tPDB Header: Oxidoreductase
Chain: " + + "A
PDB Molecule: Benzoate 1,2-deoxygenase reductase
PDB Title: X-ray structure of benzoate " + + "deoxygenate reductase" }, + { + structModelHeader, + baseDir, + "FER_CAPAN_1-144\td1krha3\td1krha3.17.pdb\td1krha3.17.fasta\t0.999\t24\t48-143\tFold: Beta-Grasp (ubiquitin-like)
" + + "Superfamily: 2Fe-2S ferredoxin-like
Family: 2Fe-2S ferredoxin domains from multi domain proteins" }, + { + structModelHeader, + baseDir, + "FER_CAPAN_1-144\td1jq4a_\td1jq4a_.18.pdb\td1jq4a_.18.fasta\t0.999\t29\t47-138\tFold: Beta-Grasp (ubiquitin-like)
" + + "Superfamily: 2Fe-2S ferredoxin-like
Family: 2Fe-2S ferredoxin domains from multi domain proteins" }, + { + structModelHeader, + baseDir, + "FER_CAPAN_1-144\tc4wqmA_\tc4wqmA_.19.pdb\tc4wqmA_.19.fasta\t0.999\t28\t49-144\tPDB header: Oxidoreductase
Chain: " + + "A
PDB Molecule: Toluene-4-monooxygenase electron transfer component
PDB Title: Structure of the " + + "toluene 4-monooxygenase nah oxidoreductase t4mof,2 k270s k271s variant" }, + { + structModelHeader, + baseDir, + "FER_CAPAN_1-144\tc2piaA_\tc2piaA_.20.pdb\tc2piaA_.20.fasta\t0.999\t22\t1-136\tPDB header: Reductase
Chain: " + + "A
PDB Molecule: Phthalate deoxygenase reductase
PDB Title: Phthalate deoxygenate reductase: a" + + " modular structure for2 electron transfer from pyridine nucleotides to [2fe-2s]" } + }; + } + + @DataProvider(name = "phyre2ModelMappingDataProvider") + public static Object[][] phyre2ModelMappingDataProvider() + { + return new Object[][] { + + { "examples/testdata/phyre2results/56da5616b4559c93/c4n58A_.1.pdb", + "examples/testdata/phyre2results/56da5616b4559c93/c4n58A_.1.fasta" }, + { "examples/testdata/phyre2results/56da5616b4559c93/d1a70a_.2.pdb", + "examples/testdata/phyre2results/56da5616b4559c93/d1a70a_.2.fasta" }, + { "examples/testdata/phyre2results/56da5616b4559c93/d1offa_.3.pdb", + "examples/testdata/phyre2results/56da5616b4559c93/d1offa_.3.fasta" }, + { "examples/testdata/phyre2results/56da5616b4559c93/d1frra_.4.pdb", + "examples/testdata/phyre2results/56da5616b4559c93/d1frra_.4.fasta" }, + { "examples/testdata/phyre2results/56da5616b4559c93/d1pfda_.5.pdb", + "examples/testdata/phyre2results/56da5616b4559c93/d1pfda_.5.fasta" }, + { "examples/testdata/phyre2results/56da5616b4559c93/d1frda_.6.pdb", + "examples/testdata/phyre2results/56da5616b4559c93/d1frda_.6.fasta" }, + + { "examples/testdata/phyre2results/56da5616b4559c93/d1fxia_.7.pdb", + "examples/testdata/phyre2results/56da5616b4559c93/d1fxia_.7.fasta" }, + + { "examples/testdata/phyre2results/56da5616b4559c93/d1gaqb_.8.pdb", + "examples/testdata/phyre2results/56da5616b4559c93/d1gaqb_.8.fasta" }, + { "examples/testdata/phyre2results/56da5616b4559c93/d1iuea_.9.pdb", + "examples/testdata/phyre2results/56da5616b4559c93/d1iuea_.9.fasta" }, + { + "examples/testdata/phyre2results/56da5616b4559c93/d1awda_.10.pdb", + "examples/testdata/phyre2results/56da5616b4559c93/d1awda_.10.fasta" }, + { + "examples/testdata/phyre2results/56da5616b4559c93/d1wria_.11.pdb", + "examples/testdata/phyre2results/56da5616b4559c93/d1wria_.11.fasta" }, + { + "examples/testdata/phyre2results/56da5616b4559c93/d1czpa_.12.pdb", + "examples/testdata/phyre2results/56da5616b4559c93/d1czpa_.12.fasta" }, + { + "examples/testdata/phyre2results/56da5616b4559c93/d2cjoa_.13.pdb", + "examples/testdata/phyre2results/56da5616b4559c93/d2cjoa_.13.fasta" }, + { + "examples/testdata/phyre2results/56da5616b4559c93/d4fxca_.14.pdb", + "examples/testdata/phyre2results/56da5616b4559c93/d4fxca_.14.fasta" }, + { + "examples/testdata/phyre2results/56da5616b4559c93/c4itkA_.15.pdb", + "examples/testdata/phyre2results/56da5616b4559c93/c4itkA_.15.fasta" }, + { + "examples/testdata/phyre2results/56da5616b4559c93/c1krhA_.16.pdb", + "examples/testdata/phyre2results/56da5616b4559c93/c1krhA_.16.fasta" }, + { + "examples/testdata/phyre2results/56da5616b4559c93/d1krha3.17.pdb", + "examples/testdata/phyre2results/56da5616b4559c93/d1krha3.17.fasta" }, + { + "examples/testdata/phyre2results/56da5616b4559c93/d1jq4a_.18.pdb", + "examples/testdata/phyre2results/56da5616b4559c93/d1jq4a_.18.fasta" }, + { + "examples/testdata/phyre2results/56da5616b4559c93/c4wqmA_.19.pdb", + "examples/testdata/phyre2results/56da5616b4559c93/c4wqmA_.19.fasta" }, + { + "examples/testdata/phyre2results/56da5616b4559c93/c2piaA_.20.pdb", + "examples/testdata/phyre2results/56da5616b4559c93/c2piaA_.20.fasta" } + + }; + } + + @DataProvider(name = "phyre2InfoHTMLTableDataProvider") + public static Object[][] phyre2InfoHTMLTableDataProvider() + { + return new Object[][] { + { + "STRUCTMODEL Annotation with no headear information provided", + null, + new String[] { "FER_CAPAN_1-144", "d1a70a_ d1a70a_.2.pdb", + "d1a70a_.2.fasta", }, "" }, + { + "STRUCTMODEL Annotation with complete compulsary data and headear information provided", + new String[] { "HEADER_STRUCT_MODEL", "QUERY_SEQ", + "TEMPLATE_SEQ", "MODEL_FILE", "MAPPING_FILE" }, + new String[] { "FER_CAPAN_1-144", "d1a70a_ d1a70a_.2.pdb", + "d1a70a_.2.fasta", }, + "
Phyre2 Template Info
" }, + { + "STRUCTMODEL Annotation with complete compulsary data and headear information provided", + new String[] { "HEADER_STRUCT_MODEL", "QUERY_SEQ", + "TEMPLATE_SEQ", "MODEL_FILE", "MAPPING_FILE", "Confidence", + "% I.D", "Aligned Range", "Other Information", "Coverage" }, + new String[] { + "FER_CAPAN_1-144", + "d1a70a_ d1a70a_.2.pdb", + "d1a70a_.2.fasta", + "1", + "71", + "48-144", + "Fold: Beta-Grasp (ubiquitin-like)
Superfamily: 2Fe-2S ferredoxin-like
Family: 2Fe-2S ferredoxin-related" }, + "
Phyre2 Template Info
MAPPING_FILE71
Confidence48-144
% I.DFold: Beta-Grasp (ubiquitin-like)
Superfamily: 2Fe-2S ferredoxin-like
Family: 2Fe-2S ferredoxin-related
" } }; + } + + @DataProvider(name = "StructModelHtmlDataProvider") + public static Object[][] IsGenerateStructInfoHtmlDataProvider() + { + return new Object[][] { + { "STRUCTMODEL Annotation with no headear or data provided", null, + null, false }, + { + "STRUCTMODEL Annotation with headear information and no data column provided", + new String[] { "HEADER_STRUCT_MODEL", "QUERY_SEQ" }, null, + false }, + { + "STRUCTMODEL Annotation with no headear information provided", + null, + new String[] { "FER_CAPAN_1-144", "d1a70a_ d1a70a_.2.pdb", + "d1a70a_.2.fasta", }, false }, + { + "STRUCTMODEL Annotation with only two headear information and two data column provided", + new String[] { "HEADER_STRUCT_MODEL", "QUERY_SEQ" }, + new String[] { "FER_CAPAN_1-144", "d1a70a_" }, false }, + { + "STRUCTMODEL Annotation with complete compulsary data and headear information provided", + new String[] { "HEADER_STRUCT_MODEL", "QUERY_SEQ", + "TEMPLATE_SEQ", "MODEL_FILE", "MAPPING_FILE" }, + new String[] { "FER_CAPAN_1-144", "d1a70a_", "d1a70a_.2.pdb", + "d1a70a_.2.fasta", }, true }, + { + "STRUCTMODEL Annotation with complete compulsary data and headear information provided", + new String[] { "HEADER_STRUCT_MODEL", "QUERY_SEQ", + "TEMPLATE_SEQ", "MODEL_FILE", "MAPPING_FILE", "Confidence", + "% I.D", "Aligned Range", "Other Information", "Coverage" }, + new String[] { + "FER_CAPAN_1-144", + "d1a70a_", + "d1a70a_.2.pdb", + "d1a70a_.2.fasta", + "1", + "71", + "48-144", + "Fold: Beta-Grasp (ubiquitin-like)
Superfamily: 2Fe-2S ferredoxin-like
Family: 2Fe-2S ferredoxin-related" }, + true } }; + } + + @DataProvider(name = "FilePathProvider") + public static Object[][] filePathProvider() + { + return new Object[][] { + { "relative local file path resolution", "c4n58A_.1.pdb", "", + "c4n58A_.1.pdb" }, + { "relative local file path resolution", "c4n58A_.1.pdb", + "/examples/testdata/phyre2results/", + "/examples/testdata/phyre2results/c4n58A_.1.pdb" }, + { + "relative URL path resolution", + "c4n58A_.1.pdb", + "http://www.jalview.org/builds/develop/examples/testdata/phyre2results/", + "http://www.jalview.org/builds/develop/examples/testdata/phyre2results/c4n58A_.1.pdb" }, + { + "Absolute local file path resolution", + "/examples/testdata/phyre2results_xx/c4n58A_.1.pdb", + "/examples/testdata/phyre2results/", + "/examples/testdata/phyre2results_xx/c4n58A_.1.pdb" }, + { + "Absolute URL path resolution", + "http://www.jalview.org/builds/develop/another_directory/c4n58A_.1.pdb", + "http://www.jalview.org/builds/develop/examples/testdata/phyre2results/", + "http://www.jalview.org/builds/develop/another_directory/c4n58A_.1.pdb" } }; + } }