X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=forester%2Fjava%2Fsrc%2Forg%2Fforester%2Fsdi%2FGSDIR.java;h=7ca8dca5e490411d96f5dddf454e310b4e8f8587;hb=b819fa043cac2722618af63f0d4752ffa1a40890;hp=3615f3121510fe4c7a42b80708510bf14a631a2b;hpb=da91573ed6cc107d27b2a18ec31c88a1447a4e80;p=jalview.git diff --git a/forester/java/src/org/forester/sdi/GSDIR.java b/forester/java/src/org/forester/sdi/GSDIR.java index 3615f31..7ca8dca 100644 --- a/forester/java/src/org/forester/sdi/GSDIR.java +++ b/forester/java/src/org/forester/sdi/GSDIR.java @@ -52,7 +52,8 @@ public class GSDIR implements GSDII { public GSDIR( final Phylogeny gene_tree, final Phylogeny species_tree, final boolean strip_gene_tree, - final boolean strip_species_tree ) throws SDIException { + final boolean strip_species_tree, + final boolean transfer_taxonomy ) throws SDIException { final NodesLinkingResult nodes_linking_result = GSDI.linkNodesOfG( gene_tree, species_tree, strip_gene_tree, @@ -80,13 +81,6 @@ public class GSDIR implements GSDII { for( final PhylogenyBranch branch : gene_tree_branches_post_order ) { reRoot( branch, gene_tree ); PhylogenyMethods.preOrderReId( species_tree ); - //TEST, remove later - // for( final PhylogenyNodeIterator it = gene_tree.iteratorPostorder(); it.hasNext(); ) { - // final PhylogenyNode g = it.next(); - // if ( g.isInternal() ) { - // g.setLink( null ); - // } - // } final GSDIsummaryResult gsdi_result = GSDI.geneTreePostOrderTraversal( gene_tree, true, min_duplications_sum ); @@ -96,6 +90,9 @@ public class GSDIR implements GSDII { if ( gsdi_result.getDuplicationsSum() < min_duplications_sum ) { min_duplications_sum = gsdi_result.getDuplicationsSum(); speciations_sum = gsdi_result.getSpeciationsSum(); + if ( transfer_taxonomy ) { + transferTaxonomy( gene_tree ); + } _min_duplications_sum_gene_tree = gene_tree.copy(); } else if ( gsdi_result.getDuplicationsSum() == min_duplications_sum ) { @@ -104,6 +101,9 @@ public class GSDIR implements GSDII { l.add( gene_tree ); final int index = getIndexesOfShortestTree( l ).get( 0 ); if ( index == 1 ) { + if ( transfer_taxonomy ) { + transferTaxonomy( gene_tree ); + } _min_duplications_sum_gene_tree = gene_tree.copy(); } } @@ -214,4 +214,10 @@ public class GSDIR implements GSDII { throw new IllegalArgumentException( "reRoot( Branch b ): b is not a branch." ); } } + + private final static void transferTaxonomy( final Phylogeny gt ) { + for( final PhylogenyNodeIterator it = gt.iteratorPostorder(); it.hasNext(); ) { + GSDI.transferTaxonomy( it.next() ); + } + } }