package jalview.analysis; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.List; import java.util.Map; import org.junit.Assert; import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import jalview.bin.Cache; import jalview.bin.Console; import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.AlignmentI; import jalview.datamodel.ContactMatrixI; import jalview.datamodel.SequenceI; import jalview.gui.AlignFrame; import jalview.gui.JvOptionPane; import jalview.io.DataSourceType; import jalview.io.FastaFile; import jalview.io.FileLoader; import jalview.io.FormatAdapter; import jalview.util.Platform; import jalview.ws.datamodel.alphafold.PAEContactMatrix; public class AverageDistanceEngineTest { @BeforeClass(alwaysRun = true) public void setUpJvOptionPane() { JvOptionPane.setInteractiveMode(false); JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); } @BeforeMethod(alwaysRun = true) public void loadProperties() { Cache.loadProperties("test/jalview/bin/TestProps.jvprops"); } @Test public void testUPGMAEngine() throws Exception { AlignFrame af = new FileLoader(false).LoadFileWaitTillLoaded("examples/test_fab41.result/sample.a3m",DataSourceType.FILE); AlignmentI seqs = af.getViewport().getAlignment(); SequenceI target = seqs.getSequenceAt(0); File testPAE = new File("examples/test_fab41.result/test_fab41_predicted_aligned_error_v1.json"); List pae_obj = (List) Platform.parseJSON(new FileInputStream(testPAE)); if (pae_obj == null) { Assert.fail("JSON PAE file did not parse properly."); } ContactMatrixI matrix = new PAEContactMatrix(target, (Map) pae_obj.get(0)); AlignmentAnnotation aa = target.addContactList(matrix); long start = System.currentTimeMillis(); AverageDistanceEngine clusterer = new AverageDistanceEngine(af.getViewport(), null, matrix); System.out.println("built a tree in "+(System.currentTimeMillis()-start)*0.001+" seconds."); StringBuffer sb = new StringBuffer(); System.out.println("Newick string\n"+ new jalview.io.NewickFile(clusterer.getTopNode(),true,true).print()); } }