X-GEN Manual, Section 5 | MULTIREF (merged-reflection binary) | File Formats |
The MULTIREF file (name.mrf) is a binary file describing reflections after they have had their intensities measured. The reflections are grouped such that all the symmetry-related observations of a particular reflection are recorded together. The file consists of a 256-byte CRYSTAL header, followed by M 256-byte DATARUN headers, where M is the number of data runs encompassed by the file; and then a set of records describing each unique reflection. The individual reflection records contain information on the reflection indices, the number of primary and Bijvoet observations, and then a series of sub-records describing the individual observations.
Specifically, the CRYSTAL header contains the following information:
typedef struct { /* structure type for each crystal: 256 bytes */ char xt_code[16]; /* 16-character code name of crystal */ char xt_desc[48]; /* description of crystal */ char xt_notes[64]; /* notes on crystal itself */ char xt_spaceg[8]; /* spacegroup */ char xt_device[8]; /* name of xray device */ short xt_intl; /* International Tables' spacegroup #*/ short xt_isys; /* spacegroup system number */ short xt_shhold[2]; /* extra "short" variables */ float xt_ar[3]; /* unit cell lengths in Angstroms */ float xt_ang[3]; /* unit cell angles in degrees */ float xt_stdpos[3]; /* goniostat position where c* is along +Z and b* mostly +Y, +Z */ float xt_lambda; /* X-ray wavelength in Angstroms */ float xt_reslim; /* overall resolution limit, Angstrom*/ float xt_ssqmax; /* largest squared scattvector length*/ xglong xt_ninteg; /* total # of observations integrated*/ xglong xt_nrefls; /* total # non-Bijvoet-merged refls */ xglong xt_nmerged; /* total # of Bijvoet-merged refls */ short xt_nruns; /* total # of data collection runs */ short xt_nshifts; /* total # of shifts */ short xt_dettype; /* detector type code */ short xt_version; /* X-GEN version code */ char xt_rffu[XT_HOLDER]; /* space holders */ } CRYSTAL;
Each DATARUN record contains the following information:
typedef struct { /* structure type for a data run: 256 bytes */ char run_code[8]; /* 8-character code name of run */ char run_notes[64]; /* notes on the run */ short run_id; /* integer identifier of the run */ short run_volxray; /* X-ray voltage in kV */ short run_curxray; /* X-ray current in ma */ short run_chvol; /* chamber voltage in kV */ short run_stepsize; /* stepsize,units of 1/96 deg*/ short run_nframes; /* number of frames in run */ short run_motor; /* motor being moved during run */ short run_nshifts; /* number of shifts in the run */ short run_nchams; /* # of chambers being used */ short run_temp; /* temperature during run */ short run_width; /*horizontal dimension of detector(s)*/ short run_height; /*vertical dimension of detector(s)*/ xglong run_ninteg; /* # of refls successfully integrated*/ xglong run_nexam; /* # of refls examined during run */ float run_lambda; /* Xray wavelength in Angstroms */ float run_startpos[3]; /* start-of-run goniostat position */ float run_recip[3][3]; /* reciprocal-space unit cell matrix: columns are a*, b*, c* */ float run_fmmin; /* first image that produced data */ /* float run_refval; reference value of motor in motion*/ float run_expos; /* exposure time per frame */ float run_fmmax; /* last image that produced data */ /* float run_bgiexpo; expos time/frame in background run */ float run_d0pos[3]; /* coords of center of detector #0 */ float run_d0ang[3]; /* angular attitude of detector #0 */ float run_d1pos[3]; /* coords of center of detector #1 */ float run_aduperph; /* # of adu per photon */ float run_eperadu; /* # of electrons that produce 1 adu */ float run_eperph; /* # of electrons per photon */ /* float run_d1ang[3]; angular attitude of detector #1*/ float run_wtsum; /* sum of weights in the next 3 aves */ float run_intave; /* average value of I in run */ float run_sigave; /* average value of sigma in run */ float run_iosave; /* */ float run_delomave; /**/ float run_rffu; /* reserved for future use */ /* float run_rmsomave; */ /* RMS error in omega */ float run_ssqave; /* The VOFLOW structures are organized as follows:
typedef struct { u_short value, xcoord, ycoord; } VOFLOW;Each overall reflection record is as organized as follows:
typedef struct { /* structure for merged reflection */ /* 16+MAXOB*16=16+127*16=128*16=2048 bytes */ u_char mr_hkl[4]; /* hkl of reflection */ u_short mr_nob; /* # of obs total */ u_char mr_nobpri; /* # of obs. of primary refl.*/ u_char mr_nobbij; /* # of obs. of Bijvoet refl.*/ u_short mr_ibar; /* averaged, scaled intensity */ u_short mr_isig; /* esd of averaged, scaled intensity*/ float mr_stl; /* sin theta over lambda */ ABBROB mr_ob[MAXOB]; /* array of observation structures */ } MERGEDREF;The average intensity and sigma values in the MERGEDREF structure are not used for anything other than documentation: the intensities in the ABBROB structures (below) do get used. There are not in fact 128 ABBROB structures in each MERGEDREF reflection in the file: there are mr_nob of them. Each of the ABBROB structures is defined thus:
typedef struct { /* abbreviated observation structure:16 bytes*/ short abo_shift; /* "shift" or "bin" number*/ short abo_omob; /* omega observed */ u_char abo_chamno; /* chamber number */ u_char abo_runno; /* integer identifier of run */ u_char abo_xob; /* observed chamber x */ u_char abo_yob; /* observed chamber y */ float abo_ii; /* integrated intensity */ float abo_sigma; /* sigma */ } ABBROB;The MULTIREF is initially created in a run of reduce. A group of MULTIREFs can be merged together in the "mrmerge" facility.
Usage: $WORK/ .mrf Written from: reduce and mrmerge. Modified in: reject (flagging bad observations);
cutoff (resolution cutoffs)Read in: "scalek", "scalem", "makemu", "stats", "spaceg". Report bugs to Andy Howard at howard@iit.edu or 312-567-5881.