GithubHelp home page GithubHelp logo

mosdef-hub / mosdef-workflows Goto Github PK

View Code? Open in Web Editor NEW
13.0 13.0 23.0 1.55 MB

Sample molecular simulation workflows using a MoSDeF and community tools

Jupyter Notebook 99.11% Python 0.89%
molecular-dynamics python molecular-simulation

mosdef-workflows's Introduction

MoSDeF Workflows -- A collection of sample workflows using MoSDeF tools

The Molecular Simulation Design Framework (MoSDeF) tools support a wide range of simulation engines, including Cassandra, GPU Optimized Monte Carlo (GOMC), GROMACS, HOOMD-blue, and Large-scale Atomic/Molecular Massively Parallel Simulator (LAMMPS). MoSDeF tools facilitate simulation reproducibility across the various simulation engines, thus lowering the barrier of entry to replicate, continue, or advance existing research. Additionally, the framework supports plethora of diverse systems, allowing large-scale screening of chemicals and materials using Signac to manage the simulations and data.

The MoSDeF software is comprised the following major packages:

  • mBuild -- A hierarchical, component based molecule builder
  • foyer -- A package for atom-typing as well as applying and disseminating forcefields
  • GMSO -- Flexible storage of chemical topology for molecular simulation

mosdef-workflows's People

Contributors

ahy3nz avatar bc118 avatar bdice avatar daico007 avatar jennyfothergill avatar joaander avatar justingilmer avatar mattwthompson avatar rmatsum836 avatar rsdefever avatar

Stargazers

 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

mosdef-workflows's Issues

Notes to developers

I wanted to start an issue for a place we can share things that help in building up these workflow examples: I'll start:

  • You can run notebooks from the command line via something like below. This can be useful for running one of these examples on a cluster in one go.

jupyter nbconvert --execute --ExecutePreprocessor.timeout=600 notebook.ipynb

Maybe this ends up as a contributor's guide in the future.

Pre-atomtyped compounds

This will try to resemble a charmm-gui-esque workflow. Parameters and atomtypes for everything are already provided in files suitable for charmm/gromacs/namd/openmm, but there is some usage of mbuild and foyer to rapidly build a system.

Raising this issue to make me do this

OPV Example

I'm going to create an issue to keep this on my mind, the plan is to migrate on of our P3HT/OPV examples into this repo.

Custom elements

Opening this issue up to anyone else. The idea is to construct mbuild particles _particleName with the underscore in order to denote "custom elements". Then a foyer ff xml could be used, with atomtype lines including def="[_particleName]". Could be good for coarse-grained systems.

In technical detail, this sort of underscore-custom-element mechanism is important if we need to generate a parametrized pmd.Structure via mb.Compound and foyer.Forcefield

Standard method to specify requirements of each workflow

There should be some standard way of documenting what each workflow needs. We don't want the user to need to install all dependencies at the top-level (including non-Python things like molecular simulation engines) to run a single workflow, so this should be done inside of each workflow. We could

  • have a separate requirements.txt in each folder
  • maybe something similar but at the high level?
  • have a block or two at the top of the notebook that checks all dependencies (including, for example gmx -h or lmp -h) and provides helpful error messages for those that aren't installed, i.e. where each might be found.

Ideas for OpenFF + MoSDeF examples

I wrote this up in #35 but it work better an an issue for discussion. We've discussed some more complex examples elsewhere, but I think for this repo it's more appropriate to do chemically "basic" things and do the novel work elsewhere.

Future updates (in that notebook or others) should

  • Compare results obtained from different engines
  • See if openmmforcefields can be used to generate GAFF parameters
  • Use the Interchange object instead of ForceField.create_openmm_system
  • Use direct conversions between mBuild and OpenFF objects instead of going through ParmEd & OpenMM.
    • Some live here now but should have a better home long-term.
  • Show off more of the Molecule API
    • Writing to different files
    • Assigning partial charges with different methods
    • Generating and comparing conformers with different toolkit

cc: @j-wags @mrshirts @daico007 @justinGilmer

Water on gold

Simple (by comparison) interfacial example. A gold lattice can be constructed from mb.Lattice or read in from a .cif file. We have a few sets of gold potentials lying around that could probably be clobbered together with a three-site water model

freud usage may be incorrect in example

@mattwthompson @ahy3nz I looked at the ua-custom-element example and I am not sure if it is computing RDFs in the right way with freud. Here's the code snippet:

for frame in hoomd_traj:
    ch3_particles = [i for i,val in enumerate(frame.particles.typeid) if 
                frame.particles.types[val]=='CH3']
    ch4_particles = [i for i,val in enumerate(frame.particles.typeid) if
                frame.particles.types[val]=='CH4']
    oh_particles = [i for i,val in enumerate(frame.particles.typeid) if
                frame.particles.types[val]=='OH']
    
    ch3_positions = np.array(frame.particles.position[ch3_particles])
    ch4_positions = np.array(frame.particles.position[ch4_particles])
    oh_positions = np.array(frame.particles.position[oh_particles])

    ch3_ch3_rdf.compute(frame, query_points=ch3_positions, reset=False)
    ch4_ch4_rdf.compute(frame, query_points=ch4_positions, reset=False)
    oh_oh_rdf.compute(frame, query_points=oh_positions, reset=False)

Running rdf.compute(frame, query_points=ch3_positions, reset=False) will compute the RDF between CH3s and all particles in the frame, not between CH3s and other CH3s. You would need to run rdf.compute(system=(box, ch_positions), query_points=ch3_positions, reset=False). If you agree, I can make these changes in the notebook. I don't have any concept for what the reference data should look like, so I'm not sure how to validate the outcomes.

Add read the docs build

It would be useful for folks who simply want to read through the examples to have a rendered notebook easily accessible. We should convert notebooks to rst and add a rtd build (like what already exists in mbuild/foyer).

see discussion on #31

cassandra-gcmc-adsorption is outdated

     26         system = mc.System(box_list, species_list)
---> 27         moves = mc.Moves('gcmc', species_list)
     28 
     29         mc.run(
AttributeError: module 'mosdef_cassandra' has no attribute 'Moves'
AttributeError: module 'mosdef_cassandra' has no attribute 'Moves'

Polarizable water in OpenMM

It was mentioned in the meeting the other day that it would be nice to have various water models. I have a OpenMM workflow for some polarizable models that I think would be a good addition.

Question is, should this exist as its own repo, or should the water-box workflow be expanded upon?

DFTB workflows

Lots of things to choose from

  • Geometry optimization
  • Partial charge assignment
  • DFTB trajectories

Or any of the above pieced into a workflow with other components (get partial charges from DFTB, combine them with bonded & nonbonded terms from OPLS-AA, go to town)

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.