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-"
