next up previous contents index
Next: Energy Function Up: Examples for Molecular Previous: A Nucleic Acid

Virus Structures or Structures with Many Identical Units

      Molecular structures with many identical units can be generated using the principles discussed above. However, it would be inefficient to generate the whole multimer in one generation protocol since the segment statement uses a pairwise atom check. Instead, a molecular structure file for a protomer should be generated. Then, the duplicate statement should be used to create the multimer. Assume that the ``protomer.psf" file contains the molecular structure of a protomer with blank segment name.

If a multimer coordinate file exists, one has to split the coordinates of the multimer into several files, one for each protomer with disjoint segment names. The following shows an example for a trimeric structure (ignore the "multiple coordinates" error messages).

structure @protomer.psf
vector do (segid="a") ( segid " " )
coordinates @a.pdb                                      {* Read protomer a.*}
duplicate segid="b" selection=( segid "a" ) end
coordinates @b.pdb                                      {* Read protomer b.*}
duplicate segid="c" selection=( segid "a" ) end
coordinates @c.pdb                                      {* Read protomer c.*}
Note that if using the NCS strict statement (Section 16.2.1), one has to create only one protomer structure.

If a protomer coordinate file exists and one knows the appropriate transformations between the monomers, one should read the monomer, use the duplicate statement to duplicate the molecular structure as well as the coordinates, and apply appropriate coordinate transformations (marked by ... in the example below) to produce the other monomers.

structure @protomer.psf
coordinate @protomer.pdb 
vector do (segid="a") ( segid " " )
duplicate segid="b" selection=( segid "a" ) end
coordinates rotate ... selection=( segid "b" end 
coordinates translate ... selection=( segid "b" )  end   
duplicate segid="c" selection=( segid "a" ) end
coordinates rotate ... selection=( segid "c" end 
coordinates translate ... selection=( segid "c" )  end



Web Manager
Sat Mar 11 09:37:37 PST 1995