Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mBuild 2.0 Release Discussion #1205

Open
chrisjonesBSU opened this issue Oct 31, 2024 · 13 comments
Open

mBuild 2.0 Release Discussion #1205

chrisjonesBSU opened this issue Oct 31, 2024 · 13 comments

Comments

@chrisjonesBSU
Copy link
Contributor

chrisjonesBSU commented Oct 31, 2024

This a thread where users/developers can post overall goals/features they would like to be supported in a second stable version of mBuild.

Here are some ideas to get the discussion started:

  • Faster and more feature rich energy minimization steps
  • Improved bulk polymer system configuration (e.g. random walks)
  • Improved polymer builder features (double bonds, cross-linking, etc...)
  • Improve ease of use for biomolecular systems (e.g. proteins)
  • Improve coarse grain and back mapping transformations
  • Support non-atomistic systems (for example, ellipsoidal polymers, patchy particles)
  • Use the unyt library in mBuild
  • Expand recipes section with more commonly used molecules and polymers
  • Improve performance for large systems, build out some bench marking workflows
  • Visualization widgets for use in Jupyter Notebooks
  • Implementation with VMD 2.0
  • Add HOOMD to energy minimize

Please add any thoughts or ideas (even if they seem far-fetched) about what kinds of features you would like to see in mBuild 2.0.

Also see:

@chrisjonesBSU
Copy link
Contributor Author

chrisjonesBSU commented Dec 5, 2024

An idea I've had, and one we discussed on the dev call. Have something analogous to packing.py but for creating molecular configurations (whereas packing.py creates bulk/system level configurations). Maybe we call this configuration.py or conformation.py.

An obvious example would be a simple hard-sphere self-avoiding random walk that creates chain configurations that we then use to update the configuration of a polymer built in the polymer builder. I started working on this a bit already. Maybe we can start a separate issue for this idea specifically.

@chrisjonesBSU
Copy link
Contributor Author

Another idea that came up on the dev call is adding Hoomd-Blue as a backend option to energy_minimize as well as having more energy minimization methods that involve more than relaxing bonds, angles, and dihedrals. For example, shrinking to a target bulk density, remove overlapping particles, etc..

@CalCraven
Copy link
Contributor

I think this post has some useful suggestions for creating a branch structure for working on mBuild 2.0
https://nvie.com/posts/a-successful-git-branching-model/

In this vein of thinking, we could just simply add a develop branch in which we add features for mBuild 2.0. All other hotfixes/bugfixes we add main.

Now, looking at hoomd, they use a trunk-major, trunk-minor, trunk-patch flow where each PR is based on when that feature would be introduced. I like this, but would require more oversight of exactly where each feature needs to be slotted in when the PR is opened.

What do you all think?

@chrisjonesBSU
Copy link
Contributor Author

Yeah, a main and develop approach seems simpler and more manageable. I remember we did this before (maybe it was just on GMSO) and decided to stop because it was causing some issues. They were diverging too much when they probably shouldn't have? This was at a point when GMSO was still under pretty heavy development and ongoing changes, so maybe that was the issue. Either way, even with just 2 branches we'll have to stay on top of choosing the right one.

@CalCraven
Copy link
Contributor

@ptc2ug suggests that for optimization, we should consider Julia or some Python compiler code that we could leverage for some of the more heavy duty methods we're considering in version 2.0.

@CalCraven
Copy link
Contributor

@andresorderica has also suggested some polymer crosslinking routines he has been developing could be generalized to mBuild 2.0.

@daico007
Copy link
Member

daico007 commented Dec 6, 2024

Some integration with VMD could be nice (maybe as a plugin for setting up systems). Plus, with VMD 2.0 coming out and making progress on Python kernel support, so would be a good opportunity for this.

@chrisjonesBSU
Copy link
Contributor Author

chrisjonesBSU commented Dec 6, 2024

I like that idea @daico007. I was also thinking that some mbuild specific jupyter notebook widgets that align with visualization would be really useful, especially since jupyter notebooks are sort of the "GUI" for mBuild before moving scripts/molecule files to a production workflow. For example, a widget that lets you filter by name when visualizing, maybe a widget that lets you toggle particle indices on/off when visualizing a molecule...I'm sure we could come up with lots of ideas.

@CalCraven
Copy link
Contributor

We could also add some brief simple calculation methods more tightly coupled to like Freud as well for validating configurations.

@CalCraven
Copy link
Contributor

@mattwthompson Also any thoughts or things on your wish list for future features? Not sure how much you still use mBuild, but any input would be appreciated. We are also open to other packages we should consider creating an API with.

@chrisjonesBSU
Copy link
Contributor Author

@jaclark5 is there anything you would like to see in an mBuild 2.0 version?

@jaclark5
Copy link
Contributor

As a small thing that was on my todo list for contribution that I don't think I'll get to. The new version of packman support packing in periodic boundary conditions. It would be nice to support that flag and then have an error check for the version of packmol a user has installed.

I reach goal would be to have use of foyer to dynamically build "equilibrated" systems like Enhanced Monte Carlo does.

That's all I have off the top of my head.

@CalCraven
Copy link
Contributor

Here's another interesting tool we could look at:
https://github.com/lukasturcani/stk

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants