/* fix_4d_312_to_321 Written by Kellie Hom and Gary Strahan (School of Pharmacy, University of Baltimore, Maryland), based on a program obtained from Lewis Kay's lab (U. Toronto, Canada). Use this program to shuffle Varian 4d data acquired with array = "phase3, phase, phase2" to array = "phase3, phase2, phase". The re-shuffled data can be further processed with nmrPipe (for example). To run this: fix_4d_312_to_321 input_file out_file ni ni2 ni3 np User must supply the following 6 arguments: input_file name output_file name ni ni2 ni3 np 'ni','ni2', and 'ni3' are the actual number of data points collected in the indirectly-detected dimensions, and 'np' is the same as Varian's 'np'. */ #include #include #define MAXDATA 4097 main(argc,argv) int argc; char *argv[]; { FILE *fi,*fi1; char head_1[50],head_2[50],head_3[50],head_4[50],head_5[50], head_6[50],head_7[50],head_8[50]; int np,data_1[MAXDATA],data_2[MAXDATA], data_3[MAXDATA],data_4[MAXDATA],data_5[MAXDATA], data_6[MAXDATA],data_7[MAXDATA],data_8[MAXDATA], jj,i,ni,ni2,ni3; fi = fopen(argv[1],"r"); fi1 = fopen(argv[2],"w"); ni = atoi(argv[3]); ni2 = atoi(argv[4]); ni3 = atoi(argv[5]); np = atoi(argv[6]); /* read header and data */ fread(head_1,1,32,fi); fwrite(head_1,1,32,fi1); for(jj=1; jj<=ni*ni2*ni3; jj++) { fread(head_1,1,28,fi); fread(&data_1[1],4,np,fi); fread(head_2,1,28,fi); fread(&data_2[1],4,np,fi); fread(head_3,1,28,fi); fread(&data_3[1],4,np,fi); fread(head_4,1,28,fi); fread(&data_4[1],4,np,fi); fread(head_5,1,28,fi); fread(&data_5[1],4,np,fi); fread(head_6,1,28,fi); fread(&data_6[1],4,np,fi); fread(head_7,1,28,fi); fread(&data_7[1],4,np,fi); fread(head_8,1,28,fi); fread(&data_8[1],4,np,fi); /* write header and shuffle data */ fwrite(head_1,1,28,fi1); fwrite(&data_1[1],4,np,fi1); fwrite(head_3,1,28,fi1); fwrite(&data_3[1],4,np,fi1); fwrite(head_2,1,28,fi1); fwrite(&data_2[1],4,np,fi1); fwrite(head_4,1,28,fi1); fwrite(&data_4[1],4,np,fi1); fwrite(head_5,1,28,fi1); fwrite(&data_5[1],4,np,fi1); fwrite(head_7,1,28,fi1); fwrite(&data_7[1],4,np,fi1); fwrite(head_6,1,28,fi1); fwrite(&data_6[1],4,np,fi1); fwrite(head_8,1,28,fi1); fwrite(&data_8[1],4,np,fi1); } fclose(fi); fclose(fi1); }