- Categories
- Lamellae
- Lamellar Slab Partition Constant
- lamellar_Slab_APL_Partition.py
Lamellar Slab Partition Constant - lamellar_Slab_APL_Partition.py
# Note: model title and parameter table are inserted automatically
r"""
This model (Tan et al. J. Appl. Cryst. 2022) provides the scattering intensity, $I(q)$, for a lyotropic lamellar phase, randomly distributed in solution in the presence of a co-solvent which partitions into the lamellar phase. The lamellar phase structure is considered here as three layers; a core layer centered on the lamellar phase midpoint and excluding the primary solvent, and two symmetric outer layers (solvent-exposed
and solvent-containing). The co-solvent is permitted to partition into both layers of the lamellar phase.
This model describes the lamellar phase structure and co-solvent partitioning. The model is intended to be used with input parameters including; the molecular volume and bound coherent scattering length of the molecules comprising the lamellar structure, along with those of the primary solvent and co-solvent. The user is also required to enter the molar concentration of the constituent molecules.
The variable parameters are intended to be the APL, the average area per amphiphile (lipid) molecule at the core/outer layer interface, the n_W, the number of solvent (water) molecules residing in the outer layer of the bilayer, Kp, the partition constant, and P_s, the co-solvent localization constant which defines the fraction of the co-solvent located in the core layer.
This model is adapted from the lamellar_APL_Nw model in Tan et al. (2021) and earlier models (Nagle and Wiener, 1988) and the fitting function lamellar_hg (Nallet 1993) and (Berghausen 2001).
Note that the model can be applied with other combinations of input parameters/assumptions; and is ideally applied as a simultaneous fit to datasets with multiple independent measurements; such as neutron contrast variation strategies.
Definition
----------
The scattering intensity $I(q)$ is
.. math::
P(q) = \frac{4}{q^2}
\left\lbrace
\Delta \rho_H
\left[\sin[q(\delta_H + \delta_T)\ - \sin(q\delta_T)\right]
+ \Delta\rho_T\sin(q\delta_T)
\right\rbrace^2
where $\delta_T$ is $length_{tail}$, $\delta_H$ is $length_{head}$,
$\Delta\rho_H$ is the head contrast ($sld_{head} - sld_{solvent}$),
and $\Delta\rho_T$ is tail contrast ($sld_{tail} - sld_{solvent}$),
$\length_tail$ equals $(V_c+P_sV_sN_s)/APL$,
$\length_head$ equals $(V_h+N_wV_w+(1-P_s)V_sN_s)/APL$,
$\sld_head$ equals $(B_h+N_wB_w+(1-P_s)B_sN_s)/(V_h+N_wV_w+(1-P_s)V_sN_s)$,
$\sld_tails equals $(B_c+P_sB_sN_s)/(V_c+P_sV_sN_s)$. Where $V_h$, $V_c$, $V_w$, $V_s$ are the molecular volume of lipid hydrophilic headgroup, hydrophobic tails, solvent(water), co-sovlent. And $N_w$, $N_s$ are the solvent and co-solvent molecules partitioning in lipid in a per lipid basis.
The total thickness of the lamellar sheet is $\delta_H + \delta_T + \delta_T + \delta_H$.
Note that in a non aqueous solvent the chemical "head" group may be the
"Tail region" and vice-versa.
The 2D scattering intensity is calculated in the same way as 1D, where
the $q$ vector is defined as
.. math:: $q = \sqrt{q_x^2 + q_y^2}$
References
----------
>[#] Tan, L., Smith, M. D., Scott, H. L., Yahya, A., Elkins, J. G., Katsaras, J., ... & Nickels, J. D. (2022). Modeling the partitioning of amphiphilic molecules and co-solvents in biomembranes. Journal of Applied Crystallography, 55(6).
>[#] Tan, L., Elkins, J. G., Davison, B. H., Kelley, E. G., & Nickels, J. (2021). Implementation of a self-consistent slab model of bilayer structure in the SasView suite. Journal of Applied Crystallography, 54(1), 363-370.
>[#] Nagle, J., & Wiener, M. (1988). Structure of fully hydrated bilayer dispersions. Biochimica et Biophysica Acta (BBA)-Biomembranes, 942(1), 1-10
>[#] F Nallet, R Laversanne, and D Roux, *J. Phys. II France*, 3, (1993) 487-502
>[#] J Berghausen, J Zipfel, P Lindner, W Richtering, *J. Phys. Chem. B*, 105, (2001) 11081-11088
Authorship and Verification
----------------------------
* **Author: Luoxi Tan, Micholas Dean Smith, Haden L. Scott, Ahmad Yahya, James G. Elkins, John Katsaras, Hugh M O'Neill, Sai Venkatesh Pingali, Jeremy C. Smith, Brian H Davison, Jonathan D. Nickels
"""
import numpy as np
from numpy import inf
name = "lamellar_Slab_APL_Partition11"
title = "Random lamellar phase with Head and Tail Groups"
description = """\
[Random lamellar phase with Head and Tail Groups]
I(q)= 2*pi*P(q)/(2(H+T)*q^(2)), where
P(q)= see manual
layer thickness =(H+T+T+H) = 2(Head+Tail)
SLD_c = Tail scattering length density
SLD_h = Head scattering length density
SLD_s = Solvent scattering length density
background = incoherent background
scale = scale factor
B_h = Bound coherent scattering length of lipid headgroup
B_c = Bound coherent scattering length of lipid tails
B_w = Bound coherent scattering length of water
B_s = Bound coherent scattering length of co-solvent
APL = Average area per lipid
V_w = Molecular volume of water
V_h = Molecular volume of lipid headgroup
V_c = Molecular volume of lipid tails
V_s = Molecular volume of co-solvent
N_w = Number molecules of water molecule partitioned into bilayer region
N_s = Number molecules of co-solvent molecule partitioned into bilayer region
Dc = Average length of lipid tail
Dh = Average length of lipid headgroup
C_w = Concentration of solvent in the system
C_s = Concentration of co-solvent in the system
C_L = Concentration of lipid in the system
Kp = Partition coefficient
P_s = The fraction of partitioned co-solvent in hydrophobic core
"""
category = "shape:lamellae"
# pylint: disable=bad-whitespace, line-too-long
# ["name", "units", default, [lower, upper], "type","description"],
parameters = [["B_h", "1e-5*Ang", 58, [-inf, inf], "volume", "Bound coherent scattering length of lipid headgroup"],
["B_c", "1e-5*Ang", -9.05984, [-inf, inf], "volume", "Bound coherent scattering length of lipid tails"],
["B_w", "1e-5*Ang", 19.145, [-inf, inf], "volume", "Bound coherent scattering length of water"],
["B_s", "1e-5*Ang", 19.145, [-inf, inf], "volume", "Bound coherent scattering length of co-solvent"],
["V_s", "Ang^3", 20, [1, inf], "volume", "Molecular volume of co-solvent"],
["V_w", "Ang^3", 30.4, [0, inf], "volume", "Molecular volume of water"],
["V_h", "Ang^3", 211, [0, inf], "volume", "Molecular volume of lipid headgroup"],
["V_c", "Ang^3", 896.608, [0, inf], "volume", "Molecular volume of lipid tails"],
["C_w","mol/L",53,[0,inf],"volume","Concentration of solvent in the system"],
["C_s","mol/L",0.49,[0,inf],"volume","Concentration of co-solvent in the system"],
["C_L","mol/L",0.029,[0,inf],"volume","Concentration of lipid in the system"],
["Kp", "None", 19, [0, inf], "volume", "Partition coefficient"],
["P_s", "None", 0.6, [0, 1], "volume", "The fraction of partitioned co-solvent in hydrophobic core"],
["APL", "Ang^2", 60, [0, inf], "volume", "Average area per lipid"],
["N_w", "None", 20, [0, inf], "sld", "Number molecules of water molecule partitioned into bilayer region"]
]
# pylint: enable=bad-whitespace, line-too-long
# No volume normalization despite having a volume parameter
# This should perhaps be volume normalized?
def Iq(q,
B_h=58,
B_c=-9.05984,
B_w=19.145,
B_s=-5.06,
V_s=152,
V_w=30.4,
V_h=211,
V_c=896.608,
C_w=55,
C_s=0.49,
C_L = 0.029,
Kp=19,
P_s=0.6,
APL=60,
N_w=20,
):
Nw_total = C_w/C_L
Ns_total = C_s / C_L
N_s = 1/(2*(-1+Kp)*V_s)*(-Ns_total*V_s+N_w*V_w-Nw_total*V_w-Kp*(V_c+V_h-Ns_total*V_s+N_w*V_w)+(4*(-1+Kp)*Kp*Ns_total*V_s*(V_c+V_h+N_w*V_w)+(Ns_total*V_s+(-N_w+Nw_total)*V_w+Kp*(V_c+V_h-Ns_total*V_s+N_w*V_w))**2)**0.5)
SLD_h = (B_h + N_w * B_w + (1 - P_s) * N_s * B_s) / (V_h + N_w * V_w + (1 - P_s) * N_s * V_s) # the calculation of sld of headgroup
SLD_c = (B_c + P_s * N_s * B_s) / (V_c + P_s * N_s * V_s) # the calculation of sld of tail
SLD_s = (B_w*(Nw_total-N_w) + B_s*(Ns_total-N_s) ) / (V_w*(Nw_total-N_w) + V_s*(Ns_total-N_s)) # the calculation of sld of the surrounding bulk solvent
Dc = (V_c + P_s * N_s * V_s) / (APL) # the calculation of length of lipid hydrocarbon chains
Dh = (V_h + N_w * V_w + (1 - P_s) * N_s * V_s) / APL # the calculation of length of lipid headgroup
qsq = q * q # q square
drh = (SLD_h - SLD_s) # delta rho_H (the head contrast)
drt = (SLD_c - SLD_s) # delat rho_T (the tail contrast)
qT = q * Dc
Pq = drh * (np.sin(q * (Dh + Dc)) - np.sin(qT)) + drt * np.sin(qT)
Pq *= Pq
Pq *= 4.0 / (qsq)
inten = 2 * np.pi * Pq / qsq
inten /= 2.0 * (Dc + Dh)
return inten
def random(): # the random function which can generate random number for the vriable parameters
"""Return a random parameter set for the model."""
APL = np.random.uniform(1, 500)
P_s = np.random.uniform(0, 1)
N_w = np.random.uniform(0, 100)
Kp = np.random.uniform(0, 100)
pars = dict(
APL=APL,
P_s=P_s,
N_w=N_w,
Kp=Kp)
return pars
Back to Model
Download