| 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/<idname>.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.