Project Description: Denoising diffusion probabilistic models (DDPMs) for enhanced sampling of interfacial polyelectrolyte molecular dynamics simulations.
The DDPMs are trained on the output of the molecular dynamics simulations to generate new configurations of the system.
The new configurations are then used to seed new simulations to explore the phase space with greater efficiency and construct Markov state models (MSMs) to analyze the dynamics of the system.
Simulations are performed using the OpenMM molecular dynamics engine.
Authors: Alec Glisman
.github: GitHub Actions workflows for continuous integration as well as issue and pull request templates..vscode: Settings for the Visual Studio Code editor.docs: Documentation source files for Python code in thesrcdirectory.images: Images used in the documentation.src: Python source code and unit tests.
The recommended way to install this project is using conda. To create a conda environment for development, run the following command from the root directory of the repository:
conda create --name ddpm 'python<3.12'
conda activate ddpm
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
conda install pyg -c pyg
conda install py-xgboost-gpu -c conda-forge
conda env update --name ddpm --file requirements.ymlPytorch should be installed before the rest of the environment to make sure the GPU version is installed. To install the dependencies for the denoising diffusion probabilistic model scripts, run the following command:
git submodule update --init --recursive
cd src/denoising_diffusion_pytorch
git checkout 'polymers-and-wandb'
cd ../..
pip install -e src/denoising_diffusion_pytorch
pip install -e src/mdhelperFinally, WandB should be installed and set up to track the training of the models:
wandb loginThe documentation is built using sphinx. For information on how to build the documentation, see the documentation README. Contributions to improve the documentation are welcome. Our current documentation focuses on the signature of each function and class and does not include any tutorials or examples.
When contributing to this repository, please first open an issue on GitHub to discuss the change you wish to make. We have provided issue templates for bug reports and feature requests. If you would like to contribute code, please follow the PEP8 style guide. We use flake8 to check for PEP8 compliance and black to format the code. Pre-commit is used to run these checks before each commit as well as to rebuild the documentation using sphinx. We also strongly recommend adding unit tests for any new code using pytest.
- Create a branch with a descriptive name for the feature or bug fix.
- Make your changes and commit them.
- Push your changes to the branch.
- Open a pull request on GitHub.
- The pull request will be reviewed and merged into the main branch if approved and all checks pass.
This project is licensed under the MIT License - see the LICENSE file for details.
