- // s is the node on the species tree g maps to.
- private final void determineEvent( final PhylogenyNode s, final PhylogenyNode g ) {
- boolean oyako = false;
- if ( ( g.getChildNode1().getLink() == s ) || ( g.getChildNode2().getLink() == s ) ) {
- oyako = true;
- }
- if ( g.getLink().getNumberOfDescendants() == 2 ) {
- if ( oyako ) {
- g.getNodeData().setEvent( createDuplicationEvent() );
- }
- else {
- g.getNodeData().setEvent( createSpeciationEvent() );
- }
- }
- else {
- if ( oyako ) {
- final Set<PhylogenyNode> set = new HashSet<PhylogenyNode>();
- for( PhylogenyNode n : g.getChildNode1().getAllExternalDescendants() ) {
- n = n.getLink();
- while ( n.getParent() != s ) {
- n = n.getParent();
- if ( n.isRoot() ) {
- break;
- }
- }
- set.add( n );
- }
- boolean multiple = false;
- for( PhylogenyNode n : g.getChildNode2().getAllExternalDescendants() ) {
- n = n.getLink();
- while ( n.getParent() != s ) {
- n = n.getParent();
- if ( n.isRoot() ) {
- break;
- }
- }
- if ( set.contains( n ) ) {
- multiple = true;
- break;
- }
- }
- if ( multiple ) {
- g.getNodeData().setEvent( createDuplicationEvent() );
- }
- else {
- g.getNodeData().setEvent( createSingleSpeciationOrDuplicationEvent() );
- }
- }
- else {
- g.getNodeData().setEvent( createSpeciationEvent() );
- }
+ @Override
+ public Set<PhylogenyNode> getMappedExternalSpeciesTreeNodes() {
+ return _mapped_species_tree_nodes;
+ }
+
+ @Override
+ public final SortedSet<String> getReMappedScientificNamesFromGeneTree() {
+ return _scientific_names_mapped_to_reduced_specificity;
+ }
+
+ public final int getSpeciationOrDuplicationEventsSum() {
+ return _speciation_or_duplication_events_sum;
+ }
+
+ @Override
+ public final int getSpeciationsSum() {
+ return _speciations_sum;
+ }
+
+ @Override
+ public List<PhylogenyNode> getStrippedExternalGeneTreeNodes() {
+ return _stripped_gene_tree_nodes;
+ }
+
+ @Override
+ public List<PhylogenyNode> getStrippedSpeciesTreeNodes() {
+ return _stripped_species_tree_nodes;
+ }
+
+ @Override
+ public TaxonomyComparisonBase getTaxCompBase() {
+ return _tax_comp_base;
+ }
+
+ @Override
+ public final String toString() {
+ final StringBuffer sb = new StringBuffer();
+ sb.append( "Most parsimonious duplication model: " + _most_parsimonious_duplication_model );
+ sb.append( ForesterUtil.getLineSeparator() );
+ sb.append( "Speciations sum : " + getSpeciationsSum() );
+ sb.append( ForesterUtil.getLineSeparator() );
+ sb.append( "Duplications sum : " + getDuplicationsSum() );
+ sb.append( ForesterUtil.getLineSeparator() );
+ if ( !_most_parsimonious_duplication_model ) {
+ sb.append( "Speciation or duplications sum : " + getSpeciationOrDuplicationEventsSum() );
+ sb.append( ForesterUtil.getLineSeparator() );