Coder Social home page Coder Social logo

bbye98 / mdhelper Goto Github PK

View Code? Open in Web Editor NEW
8.0 1.0 0.0 89.87 MB

A batteries-included toolkit of analysis modules and helper functions for molecular dynamics (MD) simulations.

Home Page: https://bbye98.github.io/mdhelper/

License: GNU General Public License v3.0

Python 60.02% CMake 0.95% C++ 6.09% C 0.18% Cuda 3.54% SWIG 0.30% Jupyter Notebook 28.92%
md-simulation mdanalysis openmm

mdhelper's People

Contributors

bbye98 avatar pw0908 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

mdhelper's Issues

Remove OpenMM dependency from submodules

In the algorithm and analysis submodules, the unit conversions and handling should be transitioned from openmm.unit to pint. However, functions and methods that accept openmm.unit.Quantity objects should retain their type hints (change unit.Quantity to "openmm.unit.Quantity") and unit conversions (change isinstance(data, unit.Quantity) to type(data).__name__ == "Quantity").

In the openmm submodules, no changes are necessary since openmm is a required dependency.

MDHelper 1.0.0 release

A few to-dos left to complete before the release of MDHelper 1.0.0:

General

  • (Issue #1) Remove OpenMM dependency from the algorithm and analysis submodules.
  • (Issue #1) Transition from openmm.unit to pint for unit tracking. Current functions and methods should continue to accept data stored in openmm.unit.Quantity objects for compatibility, but they should be converted to pint.Quantitys or made unitless into floats within the function/method.
  • (Issue #3) Remove ArrayLike type hints and replace with most reasonable data type (tuple[<type>], list[<type>], or np.ndarray[<type>]).
  • Ensure consistent API by appending verbs to functions and methods without them.
  • Write recipe to upload to Conda (specifically the conda-forge channel).

Analysis

  • Ensure consistency of keys in analysis results objects.
  • Verify that unwrapping is necessary/implemented correctly in analysis.electrostatics and analysis.transport modules.
  • Check validity of unwrapping/wrapping in analysis.profile module.
  • Add time blocking (n_blocks argument) support for all analysis modules that support outputting results as functions of time.

analysis.electrostatics

  • Implement the DipoleMoment class.
  • Allow calculations in only specified directions, i.e. axes="xy", in the DipoleMoment class.

analysis.polymer

  • Verify that the end-to-end distance vector calculation in the EndToEndVector class is correct.

openmm.bond

  • FENE bonds are weird.

JOSS paper

  • Prepare manuscript for JOSS.
  • Update documentation (Getting Started guide, etc.) and add examples.
  • Update README and contributor guidelines.

Once everything above is done, rename the package to MDCraft.

Slated for 1.0.1:

  • Add unit test for analysis.electrostatics.DipoleMoment -- use a bulk water system and check if the relative permittivity is close to 78.
  • Add unit test for analysis.polymer.EndToEndVector -- use a frozen polymer and a random walk polymer to ensure the ACF stays at 1 and decays to 0, respectively.
  • Add unit test for analysis.polymer.Gyradius -- TBD.
  • Add unit test for analysis.polymer.SingleChainStructureFactor -- use old "negative chi" results to show correct slopes in the three distinct regimes.
  • Add unit test for analysis.profile.DensityProfile -- TBD.
  • Add unit test for analysis.structure.RDF -- use bulk argon system.
  • Add unit test for analysis.structure.StructureFactor -- use solid lattice to show peaks at relevant wavenumbers.
  • Add unit test for analysis.structure.IncoherentIntermediateScatteringFunction -- use solid lattice and show invariance of peaks over time.
  • Add partial calculations to analysis.structure.IncoherentIntermediateScatteringFunction.
  • Refine unit test for analysis.transport.Onsager.

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.