Giter Club home page Giter Club logo

openmmtools's Introduction

GH Actions Status Anaconda Badge Downloads Badge Documentation Status Zenodo DOI Badge codecov

OpenMMTools

A batteries-included toolkit for the GPU-accelerated OpenMM molecular simulation engine.

openmmtools is a Python library layer that sits on top of OpenMM to provide access to a variety of useful tools for building full-featured molecular simulation packages.

Features include:

See the full documentation at ReadTheDocs.

License

OpenMMTools is distributed under the MIT License.

Contributors

A complete list of contributors can be found here.

Major contributors include:

openmmtools's People

Contributors

adw62 avatar andrrizzi avatar andysim avatar bas-rustenburg avatar dominicrufa avatar dwhswenson avatar gregoryross avatar hannahbrucemacdonald avatar hb0402 avatar ialibay avatar ijpulidos avatar jaimergp avatar jchodera avatar jfennick avatar kyleabeauchamp avatar lnaden avatar maxentile avatar mikemhenry avatar mjw99 avatar olllom avatar pgrinaway avatar richardjgowers avatar simonboothroyd avatar sroet avatar zhang-ivy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openmmtools's Issues

Deprecation warning using AlanineExplicit Testsystem

Just tried the example and go this warning

/Users/jan-hendrikprinz/anaconda/lib/python2.7/site-packages/simtk/openmm/app/amberinpcrdfile.py:74: DeprecationWarning: loadVelocities and loadBoxVectors have been deprecated. velocities and box information is loaded automatically if the inpcrd file contains them.
  'them.', DeprecationWarning)

Think this is easy to fix. Will do it, once I have a better idea of openmmtools

Fix segfault in LennardJonesFluid

The new subrandom sampling for LennardJonesFluid ends up producing configurations with so high of an energy that they can cause segfaults.

Add TestSystem.minimize() function

It's so common to have to minimize the test systems that it may be useful add a TestSystem.minimize() method.

In fact, it may be neat if we could minimize all systems at install time and cache the minimized coordinates...

'from testsystems import testsystems' is awkward

Is there a way we can better configure or name this package for importing to make more sense?

Perhaps this could be

from openmmutil import testsystems
from openmmtools import testsystems
from choderalab import testsystems
...

Ideas?

Fix issues with sobol

There seems to be an issue where repeatedly invoking test systems that use the sobol code will die.

For example,

[LSKI1497:choderalab/openmmtools/openmmtools.jchodera] choderaj% python customintegrator-buserror.py
cycle 0
cycle 1
cycle 2
cycle 3
cycle 4
cycle 5
cycle 6
cycle 7
cycle 8
cycle 9
cycle 10
cycle 11
cycle 12
cycle 13
cycle 14
Traceback (most recent call last):
  File "customintegrator-buserror.py", line 209, in <module>
    integrator = openmm.VerletIntegrator(1.0 * unit.femtosecond)
AttributeError: 'module' object has no attribute 'VerletIntegrator'

Add (optional) topology to testSystems

This would come in very handy for our purposes. If at least in some systems we could get an openmm.Topology() object or mdtraj.Topology() object that would be great. Maybe we can add an extended TestSystem like

class ExtendedTestSystem(TestSystem):

    def __init__(self, args, topology):
        super(ExtendedTestSystem, self).__init__(args)
        self.topology = topology

This might make it easier to analyze results later. Any ideas?

Mention @dwhswenson here to get his opinion.

Follow-up study on hydrogen mass repartitioning (HMR) schemes?

The AMBER folks have just put out an article on their approach to HMR.

They compute a number of equilibrium static physical properties (phi/psi distribution, rotamer populations, pKas, RMSD distributions, etc.) and a kinetic property (rotamer transition rates) to show that the static properties are mostly undisturbed despite the timestep increase for HMR calculations.

Interestingly, they omitted some simple-to-compute properties that may be especially sensitive to timestep, such as liquid densities, enthalpies of vaporization, and pressures at fixed volume.

There are two follow-up questions we could easily tackle using tools in openmmtools:

  1. They don't actually concretely show that sampling is faster by computing correlation times (though Fig 14 is suggestive evidence it speeds up convergence of pKa calculations)
  2. They don't have some figure of merit that allows a comparison between different timesteps or HMR schemes to allow someone to compare which is "better" or even "acceptable".

Issue #1 is simple to fix---we could just compute integrated autocorrelation functions to directly show that phase space really is sampled more quickly despite the mass repartitioning.

Issue #2 also has a ready solution, using Eq. 6 of this work; see results for flexible and rigid waterboxes plotted in Fig 2:
http://dx.doi.org/10.1103/PhysRevX.3.011007

This number---the steady state nonequilibrium free energy---is essentially a measure of how far the system is driven from the desired equilibrium distribution for any symplectic integration scheme we sandwich inside a VVVR integrator (such as VV, VV with HMR, MTS, etc.).

I even have scripts for this sitting around that could be adapted to use openmmtools.integrators and openmmtools.testsystems if this was of interest for putting out a paper on approaches to HMR.

I actually wonder (given previous suggestions from @kyleabeauchamp) if HMR + MTS would work even better. And using Metropolization (e.g. MTS GHMC + HMR) might be a no-brainer if we ever get the speed issues with CustomIntegrator figured out.

Also, I'm thrilled to see Bennett's paper on HMR get a shout-out!

Use classes for integrators?

It might be cute to use classes instead of functions, so that we can use inheritance to do further customizations. This is not unprecedented, as Peter's RESPA integrator does this.

This would also let us write decorators that calculate various convergence statistics for monitoring. Also, we could use member functions to help with tuning various mcmc parameters.

Add standard JAC benchmark systesm to testsystems

It would be useful to have the standard JAC benchmark systems in openmmtools.testsystems, with the DHFR system likely being most valuable.

The AMBER version of the input files is available here, but the prmtop files are unfortunately only available in the "old" prmtop format:
http://ambermd.org/Amber14_Benchmark_Suite.tar.bz2

I believe the current AMBER prmtop loader only reads the "new" prmtop file formats, so we would need to either convert these to new format (using ParmEd from @swails?), upgrade the prmtop reader to read the "old" style files, or find the CHARMM version of these files and try out the CHARMM loader.

Add simple test systems for binding free energies

It would be nice to add a few test systems here:

  • two Lennard-Jones particles with and without opposite charges
  • two water molecules
  • an artificial binding site made of Lennard-Jones atoms
  • one water molecule in a box of water molecules
  • a host-guest system

Add convenience methods or properties to testsystems to get sets of systems for testing

It would be useful if we could easily query the openmmtools.testsystems module for useful subsets of systems, such as:

  • all testsystems of any kind
  • main test representatives (e.g. WaterBox, but not DischargedWaterBox)
  • all alchemical test systems
  • weird corner cases that are non representative of real use cases
  • systems that are typical of real use cases
  • systems that will be "fast" or "easily computable"
  • systems with analytical properties

There's a lot of stuff in there now, but not all of it is applicable to every kind of test battery.

travis build does not upload newest version and binstar version cannot be imported

I just had to reinstall Anaconda from scratch. Completely new user. Newest Anaconda and installed openmmtools. It installs using conda but importing fails

import openmmtools with


---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-5-113cf65ec230> in <module>()
----> 1 import openmmtools

/Users/jan-hendrikprinz/anaconda/lib/python2.7/site-packages/openmmtools-0.9.0-py2.7.egg/openmmtools/__init__.py in <module>()
      7 
      8 # Define global version.
----> 9 from openmmtools import version
     10 __version__ = version.version
     11 

ImportError: cannot import name version

Apparently the newest build did not get uploaded to binstar. In the after_success the {PACKAGENAME} seemed to be empty which results in the binstar command not being able to find the package. Has there been some changes recently?

Add Integrators?

I wonder if we want to put the integrators here? Right now, we have lots of really useful integrators that are hidden in various repositories.

Also, I wonder if we should add a GHMC RESPA integrator and a simple function to auto-tune the timesteps to provide a reasonable acceptance rate. That could be really useful in a lot of applications.

Implement advanced HMC Integrators

  1. Extra chance HMC
  2. RESPA HMC
  3. Non-uniform step size HMC
  4. GHMC with n_steps parameter

I have working or half-working branches for most of these, which I can PR as we find time for this. Longer term, it would be great to actually combine all these methods into a single custom integrator--all these methods are "stackable" with one another.

Fixing travis

Something is wrong with travis, so I need to do a trivial direct commit to debug.

Remove unnecessary packages from meta.yml ?

openmmtools has in the run section in meta.yml

  • nose
  • setuptools

this causes unnecessary installation of these packages (I think) when using conda install.
I assume that just removing will break the tests in travis. So not sure what the best strategy is.
This is not really urgent.

GHMC is slow

My crude experiments suggest that, for a 4500 atom system, the GHMC integrator is 3 or 4 times slower than Langevin.

Given this slowdown, most users would be more inclined to just reduce their timestep and stick with Langevin. A faster implementation of GHMC might help with that.

Add `testsimulations` to set up simulations including integrator and system

The idea comes from this thread from @jhprinz:

Another idea I had is, if instead of having test systems, we would also have test simulators which are like a test system, but without the actual topology/protein. E.g. only a simulation with a VVVRIntegrator, PME, barostat defined by some options? This way we can use it to restart a simulation without storing the system object. So a testsimulation contains a factory for a full simulation given some parameters and a topology. These could then partially be used in the testsystems? Just an idea...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.