COMCIFS / cif_core

The IUCr CIF core dictionary
15 stars 9 forks source link

cif_core.dic: conflicting _valence_param category definitions #62

Open vaitkus opened 6 years ago

vaitkus commented 6 years ago

Dictionary translation from DDL1 to DDLm seems to have changed the way data items in the _valence_param are interpreted. The following changes were made: 1) Data items _valence_param.atom_1_valence and _valence_param.atom_2_valence were assigned a range limit of [0.0; inf]. 2) Data items _valence_param.atom_1_valence and _valence_param.atom_2_valence were declared as being measured in coulombs; 3) Data item _valence_param_B was asigned a range limit of [0.1:]; 4) Data item _valence_param_Ro was asigned a range limit of [1.0:];

This might seem correct at first glance, but after an inspection of existing CIFs it seems that it conflicts greatly with the way these data items were used in DDL1. The following CIF snippet (taken from http://www.iucr.org/resources/data/data-sets/bond-valence-parameters) provides a good example of how it was used:

loop_
   _valence_param_atom_1
   _valence_param_atom_1_valence
   _valence_param_atom_2
   _valence_param_atom_2_valence
   _valence_param_Ro
   _valence_param_B
   _valence_param_ref_id
   _valence_param_details
Ac 3   O  -2    2.24     0.37     b   ?
Ac 3   O  -2    2.29     0.35     p   ?
Ac 3   F  -1    2.13     0.37     b   ?
Ac 3   F  -1    2.10     0.40     p   ?
...
H  1   O  -2    0.569    0.94     bc  '1.05<O-H<1.70 A, best general value'
H  1   O  -2    0.907    0.28     bc  'O-H < 1.05 A'
H  1   O  -2    0.990    0.59     bc  '1.70 A < O-H'
H  1   O  -2    0.918    0.427    bs  ?
H  1   O  -2    0.925    0.40     az  ?

The following conclusions can be made from the example: a) The range specified in 1) would be correct for the actual valences of the atoms, but from the definition of these data items ("The valence (formal charge) of the atom whose bond valence parameters are given in this category.") and the example it seems that the data names are actually misnomers. If the author of the definitions indeed had formal charges and not valencies in mind negative values should not be forbidden; b) If indeed the data names _valence_param.atom_?_valence provide the formal charge of the atom, measuring them in coulombs is very inconvenient. Maybe an additional unit code 'elementary charge' could be defined? It would probably serve well in the definitions of other data items as well. The example showcases elementary charges already being used; c) Currently the _valence_param.atom_?_valence is defined as real number. I'm not sure what the IUCr policy is on specifying partial charges, but it should probably be modified (or not) in accordance to it; d) I am not sure what limitations the valence-bond model imposes on the R0 and B parameters, but the given example clearly showcases _valence_param_Ro values going below 1. Maybe they should be restricted just to positive values to play it safe?

jamesrhester commented 6 years ago

I agree with these comments. I wil adjust the definitions accordingly. Note that units of 'electrons' are available for use here.

vaitkus commented 6 years ago

Thank You for the corrections.

jamesrhester commented 5 years ago

Units of 'electrons' are not quite right, as '-2' would mean -2 electrons, or a formal charge of +2. I think we can safely say that it is dimensionless until further notice.