Construct biological assemblies/units based on a 'pdb' object.

biounit(pdb, biomat = NULL, multi = FALSE, ncore = NULL)

Arguments

pdb

an object of class pdb as obtained from function read.pdb.

biomat

a list object as returned by read.pdb (pdb$remark$biomat), containing matrices for symmetry operation on individual chains to build biological units. It will override the matrices stored in pdb.

multi

logical, if TRUE the biological unit is returned as a 'multi-model' pdb object with each symmetric copy a distinct structural 'MODEL'. Otherwise, all copies are represented as separated chains.

ncore

number of CPU cores used to do the calculation. By default (ncore=NULL), use all available CPU cores.

Value

a list of pdb objects with each representing an individual biological unit.

Details

A valid structural/simulation study should be performed on the biological unit of a protein system. For example, the alpha2-beta2 tetramer form of hemoglobin. However, canonical PDB files usually contain the asymmetric unit of the crystal cell, which can be:

  1. One biological unit

  2. A portion of a biological unit

  3. Multiple biological units

The function performs symmetry operations to the coordinates based on the transformation matrices stored in a 'pdb' object returned by read.pdb, and returns biological units stored as a list of pdb objects.

Author

Xin-Qiu Yao

See also

Examples

# \donttest{ # PDB server connection required - testing excluded pdb <- read.pdb("2dn1")
#> Note: Accessing on-line PDB file
biounit <- biounit(pdb) pdb
#> #> Call: read.pdb(file = "2dn1") #> #> Total Models#: 1 #> Total Atoms#: 2506, XYZs#: 7518 Chains#: 2 (values: A B) #> #> Protein Atoms#: 2172 (residues/Calpha atoms#: 285) #> Nucleic acid Atoms#: 0 (residues/phosphate atoms#: 0) #> #> Non-protein/nucleic Atoms#: 334 (residues: 236) #> Non-protein/nucleic resid values: [ HEM (2), HOH (230), MBN (2), OXY (2) ] #> #> Protein sequence: #> LSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHGKK #> VADALTNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTPAV #> HASLDKFLASVSTVLTSKYRHLTPEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRF #> FESFGDLSTPDAVMGNPKVKAHGKKVLGAFSDGLAHLDNLKGTFA...<cut>...HKYH #> #> + attr: atom, xyz, seqres, helix, calpha, #> remark, call
biounit
#> $`AUTHOR.determined.tetramer (4 chains)` #> #> Call: biounit(pdb = pdb) #> #> Total Models#: 1 #> Total Atoms#: 5012, XYZs#: 15036 Chains#: 4 (values: A B C D) #> #> Protein Atoms#: 4344 (residues/Calpha atoms#: 570) #> Nucleic acid Atoms#: 0 (residues/phosphate atoms#: 0) #> #> Non-protein/nucleic Atoms#: 668 (residues: 472) #> Non-protein/nucleic resid values: [ HEM (4), HOH (460), MBN (4), OXY (4) ] #> #> Protein sequence: #> LSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHGKK #> VADALTNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTPAV #> HASLDKFLASVSTVLTSKYRHLTPEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRF #> FESFGDLSTPDAVMGNPKVKAHGKKVLGAFSDGLAHLDNLKGTFA...<cut>...HKYH #> #> + attr: atom, helix, sheet, seqres, xyz, #> calpha, call, log #>
# } if (FALSE) { biounit <- biounit(read.pdb("2bfu"), multi=TRUE) write.pdb(biounit[[1]], file="biounit.pdb") # open the pdb file in VMD to have a look on the biological unit }