Preprocessing
BiochemicalAlgorithms.FragmentDBBiochemicalAlgorithms.backbone_hydrogen_bondsBiochemicalAlgorithms.build_bonds!BiochemicalAlgorithms.default_fragmentdbBiochemicalAlgorithms.infer_topology!BiochemicalAlgorithms.label_terminal_fragments!BiochemicalAlgorithms.normalize_names!BiochemicalAlgorithms.predict_hbonds!BiochemicalAlgorithms.predict_secondary_structure!BiochemicalAlgorithms.reconstruct_fragments!
Fragment database
BiochemicalAlgorithms.FragmentDB — Type
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.
BiochemicalAlgorithms.default_fragmentdb — Function
default_fragmentdb() -> FragmentDB{Float32}
Returns the global default fragment database.
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 = truelabel_terminal_fragments::Bool = truereconstruct_fragments::Bool = truebuild_bonds::Bool = true
All keyword arguments enable or disable the corresponding preprocessors.
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.
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.
This preprocessor expects fragment and atom names to be normalized (cf. normalize_names!).
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.
This preprocessor expects fragment and atom names to be normalized and fragment terminals to be labeled (cf. normalize_names! and label_terminal_fragments!).
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.
This preprocessor expects fragment and atom names to be normalized and fragment terminals to be labeled (cf. normalize_names! and label_terminal_fragments!).
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 algorithmDSSP(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)BiochemicalAlgorithms.backbone_hydrogen_bonds — Function
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)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)