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_energyFunction
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 an Atom and returns a Bool.
  • 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

  1. https://doi.org/10.1021/jp409934q
  2. https://doi.org/10.1016/s0076-6879(07)28023-1
  3. https://www.pnas.org/doi/10.1073/pnas.0706251104
source
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.

source
PDBTools.mvalueFunction
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.290518033485419
source
mvalue(
    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 an Atom and returns a Bool.
  • 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

  1. https://doi.org/10.1021/jp409934q
  2. https://doi.org/10.1016/s0076-6879(07)28023-1
  3. https://www.pnas.org/doi/10.1073/pnas.0706251104
source
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.

source

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.086069845f0
tfe.residue_contributions_sc[1]
0.011580416f0

When 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.