/* CALIB.C */ # include # include # define EOF (-1) main (argc,argv) int argc; char *argv[]; { FILE *fp1,*fp2; char line[100]; int a1,a2,c,i,j,k,nl,ni,nc,c1,c2,mode,nr,r1,r2,max,min; double c1p,c2p,r1p,r2p,fcor,inte,intref,distref,dist; long pos1,pos2; /*----------------------------------------------------------------------------- OPEN FILES AND ASK FOR REQUIRED PARAMETERS -----------------------------------------------------------------------------*/ if (argc != 3) { printf ("Usage: 'calib INTEGRALFILE DISTANCEFILE' !\n\n"); exit (0); } fp1 = fopen (argv[1],"r"); fp2 = fopen (argv[2],"w"); printf ("*** CALIBration of ROESY and NOESY integrals ***\n"); printf (" (ROESY integrals should be offset corrected !)\n\n"); printf ("Type in reference integral value: "); scanf ("%lf",&intref); printf ("Type in corresponding distance in nm: "); scanf ("%lf",&distref); /*----------------------------------------------------------------------------- SCAN INPUT FILE FOR NUMBER OF LINES -----------------------------------------------------------------------------*/ nl = 0; while (i = fgets(line,100,fp1) != 0) { ++nl; } rewind (fp1); /*----------------------------------------------------------------------------- CALCULATE DISTANCES -----------------------------------------------------------------------------*/ for (i=0; i<8; ++i) { fgets(line,100,fp1); fputs(line,fp2); } if (nl >= 10) { for (i=0; i<(nl-8)/2; ++i) { fscanf (fp1,"%d %*d %d %d %lf %lf %lf %*c",&ni,&r1,&r2,&r1p,&r2p,&inte); fscanf (fp1," %*d %d %d %lf %lf",&c1,&c2,&c1p,&c2p); if ((intref/inte) > 0.0) { dist = distref * exp(log(intref/inte)/6.0); fprintf (fp2,"%3d %4d %4d %10.5lf %10.5lf %10.1lf nm\n",ni,r1,r2,r1p,r2p,dist); fprintf (fp2," %4d %4d %10.5lf %10.5lf\n",c1,c2,c1p,c2p); } else { fprintf (fp2,"%3d %4d %4d %10.5lf %10.5lf !!! wrong sign !!!\n",ni,r1,r2,r1p,r2p); fprintf (fp2," %4d %4d %10.5lf %10.5lf\n",c1,c2,c1p,c2p); } } } a1 = fclose (fp1); a2 = fclose (fp2); if (a1==0 & a2==0) { printf ("\n Files successfully closed,\n"); printf (" good bye from CALIB !\n\n"); } }