final int m_i = _mappings[ i ];
if ( otu1 < i ) {
if ( otu2 > i ) {
- _d_values[ m_otu1 ][ m_i ] = ( _d_values[ m_otu1 ][ m_i ] + _d_values[ m_i ][ m_otu2 ] - d ) / 2;
+ _d_values[ m_otu1 ][ m_i ] = ( ( _d_values[ m_otu1 ][ m_i ] + _d_values[ m_i ][ m_otu2 ] ) - d ) / 2;
}
else {
- _d_values[ m_otu1 ][ m_i ] = ( _d_values[ m_otu1 ][ m_i ] + _d_values[ m_otu2 ][ m_i ] - d ) / 2;
+ _d_values[ m_otu1 ][ m_i ] = ( ( _d_values[ m_otu1 ][ m_i ] + _d_values[ m_otu2 ][ m_i ] ) - d ) / 2;
}
}
else {
if ( otu2 > i ) {
- _d_values[ m_i ][ m_otu1 ] = ( _d_values[ m_i ][ m_otu1 ] + _d_values[ m_i ][ m_otu2 ] - d ) / 2;
+ _d_values[ m_i ][ m_otu1 ] = ( ( _d_values[ m_i ][ m_otu1 ] + _d_values[ m_i ][ m_otu2 ] ) - d ) / 2;
}
else {
- _d_values[ m_i ][ m_otu1 ] = ( _d_values[ m_i ][ m_otu1 ] + _d_values[ m_otu2 ][ m_i ] - d ) / 2;
+ _d_values[ m_i ][ m_otu1 ] = ( ( _d_values[ m_i ][ m_otu1 ] + _d_values[ m_otu2 ][ m_i ] ) - d ) / 2;
}
}
}
}
private final void printProgress( final int otu1, final int otu2 ) {
- final PhylogenyNode n1 = getExternalPhylogenyNode( otu1 );
- final PhylogenyNode n2 = getExternalPhylogenyNode( otu2 );
- System.out.println( "Node " + ( ForesterUtil.isEmpty( n1.getName() ) ? n1.getId() : n1.getName() ) + " joins "
- + ( ForesterUtil.isEmpty( n2.getName() ) ? n2.getId() : n2.getName() ) );
+ System.out.println( "Node " + printProgressNodeToString( getExternalPhylogenyNode( otu1 ) ) + " joins "
+ + ( printProgressNodeToString( getExternalPhylogenyNode( otu2 ) ) ) );
+ }
+
+ private final String printProgressNodeToString( final PhylogenyNode n ) {
+ if ( n.isExternal() ) {
+ if ( ForesterUtil.isEmpty( n.getName() ) ) {
+ return Long.toString( n.getId() );
+ }
+ return n.getName();
+ }
+ return n.getId()
+ + " ("
+ + ( ForesterUtil.isEmpty( n.getChildNode1().getName() ) ? n.getChildNode1().getId() : n.getChildNode1()
+ .getName() )
+ + "+"
+ + ( ForesterUtil.isEmpty( n.getChildNode2().getName() ) ? n.getChildNode2().getId() : n.getChildNode2()
+ .getName() ) + ")";
}
// only the values in the lower triangle are used.