Membrane Builder
Create Membrane Builder Project
Let’s walk through how to create a Membrane Builder project. You will need the project ID from a previously created PDB Reader project. For this example, we’ll use the project we just created above.
NOTE: If you don’t include pdbreader_project_id, it will create a membrane-only system.
The following arguments are available for the create_project method:
title (str): Project Title
ff (str): Project force field type (
charmmff,amberff)membrane_type (MembraneType): Membrane type (default:
MembraneType.BILAYER)pdbreader_project_id (str | list[str]): The project ID(s) of the PDBreader to be used as solute. - Pass a single
strfor Bilayer, Nanodisc, Vesicle, Micelle, or HexPhase systems. - Pass alist[str]of 1 or 2 project IDs for a Double Bilayer system (upper/lower leaflet order). - Omit or passNonefor a membrane-only system.amberOptions (dict[str, str]): Amber force field options when
ff='amberff'(default: None)
Example:
from molcube.membrane_builder.enum import *
# alt: pdbreader_project_id = pdbreader.projectId
pdbreader_project_id = '78080ec8-bfcd-4141-8f22-f0ae805374ff'
# Create Membrane Builder project
mbuilder = molcube.create_membrane_builder_project()
assert mbuilder.create_project(title="my_membrane_project",
pdbreader_project_id=pdbreader_project_id,
membrane_type=MembraneType.BILAYER, ff='amberff')
assert mbuilder.align_membrane_protein(option={"align": "ppm"})
You can check the required by the generate_lipid_packing() method for each membrane type using the get_packing_data_form() method.
This method takes the composition_option (str) argument, which can be either ratio or number. (default: ratio)
>>> lipids, box_margin = mbuilder.get_packing_data_form()
lipids Form:
[
{
"lipid": "CHL",
"upRatio": 1,
"lowRatio": 1
},
{
"lipid": "POPC",
"upRatio": 4,
"lowRatio": 4
}
]
box_margin Form:
{
"margin": 20
}
# Build lipid packing
assert mbuilder.generate_lipid_packing(lipids, box_margin)
# Replace lipid packing and build system
assert mbuilder.replace_packing()
Finally, we will combine the individual components to build the system for molecular dynamics (MD) simulation. The following arguments are available for the method:
waterMargin(float): water margin of Membrane System (default: 22.5).
ions (str): Type of ions to use (default: “kcl”).
ionConc (float): Ion concentration (default: 0.15).
temperature (float): Temperature for the system in Kelvin (default: 310.0).
useHmr (bool): Whether to use hydrogen mass repartitioning (default: False).
mdEngines (list[str]): Molecular dynamics engine to use (default: [‘openmm’]).
Bilayer additional options:
useHydration (bool): Use hydration number method instead of
waterMargin(default: False).hydration_number (int): Number of water molecules per one lipid molecule (default: 50).
The available options for ions and mdEngines are as follows:
ions / interIons: [‘kcl’, ‘nacl’, ‘cacl2’, ‘mgcl2’]
lipaIons / coreIons: [‘cal’, ‘CAL’, ‘mg’, ‘MG’]
mdEngines: [‘openmm’, ‘amber’, ‘gromacs’, ‘namd’, ‘genesis’, ‘desmond’]
assert mbuilder.generate_system(ions='kcl', mdEngines=['openmm', 'gromacs'])