Secondary structure assignment according to the method of Kabsch and Sander (DSSP) or the method of Frishman and Argos (STRIDE).


# S3 method for pdb
dssp(pdb, exefile = "dssp", resno=TRUE, full=FALSE, verbose=FALSE, ...)

# S3 method for pdbs
dssp(pdbs, ...)

# S3 method for xyz
dssp(xyz, pdb, ...)

stride(pdb, exefile = "stride", resno=TRUE)

# S3 method for sse
print(x, ...)



a structure object of class "pdb", obtained from read.pdb.


file path to the ‘DSSP’ or ‘STRIDE’ program on your system (i.e. how is ‘DSSP’ or ‘STRIDE’ invoked).


logical, if TRUE output is in terms of residue numbers rather than residue index (position in sequence).


logical, if TRUE bridge pairs and hbonds columns are parsed.


logical, if TRUE ‘DSSP’ warning and error messages are printed.


a list object of class "pdbs" (obtained with pdbaln or read.fasta.pdb).


a trajectory object of class "xyz", obtained from read.ncdf, read.dcd, read.crd.


an sse object obtained from dssp.pdb or stride.


additional arguments to and from functions.


This function calls the ‘DSSP’ or ‘STRIDE’ program to define secondary structure and psi and phi torsion angles.


Returns a list with the following components:


‘start’, ‘end’, ‘length’, ‘chain’ and ‘type’ of helix, where start and end are residue numbers or residue index positions depending on the value of “resno” input argument.


‘start’, ‘end’ and ‘length’ of E type sse, where start and end are residue numbers “resno”.


‘start’, ‘end’ and ‘length’ of T type sse, where start and end are residue numbers “resno”.


a numeric vector of phi angles.


a numeric vector of psi angles.


a numeric vector of solvent accessibility.


a character vector of secondary structure type per residue.


a 10 or 16 column matrix containing the bridge pair records as well as backbone NH-->O and O-->NH H-bond records. (Only available for dssp


Grant, B.J. et al. (2006) Bioinformatics 22, 2695--2696.

‘DSSP’ is the work of Kabsch and Sander: Kabsch and Sander (1983) Biopolymers. 12, 2577--2637.

For information on obtaining ‘DSSP’, see:

‘STRIDE’ is the work of Frishman and Argos: Frishman and Argos (1995) Proteins. 3, 566--579.

For information on obtaining the ‘STRIDE’ program, see:, or copy it from an installation of VMD.


Barry Grant, Lars Skjaerven (dssp.pdbs)


A system call is made to the ‘DSSP’ or ‘STRIDE’ program, which must be installed on your system and in the search path for executables. See for instructions of how to install these programs.

For the hbonds list component the column names can be used as a convenient means of data access, namely:
Bridge pair 1 “BP1”,
Bridge pair 2 “BP2”,
Backbone H-bond (NH-->O) “NH-O.1”,
H-bond energy of NH-->O “E1”,
Backbone H-bond (O-->NH) “O-HN.1”,
H-bond energy of O-->NH “E2”,
Backbone H-bond (NH-->O) “NH-O.2”,
H-bond energy of NH-->O “E3”,
Backbone H-bond (O-->NH) “O-HN.2”,
H-bond energy of O-->NH “E4”.

If ‘resno=TRUE’ the following additional columns are included:
Chain ID of resno “BP1”: “ChainBP1”,
Chain ID of resno “BP2”: “ChainBP2”,
Chain ID of resno “O-HN.1”: “Chain1”,
Chain ID of resno “NH-O.2”: “Chain2”,
Chain ID of resno “O-HN.1”: “Chain3”,
Chain ID of resno “NH-O.2”: “Chain4”.

See also


if (FALSE) { ##- PDB example # Read a PDB file pdb <- read.pdb("1bg2") sse <- dssp(pdb) sse2 <- stride(pdb) ## Short summary sse sse2 # Helix data sse$helix # Precent SSE content sum(sse$helix$length)/sum(pdb$calpha) * 100 sum(sse$sheet$length)/sum(pdb$calpha) * 100 ##- PDBs example aln <- read.fasta( system.file("examples/kif1a.fa",package="bio3d") ) pdbs <- read.fasta.pdb( aln ) ## Aligned PDB defined secondary structure pdbs$sse ## Aligned DSSP defined secondary structure sse <- dssp(pdbs) ##- XYZ Trajectory pdb <- read.pdb("2mda", multi=TRUE)$xyz, pdb) ## Note. for large MD trajectories you may want to skip some frames, e.g. xyz <- rbind(pdb$xyz, pdb$xyz) ## dummy trajectory frames <- seq(1, to=nrow(xyz), by=4) ## frame numbers to examine ss <-[frames, ], pdb) ## matrix of sse frame x residue }