Protein transfer free energy and m-values
These function compute the transfer free energies of proteins from water to different solvent, using the Tanford additive transfer models.
m-values are the transfer free-energy difference, here in kcal/mol, between two structures from water to a 1M solution of a cosolvent. Estimates of m-values for denaturation events can be computed using the Creamer estimates for denatued accessible surface areas.
PDBTools.transfer_free_energy — Function
transfer_free_energy(atoms::AbstractVector{<:PDBTools.Atom}, cosolvent::AbstractString; kargs...)Calculates the transfer free energy (in 1M solution, in kcal/mol) using the Tanford transfer model, as implemented by Moeser and Horinek [1] or by Auton and Bolen [2,3].
Positional Arguments
atoms:: Atoms of the system (a vector of PDBTools.Atom objects)cosolvent::AbstractString: The cosolvent to consider.
Available models and cosolvents for each model:
- `Accessibility`: "betaine", "glycerol", "proline", "sarcosine", "sorbitol", "sucrose", "tmao", "trehalose", "urea"
- `AutonBolen`: "betaine", "glycerol", "proline", "sarcosine", "sorbitol", "sucrose", "tmao", "trehalose", "urea", "urea-app", "urea-mh"
- `MoeserHorinek`: "betaine", "glycerol", "proline", "sarcosine", "sorbitol", "sucrose", "tmao", "trehalose", "urea"
- `MoeserHorinekApp`: "betaine", "glycerol", "proline", "sarcosine", "sorbitol", "sucrose", "tmao", "trehalose", "urea"Keyword Arguments (optional)
model::Type{<:MValueModel}=AutonBolen: The model to use for the calculation.sel::Union{String,Function}=all: Selection of atoms to consider in the calculation. Can be a selection string or a function that takes anAtomand returns aBool.backbone::Function = PDBTools.isbackbone: Function to identify backbone atoms.sidechain::Function = PDBTools.issidechain: Function to identify side chain atoms.parallel:Bool = true: Set parallelization, requires starting Julia multithreaded.unitcell=nothing: if periodic boundary conditions are used, provide a 3x3 matrix with the unitcell, or alternatively a vector of length 3 with the sides, for orthorhombic cells.
Returns
A TransferFreeEnergy object, with fields:
ntatoms::Int: Number of atoms considered.tot::Float32: Total m-value (kcal/mol/M).bb::Float32: Backbone contribution to the m-value (kcal/mol/M).sc::Float32: Side chain contribution to the m-value (kcal/mol/M).residue_contributions_bb::Vector{Float32}: Backbone contributions of each residue to the m-value.residue_contributions_sc::Vector{Float32}: Side-chain contributions of each residue to the m-value.cosolvent::String: The cosolvent considered.
Example
using PDBTools
prot = read_pdb("native.pdb")
transfer_free_energy(prot, "urea")References
- https://doi.org/10.1021/jp409934q
- https://doi.org/10.1016/s0076-6879(07)28023-1
- https://www.pnas.org/doi/10.1073/pnas.0706251104
transfer_free_energy(
sasa_ats::SASA{CreamerUnitedAtomRadii},
cosolvent::AbstractString;
model::Type{<:MValueModel}=AutonBolen,
backbone::F1=isbackbone,
sel::Union{String,Function}=all,
sidechain::F2=issidechain,
parallel::Bool=true,
)Compute transfer free energies from precomputed solvent accessible surface areas. The SASAs must have been computed with CreamerUnitedAtomRadii radii.
PDBTools.mvalue — Function
mvalue(m::CreamerDenaturedModel, cosolvent::AbstractString; model=AutonBolen)Computes an estimate of the effect of a cosolvent on the m-value of denaturation of a protein.
Example
julia> using PDBTools
julia> prot = read_pdb(PDBTools.TESTPDB, "protein");
julia> m = mvalue(CreamerDenaturedModel(prot), "urea");
julia> m.tot
-1.290518033485419mvalue(
initial_state::AbstractVector{<:Atom},
final_state::AbstractVector{<:Atom},
cosolvent::AbstractString;
sel::Union{String,Function}=all,
model::Type{<:MValueModel}=AutonBolen,
backbone::Function = isbackbone,
sidechain::Function = issidechain,
parallel:Bool = true,
unitcell=nothing,
sasa_particles::Function = sasa_particles with Creamer united atom radii and no hydrogens.
)Calculates the m-value (transfer free energy of a protein in 1M solution, in kcal/mol) using the Tanford transfer model, as implemented by Moeser and Horinek [1] or by Auton and Bolen [2,3].
Positional Arguments
initial_state: Structure of the initial state, as a vector of Atom objects.final_state: Structure of the final state, as a vector of Atom objects (e. g. the denatured sate).cosolvent::AbstractString: The cosolvent to consider (case insensitive).
Available models and cosolvents for each model:
- `Accessibility`: "betaine", "glycerol", "proline", "sarcosine", "sorbitol", "sucrose", "tmao", "trehalose", "urea"
- `AutonBolen`: "betaine", "glycerol", "proline", "sarcosine", "sorbitol", "sucrose", "tmao", "trehalose", "urea", "urea-app", "urea-mh"
- `MoeserHorinek`: "betaine", "glycerol", "proline", "sarcosine", "sorbitol", "sucrose", "tmao", "trehalose", "urea"
- `MoeserHorinekApp`: "betaine", "glycerol", "proline", "sarcosine", "sorbitol", "sucrose", "tmao", "trehalose", "urea"Keyword Arguments
sel::Union{String,Function}=all: Selection of atoms to consider in the calculation. Can be a selection string or a function that takes anAtomand returns aBool.model::Type{<:MValueModel}=AutonBolen.backbone::Function = PDBTools.isbackbone: Function to identify backbone atoms.sidechain::Function = PDBTools.issidechain: Function to identify side chain atoms.parallel:Bool = true: Set parallelization, requires starting Julia multithreaded.unitcell=nothing: if periodic boundary conditions are used, provide a 3x3 matrix with the unitcell, or alternatively a vector of length 3 with the sides, for orthorhombic cells.
Returns
A MValue object, with fields:
ntatoms::Int: Number of atoms considered.tot::Float32: Total m-value (kcal/mol/M).bb::Float32: Backbone contribution to the m-value (kcal/mol/M).sc::Float32: Side chain contribution to the m-value (kcal/mol/M).residue_contributions_bb::Vector{Float32}: Backbone contributions of each residue to the m-value.residue_contributions_sc::Vector{Float32}: Side-chain contributions of each residue to the m-value.cosolvent::AbstractString: The cosolvent considered.
Example
using PDBTools
initial_state = read_pdb("native.pdb")
final_state = read_pdb("desnat.pdb")
mvalue(inital_state, final_state; model=AutonBolen, cosolvent="TMAO")References
- https://doi.org/10.1021/jp409934q
- https://doi.org/10.1016/s0076-6879(07)28023-1
- https://www.pnas.org/doi/10.1073/pnas.0706251104
mvalue(
sasa_initial::SASA{CreamerUnitedAtomRadii},
sasa_final::SASA{CreamerUnitedAtomRadii},
cosolvent::AbstractString;
sel::Union{String,Function}=all,
model::Type{<:MValueModel}=AutonBolen,
backbone::F1=isbackbone,
sidechain::F2=issidechain,
parallel::Bool=true,
) where {F1<:Function,F2<:Function}Compute m-values from precomputed solvent accessible surface areas. The SASAs must have been computed with CreamerUnitedAtomRadii radii.
Here we implement four additive transfer models: the established Auton/Bolen model, the universal-backbone Moeser/Horinek model, and the Accessibility model, which explicitly accounts for the mutual shielding between backbone and side-chain groups (see this section). (1, 2, 3). Typically, these models are used to obtain the effect of cosolvent on the structural stability of proteins, but the current implementation allows the practical use of these functions to compute m-values of more general transformations, as described in the examples.
The transfer free energy of a protein from water to a 1M solution of a cosolvent can be estimated with the transfer_free_energy function:
using PDBTools
native_state = read_pdb(PDBTools.MJC_NATIVE, "protein")
tfe = transfer_free_energy(native_state, "urea")PDBTools.TransferFreeEnergy{AutonBolen} - 69 residues to 1M "urea".
Total transfer free energy: -0.7395303 kcal mol⁻¹
Backbone contributions: -0.98496294 kcal mol⁻¹
Side-chain contributions: 0.2454326 kcal mol⁻¹The resulting TransferFreeEnegy object contains the information of the contribution of each residue to the transfer free energy obtained, split into backbone and side-chain contributions:
tfe.residue_contributions_bb[1]-0.086069845f0tfe.residue_contributions_sc[1]0.011580416f0When multiple protein conformations are of interest, the mvalue methods provide a direct way to compute the variations in transfer free energies associated to the states involved, as shown in the following examples.