X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=metastats2.c;h=3b801a0b110c5685fcc3a62f66ab3ad516a862d2;hb=7bf581f8c46b08eb3bb40715dac94695edee4a67;hp=c4d1f46feaff17f90a6e6668126a0f0a1ecd96ac;hpb=2bf3df7736ef2a17286d99394e211f51751d6829;p=mothur.git diff --git a/metastats2.c b/metastats2.c index c4d1f46..3b801a0 100644 --- a/metastats2.c +++ b/metastats2.c @@ -1,131 +1,20 @@ -#include -#include -#include -#include -#include -#include "fisher2.h" -void testp(double *permuted_ttests,int *B,double *permuted,double - *Imatrix,int *nc,int *nr,int *g,double *Tinitial,double *ps); -void permute_matrix(double *Imatrix,int *nc,int *nr,double - *permuted,int *g,double *trial_ts,double *Tinitial,double - *counter); -void permute_array(int *array, int n); -void calc_twosample_ts(double *Pmatrix,int *g,int *nc,int *nr,double - *Ts,double *Tinitial,double *counter1); -void meanvar(double *pmatrix,int *g,int *nr,int *nc,double *storage); -void start(double *Imatrix,int *g,int *nr,int *nc,double *testing, - double storage[][9]); +#include "metastats.h" -int main (int argc, char *argv[]){ +int metastat_main (char* outputFileName, int numRows, int numCols, double threshold, int numPermutations, double** data, int secondGroupingStart){ - int col=-1, row=-1, size,g=0,c=0,i=0,j=0,k,counter=0,lines=0, B=10000; - double placeholder=0,min=0, thresh=0.05; - - char arr[10000], str[51], a; - char location[41]="jobj.txt", output[41]="out.txt"; - - for(i=0;i<10000;i++){ - arr[i]='q'; - } + int size,c=0,i=0,j=0,k,counter=0, bflag=0; + int B=numPermutations; + int row = numRows; + int col = numCols; + int g = secondGroupingStart; + double thresh=threshold; + double placeholder=0,min=0; -int u,rflag=0,cflag=0, bflag=0; -char *filename; -int numbers; -double numb; -extern char *optarg; -extern int optind, optopt, opterr; - -while ((u = getopt(argc, argv, ":r:c:g:b:t:f:o:")) != -1) { - switch(u) { - case 'r': - numbers = atoi(optarg); - printf("The number of features/rows is %d.\n", numbers); - row = numbers; - rflag = 1; - break; - case 'c': - numbers = atoi(optarg); - printf("The number of samples/columns is %d.\n", numbers); - col = numbers; - cflag = 1; - break; - case 'g': - numbers = atoi(optarg); - printf("Your g-value is %d.\n", numbers); - g = numbers; - break; - case 'b': - numbers = atoi(optarg); - printf("The number of permutations is %d\n", numbers); - B = numbers; - break; - case 't': - numb = atof(optarg); - printf("Threshold is is %lf\n", numb); - thresh = numb; - break; - case 'f': - filename = optarg; - printf("filename input is %s\n", filename); - strcpy(location,filename); - break; - case 'o': - filename = optarg; - printf("filename output %s\n", filename); - strcpy(output,filename); - break; - case ':': - printf("-%c without filename\n", optopt); - break; - case '?': - printf("unknown arg %c\n", optopt); - break; - } -} - - FILE *jobj, *out; - jobj=fopen(location,"r"); - - if(jobj == NULL){ - printf("Please don't forget to save your matrix in the active"); - printf(" directory as \"%s\".\n",location); - return 0; - } - - // Gets the first line of samples names and checks for user error. - fgets(arr,10000,jobj); - - for(i=0;i<10000;i++){ - if(isspace(arr[i])){ - counter++; } - } - - if (cflag == 0) { - printf("You didn't tell us how many subjects there are!\n"); - printf("But we'll still do the analysis as if there are %d subjects.\n\n",col=counter-1); - } - if (cflag == 1) { - if (col != counter-1){ - printf("We would expect %d subjects, but you said %d.\n",counter-1,col); - } - } - - while((a = fgetc(jobj)) != EOF){ - if(a == '\n'){ - lines++; } - } + char output[1024]; + strcpy(output, outputFileName); + FILE *out; - if (rflag == 0) { - printf("You didn't specify the number of features!\n"); - printf("But we'll still do the analysis assuming %d features.\n\n", row=lines-1); - } - if (rflag == 1) { - if ( lines-1 != row ){ - printf("We would expect %d features, but you said %d.\n",lines-1,row); - } - } - if (g>=col || g<=0){ printf("Check your g value\n"); } @@ -141,27 +30,15 @@ while ((u = getopt(argc, argv, ":r:c:g:b:t:f:o:")) != -1) { storage[i][j]=0; } } - // Reset file below and create a separate matrix. - rewind(jobj); - fgets(arr,10000,jobj); - + for(i=0; i