Example 16: HIV-1 Env MPER-TM Trimer in a DMPC Symmetric Bilayer

../../_images/my_6e8w_pc.png

HIV-1 gp41 (MPER-TM) trimer embedded in a DMPC lipid bilayer. Each protein chain is colored uniquely, and a transparent isodensity surface is shown. Waters and counterions are not shown.

PDB ID 6e8w is a trimeric HIV-1 Env gp41 construct embedded in a DMPC lipid bilayer (the authors also mention DHPC, but these are detergents that don’t readily form bilayers). The structure was determined by NMR, and the structure file contains 15 models, and no lipids are included in the file. This example shows how to use pestifer to generate a membrane-embedded protein system from this structure.

# Author: Cameron F. Abrams, <cfa22@drexel.edu>
#
# pestifer input script
#
# Membrane-embedded build of HIV-1 gp41 MPER-TM trimer (6e8w)
#
# NOTE: This example uses NAMD's on-the-fly pressureProfile calculation in the
# post-equilibration NPAT stage and in the packaged production run. CUDA-enabled
# (GPU) NAMD does not support pressureProfile, so this example must be run with
# a CPU NAMD build. Remove the `pressureProfile*` keys from the relevant
# `other_parameters` blocks (or omit `--gpu`) to use a GPU build.
#
title: HIV-1 gp41 MPER-TM trimer 6e8w embedded in DMPC bilayer
paths:
  packmol: /usr/local/bin/packmol
tasks:
  - fetch:
      sourceID: 6e8w
  - psfgen:
      source:
        model: 15 # last frame
  - md:
      cpu-override: True
      ensemble: minimize
  - make_membrane_system:
      bilayer:
        salt_con: 0.154
        cation: POT
        anion: CLA
        half_mid_zgap: 0.0
        SAPL: 60.0
        composition:
          lower_leaflet:
            - name: DMPC
              frac: 1.00
          upper_leaflet:
            - name: DMPC
              frac: 1.00
        seed: 270272
        nloop: 100
        nloop_all: 100
        relaxation_protocols:
          patch:
            - md:
                ensemble: minimize
                nsteps: 1000
            - md:
                ensemble: NVT
                nsteps: 1000
                temperature: 310
            - md:
                ensemble: NPT
                nsteps: 500
                temperature: 310
                pressure: 10.0
            - md:
                ensemble: NPT
                nsteps: 500
                temperature: 310
                pressure: 10.0
            - md:
                ensemble: NPT
                nsteps: 1000
                temperature: 310
                pressure: 10.0
            - md:
                ensemble: NPT
                nsteps: 1000
                temperature: 310
                pressure: 10.0
            - md:
                ensemble: NPT
                nsteps: 4000
                temperature: 310
                pressure: 10.0
            - md:
                ensemble: NPT
                nsteps: 8000
                temperature: 310
                pressure: 10.0
            - md:
                ensemble: NPAT
                nsteps: 16000  # this is (probably) too short!
                temperature: 310
                pressure: 1.0
          quilt:
            - md:
                ensemble: minimize
            - md:
                ensemble: NVT
                nsteps: 1000
                temperature: 310
                pressure: 1.0
            - md:
                ensemble: NPAT
                nsteps: 2000
                temperature: 310
                pressure: 1.0
      embed:
        xydist: 20
        zdist: 10
        z_head_group: "protein and resid 667"
        z_tail_group: "protein and resid 710"
        z_ref_group: 
          text: "protein and resid 696"
          z_value: 0.0
  - validate:
      tests:
        - residue_test:
            name: test of protein presence
            selection: protein
            measure: residue_count
            relation: '>='
            value: 1
  - md:
      ensemble: minimize
      minimize: 1000
      constraints:
        k: 10
        atoms: protein and name CA
  - md:
      ensemble: NVT
      nsteps: 1000
      temperature: 410
      constraints:
        k: 10
        atoms: protein and name CA
  - md:
      ensemble: NVT
      nsteps: 1000
      temperature: 410
      constraints:
        k: 1
        atoms: protein and name CA
  - md:
      ensemble: NPT
      nsteps: 6400
      temperature: 410
  - md:
      ensemble: NPAT
      nsteps: 51200  # this is (probably) way too short!!
      temperature: 310
      other_parameters:
        pressureProfile: on
        pressureProfileFreq: 100
        pressureProfileSlabs: 20
  - mdplot:
      timeseries:
        - - cpu_time
          - wall_time
        - density
        - - a_x
          - b_y
          - c_z
      profiles:
        - pressure
      basename: bilayer
      grid: True
      legend: True
  - terminate:
      basename: my_6e8w
      artifacts: artifacts
      package:
        basename: prod_6e8w
        namd:
          ensemble: NPAT
          firsttimestep: 0
          dcdfreq: 10000
          xstfreq: 10000
          outputenergies: 1000
          nsteps: 10000000
          other_parameters:
            pressureProfile: on
            pressureProfileFreq: 10000 # must equal xstfreq!
            pressureProfileSlabs: 20
Pipeline task summary

Step

Task

Details

1

fetch

PDB 6E8W

2

psfgen

standard build

3

md

minimize

4

make_membrane_system

DMPC

5

validate

1 test(s)

6

md

minimize → NVT (2,000 steps, 2 phases) → NPT (6,400 steps) → NPAT (51,200 steps)

7

mdplot

equilibration time-series plots → mdplots/

8

terminate

basename: my_6e8w; package: prod_6e8w

Notice first that packmol’s path is set explicitly in the paths section to /usr/local/bin/packmol. This avoids any version of packmol that may be installed via conda; for example, when a user installs AmberTools via conda, packmol is installed as a dependency, but this version of packmol is not compatible with the current version of pestifer. If packmol is not found at the specified path, the membrane-building process will fail.

The key task in this example is the make_membrane_system task. This task specifies a bilayer subtask and an embed subtask. The bilayer subtask specifies the composition of the two leaflets, directives for using packmol to assemble the initial minimal bilayer patch, and relaxation protocols for relaxing the patch and the full-sized bilayer, prior to embedding the protein. The embed subtask specifies how the protein is to be oriented and placed in the bilayer. Immediately following the make_membrane_system task, the minimize task is used to relax the system after embedding the protein. This is then followed by a series of md tasks to progressively equilibrate the system density and the bilayer area.

A detailed explanation of the two subtasks can be found at make_membrane_system.

Results

The plots below are generated by default during the membrane-building process.

../../_images/15-patch-a_x-b_y-c_z.png

Cell dimensions vs time step for the initial 200-lipid bilayer patch.

../../_images/15-patch-density.png

System density vs time step for the initial 200-lipid bilayer patch.

../../_images/15-patch-pressureprofile.png

Pressure profiles for selected time intervals during the patch relaxation.

The mdplot task generated the following plots for the membrane-embedded system.

../../_images/15-bilayer-a_x-b_y-c_z.png

Cell dimensions vs time step for the protein-embedded membrane.

../../_images/15-bilayer-density.png

System density vs time step for the protein-embedded membrane.

../../_images/15-bilayer-pressureprofile.png

Pressure profiles for selected time intervals during the protein-embedded membrane relaxation.