Source code for CADETProcess.processModel.binding

from typing import Any, Optional

import numpy as np

from CADETProcess import CADETProcessError
from CADETProcess.dataStructure import (
    Bool,
    DependentlyModulatedUnsignedList,
    RangedInteger,
    SizedFloatList,
    SizedRangedIntegerList,
    SizedUnsignedIntegerList,
    SizedUnsignedList,
    String,
    Structure,
    UnsignedFloat,
    UnsignedInteger,
    frozen_attributes,
)

from .componentSystem import ComponentSystem

__all__ = [
    "BindingBaseClass",
    "NoBinding",
    "Linear",
    "Langmuir",
    "LangmuirLDF",
    "LangmuirLDFLiquidPhase",
    "BiLangmuir",
    "BiLangmuirLDF",
    "FreundlichLDF",
    "StericMassAction",
    "AntiLangmuir",
    "Spreading",
    "MobilePhaseModulator",
    "ExtendedMobilePhaseModulator",
    "SelfAssociation",
    "BiStericMassAction",
    "MultistateStericMassAction",
    "SimplifiedMultistateStericMassAction",
    "Saska",
    "GeneralizedIonExchange",
    "HICUnified",
    "HICConstantWaterActivity",
    "HICWaterOnHydrophobicSurfaces",
    "MultiComponentColloidal",
    "AffinityComplexTitration",
]


[docs] @frozen_attributes class BindingBaseClass(Structure): """ Abstract base class for parameters of binding models. Attributes ---------- name : str name of the binding model. component_system : ComponentSystem system of components. n_comp : int number of components. n_binding_sites : int Number of binding sites. Relevant for Multi-Site isotherms such as Bi-Langmuir. The default is 1. bound_states : list of unsigned integers. Number of binding sites per component. non_binding_component_indices : list (Hardcoded) list of non binding modifier components (e.g. pH). is_kinetic : bool If False, adsorption is assumed to be in rapid equilibriu. The default is True. parameters : dict dict with parameter values. """ name = String() is_kinetic = Bool(default=True) n_binding_sites = RangedInteger(lb=1, ub=1, default=1) _bound_states = SizedRangedIntegerList( size=("n_binding_sites", "n_comp"), lb=0, ub=1, default=1 ) non_binding_component_indices = [] _parameters = ["is_kinetic"] def __init__( self, component_system: ComponentSystem, name: Optional[str] = None, *args: Any, **kwargs: Any, ) -> None: """ Initialize binding model. Parameters ---------- component_system: ComponentSystem Component system of the binding model. name: str Name of the binding model. """ self.component_system = component_system self.name = name super().__init__(*args, **kwargs) @property def model(self) -> str: """str: Name of the binding model.""" return self.__class__.__name__ @property def component_system(self) -> ComponentSystem: """ComponentSystem: Component system of the binding model.""" return self._component_system @component_system.setter def component_system(self, component_system: ComponentSystem) -> None: if not isinstance(component_system, ComponentSystem): raise TypeError("Expected ComponentSystem") self._component_system = component_system @property def n_comp(self) -> int: """int: Number of components.""" return self.component_system.n_comp @property def bound_states(self) -> list[int]: """list[int]: Number of bound states per component.""" bound_states = self._bound_states for i in self.non_binding_component_indices: bound_states[i] = 0 return bound_states @bound_states.setter def bound_states(self, bound_states: np.ndarray) -> None: indices = self.non_binding_component_indices if any(bound_states[i] > 0 for i in indices): raise CADETProcessError("Cannot set bound state for non-binding component.") self._bound_states = bound_states @property def n_bound_states(self) -> int: """int: Number of bound states.""" return sum(self.bound_states) def __repr__(self) -> str: """str: String representation of the binding model.""" return f"{self.__class__.__name__}(\ component_system={self.component_system}, name={self.name})')" def __str__(self) -> str: """str: String representation of the binding model.""" if self.name is None: return self.__class__.__name__ return self.name
[docs] class NoBinding(BindingBaseClass): """ Dummy class for units that do not experience binging behavior. The number of components is set to zero for this class. """ def __init__(self, *args: Any, **kwargs: Any) -> None: """Initialize NoBinding.""" super().__init__(ComponentSystem(), name="NoBinding")
[docs] class Linear(BindingBaseClass): """ Linear binding model. Attributes ---------- adsorption_rate : list of unsigned floats. Adsorption rate constants. Length depends on `n_comp`. desorption_rate : list of unsigned floats. Desorption rate constants. Length depends on `n_comp`. """ adsorption_rate = SizedUnsignedList(size="n_comp") desorption_rate = SizedUnsignedList(size="n_comp") _parameters = [ "adsorption_rate", "desorption_rate", ] @property def k_eq(self) -> list[float]: """list[float]: Equilibrium constant.""" return np.divide(self.adsorption_rate, self.desorption_rate).tolist() @property def henry_coefficient(self) -> list[float]: """list[float]: Henry coefficient.""" return self.k_eq
[docs] class Langmuir(BindingBaseClass): """ Multi Component Langmuir binding model. Attributes ---------- adsorption_rate : list of unsigned floats. Adsorption rate constants. Length depends on `n_comp`. desorption_rate : list of unsigned floats. Desorption rate constants. Length depends on `n_comp`. capacity : list of unsigned floats. Maximum adsorption capacities. Length depends on `n_comp`. """ adsorption_rate = SizedUnsignedList(size="n_comp") desorption_rate = SizedUnsignedList(size="n_comp") capacity = SizedUnsignedList(size="n_comp") _parameters = [ "adsorption_rate", "desorption_rate", "capacity", ] @property def k_eq(self) -> list[float]: """list[float]: Equilibrium constant.""" return np.divide(self.adsorption_rate, self.desorption_rate).tolist() @property def henry_coefficient(self) -> list[float]: """list[float]: Henry coefficient.""" return np.multiply(self.k_eq, self.capacity).tolist()
[docs] class LangmuirLDF(BindingBaseClass): """ Multi Component Langmuir binding model with linear driving force approximation. Note, this variant is based on the equilibrium concentration q* for given c. Attributes ---------- equilibrium_constant : list of unsigned floats. Adsorption rate constants. Length depends on `n_comp`. driving_force_coefficient : list of unsigned floats. Desorption rate constants. Length depends on `n_comp`. capacity : list of unsigned floats. Maximum adsorption capacities. Length depends on `n_comp`. """ equilibrium_constant = SizedUnsignedList(size="n_comp") driving_force_coefficient = SizedUnsignedList(size="n_comp") capacity = SizedUnsignedList(size="n_comp") _parameters = [ "equilibrium_constant", "driving_force_coefficient", "capacity", ]
[docs] class LangmuirLDFLiquidPhase(BindingBaseClass): """ Multi Component Langmuir binding model with linear driving force approximation. Note, this variant is based on the equilibrium concentration c* for given q. Attributes ---------- equilibrium_constant : list of unsigned floats. Adsorption rate constants. Length depends on `n_comp`. driving_force_coefficient : list of unsigned floats. Desorption rate constants. Length depends on `n_comp`. capacity : list of unsigned floats. Maximum adsorption capacities. Length depends on `n_comp`. """ equilibrium_constant = SizedUnsignedList(size="n_comp") driving_force_coefficient = SizedUnsignedList(size="n_comp") capacity = SizedUnsignedList(size="n_comp") _parameters = [ "equilibrium_constant", "driving_force_coefficient", "capacity", ]
[docs] class BiLangmuir(BindingBaseClass): """ Multi Component Bi-Langmuir binding model. Attributes ---------- adsorption_rate : list of unsigned floats. Adsorption rate constants in state-major ordering. Length depends on `n_bound_states`. desorption_rate : list of unsigned floats. Desorption rate constants in state-major ordering. Length depends on `n_bound_states`. capacity : list of unsigned floats. Maximum adsorption capacities in state-major ordering. Length depends on `n_bound_states`. """ n_binding_sites = UnsignedInteger(default=2) adsorption_rate = SizedUnsignedList(size="n_bound_states") desorption_rate = SizedUnsignedList(size="n_bound_states") capacity = SizedUnsignedList(size="n_bound_states") _parameters = [ "adsorption_rate", "desorption_rate", "capacity", ] def __init__(self, *args: Any, n_binding_sites: int = 2, **kwargs: Any) -> None: """Initialize BiLangmuir.""" self.n_binding_sites = n_binding_sites super().__init__(*args, **kwargs)
[docs] class BiLangmuirLDF(BindingBaseClass): """ Multi Component Bi-Langmuir binding model. Attributes ---------- equilibrium_constant : list of unsigned floats. Adsorption rate constants in state-major ordering. Length depends on `n_bound_states`. driving_force_coefficient : list of unsigned floats. Desorption rate constants in state-major ordering. Length depends on `n_bound_states`. capacity : list of unsigned floats. Maximum adsorption capacities in state-major ordering. Length depends on `n_bound_states`. """ n_binding_sites = UnsignedInteger(default=2) equilibrium_constant = SizedUnsignedList(size="n_bound_states") driving_force_coefficient = SizedUnsignedList(size="n_bound_states") capacity = SizedUnsignedList(size="n_bound_states") _parameters = [ "equilibrium_constant", "driving_force_coefficient", "capacity", ] def __init__(self, *args: Any, n_binding_sites: int = 2, **kwargs: Any) -> None: """Initialize BiLangmuirLDF.""" self.n_binding_sites = n_binding_sites super().__init__(*args, **kwargs)
[docs] class FreundlichLDF(BindingBaseClass): """ Freundlich isotherm model. Attributes ---------- driving_force_coefficient : list of unsigned floats. Driving force coefficient for each component. Length depends on `n_comp`. freundlich_coefficient : list of unsigned floats. Freundlich coefficient for each component. Length depends on `n_comp`. exponent : list of unsigned floats. Freundlich exponent for each component. Length depends on `n_comp`. """ driving_force_coefficient = SizedUnsignedList(size="n_comp") freundlich_coefficient = SizedUnsignedList(size="n_comp") exponent = SizedUnsignedList(size="n_comp") _parameters = [ "driving_force_coefficient", "freundlich_coefficient", "exponent", ]
[docs] class StericMassAction(BindingBaseClass): r""" Steric Mass Action Law binding model. Attributes ---------- adsorption_rate : list of unsigned floats. Adsorption rate constants. Length depends on `n_comp`. desorption_rate : list of unsigned floats. Desorption rate constants. Length depends on `n_comp`. characteristic_charge : list of unsigned floats. Characteristic charges of the protein; The number of sites $\nu$ that the protein interacts with on the resin surface. Length depends on `n_comp`. steric_factor : list of unsigned floats. Steric factors of the protein: The number of sites $\sigma$ on the surface that are shielded by the protein and prevented from exchange with salt counterions in solution. Length depends on `n_comp`. capacity : unsigned float. Stationary phase capacity (monovalent salt counterions); The total number of binding sites available on the resin surface. reference_liquid_phase_conc : unsigned float. Reference liquid phase concentration. The default is 1.0 reference_solid_phase_conc : unsigned float. Reference liquid phase concentration. The default is 1.0 """ adsorption_rate = SizedUnsignedList(size="n_comp") desorption_rate = SizedUnsignedList(size="n_comp") characteristic_charge = SizedUnsignedList(size="n_comp") steric_factor = SizedUnsignedList(size="n_comp") capacity = UnsignedFloat() reference_liquid_phase_conc = UnsignedFloat(default=1.0) reference_solid_phase_conc = UnsignedFloat(default=1.0) _parameters = [ "adsorption_rate", "desorption_rate", "characteristic_charge", "steric_factor", "capacity", "reference_liquid_phase_conc", "reference_solid_phase_conc", ] @property def adsorption_rate_untransformed(self) -> list[UnsignedFloat]: """list[float]: Untransformed adsorption rate.""" if self.adsorption_rate is None: return None nu = np.array(self.characteristic_charge) return self.adsorption_rate * self.reference_solid_phase_conc ** (-nu) @adsorption_rate_untransformed.setter def adsorption_rate_untransformed( self, adsorption_rate_untransformed: list[float], ) -> None: if self.characteristic_charge is None: raise ValueError( "Please set nu before setting an untransformed rate constant." ) nu = np.array(self.characteristic_charge) self.adsorption_rate = ( adsorption_rate_untransformed / self.reference_solid_phase_conc ** (-nu) ).tolist() @property def desorption_rate_untransformed(self) -> list[UnsignedFloat]: """list[float]: Untransformed desorption rate.""" if self.desorption_rate is None: return None nu = np.array(self.characteristic_charge) return self.desorption_rate * self.reference_liquid_phase_conc ** (-nu) @desorption_rate_untransformed.setter def desorption_rate_untransformed( self, desorption_rate_untransformed: list[float], ) -> None: if self.characteristic_charge is None: raise ValueError( "Please set nu before setting a transformed rate constant." ) nu = np.array(self.characteristic_charge) self.desorption_rate = ( desorption_rate_untransformed / self.reference_liquid_phase_conc ** (-nu) ).tolist()
[docs] class AntiLangmuir(BindingBaseClass): """ Multi Component Anti-Langmuir adsorption isotherm. Attributes ---------- adsorption_rate : list of unsigned floats. Adsorption rate constants. Length depends on `n_comp`. desorption_rate : list of unsigned floats Desorption rate constants. Length depends on `n_comp`. capacity : list of unsigned floats. Maximum adsorption capacities. Length depends on `n_comp`. antilangmuir : list of {-1, 1}. Anti-Langmuir coefficients. Length depends on `n_comp`. """ adsorption_rate = SizedUnsignedList(size="n_comp") desorption_rate = SizedUnsignedList(size="n_comp") capacity = SizedUnsignedList(size="n_comp") antilangmuir = SizedFloatList(size="n_comp") _parameters = ["adsorption_rate", "desorption_rate", "capacity", "antilangmuir"]
[docs] class Spreading(BindingBaseClass): """ Multi Component Spreading adsorption isotherm. Attributes ---------- adsorption_rate : list of unsigned floats. Adsorption rate constants in state-major ordering. Length depends on `n_bound_states`. desorption_rate : list of unsigned floats. Desorption rate constants in state-major ordering. Length depends on `n_bound_states`. capacity : list of unsigned floats. Maximum adsorption capacities in state-major ordering. Length depends on `n_bound_states`. exchange_from_1_2 : list of unsigned floats. Exchange rates from the first to the second bound state. Length depends on `n_comp`. exchange_from_2_1 : list of unsigned floats. Exchange rates from the second to the first bound state. Length depends on `n_comp`. """ n_binding_sites = RangedInteger(lb=2, ub=2, default=2) adsorption_rate = SizedUnsignedList(size="n_bound_states") desorption_rate = SizedUnsignedList(size="n_bound_states") capacity = SizedUnsignedList(size="n_bound_states") exchange_from_1_2 = SizedUnsignedList(size="n_comp") exchange_from_2_1 = SizedUnsignedList(size="n_comp") _parameters = [ "adsorption_rate", "desorption_rate", "capacity", "exchange_from_1_2", "exchange_from_2_1", ]
[docs] class MobilePhaseModulator(BindingBaseClass): """ Mobile Phase Modulator adsorption isotherm. Attributes ---------- adsorption_rate : list of unsigned floats. Adsorption rate constants. Length depends on `n_comp`. desorption_rate : list of unsigned floats. Desorption rate constants. Length depends on `n_comp`. capacity : list of unsigned floats. Maximum adsorption capacities. Length depends on `n_comp`. ion_exchange_characteristic : list of unsigned floats. Parameters describing the ion-exchange characteristics (IEX). Length depends on `n_comp`. hydrophobicity : list of floats. Parameters describing the hydrophobicity (HIC). Length depends on `n_comp`. linear_threshold : UnsignedFloat Concentration of c0 at which to switch to linear model approximation. """ adsorption_rate = SizedUnsignedList(size="n_comp") desorption_rate = SizedUnsignedList(size="n_comp") capacity = SizedUnsignedList(size="n_comp") ion_exchange_characteristic = SizedUnsignedList(size="n_comp") beta = ion_exchange_characteristic hydrophobicity = SizedFloatList(size="n_comp") gamma = hydrophobicity linear_threshold = UnsignedFloat(default=1e-8) _parameters = [ "adsorption_rate", "desorption_rate", "capacity", "ion_exchange_characteristic", "hydrophobicity", "linear_threshold", ]
[docs] class ExtendedMobilePhaseModulator(BindingBaseClass): """ Mobile Phase Modulator adsorption isotherm. Attributes ---------- adsorption_rate : list of unsigned floats. Adsorption rate constants. Length depends on `n_comp`. desorption_rate : list of unsigned floats. Desorption rate constants. Length depends on `n_comp`. capacity : list of unsigned floats. Maximum adsorption capacities. Length depends on `n_comp`. ion_exchange_characteristic : list of unsigned floats. Parameters describing the ion-exchange characteristics (IEX). Length depends on `n_comp`. hydrophobicity : list of floats. Parameters describing the hydrophobicity (HIC). Length depends on `n_comp`. component_mode : list of unsigned integers. Mode of each component; 0 denotes the modifier component, 1 is linear binding, 2 is modified Langmuir binding. Length depends on `n_comp`. """ adsorption_rate = SizedUnsignedList(size="n_comp") desorption_rate = SizedUnsignedList(size="n_comp") capacity = SizedUnsignedList(size="n_comp") ion_exchange_characteristic = SizedUnsignedList(size="n_comp") beta = ion_exchange_characteristic hydrophobicity = SizedFloatList(size="n_comp") gamma = hydrophobicity component_mode = SizedUnsignedIntegerList(size="n_comp", ub=2) _parameters = [ "adsorption_rate", "desorption_rate", "capacity", "ion_exchange_characteristic", "hydrophobicity", "component_mode", ]
[docs] class SelfAssociation(BindingBaseClass): r""" Self Association adsorption isotherm. Attributes ---------- adsorption_rate : list of unsigned floats. Adsorption rate constants. Length depends on `n_comp`. adsorption_rate_dimerization : list of unsigned floats. Adsorption rate constants of dimerization. Length depends on `n_comp`. desorption_rate : list of unsigned floats. Desorption rate constants. Length depends on `n_comp`. characteristic_charge : list of unsigned floats. The characteristic charge $\nu$ of the protein. Length depends on `n_comp`. steric_factor : list of unsigned floats. Steric factor of of the protein. Length depends on `n_comp`. capacity : unsigned float. Stationary phase capacity (monovalent salt counterions); The total number of binding sites available on the resin surface. reference_liquid_phase_conc : unsigned float. Reference liquid phase concentration (optional, default value = 1.0). The default = 1.0 reference_solid_phase_conc : unsigned float. Reference liquid phase concentration (optional) The default = 1.0 """ adsorption_rate = SizedUnsignedList(size="n_comp") adsorption_rate_dimerization = SizedUnsignedList(size="n_comp") desorption_rate = SizedUnsignedList(size="n_comp") characteristic_charge = SizedUnsignedList(size="n_comp") steric_factor = SizedUnsignedList(size="n_comp") capacity = UnsignedFloat() reference_liquid_phase_conc = UnsignedFloat(default=1.0) reference_solid_phase_conc = UnsignedFloat(default=1.0) _parameters = [ "adsorption_rate", "adsorption_rate_dimerization", "desorption_rate", "characteristic_charge", "steric_factor", "capacity", "reference_liquid_phase_conc", "reference_solid_phase_conc", ]
[docs] class BiStericMassAction(BindingBaseClass): """ Bi Steric Mass Action adsorption isotherm. Attributes ---------- adsorption_rate : list of unsigned floats. Adsorption rate constants in state-major ordering. Length depends on `n_bound_states`. desorption_rate : list of unsigned floats. Desorption rate constants in state-major ordering. Length depends on `n_bound_states`. characteristic_charge : list of unsigned floats. Characteristic charges v(i,j) of the it-h protein with respect to the j-th binding site type in state-major ordering. Length depends on `n_bound_states`. steric_factor : list of unsigned floats. Steric factor o (i,j) of the it-h protein with respect to the j-th binding site type in state-major ordering. Length depends on `n_bound_states`. capacity : unsigned float. Stationary phase capacity (monovalent salt counterions); The total number of binding sites available on the resin surface. Length depends on `n_binding_sites`. reference_liquid_phase_conc : list of unsigned floats. Reference liquid phase concentration for each binding site type or one value for all types. The default is 1.0 reference_solid_phase_conc : list of unsigned floats. Reference solid phase concentration for each binding site type or one value for all types. The default is 1.0 """ n_binding_sites = UnsignedInteger(default=2) adsorption_rate = SizedUnsignedList(size="n_bound_states") adsorption_rate_dimerization = SizedUnsignedList(size="n_bound_states") desorption_rate = SizedUnsignedList(size="n_bound_states") characteristic_charge = SizedUnsignedList(size="n_bound_states") steric_factor = SizedUnsignedList(size="n_bound_states") capacity = SizedUnsignedList(size="n_binding_sites") reference_liquid_phase_conc = SizedUnsignedList(size="n_binding_sites", default=1) reference_solid_phase_conc = SizedUnsignedList(size="n_binding_sites", default=1) _parameters = [ "adsorption_rate", "desorption_rate", "characteristic_charge", "steric_factor", "capacity", "reference_liquid_phase_conc", "reference_solid_phase_conc", ] def __init__(self, *args: Any, n_states: int = 2, **kwargs: Any) -> None: """Initialize BiStericMassAction class.""" self.n_states = n_states super().__init__(*args, **kwargs)
[docs] class MultistateStericMassAction(BindingBaseClass): r""" Multistate Steric Mass Action adsorption isotherm. Attributes ---------- adsorption_rate : list of unsigned floats. Adsorption rate constants of the components to different bound states in component-major ordering. Length depends on `n_bound_states`. desorption_rate : list of unsigned floats. Desorption rate constants of the components to different bound states in component-major ordering. Length depends on `n_bound_states`. characteristic_charge : list of unsigned floats. Characteristic charges of the components to different bound states in component-major ordering. Length depends on `n_bound_states`. steric_factor : list of unsigned floats. Steric factor of the components to different bound states in component-major ordering. Length depends on `n_bound_states`. conversion_rate : list of unsigned floats. Conversion rates between different bound states in component-major ordering. Length: $sum_{i=1}^{n_{comp}} n_{bound, i}$ capacity : unsigned float. Stationary phase capacity (monovalent salt counterions); The total number of binding sites available on the resin surface. reference_liquid_phase_conc : unsigned float. Reference liquid phase concentration. The default = 1.0 reference_solid_phase_conc : unsigned float, optional Reference solid phase concentration. The default = 1.0 """ bound_states = SizedUnsignedIntegerList( size=("n_binding_sites", "n_comp"), default=1 ) adsorption_rate = SizedUnsignedList(size="n_bound_states") desorption_rate = SizedUnsignedList(size="n_bound_states") characteristic_charge = SizedUnsignedList(size="n_bound_states") steric_factor = SizedUnsignedList(size="n_bound_states") conversion_rate = SizedUnsignedList(size="_conversion_entries") capacity = UnsignedFloat() reference_liquid_phase_conc = UnsignedFloat(default=1) reference_solid_phase_conc = UnsignedFloat(default=1) _parameters = [ "adsorption_rate", "desorption_rate", "characteristic_charge", "steric_factor", "conversion_rate", "capacity", "reference_liquid_phase_conc", "reference_solid_phase_conc", ] @property def _conversion_entries(self) -> int: n = 0 for state in self.bound_states: n += state ** 2 return n
[docs] class SimplifiedMultistateStericMassAction(BindingBaseClass): """ Simplified multistate Steric Mass Action adsorption isotherm. Attributes ---------- adsorption_rate : list of unsigned floats. Adsorption rate constants of the components to different bound states in component-major ordering. Length depends on `n_bound_states`. desorption_rate : list of unsigned floats. Desorption rate constants of the components to different bound states in component-major ordering. Length depends on `n_bound_states`. characteristic_charge_first : list of unsigned floats. Characteristic charges of the components in the first (weakest) bound state. Length depends on `n_comp`. characteristic_charge_last : list of unsigned floats. Characteristic charges of the components in the last (strongest) bound state. Length depends on `n_comp`. quadratic_modifiers_charge : list of unsigned floats. Quadratic modifiers of the characteristic charges of the different components depending on the index of the bound state. Length depends on `n_comp`. steric_factor_first : list of unsigned floats. Steric factor of the components in the first (weakest) bound state. Length depends on `n_comp`. steric_factor_last : list of unsigned floats. Steric factor of the components in the last (strongest) bound state. Length depends on `n_comp`. quadratic_modifiers_steric : list of unsigned floats. Quadratic modifiers of the sterif factors of the different components depending on the index of the bound state. Length depends on `n_comp`. capacity : unsigned float. Stationary phase capacity (monovalent salt counterions): The total number of binding sites available on the resin surface. exchange_from_weak_stronger : list of unsigned floats. Exchangde rated from a weakly bound state to the next stronger bound state. linear_exchange_ws : list of unsigned floats. Linear exchange rate coefficients from a weakly bound state to the next stronger bound state. Length depends on `n_comp`. quadratic_exchange_ws : list of unsigned floats. Quadratic exchange rate coefficients from a weakly bound state to the next stronger bound state. Length depends on `n_comp`. exchange_from_stronger_weak : list of unsigned floats. Exchange rate coefficients from a strongly bound state to the next weaker bound state. Length depends on `n_comp`. linear_exchange_sw : list of unsigned floats. Linear exchange rate coefficients from a strongly bound state to the next weaker bound state. Length depends on `n_comp`. quadratic_exchange_sw : list of unsigned floats. Quadratic exchange rate coefficients from a strongly bound state to the next weaker bound state. Length depends on `n_comp`. reference_liquid_phase_conc : list of unsigned floats. Reference liquid phase concentration (optional, default value = 1.0). reference_solid_phase_conc : list of unsigned floats. Reference solid phase concentration (optional, default value = 1.0). """ bound_states = SizedUnsignedIntegerList( size=("n_binding_sites", "n_comp"), default=1 ) adsorption_rate = SizedUnsignedList(size="n_bound_states") desorption_rate = SizedUnsignedList(size="n_bound_states") characteristic_charge_first = SizedUnsignedList(size="n_comp") characteristic_charge_last = SizedUnsignedList(size="n_comp") quadratic_modifiers_charge = SizedUnsignedList(size="n_comp") steric_factor_first = SizedUnsignedList(size="n_comp") steric_factor_last = SizedUnsignedList(size="n_comp") quadratic_modifiers_steric = SizedUnsignedList(size="n_comp") capacity = UnsignedFloat() exchange_from_weak_stronger = SizedUnsignedList(size="n_comp") linear_exchange_ws = SizedUnsignedList(size="n_comp") quadratic_exchange_ws = SizedUnsignedList(size="n_comp") exchange_from_stronger_weak = SizedUnsignedList(size="n_comp") linear_exchange_sw = SizedUnsignedList(size="n_comp") quadratic_exchange_sw = SizedUnsignedList(size="n_comp") reference_liquid_phase_conc = UnsignedFloat(default=1) reference_solid_phase_conc = UnsignedFloat(default=1) _parameters = [ "adsorption_rate", "desorption_rate", "characteristic_charge_first", "characteristic_charge_last", "quadratic_modifiers_charge", "steric_factor_first", "steric_factor_last", "quadratic_modifiers_steric", "capacity", "exchange_from_weak_stronger", "linear_exchange_ws", "quadratic_exchange_ws", "exchange_from_stronger_weak", "linear_exchange_sw", "quadratic_exchange_sw", "reference_liquid_phase_conc", "reference_solid_phase_conc", ]
[docs] class Saska(BindingBaseClass): """ Quadratic Isotherm. Attributes ---------- henry_const : list of unsigned floats. The Henry coefficient. Length depends on `n_comp`. quadratic_factor : list of unsigned floats. Quadratic factors. Length depends on `n_comp`. """ henry_const = SizedUnsignedList(size="n_comp") quadratic_factor = SizedUnsignedList(size=("n_comp", "n_comp")) _parameters = [ "henry_const", "quadratic_factor", ]
[docs] class GeneralizedIonExchange(BindingBaseClass): r""" Generalized Ion Exchange isotherm model. Attributes ---------- adsorption_rate : list of unsigned floats. Adsorption rate constants. Length depends on `n_comp`. adsorption_rate_linear : list of unsigned floats. Linear dependence coefficient of adsorption rate on modifier component Length depends on `n_comp`. adsorption_rate_quadratic : list of unsigned floats. Quadratic dependence coefficient of adsorption rate on modifier component. Length depends on `n_comp`. adsorption_rate_cubic : list of unsigned floats. Cubic dependence coefficient of adsorption rate on modifier component. Length depends on `n_comp`. adsorption_rate_salt : list of unsigned floats. Salt coefficient of adsorption rate; difference of water-protein and salt-protein interactions. Length depends on `n_comp`. adsorption_rate_protein : list of unsigned floats. Protein coefficient of adsorption rate; difference of water-protein and protein-protein interactions. Length depends on `n_comp`. desorption_rate : list of unsigned floats. Desorption rate constants. Length depends on `n_comp`. desorption_rate_linear : list of unsigned floats. Linear dependence coefficient of desorption rate on modifier component. Length depends on `n_comp`. desorption_rate_quadratic : list of unsigned floats. Quadratic dependence coefficient of desorption rate on modifier component. Length depends on `n_comp`. desorption_rate_cubic : list of unsigned floats. Cubic dependence coefficient of desorption rate on modifier component. Length depends on `n_comp`. desorption_rate_salt : list of unsigned floats. Salt coefficient of desorption rate; difference of water-protein and salt-protein interactions. Length depends on `n_comp`. desorption_rate_protein : list of unsigned floats. Protein coefficient of desorption rate; difference of water-protein and protein-protein interactions Length depends on `n_comp`. characteristic_charge_breaks : list of unsigned floats, optional Breaks of the characteristic charge pieces in component-major ordering. Optional, only required if a piecewise cubic polynomial is used for $\nu$. Length must be a multiple of `n_comp`. characteristic_charge : list of unsigned floats. Base value for characteristic charges of the protein; The number of sites $\nu$ that the protein interacts with on the resin surface. Length depends on `n_comp` * `n_pieces`. characteristic_charge_linear : list of unsigned floats. Linear dependence coefficient of characteristic charge on modifier component. Length depends on `n_comp` * `n_pieces`. characteristic_charge_quadratic : list of unsigned floats. Quadratic dependence coefficient of characteristic charge on modifier component. Length depends on `n_comp` * `n_pieces`. characteristic_charge_cubic : list of unsigned floats. Cubic dependence coefficient of characteristic charge on modifier component. Length depends on `n_comp` * `n_pieces`. steric_factor : list of unsigned floats. Steric factors of the protein: The number of sites $\sigma$ on the surface that are shielded by the protein and prevented from exchange with salt counterions in solution. Length depends on `n_comp`. capacity : unsigned float. Stationary phase capacity (monovalent salt counterions); The total number of binding sites available on the resin surface. reference_liquid_phase_conc : unsigned float. Reference liquid phase concentration (optional, default value = 1.0). reference_solid_phase_conc : unsigned float. Reference liquid phase concentration (optional, default value = 1.0). """ non_binding_component_indices = [1] adsorption_rate = SizedFloatList(size="n_comp") adsorption_rate_linear = SizedFloatList(size="n_comp", default=0) adsorption_rate_quadratic = SizedFloatList(size="n_comp", default=0) adsorption_rate_cubic = SizedFloatList(size="n_comp", default=0) adsorption_rate_salt = SizedFloatList(size="n_comp", default=0) adsorption_rate_protein = SizedFloatList(size="n_comp", default=0) desorption_rate = SizedFloatList(size="n_comp") desorption_rate_linear = SizedFloatList(size="n_comp", default=0) desorption_rate_quadratic = SizedFloatList(size="n_comp", default=0) desorption_rate_cubic = SizedFloatList(size="n_comp", default=0) desorption_rate_salt = SizedFloatList(size="n_comp", default=0) desorption_rate_protein = SizedFloatList(size="n_comp", default=0) characteristic_charge_breaks = DependentlyModulatedUnsignedList( size="n_comp", is_optional=True ) characteristic_charge = SizedFloatList( size=("n_pieces", "n_comp"), ) characteristic_charge_linear = SizedFloatList( size=("n_pieces", "n_comp"), default=0 ) characteristic_charge_quadratic = SizedFloatList( size=("n_pieces", "n_comp"), default=0 ) characteristic_charge_cubic = SizedFloatList(size=("n_pieces", "n_comp"), default=0) steric_factor = SizedUnsignedList(size="n_comp") capacity = UnsignedFloat() reference_liquid_phase_conc = UnsignedFloat(default=1) reference_solid_phase_conc = UnsignedFloat(default=1) _parameters = [ "adsorption_rate", "adsorption_rate_linear", "adsorption_rate_quadratic", "adsorption_rate_cubic", "adsorption_rate_salt", "adsorption_rate_protein", "desorption_rate", "desorption_rate_linear", "desorption_rate_quadratic", "desorption_rate_cubic", "desorption_rate_salt", "desorption_rate_protein", "characteristic_charge_breaks", "characteristic_charge", "characteristic_charge_linear", "characteristic_charge_quadratic", "characteristic_charge_cubic", "steric_factor", "capacity", "reference_liquid_phase_conc", "reference_solid_phase_conc", ] @property def n_pieces(self) -> int: """int: Number of pieces for cubic polynomial description of nu.""" if self.characteristic_charge_breaks is None: return 1 n_pieces_all = len(self.characteristic_charge_breaks) - self.n_comp n_pieces_comp = int(n_pieces_all / self.n_comp) return n_pieces_comp
[docs] class HICConstantWaterActivity(BindingBaseClass): """ HIC based on Constant Water Activity adsorption isotherm. Attributes ---------- adsorption_rate : list of unsigned floats. Adsorption rate constants. Size depends on `n_comp`. desorption_rate : list of unsigned floats. Desorption rate constants. Size depends on `n_comp`. capacity : list of unsigned floats. Maximum adsorption capacities. Size depends on `n_comp`. hic_characteristic : list of unsigned floats. Parameters describing the number of ligands per ligand-protein interaction. Size depends on `n_comp`. beta_0 : unsigned float. Parameter describing the number of highly ordered water molecules that stabilize the hydrophobic surfaces at infinitely diluted salt concentration. beta_1 : unsigned float. Parameter describing the change in the number of highly ordered water molecules that stabilize the hydrophobic surfaces with respect to changes in the salt concentration. """ adsorption_rate = SizedFloatList(size="n_comp") desorption_rate = SizedFloatList(size="n_comp") capacity = SizedFloatList(size="n_comp") hic_characteristic = SizedFloatList(size="n_comp") beta_0 = UnsignedFloat() beta_1 = UnsignedFloat() _parameters = [ "adsorption_rate", "desorption_rate", "hic_characteristic", "capacity", "beta_0", "beta_1", ]
class HICUnified(BindingBaseClass): """HIC based on Constant Water Activity adsorption isotherm. Attributes ---------- adsorption_rate : list of unsigned floats Adsorption rate constants. Size depends on `n_comp`. desorption_rate : list of unsigned floats. Desorption rate constants. Size depends on `n_comp`. capacity : list of unsigned floats Maximum adsorption capacities. Size depends on `n_comp`. hic_characteristic : list of unsigned floats. Parameters describing the number of ligands per ligand-protein interaction. Size depends on `n_comp`. beta_0 : unsigned float Parameter describing the number of highly ordered water molecules that stabilize the hydrophobic surfaces at infinitely diluted salt concentration. beta_1 : unsigned float Parameter describing the change in the number of highly ordered water molecules that stabilize the hydrophobic surfaces with respect to changes in the salt concentration. reference_liquid_phase_conc_c1 : unsigned float. Reference for component 1 (optional, defaults to :math:`0.0`) rho : unsigned float Osmotic effect of :math:`c_0` on the water activity, calculated as osmotic_coefficient * molar_weight_of_water * ion_number. Optional, defaults to 3.35e-5 for NaCl """ adsorption_rate = SizedFloatList(size="n_comp") adsorption_rate_linear = SizedFloatList(size="n_comp") desorption_rate = SizedFloatList(size="n_comp") protein_coefficient = SizedFloatList(size="n_comp") salt_coefficient = SizedFloatList(size="n_comp") bound_protein_coefficient = SizedFloatList(size="n_comp") hic_characteristic = SizedFloatList(size="n_comp") hic_characteristic_linear = SizedFloatList(size="n_comp") capacity = SizedFloatList(size="n_comp") beta_0 = UnsignedFloat() beta_1 = UnsignedFloat() reference_liquid_phase_conc_c1 = UnsignedFloat(default=0.0) rho = UnsignedFloat(degault=3.35e-5) _parameters = [ "adsorption_rate", "adsorption_rate_linear", "desorption_rate", "protein_coefficient", "salt_coefficient", "bound_protein_coefficient", "hic_characteristic", "hic_characteristic_linear", "capacity", "beta_0", "beta_1", "reference_liquid_phase_conc_c1", "rho", ]
[docs] class HICWaterOnHydrophobicSurfaces(BindingBaseClass): """ HIC isotherm by Wang et al. based on their 2016 paper. Attributes ---------- adsorption_rate : list of unsigned floats. Adsorption rate constants. Size depends on `n_comp`. desorption_rate : list of unsigned floats. Desorption rate constants. Size depends on `n_comp`. capacity : list of unsigned floats. Maximum adsorption capacities. Size depends on `n_comp`. hic_characteristic : list of unsigned floats. Parameters describing the number of ligands per ligand-protein interaction. Size depends on `n_comp`. beta_0 : unsigned float. Parameter describing the number of highly ordered water molecules that stabilize the hydrophobic surfaces at infinitely diluted salt concentration. beta_1 : unsigned float. Parameter describing the change in the number of highly ordered water molecules that stabilize the hydrophobic surfaces with respect to changes in the salt concentration. """ adsorption_rate = SizedFloatList(size="n_comp") desorption_rate = SizedFloatList(size="n_comp") capacity = SizedFloatList(size="n_comp") hic_characteristic = SizedFloatList(size="n_comp") beta_0 = UnsignedFloat() beta_1 = UnsignedFloat() _parameters = [ "adsorption_rate", "desorption_rate", "hic_characteristic", "capacity", "beta_0", "beta_1", ]
[docs] class MultiComponentColloidal(BindingBaseClass): """ Colloidal isotherm from Xu and Lenhoff 2009. Attributes ---------- phase_ratio : unsigned float. Phase ratio. kappa_exponential : unsigned float. Screening term exponential factor. kappa_factor : unsigned float. Screening term factor. kappa_constant : unsigned float. Screening term constant. coordination_number : unsigned integer. Coordination number. logkeq_ph_exponent : list of unsigned floats. Equilibrium constant factor exponent term for pH. Size depends on `n_comp`. logkeq_power_exponent : list of unsigned floats. Equilibrium constant power exponent term for salt. Size depends on `n_comp`. logkeq_power_factor : list of unsigned floats. Equilibrium constant power factor term for salt. Size depends on `n_comp`. logkeq_exponent_factor : list of unsigned floats. Equilibrium constant exponent factor term for salt. Size depends on `n_comp`. logkeq_exponent_multiplier : list of unsigned floats. Equilibrium constant exponent multiplier term for salt. Size depends on `n_comp`. bpp_ph_exponent : list of unsigned floats.. BPP constant exponent factor term for pH. Size depends on `n_comp`. bpp_power_exponent : list of unsigned floats. Bpp constant power exponent term for salt. Size depends on `n_comp`. bpp_power_factor : list of unsigned floats. Bpp constant power factor term for salt. Size depends on `n_comp`. bpp_exponent_factor : list of unsigned floats. Bpp constant exponent factor term for salt. Size depends on `n_comp`. bpp_exponent_multiplier : list of unsigned floats. Bpp constant exponent multiplier term for salt. Size depends on `n_comp`. protein_radius : list of unsigned floats. Protein radius. Size depends on `n_comp`. kinetic_rate_constant : list of unsigned floats. Adsorption kinetics. Size depends on `n_comp`. linear_threshold : unsigned float. Linear threshold. use_ph : Boolean. Include pH or not. """ bound_states = SizedUnsignedIntegerList( size=("n_binding_sites", "n_comp"), default=1 ) phase_ratio = UnsignedFloat() kappa_exponential = UnsignedFloat() kappa_factor = UnsignedFloat() kappa_constant = UnsignedFloat() coordination_number = UnsignedInteger() logkeq_ph_exponent = SizedFloatList(size="n_comp") logkeq_power_exponent = SizedFloatList(size="n_comp") logkeq_power_factor = SizedFloatList(size="n_comp") logkeq_exponent_factor = SizedFloatList(size="n_comp") logkeq_exponent_multiplier = SizedFloatList(size="n_comp") bpp_ph_exponent = SizedFloatList(size="n_comp") bpp_power_exponent = SizedFloatList(size="n_comp") bpp_power_factor = SizedFloatList(size="n_comp") bpp_exponent_factor = SizedFloatList(size="n_comp") bpp_exponent_multiplier = SizedFloatList(size="n_comp") protein_radius = SizedFloatList(size="n_comp") kinetic_rate_constant = SizedFloatList(size="n_comp") linear_threshold = UnsignedFloat(default=1e-8) use_ph = Bool(default=False) _parameters = [ "phase_ratio", "kappa_exponential", "kappa_factor", "kappa_constant", "coordination_number", "logkeq_ph_exponent", "logkeq_power_exponent", "logkeq_power_factor", "logkeq_exponent_factor", "logkeq_exponent_multiplier", "bpp_ph_exponent", "bpp_power_exponent", "bpp_power_factor", "bpp_exponent_factor", "bpp_exponent_multiplier", "protein_radius", "kinetic_rate_constant", "linear_threshold", "use_ph", ]
class AffinityComplexTitration(BindingBaseClass): """ Colloidal isotherm from Xu and Lenhoff 2009. Attributes ---------- adsorption_rate: list of unsigned floats. Adsorption rate. Size depends on `n_comp`. desorption_rate: list of unsigned floats. Desorption rate. Size depends on `n_comp`. capacity: list of unsigned floats. Maximum adsorption capacities. Length depends on `n_comp`. eta_a: list of unsigned floats. Hill-type coefficients denoting the slope for the binding capacity changes as a function of pH changes. Length depends on `n_comp`. eta_g: list of unsigned floats. Hill-type coefficients denoting the slope for the equilibrium constant changes as a function of pH changes. Length depends on `n_comp`. pka_a: list of unsigned floats. Center point for the binding capacity changes as a function of pH changes. Length depends on `n_comp`. pka_g: list of unsigned floats. Center point for the equilibrium constant changes as a function of pH changes. Length depends on `n_comp`. """ adsorption_rate = SizedFloatList(size="n_comp") desorption_rate = SizedFloatList(size="n_comp") capacity = SizedUnsignedList(size="n_comp") eta_a = SizedUnsignedList(size="n_comp") eta_g = SizedUnsignedList(size="n_comp") pka_a = SizedUnsignedList(size="n_comp") pka_g = SizedUnsignedList(size="n_comp") _parameters = [ "adsorption_rate", "desorption_rate", "capacity", "eta_a", "eta_g", "pka_a", "pka_g", ]