git://source.jalview.org
/
jalview.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
keep it as close with archy.js as possible...
[jalview.git]
/
forester
/
java
/
src
/
org
/
forester
/
sdi
/
GSDIR.java
diff --git
a/forester/java/src/org/forester/sdi/GSDIR.java
b/forester/java/src/org/forester/sdi/GSDIR.java
index
6b170d9
..
651383d
100644
(file)
--- 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,
\r
final Phylogeny species_tree,
\r
final boolean strip_gene_tree,
\r
public GSDIR( final Phylogeny gene_tree,
\r
final Phylogeny species_tree,
\r
final boolean strip_gene_tree,
\r
- final boolean strip_species_tree ) throws SDIException {
\r
+ final boolean strip_species_tree,
\r
+ final boolean transfer_taxonomy ) throws SDIException {
\r
final NodesLinkingResult nodes_linking_result = GSDI.linkNodesOfG( gene_tree,
\r
species_tree,
\r
strip_gene_tree,
\r
final NodesLinkingResult nodes_linking_result = GSDI.linkNodesOfG( gene_tree,
\r
species_tree,
\r
strip_gene_tree,
\r
@@
-72,7
+73,7
@@
public class GSDIR implements GSDII {
}
\r
if ( gene_tree.getRoot().getNumberOfDescendants() == 2 ) {
\r
gene_tree_branches_post_order.add( new PhylogenyBranch( gene_tree.getRoot().getChildNode1(), gene_tree
\r
}
\r
if ( gene_tree.getRoot().getNumberOfDescendants() == 2 ) {
\r
gene_tree_branches_post_order.add( new PhylogenyBranch( gene_tree.getRoot().getChildNode1(), gene_tree
\r
- .getRoot().getChildNode2() ) );
\r
+ .getRoot().getChildNode2() ) );
\r
}
\r
int min_duplications_sum = Integer.MAX_VALUE;
\r
int speciations_sum = 0;
\r
}
\r
int min_duplications_sum = Integer.MAX_VALUE;
\r
int speciations_sum = 0;
\r
@@
-80,7
+81,6
@@
public class GSDIR implements GSDII {
for( final PhylogenyBranch branch : gene_tree_branches_post_order ) {
\r
reRoot( branch, gene_tree );
\r
PhylogenyMethods.preOrderReId( species_tree );
\r
for( final PhylogenyBranch branch : gene_tree_branches_post_order ) {
\r
reRoot( branch, gene_tree );
\r
PhylogenyMethods.preOrderReId( species_tree );
\r
-
\r
final GSDIsummaryResult gsdi_result = GSDI.geneTreePostOrderTraversal( gene_tree,
\r
true,
\r
min_duplications_sum );
\r
final GSDIsummaryResult gsdi_result = GSDI.geneTreePostOrderTraversal( gene_tree,
\r
true,
\r
min_duplications_sum );
\r
@@
-91,6
+91,9
@@
public class GSDIR implements GSDII {
min_duplications_sum = gsdi_result.getDuplicationsSum();
\r
speciations_sum = gsdi_result.getSpeciationsSum();
\r
_min_duplications_sum_gene_tree = gene_tree.copy();
\r
min_duplications_sum = gsdi_result.getDuplicationsSum();
\r
speciations_sum = gsdi_result.getSpeciationsSum();
\r
_min_duplications_sum_gene_tree = gene_tree.copy();
\r
+ if ( transfer_taxonomy ) {
\r
+ transferTaxonomy( _min_duplications_sum_gene_tree );
\r
+ }
\r
}
\r
else if ( gsdi_result.getDuplicationsSum() == min_duplications_sum ) {
\r
final List<Phylogeny> l = new ArrayList<Phylogeny>();
\r
}
\r
else if ( gsdi_result.getDuplicationsSum() == min_duplications_sum ) {
\r
final List<Phylogeny> l = new ArrayList<Phylogeny>();
\r
@@
-99,6
+102,9
@@
public class GSDIR implements GSDII {
final int index = getIndexesOfShortestTree( l ).get( 0 );
\r
if ( index == 1 ) {
\r
_min_duplications_sum_gene_tree = gene_tree.copy();
\r
final int index = getIndexesOfShortestTree( l ).get( 0 );
\r
if ( index == 1 ) {
\r
_min_duplications_sum_gene_tree = gene_tree.copy();
\r
+ if ( transfer_taxonomy ) {
\r
+ transferTaxonomy( _min_duplications_sum_gene_tree );
\r
+ }
\r
}
\r
}
\r
_duplications_sum_stats.addValue( gsdi_result.getDuplicationsSum() );
\r
}
\r
}
\r
_duplications_sum_stats.addValue( gsdi_result.getDuplicationsSum() );
\r
@@
-182,7
+188,7
@@
public class GSDIR implements GSDII {
/**
\r
* Places the root of this Phylogeny on Branch b. The new root is always
\r
* placed on the middle of the branch b.
\r
/**
\r
* Places the root of this Phylogeny on Branch b. The new root is always
\r
* placed on the middle of the branch b.
\r
- *
\r
+ *
\r
*/
\r
static final void reRoot( final PhylogenyBranch b, final Phylogeny phy ) {
\r
final PhylogenyNode n1 = b.getFirstNode();
\r
*/
\r
static final void reRoot( final PhylogenyBranch b, final Phylogeny phy ) {
\r
final PhylogenyNode n1 = b.getFirstNode();
\r
@@
-202,10
+208,16
@@
public class GSDIR implements GSDII {
// else if ( ( n1.getParent() != null ) && n1.getParent().isRoot()
\r
// && ( ( n1.getParent().getChildNode1() == n2 ) || ( n1.getParent().getChildNode2() == n2 ) ) ) {
\r
// phy.reRoot( n1 );
\r
// else if ( ( n1.getParent() != null ) && n1.getParent().isRoot()
\r
// && ( ( n1.getParent().getChildNode1() == n2 ) || ( n1.getParent().getChildNode2() == n2 ) ) ) {
\r
// phy.reRoot( n1 );
\r
- //
\r
+ //
\r
// }
\r
else {
\r
throw new IllegalArgumentException( "reRoot( Branch b ): b is not a branch." );
\r
}
\r
}
\r
// }
\r
else {
\r
throw new IllegalArgumentException( "reRoot( Branch b ): b is not a branch." );
\r
}
\r
}
\r
+
\r
+ private final static void transferTaxonomy( final Phylogeny gt ) {
\r
+ for( final PhylogenyNodeIterator it = gt.iteratorPostorder(); it.hasNext(); ) {
\r
+ GSDI.transferTaxonomy( it.next() );
\r
+ }
\r
+ }
\r
}
\r
}
\r