#include #include #include #include #include #include #include "cl.h" typedef struct { int nrow, ncol; char **data; double *y; char **cname; char **rname; } DATA_MATRIX; DATA_MATRIX *ReadData( char *infile ); int main( int argc, char **argv ) { char infile1[256]; char infile2[256]; DATA_MATRIX *d1=NULL; int n, m, i; getarg( "-chr1", infile1, argc, argv); d1 = ReadData( infile1 ); for(m=0;mnrow;m++) { char *g1 = d1->data[m]; for(n=0;ndata[n]; for(i=0;incol;i++) { if ( g1[i]>0 & g2[i]>0 ) { ibs += abs(g1[i]-g2[i]); nibs++; } } printf( "%s %s %d %d %.5f\n", d1->rname[m], d1->rname[n], ibs, nibs, ibs/(double)(nibs ? nibs : 1) ); } } } DATA_MATRIX *ReadData( char *infile ) { FILE *fp; int nrow, ncol; char **data = NULL; char *buffer; char name[256]; int n, m; double x; double *y; DATA_MATRIX *d = NULL; if ( fp = fopen( infile, "r" ) ) { if ( fscanf( fp, "%d %d", &nrow, &ncol ) ==2 ) { int i; char tmp[256]; char **cname = (char**)calloc(ncol,sizeof(char*)); char **rname = (char**)calloc(nrow,sizeof(char*)); for(i=0;inrow = n; d->ncol = ncol; d->data = data; d->y = y; d->cname = cname; d->rname = rname; } } return d; }