This is an archive copy of the IUCr web site dating from 2008. For current content please visit https://www.iucr.org.
[IUCr Home Page] [Acta C] [CIF Home Page]

IUCr Validation Procedures


PROC-NAME: ABSMU_01 (CM)

PURPOSE: To check that _exptl_absorpt_coefficient_mu value is consistent with the cell contents.

PROCEDURE:
SUMMATION

(1) match _atom_type_symbol with element symbol in table of atomic abs coefficients and extract the AMU value for _diffrn_radiation_type.
[Attached are AMU values by Z for CuK\a, MoK\a and AgK\a]

>>> AMU for CuK\a in barn/atom (INT TAB VOL C P193-198)

[.0655, .194, .576, 1.66, 4.15, 8.99, 17.3, 30.4, 49.8, 76.8, 114., 161., 222., 297., 388., 497., 624., 772., 940., 1130., 1350., 1590., 1850., 2130., 2460., 2800., 3140., 476., 547., 629., 719., 819., 929., 1050., 1180., 1320., 1480., 1650., 1830., 2030., 2230., 2460., 2700., 2950., 3230., 3520., 3820., 4150., 4500., 4860., 5250., 5650., 6070., 6520., 7000., 7500., 8030., 8570., 9120., 9680., 10200., 10800., 11000., 10500., 8470., 9770., 3470., 3670., 3930., 4100., 4500., 4600., 4850., 5130., 5720., 5800., 6240., 6340., 6690., 6680., 7540., 7980., 8430., 8810., 8650., 9720., 10200., 10200., 14300., 11800., 10600., 11200.]

>>> AMU for MoK\a in barn/atom (INT TAB VOL C P193-198)

[.0624, .134, .228, .383, .661, 1.15, 1.96, 3.25, 5.15, 7.86, 11.6, 16.5, 22.9, 31., 41., 53.2, 67.8, 85.1, 105., 129., 156., 186., 220., 258., 302., 349., 401., 457., 518., 586., 660., 738., 822., 911., 1000., 1100., 1210., 1320., 1430., 247., 273., 300., 332., 364., 399., 436., 476., 518., 563., 611., 662., 716., 773., 834., 898., 965., 1040., 1110., 1190., 1270., 1350., 1440., 1540., 1630., 1740., 1840., 1950., 2070., 2190., 2310., 2440., 2580., 2720., 2860., 3010., 3160., 3310., 3480., 3650., 3820., 4010., 4190., 4380., 4580., 4070., 3980., 3220., 3300., 5400., 3700., 3870., 4030.]

>>> AMU for AgK\a in barn/atom (INT TAB VOL C P193-198)

[.0614, .128, .206, .313, .479, .745, 1.17, 1.82, 2.77, 4.12, 5.96, 8.42, 11.6, 15.6, 20.6, 26.7, 34.1, 42.9, 53.2, 65.2, 78.9, 94.7, 112., 133., 155., 180., 207., 238., 271., 307., 346., 387., 433., 482., 535., 592., 652., 715., 780., 847., 922., 1150., 1070., 192., 210., 230., 251., 273., 297., 323., 350., 378., 409., 441., 475., 511., 549., 588., 630., 674., 720., 768., 819., 872., 927., 985., 1040., 1110., 1170., 1240., 1310., 1390., 1460., 1540., 1620., 1710., 1800., 1890., 1990., 2090., 2190., 2290., 2400., 2510., 2620., 2730., 2850., 2980., 3110., 3230., 3420., 3500.]

(2) SUM
TOTAMU = AMU * <number of each type in cell>

(3) CALCULATE

MU = 10 * TOTAMU / _cell_volume (ie. mu/mm)

RMU = _exptl_absorpt_coefficient_mu / MU

TEST

IF RMU is 0.90 <> 1.10 issue ALERT A
0.95 <> 1.05 issue ALERT B
0.99 <> 1.01 issue ALERT C


PROC-NAME: ABSTM_01 (TM)

PURPOSE: To check that _exptl_absorpt_correction_T_min is less than _exptl_absorpt_correction_T_max.

PROCEDURE:
TEST

IF _exptl_absorpt_correction_T_min > _exptl_absorpt_correction_T_min
issue ALERT


PROC-NAME: ABSTM_02 (TA)

PURPOSE: To check that _exptl_absorpt_correction_T_min and _exptl_absorpt_correction_T_max are appropriate to the _exptl_crystal_size_ and _exptl_absorpt_coefficient_mu values.

PROCEDURE: DEFINE

mu is the value _exptl_absorpt_coefficient_mu
tmax is the distance _exptl_crystal_size_max
tmid is the distance _exptl_crystal_size_mid
tmin is the distance _exptl_crystal_size_min
trad is the radius _exptl_crystal_size_rad

Tmax(rep) is reported _exptl_absorpt_correction_T_max
Tmin(rep) is reported _exptl_absorpt_correction_T_min

TEST

IF _exptl_absorpt_correction_type ~ "psi-scan"
OR "empirical"
OR "multi-scan"
OR "refdelf"

IF mu * tmid > 3.0 exit with the ERROR message:
"crystal and compound unsuitable for non-numerical corrections"

IF _exptl_absorpt_correction_type ~ "psi-scan"
OR "empirical"
OR "multi-scan"
OR "refdelf"
OR "analytical"
OR "numerical"
OR "gaussian"
OR "none"

CALCULATE

Tmax(shape) = EXP(-tmin * mu)
Tmin(shape) = EXP(-temx * mu)
Tmin(shape)'= EXP(-tmax * mu)

where temx = MAX{tmid, MIN[(1.2*tmid), tmax]}

Tmax(angle) = 1.0
Tmin(angle) = TAB(_diffrn_reflns_theta_max, mu*tmid)
TAB=Lookup value for angular factor

mu*tmidMoK\aCuK\a
0.01.001.00
0.51.011.05
1.01.041.15
1.51.091.25
2.01.151.5
2.51.251.9
3.01.402.5

Tmax(exp) = Tmax(shape) * Tmax(angle)
Tmin(exp) = Tmin(shape) * Tmin(angle)
Tmin(exp)'= Tmin(shape)'/ Tmin(angle)

RT(rep) = Tmax(rep) / Tmin(rep)
RT(exp) = Tmax(exp) / Tmin(exp)
RT(exp)'= Tmax(exp) / Tmin(exp)'

RR = RT(exp) / RT(rep)
RR'= RT(exp)'/ RT(rep)

TEST

IF _exptl_absorpt_correction_type ~ "refdelf"
OR "empirical"
OR "psi-scan"
OR "multi-scan"
THEN
IF RR' < 0.50 OR RR > 2.00 Issue ALERT A (1)
IF RR' < 0.75 OR RR > 1.50 Issue ALERT B (1)
IF RR' < 0.90 OR RR > 1.10 Issue ALERT C (1)

ELSE IF _exptl_absorpt_correction_type ~ "numerical"
OR "analytical"
OR "gaussian"
THEN
IF RR' < 0.50 OR RR > 2.00 Issue A General ALERT
IF RR' < 0.75 OR RR > 1.50 Issue A General ALERT
IF RR' < 0.90 OR RR > 1.10 Issue A General ALERT

ELSE IF _exptl_absorpt_correction_type ~ "none"

THEN
IF RT(exp) > 1.30 Issue ALERT A (2)
IF RT(exp) > 1.20 Issue ALERT B (2)
IF RT(exp) > 1.10 Issue ALERT C (2)

SCALE

IF _exptl_absorpt_correction_type ~ "refdelf"
OR "empirical"
OR "psi-scan"
OR "multi-scan"

AND IF Tmax(exp)/Tmax(rep) < 0.95 AND > 1.05

THEN
Tmax(scl) = Tmax(exp)
Tmin(scl) = Tmax(exp) / RT(rep)

[[ For printed publication the reported T values will be replaced by the scaled T values. Since the ratio of scaled T's is identical to the ratio of reported T values, the scaling does not imply a change to the absorption corrections used in the study. It simply places the published T values on an absolute scale with respect to the crystal dimensions and the crystal mu value. In this way the T values conform to their definition, and the reader is able to easily deduce the relative importance of absorption corrections to the study.]]


PROC-NAME: ABSTY_01 (AR)

PURPOSE: To check that _exptl_absorpt_correction_type is one of the recognised keywords.

CHECKLIST:
PROC-NAME: ABSTY_02

PURPOSE: To check that _exptl_absorpt_correction_type contains some reference text.

PROCEDURE:
TEST

IF _exptl_absorpt_correction_type !~ 'Ref:'
OR _exptl_absorpt_process_details is missing
issue ALERT


PROC-NAME: CELLK_01 (CT)

PURPOSE: To check that _cell_measurement_temperature has the correct units ie. Kelvin rather than Celsius.

PROCEDURE:
TEST

IF _cell_measurement_temperature < 25
issue ALERT C (may be in Celcius units).


PROC-NAME: CELLT_01 (CQ)

PURPOSE: To check that _cell_measurement_theta_min is less than _cell_measurement_theta_max.

PROCEDURE:
TEST

IF _cell_measurement_theta_min >= _cell_measurement_theta_max
issue ALERT


PROC-NAME: CELLV_01 (VC)

PURPOSE: To check that the _cell_volume matches _cell_length_ and _cell_angle_ values.

PROCEDURE:

CALCULATE

S = { _cell_angle_alpha + _cell_angle_beta + _cell_angle_gamma } / 2

VOL = _cell_length_a * _cell_length_b * _cell_length_c * 2 *
SQRT { SIN [S] * SIN [S - _cell_angle_alpha ] * SIN [S - _cell_angle_beta ] * SIN [S - _cell_angle_gamma ] }

RV = _cell_volume / VOL

TEST

IF RV is 0.999 <> 1.001 issue ALERT


PROC-NAME: CELLV_02 (VS)

PURPOSE: To check that the _cell_volume su matches _cell_length_ and _cell_angle_ su values.

PROCEDURE:

CALCULATE

IF _symmetry_cell_setting == 'triclinic' OR 'monoclinic' OR 'orthorhombic'
{C1=1, C2=1, C3=1, C4=1}

IF _symmetry_cell_setting == 'tetragonal' OR 'trigonal' OR 'hexagonal'
{C1=2, C2=2, C3=1, C4=1}

IF _symmetry_cell_setting == 'rhombohedral'
{C1=3, C2=3, C3=3, C4=3}

IF _symmetry_cell_setting == 'cubic'
{C1=3, C2=3, C3=3, C4=1}

CSA = COSINE [ _cell_angle_alpha ]
CSB = COSINE [ _cell_angle_beta ]
CSG = COSINE [ _cell_angle_gamma ]
RVL = [ _cell_length_a * _cell_length_b * _cell_length_c / _cell_volume ]

SUVOL = _cell_volume * SQRT {
C1 * [ (su of a) / _cell_length_a ]**2 + C2 * [ (su of b) / _cell_length_b ]**2 +
C3 * [ (su of c) / _cell_length_c ]**2 + C4 * RVL**4 *
[ (su of alpha)**2 * (CSA-CSB*CSG)**2 +
(su of beta )**2 * (CSB-CSA*CSG)**2 +
(su of gamma)**2 * (CSG-CSB*CSA)**2 ]}

DSUV = |{su of cell volume} - SUVOL |

TEST

IF DSUV > 8 issue ALERT A
DSUV > 4 issue ALERT B
DSUV > 2 issue ALERT C


PROC-NAME: CELLZ_01 (ZF) Updated 10th May 1999

PURPOSE: To check that the cell contents calculated from _cell_formula_sum and _cell_formula_units_Z matches that from the atom sites present in the _atom_site_ list and the _symmetry_ information.

PROCEDURE:

SUMMATION

(1) For each atomic species in the _cell_formula_sum string, calculate the number of atoms in the cell using the _cell_formula_sum counts and the _cell_formula_units_Z.

(2) For each atomic species in the _atom_site_ list, calculate, using the _atom_site_occupancy value and the symmetry site-multiplicity value (generated from NSYM), the number of atoms in the cell.

CALCULATE

DN = [cell contents from (1)] - [cell contents from (2)] for each atom type

SUMDN = sum of DN for ALL atom species

TEST

IF SUMDN > 0.05 issue the general warning message:
Difference between formula and atom_site contents detected.

AND THEN

IF SUMDN < 0.5 issue the message:
ALERT: Check formula stoichiometry or atom site occupancies.

IF DN for Hydrogen atoms > 0.5 issue the message:
WARNING: H atoms missing from atom site list. Is this intentional?

ELSE issue the message:
ALERT: Large difference may be due to symmetry error - see SYMMG tests.


PROC-NAME: CHEMM_01

PURPOSE: To check that the moiety formula follows the CIF-dictionary definition.

PROCEDURE:

Read the formula according to the CIF rules and xcheck against the sum formula.


PROC-NAME: CHEMM_02

PURPOSE: To xcheck the moiety formula with the geometry.

PROCEDURE:

Work out the geometry from the _atom_site_ data and xcheck with the moiety formula.


PROC-NAME: CHEMS_01

PURPOSE: To check that the _chemical_formula_sum is properly constructed. i.e. C H followed by alphabetic.

PROCEDURE:

Read the _chemical_formula_sum and check that the formula is in the order, carbon count, hydrogen count followed by the other elements in alphabetic order.


PROC-NAME: CHEMS_02

PURPOSE: To check that the stated category _publ_requested_category is consistent with the chemical formula of the compound.

PROCEDURE:
  1. If compound contains no C then inorganic.
  2. If compound contains C but no H, probably inorganic.
  3. If compound contains C, H and a metal then metalorganic.
  4. If compound contains C, H and no metal then organic.


PROC-NAME: CHEMW_01 (WS)

PURPOSE: To check that the _chemical_formula_weight matches that calculated for the _chemical_formula_sum .

PROCEDURE:

SUMMATION

(1) match the element symbols in _chemical_formula_sum
with values for _atom_type_symbol [NOT USED]

(2) multiply the number of atoms in _chemical_formula_sum
by the mass for this element

CALCULATE

RW = _chemical_formula_weight / SUM of (2)
DW = | _chemical_formula_weight - SUM of (2)|

TEST

IF RW
0.90 <> 1.10 issue ALERT Level A (> 10% difference)
0.95 <> 1.05 issue ALERT Level B (> 5% difference)
0.99 <> 1.01 issue ALERT Level C (> 1% difference)

IF DW > 1.0 and category is FO, FM, CO or CM
issue ALERT


PROC-NAME: CHEMW_02 (WM)

PURPOSE: To check that the _chemical_formula_weight matches that calculated for the _chemical_formula_moiety .

PROCEDURE:

SUMMATION

(1) match the element symbols in _chemical_formula_moiety with values for _atom_type_symbol

(2) multiply the number of atoms in _chemical_formula_moiety by the mass for this element

CALCULATE

RM = _chemical_formula_weight / SUM of (2)
DM = | _chemical_formula_weight - SUM of (2)|

TEST

IF RM
0.90 <> 1.10 issue ALERT Level A (> 10% difference)
0.95 <> 1.05 issue ALERT Level B (> 5% difference)
0.99 <> 1.01 issue ALERT Level C (> 1% difference)

IF DM > 1.0 and category is FO, FM, CO or CM
issue ALERT


PROC-NAME: CHEMW_03 (WA) Updated 10th May 1999

PURPOSE: To check that the _chemical_formula_weight matches that calculated for the atomic content data from the two lists, _atom_site_ and _atom_type_, using the number of formula units per cell and the number of symmetry equivalent positions {NSYM from procedure SM}.

PROCEDURE:

SUMMATION

(1) Match the element symbol with the _atom_site_label in the _atom_site_ list and sum the atomic weights for all sites, multiplying by the _atom_site_occupancy value and the symmetry site-multiplicity value (generated from NSYM).

(2) Additionally, if the _atom_type_ list is present in the CIF, sum the atomic weights for the _atom_type_number_in_cell for each element.

CALCULATE

XX = SUM of (1)[or (2)] / _cell_formula_units_Z

WT = XX * NSYM

RC = _chemical_formula_weight / WT

TEST

IF RC
0.90 <> 1.10 issue ALERT Level A (> 10% difference)
0.95 <> 1.05 issue ALERT Level B (> 5% difference)
0.99 <> 1.01 issue ALERT Level C (> 1% difference)


PROC-NAME: CRYSC_01 (CC)

PURPOSE: To check that _exptl_crystal_colour is consistent with expected colour code combinations.

PROCEDURE:
TEST
IF _exptl_crystal_colour != (qualifier)(intensity)(base-colour)
issue ALERT B
where allowed values are:

(qualifier)
blank, metallic, lusterous, translucent, fluorescent, clear

(intensity)
blank, dark, light, intense, pale

(base-colour)
white, black, blue, violet, red, pink, yellow, gold, silver, bronze, grey, orange, green, colourless, brown, purple


PROC-NAME: CRYSR_01

PURPOSE: To check that the radius of the crystal is given for a spherical or cylinderical crystal.

PROCEDURE:

(1) If the _exptl_crystal_description contains either 'cylinder' or 'radius' check for a value of _exptl_crystal_size_rad


PROC-NAME: CRYSS_01 (CS)

PURPOSE: To check that _exptl_crystal_size_min value is consistent with _exptl_crystal_size_mid and _exptl_crystal_size_max.

PROCEDURE:
TEST

IF _exptl_crystal_size_min > _exptl_crystal_size_mid
OR _exptl_crystal_size_mid > _exptl_crystal_size_max
issue ALERT B


PROC-NAME: CRYSS_02

PURPOSE: To check that ther values of _exptl_crystal_size_* are not larger than expected.

PROCEDURE:
(1) IF _exptl_crystal_size_min > 0.6 && _diffrn_radiation_type != neutron
issue ALERT B
(2) IF _exptl_crystal_size_mid > 0.8 && _diffrn_radiation_type != neutron
issue ALERT B
(3) IF _exptl_crystal_size_max > 1.0 && _diffrn_radiation_type != neutron
issue ALERT B

PROC-NAME: DENSD_01 (DD)

PURPOSE: To check that the _exptl_crystal_density_diffrn matches the _cell_volume and _chemical_formula_weight values

PROCEDURE:
CALCULATE

DEN = 1.66042 * _chemical_formula_weight * _cell_formula_units_Z / _cell_volume

RD = _exptl_crystal_density_diffrn / DEN

TEST
IF RD 0.9 <> 1.1 issue ALERT A
RD 0.95 <> 1.05 issue ALERT B
RD 0.99 <> 1.01 issue ALERT C


PROC-NAME: DENSM_01

PURPOSE: To check that the _exptl_crystal_density_meas is supplied the _exptl_crystal_density_method is present.

PROCEDURE: IF _exptl_crystal_density_method != 'none'
OR != 'not measured'
OR != '?'
AND _exptl_crystal_density_meas == '?'
issue ALERT B


PROC-NAME: DENSX_01 (DX)

PURPOSE: To check that the _exptl_crystal_density_meas matches the _exptl_crystal_density_diffrn.

PROCEDURE:
CALCULATE

RD = _exptl_crystal_density_diffrn / _exptl_crystal_density_meas

TEST
IF RD is 0.80 <> 1.20 issue ALERT A
RD is 0.90 <> 1.10 issue ALERT B
RD is 0.95 <> 1.05 issue ALERT C


PROC-NAME: DIFMN_01 (DN)

PURPOSE: To check that _refine_diff_density_min is less than _refine_diff_density_max.

PROCEDURE:
TEST
IF _refine_diff_density_min >= _refine_diff_density_min
issue ALERT C


PROC-NAME: DIFMN_02 (DA)

PURPOSE: To check that _refine_diff_density_min is within expected limits.

PROCEDURE:
DMIN = _refine_diff_density_min
DTEST = 0.1 * ZMAX

TEST

IF DMIN < -DTEST*2 issue ALERT A
< -DTEST issue ALERT B
< -DTEST*.75 issue ALERT C

IF DMIN > 0.0 issue ALERT A


PROC-NAME: DIFMN_03

PURPOSE: To check that if _refine_diff_density_min is not within expected limits that the adjacent site is identified.

PROCEDURE:
DMIN = _refine_diff_density_min
DTEST = 0.1 * ZMAX

TEST
IF DMIN < -DTEST*.75 atom site should be identified.


PROC-NAME: DIFMX_01 (DB)

PURPOSE: To check that _refine_diff_density_max is within expected limits.

PROCEDURE:
DMAX = _refine_diff_density_max
DTEST = 0.1 * ZMAX

TEST

IF DMAX > DTEST*2 issue ALERT A
> DTEST issue ALERT B
> DTEST*.75 issue ALERT C

IF DMAX < 0.0 issue ALERT A


PROC-NAME: DIFMX_02

PURPOSE: To check that if _refine_diff_density_max is not within expected limits that the adjacent site is identified.

PROCEDURE:
DMAX = _refine_diff_density_max
DTEST = 0.1 * ZMAX

TEST
IF DMAX > DTEST*.75 atom site should be identified.


PROC-NAME: FCOEF_01

PURPOSE: Check that the value of _refine_ls_structure_factor_coef is recognised.

CHECKLIST:


PROC-NAME: FORMU_01 (WS)

PURPOSE: To check that the total sum formulae derived from the _chemical_formula_sum _chemical_formula_moiety, _atom_site_ and _atom_type_ data all match.

PROCEDURE:

CALCULATE

(1). Sum formula derived from the _chemical_formula_moiety using the rules in the CIF-dictionary.
(2). Sum formula from the _atom_site_ items taking into account the _atom_site_occupancy and symmetry as appropriate.
(3). Sum formula form the _atom_type_ items (if present).
TEST

IF atom count is > 0.01 atom, from that given by the _chemical_formula_sum
THEN issue a General ALERT


PROC-NAME: GOODF_01 (GF)

PURPOSE: To check that _refine_ls_goodness_of_fit_ref is within expected limits.

PROCEDURE:
TEST
IF _refine_ls_goodness_of_fit_ref < 0.4 OR > 6.0 issue ALERT A
< 0.6 OR > 4.0 issue ALERT B
< 0.8 OR > 2.0 issue ALERT C


PROC-NAME: HYDTR_01

PURPOSE: Check that the value of _refine_ls_hydrogen_treatment is recognised.

CHECKLIST:

PROC-NAME: RADNT_01

PURPOSE: Check that the radiation type is recognised.

PROCEDURE:

(1). Check that the _diffrn_radiation_type contains one of the
following.

CHECKLIST:


PROC-NAME: RADNW_01 (RW1)

PURPOSE: To check that the _diffrn_radiation_wavelength matches the _diffrn_radiation_type.

PROCEDURE:
TEST
IF _diffrn_radiation_type == 'Cu K\a'
AND {
_diffrn_radiation_wavelength > 1.54180
OR _diffrn_radiation_wavelength < 1.54175 } issue ALERT C

IF _diffrn_radiation_type == 'Mo K\a'
AND {
_diffrn_radiation_wavelength > 0.71075
OR _diffrn_radiation_wavelength < 0.71065 } issue ALERT C

IF _diffrn_radiation_type == 'Ag K\a'
AND {
_diffrn_radiation_wavelength > 0.56085
OR _diffrn_radiation_wavelength < 0.56080 } issue ALERT C


PROC-NAME: REFLE_01 (TS)

PURPOSE: To check that _reflns_threshold_expression contains a multiplier which is below the limit.

PROCEDURE:
TEST

IF _reflns_threshold_expression ~ 'I'
OR _reflns_threshold_expression ~ 'F^2^'
AND {
_reflns_threshold_expression >= '6' issue ALERT A
_reflns_threshold_expression >= '5' issue ALERT B
_reflns_threshold_expression >= '4' issue ALERT C}
OR
IF _reflns_threshold_expression ~ 'F'
AND {
_reflns_threshold_expression >= '12' issue ALERT A
_reflns_threshold_expression >= '10' issue ALERT B
_reflns_threshold_expression >= '8' issue ALERT C}


PROC-NAME: REFLG_01 (RO)

PURPOSE: To check that _reflns_number_gt less than or equal to the _diffrn_reflns_number.

PROCEDURE:
TEST

IF _reflns_number_gt > _diffrn_reflns_number
issue ALERT


PROC-NAME: REFLL_01 (MI)

PURPOSE: To check that _diffrn_reflns_limit_ values are in the correct order.

PROCEDURE:
TEST
IF _diffrn_reflns_limit_h_min >= _diffrn_reflns_limit_h_max
OR _diffrn_reflns_limit_k_min >= _diffrn_reflns_limit_k_max
OR _diffrn_reflns_limit_l_min >= _diffrn_reflns_limit_l_max
issue ALERT


PROC-NAME: REFLT_01 (RN)

PURPOSE: To check that _reflns_number_total is less than or equal to the _diffrn_reflns_number.

PROCEDURE:
TEST

IF _reflns_number_total > _diffrn_reflns_number
issue ALERT


PROC-NAME: REFLT_02 (RT)

PURPOSE: To check that _reflns_number_total is greater than or equal to the _reflns_number_gt.

PROCEDURE:
TEST

IF _reflns_number_total < _reflns_number_gt
issue ALERT


PROC-NAME: REFLT_03 (RV) Updated 10th May 1999

PURPOSE: To check that _reflns_number_total is close to that expected for the cell volume, symmetry and theta max.

PROCEDURE:

CALCULATE

S = SIN [_diffrn_reflns_theta_max] / _diffrn_radiation_wavelength

NREF = The number of the reflections in the SYMMETRY-UNIQUE portion of reciprocal space out to a maximum of S. All symmetry absent reflections have been removed from this count.

NREFRAT = _reflns_number_total / NREF

NREF% = NREFRAT * 100

NFRIED = MAX ( _reflns_number_total - NREF, 0)

NFDRAT = NFRIED / NREF

TEST_1 : In the calculation of NREF the maximum and minumum h,k,l indices in the in the unque portion of reciprocal space are saved. These are compared with the _diffrn_reflns_limit_ values in the CIF. If the estimated maximum h,k,l values do not match either the CIF _max or the absolute _min values a general ALERT is issued.

TEST_2 : Test the completeness of the reflection count in the symmetry unique portion of reciprocal space.

IF NREF%
< 85 issue ALERT A
< 90 issue ALERT B
< 95 issue ALERT C

If the space group is centrosymmetric also test if the expected reflection count is exceeded (perhaps because symmetry absent or equivalent reflections were mistakenly counted).

IF NREF%
> 115 issue ALERT A
> 110 issue ALERT B
> 105 issue ALERT C

TEST_3 : For noncentrosymmetric structures, test if the _reflns_number_total count includes any Friedel-related reflections, and estimate how may and what fraction they are of the symmetry-unique count NREF. The test is divided into "heavy atom" structures (heavier atoms than Si are present) and "light atom" structures. The light-atom test includes the radiation used in order to establish if anomalous scattering is sufficient to permit the reliable determination of the absolute structure.

IF Z > Si .and. NFDRAT < 0.5 issue the message:
WARNING: Large fraction of Friedel related reflns needed to determine absolute structure.

IF Z < Si .and. radiation is CuKa .and. NFDRAT < 0.5 issue the message:
WARNING: CuKa measured Friedel data can be used to determine absolute structure in a light-atom study only if the Friedel fraction is large.

IF Z < Si .and. radiation is MoKa .and. NFDRAT > 0.05 issue the message:
ALERT: MoKa measured Friedel data cannot be used to determine absolute structure in a light-atom study EXCEPT under VERY special conditions.


PROC-NAME: REFNR_01 (RP)

PURPOSE: To check that the ratio of _refine_ls_number_reflns and _refine_ls_number_parameters is acceptable.

PROCEDURE:
CALCULATE

S = SIN [_diffrn_reflns_theta_max] / _diffrn_radiation_wavelength

RRRT = _refine_ls_number_reflns / _refine_number_total

RRTP = _refine_ls_number_reflns / _refine_ls_number_parameters

TEST

IF S < 0.59 OR RRRT < 0.95

IF CENTROSYMMETRIC
RRTP < 10 issue ALERT C
RRTP < 8 issue ALERT B
RRTP < 6 issue ALERT A

IF NON-CENTROSYMMETRIC
IF ZMAX > 18
RRTP < 10 issue ALERT C
RRTP < 8 issue ALERT B
RRTP < 6 issue ALERT A
ELSE
RRTP < 8 issue ALERT C
RRTP < 6 issue ALERT B
RRTP < 4 issue ALERT A


PROC-NAME: RFACG_01 (RR)

PURPOSE: To check that _refine_ls_R_factor_gt is within expected limits.

PROCEDURE:
TEST
IF _refine_ls_R_factor_gt > 0.20 issue ALERT A
> 0.15 issue ALERT B
> 0.10 issue ALERT C


PROC-NAME: RFACR_01 (RW)

PURPOSE: To check that _refine_ls_wR_factor_ref is within expected limits.

PROCEDURE:

TEST

IF _refine_ls_wR_factor_ref > 0.45 issue ALERT A
> 0.35 issue ALERT B
> 0.25 issue ALERT C


PROC-NAME: RINT_01 (RE)

PURPOSE: To check that _diffrn_reflns_av_R_equivalents is within expected limits.

PROCEDURE:
TEST
IF _diffrn_reflns_av_R_equivalents > 0.20 issue ALERT A
> 0.15 issue ALERT B
> 0.10 issue ALERT C
< 0.0 issue ALERT A


PROC-NAME: SHFSU_01 (SS)

PURPOSE: To check that _refine_ls_shift/su_max is within expected limits.

PROCEDURE:
TEST
IF |_refine_ls_shift/su_max| > 0.20 issue ALERT A
> 0.10 issue ALERT B
> 0.05 issue ALERT C


PROC-NAME: STRDET_01

PURPOSE: To check that _refine_ls_abs_structure_details is present if necessary.

PROCEDURE:

(1) For NON-CENTROSYMMETRIC structures only, _refine_ls_abs_structure_details should be present if either Flack or Rogers parameter is given.


PROC-NAME: STRVAL_01 (FL)

PURPOSE: To check that _refine_ls_abs_structure_flack is within expected limits.

PROCEDURE:
FLACK = _refine_ls_abs_structure_flack
SFLACK = su of _refine_ls_abs_structure_flack

TEST
IF FLACK > 0.7 issue ALERT C
Chirality of atom sites is inverted?

ELSE IF FLACK > 0.3 AND FLACK < 0.7 issue ALERT C
Flack test results are ambiguous.

ELSE IF FLACK < -0.2 issue ALERT C
Flack parameter is too small.

ELSE IF SFLACK > 0.5 issue ALERT C
Flack test results are meaningless.



PROC-NAME: STRVAL_02

PURPOSE: To check that _refine_ls_abs_structure_rogers is within expected limits.

PROCEDURE:
ROGERS = _refine_ls_abs_structure_flack

TEST
IF ABS(ROGERS) > 1.2 issue ALERT C
Rogers value is too large

IF ROGERS > -0.5 AND ROGERS < 0.5 issue ALERT C
Rogers value is inconclusive

IF ROGERS < -1.2 issue ALERT C
Rogers value is too low

IF ROGERS < -0.5 issue ALERT C
Rogers value suggests reverse chirality



PROC-NAME: SYMMG_01 (SM)

PURPOSE: To check that the _symmetry_space_group_name_H-M value is recognised as a legitimate symmetry symbol.

PROCEDURE:
(1) ATTACH list of H-M symbols, in all settings (e.g. 'symmap' STAR-format file of R Grosse-Kunstleve)

(2) SEARCH for a match of _symmetry_space_group_name_H-M with an entry in the list.

(3) EXTRACT the space group number of the matched symbol.

(4) EXTRACT the number of symmetry equivalent positions.

TEST

IF (2) fails, issue ALERT that symbol unrecognied.

IF the number from (3) != _symmetry_space_group_number,
issue an ALERT of mismatch.


PROC-NAME: SYMMG_02

PURPOSE: To check that the _symmetry_space_group_name_H-M given is consistent with the _symmetry_equiv_pos_as_xyz if given.

PROCEDURE:
(1). Search the symmap file to produce a Hall symbol from the H-M symbol. Generate the xyz from this and convert back into a H-M symbol via the Hall symbol and symmap file.
(2). Generate a H-M symbol from the xyz via the Hall symbol and symmap file.
(3). xcheck the H-M symbols generated from (1) and (2).
SUMMARY:
h-m --> (symmap) --> hall --> xyz --> hall --> (symmap) --> h-m
hall --> xyz --> hall --> (symmap) --> h-m
xyz --> hall --> (symmap) --> h-m


PROC-NAME: SYMMS_01

PURPOSE: To check that the _symmetry_cell_setting matches one of the keywords.

CHECKLIST:


PROC-NAME: SYMMS_02 (SC)

PURPOSE: To check that the _symmetry_cell_setting is consistent with the _cell_length_ and _cell_angle_ values.

PROCEDURE:

IF _symmetry_cell_setting == 'triclinic'
AND { _cell_length_a == _cell_length_b
OR _cell_length_a == _cell_length_c
OR any _cell_angle values == 90. } issue ALERT B

IF _symmetry_cell_setting == 'monoclinic'
AND { _cell_length_a == _cell_length_b
OR _cell_length_a == _cell_length_c
OR all _cell_angle_ values == 90.
OR two _cell_angle_ values != 90. } issue ALERT B

IF _symmetry_cell_setting == 'orthorhombic'
AND { _cell_length_a == _cell_length_b
OR _cell_length_a == _cell_length_c
OR all _cell_angle_ values != 90. } issue ALERT B

IF _symmetry_cell_setting == 'tetragonal'
AND { _cell_length_a != _cell_length_b
OR all _cell_angle_ values != 90. } issue ALERT B

IF _symmetry_cell_setting == 'rhombohedral'
AND { _cell_length_a != _cell_length_b
OR _cell_length_a != _cell_length_c
OR _cell_angle_alpha != _cell_length_beta
OR _cell_angle_alpha != _cell_length_gamma
OR _cell_angle_ values == 90. } issue ALERT B

IF _symmetry_cell_setting == 'trigonal' OR 'hexagonal'
AND { _cell_length_a != _cell_length_b
OR _cell_angle_alpha != 90.
OR _cell_angle_beta != 90.
OR _cell_angle_gamma != 120. } issue ALERT B

IF _symmetry_cell_setting == 'cubic'
AND { _cell_length_a != _cell_length_b
OR _cell_length_a != _cell_length_c
OR all _cell_angle_ values != 90. } issue ALERT B



PROC-NAME: THETM_01 (TL)

PURPOSE: To check that _diffrn_reflns_theta_max is greater than expected limits.

PROCEDURE:
CALCULATE

S = SIN [_diffrn_reflns_theta_max] / _diffrn_radiation_wavelength

TEST

IF S < 0.55 issue ALERT A
< 0.575 issue ALERT B
< 0.59 issue ALERT C


PROC-NAME: WEIGH_01

PURPOSE: Check that the value of _refine_ls_weighting_scheme is recognised.

CHECKLIST:
issue ALERT B if no scheme present.