X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fanalysis%2FAverageDistanceEngineTest.java;h=236e354a3d2efce168f4d78b8c113f3f27a16a27;hb=164fb77632cc3c9a3b5f5ac5290eadec920ffbc6;hp=6d9ab50c31ad49221ee77249855e594edd01e8e5;hpb=7420ce36f2b43280ef610e3743960207e4c2dbe3;p=jalview.git diff --git a/test/jalview/analysis/AverageDistanceEngineTest.java b/test/jalview/analysis/AverageDistanceEngineTest.java index 6d9ab50..236e354 100644 --- a/test/jalview/analysis/AverageDistanceEngineTest.java +++ b/test/jalview/analysis/AverageDistanceEngineTest.java @@ -1,3 +1,23 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors + * + * This file is part of Jalview. + * + * Jalview is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Jalview is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ package jalview.analysis; import java.io.File; @@ -32,66 +52,77 @@ import jalview.ws.datamodel.alphafold.PAEContactMatrix; public class AverageDistanceEngineTest { - @BeforeClass(alwaysRun = true) - public void setUpJvOptionPane() + @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(groups = { "Functional" }) + 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) { - JvOptionPane.setInteractiveMode(false); - JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); + Assert.fail("JSON PAE file did not parse properly."); } + ContactMatrixI matrix = new PAEContactMatrix(target, + (Map) pae_obj.get(0)); + AlignmentAnnotation aa = target.addContactList(matrix); + System.out.println("Matrix has max=" + matrix.getMax() + " and min=" + + matrix.getMin()); + long start = System.currentTimeMillis(); + AverageDistanceEngine clusterer = new AverageDistanceEngine( + af.getViewport(), null, matrix, false); + 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()); - @BeforeMethod(alwaysRun = true) - public void loadProperties() + double height = clusterer.findHeight(clusterer.getTopNode()); + // compute height fraction to cut + // PAE matrixes are absolute measure in angstrom, so + // cluster all regions within threshold (e.g. 2A) - if height above + // threshold. Otherwise all nodes are in one cluster + double thr = .2; + List groups; + if (height > thr) { - Cache.loadProperties("test/jalview/bin/TestProps.jvprops"); + float cut = (float) (thr / height); + System.out.println("Threshold " + cut + " for height=" + height); + groups = clusterer.groupNodes(cut); } - @Test - public void testUPGMAEngine() throws Exception + else { - 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); - System.out.println("Matrix has max="+matrix.getMax()+" and min="+matrix.getMin()); - 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()); - - double height = clusterer.findHeight(clusterer.getTopNode()); - // compute height fraction to cut - // PAE matrixes are absolute measure in angstrom, so - // cluster all regions within threshold (e.g. 2A) - if height above threshold. Otherwise all nodes are in one cluster - double thr=.2; - List groups; - if (height>thr) - { - float cut = (float) (thr/height); - System.out.println("Threshold "+cut+" for height="+height); - groups = clusterer.groupNodes(cut); - } else{ - groups=new ArrayList(); - groups.add(clusterer.getTopNode()); - } - int n=1; - for (BinaryNode root:groups) + groups = new ArrayList(); + groups.add(clusterer.getTopNode()); + } + int n = 1; + for (BinaryNode root : groups) + { + System.out.println("Cluster " + n++); + for (BinaryNode leaf : clusterer.findLeaves(root)) { - System.out.println("Cluster "+n++); - for (BinaryNode leaf:clusterer.findLeaves(root)) - { - System.out.print(" "+leaf.getName()); - } - System.out.println("\\"); + System.out.print(" " + leaf.getName()); } - + System.out.println("\\"); } + } }