AssigningSecondaryStructure

Latest Release MIT license Build Status Coverage

This package provides an easy way to assign secondary structure to proteins using a simplified version of the DSSP algorithm. The code was ported from the PyDSSP package. See the original Python package for more information on the differences between this implementation and the original DSSP algorithm

This is not a complete implementation of DSSP, as it only assigns coils/loops (represented as 1), helices (2), and strands (3). It is not as accurate as the original, but is significantly faster. For the full DSSP algorithm, check out BioStructures.jl or ProteinSecondaryStructures.jl, which both use the DSSP_jll.jl package that was auto-generated using BinaryBuilder.jl.

Installation

The package can be installed using the Julia package manager:

using Pkg;
Pkg.add("AssigningSecondaryStructure")

Usage

julia> using AssigningSecondaryStructure

julia> assign_secondary_structure("test/data/1ASS.pdb") # 1 chain
1-element Vector{Vector{Int64}}:
 [1, 1, 1, 3, 3, 3, 1, 1, 1, 1    3, 3, 3, 3, 3, 3, 3, 1, 1, 1]

julia> assign_secondary_structure("test/data/1ZAK.pdb") # 2 chains
2-element Vector{Vector{Int64}}:
 [1, 1, 1, 1, 3, 3, 3, 3, 3, 3    2, 2, 2, 2, 2, 2, 2, 1, 1, 1]
 [1, 1, 1, 1, 3, 3, 3, 3, 3, 3    2, 2, 2, 2, 2, 2, 2, 1, 1, 1]

Note: The assign_secondary_structure function can also take a vector of atom coordinate arrays of size (3, 4, L) to avoid read/write time, in cases where the atom coordinates are already loaded. The first dimension is the x, y, and z coordinates, the second dimension is the atom type (N, CA, C, O), and the third dimension is the number of residues.

Acknowledgements

This package was ported from the PyDSSP package, created by Shintaro Minami. Creating this package would have been much more difficult without the original Python code as reference.