Components in dashed boxes are drawn by hand using, e.g., Avogadro or generated elsewhere.
mBuild builds up complex systems from simple building blocks through simple attachment sites, called a
Port (i.e., connection points). Each building block is a python class that can be customized or created through the pre-built options in the
mBuild library (
mbuild.lib ). A hierarchical structure of parents and children is created through these classes, which can be easily parsed or modified.
This allows mBuild to generate chemical structures in a piecemeal fashion by creating or importing molecular sections, adding ports, and connecting the ports to form bonds.
Together with Signac, this functionality enables an automatic and dynamic method for generating chemical systems, allowing large-scale chemical and materials screening with minimal user interaction.
Ultimately, complex systems 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 by adjusting a variable or two:
pattern = Random2DPattern(20) # A random arrangement of 20 pieces on a 2D surface. brush_layer = BrushLayer(chain_lenth=20, pattern=pattern, tile_x=3, tile_y=2)
Various sub-portions of this library may be independently distributed under different licenses. See those files for their specific terms.