Manual coordinate manipulation


The coordinate statement is used to read and manipulate coordinates, such as least-squares fitting to a comparison coordinate set, rotation, translation, and conversion between fractional and orthogonal coordinates.

Syntax

The coordinate statement options are carried out when the END statement is issued. If one wants to carry out several coordinate manipulations, each manipulation has to be initiated separately from the main level of CNS.

COORdinates coordinate-statement END is invoked from the main level of CNS. The END statement activates execution of the particular operation.

Coordinates are also read using the COORdinate statement:

  coordinates @file.pdb

Coordinates can be read into different destination within CNS using the DISPosition qualifier:

This reads Brookhaven Data Bank formatted records consisting of x,y,z coordinates, occupancies, and B-factors, while trying to match the atom name, residue name, residue number, and segment name to the internal molecular topology information. The coordinates are deposited in the main (X,Y,Z,B,Q), comparison (XCOMP, YCOMP, ZCOMP, BCOMP, QCOMP), reference (REFX, REFY, REFZ, HARM, HARM), or derivative (DX, DY, DZ, FBETA, FBETA) coordinate arrays. The information is deposited only if the atom has been selected. Note that the syntax is strict; i.e., the SELEction and the DISPosition have to be specified before one can read a . Also, the PDB convention suggests an END statement at the end of the file that will terminate the coordinate statement (default for selected atoms: (ALL); for DISPosition: MAIN).

According to the Brookhaven Protein Data Bank, the entry for atoms is defined as follows:

ATOM    837 HG23 THR  1055      -8.573   5.657  -3.818  1.00  0.00      A    
HETATM 1223  O   GLY   153A    -11.704  -9.200    .489  1.00  0.80      1MOL
      uuuuu vvvv uuuuCuuuuI   vvvvvvvvuuuuuuuuvvvvvvvvuuuuuuvvvvvv      uuuu
        atom     residue          x      y        z     q      b        segid
     number name name number     
                          ^ insertion character 
                     ^ chain identifier 
            ^ additional character for some atom names (mostly h's) 

CNS can use the chain identifier information at the stage of molecular topology generation, but the information is stored internally as a segment identifier - the characters in columns 73-76 are used for the segment name. The segment name has to match the definition in the segment statement. The insertion character is treated as part of the residue number (note: the residue number is a string consisting of a maximum of four characters). CNS ignores any reference to the atom numbers and instead generates its own numbering scheme. The REMARK record of PDB files is treated as a title record. No other type of PDB specification, such as SCALE, or SEQU, is interpreted at present, but are ignored instead. Normally, CNS expects orthogonal coordinates. The ORTHogonalize option can be used to convert fractional coordinates into orthogonal Å coordinates.

The PDB convention requires an END statement at the end of the coordinate file. CNS uses the same convention. The inclusion of the END statement implies that the coordinate statement must not be terminated with an END statement from the main level of CNS. However, if the END statement is missing in the coordinate file, parsing errors will result.

Requirements

The molecular structure has to be defined before any coordinates can be read and/or manipulated.

Examples

The first example reads the coordinates from two files into the main and comparison sets:

  coordinates @set1.pdb 

  coordinates disposition=comparison  @set2.pdb

In the second example, the first set is least-squares fitted to the second (comparison) set using Ca atoms only. Note that all atoms are translated and rotated. Then the rms difference between the two sets is computed for backbone atoms and stored in the symbol $rms_backbone. Finally, the individual rms differ- ences are printed for all backbone atoms that show rms differences greater than 1 Å.

  coordinates fit selection=( name ca ) end 
  coordinates rms selection=( name ca or name n or name c ) end 

  evaluate ($rms_backbone=$result) 

  show ( rmsd ) 
       ( attribute rmsd > 1.0 and ( name ca or name n or name c )) 

In the third example, the main coordinates are fractionalized, a translation and a rotation are applied, and the coordinates are orthogonalized again. The rotation and translation is the space-group operator (- x,y+1/2,-z).

  xray a=94.5 b=65.3 c=67.2 alpha=90 beta=90 gamma=90 end

  coordinates fractionalize end 

  coordinates rotate 
     matrix=( -1  0  0  ) 
            (  0  1  0  ) 
            (  0  0 -1  ) 
  end 

  coordinates translate 
     vector=( 0 0.5 0 ) 
  end 

  coordinates orthogonalize end 

The final example shows how to rotate the coordinates using Eulerian angles:

  coordinates rotate 
    euler=( 10., 30., 2. ) 
  end 

Back to tutorials   Next section