Source code for pychemelt.utils.signals

"""
This module contains helper functions to obtain the signal, given certain parameters
Author: Osvaldo Burastero
"""

from .rates import (
    eq_constant_termochem,
    eq_constant_thermo
)

from .fractions import (
    fn_two_state_monomer,
    fu_two_state_dimer,
    fu_two_state_trimer,
    fu_two_state_tetramer,
)
import numpy as np

from .math import shift_temperature_K



[docs] def signal_two_state_tc_unfolding( T,D,DHm,Tm,Cp0,m0,m1, p1_N, p2_N, p3_N, p4_N, p1_U, p2_U, p3_U, p4_U, baseline_N_fx, baseline_U_fx, extra_arg=None): """ Ref: Louise Hamborg et al., 2020. Global analysis of protein stability by temperature and chemical denaturation Parameters ---------- T : array-like Temperature in Kelvin units D : array-like Denaturant agent concentration DHm : float Variation of enthalpy between the two considered states at Tm Tm : float Temperature at which the equilibrium constant equals one, in Kelvin units Cp0 : float Variation of calorific capacity between the two states m0 : float m-value at the reference temperature (Tref) m1 : float Variation of m-value with temperature p1_N, p2_N, p3_N, p4_N : float parameters describing the native-state baseline p1_U, p2_U, p3_U, p4_U : float parameters describing the unfolded-state baseline baseline_N_fx : function for the native-state baseline baseline_U_fx : function for the unfolded-state baseline extra_arg : None, optional Not used but present for API compatibility with oligomeric models Returns ------- numpy.ndarray Signal at the given temperatures and denaturant agent concentration, given the parameters """ K = eq_constant_termochem(T,D,DHm,Tm,Cp0,m0,m1) fn = fn_two_state_monomer(K) fu = 1 - fn dT = shift_temperature_K(T) # Baseline signals (with quadratic dependence on temperature) S_native = baseline_N_fx(dT,D,p1_N, p2_N, p3_N, p4_N) S_unfolded = baseline_U_fx(dT,D,p1_U, p2_U, p3_U, p4_U) return fn*(S_native) + fu*(S_unfolded)
[docs] def signal_two_state_t_unfolding( T,Tm,dHm, p1_N, p2_N, p3_N, p1_U, p2_U, p3_U, baseline_N_fx, baseline_U_fx, Cp=0, extra_arg=None): """ Two-state temperature unfolding (monomer). Parameters ---------- T : array-like Temperature Tm : float Temperature at which the equilibrium constant equals one dHm : float Variation of enthalpy between the two considered states at Tm p1_N, p2_N, p3_N : float baseline parameters for the native-state baseline p1_U, p2_U, p3_U : float baseline parameters for the unfolded-state baseline baseline_N_fx : callable function to calculate the baseline for the native state baseline_U_fx : callable function to calculate the baseline for the unfolded state Cp : float, optional Variation of heat capacity between the two states (default: 0) extra_arg : None, optional Not used but present for compatibility Returns ------- numpy.ndarray Signal at the given temperatures, given the parameters """ K = eq_constant_thermo(T,dHm,Tm,Cp) fn = fn_two_state_monomer(K) fu = 1 - fn dT = shift_temperature_K(T) S_native = baseline_N_fx(dT,0,0,p1_N,p2_N,p3_N) # No denaturant dependence, that's why d=0 and den_slope = 0 S_unfolded = baseline_U_fx(dT,0,0,p1_U,p2_U,p3_U) # No denaturant dependence, that's why d=0 and den_slope = 0 return fn*(S_native) + fu*(S_unfolded)
# Oligomeric thermal unfolding signals
[docs] def two_state_thermal_unfold_curve( T,C,Tm,dHm, p1_N, p2_N, p3_N, p4_N, p1_U, p2_U, p3_U, p4_U, baseline_N_fx, baseline_U_fx, Cp=0): """ Two-state temperature unfolding (monomer). N ⇔ U Parameters ---------- T : array-like Temperature C : array-like Oligomer sample concentration Tm : float Temperature at which the equilibrium constant equals one dHm : float Variation of enthalpy between the two considered states at Tm p1_N, p2_N, p3_N : float baseline parameters for the native-state baseline p1_U, p2_U, p3_U : float baseline parameters for the unfolded-state baseline baseline_N_fx : callable function to calculate the baseline for the native state baseline_U_fx : callable function to calculate the baseline for the unfolded state Cp : float, optional Variation of heat capacity between the two states (default: 0) Returns ------- numpy.ndarray Signal at the given temperatures, given the parameters """ K = eq_constant_thermo(T,dHm,Tm,Cp) fn = fn_two_state_monomer(K) fu = 1 - fn dT = shift_temperature_K(T) S_native = baseline_N_fx(dT,0,0,p2_N,p3_N,p4_N) S_unfolded = baseline_U_fx(dT,0,0,p2_U,p3_U,p4_U) return C * (fn * (S_native) + fu * (S_unfolded))
[docs] def two_state_thermal_unfold_curve_dimer( T,C,Tm,dHm, p1_N, p2_N, p3_N, p4_N, p1_U, p2_U, p3_U, p4_U, baseline_N_fx, baseline_U_fx, Cp=0): """ Two-state temperature unfolding (dimer). N2 ⇔ 2U C is the total concentration (M) of the protein in dimer equivalent. Parameters ---------- T : array-like Temperature C : array-like Oligomer sample concentration Tm : float Temperature at which the equilibrium constant equals one dHm : float Variation of enthalpy between the two considered states at Tm p1_N, p2_N, p3_N : float baseline parameters for the native-state baseline p1_U, p2_U, p3_U : float baseline parameters for the unfolded-state baseline baseline_N_fx : callable function to calculate the baseline for the native state baseline_U_fx : callable function to calculate the baseline for the unfolded state Cp : float, optional Variation of heat capacity between the two states (default: 0) Returns ------- numpy.ndarray Signal at the given temperatures, given the parameters Notes ----- C is the total concentration (M) of the protein in dimer equivalent. """ K = eq_constant_thermo(T,dHm,Tm,Cp) fu = fu_two_state_dimer(K,C) fn = 1 - fu dT = shift_temperature_K(T) S_native = baseline_N_fx(dT,0,0,p2_N,p3_N,p4_N) S_unfolded = baseline_U_fx(dT,0,0,p2_U,p3_U,p4_U) return C * (fn * (S_native) + fu * (S_unfolded) * 2)
[docs] def two_state_thermal_unfold_curve_trimer( T,C,Tm,dHm, p1_N, p2_N, p3_N, p4_N, p1_U, p2_U, p3_U, p4_U, baseline_N_fx, baseline_U_fx, Cp=0): """ Two-state temperature unfolding (trimer). N3 ⇔ 3U Parameters ---------- T : array-like Temperature C : array-like Oligomer sample concentration Tm : float Temperature at which the equilibrium constant equals one dHm : float Variation of enthalpy between the two considered states at Tm p1_N, p2_N, p3_N : float baseline parameters for the native-state baseline p1_U, p2_U, p3_U : float baseline parameters for the unfolded-state baseline baseline_N_fx : callable function to calculate the baseline for the native state baseline_U_fx : callable function to calculate the baseline for the unfolded state Cp : float, optional Variation of heat capacity between the two states (default: 0) Returns ------- numpy.ndarray Signal at the given temperatures, given the parameters Notes ----- C is the total concentration (M) of the protein in dimer equivalent. """ K = eq_constant_thermo(T,dHm,Tm,Cp) fu = fu_two_state_trimer(K,C) fn = 1 - fu dT = shift_temperature_K(T) S_native = baseline_N_fx(dT,0,0,p2_N,p3_N,p4_N) S_unfolded = baseline_U_fx(dT,0,0,p2_U,p3_U,p4_U) return C * (fn * (S_native) + fu * (S_unfolded) * 3)
[docs] def two_state_thermal_unfold_curve_tetramer( T,C,Tm,dHm, p1_N, p2_N, p3_N, p4_N, p1_U, p2_U, p3_U, p4_U, baseline_N_fx, baseline_U_fx, Cp=0, extra_arg=None): """ Two-state temperature unfolding (tetramer). N4 ⇔ 4U Parameters ---------- T : array-like Temperature C : array-like Oligomer sample concentration Tm : float Temperature at which the equilibrium constant equals one dHm : float Variation of enthalpy between the two considered states at Tm p1_N, p2_N, p3_N : float baseline parameters for the native-state baseline p1_U, p2_U, p3_U : float baseline parameters for the unfolded-state baseline baseline_N_fx : callable function to calculate the baseline for the native state baseline_U_fx : callable function to calculate the baseline for the unfolded state Cp : float, optional Variation of heat capacity between the two states (default: 0) Returns ------- numpy.ndarray Signal at the given temperatures, given the parameters Notes ----- C is the total concentration (M) of the protein in dimer equivalent. """ K = eq_constant_thermo(T,dHm,Tm,Cp) fu = fu_two_state_tetramer(K,C) fn = 1 - fu dT = shift_temperature_K(T) S_native = baseline_N_fx(dT,0,0,p2_N,p3_N,p4_N) S_unfolded = baseline_U_fx(dT,0,0,p2_U,p3_U,p4_U) return C * (fn * (S_native) + fu * (S_unfolded) * 4)
[docs] def map_two_state_model_to_signal_fx(model): """ Maps the model string to the signal type Parameters ---------- model : str, string representation of model type. Returns ------- function signal function corresponding to the string """ signal_fx_map = { 'Monomer': two_state_thermal_unfold_curve, 'Dimer': two_state_thermal_unfold_curve_dimer, 'Trimer': two_state_thermal_unfold_curve_trimer, 'Tetramer': two_state_thermal_unfold_curve_tetramer } return signal_fx_map.get(model)