- 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<Object> pae_obj = (List<Object>) Platform.parseJSON(new FileInputStream(testPAE));
- if (pae_obj == null)
- {
- Assert.fail("JSON PAE file did not parse properly.");
- }
- ContactMatrixI matrix = new PAEContactMatrix(target,
- (Map<String, Object>) 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<BinaryNode> 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<BinaryNode>();
- groups.add(clusterer.getTopNode());
- }
- int n=1;
- for (BinaryNode root:groups)
+ groups = new ArrayList<BinaryNode>();
+ groups.add(clusterer.getTopNode());
+ }
+ int n = 1;
+ for (BinaryNode root : groups)
+ {
+ System.out.println("Cluster " + n++);
+ for (BinaryNode leaf : clusterer.findLeaves(root))