- Categories
- Cylinder
- Nanodisc
- nanodisc.py
Nanodisc - nanodisc.py
r"""
Definition
----------
This is the reparameterisation of the core shell bicelle in terms
such that it may be applied to the modeling of a phospholipid
nanodisc.
The reparameterisation is in terms of the SLD of the face and rim regions.
These are considered as the lipid heads and polymer or protein belt respectively
and therefore it is necessary to allow the SLD of them to vary with the
fractional solvation.
References
----------
.. [ # ] Idini, Ilaria. Polymer Stabilised Phospholipid Nanodiscs. Thesis
(Ph.D.) - University of Bath, 2014., 2014. `Available from Ethos
< https://ethos.bl.uk/OrderDetails.do?did = 1 & uin = uk.bl.ethos.629677 >`_
.. [ # ] Tognoloni, Cecilia. Formation of polymer-lipid nanodiscs for membrane
protein studies Thesis(Ph.D.) - University of Bath, 2017., 2017.
Authorship and Verification
----------------------------
* **Author:** Andrew R. McCluskey **Date:** November 29, 2018
"""
import numpy as np
from numpy import inf, sin, cos, pi
name = "nanodisc"
title = "Reparameterisation of the core shell bicelle"
description = """
A reparameterisation of the core shell bicelle in terms of a phophoslipid
nanodisc.
lipid_radius: Radius of core
tails_thick: Thickness of lipid tail bilayer
belt_thick: Thickness of polymer rim
heads_thick: Thickness of lipid heads
tails_sld: Scattering length density of lipid tails
belt_sld: Scattering length density of polymer belt
belt_solv: Fractional solvation of polymer belt
heads_sld: Scattering length density of lipid heads
heads_solv: Fractional solvation of lipid heads
solvent_sld: Scattering length density of solvent
"""
category = "shape:cylinder"
opencl = True
# pylint: disable=bad-whitespace, line-too-long
# ["name", "units", default, [lower, upper], "type", "description"],
parameters = [
["lipid_radius", "Ang", 80, [0, inf], "volume", "Radius of core"],
["tails_thick", "Ang", 50, [0, inf], "volume", "Thickness of lipid tail bilayer"],
["belt_thick", "Ang", 10, [0, inf], "volume", "Thickness of polymer rim"],
["heads_thick", "Ang", 10, [0, inf], "volume", "Thickness of lipid heads"],
["tails_sld", "1e-6/Ang^2", 1, [-inf, inf], "sld", "Scattering length density of lipid tails"],
["belt_sld", "1e-6/Ang^2", 4, [-inf, inf], "sld", "Scattering length density of polymer belt"],
["belt_solv", "None", 0, [0, 1], "sld", "Fractional solvation of polymer belt"],
["heads_sld", "1e-6/Ang^2", 4, [-inf, inf], "sld", "Scattering length density of lipid heads"],
["heads_solv", "None", 0, [0, 1], "sld", "Fractional solvation of lipid heads"],
["solvent_sld", "1e-6/Ang^2", 1, [-inf, inf], "sld", "Scattering length density of solvent"],
["theta", "degrees", 90, [-360, 360], "orientation", "cylinder axis to beam angle"],
["phi", "degrees", 0, [-360, 360], "orientation", "rotation about beam"]
]
# pylint: enable=bad-whitespace, line-too-long
source = ["lib/sas_Si.c", "lib/polevl.c", "lib/sas_J1.c", "lib/gauss76.c",
"nanodisc.c"]
def random():
pars = dict(
lipid_radius=10**np.random.uniform(1.3, 3),
tails_thick=10**np.random.uniform(1.3, 4),
belt_thick=10**np.random.uniform(0, 1.7),
heads_thick=10**np.random.uniform(0, 1.7),
)
return pars
demo = dict(scale=1, background=0,
lipid_radius=20.0,
tails_thick=400.0,
belt_thick=10.0,
heads_thick=10.0,
tails_sld=1.0,
belt_sld=4.0,
belt_solv=0,
heads_sld=4.0,
heads_solv=0,
solvent_sld=1.0,
theta=90,
phi=0)
q = 0.1
# april 6 2017, rkh add unit tests, NOT compared with any other calc method, assume correct!
qx = q*cos(pi/6.0)
qy = q*sin(pi/6.0)
tests = [
[{}, 0.05, 7.4883545957],
[{'theta': 80., 'phi': 10.}, (qx, qy), 2.81048892474]
]
del qx, qy # not necessary to delete, but cleaner
Back to Model
Download