Path B - Module 43: Energy Minimization#

Experimental structures and engineered mutants often have high-energy spots: atoms that clash or bonds with unnatural lengths. If you start a simulation from this state, it will be numerically unstable.

In this module, you will learn to use MolSysMT to Relax your engineered PETase and ensure it is in its most stable local conformation.

import molsysmt as msm
from molsysmt import systems

# Load our complex (Enzyme + BHET)
petase = msm.convert('pdb:6EQE', to_form='molsysmt.MolSys', selection='molecule_type=="protein"')
msm.build.add_missing_hydrogens(petase, pH=8.0)
bhet = msm.convert('C1=CC(=CC=C1C(=O)OCCO)C(=O)OCCO', from_form='string:smiles', to_form='molsysmt.MolSys')
molsys = msm.merge([petase, bhet])

# Initial energy (likely high)
e_start = msm.molecular_mechanics.get_potential_energy(molsys)
print(f"Energy before relaxation: {e_start}")

1. The Relaxation Engine#

The function potential_energy_minimization() uses gradient-descent algorithms to move atoms until the force on them is minimized.

# Run energy minimization
msm.molecular_mechanics.potential_energy_minimization(molsys, tolerance='5.0 kJ/(nm*mol)')

print("Minimization finished.")

2. Monitoring the Drop#

Let’s see how much the energy was reduced. A drop of several thousand kJ/mol is common for newly built systems.

e_final = msm.molecular_mechanics.get_potential_energy(molsys)
print(f"Energy after relaxation: {e_final}")
print(f"Difference: {e_start - e_final}")

🏆 Path B Challenge: The Stress Buster#

  1. Calculate the Force Matrix before and after minimization.

  2. Check if the Max Force is now below your specified tolerance.

  3. Align the structure before and after minimization and measure the RMSD. (It should be small, usually < 0.05 nm).

  4. Does the secondary structure of the PETase change after minimization? (Hint: it should stay the same).

Your complex is now physically healthy! In Module 44, we will learn to parametrize it using AMBER TLeap to assign the final force-field values.