Usage
In this page, you can find examples of how to use MembraneCurvature to derive curvature profiles in three types of systems:
Note
Examples included in this page show how to use MembraneCurvature using data files from MDAnalysisTests. In order to run the examples here provided, MDAnalysisTests must be installed.
1. Membrane-only systems
In this example, we show a basic usage of MembraneCurvature in a system that
comprises a lipid bilayer of DPPC:CHOL using the Martini force field. Since we
have a bilayer, we select atoms of phoshpholipid head groups in the upper
leaflet only using the select
parameter and apply coordinate wrapping.
Once we run MembraneCurvature
, we can extract the values of mean and
Gaussian curvature:
import MDAnalysis as mda
from membrane_curvature.base import MembraneCurvature
from MDAnalysis.tests.datafiles import Martini_membrane_gro
universe = mda.Universe(Martini_membrane_gro)
curvature_upper_leaflet = MembraneCurvature(universe,
select='resid 1-225 and name PO4',
n_x_bins=8,
n_y_bins=8,
wrap=True).run()
# extract mean curvature
mean_upper_leaflet = curvature_upper_leaflet.results.average_mean
# extract Gaussian
gaussian_upper_leaflet = curvature_upper_leaflet.results.average_gaussian
You can find more complex examples in the tutorial notebooks.
2.1 Membrane-protein systems
2.1.1 Membrane-protein systems, protein with position restraints
In this example, we have a simulation box comprising a copy of the Yiip transporter, embedded in a lipid bilayer of POPE:POPG. Similar to the example for membrane-only, we select the atoms for the upper leaflet and apply coordinate wrapping. Then, we can calculate membrane curvature as:
import MDAnalysis as mda
from membrane_curvature.base import MembraneCurvature
from MDAnalysis.tests.datafiles import XTC_MEMPROT, GRO_MEMPROT
universe = mda.Universe(GRO_MEMPROT, XTC_MEMPROT)
curvature_upper_leaflet = MembraneCurvature(universe,
select='resid 297-517 and name P',
n_x_bins=2,
n_y_bins=2,
wrap=True).run
avg_mean_curvature_upper_leaflet = curvature_upper_leaflet.results.average_mean_curvature
Note
When passing raw trajectories, in systems of 1. Membrane-only systems and
2.1.1 Membrane-protein systems, protein with position restraints set wrap=True
to improve sampling.
Some points to keep in mind when calculating membrane curvature in 1. Membrane-only systems and 2.1.1 Membrane-protein systems, protein with position restraints are addressed in this blog post.
2.1.2. Membrane-protein systems, protein with no position restraints
For membrane-protein systems where the simulation setup has no position restraints on the protein, a trajectory preprocessing by the user is required. If the goal is to assess membrane curvature induced by the protein, the preprocessed trajectory should have the protein centered in the simulation box with translational and rotational fit.
In Gromacs, the trajectory would be preprocessed with:
gmx trjconv -pbc whole -ur compact -c
gmx trjconv -fit rot+transxy
After you have preprocessed the trajectory, a typical usage of membrane curvature is:
import MDAnalysis as mda
from membrane_curvature.base import MembraneCurvature
from membrane_curvature.tests.datafiles import XTC_MEMBPROT_FIT, GRO_MEMBPROT_FIT
universe = mda.Universe(GRO_MEMBPROT_FIT, XTC_MEMBPROT_FIT)
curvature_lower_leaflet = MembraneCurvature(universe,
select='resid 2583-3042',
wrap=False, # wrap=False when passing preprocessed trajs!
n_x_bins=10,
n_y_bins=10).run()
avg_mean_curvature = curvature_lower_leaflet.results.average_mean
Note
Since you are providing a preprocess trajectory with translation/rotational fit
you can ignore the warning message:
WARNING `wrap == False` may result in inaccurate calculation of membrane curvature.
More information on how to visualize the results of the MDAnalysis Membrane Curvature tool can be found in the Visualization page.