package jalview.ws.dbsources; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import org.json.simple.parser.ParseException; import org.junit.Assert; import org.testng.FileAssert; import org.testng.annotations.BeforeClass; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import jalview.datamodel.Sequence; import jalview.gui.Desktop; import jalview.gui.JvOptionPane; import jalview.structure.StructureMapping; import jalview.structure.StructureSelectionManager; import jalview.ws.datamodel.alphafold.PAEContactMatrix; public class EBIAlphaFoldTest { @BeforeClass(alwaysRun = true) public void setUpJvOptionPane() { JvOptionPane.setInteractiveMode(false); JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); } @DataProvider(name = "getExamplePAEfiles") public Object[][] getExamplePAEfiles() { return new String[][] { { "examples/test_fab41.result/test_fab41_predicted_aligned_error_v1.json" }, { "examples/AlphaFold/AF-A0A1U8FD60-F1-predicted_aligned_error_v4.json" }, { "examples/AlphaFold/AF-Q5VSL9-F1-predicted_aligned_error_v4.json" }, { "examples/AlphaFold/AF-Q5VSL9-F1-predicted_aligned_error_v4_2023.json" } }; } @Test(groups = { "Functional" }, dataProvider = "getExamplePAEfiles") public void checkPAEimport(String paeFile) throws Exception { PAEContactMatrix cm = new PAEContactMatrix( new Sequence("Dummy/1-2000", "ASDASDA"), EBIAlfaFold.parseJSONtoPAEContactMatrix( new FileInputStream(paeFile))); Assert.assertNotEquals("No data from " + paeFile, cm.getMax(), 0); } @Test(groups = { "Functional" }, dataProvider = "getPDBandPAEfiles") public void checkImportPAEToStructure(String pdbFile, String paeFile) { FileInputStream paeInput = null; try { paeInput = new FileInputStream(paeFile); } catch (FileNotFoundException e) { e.printStackTrace(); FileAssert.assertFile(new File(paeFile), "Test file '" + paeFile + "' doesn't seem to exist"); } StructureSelectionManager ssm = StructureSelectionManager .getStructureSelectionManager(Desktop.instance); StructureMapping[] smArray = ssm.getMapping(pdbFile); try { boolean done = EBIAlfaFold.importPaeJSONAsContactMatrixToStructure( smArray, paeInput, "label"); Assert.assertTrue( "Import of '" + paeFile + "' didn't complete successfully", done); } catch (IOException | ParseException e) { e.printStackTrace(); } } }