Protein-Ligand Systems

This tutorial covers working with systems containing small molecule ligands.

Note

This tutorial requires the ligand optional dependencies:

$ pip install molecular-simulations[ligand]

Prerequisites

  • RDKit for molecule handling

  • OpenBabel for format conversion

  • A protein structure and ligand (SDF/MOL2 format)

Parameterizing Small Molecules

The LigandBuilder class handles GAFF2 parameterization:

from molecular_simulations.build.build_ligand import LigandBuilder
from pathlib import Path

ligand_file = Path("ligand.sdf")
output_dir = Path("./ligand_params")

builder = LigandBuilder(
    ligand_file=ligand_file,
    output_dir=output_dir,
)
builder.build()

# Outputs:
# - ligand.mol2 (with charges)
# - ligand.frcmod (GAFF2 parameters)

Building the Complex

Combine the parameterized ligand with your protein:

from molecular_simulations.build.build_ligand import ComplexBuilder

builder = ComplexBuilder(
    path=Path("./complex_sim"),                 # Path for output files
    pdb=Path("protein.pdb"),                    # Path to protein input PDB
    ligand_param_prefix=output_dir / "ligand",  # Prefix of .frcmod, .lib files; if None compute params
    lig=output_dir / "ligand.mol2",             # Path to mol2 file
)
builder.build()

Running and Analysis

Simulation and analysis proceed as with protein-only systems. Interaction energy analysis is forthcoming, stay tuned!

Common Issues

Ligand parameterization fails

Check that the ligand has correct protonation state and no unusual functional groups. GAFF2 may not cover all chemistries.