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

a couple of suggestions

herbert_bernstein (yaya@aip.org)
Fri, 22 Sep 95 09:28:46 EDT


Subject: MTRIX and ORIGX

#  Prepared by Herbert J. Bernstein 
#  with the assistance of Frances C. Bernstein
#  Comments to yaya@aip.org and bernstei@bnl.gov
#  9/22/95

###################################################################
#                                                                 #
# The following definitions are intended to convey the information#
# contained in the PDB MTRIX entries, which give the transforms   #
# representing the non-crystallographic symmetry operations.      #
#                                                                 #
###################################################################
      


#################################
## ATOM_SITES_NON_CRYST_TRANSF ##
#################################

save_ATOM_SITES_NON_CRYST_TRANSF
    _category.description
;              Data items in the ATOM_SITES_NON_CRYST_TRANSF category record 
               details about non-crystallographic transformations, which are
               common to all atom sites or to sub-domains of atom sites.

               |11 12 13|    x                |1|      x'
               |21 22 23|  ( y ) domain     + |2| =  ( y' )  result
               |31 32 33|    z                |3|      z'

               For each value of the key
                 _atom_sites_non_cryst_transf.id
               a 3x3 matrix and 3-element vector are used to transform
               coordinates as given in the ATOM_SITE category to other
               coordinates in the same category, representing a non-
               crystallographic symmetry operation.  The transformation may 
               either result in atomic coordinates _some_ of which 
               approximate coordinates provided elsewhere in the data block,
               in which case _atom_sites_non_cryst_transf.result_given should
               have the value "yes," or, if the transformation results in
               atomic_coordinates which do not approximate any coordinates
               given elsewhere, _atom_sites_non_cryst_transf.result_given
               should be "no" or be unspecified.

               The domains for the transformation are given by
               items in the atom_sites_non_cryst_transf_domain category
 ;
    _category.id                  atom_sites_non_cryst_transf
    _category.mandatory_code      no
    _category_key.name          '_atom_sites_non_cryst_transf.id'
     loop_
    _category_group.id           'inclusive_group'
                                 'atom_group'
     loop_
    _category_examples.detail
    _category_examples.case
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;
    Example 1 - TO BE PROVIDED
;
;

;
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     save_

save__atom_sites_non_cryst_transf.id
    _item_description.description
;              The value of _atom_sites_non_cryst_transf.id must
               uniquely identify the transformation elements (matrix,
               vector, and result_given) of a non-crystallographic
               transformation.  Though good style and consistency with
               PDB practices would suggest the use of sequential integers
               in the range of 1 through 999, an arbitrary character
               string is permitted.
;
    _item.name                  '_atom_sites_non_cryst_transf.id'
    _item.category_id             atom_sites_non_cryst_transf
    _item.mandatory_code          yes
    _item_type.code               char
     loop_
    _item_linked.child_name
    _item_linked.parent_name
               '_atom_sites_non_cryst_transf_domain.id'
               '_atom_sites_non_cryst_transf.id'
     save_

save__atom_sites_non_cryst_transf.matrix[1][1]
    _item_description.description
;              The [1][1] element of the 3x3 matrix used to transform
               coordinates as given in the ATOM_SITE category to other
               coordinates in the same category, representing a non-
               crystallographic symmetry operation.

;
    _item.name                  '_atom_sites_non_cryst_transf.matrix[1][1]'
    _item.category_id             atom_sites_non_cryst_transf
    _item.mandatory_code          no
    _item_sub_category.id         matrix
    _item_type.code               float
     save_

save__atom_sites_non_cryst_transf.matrix[1][2]
    _item_description.description
;              The [1][2] element of the 3x3 matrix used to transform
               coordinates as given in the ATOM_SITE category to other
               coordinates in the same category, representing a non-
               crystallographic symmetry operation.
;
    _item.name                  '_atom_sites_non_cryst_transf.matrix[1][2]'
    _item.category_id             atom_sites_non_cryst_transf
    _item.mandatory_code          no
    _item_sub_category.id         matrix
    _item_type.code               float
     save_

save__atom_sites_non_cryst_transf.matrix[1][3]
    _item_description.description
;              The [1][3] element of the 3x3 matrix used to transform
               coordinates as given in the ATOM_SITE category to other
               coordinates in the same category, representing a non-
               crystallographic symmetry operation.
;
    _item.name                  '_atom_sites_non_cryst_transf.matrix[1][3]'
    _item.category_id             atom_sites_non_cryst_transf
    _item.mandatory_code          no
    _item_sub_category.id         matrix
    _item_type.code               float
     save_

save__atom_sites_non_cryst_transf.matrix[2][1]
    _item_description.description
;              The [2][1] element of the 3x3 matrix used to transform
               coordinates as given in the ATOM_SITE category to other
               coordinates in the same category, representing a non-
               crystallographic symmetry operation.
;
    _item.name                  '_atom_sites_non_cryst_transf.matrix[2][1]'
    _item.category_id             atom_sites_non_cryst_transf
    _item.mandatory_code          no
    _item_sub_category.id         matrix
    _item_type.code               float
     save_

save__atom_sites_non_cryst_transf.matrix[2][2]
    _item_description.description
;              The [2][2] element of the 3x3 matrix used to transform
               coordinates as given in the ATOM_SITE category to other
               coordinates in the same category, representing a non-
               crystallographic symmetry operation.
;
    _item.name                  '_atom_sites_non_cryst_transf.matrix[2][2]'
    _item.category_id             atom_sites_non_cryst_transf
    _item.mandatory_code          no
    _item_sub_category.id         matrix
    _item_type.code               float
     save_

save__atom_sites_non_cryst_transf.matrix[2][3]
    _item_description.description
;              The [2][3] element of the 3x3 matrix used to transform
               coordinates as given in the ATOM_SITE category to other
               coordinates in the same category, representing a non-
               crystallographic  symmetry operation.
;
    _item.name                  '_atom_sites_non_cryst_transf.matrix[2][3]'
    _item.category_id             atom_sites_non_cryst_transf
    _item.mandatory_code          no
    _item_sub_category.id         matrix
    _item_type.code               float
     save_

save__atom_sites_non_cryst_transf.matrix[3][1]
    _item_description.description
;              The [3][1] element of the 3x3 matrix used to transform
               coordinates as given in the ATOM_SITE category to other
               coordinates in the same category, representing a non-
               crystallographic symmetry operation.
;
    _item.name                  '_atom_sites_non_cryst_transf.matrix[3][1]'
    _item.category_id             atom_sites_non_cryst_transf
    _item.mandatory_code          no
    _item_sub_category.id         matrix
    _item_type.code               float
     save_

save__atom_sites_non_cryst_transf.matrix[3][2]
    _item_description.description
;              The [3][2] element of the 3x3 matrix used to transform
               coordinates as given in the ATOM_SITE category to other
               coordinates in the same category, representing a non-
               crystallographic symmetry operation.
;
    _item.name                  '_atom_sites_non_cryst_transf.matrix[3][2]'
    _item.category_id             atom_sites_non_cryst_transf
    _item.mandatory_code          no
    _item_sub_category.id         matrix
    _item_type.code               float
     save_

save__atom_sites_non_cryst_transf.matrix[3][3]
    _item_description.description
;              The [3][3] element of the 3x3 matrix used to transform
               coordinates as given in the ATOM_SITE category to other
               coordinates in the same category, representing a non-
               crystallographic symmetry operation.
;
    _item.name                  '_atom_sites_non_cryst_transf.matrix[3][3]'
    _item.category_id             atom_sites_non_cryst_transf
    _item.mandatory_code          no
    _item_sub_category.id         matrix
    _item_type.code               float
     save_

save__atom_sites_non_cryst_transf.result_given
    _item_description.description
;              The value of _atom_sites_non_cryst_transf.result_given
               is 'yes' or 'no' (default) indicating whether or not
               applying the non-crystallographic tranformation to
               atom sites in the domain of the transformation results
               in atom sites for which the new coordinates approximate
               the coordinates of atom sites given elsewhere in the
               data block.  The value 'yes' should be used even if
               there is only a partial match.
;
    _item.name                  '_atom_sites_non_cryst_transf.result_given'
    _item.category_id             atom_sites_non_cryst_transf
    _item.mandatory_code          implicit
    _item_type.code               char
    _item_default.value           no
     loop_
    _item_enumeration.value
    _item_enumeration.detail
                                  yes  'some resulting atoms sites given'
                                  no   'no resulting atom sites given'
     save_

save__atom_sites_non_cryst_transf.vector[1]
    _item_description.description
;              The [1] element of the 3-element vector used to transform
               coordinates as given in the ATOM_SITE category to other
               coordinates in the same category, representing a non-
               crystallographic symmetry operation.

    _item.name                  '_atom_sites_non_cryst_transf.vector[1]'
    _item.category_id             atom_sites_non_cryst_transf
    _item.mandatory_code          no
    _item_type.code               float
    _item_default.value           0.0
    _item_sub_category.id         vector
     save_

save__atom_sites_non_cryst_transf.vector[2]
    _item_description.description
;              The [2] element of the 3-element vector used to transform
               coordinates as given in the ATOM_SITE category to other
               coordinates in the same category, representing a non-
               crystallographic symmetry operation.
;
    _item.name                  '_atom_sites_non_cryst_transf.vector[2]'
    _item.category_id             atom_sites_non_cryst_transf
    _item.mandatory_code          no
    _item_type.code               float
    _item_default.value           0.0
    _item_sub_category.id         vector
     save_

save__atom_sites_non_cryst_transf.vector[3]
    _item_description.description
;              The [3] element of the 3-element vector used to transform
               coordinates as given in the ATOM_SITE category to other
               coordinates in the same category, representing a non-
               crystallographic symmetry operation.
;
    _item.name                  '_atom_sites_non_cryst_transf.vector[3]'
    _item.category_id             atom_sites_non_cryst_transf
    _item.mandatory_code          no
    _item_type.code               float
    _item_default.value           0.0
    _item_sub_category.id         vector
     save_

########################################
## ATOM_SITES_NON_CRYST_TRANSF_DOMAIN ##
########################################

save_ATOM_SITES_NON_CRYST_TRANSF_DOMAIN
    _category.description
;              Data items in the ATOM_SITES_NON_CRYST_TRANSF_DOMAIN category
               record domains to which transformations given in the
               atom_sites_non_cryst_transf category should be applied.
               Domains may be given by structural element id (as, for example,
               _atom_site.label_asym_id) with an optional range of  
               sequence ids or sequence numbers.  Multiple domains may
               be specified.
;
    _category.id                  atom_sites_non_cryst_transf_domain
    _category.mandatory_code      no
    _category_key.name          '_atom_sites_non_cryst_transf_domain.id'
     loop_
    _category_group.id           'inclusive_group'
                                 'atom_group'
     loop_
    _category_examples.detail
    _category_examples.case
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;
    Example 1 - TO BE PROVIDED
;
;

;
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     save_

#****************************************************************************
# **** NOTE -- entries into the loops in save__struct_asym.id are
#      needed to establish relationships for the next item
#****************************************************************************

save__atom_sites_non_cryst_transf_domain.asym_id
    _item_description.description
;              The value of _atom_sites_non_cryst_transf_domain.asym_id
               identifies a structural element to which the transformation
               specified by _atom_sites_non_cryst_transf_domain.id is
               to be applied.

               This data item is a pointer to _atom_site.label_asym_id
               in the ATOM_SITE category and to _struct_asym.id in the
               STRUCT_ASYM category.
;
    _item.name                  '_atom_sites_non_cryst_transf_domain.asym_id'
    _item.category_id             atom_sites_non_cryst_transf_domain
    _item.mandatory_code          no
    _item_type.code               char
     save_

save__atom_sites_non_cryst_transf_domain.id
    _item_description.description
;              The value of _atom_sites_non_cryst_transf_domain.id
               links domains to which non-crystallographic transformations
               are to be applied.

               This data item is a pointer to
                 _atom_sites_non_cryst_transf.id
               in the ATOM_SITES_NON_CRYST_TRANSF category
;
    _item.name                  '_atom_sites_non_cryst_transf_domain.id'
    _item.category_id             atom_sites_non_cryst_transf_domain
    _item.mandatory_code          yes
    _item_type.code               char

     save_

#****************************************************************************
# **** NOTE -- entries into the loops in save__atom_site.label_seq_id are
#      needed to establish relationships for the next two items
#****************************************************************************


save__atom_sites_non_cryst_transf_domain.seq_id1
    _item_description.description
;              The value of _atom_sites_non_cryst_transf_domain.seq_id1
               identifies the first of a range of atom sites label_seq_id's
               to which the transformation specified by 
               _atom_sites_non_cryst_transf_domain.id is to be applied.

               Note that this field need _not_ be numeric.  The "first"
               atom_site.label_comp_id in a polypeptide chain is the
               one which is closest to the N-terminus of the chain.
               The "first" atom_site.label_comp_id in a polynucleotide
               chain is the one closest to the 5'-terminus of the chain. 

               If not specified, the first label_seq_id within the
               label_asym_id used is assumed.

               This data item is a pointer to _atom_site.label_seq_id
               in the ATOM_SITE category.
;
    _item.name                  '_atom_sites_non_cryst_transf_domain.seq_id1'
    _item.category_id             atom_sites_non_cryst_transf_domain
    _item.mandatory_code          implicit
    _item_type.code               char
     save_

save__atom_sites_non_cryst_transf_domain.seq_id2
    _item_description.description
;              The value of _atom_sites_non_cryst_transf_domain.seq_id2
               identifies the last of a range of atom site label_seq_id's
               to which the transformation specified by 
               _atom_sites_non_cryst_transf_domain.id is to be applied.

               Note that this field need _not_ be numeric.  The "last"
               atom_site.label_comp_id in a polypeptide chain is the
               one which is furthest from the N-terminus of the chain.
               The "last" atom_site.label_comp_id in a polynucleotide
               chain is the one furthest the 5'-terminus of the chain. 

               If not specified, the last label_seq_id within the
               label_asym_id used is assumed.

               This data item is a pointer to _atom_site.label_seq_id
               in the ATOM_SITE category.
;
    _item.name                  '_atom_sites_non_cryst_transf_domain.seq_id2'
    _item.category_id             atom_sites_non_cryst_transf_domain
    _item.mandatory_code          implicit
    _item_type.code               char
     save_

#****************************************************************************
# **** NOTE -- entries into the loops in save__entity_poly_seq.num are
#      needed to establish relationships for the next two items
#****************************************************************************

save__atom_sites_non_cryst_transf_domain.seq_num1
    _item_description.description
;              The value of _atom_sites_non_cryst_transf_domain.seq_num1
               identifies the first of a range of atom sites to which 
               the transformation specified by 
               _atom_sites_non_cryst_transf_domain.id is to be applied.

               If not specified, the first seq_num within the
               label_asym_id used is assumed.

               This data item is a pointer to _atom_site.entity_seq_num
               in the ATOM_SITE category and to _entity_poly_seq.num in the
               ENTITY_POLY_SEQ category.
;
    _item.name                  '_atom_sites_non_cryst_transf_domain.seq_num1'
    _item.category_id             atom_sites_non_cryst_transf_domain
    _item.mandatory_code          implicit
    _item_type.code               int
     save_

save__atom_sites_non_cryst_transf_domain.seq_num2
    _item_description.description
;              The value of _atom_sites_non_cryst_transf_domain.seq_num2
               identifies the last of a range of atom sites to which 
               the transformation specified by 
               _atom_sites_non_cryst_transf_domain.id is to be applied.

               If not specified, the last seq_num within the
               label_asym_id used is assumed.

               This data item is a pointer to _atom_site.entity_seq_num
               in the ATOM_SITE category and to _entity_poly_seq.num in the
               ENTITY_POLY_SEQ category.
;
    _item.name                  '_atom_sites_non_cryst_transf_domain.seq_num2'
    _item.category_id             atom_sites_non_cryst_transf_domain
    _item.mandatory_code          implicit
    _item_type.code               int
     save_






###################################################################
#                                                                 #
# The following definitions are intended to convey the information#
# contained in the PDB ORIGX entries, which give the transform    #
# necessary to return the coordinates as presented to the         #
# coordinates as submitted.                                       #
#                                                                 #
###################################################################
      






save__atom_sites.revert_original_transf_matrix[1][1]
    _item_description.description
;              The [1][1] element of the 3x3 matrix used to transform
               coordinates as given in the ATOM_SITE category to 
               the original coordinate system as received for
               preparation of the data block.

;
    _item.name                 '_atom_sites.revert_original_transf_matrix[1][1]'
    _item.category_id             atom_sites
    _item.mandatory_code          no
    _item_sub_category.id         matrix
    _item_type.code               float
     save_

save__atom_sites.revert_original_transf_matrix[1][2]
    _item_description.description
;              The [1][2] element of the 3x3 matrix used to transform
               coordinates as given in the ATOM_SITE category to 
               the original coordinate system as received for
               preparation of the data block.
;
    _item.name                 '_atom_sites.revert_original_transf_matrix[1][2]'
    _item.category_id             atom_sites
    _item.mandatory_code          no
    _item_sub_category.id         matrix
    _item_type.code               float
     save_

save__atom_sites.revert_original_transf_matrix[1][3]
    _item_description.description
;              The [1][3] element of the 3x3 matrix used to transform
               coordinates as given in the ATOM_SITE category to 
               the original coordinate system as received for
               preparation of the data block.
;
    _item.name                  '_atom_sites.revert_original_transf_matrix[1][3]'
    _item.category_id             atom_sites
    _item.mandatory_code          no
    _item_sub_category.id         matrix
    _item_type.code               float
     save_

save__atom_sites.revert_original_transf_matrix[2][1]
    _item_description.description
;              The [2][1] element of the 3x3 matrix used to transform
               coordinates as given in the ATOM_SITE category to 
               the original coordinate system as received for
               preparation of the data block.
;
    _item.name                 '_atom_sites.revert_original_transf_matrix[2][1]'
    _item.category_id             atom_sites
    _item.mandatory_code          no
    _item_sub_category.id         matrix
    _item_type.code               float
     save_

save__atom_sites.revert_original_transf_matrix[2][2]
    _item_description.description
;              The [2][2] element of the 3x3 matrix used to transform
               coordinates as given in the ATOM_SITE category to 
               the original coordinate system as received for
               preparation of the data block.
;
    _item.name                 '_atom_sites.revert_original_transf_matrix[2][2]'
    _item.category_id             atom_sites
    _item.mandatory_code          no
    _item_sub_category.id         matrix
    _item_type.code               float
     save_

save__atom_sites.revert_original_transf_matrix[2][3]
    _item_description.description
;              The [2][3] element of the 3x3 matrix used to transform
               coordinates as given in the ATOM_SITE category to 
               the original coordinate system as received for
               preparation of the data block.
;
    _item.name                 '_atom_sites.revert_original_transf_matrix[2][3]'
    _item.category_id             atom_sites
    _item.mandatory_code          no
    _item_sub_category.id         matrix
    _item_type.code               float
     save_

save__atom_sites.revert_original_transf_matrix[3][1]
    _item_description.description
;              The [3][1] element of the 3x3 matrix used to transform
               coordinates as given in the ATOM_SITE category to 
               the original coordinate system as received for
               preparation of the data block.
;
    _item.name                 '_atom_sites.revert_original_transf_matrix[3][1]'
    _item.category_id             atom_sites
    _item.mandatory_code          no
    _item_sub_category.id         matrix
    _item_type.code               float
     save_

save__atom_sites.revert_original_transf_matrix[3][2]
    _item_description.description
;              The [3][2] element of the 3x3 matrix used to transform
               coordinates as given in the ATOM_SITE category to 
               the original coordinate system as received for
               preparation of the data block.
;
    _item.name                 '_atom_sites.revert_original_transf_matrix[3][2]'
    _item.category_id             atom_sites
    _item.mandatory_code          no
    _item_sub_category.id         matrix
    _item_type.code               float
     save_

save__atom_sites.revert_original_transf_matrix[3][3]
    _item_description.description
;              The [3][3] element of the 3x3 matrix used to transform
               coordinates as given in the ATOM_SITE category to 
               the original coordinate system as received for
               preparation of the data block.
;
    _item.name                 '_atom_sites.revert_original_transf_matrix[3][3]'
    _item.category_id             atom_sites
    _item.mandatory_code          no
    _item_sub_category.id         matrix
    _item_type.code               float
     save_

save__atom_sites.revert_original_transf_vector[1]
    _item_description.description
;              The [1] element of the 3-element vector used to transform
               coordinates as given in the ATOM_SITE category to 
               the original coordinate system as received for
               preparation of the data block.

    _item.name                  '_atom_sites.revert_original_transf_vector[1]'
    _item.category_id             atom_sites
    _item.mandatory_code          no
    _item_type.code               float
    _item_default.value           0.0
    _item_sub_category.id         vector
     save_

save__atom_sites.revert_original_transf_vector[2]
    _item_description.description
;              The [2] element of the 3-element vector used to transform
               coordinates as given in the ATOM_SITE category to 
               the original coordinate system as received for
               preparation of the data block.
;
    _item.name                  '_atom_sites.revert_original_transf_vector[2]'
    _item.category_id             atom_sites
    _item.mandatory_code          no
    _item_type.code               float
    _item_default.value           0.0
    _item_sub_category.id         vector
     save_

save__atom_sites.revert_original_transf_vector[3]
    _item_description.description
;              The [3] element of the 3-element vector used to transform
               coordinates as given in the ATOM_SITE category to 
               the original coordinate system as received for
               preparation of the data block.
;
    _item.name                  '_atom_sites.revert_original_transf_vector[3]'
    _item.category_id             atom_sites
    _item.mandatory_code          no
    _item_type.code               float
    _item_default.value           0.0
    _item_sub_category.id         vector
     save_


--- End of forwarded message from Herbert J. Bernstein <yaya@dynamics.chm.bnl.gov>