Preprocessing

Fragment database

BiochemicalAlgorithms.FragmentDBType
struct FragmentDB{T<:Real}

Fragment database. Contains information about common biomolecule fragments such as amino acids and nucleotides that can be used to reconstruct incomplete systems.

Constructors

FragmentDB(path::AbstractString = ball_data_path("fragmentdb/FragmentDB.json"))

Creates a new FragmentDB{Float32} from the given configuration file.

FragmentDB{T}(path::AbstractString = ball_data_path("fragmentdb/FragmentDB.json"))

Creates a new FragmentDB{T} from the given configuration file.

source
BiochemicalAlgorithms.infer_topology!Function
infer_topology!(::AbstractAtomContainer{Float32})
infer_topology!(::AbstractAtomContainer{T}, ::FragmentDB{T})

Apply standard preprocessing functions to the given atom container, using the default/given fragment database. By default, this calls (in order): normalize_names!, label_terminal_fragments!, reconstruct_fragments!, and build_bonds!.

Supported keyword arguments

  • normalize_names::Bool = true
  • label_terminal_fragments::Bool = true
  • reconstruct_fragments::Bool = true
  • build_bonds::Bool = true

All keyword arguments enable or disable the corresponding preprocessors.

Warning

Caution is advised when partly enabling/disabling preprocessors, as they might depend on each other. Please refer to the corresponding documentation.

source

Name normalization

BiochemicalAlgorithms.normalize_names!Function
normalize_names!(::AbstractAtomContainer{Float32})
normalize_names!(::AbstractAtomContainer{T}, ::FragmentDB{T})

Attempts to normalize fragment and atom names according to the default/given fragment database.

Supported keyword arguments

  • naming_standard::AbstractString = "" The naming standard to be used for normalization. If empty, the default naming standard of the fragment database is used.
source

Fragment terminal labeling

BiochemicalAlgorithms.label_terminal_fragments!Function
label_terminal_fragments!(::AbstractAtomContainer{Float32})
label_terminal_fragments!(::AbstractAtomContainer{T}, ::FragmentDB{T})

Attempt to label terminal fragments, i.e., assign the N_TERMINAL/C_TERMINAL flag to the first/last fragment of all residue chains and the 5_PRIME/3_PRIME flag to the first/last fragment of all nucleotide chains, respectively.

Note

This preprocessor expects fragment and atom names to be normalized (cf. normalize_names!).

source

Fragment reconstruction

BiochemicalAlgorithms.reconstruct_fragments!Function
reconstruct_fragments!(::AbstractAtomContainer{Float32})
reconstruct_fragments!(::AbstractAtomContainer{T}, ::FragmentDB{T})

Attempts to reconstruct all fragments in the given container according to the default/given fragment database and returns the number of inserted atoms.

Note

This preprocessor expects fragment and atom names to be normalized and fragment terminals to be labeled (cf. normalize_names! and label_terminal_fragments!).

source

Bond construction

BiochemicalAlgorithms.build_bonds!Function
build_bonds!(::AbstractAtomContainer{Float32})
build_bonds!(::AbstractAtomContainer{T}, ::FragmentDB{T})

Attempts to construct missing bonds in the given container, according to the default/given fragment database, and returns the number of built bonds.

Note

This preprocessor expects fragment and atom names to be normalized and fragment terminals to be labeled (cf. normalize_names! and label_terminal_fragments!).

source

Hydrogen bond prediction

BiochemicalAlgorithms.predict_hbonds!Function
predict_hbonds!(
    ac::AbstractAtomContainer,
    method::Symbol
) -> Any
predict_hbonds!(
    ac::AbstractAtomContainer,
    method::Symbol,
    h_bond_from_donor::Bool
) -> Any

Predict hydrogen bonds for a given AtomContainer.

The method parameter selects one of the implemented strategies for H-bond prediction. Bonds can be created between the donor and acceptor atoms (e.g., N and O), which is the default, or between the hydrogen and the acceptor (e.g., H and O). This behaviour is controlled by the h_bond_from_donor-switch.

Available methods

  • :KABSCH_SANDER: only predicts protein backbone hydrogen bonds as required for secondary structure prediction with the Kabsch-Sander algorithm DSSP (Kabsch W & Sander C (1983). Dictionary of protein secondary structure: pattern recognition of hydrogen-bonded and geometrical features. Biopolymers, 22, 2577-2637".)

  • :WISHART_ET_AL: predicts hydrogen bonds between amid and α-hydrogens (H/HA) and carbonyl oxygens in the backbone (O) or sidechain oxygens (OD, OE, OG, OH). This method follows the criterion given in (Neal, S., Nip, A. M., Zhang, H., and Wishart, D. S. (2003). Rapid and accurate calculation of protein 1H, 13C and 15N chemical shifts. J Biomol NMR, 26(3):215-240.

Example

predict_hbonds!(sys, :WISHART_ET_AL)
source
BiochemicalAlgorithms.backbone_hydrogen_bondsFunction
backbone_hydrogen_bonds(ac::AbstractAtomContainer) -> Any

Return all backbone hydrogen bonds in the given atom container.

The criterion for a hydrogen bond to be a backbone bond is as follows:

  • the bond connects a donor nitrogen or hydrogen with the name "N" or "H" with an oxygen named "O"
  • the bond connects atoms in two different fragments

Example

backbone_hydrogen_bonds(sys)
source

Secondary structure prediction

BiochemicalAlgorithms.predict_secondary_structure!Function
predict_secondary_structure!(
    ac::AbstractAtomContainer
) -> String

Predict secondary structure from 3D structure for a given AtomContainer.

The implementation follows the DSSP algorithm described in

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

When applied to a protein, it removes the instances of SecondaryStructure from the protein, predicts the secondary structure elements based (mostly) on H-bond patterns and backbone torsions and reinserts the appropriate secondary structure elements at the predicted positions.

A previous H-Bond prediction for the backbone is needed, as implemented in the KABSCH_SANDER variant of the predict_hbonds! method

Example

infer_topology!(sys)
predict_hbonds!(sys, :KABSCH_SANDER)
predict_secondary_structure!(sys)
source