X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=forester%2Fjava%2Fsrc%2Forg%2Fforester%2Fsdi%2FGSDI.java;h=bfdd14fa23f5b0ec53c6d07ec6e9d60dc42256d9;hb=bc282cbd857f4fb9decdc00b278640bcf146a645;hp=1639bbe47b00e3456676cf3fe480f203d10c2c8a;hpb=39ad4632ee57d8ab720a7ad08c2ba4cccffa05bb;p=jalview.git diff --git a/forester/java/src/org/forester/sdi/GSDI.java b/forester/java/src/org/forester/sdi/GSDI.java index 1639bbe..bfdd14f 100644 --- a/forester/java/src/org/forester/sdi/GSDI.java +++ b/forester/java/src/org/forester/sdi/GSDI.java @@ -35,6 +35,7 @@ import java.util.SortedSet; import java.util.TreeSet; import org.forester.phylogeny.Phylogeny; +import org.forester.phylogeny.PhylogenyMethods; import org.forester.phylogeny.PhylogenyNode; import org.forester.phylogeny.data.Event; import org.forester.phylogeny.data.Taxonomy; @@ -63,13 +64,13 @@ import org.forester.util.ForesterUtil; * * @author Christian M. Zmasek */ -public final class GSDI extends SDI { +public class GSDI extends SDI { private final boolean _most_parsimonious_duplication_model; private final boolean _strip_gene_tree; private final boolean _strip_species_tree; - private int _speciation_or_duplication_events_sum; - private int _speciations_sum; + protected int _speciation_or_duplication_events_sum; + protected int _speciations_sum; private final List _stripped_gene_tree_nodes; private final List _stripped_species_tree_nodes; private final Set _mapped_species_tree_nodes; @@ -93,7 +94,7 @@ public final class GSDI extends SDI { _mapped_species_tree_nodes = new HashSet(); _scientific_names_mapped_to_reduced_specificity = new TreeSet(); linkNodesOfG(); - getSpeciesTree().preOrderReId(); + PhylogenyMethods.preOrderReId( getSpeciesTree() ); geneTreePostOrderTraversal(); } @@ -102,6 +103,25 @@ public final class GSDI extends SDI { this( gene_tree, species_tree, most_parsimonious_duplication_model, false, false ); } + public GSDI( final Phylogeny gene_tree, + final Phylogeny species_tree, + final boolean most_parsimonious_duplication_model, + final boolean strip_gene_tree, + final boolean strip_species_tree, + final int x ) throws SDIException { + super( gene_tree, species_tree ); + _speciation_or_duplication_events_sum = 0; + _speciations_sum = 0; + _most_parsimonious_duplication_model = most_parsimonious_duplication_model; + _duplications_sum = 0; + _strip_gene_tree = strip_gene_tree; + _strip_species_tree = strip_species_tree; + _stripped_gene_tree_nodes = new ArrayList(); + _stripped_species_tree_nodes = new ArrayList(); + _mapped_species_tree_nodes = new HashSet(); + _scientific_names_mapped_to_reduced_specificity = new TreeSet(); + } + // s is the node on the species tree g maps to. private final void determineEvent( final PhylogenyNode s, final PhylogenyNode g ) { boolean oyako = false; @@ -354,6 +374,8 @@ public final class GSDI extends SDI { _stripped_species_tree_nodes.add( s ); } } + _species_tree.clearHashIdToNodeMap(); + _species_tree.externalNodesHaveChanged(); } public List getStrippedSpeciesTreeNodes() { @@ -364,6 +386,8 @@ public final class GSDI extends SDI { for( final PhylogenyNode g : _stripped_gene_tree_nodes ) { _gene_tree.deleteSubtree( g, true ); } + _gene_tree.clearHashIdToNodeMap(); + _gene_tree.externalNodesHaveChanged(); } public Set getMappedExternalSpeciesTreeNodes() {