I used creator to generate an imgCIF from _b4_1master.h5. In addition to my mail of 03-02-2023 I have some comments:
loop
_axis.id
_axis.type
_axis.equipment
_axis.depends_on
_axis.vector[1]
_axis.vector[2]
_axis.vector[3]
_axis.offset[1]
_axis.offset[2]
_axis.offset[3]
chi rotation goniometer detx -0.0046 0.0372 -0.9993 0 0 0
omega rotation goniometer . 1 0 0 0 0 0
two_theta rotation goniometer . 1 0 0 0 0 0
phi rotation goniometer chi 1 -0.0037 0.002 0 0 0
detx translation detector dety -1 0 0 -166.87357 172.49715 0
dety translation detector trans 0 1 0 0 0 0
trans translation detector omega 0 0 -1 0 0 -287.22243
==> chi should depend on omega
==> in the publication (he4557) _axis.equipment for two_theta was detector, not goniometer
==> trans should depend on two_theta
==> detx should depend on trans
==> dety depends on detx
==> detx vector should be [1 0 0]
==> dety vector should be [0 -1 0]
==> again _diffrn_detector_axis.axis.id is a pointer to axis.id, and thus should be trans
loop
_diffrn_scan_axis.scan_id
_diffrn_scan_axis.axis_id
_diffrn_scan_axis.displacement_start
_diffrn_scan_axis.displacement_increment
_diffrn_scan_axis.displacement_range
_diffrn_scan_axis.angle_start
_diffrn_scan_axis.angle_increment
_diffrn_scan_axis.angle_range
SCAN1 chi . . . 0.0 0 0
SCAN1 omega . . . 0.0 0.1 360.0
SCAN1 phi . . . 0.0 0 0
SCAN1 detx . . . 0.0 0 0
SCAN1 dety . . . 0.0 0 0
SCAN1 trans 287.2224260231453 0 0 . . .
==> only omega is scanned. Leave the other _axis.id out?? I don't mind if they stay in, but normally we use only one scan-axis
The construction with _diffrn_scan_axis and _diifrn_scanframe is different from the one we published (he5447) but seems OK to me.
loop
_diffrn_data_frame.id
_diffrn_data_frame.detector_element_id
_diffrn_data_frame.array_id
_diffrn_data_frame.binary_id
frm1 ELEMENT01 IMAGE01 1
frm2 ELEMENT01 IMAGE01 2
==> I have a question to @jamesrhester : _diffraction_data_frame.id should be a pointer to _array_structure.id but that data name is never given. Is that a problem?
==> Then, _diffrn_data_frame.array_id is also a pointer to _array_structure.id, so should be the same as _diffraction_data_frame.id ?
Now they are IMAGE01 and frm1 respectively.
==> I cannot find _array_data.id in the dictionary?
@jamesrhester can you please look if the construction with pointers to data is complete, not redundant and does not contain unnecessary data items
I used creator to generate an imgCIF from _b4_1master.h5. In addition to my mail of 03-02-2023 I have some comments: loop _axis.id _axis.type _axis.equipment _axis.depends_on _axis.vector[1] _axis.vector[2] _axis.vector[3] _axis.offset[1] _axis.offset[2] _axis.offset[3] chi rotation goniometer detx -0.0046 0.0372 -0.9993 0 0 0
omega rotation goniometer . 1 0 0 0 0 0
two_theta rotation goniometer . 1 0 0 0 0 0
phi rotation goniometer chi 1 -0.0037 0.002 0 0 0
detx translation detector dety -1 0 0 -166.87357 172.49715 0
dety translation detector trans 0 1 0 0 0 0
trans translation detector omega 0 0 -1 0 0 -287.22243
==> chi should depend on omega ==> in the publication (he4557) _axis.equipment for two_theta was detector, not goniometer ==> trans should depend on two_theta ==> detx should depend on trans ==> dety depends on detx ==> detx vector should be [1 0 0] ==> dety vector should be [0 -1 0]
loop_ _array_structure_list_axis.axis_id _array_structure_list_axis.axis_set_id _array_structure_list_axis.displacement _array_structure_list_axis.displacement_increment array_x 1 0.0375 0.075
array_y 2 0.0375 0.075
==> _array_structure_list_axis.axis.id is a pointer to _axis.id above. So I think that array_x should be detx, and likewise for array_y
loop_ _diffrn_detector_axis.axis_id _diffrn_detector_axis.detector_id det_z det1
==> again _diffrn_detector_axis.axis.id is a pointer to axis.id, and thus should be trans loop _diffrn_scan_axis.scan_id _diffrn_scan_axis.axis_id _diffrn_scan_axis.displacement_start _diffrn_scan_axis.displacement_increment _diffrn_scan_axis.displacement_range _diffrn_scan_axis.angle_start _diffrn_scan_axis.angle_increment _diffrn_scan_axis.angle_range SCAN1 chi . . . 0.0 0 0
SCAN1 omega . . . 0.0 0.1 360.0
SCAN1 phi . . . 0.0 0 0
SCAN1 detx . . . 0.0 0 0
SCAN1 dety . . . 0.0 0 0
SCAN1 trans 287.2224260231453 0 0 . . .
==> only omega is scanned. Leave the other _axis.id out?? I don't mind if they stay in, but normally we use only one scan-axis
The construction with _diffrn_scan_axis and _diifrn_scanframe is different from the one we published (he5447) but seems OK to me. loop _diffrn_data_frame.id _diffrn_data_frame.detector_element_id _diffrn_data_frame.array_id _diffrn_data_frame.binary_id frm1 ELEMENT01 IMAGE01 1
frm2 ELEMENT01 IMAGE01 2
==> I have a question to @jamesrhester : _diffraction_data_frame.id should be a pointer to _array_structure.id but that data name is never given. Is that a problem?
==> Then, _diffrn_data_frame.array_id is also a pointer to _array_structure.id, so should be the same as _diffraction_data_frame.id ? Now they are IMAGE01 and frm1 respectively. ==> I cannot find _array_data.id in the dictionary?
@jamesrhester can you please look if the construction with pointers to data is complete, not redundant and does not contain unnecessary data items