System building: Protein in Membrane with Ligand

In this tutorial, we will showcase how to build a protein ligand system for simulating binding. The sample system is Trypsin (the protein) and benzamidine (the ligand).

Let’s start by doing some imports and definitions:

from htmd.ui import *
from htmd.home import home
from os.path import join
config(viewer='webgl')
datadir = home(dataDir='building-protein-ligand')
Please cite HTMD: Doerr et al.(2016)JCTC,12,1845.
https://dx.doi.org/10.1021/acs.jctc.6b00049
Documentation: http://software.acellera.com/
To update: conda update htmd -c acellera -c psi4

You are on the latest HTMD version (unpackaged : /home/joao/maindisk/software/repos/cuzzo87/htmd/htmd).

Load the protein-ligand complex

One can obtain the protein-ligand complex from the PDB database (ID:3PTB). The complex is already available in the data distributed with HTMD and either one could be used:

# One can download it directly from the RCSB servers
prot = Molecule('3PTB')
# Or use the pdb file found in the HTMD data directory
prot = Molecule(join(datadir, 'trypsin.pdb'))
2018-04-30 14:51:38,239 - htmd.molecule.readers - INFO - Using local copy for 3PTB: /home/joao/maindisk/software/repos/cuzzo87/htmd/htmd/data/pdb/3ptb.pdb
2018-04-30 14:51:38,361 - htmd.molecule.molecule - WARNING - Residue insertions were detected in the Molecule. It is recommended to renumber the residues using the Molecule.renumberResidues() method.
2018-04-30 14:51:38,473 - htmd.molecule.molecule - WARNING - Residue insertions were detected in the Molecule. It is recommended to renumber the residues using the Molecule.renumberResidues() method.
prot.view()
A Jupyter Widget

Clean the structures

The PDB crystal structure contains the protein as well as water molecules, a calcium ion and a ligand. Here we will start by removing the ligand from the protein Molecule as we will add it later to manipulate it separately.

prot.remove('resname BEN')
2018-04-30 14:51:38,911 - htmd.molecule.molecule - INFO - Removed 9 atoms. 1692 atoms remaining in the molecule.
array([1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638], dtype=int32)

Preparing the protein

In this step, we prepare the protein for simulation by adding hydrogens, setting the protonation states, and optimizing the protein (more details on the protein preparation tutorial):

prot = proteinPrepare(prot, pH=7.0)
2018-04-30 14:51:39,057 - propka - INFO - No pdbfile provided
2018-04-30 14:51:41,578 - htmd.builder.preparation - WARNING - The following residue has not been optimized: CA
2018-04-30 14:51:49,983 - htmd.builder.preparationdata - INFO - The following residues are in a non-standard state: CYS     6  A (CYX), HIS    22  A (HIE), CYS    24  A (CYX), HIS    39  A (HIP), CYS    40  A (CYX), HIS    72  A (HID), CYS   108  A (CYX), CYS   115  A (CYX), CYS   136  A (CYX), CYS   147  A (CYX), CYS   161  A (CYX), CYS   172  A (CYX), CYS   182  A (CYX), CYS   196  A (CYX), CYS   209  A (CYX)
2018-04-30 14:51:50,022 - htmd.builder.preparationdata - WARNING - Dubious protonation state: the pKa of 4 residues is within 1.0 units of pH 7.0.
2018-04-30 14:51:50,026 - htmd.builder.preparationdata - WARNING - Dubious protonation state:    HIS    39  A (pKa= 7.46)
2018-04-30 14:51:50,029 - htmd.builder.preparationdata - WARNING - Dubious protonation state:    GLU    51  A (pKa= 6.10)
2018-04-30 14:51:50,030 - htmd.builder.preparationdata - WARNING - Dubious protonation state:    ASP   170  A (pKa= 6.49)
2018-04-30 14:51:50,031 - htmd.builder.preparationdata - WARNING - Dubious protonation state:    N+      0T A (pKa= 7.49)
2018-04-30 14:51:50,121 - htmd.builder.preparationdata - WARNING - Found N-terminus 80.7% buried (> 50.0% threshold)
2018-04-30 14:51:50,122 - htmd.builder.preparationdata - WARNING - Found C-terminus involved in H bonds

Define segments

To build a system in HTMD, we need to separate the chemical molecules into separate segments. This prevents the builder from accidentally bonding different chemical molecules and allows us to add caps to them.

prot = autoSegment(prot, sel='protein')
prot.set('segid', 'W', sel='water')
prot.set('segid', 'CA', sel='resname CA')

Center the protein to the origin

prot.center()

Let’s work on the ligand!

Load the ligand from the HTMD data:

ligand = Molecule(join(datadir, 'benzamidine.mol2'))
2018-04-30 14:51:50,585 - htmd.molecule.readers - WARNING - Element of atom ID 1 could not be automatically guessed from its MOL2 atomtype (ca).
2018-04-30 14:51:50,586 - htmd.molecule.readers - WARNING - Element of atom ID 2 could not be automatically guessed from its MOL2 atomtype (ca).
2018-04-30 14:51:50,587 - htmd.molecule.readers - WARNING - Element of atom ID 3 could not be automatically guessed from its MOL2 atomtype (ca).
2018-04-30 14:51:50,588 - htmd.molecule.readers - WARNING - Element of atom ID 4 could not be automatically guessed from its MOL2 atomtype (ca).
2018-04-30 14:51:50,589 - htmd.molecule.readers - WARNING - Element of atom ID 5 could not be automatically guessed from its MOL2 atomtype (ca).
2018-04-30 14:51:50,590 - htmd.molecule.readers - WARNING - Element of atom ID 6 could not be automatically guessed from its MOL2 atomtype (ca).
2018-04-30 14:51:50,592 - htmd.molecule.readers - WARNING - Element of atom ID 7 could not be automatically guessed from its MOL2 atomtype (ce).
2018-04-30 14:51:50,593 - htmd.molecule.readers - WARNING - Element of atom ID 8 could not be automatically guessed from its MOL2 atomtype (ha).
2018-04-30 14:51:50,594 - htmd.molecule.readers - WARNING - Element of atom ID 9 could not be automatically guessed from its MOL2 atomtype (ha).
2018-04-30 14:51:50,595 - htmd.molecule.readers - WARNING - Element of atom ID 10 could not be automatically guessed from its MOL2 atomtype (ha).
2018-04-30 14:51:50,596 - htmd.molecule.readers - WARNING - Element of atom ID 11 could not be automatically guessed from its MOL2 atomtype (ha).
2018-04-30 14:51:50,597 - htmd.molecule.readers - WARNING - Element of atom ID 12 could not be automatically guessed from its MOL2 atomtype (ha).
2018-04-30 14:51:50,598 - htmd.molecule.readers - WARNING - Element of atom ID 13 could not be automatically guessed from its MOL2 atomtype (nh).
2018-04-30 14:51:50,599 - htmd.molecule.readers - WARNING - Element of atom ID 14 could not be automatically guessed from its MOL2 atomtype (nh).
2018-04-30 14:51:50,600 - htmd.molecule.readers - WARNING - Element of atom ID 15 could not be automatically guessed from its MOL2 atomtype (hn).
2018-04-30 14:51:50,601 - htmd.molecule.readers - WARNING - Element of atom ID 16 could not be automatically guessed from its MOL2 atomtype (hn).
2018-04-30 14:51:50,602 - htmd.molecule.readers - WARNING - Element of atom ID 17 could not be automatically guessed from its MOL2 atomtype (hn).
2018-04-30 14:51:50,603 - htmd.molecule.readers - WARNING - Element of atom ID 18 could not be automatically guessed from its MOL2 atomtype (hn).

Let’s center the ligand and visualize it:

ligand.center()
ligand.view()
A Jupyter Widget
# We can give a convenient segid and resname to the ligand
# The resname should be MOL to match the parameters in the
# rtf and prm files.
ligand.set('segid','L')
ligand.set('resname','MOL')

But the ligand is now located inside the protein… We would like the ligand to be:

  • At a certain distance from the protein
  • Rotated randomly, to provide different starting conditions

Let’s randomize the ligand position

ligand.rotateBy(uniformRandomRotation())

This took care of the ligand rotation around its own center. We still need to position it far from the protein. First, find out the radius of the protein:

maxdist

from htmd.molecule.util import maxDistance
D = maxDistance(prot, 'all')
print(D)
28.832803412
D += 10
# Move the ligand 10 Angstrom away from the furthest protein atom in X dimension
ligand.moveBy([D, 0, 0])
# rotateBy rotates by default around [0, 0, 0]. Since the ligand has been moved
# away from the center it will be rotated in a sphere of radius D+10 around [0, 0, 0]
ligand.rotateBy(uniformRandomRotation())

Mix it all together

mol = Molecule(name='combo')
mol.append(prot)
mol.append(ligand)
mol.reps.add(sel='protein', style='NewCartoon', color='Secondary Structure')
mol.reps.add(sel='resname MOL', style='Licorice')
mol.view()
A Jupyter Widget

Solvate

Water is the driving force of all nature. –Leonardo da Vinci

waterbox

# We solvate with a larger box to fully solvate the ligand
DW = D + 5
smol = solvate(mol, minmax=[[-DW, -DW, -DW], [DW, DW, DW]])
smol.reps.add(sel='water', style='Lines')
smol.view()
2018-04-30 14:51:51,230 - htmd.builder.solvate - INFO - Using water pdb file at: /data/joao/maindisk/software/repos/cuzzo87/htmd/htmd/builder/wat.pdb
2018-04-30 14:51:52,328 - htmd.builder.solvate - INFO - Replicating 8 water segments, 2 by 2 by 2
Solvating: 100%|██████████| 8/8 [00:09<00:00,  1.19s/it]
2018-04-30 14:52:04,572 - htmd.builder.solvate - INFO - 20153 water molecules were added to the system.
A Jupyter Widget

Build the System with a specific forcefield

HTMD aims to be force-field agnostic. After you have a built system, you can either build it in Amber or CHARMM. The following sections work on the same previously solvated system and can be interconverted.

Special care must be taken care in this case due to the use of benzamidine, which is not present by default on the respective forcefields.

CHARMM forcefield

charmm.listFiles()
---- Topologies files list: /home/joao/maindisk/software/repos/cuzzo87/htmd/htmd/builder/charmmfiles/top/ ----
top/top_all22_prot.rtf
top/top_all22star_prot.rtf
top/top_all35_ethers.rtf
top/top_all36_carb.rtf
top/top_all36_cgenff.rtf
top/top_all36_lipid.rtf
top/top_all36_na.rtf
top/top_all36_prot.rtf
top/top_water_ions.rtf
---- Parameters files list: /home/joao/maindisk/software/repos/cuzzo87/htmd/htmd/builder/charmmfiles/par/ ----
par/par_all22_prot.prm
par/par_all22star_prot.prm
par/par_all35_ethers.prm
par/par_all36_carb.prm
par/par_all36_cgenff.prm
par/par_all36_lipid.prm
par/par_all36_na.prm
par/par_all36_prot.prm
par/par_all36_prot_mod.prm
par/par_water_ions.prm
---- Stream files list: /home/joao/maindisk/software/repos/cuzzo87/htmd/htmd/builder/charmmfiles/str/ ----
str/carb/toppar_all36_carb_glycolipid.str
str/carb/toppar_all36_carb_glycopeptide.str
str/carb/toppar_all36_carb_model.str
str/lipid/toppar_all36_lipid_bacterial.str
str/lipid/toppar_all36_lipid_cardiolipin.str
str/lipid/toppar_all36_lipid_cholesterol.str
str/lipid/toppar_all36_lipid_cholesterol_model_1.str
str/lipid/toppar_all36_lipid_detergent.str
str/lipid/toppar_all36_lipid_inositol.str
str/lipid/toppar_all36_lipid_list.str
str/lipid/toppar_all36_lipid_miscellaneous.str
str/lipid/toppar_all36_lipid_model.str
str/lipid/toppar_all36_lipid_prot.str
str/lipid/toppar_all36_lipid_sphingo.str
str/lipid/toppar_all36_lipid_yeast.str
str/misc/toppar_amines.str
str/misc/toppar_dum_noble_gases.str
str/misc/toppar_hbond.str
str/misc/toppar_ions_won.str
str/na/toppar_all36_na_model.str
str/na/toppar_all36_na_modifications.str
str/na/toppar_all36_na_nad_ppi.str
str/na/toppar_all36_na_reactive_rna.str
str/na/toppar_all36_na_rna_modified.str
str/prot/toppar_all36_prot_aldehydes.str
str/prot/toppar_all36_prot_arg0.str
str/prot/toppar_all36_prot_d_aminoacids.str
str/prot/toppar_all36_prot_fluoro_alkanes.str
str/prot/toppar_all36_prot_heme.str
str/prot/toppar_all36_prot_mod_d_aminoacids.str
str/prot/toppar_all36_prot_model.str
str/prot/toppar_all36_prot_modify_res.str
str/prot/toppar_all36_prot_na_combined.str
str/prot/toppar_all36_prot_pyridines.str
str/prot/toppar_all36_prot_retinol.str

Build and ionize using CHARMM

topos_charmm  = charmm.defaultTopo() + [join(datadir, 'benzamidine.rtf')]
params_charmm = charmm.defaultParam() + [join(datadir, 'benzamidine.prm')]

bmol_charmm = charmm.build(smol, topo=topos_charmm, param=params_charmm, outdir='./build_charmm')
2018-04-30 14:52:13,118 - htmd.builder.charmm - INFO - Writing out segments.
2018-04-30 14:52:22,002 - htmd.builder.builder - INFO - 6 disulfide bonds were added
Bond between A: [serial 351 resid 24 resname CYX chain A segid P0]
             B: [serial 571 resid 40 resname CYX chain A segid P0]

Bond between A: [serial 1683 resid 115 resname CYX chain A segid P0]
             B: [serial 2611 resid 182 resname CYX chain A segid P0]

Bond between A: [serial 2146 resid 147 resname CYX chain A segid P0]
             B: [serial 2353 resid 161 resname CYX chain A segid P0]

Bond between A: [serial 1604 resid 108 resname CYX chain A segid P0]
             B: [serial 3004 resid 209 resname CYX chain A segid P0]

Bond between A: [serial 2494 resid 172 resname CYX chain A segid P0]
             B: [serial 2799 resid 196 resname CYX chain A segid P0]

Bond between A: [serial 92 resid 6 resname CYX chain A segid P0]
             B: [serial 1988 resid 136 resname CYX chain A segid P0]
2018-04-30 14:52:22,528 - htmd.builder.charmm - INFO - Starting the build.
2018-04-30 14:52:23,368 - htmd.builder.charmm - WARNING - Failed to set coordinates for 8 atoms.
2018-04-30 14:52:23,370 - htmd.builder.charmm - WARNING - Failed to guess coordinates for 3 atoms due to bad angles.
2018-04-30 14:52:23,371 - htmd.builder.charmm - WARNING - Poorly guessed coordinates for 15 atoms.
2018-04-30 14:52:23,372 - htmd.builder.charmm - WARNING - Please check /data/joao/maindisk/software/repos/cuzzo87/htmd/tutorials/build_charmm/log.txt for further information.
2018-04-30 14:52:23,373 - htmd.builder.charmm - INFO - Finished building.
2018-04-30 14:52:27,602 - htmd.builder.ionize - INFO - Adding 10 anions + 0 cations for neutralizing and 0 ions for the given salt concentration.
2018-04-30 14:52:28,112 - htmd.builder.ionize - INFO - Min distance of ions from molecule: 5A
2018-04-30 14:52:28,113 - htmd.builder.ionize - INFO - Min distance between ions: 5A
2018-04-30 14:52:28,114 - htmd.builder.ionize - INFO - Placing 10 anions and 0 cations.
2018-04-30 14:52:35,771 - htmd.builder.charmm - INFO - Writing out segments.
2018-04-30 14:52:45,692 - htmd.builder.charmm - INFO - Starting the build.
2018-04-30 14:52:46,518 - htmd.builder.charmm - WARNING - Failed to set coordinates for 8 atoms.
2018-04-30 14:52:46,519 - htmd.builder.charmm - WARNING - Failed to guess coordinates for 3 atoms due to bad angles.
2018-04-30 14:52:46,520 - htmd.builder.charmm - WARNING - Poorly guessed coordinates for 15 atoms.
2018-04-30 14:52:46,521 - htmd.builder.charmm - WARNING - Please check /data/joao/maindisk/software/repos/cuzzo87/htmd/tutorials/build_charmm/log.txt for further information.
2018-04-30 14:52:46,522 - htmd.builder.charmm - INFO - Finished building.

AMBER forcefield

amber.listFiles()
---- Forcefield files list: /home/joao/miniconda3/dat/leap/cmd/ ----
leaprc.constph
leaprc.DNA.bsc1
leaprc.DNA.OL15
leaprc.ff14SB.redq
leaprc.ffAM1
leaprc.ffPM3
leaprc.gaff
leaprc.gaff2
leaprc.GLYCAM_06EPb
leaprc.GLYCAM_06j-1
leaprc.lipid14
leaprc.modrna08
leaprc.phosaa10
leaprc.protein.fb15
leaprc.protein.ff03.r1
leaprc.protein.ff03ua
leaprc.protein.ff14SB
leaprc.protein.ff14SBonlysc
leaprc.protein.ff15ipq
leaprc.protein.ff15ipq-vac
leaprc.RNA.OL3
leaprc.RNA.YIL
leaprc.water.opc
leaprc.water.spce
leaprc.water.spceb
leaprc.water.tip3p
leaprc.water.tip4pew
leaprc.xFPchromophores
---- OLD Forcefield files list: /home/joao/miniconda3/dat/leap/cmd/ ----
oldff/leaprc.DNA.bsc0
oldff/leaprc.ff02
oldff/leaprc.ff02pol.r0
oldff/leaprc.ff02pol.r1
oldff/leaprc.ff02polEP.r0
oldff/leaprc.ff02polEP.r1
oldff/leaprc.ff03
oldff/leaprc.ff10
oldff/leaprc.ff14ipq
oldff/leaprc.ff14SB
oldff/leaprc.ff84
oldff/leaprc.ff86
oldff/leaprc.ff94
oldff/leaprc.ff94.nmr
oldff/leaprc.ff96
oldff/leaprc.ff98
oldff/leaprc.ff99
oldff/leaprc.ff99bsc0
oldff/leaprc.ff99SB
oldff/leaprc.ff99SBildn
oldff/leaprc.ff99SBnmr
oldff/leaprc.GLYCAM_04
oldff/leaprc.GLYCAM_06
oldff/leaprc.GLYCAM_06EP
oldff/leaprc.GLYCAM_06h
oldff/leaprc.GLYCAM_06h-1
oldff/leaprc.GLYCAM_06h-12SB
oldff/leaprc.GLYCAM_06j_10
oldff/leaprc.lipid11
oldff/leaprc.parmbsc0_chiOL4_ezOL1
oldff/leaprc.rna.ff02
oldff/leaprc.rna.ff02EP
oldff/leaprc.rna.ff84
oldff/leaprc.rna.ff94
oldff/leaprc.rna.ff98
oldff/leaprc.rna.ff99
oldff/leaprc.toyrna
---- Topology files list: /home/joao/miniconda3/dat/leap/prep/ ----
all_amino03.in
all_aminoct03.in
all_aminont03.in
amino10.in
amino12.in
aminoct10.in
aminoct12.in
aminont10.in
aminont12.in
chcl3.in
dna_nuc94-bsc0_chiOl4-ezOL1.in
GLYCAM_06EPb.prep
GLYCAM_06j-1.prep
GLYCAM_lipids_06h.prep
meoh.in
nma.in
nucleic10.in
toyrna.in
uni_amino03.in
uni_aminoct03.in
uni_aminont03.in
---- Parameter files list: /home/joao/miniconda3/dat/leap/parm/ ----
frcmod.chcl3
frcmod.chiOL4
frcmod.constph
frcmod.dc4
frcmod.DNA.OL15
frcmod.fb15
frcmod.ff02pol.r1
frcmod.ff03
frcmod.ff03ua
frcmod.ff12SB
frcmod.ff14SB
frcmod.ff99bsc0CG
frcmod.ff99SB
frcmod.ff99SB14
frcmod.ff99SBildn
frcmod.ff99SBnmr
frcmod.ff99SP
frcmod.ions1lm_1264_spce
frcmod.ions1lm_1264_tip3p
frcmod.ions1lm_1264_tip4pew
frcmod.ions1lm_126_hfe_opc
frcmod.ions1lm_126_iod_opc
frcmod.ions1lm_126_spce
frcmod.ions1lm_126_tip3p
frcmod.ions1lm_126_tip4pew
frcmod.ions1lm_iod
frcmod.ions234lm_1264_spce
frcmod.ions234lm_1264_tip3p
frcmod.ions234lm_1264_tip4pew
frcmod.ions234lm_126_spce
frcmod.ions234lm_126_tip3p
frcmod.ions234lm_126_tip4pew
frcmod.ions234lm_hfe_spce
frcmod.ions234lm_hfe_tip3p
frcmod.ions234lm_hfe_tip4pew
frcmod.ions234lm_iod_spce
frcmod.ions234lm_iod_tip3p
frcmod.ions234lm_iod_tip4pew
frcmod.ionsff99_tip3p
frcmod.ionsjc_spce
frcmod.ionsjc_tip3p
frcmod.ionsjc_tip4pew
frcmod.meoh
frcmod.nma
frcmod.opc
frcmod.parmbsc0
frcmod.parmbsc0_ezOL1
frcmod.parmbsc1
frcmod.parmCHI_YIL
frcmod.phosaa10
frcmod.pol3
frcmod.protonated_nucleic
frcmod.qspcfw
frcmod.spce
frcmod.spceb
frcmod.spcfw
frcmod.tip3pf
frcmod.tip3pfb
frcmod.tip4p
frcmod.tip4pew
frcmod.tip4pfb
frcmod.tip5p
frcmod.urea
frcmod.vdWall
frcmod.xFPchromophores
---- Extra forcefield files list: /home/joao/maindisk/software/repos/cuzzo87/htmd/htmd/builder/amberfiles/ ----
ff-nucleic-OL15/leaprc.ff-nucleic-OL15
---- Extra topology files list: /home/joao/maindisk/software/repos/cuzzo87/htmd/htmd/builder/amberfiles/ ----
cofactors/cofactors.in
ff-ncaa/ffncaa.in
ff-nucleic-OL15/leap-ff-nucleic-OL15.in
ff-ptm/ffptm.in
---- Extra parameter files list: /home/joao/maindisk/software/repos/cuzzo87/htmd/htmd/builder/amberfiles/ ----
cofactors/ADP.frcmod
cofactors/AMP.frcmod
cofactors/ATP.frcmod
cofactors/FMN.frcmod
cofactors/GDP.frcmod
cofactors/GTP.frcmod
cofactors/HEM.frcmod
cofactors/NAD.frcmod
cofactors/NAI.frcmod
cofactors/NAP.frcmod
ff-ncaa/004.frcmod
ff-ncaa/03Y.frcmod
ff-ncaa/0A1.frcmod
ff-ncaa/0BN.frcmod
ff-ncaa/1MH.frcmod
ff-ncaa/2AS.frcmod
ff-ncaa/2GX.frcmod
ff-ncaa/2ML.frcmod
ff-ncaa/4IN.frcmod
ff-ncaa/4PH.frcmod
ff-ncaa/5JP.frcmod
ff-ncaa/AA4.frcmod
ff-ncaa/ABA.frcmod
ff-ncaa/AHP.frcmod
ff-ncaa/ALC.frcmod
ff-ncaa/ALN.frcmod
ff-ncaa/APD.frcmod
ff-ncaa/BB8.frcmod
ff-ncaa/BCS.frcmod
ff-ncaa/CCS.frcmod
ff-ncaa/CSA.frcmod
ff-ncaa/D4P.frcmod
ff-ncaa/DAB.frcmod
ff-ncaa/DPP.frcmod
ff-ncaa/ESC.frcmod
ff-ncaa/FGL.frcmod
ff-ncaa/GHG.frcmod
ff-ncaa/GME.frcmod
ff-ncaa/GNC.frcmod
ff-ncaa/HHK.frcmod
ff-ncaa/HLU.frcmod
ff-ncaa/HLX.frcmod
ff-ncaa/HOX.frcmod
ff-ncaa/HPE.frcmod
ff-ncaa/HQA.frcmod
ff-ncaa/HTR.frcmod
ff-ncaa/I2M.frcmod
ff-ncaa/IGL.frcmod
ff-ncaa/IIL.frcmod
ff-ncaa/IML.frcmod
ff-ncaa/KYN.frcmod
ff-ncaa/LME.frcmod
ff-ncaa/LMQ.frcmod
ff-ncaa/ME0.frcmod
ff-ncaa/MEA.frcmod
ff-ncaa/MEN.frcmod
ff-ncaa/MEQ.frcmod
ff-ncaa/MLE.frcmod
ff-ncaa/MLZ.frcmod
ff-ncaa/MME.frcmod
ff-ncaa/MMO.frcmod
ff-ncaa/MVA.frcmod
ff-ncaa/NAL.frcmod
ff-ncaa/NCY.frcmod
ff-ncaa/NLE.frcmod
ff-ncaa/NVA.frcmod
ff-ncaa/NZC.frcmod
ff-ncaa/OCY.frcmod
ff-ncaa/OMX.frcmod
ff-ncaa/ONL.frcmod
ff-ncaa/TRO.frcmod
ff-ncaa/TY2.frcmod
ff-ncaa/TYQ.frcmod
ff-ncaa/YCM.frcmod
ff-ncaa/YNM.frcmod
ff-nucleic-OL15/ff-nucleic-OL15.frcmod
ff-ptm/0AF.frcmod
ff-ptm/2MR.frcmod
ff-ptm/4PQ.frcmod
ff-ptm/ALY.frcmod
ff-ptm/BTK.frcmod
ff-ptm/CGU.frcmod
ff-ptm/CSO.frcmod
ff-ptm/CSP.frcmod
ff-ptm/CSS.frcmod
ff-ptm/DA2.frcmod
ff-ptm/DAH.frcmod
ff-ptm/HY3.frcmod
ff-ptm/HYP.frcmod
ff-ptm/LYZ.frcmod
ff-ptm/M3L.frcmod
ff-ptm/MLY.frcmod
ff-ptm/ORM.frcmod
ff-ptm/P1L.frcmod
ff-ptm/PCA.frcmod
ff-ptm/PRK.frcmod
ff-ptm/PTR.frcmod
ff-ptm/SEP.frcmod
ff-ptm/TPO.frcmod

Build and ionize using Amber

topos_amber = amber.defaultTopo()
frcmods_amber = amber.defaultParam() + [join(datadir, 'benzamidine.frcmod')]
bmol_amber = amber.build(smol, topo=topos_amber, param=frcmods_amber, outdir='./build_amber')
2018-04-30 14:53:04,457 - htmd.builder.amber - INFO - Starting the build.
2018-04-30 14:53:20,381 - htmd.builder.amber - INFO - Finished building.
2018-04-30 14:53:24,408 - htmd.builder.ionize - INFO - Adding 9 anions + 0 cations for neutralizing and 0 ions for the given salt concentration.
2018-04-30 14:53:24,919 - htmd.builder.ionize - INFO - Min distance of ions from molecule: 5A
2018-04-30 14:53:24,920 - htmd.builder.ionize - INFO - Min distance between ions: 5A
2018-04-30 14:53:24,921 - htmd.builder.ionize - INFO - Placing 9 anions and 0 cations.
2018-04-30 14:53:31,947 - htmd.builder.builder - WARNING - Segments ['P0'] contain both protein and non-protein atoms. Please assign separate segments to them or the build procedure might fail.
2018-04-30 14:53:32,677 - htmd.builder.amber - INFO - Detecting disulfide bonds.
2018-04-30 14:53:32,715 - htmd.builder.builder - INFO - 6 disulfide bonds were added
Bond between A: [serial 349 resid 24 resname CYX chain A segid P0]
             B: [serial 569 resid 40 resname CYX chain A segid P0]

Bond between A: [serial 1681 resid 115 resname CYX chain A segid P0]
             B: [serial 2609 resid 182 resname CYX chain A segid P0]

Bond between A: [serial 2144 resid 147 resname CYX chain A segid P0]
             B: [serial 2351 resid 161 resname CYX chain A segid P0]

Bond between A: [serial 1602 resid 108 resname CYX chain A segid P0]
             B: [serial 3002 resid 209 resname CYX chain A segid P0]

Bond between A: [serial 2492 resid 172 resname CYX chain A segid P0]
             B: [serial 2797 resid 196 resname CYX chain A segid P0]

Bond between A: [serial 90 resid 6 resname CYX chain A segid P0]
             B: [serial 1986 resid 136 resname CYX chain A segid P0]
2018-04-30 14:53:35,928 - htmd.builder.amber - INFO - Starting the build.
2018-04-30 14:53:52,280 - htmd.builder.amber - INFO - Finished building.
2018-04-30 14:53:55,583 - htmd.molecule.writers - WARNING - Field "resid" of PDB overflows. Your data will be truncated to 4 characters.

Visualize

The built system can be visualized (with waters hidden to be able to visualize the inserted ions):

bmol_charmm.view(sel='not water') # visualize the charmm built system
# bmol_amber.view(sel='not water') # uncomment to visualize the amber built system
A Jupyter Widget

The bmol_charmm and bmol_amber are Molecule objects that contain the built system, but the full contents to run a simulation are located in the outdir (./build in this case).