##############################################################################
# #
# Image CIF Dictionary (imgCIF) #
# and Crystallographic Binary File Dictionary (CBF) #
# Extending the Macromolecular CIF Dictionary (mmCIF) #
# #
# Version 1.4_DRAFT #
# of 2006-07-04 #
# ################################################################### #
# # *** WARNING *** THIS IS A DRAFT FOR DISCUSSSION *** WARNING *** # #
# # SUBJECT TO CHANGE WITHOUT NOTICE # #
# # VERSIONS WILL BE POSTED AS cif_img_1.4_DDMMMYY_draft.html # #
# # SEND COMMENTS TO imgcif-l@iucr.org CITING THE VERSION # #
# ################################################################### #
# This draft edited by H. J. Bernstein #
# #
# by Andrew P. Hammersley, Herbert J. Bernstein and John D. Westbrook #
# #
# This dictionary was adapted from format discussed at the imgCIF Workshop, #
# held at BNL Oct 1997 and the Crystallographic Binary File Format Draft #
# Proposal by Andrew Hammersley. The first DDL 2.1 Version was created by #
# John Westbrook. This version was drafted by Herbert J. Bernstein and #
# incorporates comments by I. David Brown, John Westbrook, Brian McMahon, #
# Bob Sweet, Paul Ellis, Harry Powell, Wilfred Li, Gotzon Madariaga, #
# Frances C. Bernstein, Chris Nielsen, Nicola Ashcroft and others. #
##############################################################################
data_cif_img.dic
_dictionary.title cif_img.dic
_dictionary.version 1.4_DRAFT
_dictionary.datablock_id cif_img.dic
##############################################################################
# CONTENTS
#
# CATEGORY_GROUP_LIST
# SUB_CATEGORY
#
# category ARRAY_DATA
#
# _array_data.array_id
# _array_data.binary_id
# _array_data.data
#
# category ARRAY_ELEMENT_SIZE
#
# _array_element_size.array_id
# _array_element_size.index
# _array_element_size.size
#
# category ARRAY_INTENSITIES
#
# _array_intensities.array_id
# _array_intensities.binary_id
# _array_intensities.gain
# _array_intensities.gain_esd
# _array_intensities.linearity
# _array_intensities.offset
# _array_intensities.scaling
# _array_intensities.overload
# _array_intensities.undefined_value
# _array_intensities.pixel_fast_bin_size
# _array_intensities.pixel_slow_bin_size
# _array_intensities.pixel_binning_method
#
# category ARRAY_STRUCTURE
#
# _array_structure.byte_order
# _array_structure.compression_type
# _array_structure.encoding_type
# _array_structure.id
#
# category ARRAY_STRUCTURE_LIST
#
# _array_structure_list.axis_set_id
# _array_structure_list.array_id
# _array_structure_list.dimension
# _array_structure_list.direction
# _array_structure_list.index
# _array_structure_list.precedence
#
# category ARRAY_STRUCTURE_LIST_AXIS
#
# _array_structure_list_axis.axis_id
# _array_structure_list_axis.axis_set_id
# _array_structure_list_axis.angle
# _array_structure_list_axis.angle_increment
# _array_structure_list_axis.displacement
# _array_structure_list_axis.displacement_increment
# _array_structure_list_axis.angular_pitch
# _array_structure_list_axis.radial_pitch
#
# category AXIS
#
# _axis.depends_on
# _axis.equipment
# _axis.id
# _axis.offset[1]
# _axis.offset[2]
# _axis.offset[3]
# _axis.type
# _axis.vector[1]
# _axis.vector[2]
# _axis.vector[3]
#
# category DIFFRN_DATA_FRAME
#
# _diffrn_data_frame.array_id
# _diffrn_data_frame.binary_id
# _diffrn_data_frame.detector_element_id
# _diffrn_data_frame.id
# _diffrn_data_frame.details
#
# category DIFFRN_DETECTOR
#
# _diffrn_detector.details
# _diffrn_detector.detector
# _diffrn_detector.diffrn_id
# _diffrn_detector.dtime
# _diffrn_detector.id
# _diffrn_detector.number_of_axes
# _diffrn_detector.type
#
# category DIFFRN_DETECTOR_AXIS
#
# _diffrn_detector_axis.axis_id
# _diffrn_detector_axis.detector_id
#
# category DIFFRN_DETECTOR_ELEMENT
#
# _diffrn_detector_element.center[1]
# _diffrn_detector_element.center[2]
# _diffrn_detector_element.id
# _diffrn_detector_element.detector_id
#
# category DIFFRN_MEASUREMENT
#
# _diffrn_measurement.diffrn_id
# _diffrn_measurement.details
# _diffrn_measurement.device
# _diffrn_measurement.device_details
# _diffrn_measurement.device_type
# _diffrn_measurement.id
# _diffrn_measurement.method
# _diffrn_measurement.number_of_axes
# _diffrn_measurement.specimen_support
#
# category DIFFRN_MEASUREMENT_AXIS
#
# _diffrn_measurement_axis.axis_id
# _diffrn_measurement_axis.measurement_device
# _diffrn_measurement_axis.measurement_id
#
# category DIFFRN_RADIATION
#
# _diffrn_radiation.collimation
# _diffrn_radiation.diffrn_id
# _diffrn_radiation.div_x_source
# _diffrn_radiation.div_y_source
# _diffrn_radiation.div_x_y_source
# _diffrn_radiation.filter_edge'
# _diffrn_radiation.inhomogeneity
# _diffrn_radiation.monochromator
# _diffrn_radiation.polarisn_norm
# _diffrn_radiation.polarisn_ratio
# _diffrn_radiation.polarizn_source_norm
# _diffrn_radiation.polarizn_source_ratio
# _diffrn_radiation.probe
# _diffrn_radiation.type
# _diffrn_radiation.xray_symbol
# _diffrn_radiation.wavelength_id
#
# category DIFFRN_REFLN
#
# _diffrn_refln.frame_id
#
# category DIFFRN_SCAN
#
# _diffrn_scan.id
# _diffrn_scan.date_end
# _diffrn_scan.date_start
# _diffrn_scan.integration_time
# _diffrn_scan.frame_id_start
# _diffrn_scan.frame_id_end
# _diffrn_scan.frames
#
# category DIFFRN_SCAN_AXIS
#
# _diffrn_scan_axis.axis_id
# _diffrn_scan_axis.angle_start
# _diffrn_scan_axis.angle_range
# _diffrn_scan_axis.angle_increment
# _diffrn_scan_axis.angle_rstrt_incr
# _diffrn_scan_axis.displacement_start
# _diffrn_scan_axis.displacement_range
# _diffrn_scan_axis.displacement_increment
# _diffrn_scan_axis.displacement_rstrt_incr
# _diffrn_scan_axis.scan_id
#
# category DIFFRN_SCAN_FRAME
#
# _diffrn_scan_frame.date
# _diffrn_scan_frame.frame_id
# _diffrn_scan_frame.frame_number
# _diffrn_scan_frame.integration_time
# _diffrn_scan_frame.scan_id
#
# category DIFFRN_SCAN_FRAME_AXIS
#
# _diffrn_scan_frame_axis.axis_id
# _diffrn_scan_frame_axis.angle
# _diffrn_scan_frame_axis.angle_increment
# _diffrn_scan_frame_axis.angle_rstrt_incr
# _diffrn_scan_frame_axis.displacement
# _diffrn_scan_frame_axis.displacement_increment
# _diffrn_scan_frame_axis.displacement_rstrt_incr
# _diffrn_scan_frame_axis.frame_id
#
# ***DEPRECATED*** data items
#
# _diffrn_detector_axis.id
# _diffrn_measurement_axis.id
#
# ***DEPRECATED*** category DIFFRN_FRAME_DATA
#
# _diffrn_frame_data.array_id
# _diffrn_frame_data.binary_id
# _diffrn_frame_data.detector_element_id
# _diffrn_frame_data.id
# _diffrn_frame_data.details
#
#
# ITEM_TYPE_LIST
# ITEM_UNITS_LIST
# DICTIONARY_HISTORY
#
##############################################################################
#########################
## CATEGORY_GROUP_LIST ##
#########################
loop_
_category_group_list.id
_category_group_list.parent_id
_category_group_list.description
'inclusive_group' .
; Categories that belong to the dictionary extension.
;
'array_data_group'
'inclusive_group'
; Categories that describe array data.
;
'axis_group'
'inclusive_group'
; Categories that describe axes.
;
'diffrn_group'
'inclusive_group'
; Categories that describe details of the diffraction experiment.
;
##################
## SUB_CATEGORY ##
##################
loop_
_sub_category.id
_sub_category.description
'matrix'
; The collection of elements of a matrix.
;
'vector'
; The collection of elements of a vector.
;
##############
# ARRAY_DATA #
##############
save_ARRAY_DATA
_category.description
; Data items in the ARRAY_DATA category are the containers for
the array data items described in the category ARRAY_STRUCTURE.
;
_category.id array_data
_category.mandatory_code no
loop_
_category_key.name '_array_data.array_id'
'_array_data.binary_id'
loop_
_category_group.id 'inclusive_group'
'array_data_group'
loop_
_category_examples.detail
_category_examples.case
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;
Example 1 -
This example shows two binary data blocks. The first one
was compressed by the CBF_CANONICAL compression algorithm and is
presented as hexadecimal data. The first character 'H' on the
data lines means hexadecimal. It could have been 'O' for octal
or 'D' for decimal. The second character on the line shows
the number of bytes in each word (in this case '4'), which then
requires eight hexadecimal digits per word. The third character
gives the order of octets within a word, in this case '<'
for the ordering 4321 (i.e. 'big-endian'). Alternatively, the
character '>' could have been used for the ordering 1234
(i.e. 'little-endian'). The block has a 'message digest'
to check the integrity of the data.
The second block is similar, but uses CBF_PACKED compression
and BASE64 encoding. Note that the size and the digest are
different.
;
;
loop_
_array_data.array_id
_array_data.binary_id
_array_data.data
image_1 1
;
--CIF-BINARY-FORMAT-SECTION--
Content-Type: application/octet-stream;
conversions="x-CBF_CANONICAL"
Content-Transfer-Encoding: X-BASE16
X-Binary-Size: 3927126
X-Binary-ID: 1
Content-MD5: u2sTJEovAHkmkDjPi+gWsg==
# Hexadecimal encoding, byte 0, byte order ...21
#
H4< 0050B810 00000000 00000000 00000000 000F423F 00000000 00000000 ...
....
--CIF-BINARY-FORMAT-SECTION----
;
image_2 2
;
--CIF-BINARY-FORMAT-SECTION--
Content-Type: application/octet-stream;
conversions="x-CBF-PACKED"
Content-Transfer-Encoding: BASE64
X-Binary-Size: 3745758
X-Binary-ID: 2
Content-MD5: 1zsJjWPfol2GYl2V+QSXrw==
ELhQAAAAAAAA...
...
--CIF-BINARY-FORMAT-SECTION----
;
;
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
save_
save__array_data.array_id
_item_description.description
; This item is a pointer to _array_structure.id in the
ARRAY_STRUCTURE category.
;
_item.name '_array_data.array_id'
_item.category_id array_data
_item.mandatory_code yes
_item_type.code code
save_
save__array_data.binary_id
_item_description.description
; This item is an integer identifier which, along with
_array_data.array_id, should uniquely identify the
particular block of array data.
If _array_data.binary_id is not explicitly given,
it defaults to 1.
The value of _array_data.binary_id distinguishes
among multiple sets of data with the same array
structure.
If the MIME header of the data array specifies a
value for X-Binary-ID, the value of _array_data.binary_id
should be equal to the value given for X-Binary-ID.
;
loop_
_item.name
_item.category_id
_item.mandatory_code
'_array_data.binary_id' array_data
implicit
'_diffrn_data_frame.binary_id' diffrn_data_frame
implicit
'_array_intensities.binary_id' array_intensities
implicit
loop_
_item_linked.child_name
_item_linked.parent_name
'_diffrn_data_frame.binary_id' '_array_data.binary_id'
'_array_intensities.binary_id' '_array_data.binary_id'
_item_default.value 1
_item_type.code int
loop_
_item_range.maximum
_item_range.minimum
1 1
. 1
save_
save__array_data.data
_item_description.description
; The value of _array_data.data contains the array data
encapsulated in a STAR string.
The representation used is a variant on the
Multipurpose Internet Mail Extensions (MIME) specified
in RFC 2045-2049 by N. Freed et al. The boundary
delimiter used in writing an imgCIF or CBF is
'\n--CIF-BINARY-FORMAT-SECTION--' (including the
required initial '\n--').
The Content-Type may be any of the discrete types permitted
in RFC 2045; 'application/octet-stream' is recommended.
If an octet stream was compressed, the compression should
be specified by the parameter 'conversions="x-CBF_PACKED"'
or the parameter 'conversions="x-CBF_CANONICAL"'.
The Content-Transfer-Encoding may be 'BASE64',
'Quoted-Printable', 'X-BASE8', 'X-BASE10',
'X-BASE16' or 'X-BASE32K', for an imgCIF or 'BINARY'
for a CBF. The octal, decimal and hexadecimal transfer
encodings are provided for convenience in debugging and
are not recommended for archiving and data interchange.
In a CIF, one of the parameters 'charset=us-ascii',
'charset=utf-8' or 'charset=utf-16' may be used on the
Content-Transfer-Encoding to specify the character set
used for the external presentation of the encoded data.
If no charset parameter is given, the character set of
the enclosing CIF is assumed. In any case, if a BOM
flag is detected (FE FF for big-endian UTF-16, FF FE for
little-endian UTF-16 or EF BB BF for UTF-8) is detected,
the indicated charset will be assumed until the end of the
encoded data or the detection of a different BOM. The
charset of the Content-Transfer-Encoding is not the character
set of the encoded data, only the character set of the
presentation of the encoded data and should be respecified
for each distinct STAR string.
In an imgCIF file, the encoded binary data begins after
the empty line terminating the header. In an imgCIF file,
the encoded binary data ends with the terminating boundary
delimiter '\n--CIF-BINARY-FORMAT-SECTION----'
in the currently effective charset or with the '\n; '
that terminates the STAR string.
In a CBF, the raw binary data begins after an empty line
terminating the header and after the sequence:
Octet Hex Decimal Purpose
0 0C 12 (ctrl-L) Page break
1 1A 26 (ctrl-Z) Stop listings in MS-DOS
2 04 04 (Ctrl-D) Stop listings in UNIX
3 D5 213 Binary section begins
None of these octets are included in the calculation of
the message size or in the calculation of the
message digest.
The X-Binary-Size header specifies the size of the
equivalent binary data in octets. If compression was
used, this size is the size after compression, including
any book-keeping fields. An adjustment is made for
the deprecated binary formats in which eight bytes of binary
header are used for the compression type. In this case,
the eight bytes used for the compression type are subtracted
from the size, so that the same size will be reported
if the compression type is supplied in the MIME header.
Use of the MIME header is the recommended way to
supply the compression type. In general, no portion of
the binary header is included in the calculation of the size.
The X-Binary-Element-Type header specifies the type of
binary data in the octets, using the same descriptive
phrases as in _array_structure.encoding_type. The default
value is 'unsigned 32-bit integer'.
An MD5 message digest may, optionally, be used. The 'RSA Data
Security, Inc. MD5 Message-Digest Algorithm' should be used.
No portion of the header is included in the calculation of the
message digest.
If the Transfer Encoding is 'X-BASE8', 'X-BASE10' or
'X-BASE16', the data are presented as octal, decimal or
hexadecimal data organized into lines or words. Each word
is created by composing octets of data in fixed groups of
2, 3, 4, 6 or 8 octets, either in the order ...4321 ('big-
endian') or 1234... ('little-endian'). If there are fewer
than the specified number of octets to fill the last word,
then the missing octets are presented as '==' for each
missing octet. Exactly two equal signs are used for each
missing octet even for octal and decimal encoding.
The format of lines is:
rnd xxxxxx xxxxxx xxxxxx
where r is 'H', 'O' or 'D' for hexadecimal, octal or
decimal, n is the number of octets per word and d is '<'
or '>' for the '...4321' and '1234...' octet orderings,
respectively. The '==' padding for the last word should
be on the appropriate side to correspond to the missing
octets, e.g.
H4< FFFFFFFF FFFFFFFF 07FFFFFF ====0000
or
H3> FF0700 00====
For these hexadecimal, octal and decimal formats only,
comments beginning with '#' are permitted to improve
readability.
BASE64 encoding follows MIME conventions. Octets are
in groups of three: c1, c2, c3. The resulting 24 bits
are broken into four six-bit quantities, starting with
the high-order six bits (c1 >> 2) of the first octet, then
the low-order two bits of the first octet followed by the
high-order four bits of the second octet [(c1 & 3)<<4 | (c2>>4)],
then the bottom four bits of the second octet followed by the
high-order two bits of the last octet [(c2 & 15)<<2 | (c3>>6)],
then the bottom six bits of the last octet (c3 & 63). Each
of these four quantities is translated into an ASCII character
using the mapping:
1 2 3 4 5 6
0123456789012345678901234567890123456789012345678901234567890123
| | | | | | |
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
With short groups of octets padded on the right with one '='
if c3 is missing, and with '==' if both c2 and c3 are missing.
X-BASE32K encoding is similar to BASE64 encoding, except that
sets of 15 octets are encoded as sets of 8 16-bit unicode
characters, by breaking the 120 bits into 8 15-bit quantities.
256 is added to each 15 bit quantity to bring it into a
printable uncode range. When encoding, zero padding is used
to fill out the last 15 bit quantity. If 8 or more bits of
padding are used, a single equals sign (hexadecimal 003D) is
appended. Embedded whitespace and newlines are introduced
to produce lines of no more than 80 characters each. On
decoding, all printable ascii characters and ascii whitespace
characters are ignored except for any trailing equals signs.
The number of trailing equals signs indicated the number of
trailing octets to be trimmed from the end of the decoded data.
(see Georgi Darakev, Vassil Litchev, Kostadin Z. Mitev, Herbert
J. Bernstein, 'Efficient Support of Binary Data in the XML
Implementation of the NeXus File Format',absract W0165,
ACA Summer Meeting, Honolulu, HI, July 2006).
QUOTED-PRINTABLE encoding also follows MIME conventions, copying
octets without translation if their ASCII values are 32...38,
42, 48...57, 59, 60, 62, 64...126 and the octet is not a ';'
in column 1. All other characters are translated to =nn, where
nn is the hexadecimal encoding of the octet. All lines are
'wrapped' with a terminating '=' (i.e. the MIME conventions
for an implicit line terminator are never used).
;
_item.name '_array_data.data'
_item.category_id array_data
_item.mandatory_code yes
_item_type.code binary
save_
######################
# ARRAY_ELEMENT_SIZE #
######################
save_ARRAY_ELEMENT_SIZE
_category.description
; Data items in the ARRAY_ELEMENT_SIZE category record the physical
size of array elements along each array dimension.
;
_category.id array_element_size
_category.mandatory_code no
loop_
_category_key.name '_array_element_size.array_id'
'_array_element_size.index'
loop_
_category_group.id 'inclusive_group'
'array_data_group'
loop_
_category_examples.detail
_category_examples.case
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Example 1 - A regular 2D array with a uniform element dimension
of 1220 nanometres.
;
;
loop_
_array_element_size.array_id
_array_element_size.index
_array_element_size.size
image_1 1 1.22e-6
image_1 2 1.22e-6
;
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
save_
save__array_element_size.array_id
_item_description.description
; This item is a pointer to _array_structure.id in the
ARRAY_STRUCTURE category.
;
_item.name '_array_element_size.array_id'
_item.category_id array_element_size
_item.mandatory_code yes
_item_type.code code
save_
save__array_element_size.index
_item_description.description
; This item is a pointer to _array_structure_list.index in
the ARRAY_STRUCTURE_LIST category.
;
_item.name '_array_element_size.index'
_item.category_id array_element_size
_item.mandatory_code yes
_item_type.code code
save_
save__array_element_size.size
_item_description.description
; The size in metres of an image element in this
dimension. This supposes that the elements are arranged
on a regular grid.
;
_item.name '_array_element_size.size'
_item.category_id array_element_size
_item.mandatory_code yes
_item_type.code float
_item_units.code 'metres'
loop_
_item_range.maximum
_item_range.minimum
. 0.0
save_
#####################
# ARRAY_INTENSITIES #
#####################
save_ARRAY_INTENSITIES
_category.description
; Data items in the ARRAY_INTENSITIES category record the
information required to recover the intensity data from
the set of data values stored in the ARRAY_DATA category.
The detector may have a complex relationship
between the raw intensity values and the number of
incident photons. In most cases, the number stored
in the final array will have a simple linear relationship
to the actual number of incident photons, given by
_array_intensities.gain. If raw, uncorrected values
are presented (e.g. for calibration experiments), the
value of _array_intensities.linearity will be 'raw'
and _array_intensities.gain will not be used.
;
_category.id array_intensities
_category.mandatory_code no
loop_
_category_key.name '_array_intensities.array_id'
'_array_intensities.binary_id'
loop_
_category_group.id 'inclusive_group'
'array_data_group'
loop_
_category_examples.detail
_category_examples.case
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;
Example 1
;
;
loop_
_array_intensities.array_id
_array_intensities.linearity
_array_intensities.gain
_array_intensities.overload
_array_intensities.undefined_value
_array_intensities.pixel_fast_bin_size
_array_intensities.pixel_slow_bin_size
_array_intensities.pixel_binning_method
image_1 linear 1.2 655535 0 2 2 hardware
;
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
save_
save__array_intensities.array_id
_item_description.description
; This item is a pointer to _array_structure.id in the
ARRAY_STRUCTURE category.
;
_item.name '_array_intensities.array_id'
_item.category_id array_intensities
_item.mandatory_code yes
_item_type.code code
save_
save__array_intensities.binary_id
_item_description.description
; This item is a pointer to _array_data.binary_id in the
ARRAY_DATA category.
;
_item.name '_array_intensities.binary_id'
_item.category_id array_intensities
_item.mandatory_code implicit
_item_type.code int
save_
save__array_intensities.gain
_item_description.description
; Detector 'gain'. The factor by which linearized
intensity count values should be divided to produce
true photon counts.
;
_item.name '_array_intensities.gain'
_item.category_id array_intensities
_item.mandatory_code yes
_item_type.code float
loop_
_item_range.maximum
_item_range.minimum
. 0.0
_item_units.code 'counts_per_photon'
loop_
_item_related.related_name
_item_related.function_code '_array_intensities.gain_esd'
'associated_value'
save_
save__array_intensities.gain_esd
_item_description.description
; The estimated standard deviation in detector 'gain'.
;
_item.name '_array_intensities.gain_esd'
_item.category_id array_intensities
_item.mandatory_code yes
_item_type.code float
loop_
_item_range.maximum
_item_range.minimum
. 0.0
_item_units.code 'counts_per_photon'
loop_
_item_related.related_name
_item_related.function_code '_array_intensities.gain'
'associated_esd'
save_
save__array_intensities.linearity
_item_description.description
; The intensity linearity scaling method used to convert
from the raw intensity to the stored element value:
'linear' is linear.
'offset' means that the value defined by
_array_intensities.offset should be added to each
element value.
'scaling' means that the value defined by
_array_intensities.scaling should be multiplied with each
element value.
'scaling_offset' is the combination of the two previous cases,
with the scale factor applied before the offset value.
'sqrt_scaled' means that the square root of raw
intensities multiplied by _array_intensities.scaling is
calculated and stored, perhaps rounded to the nearest
integer. Thus, linearization involves dividing the stored
values by _array_intensities.scaling and squaring the
result.
'logarithmic_scaled' means that the logarithm base 10 of
raw intensities multiplied by _array_intensities.scaling
is calculated and stored, perhaps rounded to the nearest
integer. Thus, linearization involves dividing the stored
values by _array_intensities.scaling and calculating 10
to the power of this number.
'raw' means that the data are a set of raw values straight
from the detector.
;
_item.name '_array_intensities.linearity'
_item.category_id array_intensities
_item.mandatory_code yes
_item_type.code code
loop_
_item_enumeration.value
_item_enumeration.detail
'linear' .
'offset'
; The value defined by _array_intensities.offset should
be added to each element value.
;
'scaling'
; The value defined by _array_intensities.scaling should be
multiplied with each element value.
;
'scaling_offset'
; The combination of the scaling and offset
with the scale factor applied before the offset value.
;
'sqrt_scaled'
; The square root of raw intensities multiplied by
_array_intensities.scaling is calculated and stored,
perhaps rounded to the nearest integer. Thus,
linearization involves dividing the stored
values by _array_intensities.scaling and squaring the
result.
;
'logarithmic_scaled'
; The logarithm base 10 of raw intensities multiplied by
_array_intensities.scaling is calculated and stored,
perhaps rounded to the nearest integer. Thus,
linearization involves dividing the stored values by
_array_intensities.scaling and calculating 10 to the
power of this number.
;
'raw'
; The array consists of raw values to which no corrections have
been applied. While the handling of the data is similar to
that given for 'linear' data with no offset, the meaning of
the data differs in that the number of incident photons is
not necessarily linearly related to the number of counts
reported. This value is intended for use either in
calibration experiments or to allow for handling more
complex data-fitting algorithms than are allowed for by
this data item.
;
save_
save__array_intensities.offset
_item_description.description
; Offset value to add to array element values in the manner
described by the item _array_intensities.linearity.
;
_item.name '_array_intensities.offset'
_item.category_id array_intensities
_item.mandatory_code no
_item_type.code float
save_
save__array_intensities.overload
_item_description.description
; The saturation intensity level for this data array.
;
_item.name '_array_intensities.overload'
_item.category_id array_intensities
_item.mandatory_code no
_item_type.code float
_item_units.code 'counts'
save_
save__array_intensities.pixel_fast_bin_size
_item_description.description
; The value of _array_intensities.pixel_fast_bin_size specifies
the number of pixels that compose one element in the direction
of the most rapidly varying array dimension.
Typical values are 1, 2, 4 or 8. When there is 1 pixel per
array element in both directions, the value given for
_array_intensities.pixel_binning_method normally should be
'none'.
It is specified as a float to allow for binning algorithms that
create array elements that are not integer multiples of the
detector pixel size.
;
_item.name '_array_intensities.pixel_fast_bin_size'
_item.category_id array_intensities
_item.mandatory_code implicit
_item_type.code float
_item_default.value 1.
loop_
_item_range.maximum
_item_range.minimum
. 0.0
_item_units.code 'pixels_per_element'
save_
save__array_intensities.pixel_slow_bin_size
_item_description.description
; The value of _array_intensities.pixel_slow_bin_size specifies
the number of pixels that compose one element in the direction
of the second most rapidly varying array dimension.
Typical values are 1, 2, 4 or 8. When there is 1 pixel per
array element in both directions, the value given for
_array_intensities.pixel_binning_method normally should be
'none'.
It is specified as a float to allow for binning algorithms that
create array elements that are not integer multiples of the
detector pixel size.
;
_item.name '_array_intensities.pixel_slow_bin_size'
_item.category_id array_intensities
_item.mandatory_code implicit
_item_type.code float
_item_default.value 1.
loop_
_item_range.maximum
_item_range.minimum
. 0.0
_item_units.code 'pixels_per_element'
save_
save__array_intensities.pixel_binning_method
_item_description.description
; The value of _array_intensities.pixel_binning_method specifies
the method used to derive array elements from multiple pixels.
;
_item.name '_array_intensities.pixel_binning_method'
_item.category_id array_intensities
_item.mandatory_code implicit
_item_type.code code
loop_
_item_enumeration.value
_item_enumeration.detail
'hardware'
; The element intensities were derived from the raw data of one
or more pixels by used of hardware in the detector, e.g. by use
of shift registers in a CCD to combine pixels into super-pixels.
;
'software'
; The element intensities were derived from the raw data of more
than one pixel by use of software.
;
'combined'
; The element intensities were derived from the raw data of more
than one pixel by use of both hardware and software, as when
hardware binning is used in one direction and software in the
other.
;
'none'
; In the both directions, the data has not been binned. The
number of pixels is equal to the number of elements.
When the value of _array_intensities.pixel_binning_method is
'none' the values of _array_intensities.pixel_fast_bin_size
and _array_intensities.pixel_slow_bin_size both must be 1.
;
'unspecified'
; The method used to derive element intensities is not specified.
;
_item_default.value 'unspecified'
save_
save__array_intensities.scaling
_item_description.description
; Multiplicative scaling value to be applied to array data
in the manner described by item
_array_intensities.linearity.
;
_item.name '_array_intensities.scaling'
_item.category_id array_intensities
_item.mandatory_code no
_item_type.code float
save_
save__array_intensities.undefined_value
_item_description.description
; A value to be substituted for undefined values in
the data array.
;
_item.name '_array_intensities.undefined_value'
_item.category_id array_intensities
_item.mandatory_code no
_item_type.code float
save_
###################
# ARRAY_STRUCTURE #
###################
save_ARRAY_STRUCTURE
_category.description
; Data items in the ARRAY_STRUCTURE category record the organization and
encoding of array data that may be stored in the ARRAY_DATA category.
;
_category.id array_structure
_category.mandatory_code no
_category_key.name '_array_structure.id'
loop_
_category_group.id 'inclusive_group'
'array_data_group'
loop_
_category_examples.detail
_category_examples.case
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Example 1 -
;
;
loop_
_array_structure.id
_array_structure.encoding_type
_array_structure.compression_type
_array_structure.byte_order
image_1 "unsigned 16-bit integer" none little_endian
;
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
save_
save__array_structure.byte_order
_item_description.description
; The order of bytes for integer values which require more
than 1 byte.
(IBM-PC's and compatibles and DEC VAXs use low-byte-first
ordered integers, whereas Hewlett Packard 700
series, Sun-4 and Silicon Graphics use high-byte-first
ordered integers. DEC Alphas can produce/use either
depending on a compiler switch.)
;
_item.name '_array_structure.byte_order'
_item.category_id array_structure
_item.mandatory_code yes
_item_type.code code
loop_
_item_enumeration.value
_item_enumeration.detail
'big_endian'
; The first byte in the byte stream of the bytes which make up an
integer value is the most significant byte of an integer.
;
'little_endian'
; The last byte in the byte stream of the bytes which make up an
integer value is the most significant byte of an integer.
;
save_
save__array_structure.compression_type
_item_description.description
; Type of data-compression method used to compress the array
data.
;
_item.name '_array_structure.compression_type'
_item.category_id array_structure
_item.mandatory_code no
_item_type.code code
_item_default.value 'none'
loop_
_item_enumeration.value
_item_enumeration.detail
'none'
; Data are stored in normal format as defined by
_array_structure.encoding_type and
_array_structure.byte_order.
;
'packed'
; Using the 'packed' compression scheme, a CCP4-style packing
(International Tables for Crystallography Volume G,
Section 5.6.3.2)
;
'canonical'
; Using the 'canonical' compression scheme (International Tables
for Crystallography Volume G, Section 5.6.3.1)
;
save_
save__array_structure.encoding_type
_item_description.description
; Data encoding of a single element of array data.
In several cases, the IEEE format is referenced.
See IEEE Standard 754-1985 (IEEE, 1985).
Ref: IEEE (1985). IEEE Standard for Binary Floating-Point
Arithmetic. ANSI/IEEE Std 754-1985. New York: Institute of
Electrical and Electronics Engineers.
;
_item.name '_array_structure.encoding_type'
_item.category_id array_structure
_item.mandatory_code yes
_item_type.code uline
loop_
_item_enumeration.value
'unsigned 8-bit integer'
'signed 8-bit integer'
'unsigned 16-bit integer'
'signed 16-bit integer'
'unsigned 32-bit integer'
'signed 32-bit integer'
'signed 32-bit real IEEE'
'signed 64-bit real IEEE'
'signed 32-bit complex IEEE'
save_
save__array_structure.id
_item_description.description
; The value of _array_structure.id must uniquely identify
each item of array data.
;
loop_
_item.name
_item.category_id
_item.mandatory_code
'_array_structure.id' array_structure yes
'_array_data.array_id' array_data yes
'_array_structure_list.array_id' array_structure_list yes
'_array_intensities.array_id' array_intensities yes
'_diffrn_data_frame.array_id' diffrn_data_frame yes
_item_type.code code
loop_
_item_linked.child_name
_item_linked.parent_name
'_array_data.array_id' '_array_structure.id'
'_array_structure_list.array_id' '_array_structure.id'
'_array_intensities.array_id' '_array_structure.id'
'_diffrn_data_frame.array_id' '_array_structure.id'
save_
########################
# ARRAY_STRUCTURE_LIST #
########################
save_ARRAY_STRUCTURE_LIST
_category.description
; Data items in the ARRAY_STRUCTURE_LIST category record the size
and organization of each array dimension.
The relationship to physical axes may be given.
;
_category.id array_structure_list
_category.mandatory_code no
loop_
_category_key.name '_array_structure_list.array_id'
'_array_structure_list.index'
loop_
_category_group.id 'inclusive_group'
'array_data_group'
loop_
_category_examples.detail
_category_examples.case
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Example 1 - An image array of 1300 x 1200 elements. The raster
order of the image is left to right (increasing) in the
first dimension and bottom to top (decreasing) in
the second dimension.
;
;
loop_
_array_structure_list.array_id
_array_structure_list.index
_array_structure_list.dimension
_array_structure_list.precedence
_array_structure_list.direction
_array_structure_list.axis_set_id
image_1 1 1300 1 increasing ELEMENT_X
image_1 2 1200 2 decreasing ELEMENY_Y
;
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
save_
save__array_structure_list.array_id
_item_description.description
; This item is a pointer to _array_structure.id in the
ARRAY_STRUCTURE category.
;
_item.name '_array_structure_list.array_id'
_item.category_id array_structure_list
_item.mandatory_code yes
_item_type.code code
save_
save__array_structure_list.axis_set_id
_item_description.description
; This is a descriptor for the physical axis or set of axes
corresponding to an array index.
This data item is related to the axes of the detector
itself given in DIFFRN_DETECTOR_AXIS, but usually differs
in that the axes in this category are the axes of the
coordinate system of reported data points, while the axes in
DIFFRN_DETECTOR_AXIS are the physical axes
of the detector describing the 'poise' of the detector as an
overall physical object.
If there is only one axis in the set, the identifier of
that axis should be used as the identifier of the set.
;
loop_
_item.name
_item.category_id
_item.mandatory_code
'_array_structure_list.axis_set_id'
array_structure_list yes
'_array_structure_list_axis.axis_set_id'
array_structure_list_axis implicit
_item_type.code code
loop_
_item_linked.child_name
_item_linked.parent_name
'_array_structure_list_axis.axis_set_id'
'_array_structure_list.axis_set_id'
save_
save__array_structure_list.dimension
_item_description.description
; The number of elements stored in the array structure in this
dimension.
;
_item.name '_array_structure_list.dimension'
_item.category_id array_structure_list
_item.mandatory_code yes
_item_type.code int
loop_
_item_range.maximum
_item_range.minimum
1 1
. 1
save_
save__array_structure_list.direction
_item_description.description
; Identifies the direction in which this array index changes.
;
_item.name '_array_structure_list.direction'
_item.category_id array_structure_list
_item.mandatory_code yes
_item_type.code code
loop_
_item_enumeration.value
_item_enumeration.detail
'increasing'
; Indicates the index changes from 1 to the maximum dimension.
;
'decreasing'
; Indicates the index changes from the maximum dimension to 1.
;
save_
save__array_structure_list.index
_item_description.description
; Identifies the one-based index of the row or column in the
array structure.
;
loop_
_item.name
_item.category_id
_item.mandatory_code
'_array_structure_list.index' array_structure_list yes
'_array_structure_list.precedence' array_structure_list yes
'_array_element_size.index' array_element_size yes
_item_type.code int
loop_
_item_linked.child_name
_item_linked.parent_name
'_array_element_size.index' '_array_structure_list.index'
loop_
_item_range.maximum
_item_range.minimum
1 1
. 1
save_
save__array_structure_list.precedence
_item_description.description
; Identifies the rank order in which this array index changes
with respect to other array indices. The precedence of 1
indicates the index which changes fastest.
;
_item.name '_array_structure_list.precedence'
_item.category_id array_structure_list
_item.mandatory_code yes
_item_type.code int
loop_
_item_range.maximum
_item_range.minimum
1 1
. 1
save_
#############################
# ARRAY_STRUCTURE_LIST_AXIS #
#############################
save_ARRAY_STRUCTURE_LIST_AXIS
_category.description
; Data items in the ARRAY_STRUCTURE_LIST_AXIS category describe
the physical settings of sets of axes for the centres of pixels that
correspond to data points described in the
ARRAY_STRUCTURE_LIST category.
In the simplest cases, the physical increments of a single axis correspond
to the increments of a single array index. More complex organizations,
e.g. spiral scans, may require coupled motions along multiple axes.
Note that a spiral scan uses two coupled axes: one for the angular
direction and one for the radial direction. This differs from a
cylindrical scan for which the two axes are not coupled into one set.
;
_category.id array_structure_list_axis
_category.mandatory_code no
loop_
_category_key.name
'_array_structure_list_axis.axis_set_id'
'_array_structure_list_axis.axis_id'
loop_
_category_group.id 'inclusive_group'
'array_data_group'
save_
save__array_structure_list_axis.axis_id
_item_description.description
; The value of this data item is the identifier of one of
the axes in the set of axes for which settings are being
specified.
Multiple axes may be specified for the same value of
_array_structure_list_axis.axis_set_id.
This item is a pointer to _axis.id in the
AXIS category.
;
_item.name '_array_structure_list_axis.axis_id'
_item.category_id array_structure_list_axis
_item.mandatory_code yes
_item_type.code code
save_
save__array_structure_list_axis.axis_set_id
_item_description.description
; The value of this data item is the identifier of the
set of axes for which axis settings are being specified.
Multiple axes may be specified for the same value of
_array_structure_list_axis.axis_set_id.
This item is a pointer to
_array_structure_list.axis_set_id
in the ARRAY_STRUCTURE_LIST category.
If this item is not specified, it defaults to the corresponding
axis identifier.
;
_item.name '_array_structure_list_axis.axis_set_id'
_item.category_id array_structure_list_axis
_item.mandatory_code implicit
_item_type.code code
save_
save__array_structure_list_axis.angle
_item_description.description
; The setting of the specified axis in degrees for the first
data point of the array index with the corresponding value
of _array_structure_list.axis_set_id. If the index is
specified as 'increasing', this will be the centre of the
pixel with index value 1. If the index is specified as
'decreasing', this will be the centre of the pixel with
maximum index value.
;
_item.name '_array_structure_list_axis.angle'
_item.category_id array_structure_list_axis
_item.mandatory_code no
_item_default.value 0.0
_item_type.code float
_item_units.code 'degrees'
save_
save__array_structure_list_axis.angle_increment
_item_description.description
; The pixel-centre-to-pixel-centre increment in the angular
setting of the specified axis in degrees. This is not
meaningful in the case of 'constant velocity' spiral scans
and should not be specified for this case.
See _array_structure_list_axis.angular_pitch.
;
_item.name '_array_structure_list_axis.angle_increment'
_item.category_id array_structure_list_axis
_item.mandatory_code no
_item_default.value 0.0
_item_type.code float
_item_units.code 'degrees'
save_
save__array_structure_list_axis.displacement
_item_description.description
; The setting of the specified axis in millimetres for the first
data point of the array index with the corresponding value
of _array_structure_list.axis_set_id. If the index is
specified as 'increasing', this will be the centre of the
pixel with index value 1. If the index is specified as
'decreasing', this will be the centre of the pixel with
maximum index value.
;
_item.name '_array_structure_list_axis.displacement'
_item.category_id array_structure_list_axis
_item.mandatory_code no
_item_default.value 0.0
_item_type.code float
_item_units.code 'millimetres'
save_
save__array_structure_list_axis.displacement_increment
_item_description.description
; The pixel-centre-to-pixel-centre increment for the displacement
setting of the specified axis in millimetres.
;
_item.name
'_array_structure_list_axis.displacement_increment'
_item.category_id array_structure_list_axis
_item.mandatory_code no
_item_default.value 0.0
_item_type.code float
_item_units.code 'millimetres'
save_
save__array_structure_list_axis.angular_pitch
_item_description.description
; The pixel-centre-to-pixel-centre distance for a one-step
change in the setting of the specified axis in millimetres.
This is meaningful only for 'constant velocity' spiral scans
or for uncoupled angular scans at a constant radius
(cylindrical scans) and should not be specified for cases
in which the angle between pixels (rather than the distance
between pixels) is uniform.
See _array_structure_list_axis.angle_increment.
;
_item.name '_array_structure_list_axis.angular_pitch'
_item.category_id array_structure_list_axis
_item.mandatory_code no
_item_default.value 0.0
_item_type.code float
_item_units.code 'millimetres'
save_
save__array_structure_list_axis.radial_pitch
_item_description.description
; The radial distance from one 'cylinder' of pixels to the
next in millimetres. If the scan is a 'constant velocity'
scan with differing angular displacements between pixels,
the value of this item may differ significantly from the
value of _array_structure_list_axis.displacement_increment.
;
_item.name '_array_structure_list_axis.radial_pitch'
_item.category_id array_structure_list_axis
_item.mandatory_code no
_item_default.value 0.0
_item_type.code float
_item_units.code 'millimetres'
save_
########
# AXIS #
########
save_AXIS
_category.description
; Data items in the AXIS category record the information required
to describe the various goniometer, detector, source and other
axes needed to specify a data collection. The location of each
axis is specified by two vectors: the axis itself, given as a unit
vector, and an offset to the base of the unit vector. These vectors
are referenced to a right-handed laboratory coordinate system with
its origin in the sample or specimen:
| Y (to complete right-handed system)
|
|
|
|
|
|________________X
/ principal goniometer axis
/
/
/
/
/Z (to source)
Axis 1 (X): The X-axis is aligned to the mechanical axis pointing from
the sample or specimen along the principal axis of the goniometer.
Axis 2 (Y): The Y-axis completes an orthogonal right-handed system
defined by the X-axis and the Z-axis (see below).
Axis 3 (Z): The Z-axis is derived from the source axis which goes from
the sample to the source. The Z-axis is the component of the source axis
in the direction of the source orthogonal to the X-axis in the plane
defined by the X-axis and the source axis.
These axes are based on the goniometer, not on the orientation of the
detector, gravity etc. The vectors necessary to specify all other
axes are given by sets of three components in the order (X, Y, Z).
If the axis involved is a rotation axis, it is right-handed, i.e. as
one views the object to be rotated from the origin (the tail) of the
unit vector, the rotation is clockwise. If a translation axis is
specified, the direction of the unit vector specifies the sense of
positive translation.
Note: This choice of coordinate system is similar to but significantly
different from the choice in MOSFLM (Leslie & Powell, 2004). In MOSFLM,
X is along the X-ray beam (the CBF/imgCIF Z axis) and Z is along the
rotation axis.
All rotations are given in degrees and all translations are given in mm.
Axes may be dependent on one another. The X-axis is the only goniometer
axis the direction of which is strictly connected to the hardware. All
other axes are specified by the positions they would assume when the
axes upon which they depend are at their zero points.
When specifying detector axes, the axis is given to the beam centre.
The location of the beam centre on the detector should be given in the
DIFFRN_DETECTOR category in distortion-corrected millimetres from
the (0,0) corner of the detector.
It should be noted that many different origins arise in the definition
of an experiment. In particular, as noted above, it is necessary to
specify the location of the beam centre on the detector in terms
of the origin of the detector, which is, of course, not coincident
with the centre of the sample.
Ref: Leslie, A. G. W. & Powell, H. (2004). MOSFLM v6.11.
MRC Laboratory of Molecular Biology, Hills Road, Cambridge, England.
http://www.CCP4.ac.uk/dist/x-windows/Mosflm/.
;
_category.id axis
_category.mandatory_code no
loop_
_category_key.name '_axis.id'
'_axis.equipment'
loop_
_category_group.id 'inclusive_group'
'axis_group'
'diffrn_group'
loop_
_category_examples.detail
_category_examples.case
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Example 1 -
This example shows the axis specification of the axes of a kappa-
geometry goniometer [see Stout, G. H. & Jensen, L. H. (1989). X-ray
structure determination. A practical
guide, 2nd ed. p. 134. New York: Wiley Interscience].
There are three axes specified, and no offsets. The outermost axis,
omega, is pointed along the X axis. The next innermost axis, kappa,
is at a 50 degree angle to the X axis, pointed away from the source.
The innermost axis, phi, aligns with the X axis when omega and
phi are at their zero points. If T-omega, T-kappa and T-phi
are the transformation matrices derived from the axis settings,
the complete transformation would be:
x' = (T-omega) (T-kappa) (T-phi) x
;
;
loop_
_axis.id
_axis.type
_axis.equipment
_axis.depends_on
_axis.vector[1] _axis.vector[2] _axis.vector[3]
omega rotation goniometer . 1 0 0
kappa rotation goniometer omega -.64279 0 -.76604
phi rotation goniometer kappa 1 0 0
;
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Example 2 -
This example show the axis specification of the axes of a
detector, source and gravity. The order has been changed as a
reminder that the ordering of presentation of tokens is not
significant. The centre of rotation of the detector has been taken
to be 68 millimetres in the direction away from the source.
;
;
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]
source . source . 0 0 1 . . .
gravity . gravity . 0 -1 0 . . .
tranz translation detector rotz 0 0 1 0 0 -68
twotheta rotation detector . 1 0 0 . . .
roty rotation detector twotheta 0 1 0 0 0 -68
rotz rotation detector roty 0 0 1 0 0 -68
;
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
save_
save__axis.depends_on
_item_description.description
; The value of _axis.depends_on specifies the next outermost
axis upon which this axis depends.
This item is a pointer to _axis.id in the same category.
;
_item.name '_axis.depends_on'
_item.category_id axis
_item.mandatory_code no
save_
save__axis.equipment
_item_description.description
; The value of _axis.equipment specifies the type of
equipment using the axis: 'goniometer', 'detector',
'gravity', 'source' or 'general'.
;
_item.name '_axis.equipment'
_item.category_id axis
_item.mandatory_code no
_item_type.code ucode
_item_default.value general
loop_
_item_enumeration.value
_item_enumeration.detail goniometer
'equipment used to orient or position samples'
detector
'equipment used to detect reflections'
general
'equipment used for general purposes'
gravity
'axis specifying the downward direction'
source
'axis specifying the direction sample to source'
save_
save__axis.offset[1]
_item_description.description
; The [1] element of the three-element vector used to specify
the offset to the base of a rotation or translation axis.
The vector is specified in millimetres.
;
_item.name '_axis.offset[1]'
_item.category_id axis
_item.mandatory_code no
_item_default.value 0.0
_item_sub_category.id vector
_item_type.code float
_item_units.code millimetres
save_
save__axis.offset[2]
_item_description.description
; The [2] element of the three-element vector used to specify
the offset to the base of a rotation or translation axis.
The vector is specified in millimetres.
;
_item.name '_axis.offset[2]'
_item.category_id axis
_item.mandatory_code no
_item_default.value 0.0
_item_sub_category.id vector
_item_type.code float
_item_units.code millimetres
save_
save__axis.offset[3]
_item_description.description
; The [3] element of the three-element vector used to specify
the offset to the base of a rotation or translation axis.
The vector is specified in millimetres.
;
_item.name '_axis.offset[3]'
_item.category_id axis
_item.mandatory_code no
_item_default.value 0.0
_item_sub_category.id vector
_item_type.code float
_item_units.code millimetres
save_
save__axis.id
_item_description.description
; The value of _axis.id must uniquely identify
each axis relevant to the experiment. Note that multiple
pieces of equipment may share the same axis (e.g. a twotheta
arm), so the category key for AXIS also includes the
equipment.
;
loop_
_item.name
_item.category_id
_item.mandatory_code
'_axis.id' axis yes
'_array_structure_list_axis.axis_id'
array_structure_list_axis
yes
'_diffrn_detector_axis.axis_id' diffrn_detector_axis yes
'_diffrn_measurement_axis.axis_id' diffrn_measurement_axis yes
'_diffrn_scan_axis.axis_id' diffrn_scan_axis yes
'_diffrn_scan_frame_axis.axis_id' diffrn_scan_frame_axis yes
_item_type.code code
loop_
_item_linked.child_name
_item_linked.parent_name
'_axis.depends_on' '_axis.id'
'_array_structure_list_axis.axis_id' '_axis.id'
'_diffrn_detector_axis.axis_id' '_axis.id'
'_diffrn_measurement_axis.axis_id' '_axis.id'
'_diffrn_scan_axis.axis_id' '_axis.id'
'_diffrn_scan_frame_axis.axis_id' '_axis.id'
save_
save__axis.type
_item_description.description
; The value of _axis.type specifies the type of
axis: 'rotation' or 'translation' (or 'general' when
the type is not relevant, as for gravity).
;
_item.name '_axis.type'
_item.category_id axis
_item.mandatory_code no
_item_type.code ucode
_item_default.value general
loop_
_item_enumeration.value
_item_enumeration.detail rotation
'right-handed axis of rotation'
translation
'translation in the direction of the axis'
general
'axis for which the type is not relevant'
save_
save__axis.vector[1]
_item_description.description
; The [1] element of the three-element vector used to specify
the direction of a rotation or translation axis.
The vector should be normalized to be a unit vector and
is dimensionless.
;
_item.name '_axis.vector[1]'
_item.category_id axis
_item.mandatory_code no
_item_default.value 0.0
_item_sub_category.id vector
_item_type.code float
save_
save__axis.vector[2]
_item_description.description
; The [2] element of the three-element vector used to specify
the direction of a rotation or translation axis.
The vector should be normalized to be a unit vector and
is dimensionless.
;
_item.name '_axis.vector[2]'
_item.category_id axis
_item.mandatory_code no
_item_default.value 0.0
_item_sub_category.id vector
_item_type.code float
save_
save__axis.vector[3]
_item_description.description
; The [3] element of the three-element vector used to specify
the direction of a rotation or translation axis.
The vector should be normalized to be a unit vector and
is dimensionless.
;
_item.name '_axis.vector[3]'
_item.category_id axis
_item.mandatory_code no
_item_default.value 0.0
_item_sub_category.id vector
_item_type.code float
save_
#####################
# DIFFRN_DATA_FRAME #
#####################
save_DIFFRN_DATA_FRAME
_category.description
; Data items in the DIFFRN_DATA_FRAME category record
the details about each frame of data.
The items in this category were previously in a
DIFFRN_FRAME_DATA category, which is now deprecated.
The items from the old category are provided
as aliases but should not be used for new work.
;
_category.id diffrn_data_frame
_category.mandatory_code no
loop_
_category_key.name '_diffrn_data_frame.id'
'_diffrn_data_frame.detector_element_id'
loop_
_category_group.id 'inclusive_group'
'array_data_group'
loop_
_category_examples.detail
_category_examples.case
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Example 1 - A frame containing data from 4 frame elements.
Each frame element has a common array configuration
'array_1' described in ARRAY_STRUCTURE and related
categories. The data for each detector element are
stored in four groups of binary data in the
ARRAY_DATA category, linked by the array_id and
binary_id.
;
;
loop_
_diffrn_data_frame.id
_diffrn_data_frame.detector_element_id
_diffrn_data_frame.array_id
_diffrn_data_frame.binary_id
frame_1 d1_ccd_1 array_1 1
frame_1 d1_ccd_2 array_1 2
frame_1 d1_ccd_3 array_1 3
frame_1 d1_ccd_4 array_1 4
;
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
save_
save__diffrn_data_frame.array_id
_item_description.description
; This item is a pointer to _array_structure.id in the
ARRAY_STRUCTURE category.
;
_item.name '_diffrn_data_frame.array_id'
_item.category_id diffrn_data_frame
_item.mandatory_code yes
_item_aliases.alias_name '_diffrn_frame_data.array_id'
_item_aliases.dictionary cif_img.dic
_item_aliases.version 1.0
_item_type.code code
save_
save__diffrn_data_frame.binary_id
_item_description.description
; This item is a pointer to _array_data.binary_id in the
ARRAY_DATA category.
;
_item.name '_diffrn_data_frame.binary_id'
_item.category_id diffrn_data_frame
_item.mandatory_code implicit
_item_aliases.alias_name '_diffrn_frame_data.binary_id'
_item_aliases.dictionary cif_img.dic
_item_aliases.version 1.0
_item_type.code int
save_
save__diffrn_data_frame.detector_element_id
_item_description.description
; This item is a pointer to _diffrn_detector_element.id
in the DIFFRN_DETECTOR_ELEMENT category.
;
_item.name '_diffrn_data_frame.detector_element_id'
_item.category_id diffrn_data_frame
_item.mandatory_code yes
_item_aliases.alias_name '_diffrn_frame_data.detector_element_id'
_item_aliases.dictionary cif_img.dic
_item_aliases.version 1.0
_item_type.code code
save_
save__diffrn_data_frame.id
_item_description.description
; The value of _diffrn_data_frame.id must uniquely identify
each complete frame of data.
;
loop_
_item.name
_item.category_id
_item.mandatory_code
'_diffrn_data_frame.id' diffrn_data_frame yes
'_diffrn_refln.frame_id' diffrn_refln yes
'_diffrn_scan.frame_id_start' diffrn_scan yes
'_diffrn_scan.frame_id_end' diffrn_scan yes
'_diffrn_scan_frame.frame_id' diffrn_scan_frame yes
'_diffrn_scan_frame_axis.frame_id'
diffrn_scan_frame_axis
yes
_item_aliases.alias_name '_diffrn_frame_data.id'
_item_aliases.dictionary cif_img.dic
_item_aliases.version 1.0
_item_type.code code
loop_
_item_linked.child_name
_item_linked.parent_name
'_diffrn_refln.frame_id' '_diffrn_data_frame.id'
'_diffrn_scan.frame_id_start' '_diffrn_data_frame.id'
'_diffrn_scan.frame_id_end' '_diffrn_data_frame.id'
'_diffrn_scan_frame.frame_id' '_diffrn_data_frame.id'
'_diffrn_scan_frame_axis.frame_id'
'_diffrn_data_frame.id'
save_
save__diffrn_data_frame.details
_item_description.description
; The value of _diffrn_data_frame.details should give a
description of special aspects of each frame of data.
This is an appropriate location in which to record
information from vendor headers as presented in those
headers, but it should never be used as a substitute
for providing the fully parsed information within
the appropriate imgCIF/CBF categories.
;
_item.name '_diffrn_data_frame.details'
_item.category_id diffrn_data_frame
_item.mandatory_code no
_item_aliases.alias_name '_diffrn_frame_data.details'
_item_aliases.dictionary cif_img.dic
_item_aliases.version 1.4
_item_type.code text
loop_
_item_examples.case
_item_examples.detail
;
HEADER_BYTES = 512;
DIM = 2;
BYTE_ORDER = big_endian;
TYPE = unsigned_short;
SIZE1 = 3072;
SIZE2 = 3072;
PIXEL_SIZE = 0.102588;
BIN = 2x2;
DETECTOR_SN = 901;
TIME = 29.945155;
DISTANCE = 200.000000;
PHI = 85.000000;
OSC_START = 85.000000;
OSC_RANGE = 1.000000;
WAVELENGTH = 0.979381;
BEAM_CENTER_X = 157.500000;
BEAM_CENTER_Y = 157.500000;
PIXEL SIZE = 0.102588;
OSCILLATION RANGE = 1;
EXPOSURE TIME = 29.9452;
TWO THETA = 0;
BEAM CENTRE = 157.5 157.5;
;
; Example of header information extracted from an ADSC Quantum
315 detector header by CBFlib_0.7.6. Image provided by Chris
Nielsen of ADSC from a data collection at SSRL beamline 1-5.
;
save_
##########################################################################
# The following is a restatement of the mmCIF DIFFRN_DETECTOR, #
# DIFFRN_MEASUREMENT and DIFFRN_RADIATION categories, modified for #
# the CBF/imgCIF extensions #
##########################################################################
###################
# DIFFRN_DETECTOR #
###################
save_DIFFRN_DETECTOR
_category.description
; Data items in the DIFFRN_DETECTOR category describe the
detector used to measure the scattered radiation, including
any analyser and post-sample collimation.
;
_category.id diffrn_detector
_category.mandatory_code no
loop_
_category_key.name '_diffrn_detector.diffrn_id'
'_diffrn_detector.id'
loop_
_category_group.id 'inclusive_group'
'diffrn_group'
loop_
_category_examples.detail
_category_examples.case
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Example 1 - based on PDB entry 5HVP and laboratory records for the
structure corresponding to PDB entry 5HVP.
;
;
_diffrn_detector.diffrn_id 'd1'
_diffrn_detector.detector 'multiwire'
_diffrn_detector.type 'Siemens'
;
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
save_
save__diffrn_detector.details
_item_description.description
; A description of special aspects of the radiation detector.
;
_item.name '_diffrn_detector.details'
_item.category_id diffrn_detector
_item.mandatory_code no
_item_aliases.alias_name '_diffrn_detector_details'
_item_aliases.dictionary cif_core.dic
_item_aliases.version 2.0.1
_item_type.code text
_item_examples.case 'slow mode'
save_
save__diffrn_detector.detector
_item_description.description
; The general class of the radiation detector.
;
_item.name '_diffrn_detector.detector'
_item.category_id diffrn_detector
_item.mandatory_code no
loop_
_item_aliases.alias_name
_item_aliases.dictionary
_item_aliases.version '_diffrn_radiation_detector'
cifdic.c91
1.0
'_diffrn_detector'
cif_core.dic
2.0
_item_type.code text
loop_
_item_examples.case 'photographic film'
'scintillation counter'
'CCD plate'
'BF~3~ counter'
save_
save__diffrn_detector.diffrn_id
_item_description.description
; This data item is a pointer to _diffrn.id in the DIFFRN
category.
The value of _diffrn.id uniquely defines a set of
diffraction data.
;
_item.name '_diffrn_detector.diffrn_id'
_item.mandatory_code yes
_item_type.code code
save_
save__diffrn_detector.dtime
_item_description.description
; The deadtime in microseconds of the detector(s) used to
measure the diffraction intensities.
;
_item.name '_diffrn_detector.dtime'
_item.category_id diffrn_detector
_item.mandatory_code no
loop_
_item_aliases.alias_name
_item_aliases.dictionary
_item_aliases.version '_diffrn_radiation_detector_dtime'
cifdic.c91
1.0
'_diffrn_detector_dtime'
cif_core.dic
2.0
loop_
_item_range.maximum
_item_range.minimum . 0.0
0.0 0.0
_item_type.code float
_item_units.code microseconds
save_
save__diffrn_detector.id
_item_description.description
; The value of _diffrn_detector.id must uniquely identify
each detector used to collect each diffraction data set.
If the value of _diffrn_detector.id is not given, it is
implicitly equal to the value of
_diffrn_detector.diffrn_id.
;
loop_
_item.name
_item.category_id
_item.mandatory_code
'_diffrn_detector.id' diffrn_detector implicit
'_diffrn_detector_axis.detector_id'
diffrn_detector_axis yes
loop_
_item_linked.child_name
_item_linked.parent_name
'_diffrn_detector_axis.detector_id'
'_diffrn_detector.id'
_item_type.code code
save_
save__diffrn_detector.number_of_axes
_item_description.description
; The value of _diffrn_detector.number_of_axes gives the
number of axes of the positioner for the detector identified
by _diffrn_detector.id.
The word 'positioner' is a general term used in
instrumentation design for devices that are used to change
the positions of portions of apparatus by linear
translation, rotation or combinations of such motions.
Axes which are used to provide a coordinate system for the
face of an area detetctor should not be counted for this
data item.
The description of each axis should be provided by entries
in DIFFRN_DETECTOR_AXIS.
;
_item.name '_diffrn_detector.number_of_axes'
_item.category_id diffrn_detector
_item.mandatory_code no
loop_
_item_range.maximum
_item_range.minimum . 1
1 1
_item_type.code int
save_
save__diffrn_detector.type
_item_description.description
; The make, model or name of the detector device used.
;
_item.name '_diffrn_detector.type'
_item.category_id diffrn_detector
_item.mandatory_code no
_item_aliases.alias_name '_diffrn_detector_type'
_item_aliases.dictionary cif_core.dic
_item_aliases.version 2.0.1
_item_type.code text
save_
########################
# DIFFRN_DETECTOR_AXIS #
########################
save_DIFFRN_DETECTOR_AXIS
_category.description
; Data items in the DIFFRN_DETECTOR_AXIS category associate
axes with detectors.
;
_category.id diffrn_detector_axis
_category.mandatory_code no
loop_
_category_key.name '_diffrn_detector_axis.detector_id'
'_diffrn_detector_axis.axis_id'
loop_
_category_group.id 'inclusive_group'
'diffrn_group'
save_
save__diffrn_detector_axis.axis_id
_item_description.description
; This data item is a pointer to _axis.id in
the AXIS category.
;
_item.name '_diffrn_detector_axis.axis_id'
_item.category_id diffrn_detector_axis
_item.mandatory_code yes
_item_type.code code
save_
save__diffrn_detector_axis.detector_id
_item_description.description
; This data item is a pointer to _diffrn_detector.id in
the DIFFRN_DETECTOR category.
This item was previously named _diffrn_detector_axis.id
which is now a deprecated name. The old name is
provided as an alias but should not be used for new work.
;
_item.name '_diffrn_detector_axis.detector_id'
_item.category_id diffrn_detector_axis
_item.mandatory_code yes
_item_aliases.alias_name '_diffrn_detector_axis.id'
_item_aliases.dictionary cif_img.dic
_item_aliases.version 1.0
_item_type.code code
save_
###########################
# DIFFRN_DETECTOR_ELEMENT #
###########################
save_DIFFRN_DETECTOR_ELEMENT
_category.description
; Data items in the DIFFRN_DETECTOR_ELEMENT category record
the details about spatial layout and other characteristics
of each element of a detector which may have multiple elements.
In most cases, giving more detailed information
in ARRAY_STRUCTURE_LIST and ARRAY_STRUCTURE_LIST_AXIS
is preferable to simply providing the centre of the
detector element.
;
_category.id diffrn_detector_element
_category.mandatory_code no
loop_
_category_key.name '_diffrn_detector_element.id'
'_diffrn_detector_element.detector_id'
loop_
_category_group.id 'inclusive_group'
'array_data_group'
loop_
_category_examples.detail
_category_examples.case
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Example 1 - Detector d1 is composed of four CCD detector elements,
each 200 mm by 200 mm, arranged in a square, in the pattern
1 2
*
3 4
Note that the beam centre is slightly displaced from each of the
detector elements, just beyond the lower right corner of 1,
the lower left corner of 2, the upper right corner of 3 and
the upper left corner of 4.
;
;
loop_
_diffrn_detector_element.detector_id
_diffrn_detector_element.id
_diffrn_detector_element.center[1]
_diffrn_detector_element.center[2]
d1 d1_ccd_1 201.5 -1.5
d1 d1_ccd_2 -1.8 -1.5
d1 d1_ccd_3 201.6 201.4
d1 d1_ccd_4 -1.7 201.5
;
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
save_
save__diffrn_detector_element.center[1]
_item_description.description
; The value of _diffrn_detector_element.center[1] is the X
component of the distortion-corrected beam centre in
millimetres from the (0, 0) (lower-left) corner of the
detector element viewed from the sample side.
The X and Y axes are the laboratory coordinate system
coordinates defined in the AXIS category measured
when all positioning axes for the detector are at their zero
settings. If the resulting X or Y axis is then orthogonal to the
detector, the Z axis is used instead of the orthogonal axis.
;
_item.name '_diffrn_detector_element.center[1]'
_item.category_id diffrn_detector_element
_item.mandatory_code no
_item_default.value 0.0
_item_sub_category.id vector
_item_type.code float
_item_units.code millimetres
save_
save__diffrn_detector_element.center[2]
_item_description.description
; The value of _diffrn_detector_element.center[2] is the Y
component of the distortion-corrected beam centre in
millimetres from the (0, 0) (lower-left) corner of the
detector element viewed from the sample side.
The X and Y axes are the laboratory coordinate system
coordinates defined in the AXIS category measured
when all positioning axes for the detector are at their zero
settings. If the resulting X or Y axis is then orthogonal to the
detector, the Z axis is used instead of the orthogonal axis.
;
_item.name '_diffrn_detector_element.center[2]'
_item.category_id diffrn_detector_element
_item.mandatory_code no
_item_default.value 0.0
_item_sub_category.id vector
_item_type.code float
_item_units.code millimetres
save_
save__diffrn_detector_element.id
_item_description.description
; The value of _diffrn_detector_element.id must uniquely
identify each element of a detector.
;
loop_
_item.name
_item.category_id
_item.mandatory_code
'_diffrn_detector_element.id'
diffrn_detector_element
yes
_item_type.code code
loop_
_item_linked.child_name
_item_linked.parent_name
'_diffrn_data_frame.detector_element_id'
'_diffrn_detector_element.id'
save_
save__diffrn_detector_element.detector_id
_item_description.description
; This item is a pointer to _diffrn_detector.id
in the DIFFRN_DETECTOR category.
;
_item.name '_diffrn_detector_element.detector_id'
_item.category_id diffrn_detector_element
_item.mandatory_code yes
_item_type.code code
save_
########################
## DIFFRN_MEASUREMENT ##
########################
save_DIFFRN_MEASUREMENT
_category.description
; Data items in the DIFFRN_MEASUREMENT category record details
about the device used to orient and/or position the crystal
during data measurement and the manner in which the
diffraction data were measured.
;
_category.id diffrn_measurement
_category.mandatory_code no
loop_
_category_key.name '_diffrn_measurement.device'
'_diffrn_measurement.diffrn_id'
'_diffrn_measurement.id'
loop_
_category_group.id 'inclusive_group'
'diffrn_group'
loop_
_category_examples.detail
_category_examples.case
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Example 1 - based on PDB entry 5HVP and laboratory records for the
structure corresponding to PDB entry 5HVP
;
;
_diffrn_measurement.diffrn_id 'd1'
_diffrn_measurement.device '3-circle camera'
_diffrn_measurement.device_type 'Supper model x'
_diffrn_measurement.device_details 'none'
_diffrn_measurement.method 'omega scan'
_diffrn_measurement.details
; 440 frames, 0.20 degrees, 150 sec, detector distance 12 cm, detector
angle 22.5 degrees
;
;
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Example 2 - based on data set TOZ of Willis, Beckwith & Tozer
[Acta Cryst. (1991), C47, 2276-2277].
;
;
_diffrn_measurement.diffrn_id 's1'
_diffrn_measurement.device_type 'Philips PW1100/20 diffractometer'
_diffrn_measurement.method 'theta/2theta (\q/2\q)'
;
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
save_
save__diffrn_measurement.device
_item_description.description
; The general class of goniometer or device used to support
and orient the specimen.
If the value of _diffrn_measurement.device is not given,
it is implicitly equal to the value of
_diffrn_measurement.diffrn_id.
Either _diffrn_measurement.device or
_diffrn_measurement.id may be used to link to other
categories. If the experimental setup admits multiple
devices, then _diffrn_measurement.id is used to provide
a unique link.
;
loop_
_item.name
_item.category_id
_item.mandatory_code
'_diffrn_measurement.device' diffrn_measurement implicit
'_diffrn_measurement_axis.measurement_device'
diffrn_measurement_axis implicit
loop_
_item_linked.child_name
_item_linked.parent_name
'_diffrn_measurement_axis.measurement_device'
'_diffrn_measurement.device'
_item_aliases.alias_name '_diffrn_measurement_device'
_item_aliases.dictionary cif_core.dic
_item_aliases.version 2.0.1
_item_type.code text
loop_
_item_examples.case '3-circle camera'
'4-circle camera'
'kappa-geometry camera'
'oscillation camera'
'precession camera'
save_
save__diffrn_measurement.device_details
_item_description.description
; A description of special aspects of the device used to
measure the diffraction intensities.
;
_item.name '_diffrn_measurement.device_details'
_item.category_id diffrn_measurement
_item.mandatory_code no
_item_aliases.alias_name '_diffrn_measurement_device_details'
_item_aliases.dictionary cif_core.dic
_item_aliases.version 2.0.1
_item_type.code text
_item_examples.case
; commercial goniometer modified locally to
allow for 90\% \t arc
;
save_
save__diffrn_measurement.device_type
_item_description.description
; The make, model or name of the measurement device
(goniometer) used.
;
_item.name '_diffrn_measurement.device_type'
_item.category_id diffrn_measurement
_item.mandatory_code no
_item_aliases.alias_name '_diffrn_measurement_device_type'
_item_aliases.dictionary cif_core.dic
_item_aliases.version 2.0.1
_item_type.code text
loop_
_item_examples.case 'Supper model q'
'Huber model r'
'Enraf-Nonius model s'
'home-made'
save_
save__diffrn_measurement.diffrn_id
_item_description.description
; This data item is a pointer to _diffrn.id in the DIFFRN
category.
;
_item.name '_diffrn_measurement.diffrn_id'
_item.mandatory_code yes
_item_type.code code
save_
save__diffrn_measurement.details
_item_description.description
; A description of special aspects of the intensity
measurement.
;
_item.name '_diffrn_measurement.details'
_item.category_id diffrn_measurement
_item.mandatory_code no
_item_aliases.alias_name '_diffrn_measurement_details'
_item_aliases.dictionary cif_core.dic
_item_aliases.version 2.0.1
_item_type.code text
_item_examples.case
; 440 frames, 0.20 degrees, 150 sec, detector
distance 12 cm, detector angle 22.5 degrees
;
save_
save__diffrn_measurement.id
_item_description.description
; The value of _diffrn_measurement.id must uniquely identify
the set of mechanical characteristics of the device used to
orient and/or position the sample used during the collection
of each diffraction data set.
If the value of _diffrn_measurement.id is not given, it is
implicitly equal to the value of
_diffrn_measurement.diffrn_id.
Either _diffrn_measurement.device or
_diffrn_measurement.id may be used to link to other
categories. If the experimental setup admits multiple
devices, then _diffrn_measurement.id is used to provide
a unique link.
;
loop_
_item.name
_item.category_id
_item.mandatory_code
'_diffrn_measurement.id' diffrn_measurement implicit
'_diffrn_measurement_axis.measurement_id'
diffrn_measurement_axis implicit
loop_
_item_linked.child_name
_item_linked.parent_name
'_diffrn_measurement_axis.measurement_id'
'_diffrn_measurement.id'
_item_type.code code
save_
save__diffrn_measurement.method
_item_description.description
; Method used to measure intensities.
;
_item.name '_diffrn_measurement.method'
_item.category_id diffrn_measurement
_item.mandatory_code no
_item_aliases.alias_name '_diffrn_measurement_method'
_item_aliases.dictionary cif_core.dic
_item_aliases.version 2.0.1
_item_type.code text
_item_examples.case
'profile data from theta/2theta (\q/2\q) scans'
save_
save__diffrn_measurement.number_of_axes
_item_description.description
; The value of _diffrn_measurement.number_of_axes gives the
number of axes of the positioner for the goniometer or
other sample orientation or positioning device identified
by _diffrn_measurement.id.
The description of the axes should be provided by entries in
DIFFRN_MEASUREMENT_AXIS.
;
_item.name '_diffrn_measurement.number_of_axes'
_item.category_id diffrn_measurement
_item.mandatory_code no
loop_
_item_range.maximum
_item_range.minimum . 1
1 1
_item_type.code int
save_
save__diffrn_measurement.specimen_support
_item_description.description
; The physical device used to support the crystal during data
collection.
;
_item.name '_diffrn_measurement.specimen_support'
_item.category_id diffrn_measurement
_item.mandatory_code no
_item_aliases.alias_name '_diffrn_measurement_specimen_support'
_item_aliases.dictionary cif_core.dic
_item_aliases.version 2.0.1
_item_type.code text
loop_
_item_examples.case 'glass capillary'
'quartz capillary'
'fiber'
'metal loop'
save_
###########################
# DIFFRN_MEASUREMENT_AXIS #
###########################
save_DIFFRN_MEASUREMENT_AXIS
_category.description
; Data items in the DIFFRN_MEASUREMENT_AXIS category associate
axes with goniometers.
;
_category.id diffrn_measurement_axis
_category.mandatory_code no
loop_
_category_key.name
'_diffrn_measurement_axis.measurement_device'
'_diffrn_measurement_axis.measurement_id'
'_diffrn_measurement_axis.axis_id'
loop_
_category_group.id 'inclusive_group'
'diffrn_group'
save_
save__diffrn_measurement_axis.axis_id
_item_description.description
; This data item is a pointer to _axis.id in
the AXIS category.
;
_item.name '_diffrn_measurement_axis.axis_id'
_item.category_id diffrn_measurement_axis
_item.mandatory_code yes
_item_type.code code
save_
save__diffrn_measurement_axis.measurement_device
_item_description.description
; This data item is a pointer to _diffrn_measurement.device
in the DIFFRN_MEASUREMENT category.
;
_item.name
'_diffrn_measurement_axis.measurement_device'
_item.category_id diffrn_measurement_axis
_item.mandatory_code implicit
_item_type.code text
save_
save__diffrn_measurement_axis.measurement_id
_item_description.description
; This data item is a pointer to _diffrn_measurement.id in
the DIFFRN_MEASUREMENT category.
This item was previously named _diffrn_measurement_axis.id,
which is now a deprecated name. The old name is
provided as an alias but should not be used for new work.
;
_item.name '_diffrn_measurement_axis.measurement_id'
_item.category_id diffrn_measurement_axis
_item.mandatory_code implicit
_item_aliases.alias_name '_diffrn_measurement_axis.id'
_item_aliases.dictionary cif_img.dic
_item_aliases.version 1.0
_item_type.code code
save_
####################
# DIFFRN_RADIATION #
####################
save_DIFFRN_RADIATION
_category.description
; Data items in the DIFFRN_RADIATION category describe
the radiation used for measuring diffraction intensities,
its collimation and monochromatization before the sample.
Post-sample treatment of the beam is described by data
items in the DIFFRN_DETECTOR category.
;
_category.id diffrn_radiation
_category.mandatory_code no
_category_key.name '_diffrn_radiation.diffrn_id'
loop_
_category_group.id 'inclusive_group'
'diffrn_group'
loop_
_category_examples.detail
_category_examples.case
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Example 1 - based on PDB entry 5HVP and laboratory records for the
structure corresponding to PDB entry 5HVP
;
;
_diffrn_radiation.diffrn_id 'set1'
_diffrn_radiation.collimation '0.3 mm double pinhole'
_diffrn_radiation.monochromator 'graphite'
_diffrn_radiation.type 'Cu K\a'
_diffrn_radiation.wavelength_id 1
;
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Example 2 - based on data set TOZ of Willis, Beckwith & Tozer
[Acta Cryst. (1991), C47, 2276-2277].
;
;
_diffrn_radiation.wavelength_id 1
_diffrn_radiation.type 'Cu K\a'
_diffrn_radiation.monochromator 'graphite'
;
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
save_
save__diffrn_radiation.collimation
_item_description.description
; The collimation or focusing applied to the radiation.
;
_item.name '_diffrn_radiation.collimation'
_item.category_id diffrn_radiation
_item.mandatory_code no
_item_aliases.alias_name '_diffrn_radiation_collimation'
_item_aliases.dictionary cif_core.dic
_item_aliases.version 2.0.1
_item_type.code text
loop_
_item_examples.case '0.3 mm double-pinhole'
'0.5 mm'
'focusing mirrors'
save_
save__diffrn_radiation.diffrn_id
_item_description.description
; This data item is a pointer to _diffrn.id in the DIFFRN
category.
;
_item.name '_diffrn_radiation.diffrn_id'
_item.mandatory_code yes
_item_type.code code
save_
save__diffrn_radiation.div_x_source
_item_description.description
; Beam crossfire in degrees parallel to the laboratory X axis
(see AXIS category).
This is a characteristic of the X-ray beam as it illuminates
the sample (or specimen) after all monochromation and
collimation.
This is the standard uncertainty (e.s.d.) of the directions of
photons in the XZ plane around the mean source beam
direction.
Note that for some synchrotrons this value is specified
in milliradians, in which case a conversion is needed.
To convert a value in milliradians to a value in degrees,
multiply by 0.180 and divide by \p.
;
_item.name '_diffrn_radiation.div_x_source'
_item.category_id diffrn_radiation
_item.mandatory_code no
_item_type.code float
_item_units.code degrees
save_
save__diffrn_radiation.div_y_source
_item_description.description
; Beam crossfire in degrees parallel to the laboratory Y axis
(see AXIS category).
This is a characteristic of the X-ray beam as it illuminates
the sample (or specimen) after all monochromation and
collimation.
This is the standard uncertainty (e.s.d.) of the directions
of photons in the YZ plane around the mean source beam
direction.
Note that for some synchrotrons this value is specified
in milliradians, in which case a conversion is needed.
To convert a value in milliradians to a value in degrees,
multiply by 0.180 and divide by \p.
;
_item.name '_diffrn_radiation.div_y_source'
_item.category_id diffrn_radiation
_item.mandatory_code no
_item_type.code float
_item_units.code degrees
_item_default.value 0.0
save_
save__diffrn_radiation.div_x_y_source
_item_description.description
; Beam crossfire correlation degrees^2^ between the
crossfire laboratory X-axis component and the crossfire
laboratory Y-axis component (see AXIS category).
This is a characteristic of the X-ray beam as it illuminates
the sample (or specimen) after all monochromation and
collimation.
This is the mean of the products of the deviations of the
direction of each photon in XZ plane times the deviations
of the direction of the same photon in the YZ plane
around the mean source beam direction. This will be zero
for uncorrelated crossfire.
Note that some synchrotrons, this value is specified in
milliradians^2^, in which case a conversion would be needed.
To go from a value in milliradians^2^ to a value in
degrees^2^, multiply by 0.180^2^ and divide by \p^2^.
;
_item.name '_diffrn_radiation.div_x_y_source'
_item.category_id diffrn_radiation
_item.mandatory_code no
_item_type.code float
_item_units.code degrees_squared
_item_default.value 0.0
save_
save__diffrn_radiation.filter_edge
_item_description.description
; Absorption edge in \%Angstroms of the radiation filter used.
;
_item.name '_diffrn_radiation.filter_edge'
_item.category_id diffrn_radiation
_item.mandatory_code no
_item_aliases.alias_name '_diffrn_radiation_filter_edge'
_item_aliases.dictionary cif_core.dic
_item_aliases.version 2.0.1
loop_
_item_range.maximum
_item_range.minimum . 0.0
0.0 0.0
_item_type.code float
_item_units.code angstroms
save_
save__diffrn_radiation.inhomogeneity
_item_description.description
; Half-width in millimetres of the incident beam in the
direction perpendicular to the diffraction plane.
;
_item.name '_diffrn_radiation.inhomogeneity'
_item.category_id diffrn_radiation
_item.mandatory_code no
_item_aliases.alias_name '_diffrn_radiation_inhomogeneity'
_item_aliases.dictionary cif_core.dic
_item_aliases.version 2.0.1
loop_
_item_range.maximum
_item_range.minimum . 0.0
0.0 0.0
_item_type.code float
_item_units.code millimetres
save_
save__diffrn_radiation.monochromator
_item_description.description
; The method used to obtain monochromatic radiation. If a
monochromator crystal is used, the material and the
indices of the Bragg reflection are specified.
;
_item.name '_diffrn_radiation.monochromator'
_item.category_id diffrn_radiation
_item.mandatory_code no
_item_aliases.alias_name '_diffrn_radiation_monochromator'
_item_aliases.dictionary cif_core.dic
_item_aliases.version 2.0.1
_item_type.code text
loop_
_item_examples.case 'Zr filter'
'Ge 220'
'none'
'equatorial mounted graphite'
save_
save__diffrn_radiation.polarisn_norm
_item_description.description
; The angle in degrees, as viewed from the specimen, between the
perpendicular component of the polarization and the diffraction
plane. See _diffrn_radiation_polarisn_ratio.
;
_item.name '_diffrn_radiation.polarisn_norm'
_item.category_id diffrn_radiation
_item.mandatory_code no
_item_aliases.alias_name '_diffrn_radiation_polarisn_norm'
_item_aliases.dictionary cif_core.dic
_item_aliases.version 2.0.1
loop_
_item_range.maximum
_item_range.minimum 90.0 90.0
90.0 -90.0
-90.0 -90.0
_item_type.code float
_item_units.code degrees
save_
save__diffrn_radiation.polarisn_ratio
_item_description.description
; Polarization ratio of the diffraction beam incident on the
crystal. This is the ratio of the perpendicularly polarized to
the parallel polarized component of the radiation. The
perpendicular component forms an angle of
_diffrn_radiation.polarisn_norm to the normal to the
diffraction plane of the sample (i.e. the plane containing
the incident and reflected beams).
;
_item.name '_diffrn_radiation.polarisn_ratio'
_item.category_id diffrn_radiation
_item.mandatory_code no
_item_aliases.alias_name '_diffrn_radiation_polarisn_ratio'
_item_aliases.dictionary cif_core.dic
_item_aliases.version 2.0.1
loop_
_item_range.maximum
_item_range.minimum . 0.0
0.0 0.0
_item_type.code float
save_
save__diffrn_radiation.polarizn_source_norm
_item_description.description
; The angle in degrees, as viewed from the specimen, between
the normal to the polarization plane and the laboratory Y
axis as defined in the AXIS category.
Note that this is the angle of polarization of the source
photons, either directly from a synchrotron beamline or
from a monochromater.
This differs from the value of
_diffrn_radiation.polarisn_norm
in that _diffrn_radiation.polarisn_norm refers to
polarization relative to the diffraction plane rather than
to the laboratory axis system.
In the case of an unpolarized beam, or a beam with true
circular polarization, in which no single plane of
polarization can be determined, the plane should be taken
as the XZ plane and the angle as 0.
See _diffrn_radiation.polarizn_source_ratio.
;
_item.name '_diffrn_radiation.polarizn_source_norm'
_item.category_id diffrn_radiation
_item.mandatory_code no
loop_
_item_range.maximum
_item_range.minimum 90.0 90.0
90.0 -90.0
-90.0 -90.0
_item_type.code float
_item_units.code degrees
_item_default.value 0.0
save_
save__diffrn_radiation.polarizn_source_ratio
_item_description.description
; (Ip-In)/(Ip+In), where Ip is the intensity
(amplitude squared) of the electric vector in the plane of
polarization and In is the intensity (amplitude squared)
of the electric vector in the plane of the normal to the
plane of polarization.
In the case of an unpolarized beam, or a beam with true
circular polarization, in which no single plane of
polarization can be determined, the plane is to be taken
as the XZ plane and the normal is parallel to the Y axis.
Thus, if there was complete polarization in the plane of
polarization, the value of
_diffrn_radiation.polarizn_source_ratio would be 1, and
for an unpolarized beam
_diffrn_radiation.polarizn_source_ratio would have a
value of 0.
If the X axis has been chosen to lie in the plane of
polarization, this definition will agree with the definition
of 'MONOCHROMATOR' in the Denzo glossary, and values of near
1 should be expected for a bending-magnet source. However,
if the X axis were perpendicular to the polarization plane
(not a common choice), then the Denzo value would be the
negative of _diffrn_radiation.polarizn_source_ratio.
See http://www.hkl-xray.com for information on Denzo and
Otwinowski & Minor (1997).
This differs both in the choice of ratio and choice of
orientation from _diffrn_radiation.polarisn_ratio, which,
unlike _diffrn_radiation.polarizn_source_ratio, is
unbounded.
Reference: Otwinowski, Z. & Minor, W. (1997). 'Processing of
X-ray diffraction data collected in oscillation mode.' Methods
Enzymol. 276, 307-326.
;
_item.name '_diffrn_radiation.polarizn_source_ratio'
_item.category_id diffrn_radiation
_item.mandatory_code no
loop_
_item_range.maximum
_item_range.minimum 1.0 1.0
1.0 -1.0
-1.0 -1.0
_item_type.code float
save_
save__diffrn_radiation.probe
_item_description.description
; Name of the type of radiation used. It is strongly
recommended that this be given so that the
probe radiation is clearly specified.
;
_item.name '_diffrn_radiation.probe'
_item.category_id diffrn_radiation
_item.mandatory_code no
_item_aliases.alias_name '_diffrn_radiation_probe'
_item_aliases.dictionary cif_core.dic
_item_aliases.version 2.0.1
_item_type.code line
loop_
_item_enumeration.value 'x-ray'
'neutron'
'electron'
'gamma'
save_
save__diffrn_radiation.type
_item_description.description
; The nature of the radiation. This is typically a description
of the X-ray wavelength in Siegbahn notation.
;
_item.name '_diffrn_radiation.type'
_item.category_id diffrn_radiation
_item.mandatory_code no
_item_aliases.alias_name '_diffrn_radiation_type'
_item_aliases.dictionary cif_core.dic
_item_aliases.version 2.0.1
_item_type.code line
loop_
_item_examples.case 'CuK\a'
'Cu K\a~1~'
'Cu K-L~2,3~'
'white-beam'
save_
save__diffrn_radiation.xray_symbol
_item_description.description
; The IUPAC symbol for the X-ray wavelength for the probe
radiation.
;
_item.name '_diffrn_radiation.xray_symbol'
_item.category_id diffrn_radiation
_item.mandatory_code no
_item_aliases.alias_name '_diffrn_radiation_xray_symbol'
_item_aliases.dictionary cif_core.dic
_item_aliases.version 2.0.1
_item_type.code line
loop_
_item_enumeration.value
_item_enumeration.detail 'K-L~3~'
'K\a~1~ in older Siegbahn notation'
'K-L~2~'
'K\a~2~ in older Siegbahn notation'
'K-M~3~'
'K\b~1~ in older Siegbahn notation'
'K-L~2,3~'
'use where K-L~3~ and K-L~2~ are not resolved'
save_
save__diffrn_radiation.wavelength_id
_item_description.description
; This data item is a pointer to
_diffrn_radiation_wavelength.id in the
DIFFRN_RADIATION_WAVELENGTH category.
;
_item.name '_diffrn_radiation.wavelength_id'
_item.category_id diffrn_radiation
_item.mandatory_code yes
_item_type.code code
save_
################
# DIFFRN_REFLN #
################
save_DIFFRN_REFLN
_category.description
; This category redefinition has been added to extend the key of
the standard DIFFRN_REFLN category.
;
_category.id diffrn_refln
_category.mandatory_code no
_category_key.name '_diffrn_refln.frame_id'
loop_
_category_group.id 'inclusive_group'
'diffrn_group'
save_
save__diffrn_refln.frame_id
_item_description.description
; This item is a pointer to _diffrn_data_frame.id
in the DIFFRN_DATA_FRAME category.
;
_item.name '_diffrn_refln.frame_id'
_item.category_id diffrn_refln
_item.mandatory_code yes
_item_type.code code
save_
###############
# DIFFRN_SCAN #
###############
save_DIFFRN_SCAN
_category.description
; Data items in the DIFFRN_SCAN category describe the parameters of one
or more scans, relating axis positions to frames.
;
_category.id diffrn_scan
_category.mandatory_code no
_category_key.name '_diffrn_scan.id'
loop_
_category_group.id 'inclusive_group'
'diffrn_group'
loop_
_category_examples.detail
_category_examples.case
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Example 1 - derived from a suggestion by R. M. Sweet.
The vector of each axis is not given here, because it is provided in
the AXIS category. By making _diffrn_scan_axis.scan_id and
_diffrn_scan_axis.axis_id keys of the DIFFRN_SCAN_AXIS category,
an arbitrary number of scanning and fixed axes can be specified for a
scan. In this example, three rotation axes and one translation axis
at nonzero values are specified, with one axis stepping. There is no
reason why more axes could not have been specified to step. Range
information has been specified, but note that it can be calculated from
the number of frames and the increment, so the data item
_diffrn_scan_axis.angle_range could be dropped.
Both the sweep data and the data for a single frame are specified.
Note that the information on how the axes are stepped is given twice,
once in terms of the overall averages in the value of
_diffrn_scan.integration_time and the values for DIFFRN_SCAN_AXIS,
and precisely for the given frame in the value for
_diffrn_scan_frame.integration_time and the values for
DIFFRN_SCAN_FRAME_AXIS. If dose-related adjustments are made to
scan times and nonlinear stepping is done, these values may differ.
Therefore, in interpreting the data for a particular frame it is
important to use the frame-specific data.
;
;
_diffrn_scan.id 1
_diffrn_scan.date_start '2001-11-18T03:26:42'
_diffrn_scan.date_end '2001-11-18T03:36:45'
_diffrn_scan.integration_time 3.0
_diffrn_scan.frame_id_start mad_L2_000
_diffrn_scan.frame_id_end mad_L2_200
_diffrn_scan.frames 201
loop_
_diffrn_scan_axis.scan_id
_diffrn_scan_axis.axis_id
_diffrn_scan_axis.angle_start
_diffrn_scan_axis.angle_range
_diffrn_scan_axis.angle_increment
_diffrn_scan_axis.displacement_start
_diffrn_scan_axis.displacement_range
_diffrn_scan_axis.displacement_increment
1 omega 200.0 20.0 0.1 . . .
1 kappa -40.0 0.0 0.0 . . .
1 phi 127.5 0.0 0.0 . . .
1 tranz . . . 2.3 0.0 0.0
_diffrn_scan_frame.scan_id 1
_diffrn_scan_frame.date '2001-11-18T03:27:33'
_diffrn_scan_frame.integration_time 3.0
_diffrn_scan_frame.frame_id mad_L2_018
_diffrn_scan_frame.frame_number 18
loop_
_diffrn_scan_frame_axis.frame_id
_diffrn_scan_frame_axis.axis_id
_diffrn_scan_frame_axis.angle
_diffrn_scan_frame_axis.angle_increment
_diffrn_scan_frame_axis.displacement
_diffrn_scan_frame_axis.displacement_increment
mad_L2_018 omega 201.8 0.1 . .
mad_L2_018 kappa -40.0 0.0 . .
mad_L2_018 phi 127.5 0.0 . .
mad_L2_018 tranz . . 2.3 0.0
;
; Example 2 - a more extensive example (R. M. Sweet, P. J. Ellis &
H. J. Bernstein).
A detector is placed 240 mm along the Z axis from the goniometer.
This leads to a choice: either the axes of
the detector are defined at the origin, and then a Z setting of -240
is entered, or the axes are defined with the necessary Z offset.
In this case, the setting is used and the offset is left as zero.
This axis is called DETECTOR_Z.
The axis for positioning the detector in the Y direction depends
on the detector Z axis. This axis is called DETECTOR_Y.
The axis for positioning the detector in the X direction depends
on the detector Y axis (and therefore on the detector Z axis).
This axis is called DETECTOR_X.
This detector may be rotated around the Y axis. This rotation axis
depends on the three translation axes. It is called DETECTOR_PITCH.
A coordinate system is defined on the face of the detector in terms of
2300 0.150 mm pixels in each direction. The ELEMENT_X axis is used to
index the first array index of the data array and the ELEMENT_Y
axis is used to index the second array index. Because the pixels
are 0.150mm x 0.150mm, the centre of the first pixel is at (0.075,
0.075) in this coordinate system.
;
; ###CBF: VERSION 1.1
data_image_1
# category DIFFRN
_diffrn.id P6MB
_diffrn.crystal_id P6MB_CRYSTAL7
# category DIFFRN_SOURCE
loop_
_diffrn_source.diffrn_id
_diffrn_source.source
_diffrn_source.type
P6MB synchrotron 'SSRL beamline 9-1'
# category DIFFRN_RADIATION
loop_
_diffrn_radiation.diffrn_id
_diffrn_radiation.wavelength_id
_diffrn_radiation.monochromator
_diffrn_radiation.polarizn_source_ratio
_diffrn_radiation.polarizn_source_norm
_diffrn_radiation.div_x_source
_diffrn_radiation.div_y_source
_diffrn_radiation.div_x_y_source
P6MB WAVELENGTH1 'Si 111' 0.8 0.0 0.08
0.01 0.00
# category DIFFRN_RADIATION_WAVELENGTH
loop_
_diffrn_radiation_wavelength.id
_diffrn_radiation_wavelength.wavelength
_diffrn_radiation_wavelength.wt
WAVELENGTH1 0.98 1.0
# category DIFFRN_DETECTOR
loop_
_diffrn_detector.diffrn_id
_diffrn_detector.id
_diffrn_detector.type
_diffrn_detector.number_of_axes
P6MB MAR345-SN26 'MAR 345' 4
# category DIFFRN_DETECTOR_AXIS
loop_
_diffrn_detector_axis.detector_id
_diffrn_detector_axis.axis_id
MAR345-SN26 DETECTOR_X
MAR345-SN26 DETECTOR_Y
MAR345-SN26 DETECTOR_Z
MAR345-SN26 DETECTOR_PITCH
# category DIFFRN_DETECTOR_ELEMENT
loop_
_diffrn_detector_element.id
_diffrn_detector_element.detector_id
ELEMENT1 MAR345-SN26
# category DIFFRN_DATA_FRAME
loop_
_diffrn_data_frame.id
_diffrn_data_frame.detector_element_id
_diffrn_data_frame.array_id
_diffrn_data_frame.binary_id
FRAME1 ELEMENT1 ARRAY1 1
# category DIFFRN_MEASUREMENT
loop_
_diffrn_measurement.diffrn_id
_diffrn_measurement.id
_diffrn_measurement.number_of_axes
_diffrn_measurement.method
P6MB GONIOMETER 3 rotation
# category DIFFRN_MEASUREMENT_AXIS
loop_
_diffrn_measurement_axis.measurement_id
_diffrn_measurement_axis.axis_id
GONIOMETER GONIOMETER_PHI
GONIOMETER GONIOMETER_KAPPA
GONIOMETER GONIOMETER_OMEGA
# category DIFFRN_SCAN
loop_
_diffrn_scan.id
_diffrn_scan.frame_id_start
_diffrn_scan.frame_id_end
_diffrn_scan.frames
SCAN1 FRAME1 FRAME1 1
# category DIFFRN_SCAN_AXIS
loop_
_diffrn_scan_axis.scan_id
_diffrn_scan_axis.axis_id
_diffrn_scan_axis.angle_start
_diffrn_scan_axis.angle_range
_diffrn_scan_axis.angle_increment
_diffrn_scan_axis.displacement_start
_diffrn_scan_axis.displacement_range
_diffrn_scan_axis.displacement_increment
SCAN1 GONIOMETER_OMEGA 12.0 1.0 1.0 0.0 0.0 0.0
SCAN1 GONIOMETER_KAPPA 23.3 0.0 0.0 0.0 0.0 0.0
SCAN1 GONIOMETER_PHI -165.8 0.0 0.0 0.0 0.0 0.0
SCAN1 DETECTOR_Z 0.0 0.0 0.0 -240.0 0.0 0.0
SCAN1 DETECTOR_Y 0.0 0.0 0.0 0.6 0.0 0.0
SCAN1 DETECTOR_X 0.0 0.0 0.0 -0.5 0.0 0.0
SCAN1 DETECTOR_PITCH 0.0 0.0 0.0 0.0 0.0 0.0
# category DIFFRN_SCAN_FRAME
loop_
_diffrn_scan_frame.frame_id
_diffrn_scan_frame.frame_number
_diffrn_scan_frame.integration_time
_diffrn_scan_frame.scan_id
_diffrn_scan_frame.date
FRAME1 1 20.0 SCAN1 1997-12-04T10:23:48
# category DIFFRN_SCAN_FRAME_AXIS
loop_
_diffrn_scan_frame_axis.frame_id
_diffrn_scan_frame_axis.axis_id
_diffrn_scan_frame_axis.angle
_diffrn_scan_frame_axis.displacement
FRAME1 GONIOMETER_OMEGA 12.0 0.0
FRAME1 GONIOMETER_KAPPA 23.3 0.0
FRAME1 GONIOMETER_PHI -165.8 0.0
FRAME1 DETECTOR_Z 0.0 -240.0
FRAME1 DETECTOR_Y 0.0 0.6
FRAME1 DETECTOR_X 0.0 -0.5
FRAME1 DETECTOR_PITCH 0.0 0.0
# category AXIS
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]
GONIOMETER_OMEGA rotation goniometer . 1 0 0 . . .
GONIOMETER_KAPPA rotation goniometer GONIOMETER_OMEGA 0.64279
0 0.76604 . . .
GONIOMETER_PHI rotation goniometer GONIOMETER_KAPPA 1 0 0
. . .
SOURCE general source . 0 0 1 . . .
GRAVITY general gravity . 0 -1 0 . . .
DETECTOR_Z translation detector . 0 0 1 0 0 0
DETECTOR_Y translation detector DETECTOR_Z 0 1 0 0 0 0
DETECTOR_X translation detector DETECTOR_Y 1 0 0 0 0 0
DETECTOR_PITCH rotation detector DETECTOR_X 0 1 0 0 0 0
ELEMENT_X translation detector DETECTOR_PITCH
1 0 0 172.43 -172.43 0
ELEMENT_Y translation detector ELEMENT_X
0 1 0 0 0 0
# category ARRAY_STRUCTURE_LIST
loop_
_array_structure_list.array_id
_array_structure_list.index
_array_structure_list.dimension
_array_structure_list.precedence
_array_structure_list.direction
_array_structure_list.axis_set_id
ARRAY1 1 2300 1 increasing ELEMENT_X
ARRAY1 2 2300 2 increasing ELEMENT_Y
# category ARRAY_STRUCTURE_LIST_AXIS
loop_
_array_structure_list_axis.axis_set_id
_array_structure_list_axis.axis_id
_array_structure_list_axis.displacement
_array_structure_list_axis.displacement_increment
ELEMENT_X ELEMENT_X 0.075 0.150
ELEMENT_Y ELEMENT_Y 0.075 0.150
# category ARRAY_ELEMENT_SIZE
loop_
_array_element_size.array_id
_array_element_size.index
_array_element_size.size
ARRAY1 1 150e-6
ARRAY1 2 150e-6
# category ARRAY_INTENSITIES
loop_
_array_intensities.array_id
_array_intensities.binary_id
_array_intensities.linearity
_array_intensities.gain
_array_intensities.gain_esd
_array_intensities.overload
_array_intensities.undefined_value
ARRAY1 1 linear 1.15 0.2 240000 0
# category ARRAY_STRUCTURE
loop_
_array_structure.id
_array_structure.encoding_type
_array_structure.compression_type
_array_structure.byte_order
ARRAY1 "signed 32-bit integer" packed little_endian
# category ARRAY_DATA
loop_
_array_data.array_id
_array_data.binary_id
_array_data.data
ARRAY1 1
;
--CIF-BINARY-FORMAT-SECTION--
Content-Type: application/octet-stream;
conversions="x-CBF_PACKED"
Content-Transfer-Encoding: BASE64
X-Binary-Size: 3801324
X-Binary-ID: 1
X-Binary-Element-Type: "signed 32-bit integer"
Content-MD5: 07lZFvF+aOcW85IN7usl8A==
AABRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZBQSr1sKNBOeOe9HITdMdDUnbq7bg
...
8REo6TtBrxJ1vKqAvx9YDMD6J18Qg83OMr/tgssjMIJMXATDsZobL90AEXc4KigE
--CIF-BINARY-FORMAT-SECTION----
;
;
; Example 3 - Example 2 revised for a spiral scan (R. M. Sweet,
P. J. Ellis & H. J. Bernstein).
A detector is placed 240 mm along the Z axis from the
goniometer, as in Example 2 above, but in this example the
image plate is scanned in a spiral pattern from the outside edge in.
The axis for positioning the detector in the Y direction depends
on the detector Z axis. This axis is called DETECTOR_Y.
The axis for positioning the detector in the X direction depends
on the detector Y axis (and therefore on the detector Z axis).
This axis is called DETECTOR_X.
This detector may be rotated around the Y axis. This rotation axis
depends on the three translation axes. It is called DETECTOR_PITCH.
A coordinate system is defined on the face of the detector in
terms of a coupled rotation axis and radial scan axis to form
a spiral scan. The rotation axis is called ELEMENT_ROT and the
radial axis is called ELEMENT_RAD. A 150 micrometre radial pitch
and a 75 micrometre 'constant velocity' angular pitch are assumed.
Indexing is carried out first on the rotation axis and the radial axis
is made to be dependent on it.
The two axes are coupled to form an axis set ELEMENT_SPIRAL.
;
; ###CBF: VERSION 1.1
data_image_1
# category DIFFRN
_diffrn.id P6MB
_diffrn.crystal_id P6MB_CRYSTAL7
# category DIFFRN_SOURCE
loop_
_diffrn_source.diffrn_id
_diffrn_source.source
_diffrn_source.type
P6MB synchrotron 'SSRL beamline 9-1'
# category DIFFRN_RADIATION
loop_
_diffrn_radiation.diffrn_id
_diffrn_radiation.wavelength_id
_diffrn_radiation.monochromator
_diffrn_radiation.polarizn_source_ratio
_diffrn_radiation.polarizn_source_norm
_diffrn_radiation.div_x_source
_diffrn_radiation.div_y_source
_diffrn_radiation.div_x_y_source
P6MB WAVELENGTH1 'Si 111' 0.8 0.0 0.08
0.01 0.00
# category DIFFRN_RADIATION_WAVELENGTH
loop_
_diffrn_radiation_wavelength.id
_diffrn_radiation_wavelength.wavelength
_diffrn_radiation_wavelength.wt
WAVELENGTH1 0.98 1.0
# category DIFFRN_DETECTOR
loop_
_diffrn_detector.diffrn_id
_diffrn_detector.id
_diffrn_detector.type
_diffrn_detector.number_of_axes
P6MB MAR345-SN26 'MAR 345' 4
# category DIFFRN_DETECTOR_AXIS
loop_
_diffrn_detector_axis.detector_id
_diffrn_detector_axis.axis_id
MAR345-SN26 DETECTOR_X
MAR345-SN26 DETECTOR_Y
MAR345-SN26 DETECTOR_Z
MAR345-SN26 DETECTOR_PITCH
# category DIFFRN_DETECTOR_ELEMENT
loop_
_diffrn_detector_element.id
_diffrn_detector_element.detector_id
ELEMENT1 MAR345-SN26
# category DIFFRN_DATA_FRAME
loop_
_diffrn_data_frame.id
_diffrn_data_frame.detector_element_id
_diffrn_data_frame.array_id
_diffrn_data_frame.binary_id
FRAME1 ELEMENT1 ARRAY1 1
# category DIFFRN_MEASUREMENT
loop_
_diffrn_measurement.diffrn_id
_diffrn_measurement.id
_diffrn_measurement.number_of_axes
_diffrn_measurement.method
P6MB GONIOMETER 3 rotation
# category DIFFRN_MEASUREMENT_AXIS
loop_
_diffrn_measurement_axis.measurement_id
_diffrn_measurement_axis.axis_id
GONIOMETER GONIOMETER_PHI
GONIOMETER GONIOMETER_KAPPA
GONIOMETER GONIOMETER_OMEGA
# category DIFFRN_SCAN
loop_
_diffrn_scan.id
_diffrn_scan.frame_id_start
_diffrn_scan.frame_id_end
_diffrn_scan.frames
SCAN1 FRAME1 FRAME1 1
# category DIFFRN_SCAN_AXIS
loop_
_diffrn_scan_axis.scan_id
_diffrn_scan_axis.axis_id
_diffrn_scan_axis.angle_start
_diffrn_scan_axis.angle_range
_diffrn_scan_axis.angle_increment
_diffrn_scan_axis.displacement_start
_diffrn_scan_axis.displacement_range
_diffrn_scan_axis.displacement_increment
SCAN1 GONIOMETER_OMEGA 12.0 1.0 1.0 0.0 0.0 0.0
SCAN1 GONIOMETER_KAPPA 23.3 0.0 0.0 0.0 0.0 0.0
SCAN1 GONIOMETER_PHI -165.8 0.0 0.0 0.0 0.0 0.0
SCAN1 DETECTOR_Z 0.0 0.0 0.0 -240.0 0.0 0.0
SCAN1 DETECTOR_Y 0.0 0.0 0.0 0.6 0.0 0.0
SCAN1 DETECTOR_X 0.0 0.0 0.0 -0.5 0.0 0.0
SCAN1 DETECTOR_PITCH 0.0 0.0 0.0 0.0 0.0 0.0
# category DIFFRN_SCAN_FRAME
loop_
_diffrn_scan_frame.frame_id
_diffrn_scan_frame.frame_number
_diffrn_scan_frame.integration_time
_diffrn_scan_frame.scan_id
_diffrn_scan_frame.date
FRAME1 1 20.0 SCAN1 1997-12-04T10:23:48
# category DIFFRN_SCAN_FRAME_AXIS
loop_
_diffrn_scan_frame_axis.frame_id
_diffrn_scan_frame_axis.axis_id
_diffrn_scan_frame_axis.angle
_diffrn_scan_frame_axis.displacement
FRAME1 GONIOMETER_OMEGA 12.0 0.0
FRAME1 GONIOMETER_KAPPA 23.3 0.0
FRAME1 GONIOMETER_PHI -165.8 0.0
FRAME1 DETECTOR_Z 0.0 -240.0
FRAME1 DETECTOR_Y 0.0 0.6
FRAME1 DETECTOR_X 0.0 -0.5
FRAME1 DETECTOR_PITCH 0.0 0.0
# category AXIS
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]
GONIOMETER_OMEGA rotation goniometer . 1 0 0 . . .
GONIOMETER_KAPPA rotation goniometer GONIOMETER_OMEGA 0.64279
0 0.76604 . . .
GONIOMETER_PHI rotation goniometer GONIOMETER_KAPPA 1 0 0
. . .
SOURCE general source . 0 0 1 . . .
GRAVITY general gravity . 0 -1 0 . . .
DETECTOR_Z translation detector . 0 0 1 0 0 0
DETECTOR_Y translation detector DETECTOR_Z 0 1 0 0 0 0
DETECTOR_X translation detector DETECTOR_Y 1 0 0 0 0 0
DETECTOR_PITCH rotation detector DETECTOR_X 0 1 0 0 0 0
ELEMENT_ROT translation detector DETECTOR_PITCH 0 0 1 0 0 0
ELEMENT_RAD translation detector ELEMENT_ROT 0 1 0 0 0 0
# category ARRAY_STRUCTURE_LIST
loop_
_array_structure_list.array_id
_array_structure_list.index
_array_structure_list.dimension
_array_structure_list.precedence
_array_structure_list.direction
_array_structure_list.axis_set_id
ARRAY1 1 8309900 1 increasing ELEMENT_SPIRAL
# category ARRAY_STRUCTURE_LIST_AXIS
loop_
_array_structure_list_axis.axis_set_id
_array_structure_list_axis.axis_id
_array_structure_list_axis.angle
_array_structure_list_axis.displacement
_array_structure_list_axis.angular_pitch
_array_structure_list_axis.radial_pitch
ELEMENT_SPIRAL ELEMENT_ROT 0 . 0.075 .
ELEMENT_SPIRAL ELEMENT_RAD . 172.5 . -0.150
# category ARRAY_ELEMENT_SIZE
# the actual pixels are 0.075 by 0.150 mm
# We give the coarser dimension here.
loop_
_array_element_size.array_id
_array_element_size.index
_array_element_size.size
ARRAY1 1 150e-6
# category ARRAY_INTENSITIES
loop_
_array_intensities.array_id
_array_intensities.binary_id
_array_intensities.linearity
_array_intensities.gain
_array_intensities.gain_esd
_array_intensities.overload
_array_intensities.undefined_value
ARRAY1 1 linear 1.15 0.2 240000 0
# category ARRAY_STRUCTURE
loop_
_array_structure.id
_array_structure.encoding_type
_array_structure.compression_type
_array_structure.byte_order
ARRAY1 "signed 32-bit integer" packed little_endian
# category ARRAY_DATA
loop_
_array_data.array_id
_array_data.binary_id
_array_data.data
ARRAY1 1
;
--CIF-BINARY-FORMAT-SECTION--
Content-Type: application/octet-stream;
conversions="x-CBF_PACKED"
Content-Transfer-Encoding: BASE64
X-Binary-Size: 3801324
X-Binary-ID: 1
X-Binary-Element-Type: "signed 32-bit integer"
Content-MD5: 07lZFvF+aOcW85IN7usl8A==
AABRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZBQSr1sKNBOeOe9HITdMdDUnbq7bg
...
8REo6TtBrxJ1vKqAvx9YDMD6J18Qg83OMr/tgssjMIJMXATDsZobL90AEXc4KigE
--CIF-BINARY-FORMAT-SECTION----
;
;
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
save_
save__diffrn_scan.id
_item_description.description
; The value of _diffrn_scan.id uniquely identifies each
scan. The identifier is used to tie together all the
information about the scan.
;
loop_
_item.name
_item.category_id
_item.mandatory_code
'_diffrn_scan.id' diffrn_scan yes
'_diffrn_scan_axis.scan_id' diffrn_scan_axis yes
'_diffrn_scan_frame.scan_id' diffrn_scan_frame yes
_item_type.code code
loop_
_item_linked.child_name
_item_linked.parent_name
'_diffrn_scan_axis.scan_id' '_diffrn_scan.id'
'_diffrn_scan_frame.scan_id' '_diffrn_scan.id'
save_
save__diffrn_scan.date_end
_item_description.description
; The date and time of the end of the scan. Note that this
may be an estimate generated during the scan, before the
precise time of the end of the scan is known.
;
_item.name '_diffrn_scan.date_end'
_item.category_id diffrn_scan
_item.mandatory_code no
_item_type.code yyyy-mm-dd
save_
save__diffrn_scan.date_start
_item_description.description
; The date and time of the start of the scan.
;
_item.name '_diffrn_scan.date_start'
_item.category_id diffrn_scan
_item.mandatory_code no
_item_type.code yyyy-mm-dd
save_
save__diffrn_scan.integration_time
_item_description.description
; Approximate average time in seconds to integrate each
step of the scan. The precise time for integration
of each particular step must be provided in
_diffrn_scan_frame.integration_time, even
if all steps have the same integration time.
;
_item.name '_diffrn_scan.integration_time'
_item.category_id diffrn_scan
_item.mandatory_code no
_item_type.code float
_item_units.code 'seconds'
loop_
_item_range.maximum
_item_range.minimum
. 0.0
save_
save__diffrn_scan.frame_id_start
_item_description.description
; The value of this data item is the identifier of the
first frame in the scan.
This item is a pointer to _diffrn_data_frame.id in the
DIFFRN_DATA_FRAME category.
;
_item.name '_diffrn_scan.frame_id_start'
_item.category_id diffrn_scan
_item.mandatory_code yes
_item_type.code code
save_
save__diffrn_scan.frame_id_end
_item_description.description
; The value of this data item is the identifier of the
last frame in the scan.
This item is a pointer to _diffrn_data_frame.id in the
DIFFRN_DATA_FRAME category.
;
_item.name '_diffrn_scan.frame_id_end'
_item.category_id diffrn_scan
_item.mandatory_code yes
_item_type.code code
save_
save__diffrn_scan.frames
_item_description.description
; The value of this data item is the number of frames in
the scan.
;
_item.name '_diffrn_scan.frames'
_item.category_id diffrn_scan
_item.mandatory_code no
_item_type.code int
loop_
_item_range.maximum
_item_range.minimum
. 1
1 1
save_
####################
# DIFFRN_SCAN_AXIS #
####################
save_DIFFRN_SCAN_AXIS
_category.description
; Data items in the DIFFRN_SCAN_AXIS category describe the settings of
axes for particular scans. Unspecified axes are assumed to be at
their zero points.
;
_category.id diffrn_scan_axis
_category.mandatory_code no
loop_
_category_key.name
'_diffrn_scan_axis.scan_id'
'_diffrn_scan_axis.axis_id'
loop_
_category_group.id 'inclusive_group'
'diffrn_group'
save_
save__diffrn_scan_axis.scan_id
_item_description.description
; The value of this data item is the identifier of the
scan for which axis settings are being specified.
Multiple axes may be specified for the same value of
_diffrn_scan.id.
This item is a pointer to _diffrn_scan.id in the
DIFFRN_SCAN category.
;
_item.name '_diffrn_scan_axis.scan_id'
_item.category_id diffrn_scan_axis
_item.mandatory_code yes
_item_type.code code
save_
save__diffrn_scan_axis.axis_id
_item_description.description
; The value of this data item is the identifier of one of
the axes for the scan for which settings are being specified.
Multiple axes may be specified for the same value of
_diffrn_scan.id.
This item is a pointer to _axis.id in the
AXIS category.
;
_item.name '_diffrn_scan_axis.axis_id'
_item.category_id diffrn_scan_axis
_item.mandatory_code yes
_item_type.code code
save_
save__diffrn_scan_axis.angle_start
_item_description.description
; The starting position for the specified axis in degrees.
;
_item.name '_diffrn_scan_axis.angle_start'
_item.category_id diffrn_scan_axis
_item.mandatory_code no
_item_default.value 0.0
_item_type.code float
_item_units.code 'degrees'
save_
save__diffrn_scan_axis.angle_range
_item_description.description
; The range from the starting position for the specified axis
in degrees.
;
_item.name '_diffrn_scan_axis.angle_range'
_item.category_id diffrn_scan_axis
_item.mandatory_code no
_item_default.value 0.0
_item_type.code float
_item_units.code 'degrees'
save_
save__diffrn_scan_axis.angle_increment
_item_description.description
; The increment for each step for the specified axis
in degrees. In general, this will agree with
_diffrn_scan_frame_axis.angle_increment. The
sum of the values of _diffrn_scan_frame_axis.angle and
_diffrn_scan_frame_axis.angle_increment is the
angular setting of the axis at the end of the integration
time for a given frame. If the individual frame values
vary, then the value of
_diffrn_scan_axis.angle_increment will be
representative
of the ensemble of values of
_diffrn_scan_frame_axis.angle_increment (e.g.
the mean).
;
_item.name '_diffrn_scan_axis.angle_increment'
_item.category_id diffrn_scan_axis
_item.mandatory_code no
_item_default.value 0.0
_item_type.code float
_item_units.code 'degrees'
save_
save__diffrn_scan_axis.angle_rstrt_incr
_item_description.description
; The increment after each step for the specified axis
in degrees. In general, this will agree with
_diffrn_scan_frame_axis.angle_rstrt_incr. The
sum of the values of _diffrn_scan_frame_axis.angle,
_diffrn_scan_frame_axis.angle_increment
and _diffrn_scan_frame_axis.angle_rstrt_incr is the
angular setting of the axis at the start of the integration
time for the next frame relative to a given frame and
should equal _diffrn_scan_frame_axis.angle for this
next frame. If the individual frame values
vary, then the value of
_diffrn_scan_axis.angle_rstrt_incr will be
representative
of the ensemble of values of
_diffrn_scan_frame_axis.angle_rstrt_incr (e.g.
the mean).
;
_item.name '_diffrn_scan_axis.angle_rstrt_incr'
_item.category_id diffrn_scan_axis
_item.mandatory_code no
_item_default.value 0.0
_item_type.code float
_item_units.code 'degrees'
save_
save__diffrn_scan_axis.displacement_start
_item_description.description
; The starting position for the specified axis in millimetres.
;
_item.name '_diffrn_scan_axis.displacement_start'
_item.category_id diffrn_scan_axis
_item.mandatory_code no
_item_default.value 0.0
_item_type.code float
_item_units.code 'millimetres'
save_
save__diffrn_scan_axis.displacement_range
_item_description.description
; The range from the starting position for the specified axis
in millimetres.
;
_item.name '_diffrn_scan_axis.displacement_range'
_item.category_id diffrn_scan_axis
_item.mandatory_code no
_item_default.value 0.0
_item_type.code float
_item_units.code 'millimetres'
save_
save__diffrn_scan_axis.displacement_increment
_item_description.description
; The increment for each step for the specified axis
in millimetres. In general, this will agree with
_diffrn_scan_frame_axis.displacement_increment.
The sum of the values of
_diffrn_scan_frame_axis.displacement and
_diffrn_scan_frame_axis.displacement_increment is the
angular setting of the axis at the end of the integration
time for a given frame. If the individual frame values
vary, then the value of
_diffrn_scan_axis.displacement_increment will be
representative
of the ensemble of values of
_diffrn_scan_frame_axis.displacement_increment (e.g.
the mean).
;
_item.name '_diffrn_scan_axis.displacement_increment'
_item.category_id diffrn_scan_axis
_item.mandatory_code no
_item_default.value 0.0
_item_type.code float
_item_units.code 'millimetres'
save_
save__diffrn_scan_axis.displacement_rstrt_incr
_item_description.description
; The increment for each step for the specified axis
in millimetres. In general, this will agree with
_diffrn_scan_frame_axis.displacement_rstrt_incr.
The sum of the values of
_diffrn_scan_frame_axis.displacement,
_diffrn_scan_frame_axis.displacement_increment and
_diffrn_scan_frame_axis.displacement_rstrt_incr is the
angular setting of the axis at the start of the integration
time for the next frame relative to a given frame and
should equal _diffrn_scan_frame_axis.displacement
for this next frame. If the individual frame values
vary, then the value of
_diffrn_scan_axis.displacement_rstrt_incr will be
representative
of the ensemble of values of
_diffrn_scan_frame_axis.displacement_rstrt_incr (e.g.
the mean).
;
_item.name '_diffrn_scan_axis.displacement_rstrt_incr'
_item.category_id diffrn_scan_axis
_item.mandatory_code no
_item_default.value 0.0
_item_type.code float
_item_units.code 'millimetres'
save_
#####################
# DIFFRN_SCAN_FRAME #
#####################
save_DIFFRN_SCAN_FRAME
_category.description
; Data items in the DIFFRN_SCAN_FRAME category describe
the relationships of particular frames to scans.
;
_category.id diffrn_scan_frame
_category.mandatory_code no
loop_
_category_key.name
'_diffrn_scan_frame.scan_id'
'_diffrn_scan_frame.frame_id'
loop_
_category_group.id 'inclusive_group'
'diffrn_group'
save_
save__diffrn_scan_frame.date
_item_description.description
; The date and time of the start of the frame being scanned.
;
_item.name '_diffrn_scan_frame.date'
_item.category_id diffrn_scan_frame
_item.mandatory_code no
_item_type.code yyyy-mm-dd
save_
save__diffrn_scan_frame.frame_id
_item_description.description
; The value of this data item is the identifier of the
frame being examined.
This item is a pointer to _diffrn_data_frame.id in the
DIFFRN_DATA_FRAME category.
;
_item.name '_diffrn_scan_frame.frame_id'
_item.category_id diffrn_scan_frame
_item.mandatory_code yes
_item_type.code code
save_
save__diffrn_scan_frame.frame_number
_item_description.description
; The value of this data item is the number of the frame
within the scan, starting with 1. It is not necessarily
the same as the value of _diffrn_scan_frame.frame_id,
but it may be.
;
_item.name '_diffrn_scan_frame.frame_number'
_item.category_id diffrn_scan_frame
_item.mandatory_code no
_item_type.code int
loop_
_item_range.maximum
_item_range.minimum
. 0
0 0
save_
save__diffrn_scan_frame.integration_time
_item_description.description
; The time in seconds to integrate this step of the scan.
This should be the precise time of integration of each
particular frame. The value of this data item should
be given explicitly for each frame and not inferred
from the value of _diffrn_scan.integration_time.
;
_item.name '_diffrn_scan_frame.integration_time'
_item.category_id diffrn_scan_frame
_item.mandatory_code yes
_item_type.code float
_item_units.code 'seconds'
loop_
_item_range.maximum
_item_range.minimum
. 0.0
save_
save__diffrn_scan_frame.scan_id
_item_description.description
; The value of _diffrn_scan_frame.scan_id identifies the scan
containing this frame.
This item is a pointer to _diffrn_scan.id in the
DIFFRN_SCAN category.
;
_item.name '_diffrn_scan_frame.scan_id'
_item.category_id diffrn_scan_frame
_item.mandatory_code yes
_item_type.code code
save_
##########################
# DIFFRN_SCAN_FRAME_AXIS #
##########################
save_DIFFRN_SCAN_FRAME_AXIS
_category.description
; Data items in the DIFFRN_SCAN_FRAME_AXIS category describe the
settings of axes for particular frames. Unspecified axes are
assumed to be at their zero points. If, for any given frame,
nonzero values apply for any of the data items in this category,
those values should be given explicitly in this category and not
simply inferred from values in DIFFRN_SCAN_AXIS.
;
_category.id diffrn_scan_frame_axis
_category.mandatory_code no
loop_
_category_key.name
'_diffrn_scan_frame_axis.frame_id'
'_diffrn_scan_frame_axis.axis_id'
loop_
_category_group.id 'inclusive_group'
'diffrn_group'
save_
save__diffrn_scan_frame_axis.axis_id
_item_description.description
; The value of this data item is the identifier of one of
the axes for the frame for which settings are being specified.
Multiple axes may be specified for the same value of
_diffrn_scan_frame.frame_id.
This item is a pointer to _axis.id in the
AXIS category.
;
_item.name '_diffrn_scan_frame_axis.axis_id'
_item.category_id diffrn_scan_frame_axis
_item.mandatory_code yes
_item_type.code code
save_
save__diffrn_scan_frame_axis.angle
_item_description.description
; The setting of the specified axis in degrees for this frame.
This is the setting at the start of the integration time.
;
_item.name '_diffrn_scan_frame_axis.angle'
_item.category_id diffrn_scan_frame_axis
_item.mandatory_code no
_item_default.value 0.0
_item_type.code float
_item_units.code 'degrees'
save_
save__diffrn_scan_frame_axis.angle_increment
_item_description.description
; The increment for this frame for the angular setting of
the specified axis in degrees. The sum of the values
of _diffrn_scan_frame_axis.angle and
_diffrn_scan_frame_axis.angle_increment is the
angular setting of the axis at the end of the integration
time for this frame.
;
_item.name '_diffrn_scan_frame_axis.angle_increment'
_item.category_id diffrn_scan_frame_axis
_item.mandatory_code no
_item_default.value 0.0
_item_type.code float
_item_units.code 'degrees'
save_
save__diffrn_scan_frame_axis.angle_rstrt_incr
_item_description.description
; The increment after this frame for the angular setting of
the specified axis in degrees. The sum of the values
of _diffrn_scan_frame_axis.angle,
_diffrn_scan_frame_axis.angle_increment and
_diffrn_scan_frame_axis.angle_rstrt_incr is the
angular setting of the axis at the start of the integration
time for the next frame and should equal
_diffrn_scan_frame_axis.angle for this next frame.
;
_item.name '_diffrn_scan_frame_axis.angle_rstrt_incr'
_item.category_id diffrn_scan_frame_axis
_item.mandatory_code no
_item_default.value 0.0
_item_type.code float
_item_units.code 'degrees'
save_
save__diffrn_scan_frame_axis.displacement
_item_description.description
; The setting of the specified axis in millimetres for this
frame. This is the setting at the start of the integration
time.
;
_item.name '_diffrn_scan_frame_axis.displacement'
_item.category_id diffrn_scan_frame_axis
_item.mandatory_code no
_item_default.value 0.0
_item_type.code float
_item_units.code 'millimetres'
save_
save__diffrn_scan_frame_axis.displacement_increment
_item_description.description
; The increment for this frame for the displacement setting of
the specified axis in millimetres. The sum of the values
of _diffrn_scan_frame_axis.displacement and
_diffrn_scan_frame_axis.displacement_increment is the
angular setting of the axis at the end of the integration
time for this frame.
;
_item.name '_diffrn_scan_frame_axis.displacement_increment'
_item.category_id diffrn_scan_frame_axis
_item.mandatory_code no
_item_default.value 0.0
_item_type.code float
_item_units.code 'millimetres'
save_
save__diffrn_scan_frame_axis.displacement_rstrt_incr
_item_description.description
; The increment for this frame for the displacement setting of
the specified axis in millimetres. The sum of the values
of _diffrn_scan_frame_axis.displacement,
_diffrn_scan_frame_axis.displacement_increment and
_diffrn_scan_frame_axis.displacement_rstrt_incr is the
angular setting of the axis at the start of the integration
time for the next frame and should equal
_diffrn_scan_frame_axis.displacement for this next frame.
;
_item.name '_diffrn_scan_frame_axis.displacement_rstrt_incr'
_item.category_id diffrn_scan_frame_axis
_item.mandatory_code no
_item_default.value 0.0
_item_type.code float
_item_units.code 'millimetres'
save_
save__diffrn_scan_frame_axis.frame_id
_item_description.description
; The value of this data item is the identifier of the
frame for which axis settings are being specified.
Multiple axes may be specified for the same value of
_diffrn_scan_frame.frame_id.
This item is a pointer to _diffrn_data_frame.id in the
DIFFRN_DATA_FRAME category.
;
_item.name '_diffrn_scan_frame_axis.frame_id'
_item.category_id diffrn_scan_frame_axis
_item.mandatory_code yes
_item_type.code code
save_
######################## DEPRECATED DATA ITEMS ########################
save__diffrn_detector_axis.id
_item_description.description
; This data item is a pointer to _diffrn_detector.id in
the DIFFRN_DETECTOR category.
DEPRECATED -- DO NOT USE
;
_item.name '_diffrn_detector_axis.id'
_item.category_id diffrn_detector_axis
_item.mandatory_code yes
_item_type.code code
save_
save__diffrn_measurement_axis.id
_item_description.description
; This data item is a pointer to _diffrn_measurement.id in
the DIFFRN_MEASUREMENT category.
DEPRECATED -- DO NOT USE
;
_item.name '_diffrn_measurement_axis.id'
_item.category_id diffrn_measurement_axis
_item.mandatory_code yes
_item_type.code code
save_
######################### DEPRECATED CATEGORY #########################
#####################
# DIFFRN_FRAME_DATA #
#####################
save_DIFFRN_FRAME_DATA
_category.description
; Data items in the DIFFRN_FRAME_DATA category record
the details about each frame of data.
The items in this category are now in the
DIFFRN_DATA_FRAME category.
The items in the DIFFRN_FRAME_DATA category
are now deprecated. The items from this category
are provided as aliases in the 1.0 dictionary
or, in the case of _diffrn_frame_data.details,
in the 1.4 dictionary. THESE ITEMS SHOULD NOT
BE USED FOR NEW WORK.
The items from the old category are provided
in this dictionary for completeness
but should not be used or cited. To avoid
confusion, the example has been removed
and the redundant parent-child links to other
categories have been removed.
;
_category.id diffrn_frame_data
_category.mandatory_code no
loop_
_category_key.name '_diffrn_frame_data.id'
'_diffrn_frame_data.detector_element_id'
loop_
_category_group.id 'inclusive_group'
'array_data_group'
loop_
_category_examples.detail
_category_examples.case
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;
THE DIFFRN_FRAME_DATA category is deprecated and should not be used.
;
;
# EXAMPLE REMOVED #
;
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
save_
save__diffrn_frame_data.array_id
_item_description.description
; This item is a pointer to _array_structure.id in the
ARRAY_STRUCTURE category.
DEPRECATED -- DO NOT USE
;
_item.name '_diffrn_frame_data.array_id'
_item.category_id diffrn_frame_data
_item.mandatory_code yes
_item_type.code code
save_
save__diffrn_frame_data.binary_id
_item_description.description
; This item is a pointer to _array_data.binary_id in the
ARRAY_STRUCTURE category.
DEPRECATED -- DO NOT USE
;
_item.name '_diffrn_frame_data.binary_id'
_item.category_id diffrn_frame_data
_item.mandatory_code implicit
_item_type.code int
save_
save__diffrn_frame_data.detector_element_id
_item_description.description
; This item is a pointer to _diffrn_detector_element.id
in the DIFFRN_DETECTOR_ELEMENT category.
DEPRECATED -- DO NOT USE
;
_item.name '_diffrn_frame_data.detector_element_id'
_item.category_id diffrn_frame_data
_item.mandatory_code yes
_item_type.code code
save_
save__diffrn_frame_data.id
_item_description.description
; The value of _diffrn_frame_data.id must uniquely identify
each complete frame of data.
DEPRECATED -- DO NOT USE
;
loop_
_item.name
_item.category_id
_item.mandatory_code
'_diffrn_frame_data.id' diffrn_frame_data yes
_item_type.code code
save_
save__diffrn_frame_data.details
_item_description.description
; The value of _diffrn_data_frame.details should give a
description of special aspects of each frame of data.
DEPRECATED -- DO NOT USE
;
_item.name '_diffrn_frame_data.details'
_item.category_id diffrn_frame_data
_item.mandatory_code no
_item_type.code text
save_
################ END DEPRECATED SECTION ###########
####################
## ITEM_TYPE_LIST ##
####################
#
#
# The regular expressions defined here are not compliant
# with the POSIX 1003.2 standard as they include the
# '\n' and '\t' special characters. These regular expressions
# have been tested using version 0.12 of Richard Stallman's
# GNU regular expression library in POSIX mode.
# In order to allow presentation of a regular expression
# in a text field concatenate any line ending in a backslash
# with the following line, after discarding the backslash.
#
# A formal definition of the '\n' and '\t' special characters
# is most properly done in the DDL, but for completeness, please
# note that '\n' is the line termination character ('newline')
# and '\t' is the horizontal tab character. There is a formal
# ambiguity in the use of '\n' for line termination, in that
# the intention is that the equivalent machine/OS-dependent line
# termination character sequence should be accepted as a match, e.g.
#
# '\r' (control-M) under MacOS
# '\n' (control-J) under Unix
# '\r\n' (control-M control-J) under DOS and MS Windows
#
loop_
_item_type_list.code
_item_type_list.primitive_code
_item_type_list.construct
_item_type_list.detail
code char
'[_,.;:"&<>()/\{}'`~!@#$%A-Za-z0-9*|+-]*'
; code item types/single words ...
;
ucode uchar
'[_,.;:"&<>()/\{}'`~!@#$%A-Za-z0-9*|+-]*'
; code item types/single words (case insensitive) ...
;
line char
'[][ \t_(),.;:"&<>/\{}'`~!@#$%?+=*A-Za-z0-9|^-]*'
; char item types / multi-word items ...
;
uline uchar
'[][ \t_(),.;:"&<>/\{}'`~!@#$%?+=*A-Za-z0-9|^-]*'
; char item types / multi-word items (case insensitive)...
;
text char
'[][ \n\t()_,.;:"&<>/\{}'`~!@#$%?+=*A-Za-z0-9|^-]*'
; text item types / multi-line text ...
;
binary char
;\n--CIF-BINARY-FORMAT-SECTION--\n\
[][ \n\t()_,.;:"&<>/\{}'`~!@#$%?+=*A-Za-z0-9|^-]*\
\n--CIF-BINARY-FORMAT-SECTION----
;
; binary items are presented as MIME-like ascii-encoded
sections in an imgCIF. In a CBF, raw octet streams
are used to convey the same information.
;
int numb
'-?[0-9]+'
; int item types are the subset of numbers that are the negative
or positive integers.
;
float numb
'-?(([0-9]+)[.]?|([0-9]*[.][0-9]+))([(][0-9]+[)])?([eE][+-]?[0-9]+)?'
; float item types are the subset of numbers that are the floating
point numbers.
;
any char
'.*'
; A catch all for items that may take any form...
;
yyyy-mm-dd char
;\
[0-9]?[0-9]?[0-9][0-9]-[0-9]?[0-9]-[0-9]?[0-9]\
((T[0-2][0-9](:[0-5][0-9](:[0-5][0-9](.[0-9]+)?)?)?)?\
([+-][0-5][0-9]:[0-5][0-9]))?
;
;
Standard format for CIF date and time strings (see
http://www.iucr.org/iucr-top/cif/spec/datetime.html),
consisting of a yyyy-mm-dd date optionally followed by
the character 'T' followed by a 24-hour clock time,
optionally followed by a signed time-zone offset.
The IUCr standard has been extended to allow for an optional
decimal fraction on the seconds of time.
Time is local time if no time-zone offset is given.
Note that this type extends the mmCIF yyyy-mm-dd type
but does not conform to the mmCIF yyyy-mm-dd:hh:mm
type that uses a ':' in place if the 'T' specified
by the IUCr standard. For reading, both forms should
be accepted, but for writing, only the IUCr form should
be used.
For maximal compatibility, the special time zone
indicator 'Z' (for 'zulu') should be accepted on
reading in place of '+00:00' for GMT.
;
#####################
## ITEM_UNITS_LIST ##
#####################
loop_
_item_units_list.code
_item_units_list.detail
#
'metres' 'metres'
'centimetres' 'centimetres (metres * 10^( -2)^)'
'millimetres' 'millimetres (metres * 10^( -3)^)'
'nanometres' 'nanometres (metres * 10^( -9)^)'
'angstroms' '\%Angstroms (metres * 10^(-10)^)'
'picometres' 'picometres (metres * 10^(-12)^)'
'femtometres' 'femtometres (metres * 10^(-15)^)'
#
'reciprocal_metres' 'reciprocal metres (metres^(-1)^)'
'reciprocal_centimetres'
'reciprocal centimetres ((metres * 10^( -2)^)^(-1)^)'
'reciprocal_millimetres'
'reciprocal millimetres ((metres * 10^( -3)^)^(-1)^)'
'reciprocal_nanometres'
'reciprocal nanometres ((metres * 10^( -9)^)^(-1)^)'
'reciprocal_angstroms'
'reciprocal \%Angstroms ((metres * 10^(-10)^)^(-1)^)'
'reciprocal_picometres'
'reciprocal picometres ((metres * 10^(-12)^)^(-1)^)'
#
'nanometres_squared' 'nanometres squared (metres * 10^( -9)^)^2^'
'angstroms_squared' '\%Angstroms squared (metres * 10^(-10)^)^2^'
'8pi2_angstroms_squared'
'8\p^2^ * \%Angstroms squared (metres * 10^(-10)^)^2^'
'picometres_squared' 'picometres squared (metres * 10^(-12)^)^2^'
#
'nanometres_cubed' 'nanometres cubed (metres * 10^( -9)^)^3^'
'angstroms_cubed' '\%Angstroms cubed (metres * 10^(-10)^)^3^'
'picometres_cubed' 'picometres cubed (metres * 10^(-12)^)^3^'
#
'kilopascals' 'kilopascals'
'gigapascals' 'gigapascals'
#
'hours' 'hours'
'minutes' 'minutes'
'seconds' 'seconds'
'microseconds' 'microseconds'
#
'degrees' 'degrees (of arc)'
'degrees_squared' 'degrees (of arc) squared'
#
'degrees_per_minute' 'degrees (of arc) per minute'
#
'celsius' 'degrees (of temperature) Celsius'
'kelvins' 'degrees (of temperature) Kelvin'
#
'counts' 'counts'
'counts_per_photon' 'counts per photon'
#
'electrons' 'electrons'
#
'electrons_squared' 'electrons squared'
#
'electrons_per_nanometres_cubed'
; electrons per nanometres cubed (electrons/(metres * 10^( -9)^)^(-3)^)
;
'electrons_per_angstroms_cubed'
; electrons per \%Angstroms cubed (electrons/(metres * 10^(-10)^)^(-3)^)
;
'electrons_per_picometres_cubed'
; electrons per picometres cubed (electrons/(metres * 10^(-12)^)^(-3)^)
;
'kilowatts' 'kilowatts'
'milliamperes' 'milliamperes'
'kilovolts' 'kilovolts'
#
'pixels_per_element' '(image) pixels per (array) element'
#
'arbitrary'
; arbitrary system of units.
;
#
loop_
_item_units_conversion.from_code
_item_units_conversion.to_code
_item_units_conversion.operator
_item_units_conversion.factor
###
'metres' 'centimetres' '*' 1.0E+02
'metres' 'millimetres' '*' 1.0E+03
'metres' 'nanometres' '*' 1.0E+09
'metres' 'angstroms' '*' 1.0E+10
'metres' 'picometres' '*' 1.0E+12
'metres' 'femtometres' '*' 1.0E+15
#
'centimetres' 'metres' '*' 1.0E-02
'centimetres' 'millimetres' '*' 1.0E+01
'centimetres' 'nanometres' '*' 1.0E+07
'centimetres' 'angstroms' '*' 1.0E+08
'centimetres' 'picometres' '*' 1.0E+10
'centimetres' 'femtometres' '*' 1.0E+13
#
'millimetres' 'metres' '*' 1.0E-03
'millimetres' 'centimetres' '*' 1.0E-01
'millimetres' 'nanometres' '*' 1.0E+06
'millimetres' 'angstroms' '*' 1.0E+07
'millimetres' 'picometres' '*' 1.0E+09
'millimetres' 'femtometres' '*' 1.0E+12
#
'nanometres' 'metres' '*' 1.0E-09
'nanometres' 'centimetres' '*' 1.0E-07
'nanometres' 'millimetres' '*' 1.0E-06
'nanometres' 'angstroms' '*' 1.0E+01
'nanometres' 'picometres' '*' 1.0E+03
'nanometres' 'femtometres' '*' 1.0E+06
#
'angstroms' 'metres' '*' 1.0E-10
'angstroms' 'centimetres' '*' 1.0E-08
'angstroms' 'millimetres' '*' 1.0E-07
'angstroms' 'nanometres' '*' 1.0E-01
'angstroms' 'picometres' '*' 1.0E+02
'angstroms' 'femtometres' '*' 1.0E+05
#
'picometres' 'metres' '*' 1.0E-12
'picometres' 'centimetres' '*' 1.0E-10
'picometres' 'millimetres' '*' 1.0E-09
'picometres' 'nanometres' '*' 1.0E-03
'picometres' 'angstroms' '*' 1.0E-02
'picometres' 'femtometres' '*' 1.0E+03
#
'femtometres' 'metres' '*' 1.0E-15
'femtometres' 'centimetres' '*' 1.0E-13
'femtometres' 'millimetres' '*' 1.0E-12
'femtometres' 'nanometres' '*' 1.0E-06
'femtometres' 'angstroms' '*' 1.0E-05
'femtometres' 'picometres' '*' 1.0E-03
###
'reciprocal_centimetres' 'reciprocal_metres' '*' 1.0E+02
'reciprocal_centimetres' 'reciprocal_millimetres' '*' 1.0E-01
'reciprocal_centimetres' 'reciprocal_nanometres' '*' 1.0E-07
'reciprocal_centimetres' 'reciprocal_angstroms' '*' 1.0E-08
'reciprocal_centimetres' 'reciprocal_picometres' '*' 1.0E-10
#
'reciprocal_millimetres' 'reciprocal_metres' '*' 1.0E+03
'reciprocal_millimetres' 'reciprocal_centimetres' '*' 1.0E+01
'reciprocal_millimetres' 'reciprocal_nanometres' '*' 1.0E-06
'reciprocal_millimetres' 'reciprocal_angstroms' '*' 1.0E-07
'reciprocal_millimetres' 'reciprocal_picometres' '*' 1.0E-09
#
'reciprocal_nanometres' 'reciprocal_metres' '*' 1.0E+09
'reciprocal_nanometres' 'reciprocal_centimetres' '*' 1.0E+07
'reciprocal_nanometres' 'reciprocal_millimetres' '*' 1.0E+06
'reciprocal_nanometres' 'reciprocal_angstroms' '*' 1.0E-01
'reciprocal_nanometres' 'reciprocal_picometres' '*' 1.0E-03
#
'reciprocal_angstroms' 'reciprocal_metres' '*' 1.0E+10
'reciprocal_angstroms' 'reciprocal_centimetres' '*' 1.0E+08
'reciprocal_angstroms' 'reciprocal_millimetres' '*' 1.0E+07
'reciprocal_angstroms' 'reciprocal_nanometres' '*' 1.0E+01
'reciprocal_angstroms' 'reciprocal_picometres' '*' 1.0E-02
#
'reciprocal_picometres' 'reciprocal_metres' '*' 1.0E+12
'reciprocal_picometres' 'reciprocal_centimetres' '*' 1.0E+10
'reciprocal_picometres' 'reciprocal_millimetres' '*' 1.0E+09
'reciprocal_picometres' 'reciprocal_nanometres' '*' 1.0E+03
'reciprocal_picometres' 'reciprocal_angstroms' '*' 1.0E+01
###
'nanometres_squared' 'angstroms_squared' '*' 1.0E+02
'nanometres_squared' 'picometres_squared' '*' 1.0E+06
#
'angstroms_squared' 'nanometres_squared' '*' 1.0E-02
'angstroms_squared' 'picometres_squared' '*' 1.0E+04
'angstroms_squared' '8pi2_angstroms_squared' '*' 78.9568
#
'picometres_squared' 'nanometres_squared' '*' 1.0E-06
'picometres_squared' 'angstroms_squared' '*' 1.0E-04
###
'nanometres_cubed' 'angstroms_cubed' '*' 1.0E+03
'nanometres_cubed' 'picometres_cubed' '*' 1.0E+09
#
'angstroms_cubed' 'nanometres_cubed' '*' 1.0E-03
'angstroms_cubed' 'picometres_cubed' '*' 1.0E+06
#
'picometres_cubed' 'nanometres_cubed' '*' 1.0E-09
'picometres_cubed' 'angstroms_cubed' '*' 1.0E-06
###
'kilopascals' 'gigapascals' '*' 1.0E-06
'gigapascals' 'kilopascals' '*' 1.0E+06
###
'hours' 'minutes' '*' 6.0E+01
'hours' 'seconds' '*' 3.6E+03
'hours' 'microseconds' '*' 3.6E+09
#
'minutes' 'hours' '/' 6.0E+01
'minutes' 'seconds' '*' 6.0E+01
'minutes' 'microseconds' '*' 6.0E+07
#
'seconds' 'hours' '/' 3.6E+03
'seconds' 'minutes' '/' 6.0E+01
'seconds' 'microseconds' '*' 1.0E+06
#
'microseconds' 'hours' '/' 3.6E+09
'microseconds' 'minutes' '/' 6.0E+07
'microseconds' 'seconds' '/' 1.0E+06
###
'celsius' 'kelvins' '-' 273.0
'kelvins' 'celsius' '+' 273.0
###
'electrons_per_nanometres_cubed'
'electrons_per_angstroms_cubed' '*' 1.0E+03
'electrons_per_nanometres_cubed'
'electrons_per_picometres_cubed' '*' 1.0E+09
#
'electrons_per_angstroms_cubed'
'electrons_per_nanometres_cubed' '*' 1.0E-03
'electrons_per_angstroms_cubed'
'electrons_per_picometres_cubed' '*' 1.0E+06
#
'electrons_per_picometres_cubed'
'electrons_per_nanometres_cubed' '*' 1.0E-09
'electrons_per_picometres_cubed'
'electrons_per_angstroms_cubed' '*' 1.0E-06
###
########################
## DICTIONARY_HISTORY ##
########################
loop_
_dictionary_history.version
_dictionary_history.update
_dictionary_history.revision
1.4 2005-07-04
; This is a change to reintegrate all changes made in the course of
publication of ITVG, by the RCSB from April 2005 through
August 2008 and changes for the 2006 imgCIF workshop in
Hawaii.
2006-07-04 Consolidated changes for the 2006 imgCIF workshop (edited by HJB)
+ Correct type of '_array_structure_list.direction' from 'int' to 'code'.
+ Added new data items suggested by CN
'_diffrn_data_frame.details'
'_array_intensities.pixel_fast_bin_size',
'_array_intensities.pixel_slow_bin_size and
'_array_intensities.pixel_binning_method
+ Added deprecated item for completeness
'_diffrn_frame_data.details'
+ Added entry for missing item in contents list
'_array_structure_list_axis.displacement'
+ Added new MIME type X-BASE32K based on work by VL, KM, GD, HJB
+ Correct description of MIME boundary delimiter to start in
column 1.
+ General cleanup of text fields to conform to changes for ITVG
by removing empty lines at start and finish of text field.
+ Amend example for ARRAY_INTENSITIES to include binning.
+ Add local copy of type specification (as 'code') for all children
of '_diffrn.id'.
+ For consistency, change all references to 'pi' to '\p' and all
references to 'Angstroms' to '\%Angstroms'.
+ Clean up all powers to use IUCr convention of '^power^', as in
'10^3^' for '10**3'.
+ Update 'yyyy-mm-dd' type regex to allow truncation from the right
and improve comments to explain handling of related mmCIF
'yyyy-mm-dd:hh:mm' type, and use of 'Z' for GMT time zone.
2005-03-08 and
2004-08-08 fixed cases where _item_units.code used
instead of _item_type.code (JDW)
2004-04-15 fixed item ordering in
_diffrn_measurement_axis.measurement_id
added sub_category 'vector' (JDW)
;
1.3.2 2005-06-25
; 2005-06-25 ITEM_TYPE_LIST: code, ucode, line, uline regexps updated
to those of current mmCIF; float modified by allowing integers
terminated by a point as valid. The 'time' part of
yyyy-mm-dd types made optional in the regexp. (BM)
2005-06-17 Minor corrections as for proofs for IT G Chapter 4.6
(NJA)
2005-02-21 Minor corrections to spelling and punctuation
(NJA)
2005-01-08 Changes as per Nicola Ashcroft.
+ Updated example 1 for DIFFRN_MEASUREMENT to agree with mmCIF.
+ Spelled out "micrometres" for "um" and "millimetres" for "mm".
+ Removed phrase "which may be stored" from ARRAY_STRUCTURE
description.
+ Removed unused 'byte-offsets' compressions and updated
cites to ITVG for '_array_structure.compression_type'.
(HJB)
;
1.3.1 2003-08-13
;
Changes as per Frances C. Bernstein.
+ Identify initials.
+ Adopt British spelling for centre in text.
+ Set \p and \%Angstrom and powers.
+ Clean up commas and unclear wordings.
+ Clean up tenses in history.
Changes as per Gotzon Madariaga.
+ Fix the ARRAY_DATA example to align '_array_data.binary_id'
and X-Binary-ID.
+ Add a range to '_array_intensities.gain_esd'.
+ In the example of DIFFRN_DETECTOR_ELEMENT,
'_diffrn_detector_element.id' and
'_diffrn_detector_element.detector_id' interchanged.
+ Fix typos for direction, detector and axes.
+ Clarify description of polarisation.
+ Clarify axes in '_diffrn_detector_element.center[1]'
'_diffrn_detector_element.center[2]'.
+ Add local item types for items that are pointers.
(HJB)
;
1.3.0 2003-07-24
;
Changes as per Brian McMahon.
+ Consistently quote tags embedded in text.
+ Clean up introductory comments.
+ Adjust line lengths to fit in 80 character window.
+ Fix several descriptions in AXIS category which
referred to '_axis.type' instead of the current item.
+ Fix erroneous use of deprecated item
'_diffrn_detector_axis.id' in examples for
DIFFRN_SCAN_AXIS.
+ Add deprecated items '_diffrn_detector_axis.id'
and '_diffrn_measurement_axis.id'.
(HJB)
;
1.2.4 2003-07-14
;
Changes as per I. David Brown.
+ Enhance descriptions in DIFFRN_SCAN_AXIS to make them less
dependent on the descriptions in DIFFRN_SCAN_FRAME_AXIS.
+ Provide a copy of the deprecated DIFFRN_FRAME_DATA
category for completeness.
(HJB)
;
1.2.3 2003-07-03
;
Cleanup to conform to ITVG.
+ Correct sign error in ..._cubed units.
+ Correct '_diffrn_radiation.polarisn_norm' range.
(HJB)
;
1.2.2 2003-03-10
;
Correction of typos in various DIFFRN_SCAN_AXIS descriptions.
(HJB)
;
1.2.1 2003-02-22
;
Correction of ATOM_ for ARRAY_ typos in various descriptions.
(HJB)
;
1.2 2003-02-07
;
Corrections to encodings (remove extraneous hyphens) remove
extraneous underscore in '_array_structure.encoding_type'
enumeration. Correct typos in items units list. (HJB)
;
1.1.3 2001-04-19
;
Another typo corrections by Wilfred Li, and cleanup by HJB.
;
1.1.2 2001-03-06
;
Several typo corrections by Wilfred Li.
;
1.1.1 2001-02-16
;
Several typo corrections by JW.
;
1.1 2001-02-06
;
Draft resulting from discussions on header for use at NSLS. (HJB)
+ Change DIFFRN_FRAME_DATA to DIFFRN_DATA_FRAME.
+ Change '_diffrn_detector_axis.id' to '_diffrn_detector_axis.detector_id'.
+ Add '_diffrn_measurement_axis.measurement_device' and change
'_diffrn_measurement_axis.id' to
'_diffrn_measurement_axis.measurement_id'.
+ Add '_diffrn_radiation.div_x_source', '_diffrn_radiation.div_y_source',
'_diffrn_radiation.div_x_y_source',
'_diffrn_radiation.polarizn_source_norm',
'_diffrn_radiation.polarizn_source_ratio', '_diffrn_scan.date_end',
'_diffrn_scan.date_start', '_diffrn_scan_axis.angle_rstrt_incr',
'_diffrn_scan_axis.displacement_rstrt_incr',
'_diffrn_scan_frame_axis.angle_increment',
'_diffrn_scan_frame_axis.angle_rstrt_incr',
'_diffrn_scan_frame_axis.displacement',
'_diffrn_scan_frame_axis.displacement_increment',and
'_diffrn_scan_frame_axis.displacement_rstrt_incr'.
+ Add '_diffrn_measurement.device' to category key.
+ Update yyyy-mm-dd to allow optional time with fractional seconds
for time stamps.
+ Fix typos caught by RS.
+ Add ARRAY_STRUCTURE_LIST_AXIS category, and use concept of axis sets to
allow for coupled axes, as in spiral scans.
+ Add examples for fairly complete headers thanks to R. Sweet and P.
Ellis.
;
1.0 2000-12-21
;
Release version - few typos and tidying up. (BM & HJB)
+ Move ITEM_TYPE_LIST, ITEM_UNITS_LIST and DICTIONARY_HISTORY to end
of dictionary.
+ Alphabetize dictionary.
;
0.7.1 2000-09-29
;
Cleanup fixes. (JW)
+ Correct spelling of diffrn_measurement_axis in '_axis.id'
+ Correct ordering of uses of '_item.mandatory_code' and
'_item_default.value'.
;
0.7.0 2000-09-09
;
Respond to comments by I. David Brown. (HJB)
+ Add further comments on '\n' and '\t'.
+ Update ITEM_UNITS_LIST by taking section from mmCIF dictionary
and adding metres. Change 'meter' to 'metre' throughout.
+ Add missing enumerations to '_array_structure.compression_type'
and make 'none' the default.
+ Remove parent-child relationship between
'_array_structure_list.index' and '_array_structure_list.precedence'.
+ Improve alphabetization.
+ Fix '_array_intensities_gain.esd' related function.
+ Improve comments in AXIS.
+ Fix DIFFRN_FRAME_DATA example.
+ Remove erroneous DIFFRN_MEASUREMENT example.
+ Add '_diffrn_measurement_axis.id' to the category key.
;
0.6.0 1999-01-14
;
Remove redundant information for ENC_NONE data. (HJB)
+ After the D5 remove binary section identifier, size and
compression type.
+ Add Control-L to header.
;
0.5.1 1999-01-03
;
Cleanup of typos and syntax errors. (HJB)
+ Cleanup example details for DIFFRN_SCAN category.
+ Add missing quote marks for '_diffrn_scan.id' definition.
;
0.5 1999-01-01
;
Modifications for axis definitions and reduction of binary header. (HJB)
+ Restore '_diffrn_detector.diffrn_id' to DIFFRN_DETECTOR KEY.
+ Add AXIS category.
+ Bring in complete DIFFRN_DETECTOR and DIFFRN_MEASUREMENT categories
from cif_mm.dic for clarity.
+ Change '_array_structure.encoding_type' from type code to uline and
added X-Binary-Element-Type to MIME header.
+ Add detector beam centre '_diffrn_detector_element.center[1]' and
'_diffrn_detector_element.center[2]'.
+ Correct item name of '_diffrn_refln.frame_id'.
+ Replace reference to '_array_intensities.undefined' by
'_array_intensities.undefined_value'.
+ Replace references to '_array_intensity.scaling' with
'_array_intensities.scaling'.
+ Add DIFFRN_SCAN... categories.
;
0.4 1998-08-11
;
Modifications to the 0.3 imgCIF draft. (HJB)
+ Reflow comment lines over 80 characters and corrected typos.
+ Update examples and descriptions of MIME encoded data.
+ Change name to cbfext98.dic.
;
0.3 1998-07-04
;
Modifications for imgCIF. (HJB)
+ Add binary type, which is a text field containing a variant on
MIME encoded data.
+ Change type of '_array_data.data' to binary and specify internal
structure of raw binary data.
+ Add '_array_data.binary_id', and make
'_diffrn_frame_data.binary_id' and '_array_intensities.binary_id'
into pointers to this item.
;
0.2 1997-12-02
;
Modifications to the CBF draft. (JW)
+ Add category hierarchy for describing frame data developed from
discussions at the BNL imgCIF Workshop Oct 1997. The following
changes are made in implementing the workshop draft. Category
DIFFRN_ARRAY_DATA is renamed to DIFFRN_FRAME_DATA. Category
DIFFRN_FRAME_TYPE is renamed to DIFFRN_DETECTOR_ELEMENT. The
parent item for '_diffrn_frame_data.array_id' is changed from
'_array_structure_list.array_id' to '_array_structure.id'. Item
'_diffrn_detector.array_id' is deleted.
+ Add data item '_diffrn_frame_data.binary_id' to identify data
groups within a binary section. The formal identification of the
binary section is still fuzzy.
;
0.1 1997-01-24
;
First draft of this dictionary in DDL 2.1 compliant format by John
Westbrook (JW). This version is adapted from the Crystallographic
Binary File (CBF) Format Draft Proposal provided by Andy Hammersley
(AH).
Modifications to the CBF draft. (JW)
+ In this version the array description has been cast in the categories
ARRAY_STRUCTURE and ARRAY_STRUCTURE_LIST. These categories
have been generalized to describe array data of arbitrary dimension.
+ Array data in this description are contained in the category
ARRAY_DATA. This departs from the CBF notion of data existing
in some special comment. In this description, data are handled as an
ordinary data item encapsulated in a character data type. Although
data this manner deviates from CIF conventions, it does not violate
any DDL 2.1 rules. DDL 2.1 regular expressions can be used to define
the binary representation which will permit some level of data
validation. In this version, the placeholder type code "any" has
been used. This translates to a regular expression which will match
any pattern.
It should be noted that DDL 2.1 already supports array data objects
although these have not been used in the current mmCIF dictionary.
It may be possible to use the DDL 2.1 ITEM_STRUCTURE and
ITEM_STRUCTURE_LIST categories to provide the information that is
carried in by the ARRAY_STRUCTURE and ARRAY_STRUCTURE_LIST. By
moving the array structure to the DDL level it would be possible to
define an array type as well as a regular expression defining the
data format.
+ Multiple array sections can be properly handled within a single
datablock.
;
#-eof-eof-eof-eof-eof-eof-eof-eof-eof-eof-eof-eof-eof-eof-eof-eof-eof-eof-eof