diff --git a/docs/features.rst b/docs/features.rst new file mode 100644 index 0000000..eae1880 --- /dev/null +++ b/docs/features.rst @@ -0,0 +1,155 @@ +Molecular Design Toolkit Features +================================= + +.. contents:: + :depth: 5 + + + +Simulation methods +------------------ + +Energy models +^^^^^^^^^^^^^ + +**Methods** + + - :meth:`Molecule.calculate` Calculate molecular properties using the assigned energy model + + - :meth:`Molecule.minimize` Perform an energy minimization using the assigned energy model + +**Classical** + + - :class:`models.Forcefield` Generic Forcefield energy model (automatically chosen implementation) + + - :class:`models.OpenMMEnergyModel` OpenMM energy kernel for Amber/CHARMM-like forcefields + + - :class:`models.SanderEnergyModel` Sander energy kernel (from AmberTools) for Amber/CHARMM-like forcefields + + - :class:`models.Spring` A single harmonic bond 2 atoms (for testing and toy models) + + - :class:`models.HarmonicOscillator` A 1-D Harmonic oscillator centered at x=0 (for testing and toy models) + +**Quantum** + + - :class:`models.RHF` Generic restricted Hartree-Fock (automatically chosen implementation) + + - :class:`models.DFT` Generic density functional theories (automatically chosen implementation) + + - :class:`models.Semiempirical` Generic semiempirical theories (automatically chosen implementation) + + - :class:`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 cluster + + - :class:`models.SQM` SQM semi-empirical energy kernel (from AmberTools), includes implementations for a large number of semiempirical models, including MNDO, AM1, PM3, PM6, DFTB + + +Integrators +^^^^^^^^^^^ + + - :class:`integrators.VelocityVerlet` Generic Velocity Verlet dynamics (automatically chosen implementation) + + - :class:`integrators.Langevin` Generic Langevin type (automatically chosen implementation) + + - :class:`integrators.OpenMMVerlet` Velocity Verlet dynamics for use with OpenMM energy models + + - :class:`integrators.OpenMMLangevin` Velocity Langevin dynamics for use with OpenMM energy models + + - :class:`integrators.SurfaceHopping` Multi-state surface hopping dynamics using fewest switched. Implementation: internal. + + +Interactive Widgets +------------------- + + - :class:`viewer.Configurator` Automatically generates user interfaces for configuring simulations + + - :class:`viewer.GeometryViewer` 3D molecular viewer + + - :class:`viewer.ChemicalGraphViewer` 2D molecular viewer + + - :class:`widgets.OrbitalViewer` 3D molecular orbital viewer + + - :class:`widgets.BondSelector` widget for building lists of atoms and/or bonds + + - :class:`widgets.ResidueSelector` widget for building lists of atoms and/or residues + + - :class:`widgets.GeometryBuilder` widget for manipulating internal coordinates + + - :class:`widgets.Symmetrizer` widget for displaying and manipulating molecular symmetry groups + + - :class:`widgets.ParameterizationDisplay` 3D display of issues when assigning forcefield parameters + + +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** + + - :meth:`Molecule.potential_energy`, :meth:`Molecule.forces`, :meth:`Molecule.dipole_moment`, :meth:`Molecule.wfn` Molecular properties calcualted by energy models: the potential energy, force array, dipole moment vector, and electronic wavefunction, respectively. + + - :class:`orbitals.ElectronWfn` A data structure storic electronic wavefunction information, as calculated by a quantum energy model. + + - :meth:`ElectronWfn.aobasis.fock` :meth:`ElectronWfn.aobasis.overlaps` The Fock and overlap matrices in the AO basis + + - :meth:`ElectronWfn.canonical.fock` :meth:`ElectronWfn.canonical.overlaps` The Fock and overlap matrices in the canonical orbital basis + + - :meth:`ElectronWfn.canonical.coeffs` The canonical orbital coefficients in the AO basis + +**Trajectory properties** + + - :class:`Trajectory` A data structure storing a series of molecular structures with associated properties + + - :meth:`Trajectory.rmsd` Calculate a timeseries of RMSD values over the course of a trajectory + + - :meth:`Trajectory.distance`, :meth:`Trajectory.angle`, :meth:`Trajectory.dihedral` Return a timeseries of distances, angles, or dihedral angles over the course of a trajectory + + - :meth:`Trajectory.time` :meth:`Trajectory.potential_energy` :meth:`Trajectory.kinetic_temperature` ``...`` - Return timeseries of times, energies, temperatures, etc. over the course of a trajectory + + +Conversions +----------- + +**Files and databases** + + - :meth:`read`, :meth:`write` read/write molecular file formats. Supports PDB, mmCIF, SDF, XYZ, MOL2, and pickled objects. Implementations: OpenBabel, BioPython, or internal. + + - :meth:`from_smiles` Convert a SMILES string into an MDT molecule with a 3D structure. Implementation: OpenBabel. + + - :meth:`from_name` Convert an IUPAC chemical name into an MDT molecule with a 3D structure. Implementation: Opsin. + + - :meth:`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: + + - :meth:`interfaces.mol_to_pybel`, :meth:`interfaces.pybel_to_mol` Convert an MDT molecule to/from a `pybel` (i.e. OpenBabel) molecule object. + + - :meth:`interfaces.mol_to_pyscf`, :meth:`interfaces.pyscf_to_mol` Convert an MDT molecule to/from a PySCF molecule object. + + - :meth:`interfaces.topology_to_mol`, :meth:`interfaces.mol_to_topology` Convert an OpenMM topology object to/from an MDT molecule + + +Tools +----- + +**Topology manipulation** + + - :meth:`add_hydrogen` Saturate a molecule's valence with hydrogens. Implementation: OpenBabel. + + - :meth:`guess_bond_orders` Assign bond orders based on geometry and/or topology. Implementation: OpenBabel. + + - :meth:`mutate_residues` Mutate DNA bases and amino acid residues. Implementation: PDBFixer. + + - :meth:`add_water_box` Add water box with optional ions. Implementation: PDBFixer. + + +**Forcefields** + + - :meth:`assign_forcefield` Returns a new molecule with forcefield assignments and any missing atoms. Implementation: AmberTools/tLeap. + + - :meth:`parameterize` Assign forcefield parameters to a molecule. Implementation: Ambertools/antechamber. + + - :meth:`calc_am1_bcc_charges` :meth:`calc_gasteiger_charges` :meth:`calc_esp_charges` Calculate partial charges for use with a forcefield. Implementation: Ambertools/antechamber and Ambertools/SQM diff --git a/moldesign/_static_data/pint_atomic_units.txt b/moldesign/_static_data/pint_atomic_units.txt index c180588..1b7de80 100644 --- a/moldesign/_static_data/pint_atomic_units.txt +++ b/moldesign/_static_data/pint_atomic_units.txt @@ -8,3 +8,4 @@ ps = picosecond = 1.0 * piscosecond amu = 1.0 * atomic_mass_units ang = 1.0 * angstrom eV = electron_volt +debye = 0.393430307 * elementary_charge * bohr