• Stars
    star
    171
  • Rank 222,266 (Top 5 %)
  • Language
    Python
  • License
    Other
  • Created about 11 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A hierarchical, component based molecule builder

mBuild: a hierarchical, component based molecule builder

Gitter chat CI Anaconda Badge codecov

With just a few lines of mBuild code, you can assemble reusable components into complex molecular systems for molecular dynamics simulations.

  • mBuild is designed to minimize or even eliminate the need to explicitly translate and orient components when building systems: you simply tell it to connect two pieces!
  • mBuild keeps track of the system's topology so you don't have to worry about manually defining bonds when constructing chemically bonded structures from smaller components.

To learn more, get started or contribute, check out our website.

mBuild within the MoSDeF Ecosystem

mBuild within the MoSDeF Ecosystem

The mBuild package is part of the Molecular Simulation Design Framework (MoSDeF) project. Libraries in the MoSDeF ecosystem are designed to provide utilities neccessary to streamline a researcher's simulation workflow. When setting up simulation studies, we also recommend users to follow the TRUE (Transparent, Reproducible, Usable-by-others, and Extensible) standard, which is a set of common practices meant to improve the reproducibility of computational simulation research.

Installation

For full, detailed instructions, refer to the documentation for installation

conda installation quickstart

mBuild is available on conda and can be installed as:

conda install -c conda-forge mbuild

Installing from source

Dependencies of mBuild are listed in the files environment.yml (lightweight environment specification containing minimal dependencies) and environment-dev.yml (comprehensive environment specification including optional and testing packages for developers). The mbuild or mbuild-dev conda environments can be created with

git clone https://github.com/mosdef-hub/mbuild.git
cd mbuild
# for mbuild conda environment
conda env create -f environment.yml
conda activate mbuild

# for mbuild-dev
conda env create -f environment-dev.yml
conda activate mbuild-dev

# install a non-editable version of mbuild
pip install .

Install an editable version from source

Once all dependencies have been installed and the conda environment has been created, the mBuild itself can be installed.

cd mbuild
conda activate mbuild-dev # or mbuild depending on your installation
pip install -e .

Quick Start with Docker

To use mbuild in a jupyter-notebook that runs from a docker container with all the dependencies installed use the following command:

$ docker pull mosdef/mbuild:latest
$ docker run -it --name mbuild -p 8888:8888 mosdef/mbuild:latest su anaconda -s\
      /bin/sh -l -c "jupyter-notebook --no-browser --ip="0.0.0.0" --notebook-dir\
      /home/anaconda/mbuild-notebooks

Alternatively, you can also start a Bourne shell directly:

$ docker run -it --name mbuild mosdef/mbuild:latest

To learn more about using mBuild with docker, please refer to the documentation here.

Tutorials

Interactive tutorials can be found here:

Binder

Components in dashed boxes are drawn by hand using, e.g., Avogadro or generated elsewhere. Each component is wrapped as a simple python class with user defined attachment sites, or ports. That's the "hard" part! Now mBuild can do the rest. Each component further down the hierarchy is, again, a simple python class that describes which piece should connect to which piece.

Ultimately, complex structures can be created with just a line or two of code. Additionally, this approach seamlessly exposes tunable parameters within the hierarchy so you can actually create whole families of structures simply by adjusting a variable:

import mbuild as mb
from mbuild.examples import PMPCLayer

pattern = mb.Random2DPattern(20)  # A random arrangement of 20 pieces on a 2D surface.
pmpc_layer = PMPCLayer(chain_length=20, pattern=pattern, tile_x=3, tile_y=2)

Zwitterionic brushes on beta-cristobalite substrate

Community Recipes

Use case-specific systems can be generated via mBuild recipes. Some users have graciously contributed recipes for particular systems, including:

Citing mBuild

If you use this package, please cite our paper. The BibTeX reference is

@article{Klein2016mBuild,
      author = "Klein, Christoph and Sallai, Jรกnos and Jones, Trevor J. and Iacovella, Christopher R. and McCabe, Clare and Cummings, Peter T.",
      title = "A Hierarchical, Component Based Approach to Screening Properties of Soft Matter",
      booktitle = "Foundations of Molecular Modeling and Simulation",
      series = "Molecular Modeling and Simulation: Applications and Perspectives",
      year = "2016",
      doi = "http://dx.doi.org/10.1007/978-981-10-1128-3_5"
}

License

Various sub-portions of this library may be independently distributed under different licenses. See those files for their specific terms.

This material is based upon work supported by the National Science Foundation under grants NSF CBET-1028374 and NSF ACI-1047828. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.

More Repositories

1

foyer

A package for atom-typing as well as applying and disseminating forcefields
Python
117
star
2

gmso

Flexible storage of chemical topology for molecular simulation
Python
52
star
3

mosdef_tutorials

A set of tutorials to introduce new users to the MoSDeF (Molecular Simulation Design Framework) toolkit
Jupyter Notebook
25
star
4

mosdef-workflows

Sample molecular simulation workflows using a MoSDeF and community tools
Jupyter Notebook
13
star
5

msibi

A package for managing pair-potential derivation using MultiState Iterative Boltzmann Inversion (MS-IBI)
Python
10
star
6

mbuild_tutorials

A set of tutorials to introduce new users to mBuild
Jupyter Notebook
10
star
7

nanoparticle_optimization

NanoOpt: Deriving potentials for coarse-grained nanoparticles via potential-matching
Jupyter Notebook
10
star
8

reproducibility_study

Repo for data collection, discussion, etc for a MoSDeF reproducibility study.
Jupyter Notebook
6
star
9

forcefield_template

A template repo for disseminating force fields with foyer
Python
6
star
10

mosdef_slitpore

A variety of water and carbon slit-pore simulations
Python
4
star
11

forcefield_perfluoroethers

foyer force field for perfluoroethers
Jupyter Notebook
3
star
12

mbuild-examples

mBuild examples
Jupyter Notebook
3
star
13

foyer_tutorials

A set of tutorials to introduce new users to Foyer
Jupyter Notebook
3
star
14

mosdef-hub.github.io

Umbrella Website for MoSDeF
HTML
2
star
15

molbox

Python
2
star
16

forcefield-utilities

MISC Utilities for MoSDeF Forcefields conversion
Python
2
star
17

MoSDeF-workshop

Collection of tutorials and example workflows for MoSDeF workshop at FOMMS 2022
Jupyter Notebook
2
star
18

metamds

metamds is currently read-only; see signac.io for a recommended data and workflow manager
Python
2
star
19

FOMMS-MoSDeF-Workshop

Jupyter Notebook
2
star
20

gmso-examples

Demonstrating GMSO as a backend for preparing molecular simulation
1
star
21

mbuild_binder

Jupyter Notebook
1
star