2. Molecular Design Toolkit Features¶
Contents
2.1. Molecular Mechanics¶
models.Forcefield
Generic Forcefield energy model (automatically chosen implementation)models.GAFF
Amber force field for small organic moleculesmodels.OpenMMEnergyModel
OpenMM energy kernel for Amber/CHARMM-like forcefieldsmodels.SanderEnergyModel
Sander energy kernel (from AmberTools) for Amber/CHARMM-like forcefieldsmodels.Spring
A single harmonic bond 2 atoms (for testing and toy models)models.HarmonicOscillator
A 1-D Harmonic oscillator centered at x=0 (for testing and toy models)
2.2. Quantum Chemistry¶
models.RHF
Restricted Hartree-Fock (automatically chosen implementation)models.DFT
Density functional theories (automatically chosen implementation)models.CASSCF
Complete-active space MCSCF (automatically chosen implementation)models.Semiempirical
Generic semiempirical theories (automatically chosen implementation)models.PySCF
PySCF ab initio QM energy kernel, includes implementations for a large number of quantum energy models, including RHF, DFT, CASCI, CASSCF, MP2, and coupled clustermodels.SQM
SQM semi-empirical energy kernel (from AmberTools), includes implementations for a large number of semiempirical models, including MNDO, AM1, PM3, PM6, DFTB
2.2.1. Molecular Dynamics¶
integrators.VelocityVerlet
Generic Velocity Verlet dynamics (automatically chosen implementation)integrators.Langevin
Generic Langevin type (automatically chosen implementation)integrators.OpenMMVerlet
Velocity Verlet dynamics for use with OpenMM energy modelsintegrators.OpenMMLangevin
Velocity Langevin dynamics for use with OpenMM energy modelsintegrators.SurfaceHopping
Multi-state surface hopping dynamics using fewest switched. Implementation: internal.
2.3. Interactive visualization¶
viewer.Configurator
Automatically generates user interfaces for configuring simulationsviewer.GeometryViewer
3D molecular viewerviewer.ChemicalGraphViewer
2D molecular viewerwidgets.OrbitalViewer
3D molecular orbital viewerwidgets.BondSelector
widget for building lists of atoms and/or bondswidgets.ResidueSelector
widget for building lists of atoms and/or residueswidgets.GeometryBuilder
widget for manipulating internal coordinateswidgets.Symmetrizer
widget for displaying and manipulating molecular symmetry groupswidgets.ParameterizationDisplay
3D display of issues when assigning forcefield parameters
2.4. Data analysis¶
Simulation results are stored in numpy arrays with an explicit unit system based on pint
for easy analysis and comparison. A few are shown here as examples:
Static properties
Molecule.potential_energy()
,Molecule.forces()
,Molecule.dipole_moment()
,Molecule.wfn()
Molecular properties calcualted by energy models: the potential energy, force array, dipole moment vector, and electronic wavefunction, respectively.orbitals.ElectronWfn
A data structure storic electronic wavefunction information, as calculated by a quantum energy model.ElectronWfn.aobasis.fock()
ElectronWfn.aobasis.overlaps()
The Fock and overlap matrices in the AO basisElectronWfn.canonical.fock()
ElectronWfn.canonical.overlaps()
The Fock and overlap matrices in the canonical orbital basisElectronWfn.canonical.coeffs()
The canonical orbital coefficients in the AO basis
Trajectory properties
Trajectory
A data structure storing a series of molecular structures with associated propertiesTrajectory.rmsd()
Calculate a timeseries of RMSD values over the course of a trajectoryTrajectory.distance()
,Trajectory.angle()
,Trajectory.dihedral()
Return a timeseries of distances, angles, or dihedral angles over the course of a trajectoryTrajectory.time()
Trajectory.potential_energy()
Trajectory.kinetic_temperature()
...
- Return timeseries of times, energies, temperatures, etc. over the course of a trajectory
2.5. Interfaces¶
Files and databases
read()
,write()
read/write molecular file formats. Supports PDB, mmCIF, SDF, XYZ, MOL2, and pickled objects. Implementations: OpenBabel, BioPython, or internal.from_smiles()
Convert a SMILES string into an MDT molecule with a 3D structure. Implementation: OpenBabel.from_name()
Convert an IUPAC chemical name into an MDT molecule with a 3D structure. Implementation: Opsin.from_pdb()
Download and create a molecule object from a PDB code. Implementation: BioPython.
Python objects
MDT molecules can also be converted into objects for a variety of other Python chemistry libraries:
interfaces.mol_to_pybel()
,interfaces.pybel_to_mol()
Convert an MDT molecule to/from a pybel (i.e. OpenBabel) molecule object.interfaces.mol_to_pyscf()
,interfaces.pyscf_to_mol()
Convert an MDT molecule to/from a PySCF molecule object.interfaces.topology_to_mol()
,interfaces.mol_to_topology()
Convert an OpenMM topology object to/from an MDT molecule
2.6. Tools¶
Topology manipulation
add_hydrogen()
Saturate a molecule’s valence with hydrogens. Implementation: OpenBabel.guess_bond_orders()
Assign bond orders based on geometry and/or topology. Implementation: OpenBabel.mutate_residues()
Mutate DNA bases and amino acid residues. Implementation: PDBFixer.add_water_box()
Add water box with optional ions. Implementation: PDBFixer.
Forcefields
assign_forcefield()
Returns a new molecule with forcefield assignments and any missing atoms. Implementation: AmberTools/tLeap.parameterize()
Assign forcefield parameters to a molecule. Implementation: Ambertools/antechamber.calc_am1_bcc_charges()
calc_gasteiger_charges()
calc_esp_charges()
Calculate partial charges for use with a forcefield. Implementation: Ambertools/antechamber and Ambertools/SQM