X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=forester%2Fjava%2Fsrc%2Forg%2Fforester%2Fevoinference%2Fdistance%2FNeighborJoining.java;h=bcb6df1e09ebcbafe8b6715dce228d96568e481c;hb=2eb16fa8fc6fa40a6f9829a5d624ada26b026fcc;hp=1f74a2b6b827d5048c3ad9f7d2565d9616b949f6;hpb=03e51d179caedf757b09e2872f9500318bd85a53;p=jalview.git diff --git a/forester/java/src/org/forester/evoinference/distance/NeighborJoining.java b/forester/java/src/org/forester/evoinference/distance/NeighborJoining.java index 1f74a2b..bcb6df1 100644 --- a/forester/java/src/org/forester/evoinference/distance/NeighborJoining.java +++ b/forester/java/src/org/forester/evoinference/distance/NeighborJoining.java @@ -21,7 +21,7 @@ // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA // // Contact: phylosoft @ gmail . com -// WWW: www.phylosoft.org/forester +// WWW: https://sites.google.com/site/cmzmasek/home/software/forester package org.forester.evoinference.distance; @@ -58,9 +58,9 @@ public final class NeighborJoining { if ( ( i == otu1 ) || ( i == otu2 ) ) { continue; } - // _d_values[ _mappings[ otu1 ] ][ _mappings[ i ] ] = ( getValueFromD( otu1, i ) + getValueFromD( i, otu2 ) - d ) / 2; - i_m = _mappings[ i ]; - _d_values[ otu1_m ][ i_m ] = ( ( _d_values[ otu1_m ][ i_m ] + _d_values[ i_m ][ otu2_m ] ) - 2 ) / 2; + _d_values[ _mappings[ otu1 ] ][ _mappings[ i ] ] = ( getValueFromD( otu1, i ) + getValueFromD( i, otu2 ) - d ) / 2; + //i_m = _mappings[ i ]; + //_d_values[ otu1_m ][ i_m ] = ( ( _d_values[ otu1_m ][ i_m ] + _d_values[ i_m ][ otu2_m ] ) - 2 ) / 2; } } @@ -71,8 +71,8 @@ public final class NeighborJoining { d = 0; i_m = _mappings[ i ]; for( int n = 0; n < _n; ++n ) { - d += _d_values[ i_m ][ _mappings[ n ] ]; - //d += getValueFromD( i, n ); + //d += _d_values[ i_m ][ _mappings[ n ] ]; + d += getValueFromD( i, n ); } _r[ i ] = d; } @@ -101,7 +101,7 @@ public final class NeighborJoining { // It is a condition that otu1 < otu2. if ( DEBUG ) { if ( otu1 > otu2 ) { - throw new RuntimeException( "NJ code is faulty: otu1 > otu2" ); + throw new RuntimeException( "faulty NJ code: otu1 > otu2" ); } } final PhylogenyNode node = new PhylogenyNode(); @@ -194,12 +194,15 @@ public final class NeighborJoining { r_j = _r[ j ]; j_m = _mappings[ j ]; for( int i = 0; i < j; ++i ) { - // _m_values[ i ][ j ] = getValueFromD( i, j ) - ( _r[ i ] + r_j ) / ( _n - 2 ); - _m_values[ i ][ j ] = _d_values[ _mappings[ i ] ][ j_m ] - ( ( _r[ i ] + r_j ) / ( _n_2 ) ); + _m_values[ i ][ j ] = getValueFromD( i, j ) - ( _r[ i ] + r_j ) / ( _n - 2 ); + //_m_values[ i ][ j ] = _d_values[ _mappings[ i ] ][ j_m ] - ( ( _r[ i ] + r_j ) / ( _n_2 ) ); } } } + // private final double getValueFromD( final int otu1, final int otu2 ) { + // return _d_values[ _mappings[ otu1 ] ][ _mappings[ otu2 ] ]; + // } // otu2 will, in effect, be "deleted" from the matrix. private final void updateMappings( final int otu2 ) { for( int i = otu2; i < ( _mappings.length - 1 ); ++i ) {