applet gsdi
[jalview.git] / forester / java / src / org / forester / sdi / GSDIR.java
index 602e9e2..80a0d3a 100644 (file)
@@ -42,7 +42,7 @@ public class GSDIR implements GSDII {
     private final int                        _min_duplications_sum;\r
     private final int                        _speciations_sum;\r
     private final BasicDescriptiveStatistics _duplications_sum_stats;\r
-    private final List<Phylogeny>            _min_duplications_sum_gene_trees;\r
+    private Phylogeny                        _min_duplications_sum_gene_tree;\r
     private final List<PhylogenyNode>        _stripped_gene_tree_nodes;\r
     private final List<PhylogenyNode>        _stripped_species_tree_nodes;\r
     private final Set<PhylogenyNode>         _mapped_species_tree_nodes;\r
@@ -72,28 +72,36 @@ public class GSDIR implements GSDII {
         }\r
         int min_duplications_sum = Integer.MAX_VALUE;\r
         int speciations_sum = 0;\r
-        _min_duplications_sum_gene_trees = new ArrayList<Phylogeny>();\r
         _duplications_sum_stats = new BasicDescriptiveStatistics();\r
         for( final PhylogenyBranch branch : gene_tree_branches_post_order ) {\r
             gene_tree.reRoot( branch );\r
             PhylogenyMethods.preOrderReId( species_tree );\r
             //TEST, remove later\r
-            //            for( final PhylogenyNodeIterator it = _gene_tree.iteratorPostorder(); it.hasNext(); ) {\r
+            //            for( final PhylogenyNodeIterator it = gene_tree.iteratorPostorder(); it.hasNext(); ) {\r
             //                final PhylogenyNode g = it.next();\r
             //                if ( g.isInternal() ) {\r
             //                    g.setLink( null );\r
             //                }\r
             //            }\r
-            final GSDIsummaryResult gsdi_result = GSDI.geneTreePostOrderTraversal( gene_tree, true );\r
+            final GSDIsummaryResult gsdi_result = GSDI.geneTreePostOrderTraversal( gene_tree,\r
+                                                                                   true,\r
+                                                                                   min_duplications_sum );\r
+            if ( gsdi_result == null ) {\r
+                continue;\r
+            }\r
             if ( gsdi_result.getDuplicationsSum() < min_duplications_sum ) {\r
                 min_duplications_sum = gsdi_result.getDuplicationsSum();\r
                 speciations_sum = gsdi_result.getSpeciationsSum();\r
-                _min_duplications_sum_gene_trees.clear();\r
-                _min_duplications_sum_gene_trees.add( gene_tree.copy() );\r
-                //_speciations_sum\r
+                _min_duplications_sum_gene_tree = gene_tree.copy();\r
             }\r
             else if ( gsdi_result.getDuplicationsSum() == min_duplications_sum ) {\r
-                _min_duplications_sum_gene_trees.add( gene_tree.copy() );\r
+                final List<Phylogeny> l = new ArrayList<Phylogeny>();\r
+                l.add( _min_duplications_sum_gene_tree );\r
+                l.add( gene_tree );\r
+                final int index = getIndexesOfShortestTree( l ).get( 0 );\r
+                if ( index == 1 ) {\r
+                    _min_duplications_sum_gene_tree = gene_tree.copy();\r
+                }\r
             }\r
             _duplications_sum_stats.addValue( gsdi_result.getDuplicationsSum() );\r
         }\r
@@ -114,8 +122,8 @@ public class GSDIR implements GSDII {
         return _min_duplications_sum;\r
     }\r
 \r
-    public List<Phylogeny> getMinDuplicationsSumGeneTrees() {\r
-        return _min_duplications_sum_gene_trees;\r
+    public Phylogeny getMinDuplicationsSumGeneTree() {\r
+        return _min_duplications_sum_gene_tree;\r
     }\r
 \r
     @Override\r