#include "mltaln.h" #define DEBUG 0 #if 0 void mdfymtx( char pair[njob][njob], int s1, double **partialmtx, double **mtx ) #else void mdfymtx( char **pair, int s1, double **partialmtx, double **mtx ) #endif { int i, j; int icount, jcount; #if DEBUG FILE *fp; static char name[M][B]; for( i=0; i len-2 ) break; continue; } if( mseq2[k] == '-' ) { tmpscore += penalty; while( mseq2[++k] == '-' ) ; k--; if( k > len-2 ) break; continue; } } /* if( mseq1[0] == '-' || mseq2[0] == '-' ) { for( k=0; k 3 ) code = 36; else code = code1; #else code1 = amino_n[(int)*seqpt]; code2 = amino_n[(int)*seqrpt]; if( code1 > 3 ) { code = 36; } else if( code2 > 3 ) { code = code1; } else if( *dirpt == '5' ) { code = 4 + code2 * 4 + code1; } else if( *dirpt == '3' ) { code = 20 + code2 * 4 + code1; } else // if( *dirpt == 'o' ) // nai { code = code1; } #endif // fprintf( stderr, "%c -> code=%d toa=%d, tog=%d, toc=%d, tot=%d, ton=%d, efee=%f\n", *seqpt, code%4, ribosumdis[code][4+0], ribosumdis[code][4+1], ribosumdis[code][4+2], ribosumdis[code][20+3], ribosumdis[code][36], feff ); seqpt++; seqrpt++; dirpt++; (*cpmxptpt++)[code] += feff; } } } void mseqcat( char **seq1, char **seq2, double **eff, double *effarr1, double *effarr2, char name1[M][B], char name2[M][B], int clus1, int clus2 ) { int i, j; for( i=0; i 0.0 ) peff_kozo[m] += peff[m]; } } else //iranai { for( m=0; m 0.0 ) { for( m=0; m 0.0 ) peff_kozo[m] += peff[m]; } } else //iranai { for( m=0; m-1; j++ ) if( s1 == topol[step][branch][0] ) value++; for( j=0; (s2=topol[i][1][j])>-1; j++ ) if( s2 == topol[step][branch][0] ) value++; } return( value ); } void BranchLeafNode( int nseq, int ***topol, int *node, int step, int branch ) { int i, j, k, s; for( i=0; i-1; j++ ) node[s]++; for( k=0; k-1; j++ ) node[s]++; } void RootLeafNode( int nseq, int ***topol, int *node ) { int i, j, k, s; for( i=0; i-1; j++ ) node[s]++; } void nodeFromABranch( int nseq, int *result, int **pairwisenode, int ***topol, double **len, int step, int num ) { int i, s, count; int *innergroup; int *outergroup1; #if 0 int outergroup2[nseq]; int table[nseq]; #else static int *outergroup2 = NULL; static int *table = NULL; if( outergroup2 == NULL ) { outergroup2 = AllocateIntVec( nseq ); table = AllocateIntVec( nseq ); } #endif innergroup = topol[step][num]; outergroup1 = topol[step][!num]; for( i=0; i-1; i++ ) table[s] = 0; for( i=0; (s=outergroup1[i])>-1; i++ ) table[s] = 0; for( i=0, count=0; i-1; i++ ) { result[s] = pairwisenode[s][outergroup1[0]] + pairwisenode[s][outergroup2[0]] - pairwisenode[outergroup1[0]][outergroup2[0]] - 1; result[s] /= 2; } for( i=0; (s=outergroup1[i])>-1; i++ ) { result[s] = pairwisenode[s][outergroup2[0]] + pairwisenode[s][innergroup[0]] - pairwisenode[innergroup[0]][outergroup2[0]] + 1; result[s] /= 2; } for( i=0; (s=outergroup2[i])>-1; i++ ) { result[s] = pairwisenode[s][outergroup1[0]] + pairwisenode[s][innergroup[0]] - pairwisenode[innergroup[0]][outergroup1[0]] + 1; result[s] /= 2; } #if 0 for( i=0; i-1; i++ ) pair[*s1][r1] = 1; for( i=0; i