Example 5: HIV Protease with Patches to Protonate Aspartates

PDB ID 1f7a is a structure of the HIV-1 protease in complex with an inhibitor mimic. This example demonstrates how to use the mods subdirective to apply CHARMM36 residue patches, including protonation/deprotonation patches.

Here, we removed the ligand, and protonate the active-site aspartates (Asp29). We also undo the two engineered mutations on each chain, at resids 7 and 25. We also add segment type and psfgen alias information so that Pestifer can handle the acetate molecules present in the PDB file.

# Author: Cameron F. Abrams, <cfa22@drexel.edu>
#
# pestifer input script
# 
# Build of solvated HIV protease 
#
# Notes:
#   - Using the 1f7a pdb entry
#   - The ligand (chain P) is removed
#   - ASPP patch to protonate ASP25 (catalytic residue)
#   - Acetates (ACT) are included by providing psfgen 
#     with segment type information and the appropriate
#     aliases to map to the CHARMM36 ACET residue.
#
title: HIV-1 protease dimer
psfgen:
  segtypes:
    other: ["ACET", "ACT"]
  aliases:
    residue:
      - "ACT ACET"
    atom:
      - "ACT CH3 C1"
      - "ACT O O1"
      - "ACT OXT O2"
      - "ACT C C2"
tasks:
  - fetch:
      sourceID: 1f7a
  - psfgen:
      source:
        exclude:
          - chainID == 'P'
      mods:
        mutations: # undoing engineered mutations; could also use 'fix_engineered_mutations: True' under source->sequence
          - A:LYS,7,GLN
          - B:LYS,7,GLN
          - A:ASN,25,ASP
          - B:ASN,25,ASP         
        patches:
          - ASPP:A:29
          - ASPP:B:29
  - md:
      ensemble: minimize
  - validate:
      tests:
        - residue_test:
            name: chain P excluded
            selection: chain P
            measure: residue_count
            value: 0
        - attribute_test:
            name: residue 7 is a GLN on chain A B
            selection: protein and chain A B and resid 7 and name CA
            attribute: resname
            value: GLN
            value_count: 2
        - attribute_test:
            name: residue 25 is an ASP on chain A B
            selection: protein and chain A B and resid 25 and name CA
            attribute: resname
            value: ASP
            value_count: 2
        - attribute_test:
            name: ASP29 protonated on chain A
            selection: protein and chain A B and resid 29
            attribute: name
            value: HD2
            value_count: 2
  - solvate:
  - md:
      ensemble: minimize
  - md:
      ensemble: NVT
  - md:
      ensemble: NPT
      nsteps: 200
  - md:
      ensemble: NPT
      nsteps: 400
  - md:
      ensemble: NPT
      nsteps: 800
  - md:
      ensemble: NPT
      nsteps: 1600
  - md:
      ensemble: NPT
      nsteps: 13200
  - mdplot:
      timeseries:
        - density
      basename: solvated
      grid: True
  - terminate:
      basename: my_1f7a
      artifacts: artifacts
      package:
        basename: prod_1f7a
        namd:
          ensemble: NPT
          nsteps: 500000
Pipeline task summary

Step

Task

Details

1

fetch

PDB 1F7A

2

psfgen

exclusions, mutations

3

md

minimize

4

validate

4 test(s)

5

solvate

water box

6

md

minimize → NVT (2,000 steps) → NPT (16,200 steps, 5 phases)

7

mdplot

equilibration time-series plots → mdplots/

8

terminate

basename: my_1f7a; package: prod_1f7a

Note that this required first mutating the residues at positions 25 from asparagine to asparate. This PDB entry was a catalytically inactive construct with an inhibitor mimic bound, so the catalytic aspartates were mutated to asparagines.

../../_images/1f7a-aspp.png

HIV-1 protease with aspartates protonated. The two chains are colored differently and Asp29 on each chain is shown in licorice.

The ACT residues are acetates, and CHARMM36 refers to these as ACET residues. The atom names in the PDB ligand ACT are not the same as those in the CHARMM36 ACET residue, so we need to provide a mapping for the atom names in the psfgen top-level directive.

If instead you would simply like to remove the acetates, you can do so by specifying them in the exclude list of the source directive:

tasks:
  psfgen:
    source:
      exclude:
        - resname == 'ACT'
        - chainID == 'P'