Skip to contents

DsspAssign assigns the DSSP 8-state secondary structure (Kabsch and Sander 1983, with the DSSP 2.2 rules) from per-residue backbone atoms N, CA, C, O. The amide H is placed 1 A from N along the preceding C=O direction (at N for a chain start); prolines donate no H-bond. Energies (DsspHbondEnergy, E = 0.084 * 332 (1/r_ON + 1/r_CH - 1/r_OH - 1/r_CN) kcal/mol, floored at -9.9) are computed for residue pairs with CA-CA below 9 A; each donor keeps its two lowest-energy acceptors and a bond needs E below -0.5. A chain break is a C-N distance above 2.5 A or a change of chain. n-turns (n = 3, 4, 5) give H (two consecutive 4-turns), G and I where free (prefer_pi lets I overwrite H, as DSSP 2.2 and later do); parallel and antiparallel bridges form ladders, joined across bulges; a lone bridge is B, a ladder residue E; T marks residues inside turns, S bends (CA(i-2), CA(i), CA(i+2) angle above 70 degrees), and - the rest. Identical to the Python arm morie.fn.protdssp.

Usage

DsspAssign(coords, sequence = NULL, chain = NULL, prefer_pi = TRUE)

DsspHbondEnergy(n, h, c, o)

Arguments

coords

List of residues, each a list (or 4 x 3 matrix) of the N, CA, C and O coordinates in angstrom.

sequence

Optional one-letter sequence (only prolines matter).

chain

Optional chain identifier per residue.

prefer_pi

Let pi helices override alpha helices.

n, h, c, o

Coordinates of the donor N and H and the acceptor C and O.

Value

DsspAssign: list with ss (string over H, B, E, G, I, T, S and -), hbonds (per donor, up to two acceptor/energy pairs, acceptors 1-based), bridges and bend. DsspHbondEnergy: the energy in kcal/mol.

References

Kabsch, W. and Sander, C. (1983). Dictionary of protein secondary structure: pattern recognition of hydrogen-bonded and geometrical features. Biopolymers 22, 2577-2637.

McGibbon, R. T. et al. (2015). MDTraj: a modern open library for the analysis of molecular dynamics trajectories. Biophysical Journal 109, 1528-1532.

Examples

DsspHbondEnergy(c(0, 0, 0), c(1, 0, 0), c(4.2, 0, 0), c(3, 0, 0))
#> [1] -2.573
res <- lapply(0:11, function(i) {
  t <- 100 * i * pi / 180
  list(c(1.55 * cos(t - 0.45), 1.55 * sin(t - 0.45), 1.5 * i - 0.85),
       c(2.3 * cos(t), 2.3 * sin(t), 1.5 * i),
       c(1.65 * cos(t + 0.42), 1.65 * sin(t + 0.42), 1.5 * i + 0.55),
       c(1.95 * cos(t + 0.62), 1.95 * sin(t + 0.62), 1.5 * i + 1.7))
})
DsspAssign(res)$ss
#> [1] "-HHHHHHHHHH-"