CUBY logo

QMMM tutorial

Difference between revisions from 2010/12/02 14:22 and 2010/12/02 14:22.
In this tutorial we will prepare [QM/MM|QMMM interface] calculation of a peptide where one amino acid (tryptofan) sidechain is calculated at QM level. AMBER is used for the MM calculation, DFTB for QM. The preparation of the MM calculation is specific for AMBER, but DFTB can be replaced with any other QM method.

Input file for the same calculation using CHARMM is listed at the [end of this page|], without detailed information of preparation of the forcefield.

!! Files
Tryptofan cage miniprotein is used. PDB ready for AMBER calculation is available [here|].


!! Forcefield preparation
The MM calculation of the whole peptide will run as it is. To perform the calculation on the QM region, we have to prepare residue for the sidechain.

Firstly, wee need to determine the bond length for the link atom in the QM method we will use. The sidechain can be selected and saved using the [geometry] script:

{{geometry -s ':TRP&%not(%atomname(N,H,HA,C,O))' trpcage.pdb > selection.pdb}}

In the file, we replace the C alpha:
{{ATOM    128  CA  TRP     9       0.273   2.606  -0.574}}
with hydrogen link atom
{{ATOM    128  HL  TRP     9       0.273   2.606  -0.574}}

For further use, we also rename the residue "TRP" in this file to "trp".

To optimize the bond length, we prepare following input (opt_link.yaml):
{{interface: dftb
charge: 0
freeze_atoms: "%not(1)" # Only the first atom in the geometry is optimized
# default setup is used for the optimization}}
and run the optimization:
{{cuby_optimize opt_link.yaml selection.pdb}}

FInally, we measure the optimized bond length on the resulting structure (; it is 1.10 A.

!! Forcefield preparation - AMBER specific
Now, we will prepare new residue for the sidechain using AMBER's xleap. We'll start by copying TRP to trp. In the editor, we'll delete atoms N,H,HA,C,O. Atom CA will be changed to hydrogen, named HL, atom type HC (The same as the other hydrogens on CB atom.) Finally, we'll save the new residue in OFF format.
{{trp = copy TRP
edit trp
saveoff trp}}
In the file, the residue is still named TRP. It should be changed to "trp" in text editor.

New leaprc for leap that loads both the original forcefield and the trp residue should be created, we'll name it leaprc.qmmm:
{{source leaprc.ff03.r1
loadoff /home/rezac/cuby3/temp/qmmm/tutorial/"}}
With this leaprc file, we should be able to load the file selection.pdb we prepared earlier. When it works in leap, we can try to do the MM calculation in cuby, using following input (amber.yaml):
{{interface: amber
leaprc: leaprc.qmmm}}
We can run both full system and the QM part with this:
{{cuby_energy amber.yaml trpcage.pdb
cuby_energy amber.yaml selection.pdb}}

There is still one catch. The bond length for the link atom in the forcefield is not equal to the one from our QM calculation; this has to be fixed. It is possible to modify the forcefield, but there is an easier workaround in cuby. Using the [Restraints interface], we can subtract the original harmonic potential used in the forcefield and replace it with new one. The bond length and force constant can be found in the AMBER file defining the forcefield. However, the force constant has to be multiplied by 2 for the use in cuby. Here is the input for MM calculation of the QM part:
{{interface: amber
leaprc: leaprc.qmmm
modifiers: restraints
- distance;1.09;-680;%atomname(HL);%atomname(CB)
- distance;1.10;680;%atomname(HL);%atomname(CB)}}
Optimization run with this input should yield bond length of 1.10 A.

!! QMMM input
We are now able to run all the partial calculations, following input for QM/MM (qmmm.yml) just combines them together:
{{interface: qmmm

# Charge for the QM part
qmmm_qm_charge: 0

# Selection of atoms in the QM part
# Here as atom numbers (in the full system)
qmmm_core: 130-147

# List of bonds replaced by link atoms
# Link_type should be the name of the atom in
# the modified residue
- {bond: 128-130, link_ratio: 0.721, link_type: HL}

# List of residues to be renamed when PDB for the
# QM part is constructed
- ":TRP trp"

# QM method specification
interface: dftb

# MM method specifiactaion
interface: amber
leaprc: leaprc.qmmm

# Additional setup for MM calculation
# of the QM part only
modifiers: restraints
- distance;1.09;-680;%atomname(HL);%atomname(CB)
- distance;1.10;680;%atomname(HL);%atomname(CB)

# Optimization setup
optimize_region: "%within(4;130-147)"
maxcycles: 400}}
An important thing is the "link_ratio" value in the definition of link atoms. It is the ratio between equilibrium bond length of the link atom and the bond it replaces. The C-C bond length is the taken from the forcefield parameter file.

This input also specified partial optimization of a region of 4 A around the QM part. It can be run by typing
{{cuby_optimize qmmm.yaml trpcage.pdb}}

!! Electrostatic embedding
To run QM/MM calculation with electrostatic embedding (QM calculation includes point charges for all MM atoms), it is necessary to prepare list of these charges first. MM calculation with following input (charges.yaml) should build the list:
{{interface: amber
leaprc: leaprc.qmmm
atomic_charges_write: charges.txt}}
by running
{{cuby_charges charges.yaml trpcage.pdb}}
In the QMMM input, electrostatic embedding is then specified by keywords:
{{polarized: yes
atomic_charges_read: charges.txt}}
By default, all MM atoms except the ones that are replaced by link atoms are used as point charges. More charges can be excluded using keyword qmmm_remove_charges

{html}<a name="charmm"></a>{/html}
!CHARMM version
Following input runs the same calculation with CHARMM. The PSF files have to be provided by the user.
{{interface: qmmm
qmmm_core: 130-147
charge: 0
qmmm_qm_charge: 0

- {bond: 128-130, link_ratio: 0.741, link_type: HL}
- ":9 trp"

interface: dftb

interface: charmm
charmm_ff_top: /home/rezac/bin/charmm35/c35b3/toppar/top_all27_prot_na.rtf
charmm_ff_par: /home/rezac/bin/charmm35/c35b3/toppar/par_all27_prot_na.prm

charmm_psf_file: qmmm_cluster_ok.psf
# Sidechain terminated with link atom defined here:
- link_atoms.str
modifiers: restraints
- distance;1.111;-618;%atomname(HL);%atomname(CB)
- distance;1.100; 618;%atomname(HL);%atomname(CB)

charmm_psf_file: trpcage_ok.psf

optimize_region: "%within(4;130-147)"
maxcycles: 400}}