├── .circleci └── config.yml ├── .gitattributes ├── .github ├── CONTRIBUTING.md ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── custom.md │ └── feature_request.md ├── PULL_REQUEST_TEMPLATE.md └── workflows │ └── lint.yaml ├── .gitignore ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── MANIFEST.in ├── README.md ├── codecov.yml ├── devtools ├── README.md ├── conda-envs │ └── test_env.yaml ├── legacy-miniconda-setup │ └── before_install.sh └── scripts │ └── create_conda_env.py ├── docs ├── Makefile ├── README.md ├── _static │ ├── README.md │ ├── REXEE_illustration.png │ ├── REXEE_more_configs.png │ ├── algorithm.png │ └── css │ │ └── custom.css ├── _templates │ └── README.md ├── api │ ├── api_analysis.rst │ ├── api_replica_exchange_EE.rst │ └── api_utils.rst ├── conf.py ├── environment.yml ├── examples │ ├── tutorial_1 │ │ ├── example_outputs.zip │ │ ├── expanded.mdp │ │ ├── params.yaml │ │ ├── standard_REXEE.ipynb │ │ ├── sys.gro │ │ └── sys.top │ └── tutorial_2 │ │ └── MT_REXEE.ipynb ├── external_tutorials.rst ├── getting_started.rst ├── index.rst ├── make.bat ├── references.rst ├── requirements.txt ├── simulations.rst └── theory.rst ├── ensemble_md ├── __init__.py ├── _version.py ├── analysis │ ├── analyze_free_energy.py │ ├── analyze_matrix.py │ ├── analyze_traj.py │ ├── clustering.py │ ├── msm_analysis.py │ └── synthesize_data.py ├── cli │ ├── analyze_REXEE.py │ ├── explore_REXEE.py │ └── run_REXEE.py ├── data │ ├── CB7-10 │ │ ├── complex │ │ │ ├── complex.gro │ │ │ ├── complex.top │ │ │ ├── fixed_weight.mdp │ │ │ ├── itp_files │ │ │ │ ├── 10_GMX.itp │ │ │ │ ├── 10atomtypes.itp │ │ │ │ └── cucurbit_7_uril_GMX.itp │ │ │ ├── params.yaml │ │ │ └── weight_updating.mdp │ │ └── solvent │ │ │ ├── fixed_weight.mdp │ │ │ ├── ligand.gro │ │ │ ├── ligand.top │ │ │ └── weight_updating.mdp │ ├── README.md │ ├── anthracene │ │ ├── HREX.mdp │ │ ├── anthracene.gro │ │ ├── anthracene.top │ │ ├── fixed_weight.mdp │ │ ├── params.yaml │ │ └── weight_updating.mdp │ └── instruction.md ├── replica_exchange_EE.py ├── tests │ ├── __init__.py │ ├── data │ │ ├── cluster.log │ │ ├── coord_swap │ │ │ ├── A-B.gro │ │ │ ├── A-B.itp │ │ │ ├── A-B.top │ │ │ ├── B-C.gro │ │ │ ├── B-C.itp │ │ │ ├── B-C.top │ │ │ ├── C-D.gro │ │ │ ├── C-D.itp │ │ │ ├── C-D.top │ │ │ ├── C4-C6.top │ │ │ ├── D-E.gro │ │ │ ├── D-E.itp │ │ │ ├── D-E.top │ │ │ ├── E-F.gro │ │ │ ├── E-F.itp │ │ │ ├── E-F.top │ │ │ ├── atom_name_mapping.csv │ │ │ ├── atom_name_mapping_alt.csv │ │ │ ├── broken_mol_1D.gro │ │ │ ├── broken_mol_2D.gro │ │ │ ├── broken_mol_3D.gro │ │ │ ├── df_atom_swap.csv │ │ │ ├── extract_missing.csv │ │ │ ├── find_R2D_D2R_miss.csv │ │ │ ├── fixed_mol.gro │ │ │ ├── output_A.gro │ │ │ ├── output_B.gro │ │ │ ├── output_C.gro │ │ │ ├── output_D.gro │ │ │ ├── params.yaml │ │ │ ├── residue_connect.csv │ │ │ ├── residue_connect_alt.csv │ │ │ ├── residue_swap_map.csv │ │ │ ├── residue_swap_map_alt.csv │ │ │ ├── sample_process.gro │ │ │ ├── sim_A │ │ │ │ ├── confout_backup.gro │ │ │ │ └── traj.trr │ │ │ ├── sim_B │ │ │ │ ├── confout_backup.gro │ │ │ │ └── traj.trr │ │ │ ├── sim_C │ │ │ │ ├── confout_backup.gro │ │ │ │ └── traj.trr │ │ │ └── sim_D │ │ │ │ ├── confout_backup.gro │ │ │ │ └── traj.trr │ │ ├── dhdl │ │ │ ├── dhdl_0.xvg │ │ │ ├── dhdl_1.xvg │ │ │ ├── dhdl_2.xvg │ │ │ ├── dhdl_3.xvg │ │ │ └── simulation_example │ │ │ │ ├── sim_0 │ │ │ │ ├── iteration_0 │ │ │ │ │ └── dhdl.xvg │ │ │ │ ├── iteration_1 │ │ │ │ │ └── dhdl.xvg │ │ │ │ └── iteration_2 │ │ │ │ │ └── dhdl.xvg │ │ │ │ ├── sim_1 │ │ │ │ ├── iteration_0 │ │ │ │ │ └── dhdl.xvg │ │ │ │ ├── iteration_1 │ │ │ │ │ └── dhdl.xvg │ │ │ │ └── iteration_2 │ │ │ │ │ └── dhdl.xvg │ │ │ │ ├── sim_2 │ │ │ │ ├── iteration_0 │ │ │ │ │ └── dhdl.xvg │ │ │ │ ├── iteration_1 │ │ │ │ │ └── dhdl.xvg │ │ │ │ └── iteration_2 │ │ │ │ │ └── dhdl.xvg │ │ │ │ └── sim_3 │ │ │ │ ├── iteration_0 │ │ │ │ └── dhdl.xvg │ │ │ │ ├── iteration_1 │ │ │ │ └── dhdl.xvg │ │ │ │ └── iteration_2 │ │ │ │ └── dhdl.xvg │ │ ├── expanded.mdp │ │ ├── expanded_pull.mdp │ │ ├── log │ │ │ ├── EXE.log │ │ │ ├── EXE_0.log │ │ │ ├── EXE_1.log │ │ │ ├── EXE_2.log │ │ │ ├── EXE_3.log │ │ │ ├── HREX.log │ │ │ ├── case2_1.log │ │ │ ├── case2_2.log │ │ │ └── case3.log │ │ ├── mdp │ │ │ ├── compare_1.mdp │ │ │ ├── compare_2.mdp │ │ │ └── compare_3.mdp │ │ ├── pullx.xvg │ │ ├── run_REXEE_log.txt │ │ ├── sys.gro │ │ ├── sys.ndx │ │ ├── sys.top │ │ └── traj.xvg │ ├── test_analyze_free_energy.py │ ├── test_analyze_matrix.py │ ├── test_analyze_traj.py │ ├── test_clustering.py │ ├── test_coordinate_swap.py │ ├── test_gmx_parser.py │ ├── test_mpi_func.py │ ├── test_replica_exchange_EE.py │ ├── test_synthesize_data.py │ └── test_utils.py └── utils │ ├── coordinate_swap.py │ ├── exceptions.py │ ├── gmx_parser.py │ └── utils.py ├── environment.yml ├── example_outputs.zip ├── readthedocs.yml ├── setup.cfg ├── setup.py └── versioneer.py /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | version: 2.1 2 | 3 | jobs: 4 | test: 5 | docker: 6 | - image: cimg/python:<> 7 | parameters: 8 | python-version: 9 | type: string 10 | resource_class: large 11 | steps: 12 | - checkout 13 | 14 | - run: 15 | name: Show the system information and resource limits 16 | command: | 17 | uname -a 18 | df -h 19 | ulimit -a 20 | 21 | - run: 22 | name: Installing dependencies for GROMACS 23 | command: | 24 | sudo apt-get update 25 | sudo apt-get install -y software-properties-common 26 | sudo apt install build-essential 27 | sudo apt-get install ccache libblas-dev libfftw3-dev liblapack-dev libmpich-dev libxml2-dev mpich ninja-build 28 | wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null 29 | sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ focal main' -y 30 | 31 | # The following three lines are required to install libss1.1, which is not available in the default environment 32 | wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2_amd64.deb 33 | sudo dpkg -i ./libssl1.1_1.1.1f-1ubuntu2_amd64.deb 34 | rm -f libssl1.1_1.1.1f-1ubuntu2_amd64.deb 35 | 36 | sudo apt install cmake && cmake --version 37 | 38 | - run: 39 | name: Install the latest version of GROMACS 40 | command: | 41 | gcc --version 42 | g++ --version 43 | export CC=`which gcc` 44 | export CXX=`which g++` 45 | 46 | cd $HOME && mkdir pkgs 47 | git clone https://gitlab.com/gromacs/gromacs.git 48 | cd gromacs && mkdir build && cd build 49 | cmake .. -DCMAKE_CXX_COMPILER=$CXX -DCMAKE_C_COMPILER=$CC -DCMAKE_INSTALL_PREFIX=$HOME/pkgs 50 | make install 51 | source $HOME/pkgs/bin/GMXRC 52 | gmx --version 53 | 54 | - run: 55 | name: Install the ensemble_md package 56 | command: | 57 | python3 -m pip install --upgrade pip 58 | python3 -m pip install . 59 | 60 | - run: 61 | name: Run unit tests 62 | # no_output_timeout: 1h 63 | command: | 64 | source $HOME/pkgs/bin/GMXRC 65 | pip3 install pytest 66 | pip3 install pytest-mpi 67 | pip3 install pytest-cov 68 | 69 | # sleep 3000 # only for debugging purposes 70 | 71 | coverage run -m pytest -vv --disable-pytest-warnings --color=yes ensemble_md/tests 72 | # mpirun -np 4 coverage run --rcfile setup.cfg -m pytest ensemble_md/tests/test_mpi_func.py --with-mpi -vv --disable-pytest-warnings --color=yes # this will generate multiple .coverage* files that can be combined 73 | # coverage combine # This will combine multiple .coverage* files into a single .coverage file that will be uploaded and reported. 74 | 75 | # Another section of old commands 76 | # pytest -vv --disable-pytest-warnings --cov=ensemble_md --cov-report=xml --color=yes ensemble_md/tests/ 77 | # COVERAGE_FILE=.coverage_1 pytest -vv --disable-pytest-warnings --cov=ensemble_md --cov-report=xml --color=yes ensemble_md/tests/ 78 | # COVERAGE_FILE=.coverage_2 mpirun -np 4 pytest -vv --disable-pytest-warnings --cov=ensemble_md --cov-report=xml --color=yes ensemble_md/tests/test_mpi_func.py --with-mpi 79 | 80 | - run: 81 | name: CodeCov 82 | command: | 83 | bash <(curl -s https://codecov.io/bash) 84 | 85 | - store_test_results: 86 | path: test-results 87 | 88 | # we are not testing Python 3.12. as it seems to have some conflicts with versioneer.py. Will look into this more in the future. 89 | workflows: 90 | continuous-integration: 91 | jobs: 92 | - test: 93 | name: test-python-3.10 94 | python-version: "3.10" 95 | - test: 96 | name: test-python-3.11 97 | python-version: "3.11" 98 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | ensemble_md/_version.py export-subst 2 | -------------------------------------------------------------------------------- /.github/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # How to contribute 2 | 3 | We welcome contributions from external contributors, and this document 4 | describes how to merge code changes into this ensemble_md. 5 | 6 | ## Getting Started 7 | 8 | * Make sure you have a [GitHub account](https://github.com/signup/free). 9 | * [Fork](https://help.github.com/articles/fork-a-repo/) this repository on GitHub. 10 | * On your local machine, 11 | [clone](https://help.github.com/articles/cloning-a-repository/) your fork of 12 | the repository. 13 | 14 | ## Making Changes 15 | 16 | * Add some really awesome code to your local fork. It's usually a [good 17 | idea](http://blog.jasonmeridth.com/posts/do-not-issue-pull-requests-from-your-master-branch/) 18 | to make changes on a 19 | [branch](https://help.github.com/articles/creating-and-deleting-branches-within-your-repository/) 20 | with the branch name relating to the feature you are going to add. 21 | * When you are ready for others to examine and comment on your new feature, 22 | navigate to your fork of ensemble_md on GitHub and open a [pull 23 | request](https://help.github.com/articles/using-pull-requests/) (PR). Note that 24 | after you launch a PR from one of your fork's branches, all 25 | subsequent commits to that branch will be added to the open pull request 26 | automatically. Each commit added to the PR will be validated for 27 | mergability, compilation and test suite compliance; the results of these tests 28 | will be visible on the PR page. 29 | * If you're providing a new feature, you must add test cases and documentation. 30 | * When the code is ready to go, make sure you run the test suite using pytest. 31 | * When you're ready to be considered for merging, check the "Ready to go" 32 | box on the PR page to let the ensemble_md devs know that the changes are complete. 33 | The code will not be merged until this box is checked, the continuous 34 | integration returns checkmarks, 35 | and multiple core developers give "Approved" reviews. 36 | 37 | # Additional Resources 38 | 39 | * [General GitHub documentation](https://help.github.com/) 40 | * [PR best practices](http://codeinthehole.com/writing/pull-requests-and-other-good-practices-for-teams-using-github/) 41 | * [A guide to contributing to software packages](http://www.contribution-guide.org) 42 | * [Thinkful PR example](http://www.thinkful.com/learn/github-pull-request-tutorial/#Time-to-Submit-Your-First-PR) 43 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior. 15 | 16 | **Expected behavior** 17 | A clear and concise description of what you expected to happen. 18 | 19 | **Screenshots** 20 | If applicable, add screenshots to help explain your problem. 21 | 22 | **Desktop (please complete the following information):** 23 | - OS: [e.g. iOS] 24 | - Version of `ensemble_md` [e.g. 0.1.2] 25 | 26 | **Additional context** 27 | Add any other context about the problem here. 28 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/custom.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Custom issue template 3 | about: Describe this issue template's purpose here. 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | 11 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ## Description 2 | 3 | Provide a brief description of the PR's purpose here. 4 | 5 | ### Type of Change 6 | 7 | - [ ] Bug fix 8 | - [ ] New feature 9 | - [ ] Documentation update 10 | - [ ] Unit test and CI update 11 | - [ ] Other 12 | 13 | ## Todos 14 | Notable points that this PR has either accomplished or will accomplish. 15 | - [ ] TODO 1 16 | - [ ] TODO 2 17 | 18 | ### Checklist 19 | Starting from PR #62, external PRs must keep the following checklist in the PR. 20 | 21 | - [ ] I have read the [contributing guidelines](CONTRIBUTING.md). 22 | - [ ] My code follows the project’s coding style and is free from linting errors examined by `flake8`. 23 | - [ ] My code comes with docstrings that follow the [NumPy docstrings standard](https://numpydoc.readthedocs.io/en/latest/format.html#docstring-standard). 24 | - [ ] I have updated the documentation in the `docs` directory if my changes affect the project's functionality or usage. 25 | - [ ] I have added new tests for new features or changes to existing features. The code coverage is at least 90%. 26 | - [ ] My code passes all unit tests and CI tests on CircleCI. 27 | -------------------------------------------------------------------------------- /.github/workflows/lint.yaml: -------------------------------------------------------------------------------- 1 | name: lint 2 | 3 | on: 4 | push: 5 | pull_request: 6 | 7 | jobs: 8 | 9 | lint: 10 | 11 | runs-on: ubuntu-latest 12 | 13 | steps: 14 | 15 | - uses: actions/checkout@v2.3.4 16 | - uses: actions/setup-python@v2.2.2 17 | with: 18 | python-version: '3.9' 19 | - name: Install the package 20 | run: | 21 | python setup.py develop --no-deps 22 | 23 | - name: Install flake8 24 | run: | 25 | pip install flake8 26 | 27 | - name: Run flake8 28 | run: | 29 | flake8 ensemble_md -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | env/ 12 | build/ 13 | develop-eggs/ 14 | dist/ 15 | downloads/ 16 | eggs/ 17 | .eggs/ 18 | lib/ 19 | lib64/ 20 | parts/ 21 | sdist/ 22 | var/ 23 | wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | 28 | # PyInstaller 29 | # Usually these files are written by a python script from a template 30 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 31 | *.manifest 32 | *.spec 33 | 34 | # Installer logs 35 | pip-log.txt 36 | pip-delete-this-directory.txt 37 | 38 | # Unit test / coverage reports 39 | htmlcov/ 40 | .tox/ 41 | .coverage 42 | .coverage_* 43 | .coverage.* 44 | .cache 45 | .pytest_cache 46 | nosetests.xml 47 | coverage.xml 48 | *.cover 49 | .hypothesis/ 50 | 51 | # Translations 52 | *.mo 53 | *.pot 54 | 55 | # Django stuff: 56 | # *.log 57 | local_settings.py 58 | 59 | # Flask stuff: 60 | instance/ 61 | .webassets-cache 62 | 63 | # Scrapy stuff: 64 | .scrapy 65 | 66 | # Sphinx documentation 67 | docs/_build/ 68 | 69 | # PyBuilder 70 | target/ 71 | 72 | # Jupyter Notebook 73 | .ipynb_checkpoints 74 | 75 | # pyenv 76 | .python-version 77 | 78 | # celery beat schedule file 79 | celerybeat-schedule 80 | 81 | # SageMath parsed files 82 | *.sage.py 83 | 84 | # dotenv 85 | .env 86 | 87 | # virtualenv 88 | .venv 89 | venv/ 90 | ENV/ 91 | 92 | # Spyder project settings 93 | .spyderproject 94 | .spyproject 95 | 96 | # Rope project settings 97 | .ropeproject 98 | 99 | # mkdocs documentation 100 | /site 101 | 102 | # mypy 103 | .mypy_cache/ 104 | 105 | # profraw files from LLVM? Unclear exactly what triggers this 106 | # There are reports this comes from LLVM profiling, but also Xcode 9. 107 | *profraw 108 | 109 | # Others 110 | .DS_Store -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as 6 | contributors and maintainers pledge to making participation in our project and 7 | our community a harassment-free experience for everyone, regardless of age, 8 | body size, disability, ethnicity, gender identity and expression, level of 9 | experience, nationality, personal appearance, race, religion, or sexual 10 | identity and orientation. 11 | 12 | ## Our Standards 13 | 14 | Examples of behavior that contributes to creating a positive environment include: 15 | 16 | * Using welcoming and inclusive language 17 | * Being respectful of differing viewpoints and experiences 18 | * Gracefully accepting constructive criticism 19 | * Focusing on what is best for the community 20 | * Showing empathy towards other community members 21 | 22 | Examples of unacceptable behavior by participants include: 23 | 24 | * The use of sexualized language or imagery and unwelcome sexual attention or advances 25 | * Trolling, insulting/derogatory comments, and personal or political attacks 26 | * Public or private harassment 27 | * Publishing others' private information, such as a physical or electronic address, without explicit permission 28 | * Other conduct which could reasonably be considered inappropriate in a professional setting 29 | 30 | ## Our Responsibilities 31 | 32 | Project maintainers are responsible for clarifying the standards of acceptable 33 | behavior and are expected to take appropriate and fair corrective action in 34 | response to any instances of unacceptable behavior. 35 | 36 | Project maintainers have the right and responsibility to remove, edit, or 37 | reject comments, commits, code, wiki edits, issues, and other contributions 38 | that are not aligned to this Code of Conduct, or to ban temporarily or 39 | permanently any contributor for other behaviors that they deem inappropriate, 40 | threatening, offensive, or harmful. 41 | 42 | Moreover, project maintainers will strive to offer feedback and advice to 43 | ensure quality and consistency of contributions to the code. Contributions 44 | from outside the group of project maintainers are strongly welcomed but the 45 | final decision as to whether commits are merged into the codebase rests with 46 | the team of project maintainers. 47 | 48 | ## Scope 49 | 50 | This Code of Conduct applies both within project spaces and in public spaces 51 | when an individual is representing the project or its community. Examples of 52 | representing a project or community include using an official project e-mail 53 | address, posting via an official social media account, or acting as an 54 | appointed representative at an online or offline event. Representation of a 55 | project may be further defined and clarified by project maintainers. 56 | 57 | ## Enforcement 58 | 59 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 60 | reported by contacting the project team at 'wehs7661@colorado.edu'. The project team will 61 | review and investigate all complaints, and will respond in a way that it deems 62 | appropriate to the circumstances. The project team is obligated to maintain 63 | confidentiality with regard to the reporter of an incident. Further details of 64 | specific enforcement policies may be posted separately. 65 | 66 | Project maintainers who do not follow or enforce the Code of Conduct in good 67 | faith may face temporary or permanent repercussions as determined by other 68 | members of the project's leadership. 69 | 70 | ## Attribution 71 | 72 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 73 | version 1.4, available at 74 | [http://contributor-covenant.org/version/1/4][version] 75 | 76 | [homepage]: http://contributor-covenant.org 77 | [version]: http://contributor-covenant.org/version/1/4/ 78 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to `ensemble_md` 2 | 3 | Thank you for your interest in contributing to `ensemble_md`! We welcome contributions from the community and appreciate your efforts to improve the project. Please follow these guidelines to help us manage contributions effectively. 4 | 5 | ## General workflow 6 | We use a "Pull request, Review, and Merge" workflow for contributions to this project: codes can only be added to the master branch through pull requests (PRs). To contribute to the project, please follow these steps: 7 | 8 | 1. **Fork the Repository**: Click the "Fork" button at the top right of this repository to create your own copy of the project. 9 | 2. **Clone Your Fork**: Clone your fork to your local machine: 10 | ```bash 11 | git clone https://github.com/{your-username}/ensemble_md.git 12 | ``` 13 | 3. ***Create a Branch***: Create a new branch for your changes: 14 | ```bash 15 | git checkout -b {your-feature-branch} 16 | ``` 17 | 4. **Make Changes**: Make your changes to the project, and commit them to your branch using Git: 18 | ```bash 19 | git add . 20 | git commit -m "Your commit message" 21 | ``` 22 | 5. **Push Changes**: Push your changes to your fork on GitHub: 23 | ```bash 24 | git push origin {your-feature-branch} 25 | ``` 26 | 6. **Create a Pull Request**: Go to the GitHub page of your fork and create a new pull request. Make sure to provide a clear description of your changes in the PR. Check the [pull request template](.github/PULL_REQUEST_TEMPLATE.md) for more information on what to include in your PR. 27 | 28 | ## Contribution Guidelines 29 | 30 | ### Coding Style 31 | We use [PEP8 coding style](https://peps.python.org/pep-0008/) for this project. Please follow the guidelines to maintain consistency in code style. Before you submit a pull request, run the following command in the root directory of the project to check your code for PEP8 compliance: 32 | ```bash 33 | flake8 ensemble_md 34 | ``` 35 | Any errors or warnings should be fixed before submitting your pull request. (We accept PRs with `E501` and `E741` errors, but the errors should be suppressed by appending `# noqa: E501` or `#noqa: E741` at the end of the line.) 36 | 37 | ### Docstrings and documentation 38 | Whenever there is a new function or class added, please include a docstring that describes the purpose of the function or class. For this project, we follow the [NumPy docstrings standard](https://numpydoc.readthedocs.io/en/latest/format.html#docstring-standard). Please visit the docstrings of existing functions or classes for reference. 39 | 40 | If your changes affect any part of the project's functionality or usage, or add new features or algorithms to the project, please update the documentation in the `docs` directory accordingly. We use [Sphinx](https://www.sphinx-doc.org/en/master/) to generate documentation. Please ensure that your changes do not break the documentation build. You can build the documentation locally by running the following command in the `docs` directory: 41 | ```bash 42 | make html 43 | ``` 44 | and then opening the `docs/build/html/index.html` file in your browser to view the documentation. If you implement a new simulation method in `ensemble_md`, we encourage you to include a tutorial in the documentation by including a `.ipynb` file in the `docs/example` folder. Ideally, the tutorial should be able to be run on [Binder](https://mybinder.org/), for which additional dependencies (if any) should be added to `environment.yml` in the root directory of the project. 45 | 46 | ### Unit tests and continuous integration 47 | To maintain the quality of the project, we require that the merging code be covered by unit tests to at least 90% coverage. We use [pytest](https://docs.pytest.org/en/stable/) for unit testing. Please add new tests for new features or changes to existing features. You can run the tests locally by running the following command in the root directory of the project: 48 | ```bash 49 | pytest -vv --disable-pytest-warnings --cov=ensemble_md --cov-report=xml --color=yes ensemble_md/tests/ 50 | ``` 51 | This will generate a coverage report in the `coverage.xml` file in the root directory of the project. To view the coverage report, you can run the following command: 52 | ```bash 53 | coverage report 54 | ``` 55 | For tests that require the use of MPI, you might want to use a command like the following to run the tests: 56 | ```bash 57 | mpirun -np 4 pytest -vv --disable-pytest-warnings --cov=ensemble_md --cov-report=xml --color=yes ensemble_md/tests/{tests_that_use_mpi.py} --with-mpi 58 | ``` 59 | For continuous integration (CI), we use [CircleCI](https://circleci.com/) to run tests on every pull request and push to the repository. Make any necessary changes to the CI configuration file (`.circleci/config.yml`) to ensure that your changes pass the CI tests before submitting a pull request. 60 | 61 | ## Reporting issues 62 | If you encounter any issues with the project, please report them by opening an issue on the GitHub repository. When reporting an issue, please provide a clear description of the problem, including the steps to reproduce the issue, the expected behavior, and the actual behavior. If possible, include any error messages or stack traces that you encountered. Please refer to the [issue template](.github/ISSUE_TEMPLATE.md) for more information on what to include in your issue report. 63 | 64 | ## Code of Conduct 65 | By participating in this project, you agree to abide by the [Code of Conduct](CODE_OF_CONDUCT.md). We are committed to providing a welcoming and inclusive environment for everyone. 66 | 67 | ## Contact 68 | For any questions or further assistance, please don't hesitate to contact us as wehs7661@colorado.edu. 69 | 70 | --- 71 | Thank you for your contributions to `ensemble_md`! We appreciate your help in making this project better for everyone. 72 | 73 | **`ensemble_md` Development Team** 74 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | 2 | MIT License 3 | 4 | Copyright (c) 2022 Wei-Tse Hsu 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in all 14 | copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | SOFTWARE. 23 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include LICENSE 2 | include MANIFEST.in 3 | include CODE_OF_CONDUCT.md 4 | include versioneer.py 5 | 6 | graft ensemble_md 7 | global-exclude *.py[cod] __pycache__ *.so -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Ensemble Molecular Dynamics 2 | ============================== 3 | [//]: # (Badges) 4 | [![wehs7661](https://circleci.com/gh/wehs7661/ensemble_md.svg?style=shield)](https://app.circleci.com/pipelines/github/wehs7661/ensemble_md?branch=master) 5 | [![codecov](https://codecov.io/gh/wehs7661/ensemble_md/branch/master/graph/badge.svg)](https://app.codecov.io/gh/wehs7661/ensemble_md/tree/master) 6 | [![Documentation Status](https://readthedocs.org/projects/ensemble-md/badge/?version=latest)](https://ensemble-md.readthedocs.io/en/latest/?badge=latest) 7 | [![GitHub Actions Lint Status](https://github.com/wehs7661/ensemble_md/actions/workflows/lint.yaml/badge.svg)](https://github.com/wehs7661/ensemble_md/actions/workflows/lint.yaml) 8 | [![PyPI version](https://badge.fury.io/py/ensemble-md.svg)](https://badge.fury.io/py/ensemble-md) 9 | [![python](https://img.shields.io/badge/Python-3.8%20|%203.9%20|%203.10%20|%203.11-4BC51D.svg?style=flat&logo=python&logoColor=white)](https://www.python.org) 10 | [![DOI](https://img.shields.io/badge/DOI-10.1021/acs.jctc.4c00484-4BC51D)](https://pubs.acs.org/doi/epdf/10.1021/acs.jctc.4c00484) 11 | [![MIT license](https://img.shields.io/badge/License-MIT-blue.svg)](https://lbesson.mit-license.org/) 12 | [![Downloads](https://static.pepy.tech/badge/ensemble-md)](https://pepy.tech/project/ensemble-md) 13 | 14 | 15 | `ensemble_md` is a Python package that provides methods for setting up, running, and analyzing GROMACS simulation ensembles. Currently, the package implements all the necessary algorithms for running synchronous replica exchange (REX) of expanded ensembles (EE), abbreviated as REXEE, as well as its multi-topology (MT) variation, MT-REXEE. Our future work includes implementing asynchronous REXEE and other possible variations of the REXEE method. For installation instructions, theory overview, tutorials, and API references, please visit the [documentation](https://ensemble-md.readthedocs.io/en/latest/?badge=latest) and our papers (listed in the next section). 16 | 17 | ### References 18 | If you use any components of the Python package `ensemble_md` or the REXEE method in your research, please cite the following paper: 19 | 20 | > Hsu, W. T., & Shirts, M. R. (2024). Replica Exchange of Expanded Ensembles: A Generalized Ensemble Approach with Enhanced Flexibility and Parallelizability. *Journal of Chemical Theory and Computation*. 20.14 (2024): 6062-6081. doi: [10.1021/acs.jctc.4c00484](https://doi.org/10.1021/acs.jctc.4c00484) 21 | 22 | If you use the MT-REXEE method in your research, please cite the following paper: 23 | 24 | > Friedman, A. J., Hsu, W. T., & Shirts, M. R. (2024). Multiple Topology Replica Exchange of Expanded Ensembles (MT-REXEE) for Multidimensional Alchemical Calculations. arXiv preprint arXiv:2408.11038. doi: [10.48550/arXiv.2408.11038]( 25 | https://doi.org/10.48550/arXiv.2408.11038) 26 | 27 | ### Authors 28 | - Wei-Tse Hsu, University of Colorado, Boulder (weitse.hsu@colorado.edu) 29 | - Anika Friedman, University of Colorado, Boulder (anika.friedman@colorado.edu) 30 | 31 | ### Contributing 32 | 33 | We welcome contributions to this project! Please see our [contributing guidelines](CONTRIBUTING.md) for more information on how to get started. 34 | 35 | 36 | ### Acknowledgements 37 | 38 | Project based on the 39 | [Computational Molecular Science Python Cookiecutter](https://github.com/molssi/cookiecutter-cms) version 1.6. 40 | -------------------------------------------------------------------------------- /codecov.yml: -------------------------------------------------------------------------------- 1 | coverage: 2 | status: 3 | patch: false 4 | project: false 5 | 6 | -------------------------------------------------------------------------------- /devtools/README.md: -------------------------------------------------------------------------------- 1 | # Development, testing, and deployment tools 2 | 3 | This directory contains a collection of tools for running Continuous Integration (CI) tests, 4 | conda installation, and other development tools not directly related to the coding process. 5 | 6 | 7 | ## Manifest 8 | 9 | ### Continuous Integration 10 | 11 | You should test your code, but do not feel compelled to use these specific programs. You also may not need Unix and 12 | Windows testing if you only plan to deploy on specific platforms. These are just to help you get started. 13 | 14 | The items in this directory have been left for legacy purposes since the change to GitHub Actions, 15 | They will likely be removed in a future version. 16 | 17 | * `legacy-miniconda-setup`: A preserved copy of a helper directory which made Linux and OSX based testing through [Travis-CI](https://about.travis-ci.com/) simpler 18 | * `before_install.sh`: Pip/Miniconda pre-package installation script for Travis. No longer needed thanks to 19 | [GitHub Actions](https://docs.github.com/en/free-pro-team@latest/actions) and the [conda-incubator/setup-miniconda Action](https://github.com/conda-incubator/setup-miniconda) 20 | 21 | ### Conda Environment: 22 | 23 | This directory contains the files to setup the Conda environment for testing purposes 24 | 25 | * `conda-envs`: directory containing the YAML file(s) which fully describe Conda Environments, their dependencies, and those dependency provenance's 26 | * `test_env.yaml`: Simple test environment file with base dependencies. Channels are not specified here and therefore respect global Conda configuration 27 | 28 | ### Additional Scripts: 29 | 30 | This directory contains OS agnostic helper scripts which don't fall in any of the previous categories 31 | * `scripts` 32 | * `create_conda_env.py`: Helper program for spinning up new conda environments based on a starter file with Python Version and Env. Name command-line options 33 | 34 | 35 | ## How to contribute changes 36 | - Clone the repository if you have write access to the main repo, fork the repository if you are a collaborator. 37 | - Make a new branch with `git checkout -b {your branch name}` 38 | - Make changes and test your code 39 | - Ensure that the test environment dependencies (`conda-envs`) line up with the build and deploy dependencies (`conda-recipe/meta.yaml`) 40 | - Push the branch to the repo (either the main or your fork) with `git push -u origin {your branch name}` 41 | * Note that `origin` is the default name assigned to the remote, yours may be different 42 | - Make a PR on GitHub with your changes 43 | - We'll review the changes and get your code into the repo after lively discussion! 44 | 45 | 46 | ## Checklist for updates 47 | - [ ] Make sure there is an/are issue(s) opened for your specific update 48 | - [ ] Create the PR, referencing the issue 49 | - [ ] Debug the PR as needed until tests pass 50 | - [ ] Tag the final, debugged version 51 | * `git tag -a X.Y.Z [latest pushed commit] && git push --follow-tags` 52 | - [ ] Get the PR merged in 53 | 54 | ## Versioneer Auto-version 55 | [Versioneer](https://github.com/warner/python-versioneer) will automatically infer what version 56 | is installed by looking at the `git` tags and how many commits ahead this version is. The format follows 57 | [PEP 440](https://www.python.org/dev/peps/pep-0440/) and has the regular expression of: 58 | ```regexp 59 | \d+.\d+.\d+(?\+\d+-[a-z0-9]+) 60 | ``` 61 | If the version of this commit is the same as a `git` tag, the installed version is the same as the tag, 62 | e.g. `ensemble_md-0.1.2`, otherwise it will be appended with `+X` where `X` is the number of commits 63 | ahead from the last tag, and then `-YYYYYY` where the `Y`'s are replaced with the `git` commit hash. 64 | -------------------------------------------------------------------------------- /devtools/conda-envs/test_env.yaml: -------------------------------------------------------------------------------- 1 | name: test 2 | channels: 3 | 4 | - conda-forge 5 | 6 | - defaults 7 | dependencies: 8 | # Base depends 9 | - python 10 | - pip 11 | 12 | # Testing 13 | - pytest 14 | - pytest-cov 15 | - codecov 16 | 17 | # Pip-only installs 18 | #- pip: 19 | # - codecov 20 | 21 | -------------------------------------------------------------------------------- /devtools/legacy-miniconda-setup/before_install.sh: -------------------------------------------------------------------------------- 1 | # Temporarily change directory to $HOME to install software 2 | pushd . 3 | cd $HOME 4 | # Make sure some level of pip is installed 5 | python -m ensurepip 6 | 7 | # Install Miniconda 8 | if [ "$TRAVIS_OS_NAME" == "osx" ]; then 9 | # Make OSX md5 mimic md5sum from linux, alias does not work 10 | md5sum () { 11 | command md5 -r "$@" 12 | } 13 | MINICONDA=Miniconda3-latest-MacOSX-x86_64.sh 14 | else 15 | MINICONDA=Miniconda3-latest-Linux-x86_64.sh 16 | fi 17 | MINICONDA_HOME=$HOME/miniconda 18 | MINICONDA_MD5=$(wget -qO- https://repo.anaconda.com/miniconda/ | grep -A3 $MINICONDA | sed -n '4p' | sed -n 's/ *\(.*\)<\/td> */\1/p') 19 | wget -q https://repo.anaconda.com/miniconda/$MINICONDA 20 | if [[ $MINICONDA_MD5 != $(md5sum $MINICONDA | cut -d ' ' -f 1) ]]; then 21 | echo "Miniconda MD5 mismatch" 22 | exit 1 23 | fi 24 | bash $MINICONDA -b -p $MINICONDA_HOME 25 | 26 | # Configure miniconda 27 | export PIP_ARGS="-U" 28 | # New to conda >=4.4 29 | echo ". $MINICONDA_HOME/etc/profile.d/conda.sh" >> ~/.bashrc # Source the profile.d file 30 | echo "conda activate" >> ~/.bashrc # Activate conda 31 | source ~/.bashrc # source file to get new commands 32 | #export PATH=$MINICONDA_HOME/bin:$PATH # Old way, should not be needed anymore 33 | 34 | conda config --add channels conda-forge 35 | 36 | conda config --set always_yes yes 37 | conda install conda conda-build jinja2 anaconda-client 38 | conda update --quiet --all 39 | 40 | # Restore original directory 41 | popd 42 | -------------------------------------------------------------------------------- /devtools/scripts/create_conda_env.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | import os 3 | import re 4 | import glob 5 | import shutil 6 | import subprocess as sp 7 | from tempfile import TemporaryDirectory 8 | from contextlib import contextmanager 9 | # YAML imports 10 | try: 11 | import yaml # PyYAML 12 | loader = yaml.load 13 | except ImportError: 14 | try: 15 | import ruamel_yaml as yaml # Ruamel YAML 16 | except ImportError: 17 | try: 18 | # Load Ruamel YAML from the base conda environment 19 | from importlib import util as import_util 20 | CONDA_BIN = os.path.dirname(os.environ['CONDA_EXE']) 21 | ruamel_yaml_path = glob.glob(os.path.join(CONDA_BIN, '..', 22 | 'lib', 'python*.*', 'site-packages', 23 | 'ruamel_yaml', '__init__.py'))[0] 24 | # Based on importlib example, but only needs to load_module since its the whole package, not just 25 | # a module 26 | spec = import_util.spec_from_file_location('ruamel_yaml', ruamel_yaml_path) 27 | yaml = spec.loader.load_module() 28 | except (KeyError, ImportError, IndexError): 29 | raise ImportError("No YAML parser could be found in this or the conda environment. " 30 | "Could not find PyYAML or Ruamel YAML in the current environment, " 31 | "AND could not find Ruamel YAML in the base conda environment through CONDA_EXE path. " 32 | "Environment not created!") 33 | loader = yaml.YAML(typ="safe").load # typ="safe" avoids odd typing on output 34 | 35 | 36 | @contextmanager 37 | def temp_cd(): 38 | """Temporary CD Helper""" 39 | cwd = os.getcwd() 40 | with TemporaryDirectory() as td: 41 | try: 42 | os.chdir(td) 43 | yield 44 | finally: 45 | os.chdir(cwd) 46 | 47 | 48 | # Args 49 | parser = argparse.ArgumentParser(description='Creates a conda environment from file for a given Python version.') 50 | parser.add_argument('-n', '--name', type=str, 51 | help='The name of the created Python environment') 52 | parser.add_argument('-p', '--python', type=str, 53 | help='The version of the created Python environment') 54 | parser.add_argument('conda_file', 55 | help='The file for the created Python environment') 56 | 57 | args = parser.parse_args() 58 | 59 | # Open the base file 60 | with open(args.conda_file, "r") as handle: 61 | yaml_script = loader(handle.read()) 62 | 63 | python_replacement_string = "python {}*".format(args.python) 64 | 65 | try: 66 | for dep_index, dep_value in enumerate(yaml_script['dependencies']): 67 | if re.match('python([ ><=*]+[0-9.*]*)?$', dep_value): # Match explicitly 'python' and its formats 68 | yaml_script['dependencies'].pop(dep_index) 69 | break # Making the assumption there is only one Python entry, also avoids need to enumerate in reverse 70 | except (KeyError, TypeError): 71 | # Case of no dependencies key, or dependencies: None 72 | yaml_script['dependencies'] = [] 73 | finally: 74 | # Ensure the python version is added in. Even if the code does not need it, we assume the env does 75 | yaml_script['dependencies'].insert(0, python_replacement_string) 76 | 77 | # Figure out conda path 78 | if "CONDA_EXE" in os.environ: 79 | conda_path = os.environ["CONDA_EXE"] 80 | else: 81 | conda_path = shutil.which("conda") 82 | if conda_path is None: 83 | raise RuntimeError("Could not find a conda binary in CONDA_EXE variable or in executable search path") 84 | 85 | print("CONDA ENV NAME {}".format(args.name)) 86 | print("PYTHON VERSION {}".format(args.python)) 87 | print("CONDA FILE NAME {}".format(args.conda_file)) 88 | print("CONDA PATH {}".format(conda_path)) 89 | 90 | # Write to a temp directory which will always be cleaned up 91 | with temp_cd(): 92 | temp_file_name = "temp_script.yaml" 93 | with open(temp_file_name, 'w') as f: 94 | f.write(yaml.dump(yaml_script)) 95 | sp.call("{} env create -n {} -f {}".format(conda_path, args.name, temp_file_name), shell=True) 96 | -------------------------------------------------------------------------------- /docs/Makefile: -------------------------------------------------------------------------------- 1 | # Minimal makefile for Sphinx documentation 2 | # 3 | 4 | # You can set these variables from the command line. 5 | SPHINXOPTS = 6 | SPHINXBUILD = sphinx-build 7 | SPHINXPROJ = ensemble_md 8 | SOURCEDIR = . 9 | BUILDDIR = _build 10 | 11 | # Put it first so that "make" without argument is like "make help". 12 | help: 13 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 14 | 15 | .PHONY: help Makefile 16 | 17 | # Catch-all target: route all unknown targets to Sphinx using the new 18 | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). 19 | %: Makefile 20 | @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | # Compiling ensemble_md's Documentation 2 | 3 | The docs for this project are built with [Sphinx](http://www.sphinx-doc.org/en/master/). 4 | To compile the docs, first ensure that Sphinx and the ReadTheDocs theme are installed. 5 | 6 | 7 | ```bash 8 | conda install sphinx sphinx_rtd_theme 9 | ``` 10 | 11 | 12 | Once installed, you can use the `Makefile` in this directory to compile static HTML pages by 13 | ```bash 14 | make html 15 | ``` 16 | 17 | The compiled docs will be in the `_build` directory and can be viewed by opening `index.html` (which may itself 18 | be inside a directory called `html/` depending on what version of Sphinx is installed). 19 | 20 | 21 | A configuration file for [Read The Docs](https://readthedocs.org/) (readthedocs.yaml) is included in the top level of the repository. To use Read the Docs to host your documentation, go to https://readthedocs.org/ and connect this repository. You may need to change your default branch to `main` under Advanced Settings for the project. 22 | 23 | If you would like to use Read The Docs with `autodoc` (included automatically) and your package has dependencies, you will need to include those dependencies in your documentation yaml file (`docs/requirements.yaml`). 24 | 25 | -------------------------------------------------------------------------------- /docs/_static/README.md: -------------------------------------------------------------------------------- 1 | # Static Doc Directory 2 | 3 | Add any paths that contain custom static files (such as style sheets) here, 4 | relative to the `conf.py` file's directory. 5 | They are copied after the builtin static files, 6 | so a file named "default.css" will overwrite the builtin "default.css". 7 | 8 | The path to this folder is set in the Sphinx `conf.py` file in the line: 9 | ```python 10 | templates_path = ['_static'] 11 | ``` 12 | 13 | ## Examples of file to add to this directory 14 | * Custom Cascading Style Sheets 15 | * Custom JavaScript code 16 | * Static logo images 17 | -------------------------------------------------------------------------------- /docs/_static/REXEE_illustration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wehs7661/ensemble_md/5b7c6cd8b82f05fad7b2215ac0bfefc73e6e11e7/docs/_static/REXEE_illustration.png -------------------------------------------------------------------------------- /docs/_static/REXEE_more_configs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wehs7661/ensemble_md/5b7c6cd8b82f05fad7b2215ac0bfefc73e6e11e7/docs/_static/REXEE_more_configs.png -------------------------------------------------------------------------------- /docs/_static/algorithm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wehs7661/ensemble_md/5b7c6cd8b82f05fad7b2215ac0bfefc73e6e11e7/docs/_static/algorithm.png -------------------------------------------------------------------------------- /docs/_static/css/custom.css: -------------------------------------------------------------------------------- 1 | .math { 2 | text-align: left; 3 | } 4 | .eqno { 5 | float: right; 6 | } -------------------------------------------------------------------------------- /docs/_templates/README.md: -------------------------------------------------------------------------------- 1 | # Templates Doc Directory 2 | 3 | Add any paths that contain templates here, relative to 4 | the `conf.py` file's directory. 5 | They are copied after the builtin template files, 6 | so a file named "page.html" will overwrite the builtin "page.html". 7 | 8 | The path to this folder is set in the Sphinx `conf.py` file in the line: 9 | ```python 10 | html_static_path = ['_templates'] 11 | ``` 12 | 13 | ## Examples of file to add to this directory 14 | * HTML extensions of stock pages like `page.html` or `layout.html` 15 | -------------------------------------------------------------------------------- /docs/api/api_analysis.rst: -------------------------------------------------------------------------------- 1 | ensemble\_md.analysis 2 | ===================== 3 | 4 | ensemble\_md.analysis.analyze_traj 5 | ---------------------------------- 6 | 7 | .. automodule:: ensemble_md.analysis.analyze_traj 8 | :members: 9 | :undoc-members: 10 | 11 | ensemble\_md.analysis.analyze_matrix 12 | ------------------------------------ 13 | 14 | .. automodule:: ensemble_md.analysis.analyze_matrix 15 | :members: 16 | :undoc-members: 17 | 18 | ensemble\_md.analysis.analyze_free_energy 19 | ----------------------------------------- 20 | 21 | .. automodule:: ensemble_md.analysis.analyze_free_energy 22 | :members: 23 | :undoc-members: 24 | 25 | ensemble\_md.analysis.synthesize_data 26 | ----------------------------------------- 27 | 28 | .. automodule:: ensemble_md.analysis.synthesize_data 29 | :members: 30 | :undoc-members: 31 | 32 | ensemble\_md.analysis.clustering 33 | ----------------------------------------- 34 | 35 | .. automodule:: ensemble_md.analysis.clustering 36 | :members: 37 | :undoc-members: 38 | 39 | ensemble\_md.analysis.msm_analysis 40 | ---------------------------------- 41 | 42 | .. automodule:: ensemble_md.analysis.msm_analysis 43 | :members: 44 | :undoc-members: -------------------------------------------------------------------------------- /docs/api/api_replica_exchange_EE.rst: -------------------------------------------------------------------------------- 1 | ensemble\_md.replica_exchange_EE 2 | ================================ 3 | 4 | .. automodule:: ensemble_md.replica_exchange_EE 5 | :members: 6 | :undoc-members: -------------------------------------------------------------------------------- /docs/api/api_utils.rst: -------------------------------------------------------------------------------- 1 | ensemble\_md.utils 2 | ================== 3 | 4 | ensemble\_md.utils.gmx_parser 5 | ----------------------------- 6 | 7 | .. automodule:: ensemble_md.utils.gmx_parser 8 | :members: 9 | :undoc-members: 10 | 11 | ensemble\_md.utils.utils 12 | ------------------------ 13 | 14 | .. automodule:: ensemble_md.utils.utils 15 | :members: 16 | :undoc-members: 17 | 18 | ensemble\_md.utils.exceptions 19 | ----------------------------- 20 | 21 | .. automodule:: ensemble_md.utils.exceptions 22 | :members: 23 | :undoc-members: -------------------------------------------------------------------------------- /docs/environment.yml: -------------------------------------------------------------------------------- 1 | name: docs 2 | channels: 3 | - conda-forge 4 | dependencies: 5 | - python=3.8 6 | - pandoc 7 | - ipykernel 8 | - mpich 9 | - mpi4py 10 | - pip 11 | - pip: 12 | - -r ./requirements.txt 13 | 14 | -------------------------------------------------------------------------------- /docs/examples/tutorial_1/example_outputs.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wehs7661/ensemble_md/5b7c6cd8b82f05fad7b2215ac0bfefc73e6e11e7/docs/examples/tutorial_1/example_outputs.zip -------------------------------------------------------------------------------- /docs/examples/tutorial_1/expanded.mdp: -------------------------------------------------------------------------------- 1 | ; Run control 2 | integrator = md-vv 3 | tinit = 0 4 | dt = 0.002 5 | nsteps = 50000000 6 | comm_mode = Linear 7 | nstcomm = 1 8 | nstfout = 0 9 | 10 | ; Output control 11 | nstlog = 100 12 | nstcalcenergy = 1 13 | nstenergy = 1000 14 | nstxout_compressed = 1000 15 | 16 | ; Neighborsearching and short-range nonbonded interactions 17 | nstlist = 10 18 | ns_type = grid 19 | pbc = xyz 20 | rlist = 1.0 21 | 22 | ; Electrostatics 23 | cutoff_scheme = verlet 24 | coulombtype = PME 25 | coulomb_modifier = Potential-shift-Verlet 26 | rcoulomb_switch = 0.89 27 | rcoulomb = 0.9 28 | 29 | ; van der Waals 30 | vdw_type = Cut-off 31 | vdw_modifier = Potential-switch 32 | rvdw_switch = 0.85 33 | rvdw = 0.9 34 | 35 | ; Apply long range dispersion corrections for Energy and Pressure 36 | DispCorr = AllEnerPres 37 | 38 | ; Spacing for the PME/PPPM FFT grid 39 | fourierspacing = 0.1 40 | 41 | ; EWALD/PME/PPPM parameters 42 | fourier_nx = 0 43 | fourier_ny = 0 44 | fourier_nz = 0 45 | pme_order = 4 46 | ewald_rtol = 1e-05 47 | ewald_geometry = 3d 48 | epsilon_surface = 0 49 | 50 | ; Temperature coupling 51 | tcoupl = v-rescale 52 | nsttcouple = 1 53 | tc_grps = System 54 | tau_t = 0.5 55 | ref_t = 298 56 | 57 | ; Pressure coupling is on for NPT 58 | pcoupl = no 59 | 60 | ; refcoord_scaling should do nothing since there are no position restraints. 61 | 62 | gen_vel = yes 63 | gen_temp = 298 64 | gen_seed = -1 65 | 66 | ; options for bonds 67 | constraints = h-bonds 68 | 69 | ; Type of constraint algorithm 70 | constraint_algorithm = lincs 71 | continuation = no 72 | 73 | ; Highest order in the expansion of the constraint coupling matrix 74 | lincs_order = 12 75 | lincs_iter = 2 76 | 77 | ; Free energy calculation 78 | free_energy = expanded 79 | calc_lambda_neighbors = -1 80 | sc_alpha = 0.5 81 | couple_moltype = LIG 82 | couple_lambda0 = vdw-q 83 | couple_lambda1 = none 84 | couple_intramol = no 85 | init_lambda_state = 0 86 | 87 | nstdhdl = 10 88 | dhdl_print_energy = total 89 | 90 | ; Seed for Monte Carlo in lambda space 91 | lmc_seed = -1 92 | lmc_gibbsdelta = -1 93 | lmc_forced_nstart = 0 94 | symmetrized_transition_matrix = yes 95 | nst_transition_matrix = 100000 96 | 97 | ; expanded ensemble variables 98 | nstexpanded = 10 99 | lmc_stats = no 100 | lmc_move = metropolized-gibbs 101 | 102 | ; lambda-states = 1 2 3 4 5 6 7 8 9 103 | coul_lambdas = 0.0 0.25 0.5 0.75 1.0 1.0 1.0 1.0 1.0 104 | vdw_lambdas = 0.0 0.0 0.0 0.0 0.0 0.25 0.5 0.75 1.0 105 | init_lambda_weights = 0.00000 1.61343 2.71400 3.40859 3.60446 4.78543 5.37983 3.29843 0.36336 106 | -------------------------------------------------------------------------------- /docs/examples/tutorial_1/params.yaml: -------------------------------------------------------------------------------- 1 | # Simulation parameters 2 | gmx_executable: 'gmx' 3 | gro: sys.gro 4 | top: sys.top 5 | mdp: expanded.mdp 6 | n_sim: 4 7 | n_iter: 5 8 | s: 1 9 | nst_sim: 500 10 | runtime_args: {'-nt': '1'} 11 | 12 | # Data analysis parameters 13 | free_energy: True 14 | -------------------------------------------------------------------------------- /docs/examples/tutorial_1/sys.top: -------------------------------------------------------------------------------- 1 | ; 2 | ; File system.top was generated 3 | ; By user: wei-tse (1000) 4 | ; On host: castlepeak 5 | ; At date: Mon. April 1 23:27:50 2020 6 | ; 7 | ; This is a standalone topology file 8 | ; 9 | ; Created by: 10 | ; ParmEd: openff.py, VERSION 3.2.0 11 | ; Executable: openff.py 12 | ; Library dir: /usr/local/gromacs/share/gromacs/top 13 | ; Command line: 14 | ; openff.py 15 | ; 16 | 17 | [ defaults ] 18 | ; nbfunc comb-rule gen-pairs fudgeLJ fudgeQQ 19 | 1 2 no 1 0.83333 20 | 21 | [ atomtypes ] 22 | ; name at.num mass charge ptype sigma epsilon 23 | C 6 10.0 0.0000 A 0.35 0.5 24 | OW 8 16.00 0.0000 A 3.15061e-01 6.36386e-01 25 | HW 1 1.008 0.0000 A 0.00000e+00 0.00000e+00 26 | 27 | [ moleculetype ] 28 | ; Name nrexcl 29 | LIG 3 30 | 31 | [ atoms ] 32 | ; nr type resnr residue atom cgnr charge mass typeB chargeB massB 33 | ; residue 1 LIG rtp LIG q -0.0 34 | 1 C 1 LIG C1 1 0.2 10.0 35 | 2 C 1 LIG C2 2 0.0 10.0 36 | 3 C 1 LIG C3 3 0.0 10.0 37 | 4 C 1 LIG C4 4 -0.2 10.0 38 | 39 | [ bonds ] 40 | ; ai aj funct c0 c1 c2 c3 41 | 1 2 1 0.15 400000 42 | 2 3 1 0.15 400000 43 | 3 4 1 0.15 400000 44 | 45 | [ pairs ] 46 | ; ai aj funct c0 c1 c2 c3 47 | 1 4 1 0.35 0.5 48 | 49 | [ angles ] 50 | ; ai aj ak funct c0 c1 c2 c3 51 | 1 2 3 1 120.0 500.0 52 | 2 3 4 1 120.0 500.0 53 | 54 | [ dihedrals ] 55 | ; ai aj ak al funct c0 c1 c2 c3 c4 c5 56 | 1 2 3 4 1 180.0000000 60.000 2 57 | 58 | ; Include water topology 59 | #include "amber99sb-ildn.ff/tip3p.itp" 60 | 61 | [ system ] 62 | ; Name 63 | Generic title in water 64 | 65 | [ molecules ] 66 | ; Compound #mols 67 | LIG 1 68 | SOL 839 69 | -------------------------------------------------------------------------------- /docs/examples/tutorial_2/MT_REXEE.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "id": "87324540", 6 | "metadata": {}, 7 | "source": [ 8 | "# Tutorial 2: Multi-topology REXEE (MT-REXEE) simulations" 9 | ] 10 | }, 11 | { 12 | "cell_type": "markdown", 13 | "id": "46970a2d", 14 | "metadata": {}, 15 | "source": [ 16 | "The tutorial will be released soon!" 17 | ] 18 | } 19 | ], 20 | "metadata": { 21 | "kernelspec": { 22 | "display_name": "Python 3", 23 | "language": "python", 24 | "name": "python3" 25 | }, 26 | "language_info": { 27 | "codemirror_mode": { 28 | "name": "ipython", 29 | "version": 3 30 | }, 31 | "file_extension": ".py", 32 | "mimetype": "text/x-python", 33 | "name": "python", 34 | "nbconvert_exporter": "python", 35 | "pygments_lexer": "ipython3", 36 | "version": "3.8.12" 37 | } 38 | }, 39 | "nbformat": 4, 40 | "nbformat_minor": 5 41 | } 42 | -------------------------------------------------------------------------------- /docs/external_tutorials.rst: -------------------------------------------------------------------------------- 1 | External tutorials 2 | ================== 3 | Since the REXEE method combines the working principles of expanded ensemble and Hamiltonian replica exchange methods, understanding 4 | these two methods, espeically how to run them in GROMACS, could be helpful for understanding and using the REXEE method. Here, 5 | we provide a list of external tutorials about the expanded ensemble and Hamiltonian replica exchange methods. 6 | 7 | 1. Tutorials on the expanded ensemble method 8 | --------------------------------------------- 9 | - `Hands-on tutorials: Advanced sampling methods using GROMACS - 5. Expanded ensemble `_. 10 | 11 | 2. Tutorials on the Hamiltonian replica exchange method 12 | ------------------------------------------------------- 13 | - `Hands-on tutorials: Advanced sampling methods using GROMACS - 4. Hamiltonian replica exchange `_. 14 | - `i-CoMSE Advanced Sampling Workshop - March 2023 - Wednesday - Part 3 `_. -------------------------------------------------------------------------------- /docs/getting_started.rst: -------------------------------------------------------------------------------- 1 | 1. Introduction 2 | =============== 3 | :code:`ensemble_md` is a Python package that provides methods for setting up, 4 | running, and analyzing GROMACS simulation ensembles. Currently, the package implements 5 | all the necessary algorithms for running synchronous replica exchange (REX) of expanded ensembles (EE), abbreviated as 6 | REXEE, as well as its multi-topology (MT) variation MT-REXEE. Our future work includes 7 | implementing asynchronous REXEE and other possible variations of the REXEE method. 8 | 9 | 10 | 2. Installation 11 | =============== 12 | 2.1. Requirements 13 | ----------------- 14 | Before installing :code:`ensemble_md`, one should have a working version of `GROMACS`_. Please refer to the GROMACS documentation for full installation instructions. 15 | All the other pip-installable dependencies required by :code:`ensemble_md` (specified in :code:`setup.py` of the package) 16 | will be automatically installed during the installation of the package. 17 | 18 | .. _`GROMACS`: https://manual.gromacs.org/current/install-guide/index.html 19 | 20 | 2.2. Installation via pip 21 | ------------------------- 22 | :code:`ensemble_md` can be installed via :code:`pip` using the following command: 23 | :: 24 | 25 | pip install ensemble-md 26 | 27 | 2.3. Installation from source 28 | ----------------------------- 29 | One can also install :code:`ensemble_md` from the source code, which is available in our 30 | `GitHub repository`_. Specifically, one can execute the following commands: 31 | :: 32 | 33 | git clone https://github.com/wehs7661/ensemble_md.git 34 | cd ensemble_md/ 35 | pip install . 36 | 37 | If you would like to install the package in the editable mode, simply append the last command with the flag :code:`-e` 38 | so that changes you make in the source code will take effect without re-installation of the package. This is particularly 39 | useful if you would like to contribute to the development of the package. (Pull requests and issues are always welcome!) 40 | 41 | .. _`GitHub repository`: https://github.com/wehs7661/ensemble_md.git 42 | 43 | 3. Testing 44 | ========== 45 | 3.1. Tests for the functions that do not use MPI 46 | ------------------------------------------------ 47 | Most of the tests in this package do not require MPI. To perform unit tests for these functions, execute the following command in the home directory of the project: 48 | :: 49 | 50 | pytest -vv --disable-pytest-warnings --cov=ensemble_md --cov-report=xml --color=yes ensemble_md/tests/ 51 | 52 | Note that the flags :code:`--cov` and :code:`--cov-report` are just for generating a coverage report and can be omitted. 53 | These flags require that :code:`pytest-cov` be installed. 54 | 55 | 3.2. Tests for the functions that use MPI 56 | ----------------------------------------- 57 | For the tests that require MPI (all implemented in :code:`tests/test_mpi_func.py`), one can use the following command: 58 | :: 59 | 60 | mpirun -np 4 pytest -vv --disable-pytest-warnings --cov=ensemble_md --cov-report=xml --color=yes ensemble_md/tests/test_mpi_func.py --with-mpi 61 | 62 | Note that the flag :code:`--with-mpi` requires that :code:`pytest-mpi` be installed. 63 | -------------------------------------------------------------------------------- /docs/index.rst: -------------------------------------------------------------------------------- 1 | .. ensemble_md documentation master file, created by 2 | sphinx-quickstart on Thu Mar 15 13:55:56 2018. 3 | You can adapt this file completely to your liking, but it should at least 4 | contain the root `toctree` directive. 5 | 6 | Welcome to ensemble_md's documentation! 7 | ========================================================= 8 | ``ensemble_md`` is a Python package providing methods for running 9 | GROMACS simulation ensembles, including ensemble of expanded ensemble 10 | and ensemble of alchemical metadynamics. The former is our main focus 11 | in our current phase, while the latter will be under development in 12 | the future. 13 | 14 | .. toctree:: 15 | getting_started 16 | :maxdepth: 2 17 | :caption: Getting started: 18 | 19 | .. toctree:: 20 | theory 21 | :maxdepth: 2 22 | :caption: Theory: 23 | 24 | .. toctree:: 25 | simulations 26 | :maxdepth: 2 27 | :caption: Launching REXEE simulations: 28 | 29 | .. toctree:: 30 | examples/tutorial_1/standard_REXEE 31 | examples/tutorial_2/MT_REXEE 32 | :maxdepth: 2 33 | :caption: Tutorials: 34 | 35 | .. toctree:: 36 | api/api_replica_exchange_EE.rst 37 | api/api_analysis 38 | api/api_utils 39 | :maxdepth: 2 40 | :caption: API documentation: 41 | 42 | .. toctree:: 43 | external_tutorials 44 | references 45 | :maxdepth: 1 46 | :caption: Resources: 47 | 48 | Others 49 | ====== 50 | 51 | * :ref:`genindex` 52 | -------------------------------------------------------------------------------- /docs/make.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | 3 | pushd %~dp0 4 | 5 | REM Command file for Sphinx documentation 6 | 7 | if "%SPHINXBUILD%" == "" ( 8 | set SPHINXBUILD=sphinx-build 9 | ) 10 | set SOURCEDIR=. 11 | set BUILDDIR=_build 12 | set SPHINXPROJ=ensemble_md 13 | 14 | if "%1" == "" goto help 15 | 16 | %SPHINXBUILD% >NUL 2>NUL 17 | if errorlevel 9009 ( 18 | echo. 19 | echo.The 'sphinx-build' command was not found. Make sure you have Sphinx 20 | echo.installed, then set the SPHINXBUILD environment variable to point 21 | echo.to the full path of the 'sphinx-build' executable. Alternatively you 22 | echo.may add the Sphinx directory to PATH. 23 | echo. 24 | echo.If you don't have Sphinx installed, grab it from 25 | echo.http://sphinx-doc.org/ 26 | exit /b 1 27 | ) 28 | 29 | %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% 30 | goto end 31 | 32 | :help 33 | %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% 34 | 35 | :end 36 | popd 37 | -------------------------------------------------------------------------------- /docs/references.rst: -------------------------------------------------------------------------------- 1 | .. -*- coding: utf-8 -*- 2 | 3 | References 4 | ========== 5 | 6 | .. [Hsu2024] Hsu, Wei-Tse, and Michael R. Shirts. "Replica exchange of expanded ensembles: A generalized ensemble approach with enhanced flexibility and parallelizability." Journal of Chemical Theory and Computation 20.14 (2024): 6062-6081. doi: `10.1021/acs.jctc.4c00484 `_. 7 | 8 | .. [Sugita1999] Sugita, Yuji, and Yuko Okamoto. "Replica-exchange molecular dynamics method for protein folding." Chemical physics letters 314.1-2 (1999): 141-151. doi: `10.1016/S0009-2614(99)01123-9 `_. 9 | 10 | .. [Lyubartsev1992] Lyubartsev, A. P., et al. "New approach to Monte Carlo calculation of the free energy: Method of expanded ensembles." The Journal of chemical physics 96.3 (1992): 1776-1783. doi: `10.1063/1.462133 `_. 11 | 12 | .. [Sugita2000] Sugita, Yuji, Akio Kitao, and Yuko Okamoto. "Multidimensional replica-exchange method for free-energy calculations." The Journal of chemical physics 113.15 (2000): 6042-6051. doi: `10.1063/1.1308516 `_. 13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/requirements.txt: -------------------------------------------------------------------------------- 1 | sphinx 2 | nbsphinx 3 | sphinx_rtd_theme 4 | docutils==0.17.1 5 | pyyaml 6 | numpy 7 | natsort 8 | argparse 9 | alchemlyb==2.0.0 10 | seaborn 11 | matplotlib 12 | pyemma 13 | pymbar==4.0.1 14 | sphinx-collapse 15 | ruptures 16 | # sphinxcontrib-pseudocode 17 | -------------------------------------------------------------------------------- /ensemble_md/__init__.py: -------------------------------------------------------------------------------- 1 | """A repository for developing ensemble simulation methods""" 2 | 3 | # Add imports here 4 | # from .ensemble_md import canvas # noqa: ABS101 5 | 6 | # Handle versioneer 7 | from ._version import get_versions # noqa: ABS101 8 | 9 | versions = get_versions() 10 | __version__ = versions["version"] 11 | __git_revision__ = versions["full-revisionid"] 12 | del get_versions, versions 13 | -------------------------------------------------------------------------------- /ensemble_md/analysis/msm_analysis.py: -------------------------------------------------------------------------------- 1 | #################################################################### 2 | # # 3 | # ensemble_md, # 4 | # a python package for running GROMACS simulation ensembles # 5 | # # 6 | # Written by Wei-Tse Hsu # 7 | # Copyright (c) 2022 University of Colorado Boulder # 8 | # # 9 | #################################################################### 10 | """ 11 | The :obj:`.msm_analysis` module provides analysis methods based on Markov state models 12 | built from REXEE simulations. 13 | """ 14 | import pyemma 15 | import warnings 16 | import ruptures as rpt 17 | import matplotlib.pyplot as plt 18 | 19 | from ensemble_md.utils import utils 20 | 21 | warnings.warn('This module is still a work in progress. Please note that there are no immediate plans to expand or rigorously test this module.', UserWarning) # noqa: E501 22 | 23 | 24 | def plot_acf(models, n_tot, fig_name): 25 | """ 26 | Plots the state index autocorrelation times for all configurations in a single plot. 27 | 28 | Parameters 29 | ---------- 30 | models : list 31 | A list of MSM models (built by PyEMMA) that have the :code:`correlation` method. 32 | n_tot : int 33 | The total number of states across all replicas. 34 | fig_name : str 35 | The file path to save the figure. 36 | """ 37 | plt.figure() 38 | for i in range(len(models)): 39 | if models[i] is not None: 40 | times, acf = models[i].correlation(models[i].active_set) 41 | plt.plot(times, acf, label=f'Configuration {i}') 42 | plt.xlabel('Time') # Need to figure out what exactly this is ... 43 | plt.ylabel('Autocorrelation function (ACF)') 44 | plt.grid() 45 | plt.legend() 46 | plt.tight_layout() 47 | plt.savefig(fig_name, dpi=600) 48 | 49 | 50 | def plot_its(trajs, lags, fig_name, dt=1, units='step'): 51 | """ 52 | Plots the implied timescales (ITS) as a function of lag time for all configurations 53 | in a subplot. 54 | 55 | Parameters 56 | ---------- 57 | trajs : list 58 | A list of state-space trajectories. 59 | lags : list 60 | A list of lag times to examine. 61 | fig_name : str 62 | The file path to save the figure. 63 | dt : float 64 | Physical time between frames. The default is 1. 65 | units : str 66 | The units of :code:`dt`. The default is :code:`'step'`. 67 | 68 | Returns 69 | ------- 70 | ts_list : list 71 | A list of instances of the :code:`ImpliedTimescales` class in PyEMMA. 72 | """ 73 | ts_list = [] 74 | n_rows, n_cols = utils.get_subplot_dimension(len(trajs)) 75 | fig = plt.figure(figsize=(3 * n_cols, 2.5 * n_rows)) 76 | for i in range(len(trajs)): 77 | # We convert trajs[i] to list to avoid BufferError: memoryview: underlying buffer is not C-contiguous 78 | ts = pyemma.msm.its(list(trajs[i]), lags=lags, show_progress=False) 79 | ts_list.append(ts) 80 | 81 | fig.add_subplot(n_rows, n_cols, i + 1) 82 | pyemma.plots.plot_implied_timescales(ts, dt=dt, units=units) 83 | plt.xlabel(f'Lag time ({units})') 84 | plt.ylabel(f'Implied timescale ({units})') 85 | plt.title(f'Configuration {i}', fontweight='bold') 86 | plt.grid() 87 | 88 | plt.tight_layout() 89 | plt.savefig(fig_name, dpi=600) 90 | 91 | return ts_list 92 | 93 | 94 | def decide_lagtimes(ts_list): 95 | """ 96 | This function automatically estimates a lagtime for building an MSM for each configuration. 97 | Specifically, the lag time will be estimated using change-point detection enabled by 98 | :code:`ruptures` for each (:math:`n-1`) timescales (where :math:`n` is the number of states). 99 | A good lag time should be long enough such that the timescale is roughly constant but short 100 | enough to be smaller than all timescales. If no lag time is smaller than all timescales, then a 101 | warning will be printed and a lag time of 1 will be returned. 102 | 103 | Parameters 104 | ---------- 105 | ts_list : list 106 | A list of instances of the :code:`ImpliedTimescales` class in PyEMMA. 107 | 108 | Returns 109 | ------- 110 | chosen_lags: list 111 | A list of lag times automatically determined for each configuration. 112 | """ 113 | # Workflow: first find the timescales larger than the corressponding lag times, 114 | # then perform change change detection. 115 | chosen_lags = [] 116 | print(' Suggested lag times (in trajectory frames) for each timescale curve of each configuration:') 117 | for i in range(len(ts_list)): # for each configuration 118 | lag_list = [] # a list of lags chosen based on each timescale cure 119 | ts = ts_list[i] 120 | for j in range(len(ts.timescales[0])): # compare each timescale curve with lag times 121 | ts_arr = ts.timescales[:, j] # the j-th timescale curve, length: number of lagtimes 122 | ts_sub = ts_arr[ts_arr > ts.lagtimes] # timescales that are larger than the corresponding lag times 123 | if len(ts_sub) <= 10: # i.e. most timescales < lag time --> no appropirate lag time anyway, use 1 124 | lag_list.append(1) 125 | else: 126 | algo = rpt.Window(width=10, model='l2').fit(ts_sub) 127 | change_loc = algo.predict(n_bkps=1) # this returns indices 128 | lag_list.append(ts.lagtimes[change_loc[0]]) # not sure if the first change point makes sense. Need to check. # noqa: E501 129 | print(f' - Configuration {i}: {lag_list}') # noqa: E501 130 | 131 | # There might be cases like [6, 1, 1, 1] but using 6 is probably equally bad as 1. 132 | # If all are larger than one, using the max at least ensure all timescales are roughly constant. 133 | chosen_lags.append(max(lag_list)) # units: time frame 134 | 135 | return chosen_lags 136 | -------------------------------------------------------------------------------- /ensemble_md/analysis/synthesize_data.py: -------------------------------------------------------------------------------- 1 | #################################################################### 2 | # # 3 | # ensemble_md, # 4 | # a python package for running GROMACS simulation ensembles # 5 | # # 6 | # Written by Wei-Tse Hsu # 7 | # Copyright (c) 2022 University of Colorado Boulder # 8 | # # 9 | #################################################################### 10 | """ 11 | The :obj:`.synthesize_data` module provides methods for synthesizing REXEE data, 12 | specifically trajectories and transition matrices. This is mainly useful 13 | for carrying out the bootstrap analysis for some analysis, such as the spectral gap calculation in 14 | :obj:`.analyze_matrix`. 15 | """ 16 | import numpy as np 17 | from ensemble_md.analysis import analyze_traj 18 | from ensemble_md.analysis import analyze_matrix 19 | 20 | 21 | def synthesize_traj(trans_mtx, n_frames=100000, method='transmtx', start=0, seed=None): 22 | """ 23 | Synthesizes a trajectory based on the input transition matrix. 24 | 25 | Parameters 26 | ---------- 27 | trans_mtx: numpy.ndarray 28 | The input transition matrix. 29 | n_frames: int, Optional 30 | The number of frames to be generated. The default value is 100000. 31 | method: str, Optional 32 | The method to be used for trajectory synthesis. It can be either :code:`'transmtx'` or :code:`'equil_prob'`. 33 | The former refers to generating the trajectory by simulating the moves between states based on the 34 | input transition matrix, with the trajectory starting from the state specified by the :code:`start` parameter. 35 | If the method is :code:`equil_prob`, the trajectory will be generated by simply sampling from the equilibrium 36 | probability distribution calculated from the input transition matrix. The method :code:`'transmtx'` should 37 | generate a trajectory characterized by a transition matrix similar to the input one, while the method 38 | :code:`'equil_prob'` may generate a trajectory that has a significantly different transition matrix. Still, 39 | a trajectory generated by either method should have a similar underlying equilibrium probability distribution 40 | (hence the spectral gap as well) as the input transition matrix. The default value is :code:`'transmtx'`. 41 | start: int, Optional 42 | The starting state of the synthesized trajectory if the method is :code:`transmtx`. The default value is 0, 43 | i.e., the first state. This parameter is ignored if the method is :code:`equil_prob`. 44 | seed: int, Optional 45 | The seed for the random number generator. The default value is :code:`None`, i.e., the seed will not be set. 46 | 47 | Returns 48 | ------- 49 | syn_traj: numpy.ndarray 50 | The synthesized trajectory. 51 | """ 52 | if seed is not None: 53 | np.random.seed(seed) 54 | N = len(trans_mtx) # Can be the number of states or replicas depending on the type of the input mtraix 55 | 56 | if start >= N: 57 | raise ValueError(f'The starting state {start} is out of the range of the input transition matrix.') 58 | 59 | if method == 'equil_prob': 60 | equil_prob = analyze_matrix.calc_equil_prob(trans_mtx) 61 | syn_traj = np.random.choice(N, size=n_frames, p=equil_prob.reshape(N)) 62 | elif method == 'transmtx': 63 | check_row = sum([np.isclose(np.sum(trans_mtx[i]), 1, atol=1e-8) for i in range(len(trans_mtx))]) 64 | check_col = sum([np.isclose(np.sum(trans_mtx[:, i]), 1, atol=1e-8) for i in range(len(trans_mtx))]) 65 | if check_row == N: 66 | mtx = trans_mtx 67 | elif check_col == N: 68 | mtx = trans_mtx.T 69 | else: 70 | raise ValueError('The input matrix is not normalized.') 71 | 72 | syn_traj = np.zeros(n_frames, dtype=int) 73 | syn_traj[0] = start 74 | for i in range(1, n_frames): 75 | syn_traj[i] = np.random.choice(N, p=mtx[syn_traj[i-1]]) 76 | else: 77 | raise ValueError(f'Invalid method: {method}. The method must be either "transmtx" or "equil_prob".') 78 | 79 | return syn_traj 80 | 81 | 82 | def synthesize_transmtx(trans_mtx, n_frames=100000, seed=None): 83 | """ 84 | Synthesizes a normalized transition matrix similar to the input transition matrix by first 85 | generating a trajectory using :obj:`synthesize_traj` with :code:`method='transmtx'` and then 86 | calculating the transition matrix from the synthesized trajectory. This function can be 87 | useful in performing boostrapping analysis when estimating the uncertainty of the spectral gap 88 | associated with the input transition matrix. 89 | 90 | Parameters 91 | ---------- 92 | trans_mtx: numpy.ndarray 93 | The input transition matrix. 94 | n_frames: int, Optional 95 | The number of frames of the synthesized trajectory from which the mock transition matrix is calculated. 96 | The default value is 100000. 97 | seed: int, Optional 98 | The seed for the random number generator. The default value is :code:`None`, i.e., the seed will not be set. 99 | 100 | Returns 101 | ------- 102 | syn_mtx: numpy.ndarray 103 | The synthesized transition matrix. 104 | syn_traj: numpy.ndarray 105 | The synthesized trajectory from which the transition matrix is calculated. 106 | diff_mtx: numpy.ndarray 107 | The input transition matrix subtracted by the synthesized transition matrix. 108 | """ 109 | N = len(trans_mtx) # can be the number of states or number of replicas depending on mtx_type 110 | 111 | # Note that here we just use the default values (method='transmtx' and start=0) for synthesize_traj, so that 112 | # the synthesized matrix will be similar to the input one. (If equil_prob is used, the resulting matrix may 113 | # be very different from the input one, though the equilibrium probabilities and spectral gap should be similar.) 114 | # Note that for transition matrix synthesis, the starting state of the synthesized trajectory 115 | # should not matter given that the number of frames is large. 116 | syn_traj = synthesize_traj(trans_mtx, n_frames, seed=seed) 117 | syn_mtx = analyze_traj.traj2transmtx(syn_traj, N) 118 | diff_mtx = trans_mtx - syn_mtx 119 | 120 | return syn_mtx, syn_traj, diff_mtx 121 | -------------------------------------------------------------------------------- /ensemble_md/data/CB7-10/complex/complex.top: -------------------------------------------------------------------------------- 1 | #include "amber03.ff/forcefield.itp" 2 | #include "/ocean/projects/bio230014p/wehs7661/EEXE_experiments/CB7-10/complex/Prep/Topology/itp_files/10atomtypes.itp" 3 | #include "/ocean/projects/bio230014p/wehs7661/EEXE_experiments/CB7-10/complex/Prep/Topology/itp_files/cucurbit_7_uril_GMX.itp" 4 | #include "/ocean/projects/bio230014p/wehs7661/EEXE_experiments/CB7-10/complex/Prep/Topology/itp_files/10_GMX.itp" 5 | #include "amber03.ff/tip3p.itp" 6 | #include "amber03.ff/ions.itp" 7 | 8 | [ system ] 9 | Complex of CB7 and 10.acpype with solvent in water 10 | 11 | [ molecules ] 12 | HOS 1 13 | MOL 1 14 | SOL 2711 15 | CL 3 16 | -------------------------------------------------------------------------------- /ensemble_md/data/CB7-10/complex/fixed_weight.mdp: -------------------------------------------------------------------------------- 1 | ; Run control 2 | integrator = md-vv 3 | tinit = 0 4 | dt = 0.002 5 | nsteps = 100000000 6 | nstcomm = 10 7 | 8 | ; Output control 9 | nstlog = 1000 10 | nstcalcenergy = 10 11 | nstenergy = 1000 12 | nstxout_compressed = 1000 13 | 14 | ; Neighborsearching and short-range nonbonded interactions 15 | nstlist = 10 16 | ns_type = grid 17 | pbc = xyz 18 | rlist = 1.3 19 | 20 | ; Electrostatics 21 | coulombtype = PME-switch 22 | rcoulomb_switch = 0.88 23 | rcoulomb = 0.9 24 | 25 | ; van der Waals 26 | vdw_type = switch 27 | rvdw_switch = 0.85 28 | rvdw = 0.9 29 | 30 | ; Apply long range dispersion corrections for Energy and Pressure 31 | DispCorr = AllEnerPres 32 | 33 | ; Spacing for the PME/PPPM FFT grid 34 | fourierspacing = 0.12 35 | 36 | ; EWALD/PME/PPPM parameters 37 | pme_order = 4 38 | ewald_rtol = 1e-05 39 | ewald_geometry = 3d 40 | epsilon_surface = 0 41 | optimize_fft = yes 42 | 43 | ; Temperature coupling 44 | tcoupl = nose-hoover 45 | nsttcouple = 10 46 | tc_grps = System 47 | tau_t = 1.0 48 | ref_t = 300 49 | 50 | ; Pressure coupling is on for NPT 51 | pcoupl = no 52 | 53 | gen_vel = yes 54 | gen_temp = 300 55 | gen_seed = -1 56 | 57 | ; options for bonds 58 | constraints = h-bonds 59 | 60 | ; Type of constraint algorithm 61 | constraint_algorithm = shake 62 | shake_tol = 1e-05 63 | 64 | ; Free energy calculation 65 | free_energy = expanded 66 | calc_lambda_neighbors = -1 67 | sc_alpha = 0.5 68 | sc_power = 1 69 | sc_sigma = 0.5 70 | couple_moltype = MOL 71 | couple_lambda0 = vdw-q 72 | couple_lambda1 = none 73 | couple_intramol = no 74 | init_lambda_state = 0 75 | nstdhdl = 100 76 | dhdl_print_energy = total 77 | 78 | ; Seed for Monte Carlo in lambda space 79 | symmetrized_transition_matrix = no 80 | nst_transition_matrix = 100000 81 | ; wl-scale = 0.8 82 | ; wl-ratio = 0.7 83 | ; init-wl-delta = 10 84 | 85 | ; expanded ensemble variables 86 | nstexpanded = 100 87 | lmc_stats = no 88 | lmc_move = metropolized-gibbs 89 | ; lmc-weights-equil = wl-delta 90 | ; weight-equil-wl-delta = 0.001 91 | ; wl-oneovert = yes 92 | 93 | ; lambda-states = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 94 | 95 | coul_lambdas = 0.0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 96 | vdw_lambdas = 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.2 0.3 0.4 0.45 0.5 0.55 0.6 0.63 0.66 0.69 0.72 0.75 0.78 0.81 0.84 0.88 0.92 1.0 97 | 98 | ; PULL CODE 99 | pull = yes 100 | pull_ngroups = 2 101 | pull_ncoords = 1 102 | pull_group1_name = HOS 103 | pull_group2_name = MOL 104 | pull_pbc_ref_prev_step_com = yes 105 | 106 | pull_coord1_groups = 1 2 107 | pull_coord1_type = umbrella 108 | pull_coord1_geometry = distance 109 | pull_coord1_dim = Y Y Y 110 | pull_coord1_origin = 0.0 0.0 0.0 111 | pull_coord1_vec = 0.0 0.0 0.0 112 | pull_coord1_start = yes 113 | pull_coord1_init = 0 114 | pull_coord1_rate = 0 115 | pull_coord1_k = 0 116 | pull_coord1_kB = 1000 117 | pull_nstfout = 400000 118 | pull_nstxout = 1000 119 | pull_print_ref_value = yes 120 | 121 | restraint_lambdas = 0.0 0.0 0.0 0.0 0.0 0.0 0.01 0.05 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 0.95 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 122 | init_lambda_weights = 0.0 57.88597 112.71883 163.84425 210.48097 253.80261 294.79849 333.90408 370.82669 406.02515 438.53116 468.53751 496.24649 521.58417 544.57404 565.26697 583.7337 599.60651 613.43958 624.70471 633.95947 638.29785 642.44977 646.33551 649.91626 651.54779 652.93359 654.13263 654.94073 655.13086 655.07239 654.66443 653.68683 652.32123 650.72308 649.2381 647.94586 646.599 645.52063 643.99133 123 | -------------------------------------------------------------------------------- /ensemble_md/data/CB7-10/complex/itp_files/10atomtypes.itp: -------------------------------------------------------------------------------- 1 | ; 10_GMX.itp created by acpype (Rev: 7268) on Fri May 17 15:26:08 2013 2 | 3 | [ atomtypes ] 4 | ;name bond_type mass charge ptype sigma epsilon Amb 5 | c3 c3 0.00000 0.00000 A 3.39967e-01 4.57730e-01 ; 1.91 0.1094 6 | n4 n4 0.00000 0.00000 A 3.25000e-01 7.11280e-01 ; 1.82 0.1700 7 | hx hx 0.00000 0.00000 A 1.95998e-01 6.56888e-02 ; 1.10 0.0157 8 | hn hn 0.00000 0.00000 A 1.06908e-01 6.56888e-02 ; 0.60 0.0157 9 | 10 | -------------------------------------------------------------------------------- /ensemble_md/data/CB7-10/complex/params.yaml: -------------------------------------------------------------------------------- 1 | # Section 1: GROMACS executable 2 | gmx_executable: 'gmx' 3 | 4 | # Section 2: Simulation inputs 5 | gro: 'complex.gro' 6 | top: 'complex.top' 7 | mdp: 'expanded.mdp' 8 | 9 | # Section 2: EEXE parameters 10 | n_sim: 4 11 | n_iter: 12500 12 | s: 9 13 | nst_sim: 2000 14 | proposal: 'exhaustive' 15 | w_combine: 16 | N_cutoff: -1 17 | runtime_args: {'-nt': '16', '-ntmpi': '1'} 18 | grompp_args: {'-maxwarn': '1'} 19 | 20 | # Section 3: Output settings 21 | verbose: True 22 | n_ckpt: 100 23 | 24 | # Section 4: Data analysis 25 | msm: False 26 | free_energy: True 27 | df_spacing: 1 28 | df_method: "MBAR" 29 | err_method: 'bootstrap' 30 | n_bootstrap: 50 31 | seed: 0 32 | subsampling_avg: True 33 | -------------------------------------------------------------------------------- /ensemble_md/data/CB7-10/complex/weight_updating.mdp: -------------------------------------------------------------------------------- 1 | ; Run control 2 | integrator = md-vv 3 | tinit = 0 4 | dt = 0.002 5 | nsteps = 100000000 6 | nstcomm = 10 7 | 8 | ; Output control 9 | nstlog = 10 10 | nstcalcenergy = 10 11 | nstenergy = 1000 12 | nstxout_compressed = 1000 13 | 14 | ; Neighborsearching and short-range nonbonded interactions 15 | nstlist = 10 16 | ns_type = grid 17 | pbc = xyz 18 | rlist = 1.3 19 | 20 | ; Electrostatics 21 | coulombtype = PME-switch 22 | rcoulomb_switch = 0.88 23 | rcoulomb = 0.9 24 | 25 | ; van der Waals 26 | vdw_type = switch 27 | rvdw_switch = 0.85 28 | rvdw = 0.9 29 | 30 | ; Apply long range dispersion corrections for Energy and Pressure 31 | DispCorr = AllEnerPres 32 | 33 | ; Spacing for the PME/PPPM FFT grid 34 | fourierspacing = 0.12 35 | 36 | ; EWALD/PME/PPPM parameters 37 | pme_order = 4 38 | ewald_rtol = 1e-05 39 | ewald_geometry = 3d 40 | epsilon_surface = 0 41 | optimize_fft = yes 42 | 43 | ; Temperature coupling 44 | tcoupl = nose-hoover 45 | nsttcouple = 10 46 | tc_grps = System 47 | tau_t = 1.0 48 | ref_t = 300 49 | 50 | ; Pressure coupling is on for NPT 51 | pcoupl = no 52 | 53 | gen_vel = yes 54 | gen_temp = 300 55 | gen_seed = -1 56 | 57 | ; options for bonds 58 | constraints = h-bonds 59 | 60 | ; Type of constraint algorithm 61 | constraint_algorithm = shake 62 | shake_tol = 1e-05 63 | 64 | ; Free energy calculation 65 | free_energy = expanded 66 | calc_lambda_neighbors = -1 67 | sc_alpha = 0.5 68 | sc_power = 1 69 | sc_sigma = 0.5 70 | couple_moltype = MOL 71 | couple_lambda0 = vdw-q 72 | couple_lambda1 = none 73 | couple_intramol = no 74 | init_lambda_state = 0 75 | nstdhdl = 10 76 | dhdl_print_energy = total 77 | 78 | ; Seed for Monte Carlo in lambda space 79 | lmc_seed = -1 80 | symmetrized_transition_matrix = no 81 | nst_transition_matrix = 100000 82 | wl_scale = 0.8 83 | wl_ratio = 0.7 84 | init_wl_delta = 10 85 | 86 | ; expanded ensemble variables 87 | nstexpanded = 10 88 | lmc_stats = wang-landau 89 | lmc_move = metropolized-gibbs 90 | lmc_weights_equil = wl-delta 91 | weight_equil_wl_delta = 0.001 92 | wl_oneovert = yes 93 | 94 | ; lambda-states = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 95 | 96 | coul_lambdas = 0.0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 97 | vdw_lambdas = 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.2 0.3 0.4 0.45 0.5 0.55 0.6 0.63 0.66 0.69 0.72 0.75 0.78 0.81 0.84 0.88 0.92 1.0 98 | 99 | ; PULL CODE 100 | pull = yes 101 | pull_ngroups = 2 102 | pull_ncoords = 1 103 | pull_group1_name = HOS 104 | pull_group2_name = MOL 105 | pull_pbc_ref_prev_step_com = yes 106 | 107 | pull_coord1_groups = 1 2 108 | pull_coord1_type = umbrella 109 | pull_coord1_geometry = distance 110 | pull_coord1_dim = Y Y Y 111 | pull_coord1_origin = 0.0 0.0 0.0 112 | pull_coord1_vec = 0.0 0.0 0.0 113 | pull_coord1_start = yes 114 | pull_coord1_init = 0 115 | pull_coord1_rate = 0 116 | pull_coord1_k = 0 117 | pull_coord1_kB = 1000 118 | pull_nstfout = 400000 119 | pull_nstxout = 1000 120 | pull_print_ref_value = yes 121 | 122 | restraint_lambdas = 0.0 0.0 0.0 0.0 0.0 0.0 0.01 0.05 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 0.95 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 123 | 124 | -------------------------------------------------------------------------------- /ensemble_md/data/CB7-10/solvent/fixed_weight.mdp: -------------------------------------------------------------------------------- 1 | ; Run control 2 | integrator = md-vv 3 | tinit = 0 4 | dt = 0.002 5 | nsteps = 100000000 6 | nstcomm = 10 7 | 8 | ; Output control 9 | nstlog = 1000 10 | nstcalcenergy = 10 11 | nstenergy = 1000 12 | nstxout_compressed = 1000 13 | 14 | ; Neighborsearching and short-range nonbonded interactions 15 | nstlist = 10 16 | ns_type = grid 17 | pbc = xyz 18 | rlist = 1.3 19 | 20 | ; Electrostatics 21 | coulombtype = PME-switch 22 | rcoulomb_switch = 0.88 23 | rcoulomb = 0.9 24 | 25 | ; van der Waals 26 | vdw_type = switch 27 | rvdw_switch = 0.85 28 | rvdw = 0.9 29 | 30 | ; Apply long range dispersion corrections for Energy and Pressure 31 | DispCorr = AllEnerPres 32 | 33 | ; Spacing for the PME/PPPM FFT grid 34 | fourierspacing = 0.12 35 | 36 | ; EWALD/PME/PPPM parameters 37 | pme_order = 4 38 | ewald_rtol = 1e-05 39 | ewald_geometry = 3d 40 | epsilon_surface = 0 41 | optimize_fft = yes 42 | 43 | ; Temperature coupling 44 | tcoupl = nose-hoover 45 | nsttcouple = 10 46 | tc_grps = System 47 | tau_t = 1.0 48 | ref_t = 300 49 | 50 | ; Pressure coupling is on for NPT 51 | pcoupl = no 52 | 53 | gen_vel = yes 54 | gen_temp = 300 55 | gen_seed = -1 56 | 57 | ; options for bonds 58 | constraints = h-bonds 59 | 60 | ; Type of constraint algorithm 61 | constraint_algorithm = shake 62 | shake_tol = 1e-05 63 | 64 | ; Free energy calculation 65 | free_energy = expanded 66 | calc_lambda_neighbors = -1 67 | sc_alpha = 0.5 68 | sc_power = 1 69 | sc_sigma = 0.5 70 | couple_moltype = MOL 71 | couple_lambda0 = vdw-q 72 | couple_lambda1 = none 73 | couple_intramol = no 74 | init_lambda_state = 0 75 | nstdhdl = 100 76 | dhdl_print_energy = total 77 | 78 | ; Seed for Monte Carlo in lambda space 79 | symmetrized_transition_matrix = no 80 | nst_transition_matrix = 100000 81 | ; wl-scale = 0.8 82 | ; wl-ratio = 0.7 83 | ; init-wl-delta = 10 84 | 85 | ; expanded ensemble variables 86 | nstexpanded = 100 87 | lmc_stats = no 88 | lmc_move = metropolized-gibbs 89 | ;lmc-weights-equil = wl-delta 90 | ;weight-equil-wl-delta = 0.001 91 | ;wl-oneovert = yes 92 | 93 | ; lambda-states = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 94 | 95 | coul_lambdas = 0.0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 96 | vdw_lambdas = 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.2 0.3 0.4 0.45 0.5 0.55 0.6 0.63 0.66 0.69 0.72 0.75 0.78 0.81 0.84 0.88 0.92 1.0 97 | init-lambda-weights = 0.00000 55.63283 108.13573 157.81659 204.80788 249.23383 291.08643 330.39716 367.13321 401.40417 433.17010 462.48328 489.42587 513.87347 535.99670 555.89661 573.47333 588.85785 601.93536 612.66479 620.99158 622.88019 624.55402 626.15314 627.59833 628.21405 628.75360 629.20660 629.44830 629.48224 629.39795 629.19000 628.76147 628.07434 627.10437 625.97278 624.83032 623.54248 622.61292 621.91095 98 | -------------------------------------------------------------------------------- /ensemble_md/data/CB7-10/solvent/ligand.top: -------------------------------------------------------------------------------- 1 | #include "amber03.ff/forcefield.itp" 2 | #include "/ocean/projects/bio230014p/wehs7661/EEXE_experiments/CB7-10/complex/Prep/Topology/itp_files/10atomtypes.itp" 3 | #include "/ocean/projects/bio230014p/wehs7661/EEXE_experiments/CB7-10/complex/Prep/Topology/itp_files/10_GMX.itp" 4 | #include "amber03.ff/tip3p.itp" 5 | #include "amber03.ff/ions.itp" 6 | 7 | 8 | [ system ] 9 | 10.acpype only with solvent in water 10 | 11 | [ molecules ] 12 | ; Compound #nmols 13 | MOL 1 14 | SOL 1691 15 | CL 3 16 | -------------------------------------------------------------------------------- /ensemble_md/data/CB7-10/solvent/weight_updating.mdp: -------------------------------------------------------------------------------- 1 | ; Run control 2 | integrator = md-vv 3 | tinit = 0 4 | dt = 0.002 5 | nsteps = 100000000 6 | nstcomm = 10 7 | 8 | ; Output control 9 | nstlog = 1000 10 | nstcalcenergy = 10 11 | nstenergy = 1000 12 | nstxout_compressed = 1000 13 | 14 | ; Neighborsearching and short-range nonbonded interactions 15 | nstlist = 10 16 | ns_type = grid 17 | pbc = xyz 18 | rlist = 1.3 19 | 20 | ; Electrostatics 21 | coulombtype = PME-switch 22 | rcoulomb_switch = 0.88 23 | rcoulomb = 0.9 24 | 25 | ; van der Waals 26 | vdw_type = switch 27 | rvdw_switch = 0.85 28 | rvdw = 0.9 29 | 30 | ; Apply long range dispersion corrections for Energy and Pressure 31 | DispCorr = AllEnerPres 32 | 33 | ; Spacing for the PME/PPPM FFT grid 34 | fourierspacing = 0.12 35 | 36 | ; EWALD/PME/PPPM parameters 37 | pme_order = 4 38 | ewald_rtol = 1e-05 39 | ewald_geometry = 3d 40 | epsilon_surface = 0 41 | optimize_fft = yes 42 | 43 | ; Temperature coupling 44 | tcoupl = nose-hoover 45 | nsttcouple = 10 46 | tc_grps = System 47 | tau_t = 1.0 48 | ref_t = 300 49 | 50 | ; Pressure coupling is on for NPT 51 | pcoupl = no 52 | 53 | gen_vel = yes 54 | gen_temp = 300 55 | gen_seed = -1 56 | 57 | ; options for bonds 58 | constraints = h-bonds 59 | 60 | ; Type of constraint algorithm 61 | constraint_algorithm = shake 62 | shake_tol = 1e-05 63 | 64 | ; Free energy calculation 65 | free_energy = expanded 66 | calc_lambda_neighbors = -1 67 | sc_alpha = 0.5 68 | sc_power = 1 69 | sc_sigma = 0.5 70 | couple_moltype = MOL 71 | couple_lambda0 = vdw-q 72 | couple_lambda1 = none 73 | couple_intramol = no 74 | init_lambda_state = 0 75 | nstdhdl = 100 76 | dhdl_print_energy = total 77 | 78 | ; Seed for Monte Carlo in lambda space 79 | symmetrized_transition_matrix = no 80 | nst_transition_matrix = 100000 81 | wl-scale = 0.8 82 | wl-ratio = 0.7 83 | init-wl-delta = 10 84 | 85 | ; expanded ensemble variables 86 | nstexpanded = 100 87 | lmc_stats = wang-landau 88 | lmc_move = metropolized-gibbs 89 | lmc-weights-equil = wl-delta 90 | weight-equil-wl-delta = 0.001 91 | wl-oneovert = yes 92 | 93 | ; lambda-states = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 94 | 95 | coul_lambdas = 0.0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 96 | vdw_lambdas = 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.2 0.3 0.4 0.45 0.5 0.55 0.6 0.63 0.66 0.69 0.72 0.75 0.78 0.81 0.84 0.88 0.92 1.0 97 | 98 | -------------------------------------------------------------------------------- /ensemble_md/data/README.md: -------------------------------------------------------------------------------- 1 | # Example simulation inputs used in the REXEE paper 2 | This directory contains example simulation inputs used in the simulations reported in our paper, including those for the anthracene and CB7-10 systems. The data here will not be included when the package is installed. Below is the structure of the `data` directory: 3 | 4 | ``` 5 | . 6 | ├── CB7-10 7 | │ ├── complex 8 | │ │ ├── complex.gro 9 | │ │ ├── complex.top 10 | │ │ ├── fixed_weight.mdp 11 | │ │ ├── itp_files 12 | │ │ │ ├── 10_GMX.itp 13 | │ │ │ ├── 10atomtypes.itp 14 | │ │ │ └── cucurbit_7_uril_GMX.itp 15 | │ │ ├── params.yaml 16 | │ │ └── weight_updating.mdp 17 | │ └── solvent 18 | │ ├── fixed_weight.mdp 19 | │ ├── ligand.gro 20 | │ ├── ligand.top 21 | │ └── weight_updating.mdp 22 | ├── README.md 23 | ├── anthracene 24 | │ ├── anthracene.gro 25 | │ ├── anthracene.top 26 | │ ├── fixed_weight.mdp 27 | │ ├── HREX.mdp 28 | │ ├── params.yaml 29 | │ └── weight_updating.mdp 30 | └── instruction.md 31 | 32 | 5 directories, 20 files 33 | ``` 34 | Here are some additional notes about the files: 35 | - For each system, the provided GRO and TOP files were used for all simulations. 36 | - The file `fixed_weight.mdp` was used for both fixed-weight EE and REXEE simulations for the anthracene system, and for the complex simulation of the CB7-10 system. Similarly, the file `weight_updating.mdp` was used for the weight-updating EE and REXEE simulations for the anthracene system, and for the complex simulation of the CB7-10 system. For the solvent leg of the CB7-10 system, only expanded ensemble simulations were performed. 37 | - The file `params.yaml` contains REXEE parameters and can be used for both fixed-weight or weight-updating simulations. Relevant parameters were varied between tests for different REXEE simulations reported in the paper. 38 | - For the CB7-10 system, the directory `itp_files` contains the ITP files referenced in `complex.top`, which is the topology file of the CB7-10 binding complex. 39 | - The file `instruction.mdp` is just a file generated by the cookiecutter and is irrelevant to the project. 40 | -------------------------------------------------------------------------------- /ensemble_md/data/anthracene/HREX.mdp: -------------------------------------------------------------------------------- 1 | ; Run control 2 | integrator = md-vv 3 | tinit = 0 4 | dt = 0.002 5 | nsteps = 12500000 ; 25 ns 6 | comm-mode = Linear 7 | nstcomm = 1 8 | nstfout = 0 9 | 10 | ; Output control 11 | nstlog = 1000 12 | nstcalcenergy = 1 13 | nstenergy = 1000 14 | nstxout-compressed = 1000 15 | 16 | ; Neighborsearching and short-range nonbonded interactions 17 | nstlist = 10 18 | pbc = xyz 19 | rlist = 1.0 20 | 21 | ; Electrostatics 22 | coulombtype = PME 23 | rcoulomb = 0.9 24 | 25 | ; van der Waals 26 | vdw-type = Cut-off 27 | vdw_modifier = Potential-switch 28 | rvdw-switch = 0.8 29 | rvdw = 0.9 30 | 31 | ; Apply long range dispersion corrections for Energy and Pressure 32 | DispCorr = AllEnerPres 33 | 34 | ; Spacing for the PME/PPPM FFT grid 35 | fourierspacing = 0.10 36 | 37 | ; EWALD/PME/PPPM parameters 38 | pme_order = 6 39 | ewald_rtol = 1e-06 40 | ewald_geometry = 3d 41 | epsilon_surface = 0 42 | 43 | ; Temperature coupling 44 | tcoupl = v-rescale 45 | tc_grps = System 46 | tau_t = 2.0 47 | ref_t = 300 48 | 49 | ; Pressure coupling is on for NPT 50 | pcoupl = no 51 | 52 | ; refcoord_scaling should do nothing since there are no position restraints. 53 | 54 | gen_vel = yes 55 | gen-temp = 300 56 | gen-seed = -1; need to randomize the seed each time. 57 | 58 | ; options for bonds 59 | constraints = h-bonds ; we only have C-H bonds here 60 | 61 | ; Type of constraint algorithm 62 | constraint-algorithm = lincs 63 | continuation = no 64 | 65 | ; Highest order in the expansion of the constraint coupling matrix 66 | lincs-order = 4 67 | lincs-iter = 2 68 | 69 | ; Free energy calculation 70 | free_energy = yes 71 | calc-lambda-neighbors = -1 72 | sc-alpha = 0.5 73 | sc-power = 1 74 | couple-moltype = COM 75 | couple-lambda0 = vdw 76 | couple-lambda1 = none 77 | couple-intramol = no 78 | init-lambda-state = 0 79 | 80 | nstdhdl = 100 81 | dhdl-print-energy = total 82 | 83 | ; Seed for Monte Carlo in lambda space 84 | ; lmc-seed = 1000 85 | ; lmc-gibbsdelta = -1 86 | ; lmc-forced-nstart = 0 87 | ; symmetrized-transition-matrix = no 88 | ; nst-transition-matrix = 100000 89 | ;wl-scale = 0.8 90 | ;wl-ratio = 0.8 91 | ;init-wl-delta = 0.5 92 | 93 | ; expanded ensemble variables 94 | ; nstexpanded = 10 95 | ; lmc-stats = no 96 | ; lmc-move = metropolized-gibbs 97 | ;lmc-weights-equil = wl-delta 98 | ; weight-equil-wl-delta = 0.001 99 | 100 | ; lambda-states = 1 2 3 4 5 6 7 8 101 | vdw-lambdas = 0.00 0.18 0.42 0.57 0.68 0.76 0.86 1.00 102 | -------------------------------------------------------------------------------- /ensemble_md/data/anthracene/fixed_weight.mdp: -------------------------------------------------------------------------------- 1 | ; Run control 2 | integrator = md-vv 3 | tinit = 0 4 | dt = 0.002 5 | nsteps = 100000000 6 | comm_mode = Linear 7 | nstcomm = 1 8 | nstfout = 0 9 | 10 | ; Output control 11 | nstlog = 1000 12 | nstcalcenergy = 1 13 | nstenergy = 1000 14 | nstxout_compressed = 1000 15 | 16 | ; Neighborsearching and short-range nonbonded interactions 17 | nstlist = 10 18 | pbc = xyz 19 | rlist = 1.0 20 | 21 | ; Electrostatics 22 | coulombtype = PME 23 | rcoulomb = 0.9 24 | 25 | ; van der Waals 26 | vdwtype = Cut-off 27 | vdw_modifier = Potential-switch 28 | rvdw_switch = 0.8 29 | rvdw = 0.9 30 | 31 | ; Apply long range dispersion corrections for Energy and Pressure 32 | DispCorr = AllEnerPres 33 | 34 | ; Spacing for the PME/PPPM FFT grid 35 | fourierspacing = 0.1 36 | 37 | ; EWALD/PME/PPPM parameters 38 | pme_order = 6 39 | ewald_rtol = 1e-06 40 | ewald_geometry = 3d 41 | epsilon_surface = 0 42 | 43 | ; Temperature coupling 44 | tcoupl = v-rescale 45 | tc_grps = System 46 | tau_t = 2.0 47 | ref_t = 300 48 | 49 | ; Pressure coupling is on for NPT 50 | pcoupl = no 51 | 52 | ; refcoord_scaling should do nothing since there are no position restraints. 53 | gen_vel = yes 54 | gen_temp = 300 55 | gen_seed = -1 56 | 57 | ; options for bonds 58 | constraints = h-bonds 59 | 60 | ; Type of constraint algorithm 61 | constraint_algorithm = lincs 62 | 63 | ; Highest order in the expansion of the constraint coupling matrix 64 | lincs_order = 4 65 | lincs_iter = 2 66 | continuation = no 67 | 68 | ; Free energy calculation 69 | free_energy = expanded 70 | calc_lambda_neighbors = -1 71 | sc_alpha = 0.5 72 | sc_power = 1 73 | couple_moltype = COM 74 | couple_lambda0 = vdw 75 | couple_lambda1 = none 76 | couple_intramol = no 77 | init_lambda_state = 0 78 | nstdhdl = 100 79 | dhdl_print_energy = total 80 | 81 | ; Seed for Monte Carlo in lambda space 82 | lmc_seed = -1 83 | lmc_gibbsdelta = -1 84 | lmc_forced_nstart = 0 85 | symmetrized_transition_matrix = no 86 | nst_transition_matrix = 100000 87 | ; wl-scale = 0.8 88 | ; wl-ratio = 0.8 89 | ; init-wl-delta = 0.5 90 | 91 | ; expanded ensemble variables 92 | nstexpanded = 100 93 | lmc_stats = no 94 | lmc_move = metropolized-gibbs 95 | ; lmc-weights-equil = wl-delta 96 | ; weight-equil-wl-delta = 0.001 97 | 98 | ; lambda-states = 1 2 3 4 5 6 7 8 99 | vdw_lambdas = 0.0 0.18 0.42 0.57 0.68 0.76 0.86 1.0 100 | init_lambda_weights = 0.0 4.32298 9.25799 11.45557 11.88643 10.43653 6.22252 3.39715 101 | -------------------------------------------------------------------------------- /ensemble_md/data/anthracene/params.yaml: -------------------------------------------------------------------------------- 1 | # Section 1: GROMACS executable 2 | gmx_executable: 'gmx' 3 | 4 | # Section 2: Simulation inputs 5 | gro: 'anthracene.gro' 6 | top: 'anthracene.top' 7 | mdp: 'expanded.mdp' 8 | 9 | # Section 2: EEXE parameters 10 | n_sim: 4 11 | n_iter: 12500 12 | s: 1 13 | nst_sim: 2000 14 | proposal: 'exhaustive' 15 | acceptance: 'metropolis' 16 | w_combine: 17 | N_cutoff: -1 18 | n_ex: 'N^3' 19 | runtime_args: {'-nt': '16', '-ntmpi': '1'} 20 | 21 | # Section 3: Output settings 22 | verbose: True 23 | n_ckpt: 100 24 | 25 | # Section 4: Data analysis 26 | msm: False 27 | free_energy: True 28 | df_spacing: 1 29 | df_method: "MBAR" 30 | err_method: 'bootstrap' 31 | n_bootstrap: 50 32 | seed: 0 33 | -------------------------------------------------------------------------------- /ensemble_md/data/anthracene/weight_updating.mdp: -------------------------------------------------------------------------------- 1 | ; Run control 2 | integrator = md-vv 3 | tinit = 0 4 | dt = 0.002 5 | nsteps = 100000000 6 | comm_mode = Linear 7 | nstcomm = 1 8 | nstfout = 0 9 | 10 | ; Output control 11 | nstlog = 1000 12 | nstcalcenergy = 1 13 | nstenergy = 1000 14 | nstxout_compressed = 1000 15 | 16 | ; Neighborsearching and short-range nonbonded interactions 17 | nstlist = 10 18 | pbc = xyz 19 | rlist = 1.0 20 | 21 | ; Electrostatics 22 | coulombtype = PME 23 | rcoulomb = 0.9 24 | 25 | ; van der Waals 26 | vdwtype = Cut-off 27 | vdw_modifier = Potential-switch 28 | rvdw_switch = 0.8 29 | rvdw = 0.9 30 | 31 | ; Apply long range dispersion corrections for Energy and Pressure 32 | DispCorr = AllEnerPres 33 | 34 | ; Spacing for the PME/PPPM FFT grid 35 | fourierspacing = 0.1 36 | 37 | ; EWALD/PME/PPPM parameters 38 | pme_order = 6 39 | ewald_rtol = 1e-06 40 | ewald_geometry = 3d 41 | epsilon_surface = 0 42 | 43 | ; Temperature coupling 44 | tcoupl = v-rescale 45 | tc_grps = System 46 | tau_t = 2.0 47 | ref_t = 300 48 | 49 | ; Pressure coupling is on for NPT 50 | pcoupl = no 51 | 52 | ; refcoord_scaling should do nothing since there are no position restraints. 53 | gen_vel = yes 54 | gen_temp = 300 55 | gen_seed = -1 56 | 57 | ; options for bonds 58 | constraints = h-bonds 59 | 60 | ; Type of constraint algorithm 61 | constraint_algorithm = lincs 62 | 63 | ; Highest order in the expansion of the constraint coupling matrix 64 | lincs_order = 4 65 | lincs_iter = 2 66 | continuation = no 67 | 68 | ; Free energy calculation 69 | free_energy = expanded 70 | calc_lambda_neighbors = -1 71 | sc_alpha = 0.5 72 | sc_power = 1 73 | couple_moltype = COM 74 | couple_lambda0 = vdw 75 | couple_lambda1 = none 76 | couple_intramol = no 77 | init_lambda_state = 0 78 | nstdhdl = 100 79 | dhdl_print_energy = total 80 | 81 | ; Seed for Monte Carlo in lambda space 82 | lmc_seed = -1 83 | lmc_gibbsdelta = -1 84 | lmc_forced_nstart = 0 85 | symmetrized_transition_matrix = no 86 | nst_transition_matrix = 100000 87 | wl_scale = 0.8 88 | wl_ratio = 0.8 89 | init_wl_delta = 0.5 90 | 91 | ; expanded ensemble variables 92 | nstexpanded = 100 93 | lmc_stats = wang-landau 94 | lmc_move = metropolized-gibbs 95 | lmc_weights_equil = wl-delta 96 | weight_equil_wl_delta = 0.001 97 | 98 | ; lambda-states = 1 2 3 4 5 6 7 8 99 | vdw_lambdas = 0.0 0.18 0.42 0.57 0.68 0.76 0.86 1.0 100 | -------------------------------------------------------------------------------- /ensemble_md/data/instruction.md: -------------------------------------------------------------------------------- 1 | # Sample Package Data 2 | 3 | This directory contains sample additional data you may want to include with your package. 4 | This is a place where non-code related additional information (such as data files, molecular structures, etc.) can 5 | go that you want to ship alongside your code. 6 | 7 | Please note that it is not recommended to place large files in your git directory. If your project requires files larger 8 | than a few megabytes in size it is recommended to host these files elsewhere. This is especially true for binary files 9 | as the `git` structure is unable to correctly take updates to these files and will store a complete copy of every version 10 | in your `git` history which can quickly add up. As a note most `git` hosting services like GitHub have a 1 GB per repository 11 | cap. 12 | 13 | ## Including package data 14 | 15 | Modify your package's `setup.py` file and the `setup()` command. Include the 16 | [`package_data`](http://setuptools.readthedocs.io/en/latest/setuptools.html#basic-use) keyword and point it at the 17 | correct files. 18 | 19 | ## Manifest 20 | 21 | * `look_and_say.dat`: first entries of the "Look and Say" integer series, sequence [A005150](https://oeis.org/A005150) 22 | 23 | --- 24 | Update: The file `look_and_say.dat` has been deleted as it was just an example data file. 25 | -------------------------------------------------------------------------------- /ensemble_md/tests/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | Empty init file in case you choose a package besides PyTest such as Nose which may look for such a file. 3 | """ 4 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/cluster.log: -------------------------------------------------------------------------------- 1 | Using linkage method for clustering 2 | Using RMSD cutoff 0.13 nm 3 | The RMSD ranges from 0.0236461 to 0.316756 nm 4 | Average RMSD is 0.182848 5 | Number of structures for matrix 56 6 | Energy of the matrix is 0.21062. 7 | 8 | Found 2 clusters 9 | 10 | Writing middle structure for each cluster to clusters_0.pdb 11 | 12 | cl. | #st rmsd | middle rmsd | cluster members 13 | 1 | 27 0.069 | 300 .055 | 0 178 184 186 300 302 304 14 | | | | 306 308 310 312 318 362 366 15 | | | | 370 372 374 376 378 380 382 16 | | | | 390 460 464 468 470 476 17 | 2 | 29 0.075 | 12092 .061 | 11910 11992 11996 12014 12054 12058 12062 18 | | | | 12064 12084 12092 12098 12100 12102 12104 19 | | | | 12106 12108 12110 12112 12114 12116 12118 20 | | | | 12120 12242 12262 12310 12318 12330 12334 21 | | | | 12340 22 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/coord_swap/A-B.top: -------------------------------------------------------------------------------- 1 | [ defaults ] 2 | ; nbfunc comb-rule gen-pairs fudgeLJ fudgeQQ 3 | 1 2 yes 0.5 0.83333333 4 | 5 | [ atomtypes ] 6 | ; name at.num mass charge ptype sigma epsilon 7 | ss 16 32.060000 0.00000000 A 0.35324134 1.1815616 8 | cc 6 12.010000 0.00000000 A 0.33152123 0.4133792 9 | nd 7 14.010000 0.00000000 A 0.33841679 0.3937144 10 | cd 6 12.010000 0.00000000 A 0.33152123 0.4133792 11 | c3 6 12.010000 0.00000000 A 0.33977095 0.4510352 12 | h4 1 1.008000 0.00000000 A 0.25363887 0.0673624 13 | hc 1 1.008000 0.00000000 A 0.2600177 0.0870272 14 | DUM_hc 1 0.000000 0.000000 A 0.000000 0.000000 15 | DUM_c3 6 0.000000 0.000000 A 0.000000 0.000000 16 | Na 11 22.99 0.0000 A 2.43928e-01 3.65846e-02 17 | Cl 17 35.45 0.0000 A 4.47766e-01 1.48913e-01 18 | OW 8 16.00 0.0000 A 3.15061e-01 6.36386e-01 19 | HW 1 1.008 0.0000 A 0.00000e+00 0.00000e+00 20 | 21 | #include "A-B.itp" 22 | 23 | #include "water_and_ions.itp" 24 | 25 | [ system ] 26 | ; Name 27 | Generic title in water 28 | 29 | [ molecules ] 30 | ; Compound #mols 31 | A2B 1 32 | SOL 679 33 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/coord_swap/B-C.top: -------------------------------------------------------------------------------- 1 | [ defaults ] 2 | ; nbfunc comb-rule gen-pairs fudgeLJ fudgeQQ 3 | 1 2 yes 0.5 0.83333333 4 | 5 | [ atomtypes ] 6 | ; name at.num mass charge ptype sigma epsilon 7 | ss 16 32.060000 0.00000000 A 0.35324134 1.1815616 8 | cc 6 12.010000 0.00000000 A 0.33152123 0.4133792 9 | nd 7 14.010000 0.00000000 A 0.33841679 0.3937144 10 | cd 6 12.010000 0.00000000 A 0.33152123 0.4133792 11 | c3 6 12.010000 0.00000000 A 0.33977095 0.4510352 12 | h4 1 1.008000 0.00000000 A 0.25363887 0.0673624 13 | hc 1 1.008000 0.00000000 A 0.2600177 0.0870272 14 | DUM_hc 1 0.000000 0.000000 A 0.000000 0.000000 15 | DUM_c3 6 0.000000 0.000000 A 0.000000 0.000000 16 | Na 11 22.99 0.0000 A 2.43928e-01 3.65846e-02 17 | Cl 17 35.45 0.0000 A 4.47766e-01 1.48913e-01 18 | OW 8 16.00 0.0000 A 3.15061e-01 6.36386e-01 19 | HW 1 1.008 0.0000 A 0.00000e+00 0.00000e+00 20 | 21 | #include "B-C.itp" 22 | 23 | #include "water_and_ions.itp" 24 | 25 | [ system ] 26 | ; Name 27 | Generic title in water 28 | 29 | [ molecules ] 30 | ; Compound #mols 31 | B2C 1 32 | SOL 679 33 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/coord_swap/C-D.top: -------------------------------------------------------------------------------- 1 | [ defaults ] 2 | ; nbfunc comb-rule gen-pairs fudgeLJ fudgeQQ 3 | 1 2 yes 0.5 0.83333333 4 | 5 | [ atomtypes ] 6 | ; name at.num mass charge ptype sigma epsilon 7 | ss 16 32.060000 0.00000000 A 0.35324134 1.1815616 8 | cc 6 12.010000 0.00000000 A 0.33152123 0.4133792 9 | nd 7 14.010000 0.00000000 A 0.33841679 0.3937144 10 | cd 6 12.010000 0.00000000 A 0.33152123 0.4133792 11 | c3 6 12.010000 0.00000000 A 0.33977095 0.4510352 12 | h4 1 1.008000 0.00000000 A 0.25363887 0.0673624 13 | hc 1 1.008000 0.00000000 A 0.2600177 0.0870272 14 | DUM_hc 1 0.000000 0.000000 A 0.000000 0.000000 15 | DUM_c3 6 0.000000 0.000000 A 0.000000 0.000000 16 | Na 11 22.99 0.0000 A 2.43928e-01 3.65846e-02 17 | Cl 17 35.45 0.0000 A 4.47766e-01 1.48913e-01 18 | OW 8 16.00 0.0000 A 3.15061e-01 6.36386e-01 19 | HW 1 1.008 0.0000 A 0.00000e+00 0.00000e+00 20 | 21 | #include "C-D.itp" 22 | 23 | #include "water_and_ions.itp" 24 | 25 | [ system ] 26 | ; Name 27 | Generic title in water 28 | 29 | [ molecules ] 30 | ; Compound #mols 31 | C2D 1 32 | SOL 679 33 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/coord_swap/D-E.top: -------------------------------------------------------------------------------- 1 | [ defaults ] 2 | ; nbfunc comb-rule gen-pairs fudgeLJ fudgeQQ 3 | 1 2 yes 0.5 0.83333333 4 | 5 | [ atomtypes ] 6 | ; name at.num mass charge ptype sigma epsilon 7 | ss 16 32.060000 0.00000000 A 0.35324134 1.1815616 8 | cc 6 12.010000 0.00000000 A 0.33152123 0.4133792 9 | nd 7 14.010000 0.00000000 A 0.33841679 0.3937144 10 | cd 6 12.010000 0.00000000 A 0.33152123 0.4133792 11 | c3 6 12.010000 0.00000000 A 0.33977095 0.4510352 12 | h4 1 1.008000 0.00000000 A 0.25363887 0.0673624 13 | hc 1 1.008000 0.00000000 A 0.2600177 0.0870272 14 | DUM_hc 1 0.000000 0.000000 A 0.000000 0.000000 15 | DUM_c3 6 0.000000 0.000000 A 0.000000 0.000000 16 | Na 11 22.99 0.0000 A 2.43928e-01 3.65846e-02 17 | Cl 17 35.45 0.0000 A 4.47766e-01 1.48913e-01 18 | OW 8 16.00 0.0000 A 3.15061e-01 6.36386e-01 19 | HW 1 1.008 0.0000 A 0.00000e+00 0.00000e+00 20 | 21 | #include "D-E.itp" 22 | 23 | #include "water_and_ions.itp" 24 | 25 | [ system ] 26 | ; Name 27 | Generic title in water 28 | 29 | [ molecules ] 30 | ; Compound #mols 31 | D2E 1 32 | SOL 679 33 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/coord_swap/E-F.top: -------------------------------------------------------------------------------- 1 | [ defaults ] 2 | ; nbfunc comb-rule gen-pairs fudgeLJ fudgeQQ 3 | 1 2 yes 0.5 0.83333333 4 | 5 | [ atomtypes ] 6 | ; name at.num mass charge ptype sigma epsilon 7 | ss 16 32.060000 0.00000000 A 0.35324134 1.1815616 8 | cc 6 12.010000 0.00000000 A 0.33152123 0.4133792 9 | nd 7 14.010000 0.00000000 A 0.33841679 0.3937144 10 | cd 6 12.010000 0.00000000 A 0.33152123 0.4133792 11 | c3 6 12.010000 0.00000000 A 0.33977095 0.4510352 12 | h4 1 1.008000 0.00000000 A 0.25363887 0.0673624 13 | hc 1 1.008000 0.00000000 A 0.2600177 0.0870272 14 | DUM_hc 1 0.000000 0.000000 A 0.000000 0.000000 15 | DUM_c3 6 0.000000 0.000000 A 0.000000 0.000000 16 | Na 11 22.99 0.0000 A 2.43928e-01 3.65846e-02 17 | Cl 17 35.45 0.0000 A 4.47766e-01 1.48913e-01 18 | OW 8 16.00 0.0000 A 3.15061e-01 6.36386e-01 19 | HW 1 1.008 0.0000 A 0.00000e+00 0.00000e+00 20 | 21 | #include "E-F.itp" 22 | 23 | #include "water_and_ions.itp" 24 | 25 | [ system ] 26 | ; Name 27 | Generic title in water 28 | 29 | [ molecules ] 30 | ; Compound #mols 31 | E2F 1 32 | SOL 679 33 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/coord_swap/atom_name_mapping.csv: -------------------------------------------------------------------------------- 1 | ,resname A,resname B,atomid A,atom name A,atomid B,atom name B 2 | 0,A2B,B2C,1,S1,1,S1 3 | 1,A2B,B2C,1,S1,1,S1 4 | 2,A2B,B2C,2,C2,2,C2 5 | 3,A2B,B2C,2,C2,2,C2 6 | 4,A2B,B2C,3,N3,3,N3 7 | 5,A2B,B2C,3,N3,3,N3 8 | 6,A2B,B2C,4,C4,4,C4 9 | 7,A2B,B2C,4,C4,4,C4 10 | 8,A2B,B2C,5,C5,5,C5 11 | 9,A2B,B2C,5,C5,5,C5 12 | 10,A2B,B2C,6,C6,6,C6 13 | 11,A2B,B2C,6,C6,6,C6 14 | 12,A2B,B2C,7,H1,8,H1 15 | 13,A2B,B2C,7,H1,8,H1 16 | 14,A2B,B2C,8,H2,9,H2 17 | 15,A2B,B2C,8,H2,9,H2 18 | 16,A2B,B2C,9,H3,10,H3 19 | 17,A2B,B2C,9,H3,10,H3 20 | 18,A2B,B2C,10,H4,11,H4 21 | 19,A2B,B2C,10,H4,11,H4 22 | 20,A2B,B2C,12,DC7,7,C7 23 | 21,A2B,B2C,13,HV5,12,H5 24 | 22,A2B,B2C,14,HV6,13,H6 25 | 23,A2B,B2C,15,HV7,14,H7 26 | 0,B2C,C2D,1,S1,1,S1 27 | 1,B2C,C2D,1,S1,1,S1 28 | 2,B2C,C2D,2,C2,2,C2 29 | 3,B2C,C2D,2,C2,2,C2 30 | 4,B2C,C2D,3,N3,3,N3 31 | 5,B2C,C2D,3,N3,3,N3 32 | 6,B2C,C2D,4,C4,4,C4 33 | 7,B2C,C2D,4,C4,4,C4 34 | 8,B2C,C2D,5,C5,5,C5 35 | 9,B2C,C2D,5,C5,5,C5 36 | 10,B2C,C2D,6,C6,6,C6 37 | 11,B2C,C2D,6,C6,6,C6 38 | 12,B2C,C2D,7,C7,7,C7 39 | 13,B2C,C2D,7,C7,7,C7 40 | 14,B2C,C2D,8,H1,9,H1 41 | 15,B2C,C2D,8,H1,9,H1 42 | 16,B2C,C2D,9,H2,10,H2 43 | 17,B2C,C2D,9,H2,10,H2 44 | 18,B2C,C2D,10,H3,11,H3 45 | 19,B2C,C2D,10,H3,11,H3 46 | 20,B2C,C2D,11,H4,12,H4 47 | 21,B2C,C2D,11,H4,12,H4 48 | 22,B2C,C2D,12,H5,19,HV5 49 | 23,B2C,C2D,13,H6,13,H6 50 | 24,B2C,C2D,13,H6,13,H6 51 | 25,B2C,C2D,14,H7,14,H7 52 | 26,B2C,C2D,14,H7,14,H7 53 | 27,B2C,C2D,15,DC8,8,C8 54 | 28,B2C,C2D,16,HV8,15,H8 55 | 29,B2C,C2D,17,HV9,16,H9 56 | 30,B2C,C2D,18,HV10,17,H10 57 | 0,C2D,D2E,1,S1,1,S1 58 | 1,C2D,D2E,1,S1,1,S1 59 | 2,C2D,D2E,2,C2,2,C2 60 | 3,C2D,D2E,2,C2,2,C2 61 | 4,C2D,D2E,3,N3,3,N3 62 | 5,C2D,D2E,3,N3,3,N3 63 | 6,C2D,D2E,4,C4,4,C4 64 | 7,C2D,D2E,4,C4,4,C4 65 | 8,C2D,D2E,5,C5,5,C5 66 | 9,C2D,D2E,5,C5,5,C5 67 | 10,C2D,D2E,6,C6,6,C6 68 | 11,C2D,D2E,6,C6,6,C6 69 | 12,C2D,D2E,7,C7,7,C7 70 | 13,C2D,D2E,7,C7,7,C7 71 | 14,C2D,D2E,8,C8,18,DC8 72 | 15,C2D,D2E,9,H1,9,H1 73 | 16,C2D,D2E,9,H1,9,H1 74 | 17,C2D,D2E,10,H2,10,H2 75 | 18,C2D,D2E,10,H2,10,H2 76 | 19,C2D,D2E,11,H3,11,H3 77 | 20,C2D,D2E,11,H3,11,H3 78 | 21,C2D,D2E,13,H6,13,H6 79 | 22,C2D,D2E,13,H6,13,H6 80 | 23,C2D,D2E,14,H7,14,H7 81 | 24,C2D,D2E,14,H7,14,H7 82 | 25,C2D,D2E,15,H8,19,HV8 83 | 26,C2D,D2E,16,H9,20,HV9 84 | 27,C2D,D2E,17,H10,21,HV10 85 | 28,C2D,D2E,18,DC9,8,C9 86 | 29,C2D,D2E,19,HV5,12,H5 87 | 30,C2D,D2E,20,HV11,15,H11 88 | 31,C2D,D2E,21,HV12,16,H12 89 | 32,C2D,D2E,22,HV13,17,H13 90 | 0,D2E,E2F,1,S1,1,S1 91 | 1,D2E,E2F,1,S1,1,S1 92 | 2,D2E,E2F,2,C2,2,C2 93 | 3,D2E,E2F,2,C2,2,C2 94 | 4,D2E,E2F,3,N3,3,N3 95 | 5,D2E,E2F,3,N3,3,N3 96 | 6,D2E,E2F,4,C4,4,C4 97 | 7,D2E,E2F,4,C4,4,C4 98 | 8,D2E,E2F,5,C5,5,C5 99 | 9,D2E,E2F,5,C5,5,C5 100 | 10,D2E,E2F,6,C6,6,C6 101 | 11,D2E,E2F,6,C6,6,C6 102 | 12,D2E,E2F,7,C7,7,C7 103 | 13,D2E,E2F,7,C7,7,C7 104 | 14,D2E,E2F,8,C9,9,C9 105 | 15,D2E,E2F,8,C9,9,C9 106 | 16,D2E,E2F,9,H1,10,H1 107 | 17,D2E,E2F,9,H1,10,H1 108 | 18,D2E,E2F,10,H2,11,H2 109 | 19,D2E,E2F,10,H2,11,H2 110 | 20,D2E,E2F,11,H3,12,H3 111 | 21,D2E,E2F,11,H3,12,H3 112 | 22,D2E,E2F,13,H6,13,H6 113 | 23,D2E,E2F,13,H6,13,H6 114 | 24,D2E,E2F,14,H7,14,H7 115 | 25,D2E,E2F,14,H7,14,H7 116 | 26,D2E,E2F,15,H11,18,H11 117 | 27,D2E,E2F,15,H11,18,H11 118 | 28,D2E,E2F,16,H12,19,H12 119 | 29,D2E,E2F,16,H12,19,H12 120 | 30,D2E,E2F,17,H13,20,H13 121 | 31,D2E,E2F,17,H13,20,H13 122 | 32,D2E,E2F,18,DC8,8,C8 123 | 33,D2E,E2F,19,HV8,15,H8 124 | 34,D2E,E2F,20,HV9,16,H9 125 | 35,D2E,E2F,21,HV10,17,H10 126 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/coord_swap/atom_name_mapping_alt.csv: -------------------------------------------------------------------------------- 1 | ,resname A,resname B,atomid A,atom name A,atomid B,atom name B 2 | 0,I2J,J2K,1,O,1,O 3 | 1,I2J,J2K,2,C1,2,C1 4 | 2,I2J,J2K,3,C2,3,C2 5 | 3,I2J,J2K,4,C3,4,C3 6 | 4,I2J,J2K,5,C4,5,C4 7 | 5,I2J,J2K,6,CV5,6,C5 8 | 6,I2J,J2K,7,CV6,7,C6 9 | 7,I2J,J2K,8,H1,10,H1 10 | 8,I2J,J2K,9,H2,11,H2 11 | 9,I2J,J2K,10,H3,12,H3 12 | 10,I2J,J2K,11,H4,13,H4 13 | 11,I2J,J2K,12,H5,14,H5 14 | 12,I2J,J2K,13,H6,15,H6 15 | 13,I2J,J2K,14,H7,16,H7 16 | 14,I2J,J2K,16,HV9,17,H9 17 | 15,I2J,J2K,17,HV10,18,H10 18 | 16,I2J,J2K,18,HV11,19,H11 19 | 17,I2J,J2K,19,HV12,20,H12 20 | 18,I2J,J2K,20,HV13,21,H13 -------------------------------------------------------------------------------- /ensemble_md/tests/data/coord_swap/broken_mol_1D.gro: -------------------------------------------------------------------------------- 1 | Generated with MDTraj, t= 1180.0 2 | 22 3 | 1C2D S1 1 0.081 2.020 0.959 4 | 1C2D C2 2 0.080 2.182 0.895 5 | 1C2D N3 3 2.728 2.263 0.929 6 | 1C2D C4 4 2.639 2.182 1.007 7 | 1C2D C5 5 2.684 2.059 1.040 8 | 1C2D C6 6 0.192 2.229 0.800 9 | 1C2D C7 7 0.273 2.338 0.873 10 | 1C2D C8 8 0.364 2.420 0.778 11 | 1C2D H1 9 2.548 2.232 1.037 12 | 1C2D H2 10 2.643 1.984 1.107 13 | 1C2D H3 11 0.260 2.146 0.777 14 | 1C2D H4 12 0.151 2.262 0.704 15 | 1C2D H6 13 0.329 2.289 0.953 16 | 1C2D H7 14 0.202 2.408 0.919 17 | 1C2D H8 15 0.338 2.526 0.787 18 | 1C2D H9 16 0.469 2.408 0.808 19 | 1C2D H10 17 0.356 2.400 0.670 20 | 1C2D DC9 18 0.126 2.276 0.672 21 | 1C2D HV5 19 0.342 2.383 0.801 22 | 1C2D HV11 20 0.206 2.272 0.597 23 | 1C2D HV12 21 0.072 2.369 0.688 24 | 1C2D HV13 22 0.047 2.207 0.641 25 | 2.74964 2.74964 2.74964 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 26 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/coord_swap/broken_mol_2D.gro: -------------------------------------------------------------------------------- 1 | Generated with MDTraj, t= 1180.0 2 | 22 3 | 1C2D S1 1 0.081 2.020 0.959 4 | 1C2D C2 2 0.080 2.182 0.895 5 | 1C2D N3 3 2.728 -0.486 0.929 6 | 1C2D C4 4 2.639 -0.567 1.007 7 | 1C2D C5 5 2.684 -0.690 1.040 8 | 1C2D C6 6 0.192 2.229 0.800 9 | 1C2D C7 7 0.273 2.338 0.873 10 | 1C2D C8 8 0.364 2.420 0.778 11 | 1C2D H1 9 2.548 -0.517 1.037 12 | 1C2D H2 10 2.643 -0.765 1.107 13 | 1C2D H3 11 0.260 2.146 0.777 14 | 1C2D H4 12 0.151 2.262 0.704 15 | 1C2D H6 13 0.329 2.289 0.953 16 | 1C2D H7 14 0.202 2.408 0.919 17 | 1C2D H8 15 0.338 2.526 0.787 18 | 1C2D H9 16 0.469 2.408 0.808 19 | 1C2D H10 17 0.356 2.400 0.670 20 | 1C2D DC9 18 0.126 2.276 0.672 21 | 1C2D HV5 19 0.342 2.383 0.801 22 | 1C2D HV11 20 0.206 2.272 0.597 23 | 1C2D HV12 21 0.072 2.369 0.688 24 | 1C2D HV13 22 0.047 2.207 0.641 25 | 2.74964 2.74964 2.74964 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 26 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/coord_swap/broken_mol_3D.gro: -------------------------------------------------------------------------------- 1 | Generated with MDTraj, t= 1180.0 2 | 22 3 | 1C2D S1 1 0.081 2.020 0.959 4 | 1C2D C2 2 0.080 2.182 0.895 5 | 1C2D N3 3 2.728 -0.486 -1.821 6 | 1C2D C4 4 2.639 -0.567 -1.742 7 | 1C2D C5 5 2.684 -0.690 -1.710 8 | 1C2D C6 6 0.192 2.229 0.800 9 | 1C2D C7 7 0.273 2.338 0.873 10 | 1C2D C8 8 0.364 2.420 0.778 11 | 1C2D H1 9 2.548 -0.517 -1.712 12 | 1C2D H2 10 2.643 -0.765 -1.642 13 | 1C2D H3 11 0.260 2.146 0.777 14 | 1C2D H4 12 0.151 2.262 0.704 15 | 1C2D H6 13 0.329 2.289 0.953 16 | 1C2D H7 14 0.202 2.408 0.919 17 | 1C2D H8 15 0.338 2.526 0.787 18 | 1C2D H9 16 0.469 2.408 0.808 19 | 1C2D H10 17 0.356 2.400 0.670 20 | 1C2D DC9 18 0.126 2.276 0.672 21 | 1C2D HV5 19 0.342 2.383 0.801 22 | 1C2D HV11 20 0.206 2.272 0.597 23 | 1C2D HV12 21 0.072 2.369 0.688 24 | 1C2D HV13 22 0.047 2.207 0.641 25 | 2.74964 2.74964 2.74964 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 26 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/coord_swap/df_atom_swap.csv: -------------------------------------------------------------------------------- 1 | ,Name,Swap,X Coordinates,Y Coordinates,Z Coordinates 2 | 0,DC10,A2B,2.620028018951416,1.4039266109466553,2.7885406017303467 3 | 1,HV14,A2B,2.6782684326171875,1.4648889303207397,2.8585996627807617 4 | 2,HV15,A2B,2.6814215183258057,1.3405863046646118,2.723461389541626 5 | 3,HV16,A2B,2.5583088397979736,1.3370097875595093,2.849609851837158 6 | 4,HV4,A2B,2.3651702404022217,1.4678034782409668,2.8239071369171143 7 | 5,H5,B2A,0.09260530769824982,1.6340194940567017,0.33550316095352173 8 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/coord_swap/extract_missing.csv: -------------------------------------------------------------------------------- 1 | ,Name,Swap 2 | 0,DC10,A2B 3 | 1,HV14,A2B 4 | 2,HV15,A2B 5 | 3,HV16,A2B 6 | 4,HV4,A2B 7 | 5,H5,B2A 8 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/coord_swap/find_R2D_D2R_miss.csv: -------------------------------------------------------------------------------- 1 | ,Name,Atom Name Number,Element,Direction,Swap,File line,Final Type 2 | 0,C8,8,C,R2D,B2A,9,dummy 3 | 1,H8,8,H,R2D,B2A,16,dummy 4 | 2,H9,9,H,R2D,B2A,17,dummy 5 | 3,H10,10,H,R2D,B2A,18,dummy 6 | 4,DC10,10,C,miss,B2A,22,dummy 7 | 5,HV4,4,H,miss,B2A,23,dummy 8 | 6,HV14,14,H,miss,B2A,24,dummy 9 | 7,HV15,15,H,miss,B2A,25,dummy 10 | 8,HV16,16,H,miss,B2A,26,dummy 11 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/coord_swap/fixed_mol.gro: -------------------------------------------------------------------------------- 1 | Generated with MDTraj, t= 1180.0 2 | 22 3 | 1C2D S1 1 0.081 2.020 0.959 4 | 1C2D C2 2 0.080 2.182 0.895 5 | 1C2D N3 3 -0.022 2.263 0.929 6 | 1C2D C4 4 -0.111 2.182 1.007 7 | 1C2D C5 5 -0.066 2.059 1.040 8 | 1C2D C6 6 0.192 2.229 0.800 9 | 1C2D C7 7 0.273 2.338 0.873 10 | 1C2D C8 8 0.364 2.420 0.778 11 | 1C2D H1 9 -0.202 2.232 1.037 12 | 1C2D H2 10 -0.106 1.984 1.107 13 | 1C2D H3 11 0.260 2.146 0.777 14 | 1C2D H4 12 0.151 2.262 0.704 15 | 1C2D H6 13 0.329 2.289 0.953 16 | 1C2D H7 14 0.202 2.408 0.919 17 | 1C2D H8 15 0.338 2.526 0.787 18 | 1C2D H9 16 0.469 2.408 0.808 19 | 1C2D H10 17 0.356 2.400 0.670 20 | 1C2D DC9 18 0.126 2.276 0.672 21 | 1C2D HV5 19 0.342 2.383 0.801 22 | 1C2D HV11 20 0.206 2.272 0.597 23 | 1C2D HV12 21 0.072 2.369 0.688 24 | 1C2D HV13 22 0.047 2.207 0.641 25 | 2.74964 2.74964 2.74964 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 26 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/coord_swap/output_C.gro: -------------------------------------------------------------------------------- 1 | Protein in water 2 | 20 3 | 1I2J O 1 5.0178633 5.0861511 2.3039777 0.000 0.000 0.000 4 | 1I2J C1 2 5.0669813 5.1162391 2.4148340 0.000 0.000 0.000 5 | 1I2J C2 3 5.1077561 5.2565174 2.4496574 0.000 0.000 0.000 6 | 1I2J C3 4 5.2587881 5.2859540 2.4412327 0.000 0.000 0.000 7 | 1I2J C4 5 5.3591075 5.2250023 2.5407770 0.000 0.000 0.000 8 | 1I2J CV5 6 5.5062575 5.2488542 2.5104387 0.000 0.000 0.000 9 | 1I2J CV6 7 5.5972819 5.1913514 2.6236000 0.000 0.000 0.000 10 | 1I2J H1 8 5.0745454 5.0403323 2.4957850 0.000 0.000 0.000 11 | 1I2J H2 9 5.0574427 5.3244996 2.3799186 0.000 0.000 0.000 12 | 1I2J H3 10 5.0872545 5.2717891 2.5562549 0.000 0.000 0.000 13 | 1I2J H4 11 5.2938070 5.2602854 2.3405781 0.000 0.000 0.000 14 | 1I2J H5 12 5.2689505 5.3949656 2.4466877 0.000 0.000 0.000 15 | 1I2J H6 13 5.3415952 5.1181459 2.5578511 0.000 0.000 0.000 16 | 1I2J H7 14 5.3279910 5.2632923 2.6386654 0.000 0.000 0.000 17 | 1I2J H8 15 5.4598603 5.2642937 2.5228457 0.000 0.000 0.000 18 | 1I2J HV9 16 5.5342641 5.2074494 2.4128795 0.000 0.000 0.000 19 | 1I2J HV10 17 5.5161352 5.3577881 2.5176795 0.000 0.000 0.000 20 | 1I2J HV11 18 5.7024980 5.1972165 2.5934060 0.000 0.000 0.000 21 | 1I2J HV12 19 5.5721917 5.0852852 2.6353056 0.000 0.000 0.000 22 | 1I2J HV13 20 5.5869956 5.2427306 2.7198856 0.000 0.000 0.000 23 | 7.06448 7.06448 4.99534 0.00000 0.00000 0.00000 0.00000 3.53224 3.53224 24 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/coord_swap/output_D.gro: -------------------------------------------------------------------------------- 1 | Protein in water 2 | 26 3 | 1J2K O 1 5.2959995 4.9607749 2.2057471 0.000 0.000 0.000 4 | 1J2K C1 2 5.2068386 4.9330115 2.2914972 0.000 0.000 0.000 5 | 1J2K C2 3 5.2367387 4.9143419 2.4417152 0.000 0.000 0.000 6 | 1J2K C3 4 5.2398911 5.0504713 2.5114973 0.000 0.000 0.000 7 | 1J2K C4 5 5.1193190 5.1436095 2.4967213 0.000 0.000 0.000 8 | 1J2K C5 6 4.9869380 5.0971766 2.5653727 0.000 0.000 0.000 9 | 1J2K C6 7 4.8737483 5.2045283 2.5777171 0.000 0.000 0.000 10 | 1J2K CV7 8 4.9173560 5.3224721 2.6708064 0.000 0.000 0.000 11 | 1J2K CV8 9 4.8892651 5.2975769 2.8232861 0.000 0.000 0.000 12 | 1J2K H1 10 5.1009479 4.9196019 2.2602017 0.000 0.000 0.000 13 | 1J2K H2 11 5.1548157 4.8529458 2.4809031 0.000 0.000 0.000 14 | 1J2K H3 12 5.3377852 4.8729944 2.4515378 0.000 0.000 0.000 15 | 1J2K H4 13 5.2431130 5.0364089 2.6201639 0.000 0.000 0.000 16 | 1J2K H5 14 5.3289862 5.1061687 2.4802494 0.000 0.000 0.000 17 | 1J2K H6 15 5.0852985 5.1476994 2.3925943 0.000 0.000 0.000 18 | 1J2K H7 16 5.1522965 5.2398167 2.5376258 0.000 0.000 0.000 19 | 1J2K H9 17 4.9479947 5.0155101 2.5034811 0.000 0.000 0.000 20 | 1J2K H10 18 4.9996490 5.0553794 2.6659110 0.000 0.000 0.000 21 | 1J2K H11 19 4.7855296 5.1634459 2.6281769 0.000 0.000 0.000 22 | 1J2K H12 20 4.8469658 5.2264252 2.4736989 0.000 0.000 0.000 23 | 1J2K H13 21 4.9016318 5.2935543 2.6352797 0.000 0.000 0.000 24 | 1J2K HV14 22 5.0237503 5.3428926 2.6540799 0.000 0.000 0.000 25 | 1J2K HV15 23 4.8513546 5.4049191 2.6414304 0.000 0.000 0.000 26 | 1J2K HV16 24 4.9280410 5.2066817 2.8707309 0.000 0.000 0.000 27 | 1J2K HV17 25 4.9172225 5.3824968 2.8867180 0.000 0.000 0.000 28 | 1J2K HV18 26 4.7816763 5.2949572 2.8441288 0.000 0.000 0.000 29 | 6.81420 6.81420 4.81837 0.00000 0.00000 0.00000 0.00000 3.40710 3.40710 30 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/coord_swap/params.yaml: -------------------------------------------------------------------------------- 1 | n_sim: 5 # Number of replica simulations 2 | n_iter: 1000 # Number of iterations 3 | s: 9 # Shift in λ ranges [e.g. s = 2 if λ_2 = [2, 3, 4] & λ_3 = [4, 5, 6]] 4 | nst_sim: 10000 # Number of simulation steps for each homogeneous replica 5 | proposal: 'exhaustive' 6 | mdp: 'expanded.mdp' 7 | add_swappables: [[6, 9], [6, 10], [6, 11], [7, 9], [7, 10], [7, 11], [8, 9], [8, 10], [8, 11], [15, 18], [15, 19], [15, 20], [16, 18], [16, 19], [16, 20], [17, 18], [17, 19], [17, 20], [24, 27], [24, 28], [24, 29], [25, 27], [25, 28], [25, 29], [26, 27], [26, 28], [26, 29], [33, 36], [33, 37], [33, 38], [34, 36], [34, 37], [34, 38], [35, 36], [35, 37], [35, 38], [42, 45], [42, 46], [42, 47], [43, 45], [43, 46], [43, 47], [44, 45], [44, 46], [44, 47]] 8 | n_ckpt: 25 9 | N_cutoff: -1 10 | w_combine: False # The method for combining weights. Choices include "None" [unspecified], exp_avg, ... 11 | runtime_args: {'-ntomp': '5', '-ntmpi': '1'} 12 | grompp_args: {'-maxwarn': '2'} 13 | gro: ['A-B.gro', 'B-C.gro', 'C-D.gro', 'D-E.gro', 'E-F.gro'] 14 | top: ['A-B.top', 'B-C.top', 'C-D.top', 'D-E.top', 'E-F.top'] 15 | gmx_executable: 'gmx' 16 | verbose: True 17 | modify_coords: 'default' 18 | resname_list: ['A2B', 'B2C', 'C2D', 'D2E', 'E2F'] 19 | swap_rep_pattern: [[[0,1],[1,0]], [[1,1],[2,0]], [[2,1],[3,0]], [[3,1],[4,0]]] 20 | 21 | msm: False 22 | free_energy: True 23 | df_spacing: 1 24 | df_method: "MBAR" 25 | err_method: "propagate" 26 | n_bootstrap: 50 27 | seed : null 28 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/coord_swap/residue_connect.csv: -------------------------------------------------------------------------------- 1 | ,Resname,Connect 1,Connect 2,State 1,State 2 2 | 0,A2B,S1,C2,-1,-1 3 | 1,A2B,S1,C5,-1,-1 4 | 2,A2B,C2,N3,-1,-1 5 | 3,A2B,C2,C6,-1,-1 6 | 4,A2B,N3,C4,-1,-1 7 | 5,A2B,C4,C5,-1,-1 8 | 6,A2B,C4,H1,-1,-1 9 | 7,A2B,C5,H2,-1,-1 10 | 8,A2B,C6,H3,-1,-1 11 | 9,A2B,C6,H4,-1,-1 12 | 10,A2B,C6,H17,-1,1 13 | 11,A2B,C6,DC7,-1,0 14 | 12,A2B,DC7,HV5,0,0 15 | 13,A2B,DC7,HV6,0,0 16 | 14,A2B,DC7,HV7,0,0 17 | 0,B2C,S1,C2,-1,-1 18 | 1,B2C,S1,C5,-1,-1 19 | 2,B2C,C2,N3,-1,-1 20 | 3,B2C,C2,C6,-1,-1 21 | 4,B2C,N3,C4,-1,-1 22 | 5,B2C,C4,C5,-1,-1 23 | 6,B2C,C6,C7,-1,-1 24 | 7,B2C,C4,H1,-1,-1 25 | 8,B2C,C5,H2,-1,-1 26 | 9,B2C,C6,H3,-1,-1 27 | 10,B2C,C6,H4,-1,-1 28 | 11,B2C,C7,H5,-1,1 29 | 12,B2C,C7,H6,-1,-1 30 | 13,B2C,C7,H7,-1,-1 31 | 14,B2C,C7,DC8,-1,0 32 | 15,B2C,DC8,HV8,0,0 33 | 16,B2C,DC8,HV9,0,0 34 | 17,B2C,DC8,HV10,0,0 35 | 0,C2D,S1,C2,-1,-1 36 | 1,C2D,S1,C5,-1,-1 37 | 2,C2D,C2,N3,-1,-1 38 | 3,C2D,C2,C6,-1,-1 39 | 4,C2D,N3,C4,-1,-1 40 | 5,C2D,C4,C5,-1,-1 41 | 6,C2D,C6,C7,-1,-1 42 | 7,C2D,C7,C8,-1,1 43 | 8,C2D,C4,H1,-1,-1 44 | 9,C2D,C5,H2,-1,-1 45 | 10,C2D,C6,H3,-1,-1 46 | 11,C2D,C6,H4,-1,1 47 | 12,C2D,C7,H6,-1,-1 48 | 13,C2D,C7,H7,-1,-1 49 | 14,C2D,C8,H8,1,1 50 | 15,C2D,C8,H9,1,1 51 | 16,C2D,C8,H10,1,1 52 | 17,C2D,C6,DC9,-1,0 53 | 18,C2D,C7,HV5,-1,0 54 | 19,C2D,DC9,HV11,0,0 55 | 20,C2D,DC9,HV12,0,0 56 | 21,C2D,DC9,HV13,0,0 57 | 0,D2E,S1,C2,-1,-1 58 | 1,D2E,S1,C5,-1,-1 59 | 2,D2E,C2,N3,-1,-1 60 | 3,D2E,C2,C6,-1,-1 61 | 4,D2E,N3,C4,-1,-1 62 | 5,D2E,C4,C5,-1,-1 63 | 6,D2E,C6,C7,-1,-1 64 | 7,D2E,C6,C9,-1,-1 65 | 8,D2E,C4,H1,-1,-1 66 | 9,D2E,C5,H2,-1,-1 67 | 10,D2E,C6,H3,-1,-1 68 | 11,D2E,C7,H5,-1,1 69 | 12,D2E,C7,H6,-1,-1 70 | 13,D2E,C7,H7,-1,-1 71 | 14,D2E,C9,H11,-1,-1 72 | 15,D2E,C9,H12,-1,-1 73 | 16,D2E,C9,H13,-1,-1 74 | 17,D2E,C7,DC8,-1,0 75 | 18,D2E,DC8,HV8,0,0 76 | 19,D2E,DC8,HV9,0,0 77 | 20,D2E,DC8,HV10,0,0 78 | 0,E2F,S1,C2,-1,-1 79 | 1,E2F,S1,C5,-1,-1 80 | 2,E2F,C2,N3,-1,-1 81 | 3,E2F,C2,C6,-1,-1 82 | 4,E2F,N3,C4,-1,-1 83 | 5,E2F,C4,C5,-1,-1 84 | 6,E2F,C6,C7,-1,-1 85 | 7,E2F,C6,C9,-1,1 86 | 8,E2F,C7,C8,-1,-1 87 | 9,E2F,C4,H1,-1,-1 88 | 10,E2F,C5,H2,-1,-1 89 | 11,E2F,C6,H3,-1,-1 90 | 12,E2F,C7,H6,-1,1 91 | 13,E2F,C7,H7,-1,-1 92 | 14,E2F,C8,H8,-1,-1 93 | 15,E2F,C8,H9,-1,-1 94 | 16,E2F,C8,H10,-1,-1 95 | 17,E2F,C9,H11,1,1 96 | 18,E2F,C9,H12,1,1 97 | 19,E2F,C9,H13,1,1 98 | 20,E2F,C7,DC10,-1,0 99 | 21,E2F,C6,HV4,-1,0 100 | 22,E2F,DC10,HV14,0,0 101 | 23,E2F,DC10,HV15,0,0 102 | 24,E2F,DC10,HV16,0,0 103 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/coord_swap/residue_connect_alt.csv: -------------------------------------------------------------------------------- 1 | ,Resname,Connect 1,Connect 2,State 1,State 2 2 | 0,I2J,O,C1,-1,-1 3 | 1,I2J,C1,C2,-1,-1 4 | 2,I2J,C1,H1,-1,-1 5 | 3,I2J,C2,C3,-1,-1 6 | 4,I2J,C2,H2,-1,-1 7 | 5,I2J,C2,H3,-1,-1 8 | 6,I2J,C3,C4,-1,-1 9 | 7,I2J,C3,H4,-1,-1 10 | 8,I2J,C3,H5,-1,-1 11 | 9,I2J,C4,CV5,-1,0 12 | 10,I2J,C4,H6,-1,-1 13 | 11,I2J,C4,H7,-1,-1 14 | 12,I2J,C4,H8,-1,1 15 | 13,I2J,CV5,CV6,0,0 16 | 14,I2J,CV5,HV9,0,0 17 | 15,I2J,CV5,HV10,0,0 18 | 16,I2J,CV6,HV11,0,0 19 | 17,I2J,CV6,HV12,0,0 20 | 18,I2J,CV6,HV13,0,0 21 | 0,J2K,O,C1,-1,-1 22 | 1,J2K,C1,C2,-1,-1 23 | 2,J2K,C1,H1,-1,-1 24 | 3,J2K,C2,C3,-1,-1 25 | 4,J2K,C2,H2,-1,-1 26 | 5,J2K,C2,H3,-1,-1 27 | 6,J2K,C3,C4,-1,-1 28 | 7,J2K,C3,H4,-1,-1 29 | 8,J2K,C3,H5,-1,-1 30 | 9,J2K,C4,C5,-1,-1 31 | 10,J2K,C4,H6,-1,-1 32 | 11,J2K,C4,H7,-1,-1 33 | 12,J2K,C5,C6,-1,-1 34 | 13,J2K,C5,H9,-1,-1 35 | 14,J2K,C5,H10,-1,-1 36 | 15,J2K,C6,CV7,-1,0 37 | 16,J2K,C6,H11,-1,-1 38 | 17,J2K,C6,H12,-1,-1 39 | 18,J2K,C6,H13,-1,1 40 | 19,J2K,CV7,CV8,0,0 41 | 20,J2K,CV7,HV14,0,0 42 | 21,J2K,CV7,HV15,0,0 43 | 22,J2K,CV8,HV16,0,0 44 | 23,J2K,CV8,HV17,0,0 45 | 24,J2K,CV8,HV18,0,0 46 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/coord_swap/residue_swap_map.csv: -------------------------------------------------------------------------------- 1 | ,Swap A,Swap B,Anchor Atom Name A,Anchor Atom Name B,Alignment Atom A,Alignment Atom B,Angle Atom A,Angle Atom B,Missing Atom Name 2 | 0,A2B,B2C,C6,C6,DC7,C7,C2,C2,H17 3 | 0,B2C,A2B,C7,DC7,H5,HV5,C6,C6,DC8 HV8 HV9 HV10 4 | 0,C2D,B2C,C6,C6,H4,H4,C2,C2,DC9 HV11 HV12 HV13 5 | 0,C2D,D2E,C6,C6,DC9,C9,C2,C2,H4 6 | 0,D2E,E2F,C7,C7,DC8,C8,C6,C6,H5 7 | 0,E2F,D2E,C7,C7,H6,H6,H7,H7,DC10 HV14 HV15 HV16 8 | 1,E2F,D2E,C6,C6,C9,C9,C2,C2,HV4 9 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/coord_swap/residue_swap_map_alt.csv: -------------------------------------------------------------------------------- 1 | ,Swap A,Swap B,Anchor Atom Name A,Anchor Atom Name B,Alignment Atom A,Alignment Atom B,Angle Atom A,Angle Atom B,Missing Atom Name 2 | 0,I2J,J2K,C4,C4,CV5,C5,C3,C3,H8 3 | 0,J2K,I2J,C6,CV6,H13,HV13,C5,CV5,CV7 CV8 HV14 HV15 HV16 HV17 HV18 4 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/coord_swap/sim_A/traj.trr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wehs7661/ensemble_md/5b7c6cd8b82f05fad7b2215ac0bfefc73e6e11e7/ensemble_md/tests/data/coord_swap/sim_A/traj.trr -------------------------------------------------------------------------------- /ensemble_md/tests/data/coord_swap/sim_B/traj.trr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wehs7661/ensemble_md/5b7c6cd8b82f05fad7b2215ac0bfefc73e6e11e7/ensemble_md/tests/data/coord_swap/sim_B/traj.trr -------------------------------------------------------------------------------- /ensemble_md/tests/data/coord_swap/sim_C/confout_backup.gro: -------------------------------------------------------------------------------- 1 | Protein in water 2 | 20 3 | 1I2J O 1 5.296 4.961 2.206 -0.3686 0.3444 -0.1300 4 | 1I2J C1 2 5.207 4.933 2.291 -0.2138 0.6863 0.8740 5 | 1I2J C2 3 5.237 4.914 2.442 -0.1897 -0.2629 -0.3198 6 | 1I2J C3 4 5.240 5.050 2.511 0.0930 -0.1426 -0.5485 7 | 1I2J C4 5 5.119 5.144 2.497 -0.4009 0.0472 0.1513 8 | 1I2J CV5 6 4.987 5.097 2.565 0.0543 0.1262 0.2260 9 | 1I2J CV6 7 4.874 5.205 2.578 0.9132 -0.3592 -0.0244 10 | 1I2J H1 8 5.101 4.920 2.260 -0.0394 2.2014 -0.3651 11 | 1I2J H2 9 5.155 4.853 2.481 0.6299 -1.3414 -0.2963 12 | 1I2J H3 10 5.338 4.873 2.452 -0.7490 -1.7256 -0.7240 13 | 1I2J H4 11 5.243 5.036 2.620 0.3644 -4.1763 -1.0785 14 | 1I2J H5 12 5.329 5.106 2.480 1.2963 -0.7568 1.7877 15 | 1I2J H6 13 5.085 5.148 2.393 1.4662 -0.9628 -0.4984 16 | 1I2J H7 14 5.152 5.240 2.538 1.5196 -0.0617 -1.1409 17 | 1I2J H8 15 5.039 5.112 2.564 0.5121 0.3042 1.3585 18 | 1I2J HV9 16 4.948 5.016 2.503 1.3134 0.4465 -0.9890 19 | 1I2J HV10 17 5.000 5.055 2.666 -1.9137 -1.0343 -0.0077 20 | 1I2J HV11 18 4.786 5.163 2.628 0.6018 -0.1023 -0.3595 21 | 1I2J HV12 19 4.847 5.226 2.474 -1.7867 0.1242 0.7725 22 | 1I2J HV13 20 4.902 5.294 2.635 -0.4338 0.4864 -0.6797 23 | 6.81420 6.81420 4.81837 0.00000 0.00000 0.00000 0.00000 3.40710 3.40710 24 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/coord_swap/sim_C/traj.trr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wehs7661/ensemble_md/5b7c6cd8b82f05fad7b2215ac0bfefc73e6e11e7/ensemble_md/tests/data/coord_swap/sim_C/traj.trr -------------------------------------------------------------------------------- /ensemble_md/tests/data/coord_swap/sim_D/confout_backup.gro: -------------------------------------------------------------------------------- 1 | Protein in water 2 | 26 3 | 1J2K O 1 5.018 5.086 2.304 0.1745 0.5890 -0.1758 4 | 1J2K C1 2 5.067 5.116 2.415 -0.2291 -0.2305 0.2929 5 | 1J2K C2 3 5.108 5.257 2.450 -0.5244 -0.1122 0.0621 6 | 1J2K C3 4 5.259 5.286 2.441 -0.2349 -0.3584 -0.6547 7 | 1J2K C4 5 5.359 5.225 2.541 0.2423 -0.3055 0.0402 8 | 1J2K C5 6 5.506 5.249 2.510 -0.3200 0.3017 0.4568 9 | 1J2K C6 7 5.597 5.191 2.624 0.0359 0.2685 0.3027 10 | 1J2K CV7 8 5.569 5.267 2.757 0.3904 -0.1473 0.0832 11 | 1J2K CV8 9 5.468 5.387 2.743 -0.2666 -0.4050 -0.2619 12 | 1J2K H1 10 5.075 5.040 2.496 -2.0271 -2.3023 -1.4818 13 | 1J2K H2 11 5.057 5.324 2.380 -0.3736 2.2840 2.2892 14 | 1J2K H3 12 5.087 5.272 2.556 -0.2398 -0.7192 0.2037 15 | 1J2K H4 13 5.294 5.260 2.341 -1.2738 0.9886 -1.3596 16 | 1J2K H5 14 5.269 5.395 2.447 0.5557 -0.5016 0.7326 17 | 1J2K H6 15 5.342 5.118 2.558 1.2103 -0.6961 -1.4115 18 | 1J2K H7 16 5.328 5.263 2.639 3.1608 0.2336 0.7570 19 | 1J2K H9 17 5.534 5.207 2.413 3.0729 0.7986 1.2199 20 | 1J2K H10 18 5.516 5.358 2.518 0.7974 0.2313 -0.0088 21 | 1J2K H11 19 5.702 5.197 2.593 -0.1152 0.8857 -0.1042 22 | 1J2K H12 20 5.572 5.085 2.635 1.2100 0.1165 1.4424 23 | 1J2K H13 21 5.587 5.243 2.720 0.8334 -1.0594 1.0965 24 | 1J2K HV14 22 5.533 5.195 2.832 0.0741 -1.2105 -1.1017 25 | 1J2K HV15 23 5.665 5.313 2.783 -0.1626 1.8344 -1.3512 26 | 1J2K HV16 24 5.369 5.369 2.698 0.8667 -0.4618 -2.6960 27 | 1J2K HV17 25 5.451 5.441 2.837 -0.9029 1.3592 -1.3936 28 | 1J2K HV18 26 5.510 5.468 2.683 1.4067 0.5534 2.2296 29 | 7.06448 7.06448 4.99534 0.00000 0.00000 0.00000 0.00000 3.53224 3.53224 30 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/coord_swap/sim_D/traj.trr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wehs7661/ensemble_md/5b7c6cd8b82f05fad7b2215ac0bfefc73e6e11e7/ensemble_md/tests/data/coord_swap/sim_D/traj.trr -------------------------------------------------------------------------------- /ensemble_md/tests/data/dhdl/dhdl_1.xvg: -------------------------------------------------------------------------------- 1 | # This file was created Sat Jul 16 01:25:52 2022 2 | # Created by: 3 | # :-) GROMACS - gmx mdrun, 2021.4-plumed-2.8.0 (-: 4 | # 5 | # Executable: /usr/local/gromacs/bin/gmx 6 | # Data prefix: /usr/local/gromacs 7 | # Working dir: /Users/Wei-TseHsu/Documents/Life_in_CU_Bouler/Research_in_Shirts_Lab/EEXE_experiments/Devop/gmxapi.commandline.cli7_i0_1 8 | # Command line: 9 | # gmx mdrun -s /Users/Wei-TseHsu/Documents/Life_in_CU_Bouler/Research_in_Shirts_Lab/EEXE_experiments/Devop/sim_1/iteration_3/sys_EE.tpr 10 | # gmx mdrun is part of G R O M A C S: 11 | # 12 | # Gyas ROwers Mature At Cryogenic Speed 13 | # 14 | @ title "dH/d\xl\f{} and \xD\f{}H" 15 | @ xaxis label "Time (ps)" 16 | @ yaxis label "dH/d\xl\f{} and \xD\f{}H (kJ/mol [\xl\f{}]\S-1\N)" 17 | @TYPE xy 18 | @ subtitle "T = 298 (K) " 19 | @ view 0.15, 0.15, 0.75, 0.85 20 | @ legend on 21 | @ legend box on 22 | @ legend loctype view 23 | @ legend 0.78, 0.8 24 | @ legend length 2 25 | @ s0 legend "Thermodynamic state" 26 | @ s1 legend "Total Energy (kJ/mol)" 27 | @ s2 legend "dH/d\xl\f{} coul-lambda = 0.7500" 28 | @ s3 legend "dH/d\xl\f{} vdw-lambda = 0.0000" 29 | @ s4 legend "\xD\f{}H \xl\f{} to (0.2500, 0.0000)" 30 | @ s5 legend "\xD\f{}H \xl\f{} to (0.5000, 0.0000)" 31 | @ s6 legend "\xD\f{}H \xl\f{} to (0.7500, 0.0000)" 32 | @ s7 legend "\xD\f{}H \xl\f{} to (1.0000, 0.0000)" 33 | @ s8 legend "\xD\f{}H \xl\f{} to (1.0000, 0.2500)" 34 | @ s9 legend "\xD\f{}H \xl\f{} to (1.0000, 0.5000)" 35 | 3.0000 2 -27183.803 10.516105 13.521134 -5.2580582 -2.6290312 0.0000000 2.6290303 7.1515537 13.055855 36 | 3.0200 2 -27221.084 0.41716814 8.4614964 -0.20857564 -0.10429342 0.0000000 0.10429342 3.7821021 9.3263354 37 | 3.0400 5 -27183.082 -4.4711275 24.005161 -5.3917155 -6.5094562 -7.6272396 -8.7450239 -5.4172277 0.0000000 38 | 3.0600 3 -27127.293 -6.2822499 -1.7345515 4.7116767 3.1411275 1.5705642 0.0000000 2.1322230 7.1679130 39 | 3.0800 5 -27120.609 -11.479121 24.465910 -0.26040173 -3.1301939 -5.9999746 -8.8697543 -5.5118531 0.0000000 40 | 3.1000 3 -27072.283 -8.9043903 11.397145 6.6782796 4.4521921 2.2260958 0.0000000 4.2344080 10.156946 41 | 3.1200 4 -27080.754 -2.8122802 22.595055 -2.7055469 -3.4086149 -4.1116854 -4.8147559 0.0000000 6.1591214 42 | 3.1400 2 -27105.982 -5.3729453 12.808243 2.6864837 1.3432401 0.0000000 -1.3432391 3.0961764 9.1022059 43 | 3.1600 4 -27149.816 -7.0674615 22.181530 0.65443790 -1.1124147 -2.8792765 -4.6461379 0.0000000 6.1002359 44 | 3.1800 3 -27163.477 -1.1390572 12.978476 0.85430387 0.56952431 0.28476192 0.0000000 4.5176700 10.618920 45 | 3.2000 3 -27115.473 -6.8955512 18.906580 5.1716784 3.4477856 1.7238926 0.0000000 5.5223709 12.073246 46 | 3.2200 3 -27119.734 -4.6016736 19.933889 3.4512549 2.3008293 1.1504142 0.0000000 5.7161969 12.374678 47 | 3.2400 3 -27137.918 -8.3831892 20.589817 6.2873995 4.1915942 2.0957971 0.0000000 5.8407075 12.557402 48 | 3.2600 4 -27205.469 2.8831019 21.421886 -6.3462689 -5.6255206 -4.9047381 -4.1839579 0.0000000 6.0044232 49 | 3.2800 1 -27191.916 12.535753 -27.426214 -3.1339292 0.0000000 3.1339368 6.2678736 5.1715040 9.4974014 50 | 3.3000 5 -27118.262 7.6214929 22.727905 -11.756748 -9.8513489 -7.9459757 -6.0406025 -4.8236281 0.0000000 51 | 3.3200 4 -27077.307 -0.79848474 19.902792 -3.2269370 -3.4265656 -3.6261910 -3.8258146 0.0000000 5.6000346 52 | 3.3400 1 -27134.727 6.5946960 22.498621 -1.6487263 0.0000000 1.6486739 3.2973473 9.2703050 15.665076 53 | 3.3600 0 -27128.086 17.624868 23.692499 0.0000000 4.4062045 8.8124223 13.218640 19.378850 25.814580 54 | 3.3800 0 -27104.594 2.6027265 23.417219 0.0000000 0.65069401 1.3013746 1.9520548 8.0505200 14.424511 55 | 3.4000 2 -27049.285 9.4470396 22.971575 -4.7235332 -2.3617570 0.0000000 2.3617579 8.3467698 14.615974 56 | 3.4200 1 -27114.875 22.070965 17.943922 -5.5177785 0.0000000 5.5177382 11.035476 16.139227 21.990116 57 | 3.4400 0 -27155.059 20.686451 10.457433 0.0000000 5.1716781 10.343290 15.514901 19.425331 24.815436 58 | 3.4600 0 -27087.990 16.226412 5.8539977 0.0000000 4.0566272 8.1132254 12.169821 15.402480 20.570572 59 | 3.4800 0 -27082.205 13.160449 15.342838 0.0000000 3.2901438 6.5802493 9.8703557 14.599506 20.373695 60 | 3.5000 1 -27034.789 9.1228456 19.740738 -2.2807356 0.0000000 2.2807010 4.5614035 10.003444 16.080164 61 | 3.5200 3 -27058.912 7.6064634 15.848183 -5.7048721 -3.8032381 -1.9016188 0.0000000 4.7787744 10.564608 62 | 3.5400 2 -27061.219 13.179233 5.9020581 -6.5896390 -3.2948103 0.0000000 3.2948117 6.5477975 11.788730 63 | 3.5600 1 -27038.680 28.309826 10.948339 -7.0774489 0.0000000 7.0774568 14.154912 18.202856 23.796023 64 | 3.5800 0 -27057.820 17.139071 17.883165 0.0000000 4.2847977 8.5695660 12.854334 18.076755 24.230133 65 | 3.6000 1 -27026.230 23.058828 21.556728 -5.7646970 0.0000000 5.7647116 11.529425 17.390894 23.852892 66 | 3.6200 0 -27048.785 13.421849 20.734299 0.0000000 3.3554478 6.7109127 10.066378 15.794277 22.213173 67 | 3.6400 0 -27089.199 20.395506 15.229333 0.0000000 5.0988282 10.197708 15.296587 20.068425 26.061736 68 | 3.6600 2 -27091.920 12.277301 6.6672482 -6.1386580 -3.0693222 0.0000000 3.0693241 6.3681818 11.697078 69 | 3.6800 2 -27056.164 13.944200 1.4666251 -6.9721129 -3.4860494 0.0000000 3.4860490 5.9122550 10.881228 70 | 3.7000 5 -27004.869 9.7270250 20.854984 -10.976807 -8.5450426 -6.1132820 -3.6815207 -4.0505863 0.0000000 71 | 3.7200 3 -27067.121 8.4805508 -38.000420 -6.3603836 -4.2402849 -2.1201425 0.0000000 -3.1546044 0.14423945 72 | 3.7400 5 -27057.955 0.43132883 21.624653 -3.6869615 -3.5790914 -3.4712620 -3.3634332 -4.1529234 0.0000000 73 | 3.7600 3 -27099.297 5.1325002 3.9945614 -3.8493358 -2.5662439 -1.2831224 0.0000000 3.0718140 8.6569896 74 | 3.7800 2 -27063.266 6.8512340 12.080480 -3.4256287 -1.7128087 0.0000000 1.7128087 6.1408476 12.343272 75 | 3.8000 3 -27044.826 6.4389429 3.3595564 -4.8292471 -3.2194917 -1.6097460 0.0000000 3.0155802 8.6489147 76 | 3.8200 4 -27141.408 0.99095303 15.668505 -2.3665078 -2.1187319 -1.8709958 -1.6232586 0.0000000 5.1707204 77 | 3.8400 5 -27217.338 5.9447908 23.075363 -9.6869664 -8.2007800 -6.7145937 -5.2284073 -4.6500642 0.0000000 78 | 3.8600 2 -27201.852 3.0669115 -17.819208 -1.5334599 -0.76673422 0.0000000 0.76673434 0.34920848 4.6010294 79 | 3.8800 0 -27230.199 5.3936062 -7.6395473 0.0000000 1.3484054 2.6968075 4.0452085 5.2374635 10.152822 80 | 3.9000 4 -27234.779 -0.33176112 11.668367 0.19481092 0.11188261 0.028943158 -0.053996949 0.0000000 4.5365451 81 | 3.9200 5 -27227.572 -8.2308102 22.894846 2.5515621 0.49383486 -1.5638651 -3.6215645 -4.3598545 0.0000000 82 | 3.9400 3 -27256.027 -8.4877577 -19.770096 6.3658122 4.2438757 2.1219381 0.0000000 -0.43802848 4.1566980 83 | 3.9600 4 -27277.781 0.62781328 23.077715 -4.9004017 -4.7434649 -4.5865131 -4.4295602 0.0000000 6.5618884 84 | 3.9800 1 -27256.410 9.1837435 20.394253 -2.2959371 0.0000000 2.2959374 4.5918728 10.720802 18.117647 85 | 4.0000 1 -27335.402 5.6179891 21.115717 -1.4045356 0.0000000 1.4045001 2.8089978 11.0623788 16.527695 86 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/dhdl/dhdl_2.xvg: -------------------------------------------------------------------------------- 1 | # This file was created Sat Jul 16 01:25:54 2022 2 | # Created by: 3 | # :-) GROMACS - gmx mdrun, 2021.4-plumed-2.8.0 (-: 4 | # 5 | # Executable: /usr/local/gromacs/bin/gmx 6 | # Data prefix: /usr/local/gromacs 7 | # Working dir: /Users/Wei-TseHsu/Documents/Life_in_CU_Bouler/Research_in_Shirts_Lab/EEXE_experiments/Devop/gmxapi.commandline.cli7_i0_2 8 | # Command line: 9 | # gmx mdrun -s /Users/Wei-TseHsu/Documents/Life_in_CU_Bouler/Research_in_Shirts_Lab/EEXE_experiments/Devop/sim_2/iteration_3/sys_EE.tpr 10 | # gmx mdrun is part of G R O M A C S: 11 | # 12 | # Green Red Orange Magenta Azure Cyan Skyblue 13 | # 14 | @ title "dH/d\xl\f{} and \xD\f{}H" 15 | @ xaxis label "Time (ps)" 16 | @ yaxis label "dH/d\xl\f{} and \xD\f{}H (kJ/mol [\xl\f{}]\S-1\N)" 17 | @TYPE xy 18 | @ subtitle "T = 298 (K) " 19 | @ view 0.15, 0.15, 0.75, 0.85 20 | @ legend on 21 | @ legend box on 22 | @ legend loctype view 23 | @ legend 0.78, 0.8 24 | @ legend length 2 25 | @ s0 legend "Thermodynamic state" 26 | @ s1 legend "Total Energy (kJ/mol)" 27 | @ s2 legend "dH/d\xl\f{} coul-lambda = 1.0000" 28 | @ s3 legend "dH/d\xl\f{} vdw-lambda = 0.7500" 29 | @ s4 legend "\xD\f{}H \xl\f{} to (0.5000, 0.0000)" 30 | @ s5 legend "\xD\f{}H \xl\f{} to (0.7500, 0.0000)" 31 | @ s6 legend "\xD\f{}H \xl\f{} to (1.0000, 0.0000)" 32 | @ s7 legend "\xD\f{}H \xl\f{} to (1.0000, 0.2500)" 33 | @ s8 legend "\xD\f{}H \xl\f{} to (1.0000, 0.5000)" 34 | @ s9 legend "\xD\f{}H \xl\f{} to (1.0000, 0.7500)" 35 | 3.0000 5 -27066.070 2.2885616 29.188013 -15.650834 -15.078689 -14.506544 -12.328935 -6.8889875 0.0000000 36 | 3.0200 5 -27090.812 0.014321264 29.339554 -15.090539 -15.086947 -15.083356 -12.572349 -6.9610230 0.0000000 37 | 3.0400 4 -27119.416 7.5857735 25.941677 -11.474304 -9.5778591 -7.6814138 -5.5747151 0.0000000 6.9962360 38 | 3.0600 5 -27126.984 3.1208625 29.995449 -17.172646 -16.392421 -15.612195 -12.968082 -7.1442786 0.0000000 39 | 3.0800 4 -27124.934 1.9185073 26.622805 -9.0521826 -8.5725580 -8.0929353 -5.7467101 0.0000000 7.1702758 40 | 3.1000 5 -27106.871 3.0018201 31.139648 -18.324374 -17.573922 -16.823470 -13.633945 -7.4463691 0.0000000 41 | 3.1200 3 -27159.742 -8.8216715 25.684875 -0.90811796 -3.1135338 -5.3189527 0.0000000 7.0790113 14.958853 42 | 3.1400 2 -27204.641 -1.5267037 16.670961 0.76336242 0.38168050 0.0000000 5.4959515 12.665898 20.618093 43 | 3.1600 4 -27166.211 4.6852150 29.223427 -13.322284 -12.150979 -10.979673 -6.6360154 0.0000000 7.7027814 44 | 3.1800 4 -27194.619 -3.3551998 24.484385 -2.8997744 -3.7385784 -4.5773820 -4.7681412 0.0000000 6.9052674 45 | 3.2000 5 -27206.457 -2.6931620 27.719698 -1.2986922 -1.9719867 -2.6452810 -8.5297345 -5.9843427 0.0000000 46 | 3.2200 5 -27160.785 -11.633493 24.909124 15.905395 12.997015 10.088634 -4.4122803 -4.8342672 0.0000000 47 | 3.2400 5 -27184.992 -14.342340 22.857815 26.820642 23.235052 19.649461 -1.4492715 -4.0099045 0.0000000 48 | 3.2600 5 -27182.914 2.6743367 21.914793 28.810966 29.479552 30.148139 0.75888839 -3.5435572 0.0000000 49 | 3.2800 4 -27207.551 1.8515381 1.8059807 36.529066 36.991952 37.454842 5.0954386 0.0000000 3.2489804 50 | 3.3000 5 -27236.488 9.5819950 21.048759 27.363185 29.758689 32.154192 1.6965463 -3.2229803 0.0000000 51 | 3.3200 4 -27203.848 5.9163280 1.5141265 28.653145 30.132231 31.611318 4.6895096 0.0000000 3.0958801 52 | 3.3400 5 -27232.215 7.2057281 18.825752 32.764173 34.565599 36.367023 4.2336329 -2.3733438 0.0000000 53 | 3.3600 5 -27256.844 -9.4213018 18.182280 50.632474 48.277148 45.921821 6.1363004 -2.0115492 0.0000000 54 | 3.3800 5 -27228.984 -1.8854984 16.332129 71.079988 70.608603 70.137224 10.695745 -1.0838550 0.0000000 55 | 3.4000 5 -27239.975 5.0884867 12.475084 149.77616 151.04828 152.32041 21.694441 0.92216357 0.0000000 56 | 3.4200 5 -27213.883 -3.4190264 10.322022 235.03979 234.18504 233.33029 28.955175 2.1208769 0.0000000 57 | 3.4400 4 -27206.289 4.0026155 -27.857243 192.97329 193.97395 194.97462 22.481983 0.0000000 -0.81304020 58 | 3.4600 4 -27207.762 2.7839823 -15.139111 108.29141 108.98741 109.68340 14.903610 0.0000000 1.0206058 59 | 3.4800 5 -27187.844 0.17795470 13.161830 188.86872 188.91321 188.95769 25.124064 1.1530465 0.0000000 60 | 3.5000 5 -27243.678 6.6123228 6.0917144 382.86860 384.52166 386.17475 45.268751 4.7685610 0.0000000 61 | 3.5200 5 -27210.129 15.326454 2.1375847 511.81106 515.64266 519.47427 57.717186 6.8662197 0.0000000 62 | 3.5400 5 -27184.090 7.4230056 3.4286020 408.83116 410.68694 412.54269 51.147967 6.0265191 0.0000000 63 | 3.5600 5 -27149.104 4.4778996 4.1643877 335.86910 336.98857 338.10805 45.999233 5.4293147 0.0000000 64 | 3.5800 4 -27111.439 -10.167533 -53.276279 249.67218 247.13029 244.58840 34.981487 0.0000000 -4.5659936 65 | 3.6000 5 -27133.557 -1.5602468 5.6420188 231.42470 231.03463 230.64456 37.457791 4.3334148 0.0000000 66 | 3.6200 5 -27142.947 -0.34374481 4.0485859 354.65413 354.56821 354.48226 45.777134 5.3657441 0.0000000 67 | 3.6400 5 -27161.262 1.7481940 9.6325836 207.59134 208.02839 208.46544 30.231686 2.5358777 0.0000000 68 | 3.6600 4 -27189.719 -11.731565 -26.193146 151.13204 148.19916 145.26627 20.344132 0.0000000 -0.69191001 69 | 3.6800 4 -27165.646 0.38171276 -26.251076 142.94055 143.03598 143.13141 20.136948 0.0000000 -0.74084244 70 | 3.7000 4 -27143.760 -2.4204054 -27.822540 171.30845 170.70335 170.09824 21.577361 0.0000000 -0.89246199 71 | 3.7200 4 -27132.238 -11.876295 -19.614223 132.25485 129.28577 126.31670 16.989433 0.0000000 0.30569219 72 | 3.7400 4 -27123.381 3.1784267 -6.2179203 62.289995 63.084605 63.879218 9.6102384 0.0000000 2.2780120 73 | 3.7600 4 -27119.805 -12.788867 0.63150668 56.168251 52.971042 49.773831 6.5391314 0.0000000 3.3756566 74 | 3.7800 3 -27082.213 -23.280359 -51.235138 45.691456 39.871365 34.051279 0.0000000 -4.3858443 -0.26251534 75 | 3.8000 3 -27087.271 13.380464 -17.537611 7.5470719 10.892194 14.237317 0.0000000 0.34225170 5.9146472 76 | 3.8200 3 -27123.111 -1.7054796 3.2237074 4.9170865 4.4907180 4.0643496 0.0000000 3.4793590 10.144044 77 | 3.8400 3 -27104.137 -2.9906185 7.6581640 3.8215133 3.0738568 2.3262008 0.0000000 4.2305542 11.216233 78 | 3.8600 3 -27068.355 5.3075356 1.3931316 2.3784427 3.7053257 5.0322082 0.0000000 3.2173689 9.7963970 79 | 3.8800 0 -27053.922 6.4138217 -34.582222 0.0000000 1.6034561 3.2069122 0.31806079 4.1338222 10.891221 80 | 3.9000 3 -27055.854 6.8841491 -4.3334179 4.1639028 5.8849397 7.6059767 0.0000000 2.2990165 8.5012407 81 | 3.9200 1 -27030.146 -3.6522789 -82.327408 0.91307446 0.0000000 -0.91307494 -10.650391 -9.1069672 -3.2603545 82 | 3.9400 3 -27069.020 -2.4874635 6.2179074 3.7704971 3.1486348 2.5267720 0.0000000 3.8387112 10.433725 83 | 3.9600 3 -27047.559 -2.6149580 12.227133 1.2528101 0.59907249 -0.054663230 0.0000000 4.7963371 11.730797 84 | 3.9800 0 -27082.232 1.5256007 -29.688343 0.0000000 0.38139725 0.76279356 -0.88348205 3.5793515 10.446874 85 | 4.0000 0 -27048.127 2.5899830 5.9215608 0.0000000 0.64750007 1.2950001 4.9963939 11.396201 19.029695 86 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/dhdl/simulation_example/sim_0/iteration_0/dhdl.xvg: -------------------------------------------------------------------------------- 1 | # This file was created Mon Jun 19 04:08:38 2023 2 | # Created by: 3 | # :-) GROMACS - gmx mdrun, 2022.5-dev-20230428-fdf57150ad (-: 4 | # 5 | # Executable: /jet/home/wehs7661/pkgs/gromacs/2022.5/bin/gmx 6 | # Data prefix: /jet/home/wehs7661/pkgs/gromacs/2022.5 7 | # Working dir: /ocean/projects/cts160011p/wehs7661/EEXE_experiments/Anthracene/EEXE/fixed_weight/Redo/test_7/sim_0/iteration_0 8 | # Command line: 9 | # gmx mdrun -s sys_EE.tpr -nt 16 -ntmpi 1 10 | # gmx mdrun is part of G R O M A C S: 11 | # 12 | # Good ROcking Metal Altar for Chronical Sinners 13 | # 14 | @ title "dH/d\xl\f{} and \xD\f{}H" 15 | @ xaxis label "Time (ps)" 16 | @ yaxis label "dH/d\xl\f{} and \xD\f{}H (kJ/mol [\xl\f{}]\S-1\N)" 17 | @TYPE xy 18 | @ subtitle "T = 300 (K) " 19 | @ view 0.15, 0.15, 0.75, 0.85 20 | @ legend on 21 | @ legend box on 22 | @ legend loctype view 23 | @ legend 0.78, 0.8 24 | @ legend length 2 25 | @ s0 legend "Thermodynamic state" 26 | @ s1 legend "Total Energy (kJ/mol)" 27 | @ s2 legend "dH/d\xl\f{} vdw-lambda = 0.0000" 28 | @ s3 legend "\xD\f{}H \xl\f{} to 0.0000" 29 | @ s4 legend "\xD\f{}H \xl\f{} to 0.1800" 30 | @ s5 legend "\xD\f{}H \xl\f{} to 0.4200" 31 | @ s6 legend "\xD\f{}H \xl\f{} to 0.5700" 32 | @ s7 legend "\xD\f{}H \xl\f{} to 0.6800" 33 | 0.0000 0 -34639.617 83.426201 0.0000000 15.922017 38.982765 53.939058 65.034603 34 | 0.2000 0 -34647.918 84.723366 0.0000000 16.173352 39.565220 54.708024 65.929419 35 | 0.4000 0 -34582.289 76.256203 0.0000000 15.148900 38.068222 53.157510 64.402216 36 | 0.6000 0 -34527.555 91.817261 0.0000000 17.089436 40.979859 56.205354 67.420424 37 | 0.8000 0 -34478.152 44.958286 0.0000000 10.781056 30.639942 44.784307 55.639494 38 | 1.0000 1 -34552.145 74.036446 -10.822186 0.0000000 20.521480 35.175168 46.409437 39 | 1.2000 0 -34500.996 57.441593 0.0000000 12.672887 34.211579 49.085054 60.368809 40 | 1.4000 0 -34486.180 73.066956 0.0000000 14.732327 37.610317 52.915281 64.404465 41 | 1.6000 0 -34489.156 63.685677 0.0000000 13.517728 35.662178 50.761228 62.166708 42 | 1.8000 1 -34485.453 48.051235 -3.2132767 0.0000000 17.011135 31.147446 42.432867 43 | 2.0000 1 -34621.762 70.074333 -9.7361954 0.0000000 19.743919 33.944619 44.832605 44 | 2.2000 0 -34567.770 73.505478 0.0000000 14.755254 37.589237 52.860456 64.327261 45 | 2.4000 0 -34555.969 78.474174 0.0000000 15.282239 38.000729 52.906633 64.013218 46 | 2.6000 0 -34505.848 82.812164 0.0000000 15.868329 38.977410 54.002984 65.160660 47 | 2.8000 0 -34554.223 83.357063 0.0000000 16.061032 39.610695 54.966520 66.381018 48 | 3.0000 0 -34523.898 46.973728 0.0000000 11.358151 32.163078 46.853319 58.073803 49 | 3.2000 1 -34565.973 53.796364 -6.1438644 0.0000000 16.613933 29.401864 39.415336 50 | 3.4000 1 -34676.988 4.8661242 9.6286995 0.0000000 9.9416612 21.194771 30.614606 51 | 3.6000 1 -34607.273 32.110767 0.17498705 0.0000000 13.765884 26.255616 36.437160 52 | 3.8000 1 -34669.711 64.209023 -8.5715912 0.0000000 18.601768 32.326428 42.952045 53 | 4.0000 1 -34713.039 28.580280 0.77232287 0.0000000 12.772979 24.479550 34.015346 54 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/dhdl/simulation_example/sim_0/iteration_1/dhdl.xvg: -------------------------------------------------------------------------------- 1 | # This file was created Mon Jun 19 04:08:41 2023 2 | # Created by: 3 | # :-) GROMACS - gmx mdrun, 2022.5-dev-20230428-fdf57150ad (-: 4 | # 5 | # Executable: /jet/home/wehs7661/pkgs/gromacs/2022.5/bin/gmx 6 | # Data prefix: /jet/home/wehs7661/pkgs/gromacs/2022.5 7 | # Working dir: /ocean/projects/cts160011p/wehs7661/EEXE_experiments/Anthracene/EEXE/fixed_weight/Redo/test_7/sim_0/iteration_1 8 | # Command line: 9 | # gmx mdrun -s sys_EE.tpr -nt 16 -ntmpi 1 10 | # gmx mdrun is part of G R O M A C S: 11 | # 12 | # Gyas ROwers Mature At Cryogenic Speed 13 | # 14 | @ title "dH/d\xl\f{} and \xD\f{}H" 15 | @ xaxis label "Time (ps)" 16 | @ yaxis label "dH/d\xl\f{} and \xD\f{}H (kJ/mol [\xl\f{}]\S-1\N)" 17 | @TYPE xy 18 | @ subtitle "T = 300 (K) " 19 | @ view 0.15, 0.15, 0.75, 0.85 20 | @ legend on 21 | @ legend box on 22 | @ legend loctype view 23 | @ legend 0.78, 0.8 24 | @ legend length 2 25 | @ s0 legend "Thermodynamic state" 26 | @ s1 legend "Total Energy (kJ/mol)" 27 | @ s2 legend "dH/d\xl\f{} vdw-lambda = 0.1800" 28 | @ s3 legend "\xD\f{}H \xl\f{} to 0.0000" 29 | @ s4 legend "\xD\f{}H \xl\f{} to 0.1800" 30 | @ s5 legend "\xD\f{}H \xl\f{} to 0.4200" 31 | @ s6 legend "\xD\f{}H \xl\f{} to 0.5700" 32 | @ s7 legend "\xD\f{}H \xl\f{} to 0.6800" 33 | 4.0000 1 -34813.508 28.745213 0.71526262 0.0000000 12.794391 24.506306 34.044969 34 | 4.2000 1 -34827.828 50.263847 -5.3451660 0.0000000 16.086597 28.817219 38.883647 35 | 4.4000 1 -34846.875 93.496773 -16.187871 0.0000000 23.162265 38.104386 49.167192 36 | 4.6000 2 -34834.480 77.634636 -17.615414 -15.000507 0.0000000 12.504510 22.478638 37 | 4.8000 1 -34787.875 70.183250 -10.633984 0.0000000 19.066112 32.470910 42.703634 38 | 5.0000 1 -34765.312 85.339149 -14.594128 0.0000000 21.308929 35.148270 45.414091 39 | 5.2000 0 -34747.320 77.110146 0.0000000 14.883801 36.773907 51.074174 61.713696 40 | 5.4000 0 -34792.480 87.662727 0.0000000 16.494550 39.923397 54.977533 66.104531 41 | 5.6000 0 -34731.535 85.343506 0.0000000 16.109479 39.085465 53.873529 64.810061 42 | 5.8000 0 -34777.746 60.757465 0.0000000 12.847630 33.688805 47.802530 58.430992 43 | 6.0000 0 -34840.430 76.315674 0.0000000 14.728513 36.393170 50.551549 61.088682 44 | 6.2000 0 -34794.367 68.982430 0.0000000 13.689976 34.570004 48.444696 58.838450 45 | 6.4000 0 -34817.184 64.156715 0.0000000 13.081715 33.568962 47.288068 57.585030 46 | 6.6000 1 -34749.480 38.613789 -2.1158417 0.0000000 14.339462 26.609223 36.492763 47 | 6.8000 2 -34691.605 48.527824 20.546530 -2.4403986 0.0000000 9.3389257 18.089804 48 | 7.0000 2 -34596.328 78.725594 -18.777863 -15.318588 0.0000000 12.689737 22.837187 49 | 7.2000 1 -34691.770 79.540344 -12.828679 0.0000000 20.697006 34.675839 45.190382 50 | 7.4000 0 -34760.391 28.303394 0.0000000 8.4187362 26.263100 39.465459 49.718451 51 | 7.6000 1 -34811.992 41.343948 -3.1597412 0.0000000 14.638515 26.959161 36.876424 52 | 7.8000 1 -34708.434 55.983002 -5.7776459 0.0000000 17.697364 31.443112 42.209058 53 | 8.0000 1 -34607.914 47.309258 -3.8846824 0.0000000 15.949348 28.791382 38.931684 54 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/dhdl/simulation_example/sim_0/iteration_2/dhdl.xvg: -------------------------------------------------------------------------------- 1 | # This file was created Mon Jun 19 04:08:44 2023 2 | # Created by: 3 | # :-) GROMACS - gmx mdrun, 2022.5-dev-20230428-fdf57150ad (-: 4 | # 5 | # Executable: /jet/home/wehs7661/pkgs/gromacs/2022.5/bin/gmx 6 | # Data prefix: /jet/home/wehs7661/pkgs/gromacs/2022.5 7 | # Working dir: /ocean/projects/cts160011p/wehs7661/EEXE_experiments/Anthracene/EEXE/fixed_weight/Redo/test_7/sim_0/iteration_2 8 | # Command line: 9 | # gmx mdrun -s sys_EE.tpr -nt 16 -ntmpi 1 10 | # gmx mdrun is part of G R O M A C S: 11 | # 12 | # GROup of MAchos and Cynical Suckers 13 | # 14 | @ title "dH/d\xl\f{} and \xD\f{}H" 15 | @ xaxis label "Time (ps)" 16 | @ yaxis label "dH/d\xl\f{} and \xD\f{}H (kJ/mol [\xl\f{}]\S-1\N)" 17 | @TYPE xy 18 | @ subtitle "T = 300 (K) " 19 | @ view 0.15, 0.15, 0.75, 0.85 20 | @ legend on 21 | @ legend box on 22 | @ legend loctype view 23 | @ legend 0.78, 0.8 24 | @ legend length 2 25 | @ s0 legend "Thermodynamic state" 26 | @ s1 legend "Total Energy (kJ/mol)" 27 | @ s2 legend "dH/d\xl\f{} vdw-lambda = 0.1800" 28 | @ s3 legend "\xD\f{}H \xl\f{} to 0.0000" 29 | @ s4 legend "\xD\f{}H \xl\f{} to 0.1800" 30 | @ s5 legend "\xD\f{}H \xl\f{} to 0.4200" 31 | @ s6 legend "\xD\f{}H \xl\f{} to 0.5700" 32 | @ s7 legend "\xD\f{}H \xl\f{} to 0.6800" 33 | 8.0000 1 -34629.660 76.294617 -12.171330 0.0000000 20.012351 33.639191 43.923604 34 | 8.2000 1 -34651.223 53.820854 -5.7918213 0.0000000 16.636073 29.299222 39.133190 35 | 8.4000 1 -34551.805 76.754662 -12.062535 0.0000000 20.355419 34.357167 44.960779 36 | 8.6000 0 -34470.441 60.429405 0.0000000 12.838254 33.812664 48.070257 58.823763 37 | 8.8000 1 -34470.359 50.146221 -5.6069839 0.0000000 15.713153 27.967770 37.615367 38 | 9.0000 1 -34498.391 39.090370 -2.5533874 0.0000000 13.934211 25.543530 34.808979 39 | 9.2000 1 -34556.098 84.098511 -14.461316 0.0000000 20.903842 34.415566 44.420412 40 | 9.4000 0 -34616.480 70.126610 0.0000000 13.909344 35.086697 49.137125 59.653158 41 | 9.6000 1 -34534.547 26.037083 1.3580391 0.0000000 12.167194 23.478886 32.722436 42 | 9.8000 2 -34312.969 71.234009 -19.139816 -14.436126 0.0000000 11.326751 20.238176 43 | 10.0000 0 -34378.742 76.646988 0.0000000 14.550442 35.442341 48.924097 58.903971 44 | 10.2000 2 -34285.172 84.664841 -27.865017 -18.636821 0.0000000 13.043783 22.901348 45 | 10.4000 1 -34497.484 63.202911 -8.3794296 0.0000000 18.313194 31.802937 42.233846 46 | 10.6000 1 -34578.695 87.972961 -15.083676 0.0000000 21.971679 36.270589 46.895210 47 | 10.8000 0 -34541.055 57.429951 0.0000000 12.311475 32.571461 46.366842 56.775666 48 | 11.0000 0 -34542.328 54.882725 0.0000000 12.163686 32.820439 47.037683 57.802180 49 | 11.2000 1 -34556.328 73.172264 -10.645428 0.0000000 20.349487 34.931084 46.128175 50 | 11.4000 0 -34620.914 66.442963 0.0000000 13.768872 35.857712 50.844045 62.154873 51 | 11.6000 1 -34630.789 87.372787 -14.095708 0.0000000 22.653880 37.868951 49.277689 52 | 11.8000 0 -34617.402 84.743134 0.0000000 16.467885 40.928452 56.989053 68.961985 53 | 12.0000 1 -34608.320 -64.654449 36.570163 0.0000000 2.2114481 12.925400 22.739461 54 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/dhdl/simulation_example/sim_1/iteration_0/dhdl.xvg: -------------------------------------------------------------------------------- 1 | # This file was created Mon Jun 19 04:08:38 2023 2 | # Created by: 3 | # :-) GROMACS - gmx mdrun, 2022.5-dev-20230428-fdf57150ad (-: 4 | # 5 | # Executable: /jet/home/wehs7661/pkgs/gromacs/2022.5/bin/gmx 6 | # Data prefix: /jet/home/wehs7661/pkgs/gromacs/2022.5 7 | # Working dir: /ocean/projects/cts160011p/wehs7661/EEXE_experiments/Anthracene/EEXE/fixed_weight/Redo/test_7/sim_1/iteration_0 8 | # Command line: 9 | # gmx mdrun -s sys_EE.tpr -nt 16 -ntmpi 1 10 | # gmx mdrun is part of G R O M A C S: 11 | # 12 | # Good ROcking Metal Altar for Chronical Sinners 13 | # 14 | @ title "dH/d\xl\f{} and \xD\f{}H" 15 | @ xaxis label "Time (ps)" 16 | @ yaxis label "dH/d\xl\f{} and \xD\f{}H (kJ/mol [\xl\f{}]\S-1\N)" 17 | @TYPE xy 18 | @ subtitle "T = 300 (K) " 19 | @ view 0.15, 0.15, 0.75, 0.85 20 | @ legend on 21 | @ legend box on 22 | @ legend loctype view 23 | @ legend 0.78, 0.8 24 | @ legend length 2 25 | @ s0 legend "Thermodynamic state" 26 | @ s1 legend "Total Energy (kJ/mol)" 27 | @ s2 legend "dH/d\xl\f{} vdw-lambda = 0.1800" 28 | @ s3 legend "\xD\f{}H \xl\f{} to 0.1800" 29 | @ s4 legend "\xD\f{}H \xl\f{} to 0.4200" 30 | @ s5 legend "\xD\f{}H \xl\f{} to 0.5700" 31 | @ s6 legend "\xD\f{}H \xl\f{} to 0.6800" 32 | @ s7 legend "\xD\f{}H \xl\f{} to 0.7600" 33 | 0.0000 0 -34443.301 92.597755 0.0000000 23.060748 38.017041 49.112586 57.216179 34 | 0.2000 0 -34545.355 29.916248 0.0000000 13.415580 25.841950 36.032550 43.827893 35 | 0.4000 1 -34573.512 19.315325 10.328051 0.0000000 6.2289556 13.864626 20.475705 36 | 0.6000 2 -34537.039 46.042034 34.746619 -2.3416570 0.0000000 6.7094276 13.178810 37 | 0.8000 2 -34504.797 26.582932 92.888954 2.9817397 0.0000000 5.1950481 11.060175 38 | 1.0000 2 -34597.062 76.209625 -6.8851439 -9.2199948 0.0000000 9.2225502 16.762705 39 | 1.2000 1 -34645.754 59.870655 -5.9310907 0.0000000 10.951455 20.831724 28.667682 40 | 1.4000 1 -34608.500 83.173462 -15.765495 0.0000000 13.482564 24.320257 32.536224 41 | 1.6000 0 -34702.449 91.427101 0.0000000 23.076068 38.237809 49.537286 57.808264 42 | 1.8000 0 -34636.801 83.105667 0.0000000 21.617057 36.200329 47.160947 55.216149 43 | 2.0000 0 -34582.664 77.326607 0.0000000 20.710449 35.104649 46.053064 54.150658 44 | 2.2000 0 -34621.633 72.612846 0.0000000 20.371620 35.052903 46.339511 54.727704 45 | 2.4000 0 -34697.633 22.681007 0.0000000 13.298198 26.286240 36.942733 45.078204 46 | 2.6000 1 -34675.859 26.216412 7.9667612 0.0000000 7.0089467 14.935248 21.638223 47 | 2.8000 2 -34693.883 68.969444 -4.9065520 -8.3384412 0.0000000 8.3217972 15.088121 48 | 3.0000 1 -34830.324 83.215111 -17.703334 0.0000000 13.053636 23.174696 30.730685 49 | 3.2000 0 -34759.859 78.371361 0.0000000 20.026790 33.373765 43.385355 50.741192 50 | 3.4000 0 -34852.457 72.025925 0.0000000 19.205421 32.473984 42.536655 49.967038 51 | 3.6000 0 -34892.082 63.032909 0.0000000 17.366710 29.668915 39.065662 46.026845 52 | 3.8000 0 -34862.301 78.490425 0.0000000 19.984802 33.251214 43.185771 50.478333 53 | 4.0000 1 -34712.207 29.889591 3.8167387 0.0000000 7.0435212 14.620117 20.987546 54 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/dhdl/simulation_example/sim_1/iteration_1/dhdl.xvg: -------------------------------------------------------------------------------- 1 | # This file was created Mon Jun 19 04:08:41 2023 2 | # Created by: 3 | # :-) GROMACS - gmx mdrun, 2022.5-dev-20230428-fdf57150ad (-: 4 | # 5 | # Executable: /jet/home/wehs7661/pkgs/gromacs/2022.5/bin/gmx 6 | # Data prefix: /jet/home/wehs7661/pkgs/gromacs/2022.5 7 | # Working dir: /ocean/projects/cts160011p/wehs7661/EEXE_experiments/Anthracene/EEXE/fixed_weight/Redo/test_7/sim_1/iteration_1 8 | # Command line: 9 | # gmx mdrun -s sys_EE.tpr -nt 16 -ntmpi 1 10 | # gmx mdrun is part of G R O M A C S: 11 | # 12 | # Gyas ROwers Mature At Cryogenic Speed 13 | # 14 | @ title "dH/d\xl\f{} and \xD\f{}H" 15 | @ xaxis label "Time (ps)" 16 | @ yaxis label "dH/d\xl\f{} and \xD\f{}H (kJ/mol [\xl\f{}]\S-1\N)" 17 | @TYPE xy 18 | @ subtitle "T = 300 (K) " 19 | @ view 0.15, 0.15, 0.75, 0.85 20 | @ legend on 21 | @ legend box on 22 | @ legend loctype view 23 | @ legend 0.78, 0.8 24 | @ legend length 2 25 | @ s0 legend "Thermodynamic state" 26 | @ s1 legend "Total Energy (kJ/mol)" 27 | @ s2 legend "dH/d\xl\f{} vdw-lambda = 0.4200" 28 | @ s3 legend "\xD\f{}H \xl\f{} to 0.1800" 29 | @ s4 legend "\xD\f{}H \xl\f{} to 0.4200" 30 | @ s5 legend "\xD\f{}H \xl\f{} to 0.5700" 31 | @ s6 legend "\xD\f{}H \xl\f{} to 0.6800" 32 | @ s7 legend "\xD\f{}H \xl\f{} to 0.7600" 33 | 4.0000 1 -34536.086 29.795559 3.8372179 0.0000000 7.0307286 14.599871 20.962844 34 | 4.2000 1 -34534.352 70.381546 -12.581901 0.0000000 11.597162 21.089125 28.343406 35 | 4.4000 0 -34557.211 90.596390 0.0000000 22.733631 37.597237 48.659818 56.753277 36 | 4.6000 0 -34613.070 52.785580 0.0000000 17.286594 30.684376 41.078763 48.817528 37 | 4.8000 0 -34590.133 69.891281 0.0000000 19.031192 32.354848 42.482189 49.964215 38 | 5.0000 0 -34641.594 82.358505 0.0000000 21.104812 35.207131 45.793859 53.574639 39 | 5.2000 0 -34630.590 55.930111 0.0000000 16.972682 29.901005 39.998634 47.558106 40 | 5.4000 1 -34501.445 6.8057194 15.179602 0.0000000 4.5338624 11.008780 16.768989 41 | 5.6000 2 -34446.824 70.026398 -11.688033 -8.9736093 0.0000000 8.2860802 14.891584 42 | 5.8000 1 -34374.215 70.087471 -12.557361 0.0000000 11.549276 21.004727 28.232688 43 | 6.0000 0 -34414.961 55.208706 0.0000000 16.862380 29.769925 39.868238 47.434685 44 | 6.2000 0 -34362.062 62.974998 0.0000000 17.749442 30.536915 40.350191 47.634520 45 | 6.4000 0 -34381.938 76.328827 0.0000000 19.696178 32.891114 42.786216 50.050915 46 | 6.6000 0 -34421.820 81.035713 0.0000000 20.691532 34.455193 44.765049 52.332781 47 | 6.8000 1 -34386.133 41.569485 1.4271513 0.0000000 8.6449559 17.158459 24.080119 48 | 7.0000 2 -34381.691 38.757725 25.724690 -2.0148271 0.0000000 5.6739300 11.184824 49 | 7.2000 2 -34411.191 48.626472 17.536701 -3.8829282 0.0000000 6.6149300 12.666441 50 | 7.4000 2 -34361.844 62.080593 8.3049233 -6.4965604 0.0000000 7.8353584 14.499807 51 | 7.6000 1 -34403.656 58.679588 -7.0876688 0.0000000 10.402639 19.518343 26.663846 52 | 7.8000 1 -34488.086 86.682571 -18.630245 0.0000000 13.533948 23.959849 31.715451 53 | 8.0000 0 -34470.477 76.718300 0.0000000 20.077491 33.722607 44.014799 51.594773 54 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/dhdl/simulation_example/sim_1/iteration_2/dhdl.xvg: -------------------------------------------------------------------------------- 1 | # This file was created Mon Jun 19 04:08:44 2023 2 | # Created by: 3 | # :-) GROMACS - gmx mdrun, 2022.5-dev-20230428-fdf57150ad (-: 4 | # 5 | # Executable: /jet/home/wehs7661/pkgs/gromacs/2022.5/bin/gmx 6 | # Data prefix: /jet/home/wehs7661/pkgs/gromacs/2022.5 7 | # Working dir: /ocean/projects/cts160011p/wehs7661/EEXE_experiments/Anthracene/EEXE/fixed_weight/Redo/test_7/sim_1/iteration_2 8 | # Command line: 9 | # gmx mdrun -s sys_EE.tpr -nt 16 -ntmpi 1 10 | # gmx mdrun is part of G R O M A C S: 11 | # 12 | # GROup of MAchos and Cynical Suckers 13 | # 14 | @ title "dH/d\xl\f{} and \xD\f{}H" 15 | @ xaxis label "Time (ps)" 16 | @ yaxis label "dH/d\xl\f{} and \xD\f{}H (kJ/mol [\xl\f{}]\S-1\N)" 17 | @TYPE xy 18 | @ subtitle "T = 300 (K) " 19 | @ view 0.15, 0.15, 0.75, 0.85 20 | @ legend on 21 | @ legend box on 22 | @ legend loctype view 23 | @ legend 0.78, 0.8 24 | @ legend length 2 25 | @ s0 legend "Thermodynamic state" 26 | @ s1 legend "Total Energy (kJ/mol)" 27 | @ s2 legend "dH/d\xl\f{} vdw-lambda = 0.1800" 28 | @ s3 legend "\xD\f{}H \xl\f{} to 0.1800" 29 | @ s4 legend "\xD\f{}H \xl\f{} to 0.4200" 30 | @ s5 legend "\xD\f{}H \xl\f{} to 0.5700" 31 | @ s6 legend "\xD\f{}H \xl\f{} to 0.6800" 32 | @ s7 legend "\xD\f{}H \xl\f{} to 0.7600" 33 | 8.0000 0 -34755.293 46.771725 0.0000000 15.872268 28.695901 38.829498 46.447546 34 | 8.2000 0 -34785.953 74.836411 0.0000000 20.020610 33.922478 44.493968 52.312291 35 | 8.4000 0 -34647.559 56.015610 0.0000000 17.202335 30.347924 40.604961 48.276854 36 | 8.6000 0 -34641.148 -4.2277699 0.0000000 8.7699007 20.164078 29.975124 37.611529 37 | 8.8000 1 -34616.250 69.080246 -10.322360 0.0000000 11.894403 22.082836 30.019714 38 | 9.0000 1 -34614.609 42.226288 0.41087019 0.0000000 8.9144948 17.931109 25.390445 39 | 9.2000 1 -34468.852 47.732052 -2.6941484 0.0000000 9.2777303 18.100653 25.243219 40 | 9.4000 0 -34504.332 55.423943 0.0000000 16.886680 29.825406 39.961572 47.562781 41 | 9.6000 1 -34515.789 59.769459 -6.4545549 0.0000000 10.655896 19.998678 27.305587 42 | 9.8000 1 -34515.922 -3.8737392 21.757142 0.0000000 3.6053060 9.9567376 15.796676 43 | 10.0000 2 -34563.215 -34.931252 159.09013 15.563947 0.0000000 -0.40763683 2.4860333 44 | 10.2000 3 -34533.957 -2.8320389 295.73599 31.136484 4.1779768 0.0000000 1.2499733 45 | 10.4000 3 -34558.859 -2.1180019 280.30180 30.889294 4.1170456 0.0000000 1.3188639 46 | 10.6000 4 -34530.309 -30.518177 751.66180 96.462129 24.109847 5.0418812 0.0000000 47 | 10.8000 4 -34537.238 -71.261162 930.65434 133.39602 36.839697 9.0098523 0.0000000 48 | 11.0000 4 -34461.461 -87.927658 1239.1910 157.80551 43.247558 10.757349 0.0000000 49 | 11.2000 4 -34466.941 -82.624626 889.63010 142.10997 40.461601 10.151953 0.0000000 50 | 11.4000 4 -34466.344 -123.39691 1340.7995 193.15680 55.609261 14.434419 0.0000000 51 | 11.6000 4 -34515.422 -127.27545 1497.2377 203.23258 57.821370 14.932713 0.0000000 52 | 11.8000 4 -34671.367 -175.34641 1967.8005 259.49930 74.645520 19.813017 0.0000000 53 | 12.0000 4 -34669.914 -206.61479 2211.1280 291.95570 84.940968 22.912667 0.0000000 54 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/dhdl/simulation_example/sim_2/iteration_0/dhdl.xvg: -------------------------------------------------------------------------------- 1 | # This file was created Mon Jun 19 04:08:38 2023 2 | # Created by: 3 | # :-) GROMACS - gmx mdrun, 2022.5-dev-20230428-fdf57150ad (-: 4 | # 5 | # Executable: /jet/home/wehs7661/pkgs/gromacs/2022.5/bin/gmx 6 | # Data prefix: /jet/home/wehs7661/pkgs/gromacs/2022.5 7 | # Working dir: /ocean/projects/cts160011p/wehs7661/EEXE_experiments/Anthracene/EEXE/fixed_weight/Redo/test_7/sim_2/iteration_0 8 | # Command line: 9 | # gmx mdrun -s sys_EE.tpr -nt 16 -ntmpi 1 10 | # gmx mdrun is part of G R O M A C S: 11 | # 12 | # Good ROcking Metal Altar for Chronical Sinners 13 | # 14 | @ title "dH/d\xl\f{} and \xD\f{}H" 15 | @ xaxis label "Time (ps)" 16 | @ yaxis label "dH/d\xl\f{} and \xD\f{}H (kJ/mol [\xl\f{}]\S-1\N)" 17 | @TYPE xy 18 | @ subtitle "T = 300 (K) " 19 | @ view 0.15, 0.15, 0.75, 0.85 20 | @ legend on 21 | @ legend box on 22 | @ legend loctype view 23 | @ legend 0.78, 0.8 24 | @ legend length 2 25 | @ s0 legend "Thermodynamic state" 26 | @ s1 legend "Total Energy (kJ/mol)" 27 | @ s2 legend "dH/d\xl\f{} vdw-lambda = 0.4200" 28 | @ s3 legend "\xD\f{}H \xl\f{} to 0.4200" 29 | @ s4 legend "\xD\f{}H \xl\f{} to 0.5700" 30 | @ s5 legend "\xD\f{}H \xl\f{} to 0.6800" 31 | @ s6 legend "\xD\f{}H \xl\f{} to 0.7600" 32 | @ s7 legend "\xD\f{}H \xl\f{} to 0.8600" 33 | 0.0000 0 -34558.027 98.723808 0.0000000 14.956292 26.051838 34.155431 44.299574 34 | 0.2000 0 -34543.445 70.217529 0.0000000 11.635145 21.194529 28.502587 37.930287 35 | 0.4000 0 -34623.500 83.901581 0.0000000 13.246080 23.561966 31.264409 41.048299 36 | 0.6000 0 -34627.387 66.694382 0.0000000 11.292428 20.795921 28.142024 37.689766 37 | 0.8000 0 -34630.051 92.523865 0.0000000 14.367456 25.361576 33.513044 43.823331 38 | 1.0000 0 -34604.461 77.432487 0.0000000 12.694188 23.044100 30.948182 41.147965 39 | 1.2000 0 -34585.180 30.772110 0.0000000 7.4891599 15.652910 22.522199 31.890009 40 | 1.4000 0 -34688.898 19.479511 0.0000000 6.4550985 14.318562 21.071363 30.352739 41 | 1.6000 0 -34791.102 61.715427 0.0000000 10.889390 20.408228 27.870702 37.650884 42 | 1.8000 0 -34676.934 64.374435 0.0000000 11.169267 20.797165 28.311511 38.136722 43 | 2.0000 0 -34596.297 38.328201 0.0000000 8.2259496 16.541449 23.376210 32.573317 44 | 2.2000 0 -34469.406 14.627542 0.0000000 6.3683599 14.677107 21.891582 31.842276 45 | 2.4000 1 -34424.031 24.925966 1.6117064 0.0000000 4.7275017 10.117052 18.443624 46 | 2.6000 1 -34490.535 48.790497 -3.3173612 0.0000000 6.8010014 13.130161 22.137404 47 | 2.8000 0 -34604.250 37.173370 0.0000000 8.4756673 17.254763 24.480949 34.191385 48 | 3.0000 0 -34688.332 56.605885 0.0000000 10.687032 20.527428 28.366323 38.726083 49 | 3.2000 0 -34625.945 30.744106 0.0000000 7.8063062 16.408259 23.631595 33.453489 50 | 3.4000 0 -34757.172 -11.770284 0.0000000 3.1281713 9.8574830 16.255677 25.496659 51 | 3.6000 1 -34639.828 50.390167 -3.8163579 0.0000000 6.9351967 13.346870 22.472350 52 | 3.8000 1 -34707.344 8.1764107 5.9796931 0.0000000 3.4317234 8.3482168 16.393526 53 | 4.0000 1 -34779.789 24.187702 2.0787799 0.0000000 4.7622345 10.279852 18.835546 54 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/dhdl/simulation_example/sim_2/iteration_1/dhdl.xvg: -------------------------------------------------------------------------------- 1 | # This file was created Mon Jun 19 04:08:41 2023 2 | # Created by: 3 | # :-) GROMACS - gmx mdrun, 2022.5-dev-20230428-fdf57150ad (-: 4 | # 5 | # Executable: /jet/home/wehs7661/pkgs/gromacs/2022.5/bin/gmx 6 | # Data prefix: /jet/home/wehs7661/pkgs/gromacs/2022.5 7 | # Working dir: /ocean/projects/cts160011p/wehs7661/EEXE_experiments/Anthracene/EEXE/fixed_weight/Redo/test_7/sim_2/iteration_1 8 | # Command line: 9 | # gmx mdrun -s sys_EE.tpr -nt 16 -ntmpi 1 10 | # gmx mdrun is part of G R O M A C S: 11 | # 12 | # Gyas ROwers Mature At Cryogenic Speed 13 | # 14 | @ title "dH/d\xl\f{} and \xD\f{}H" 15 | @ xaxis label "Time (ps)" 16 | @ yaxis label "dH/d\xl\f{} and \xD\f{}H (kJ/mol [\xl\f{}]\S-1\N)" 17 | @TYPE xy 18 | @ subtitle "T = 300 (K) " 19 | @ view 0.15, 0.15, 0.75, 0.85 20 | @ legend on 21 | @ legend box on 22 | @ legend loctype view 23 | @ legend 0.78, 0.8 24 | @ legend length 2 25 | @ s0 legend "Thermodynamic state" 26 | @ s1 legend "Total Energy (kJ/mol)" 27 | @ s2 legend "dH/d\xl\f{} vdw-lambda = 0.5700" 28 | @ s3 legend "\xD\f{}H \xl\f{} to 0.4200" 29 | @ s4 legend "\xD\f{}H \xl\f{} to 0.5700" 30 | @ s5 legend "\xD\f{}H \xl\f{} to 0.6800" 31 | @ s6 legend "\xD\f{}H \xl\f{} to 0.7600" 32 | @ s7 legend "\xD\f{}H \xl\f{} to 0.8600" 33 | 4.0000 1 -34567.148 24.147297 2.0943858 0.0000000 4.7605675 10.279325 18.837947 34 | 4.2000 1 -34634.715 25.482727 2.0090625 0.0000000 4.9374722 10.613321 19.394332 35 | 4.4000 1 -34540.645 38.114258 -0.88447505 0.0000000 5.9480980 11.978592 20.880584 36 | 4.6000 1 -34459.148 44.981007 -2.2873872 0.0000000 6.5157154 12.759378 21.755325 37 | 4.8000 1 -34330.551 40.923508 -2.0198568 0.0000000 6.0191505 11.884540 20.425304 38 | 5.0000 1 -34426.164 28.420189 0.94379490 0.0000000 5.0308674 10.545742 18.932281 39 | 5.2000 1 -34406.238 62.352551 -6.1328710 0.0000000 8.0506752 15.071867 24.788060 40 | 5.4000 0 -34405.633 -18.816635 0.0000000 2.2137654 8.4111539 14.472705 23.335853 41 | 5.6000 1 -34419.762 68.732956 -8.1613286 0.0000000 8.3816784 15.294836 24.610726 42 | 5.8000 0 -34260.867 22.692657 0.0000000 6.5395864 14.227537 20.818780 29.892428 43 | 6.0000 1 -34340.242 35.485474 -0.17342121 0.0000000 5.7375496 11.675136 20.493255 44 | 6.2000 1 -34358.496 40.092739 -1.3969319 0.0000000 6.0735024 12.100450 20.917737 45 | 6.4000 1 -34388.797 71.700455 -8.2754415 0.0000000 8.7845638 16.041797 25.802079 46 | 6.6000 0 -34391.273 56.747177 0.0000000 10.239751 19.346224 26.519370 35.939476 47 | 6.8000 0 -34384.961 20.601608 0.0000000 6.2730573 13.754404 20.169459 28.989816 48 | 7.0000 1 -34300.277 12.316678 4.4199054 0.0000000 3.5052517 8.0901812 15.400408 49 | 7.2000 2 -34253.223 19.443687 18.318740 0.90864009 0.0000000 2.7357073 8.7057779 50 | 7.4000 1 -34315.672 26.482738 1.0465266 0.0000000 4.7091492 9.8662089 17.687528 51 | 7.6000 1 -34372.086 84.288895 -11.395139 0.0000000 9.7741821 17.396818 27.364657 52 | 7.8000 0 -34435.820 -5.8192053 0.0000000 3.4711755 9.8730909 15.798417 24.229875 53 | 8.0000 1 -34409.645 53.422535 -4.8654454 0.0000000 6.9741848 13.091297 21.551518 54 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/dhdl/simulation_example/sim_2/iteration_2/dhdl.xvg: -------------------------------------------------------------------------------- 1 | # This file was created Mon Jun 19 04:08:44 2023 2 | # Created by: 3 | # :-) GROMACS - gmx mdrun, 2022.5-dev-20230428-fdf57150ad (-: 4 | # 5 | # Executable: /jet/home/wehs7661/pkgs/gromacs/2022.5/bin/gmx 6 | # Data prefix: /jet/home/wehs7661/pkgs/gromacs/2022.5 7 | # Working dir: /ocean/projects/cts160011p/wehs7661/EEXE_experiments/Anthracene/EEXE/fixed_weight/Redo/test_7/sim_2/iteration_2 8 | # Command line: 9 | # gmx mdrun -s sys_EE.tpr -nt 16 -ntmpi 1 10 | # gmx mdrun is part of G R O M A C S: 11 | # 12 | # GROup of MAchos and Cynical Suckers 13 | # 14 | @ title "dH/d\xl\f{} and \xD\f{}H" 15 | @ xaxis label "Time (ps)" 16 | @ yaxis label "dH/d\xl\f{} and \xD\f{}H (kJ/mol [\xl\f{}]\S-1\N)" 17 | @TYPE xy 18 | @ subtitle "T = 300 (K) " 19 | @ view 0.15, 0.15, 0.75, 0.85 20 | @ legend on 21 | @ legend box on 22 | @ legend loctype view 23 | @ legend 0.78, 0.8 24 | @ legend length 2 25 | @ s0 legend "Thermodynamic state" 26 | @ s1 legend "Total Energy (kJ/mol)" 27 | @ s2 legend "dH/d\xl\f{} vdw-lambda = 0.5700" 28 | @ s3 legend "\xD\f{}H \xl\f{} to 0.4200" 29 | @ s4 legend "\xD\f{}H \xl\f{} to 0.5700" 30 | @ s5 legend "\xD\f{}H \xl\f{} to 0.6800" 31 | @ s6 legend "\xD\f{}H \xl\f{} to 0.7600" 32 | @ s7 legend "\xD\f{}H \xl\f{} to 0.8600" 33 | 8.0000 1 -34313.500 53.922421 -4.9744428 0.0000000 7.0177010 13.155697 21.633762 34 | 8.2000 1 -34317.035 54.985249 -5.1219533 0.0000000 7.1659649 13.451778 22.153823 35 | 8.4000 0 -34343.859 64.260559 0.0000000 11.269674 20.979761 28.515765 38.314333 36 | 8.6000 0 -34327.445 42.952110 0.0000000 8.9256910 17.692659 24.808122 34.303222 37 | 8.8000 0 -34193.602 30.741173 0.0000000 7.3090871 15.119509 21.632564 30.461708 38 | 9.0000 1 -34165.562 17.672602 3.5807292 0.0000000 4.0475147 8.9581755 16.590528 39 | 9.2000 2 -34196.078 53.809811 -1.9005395 -4.2808140 0.0000000 4.9581900 12.597696 40 | 9.4000 1 -34121.391 30.466057 -0.028901401 0.0000000 4.9883106 10.199266 17.972795 41 | 9.6000 2 -34181.188 12.930644 22.614589 1.8607628 0.0000000 2.2793522 7.7807644 42 | 9.8000 2 -34159.910 -83.369080 82.336740 16.540114 0.0000000 -3.9512120 -3.2089027 43 | 10.0000 3 -34253.008 -79.733406 147.43616 40.507554 9.9642161 0.0000000 -3.8256816 44 | 10.2000 3 -34316.266 -100.41053 169.57082 47.693830 12.082289 0.0000000 -5.3537159 45 | 10.4000 3 -34287.016 -38.847527 117.40750 29.041785 6.1480040 0.0000000 -0.39827370 46 | 10.6000 3 -34357.711 -7.0617037 73.913992 16.967344 2.8104849 0.0000000 1.9357874 47 | 10.8000 2 -34354.020 34.890873 8.7370223 -1.3708427 0.0000000 3.7911577 10.761747 48 | 11.0000 1 -34391.375 -18.832100 11.990726 0.0000000 1.0368603 4.7231291 11.600601 49 | 11.2000 2 -34355.613 53.997337 -1.6474591 -4.2284115 0.0000000 5.0100889 12.806016 50 | 11.4000 1 -34464.656 -3.4788733 8.4742171 0.0000000 2.2977398 6.4826487 13.639728 51 | 11.6000 1 -34486.930 -16.786358 10.481138 0.0000000 1.0813492 4.7300642 11.606537 52 | 11.8000 2 -34525.945 -17.548145 39.956987 6.5848033 0.0000000 0.41567518 4.8993547 53 | 12.0000 2 -34481.375 -113.31747 102.25158 21.396274 0.0000000 -5.7530722 -6.0001237 54 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/dhdl/simulation_example/sim_3/iteration_0/dhdl.xvg: -------------------------------------------------------------------------------- 1 | # This file was created Mon Jun 19 04:08:38 2023 2 | # Created by: 3 | # :-) GROMACS - gmx mdrun, 2022.5-dev-20230428-fdf57150ad (-: 4 | # 5 | # Executable: /jet/home/wehs7661/pkgs/gromacs/2022.5/bin/gmx 6 | # Data prefix: /jet/home/wehs7661/pkgs/gromacs/2022.5 7 | # Working dir: /ocean/projects/cts160011p/wehs7661/EEXE_experiments/Anthracene/EEXE/fixed_weight/Redo/test_7/sim_3/iteration_0 8 | # Command line: 9 | # gmx mdrun -s sys_EE.tpr -nt 16 -ntmpi 1 10 | # gmx mdrun is part of G R O M A C S: 11 | # 12 | # Good ROcking Metal Altar for Chronical Sinners 13 | # 14 | @ title "dH/d\xl\f{} and \xD\f{}H" 15 | @ xaxis label "Time (ps)" 16 | @ yaxis label "dH/d\xl\f{} and \xD\f{}H (kJ/mol [\xl\f{}]\S-1\N)" 17 | @TYPE xy 18 | @ subtitle "T = 300 (K) " 19 | @ view 0.15, 0.15, 0.75, 0.85 20 | @ legend on 21 | @ legend box on 22 | @ legend loctype view 23 | @ legend 0.78, 0.8 24 | @ legend length 2 25 | @ s0 legend "Thermodynamic state" 26 | @ s1 legend "Total Energy (kJ/mol)" 27 | @ s2 legend "dH/d\xl\f{} vdw-lambda = 0.5700" 28 | @ s3 legend "\xD\f{}H \xl\f{} to 0.5700" 29 | @ s4 legend "\xD\f{}H \xl\f{} to 0.6800" 30 | @ s5 legend "\xD\f{}H \xl\f{} to 0.7600" 31 | @ s6 legend "\xD\f{}H \xl\f{} to 0.8600" 32 | @ s7 legend "\xD\f{}H \xl\f{} to 1.0000" 33 | 0.0000 0 -34540.129 100.49866 0.0000000 11.095546 19.199138 29.343281 43.531656 34 | 0.2000 0 -34590.309 49.700745 0.0000000 6.7280205 12.841949 21.453620 34.696964 35 | 0.4000 0 -34513.477 84.650406 0.0000000 9.9029091 17.704252 27.961602 42.968847 36 | 0.6000 0 -34491.766 52.951572 0.0000000 7.2474392 13.877050 23.225322 37.598627 37 | 0.8000 0 -34446.789 42.704487 0.0000000 6.3417538 12.558632 21.625589 35.942901 38 | 1.0000 0 -34484.246 50.779144 0.0000000 6.9183300 13.275133 22.316495 36.368677 39 | 1.2000 0 -34445.914 -116.46031 0.0000000 -6.8484656 -6.4292189 -1.9697713 8.8258229 40 | 1.4000 2 -34569.938 1.7394466 14.937879 2.0423865 0.0000000 2.7285307 12.627184 41 | 1.6000 1 -34620.133 -19.742035 7.1241276 0.0000000 0.32980730 4.8585365 16.070840 42 | 1.8000 1 -34540.477 -38.321430 9.6851899 0.0000000 -0.98418234 2.2269476 11.886823 43 | 2.0000 2 -34555.801 6.7902451 10.522247 1.1994390 0.0000000 2.7879675 11.873910 44 | 2.2000 1 -34602.969 -2.0144739 4.0914947 0.0000000 1.3583718 6.3750465 17.403891 45 | 2.4000 1 -34529.535 -74.257820 15.282469 0.0000000 -3.2883553 -1.8125488 6.6320345 46 | 2.6000 2 -34545.094 21.642651 6.6418168 -0.16101076 0.0000000 4.0425174 14.258680 47 | 2.8000 1 -34501.172 -82.870224 16.243625 0.0000000 -3.9193542 -3.0356102 4.9325833 48 | 3.0000 2 -34537.199 -27.186066 23.765002 4.8240393 0.0000000 0.36713911 8.1736953 49 | 3.2000 2 -34538.555 -98.908852 46.613995 11.878667 0.0000000 -5.2634926 -1.6672953 50 | 3.4000 2 -34557.547 -71.023743 37.677826 9.1292776 0.0000000 -3.0791920 2.1466351 51 | 3.6000 1 -34509.117 -88.404030 17.099763 0.0000000 -4.2454881 -3.4895723 4.6760752 52 | 3.8000 2 -34607.887 -48.622986 31.586461 7.0796804 0.0000000 -1.1343806 6.1275737 53 | 4.0000 1 -34547.109 -86.272667 17.281981 0.0000000 -4.0004194 -2.8993087 5.5865369 54 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/dhdl/simulation_example/sim_3/iteration_1/dhdl.xvg: -------------------------------------------------------------------------------- 1 | # This file was created Mon Jun 19 04:08:41 2023 2 | # Created by: 3 | # :-) GROMACS - gmx mdrun, 2022.5-dev-20230428-fdf57150ad (-: 4 | # 5 | # Executable: /jet/home/wehs7661/pkgs/gromacs/2022.5/bin/gmx 6 | # Data prefix: /jet/home/wehs7661/pkgs/gromacs/2022.5 7 | # Working dir: /ocean/projects/cts160011p/wehs7661/EEXE_experiments/Anthracene/EEXE/fixed_weight/Redo/test_7/sim_3/iteration_1 8 | # Command line: 9 | # gmx mdrun -s sys_EE.tpr -nt 16 -ntmpi 1 10 | # gmx mdrun is part of G R O M A C S: 11 | # 12 | # Gyas ROwers Mature At Cryogenic Speed 13 | # 14 | @ title "dH/d\xl\f{} and \xD\f{}H" 15 | @ xaxis label "Time (ps)" 16 | @ yaxis label "dH/d\xl\f{} and \xD\f{}H (kJ/mol [\xl\f{}]\S-1\N)" 17 | @TYPE xy 18 | @ subtitle "T = 300 (K) " 19 | @ view 0.15, 0.15, 0.75, 0.85 20 | @ legend on 21 | @ legend box on 22 | @ legend loctype view 23 | @ legend 0.78, 0.8 24 | @ legend length 2 25 | @ s0 legend "Thermodynamic state" 26 | @ s1 legend "Total Energy (kJ/mol)" 27 | @ s2 legend "dH/d\xl\f{} vdw-lambda = 0.6800" 28 | @ s3 legend "\xD\f{}H \xl\f{} to 0.5700" 29 | @ s4 legend "\xD\f{}H \xl\f{} to 0.6800" 30 | @ s5 legend "\xD\f{}H \xl\f{} to 0.7600" 31 | @ s6 legend "\xD\f{}H \xl\f{} to 0.8600" 32 | @ s7 legend "\xD\f{}H \xl\f{} to 1.0000" 33 | 4.0000 1 -34865.773 -86.368622 17.306136 0.0000000 -4.0043254 -2.9020731 5.5888121 34 | 4.2000 1 -34902.734 -30.364037 8.0715734 0.0000000 -0.54762076 2.9114692 12.817898 35 | 4.4000 2 -34882.805 -3.4873972 14.974183 2.3688454 0.0000000 2.1489256 11.210299 36 | 4.6000 1 -34813.523 -115.05903 21.017043 0.0000000 -6.0217547 -6.7492015 0.16403219 37 | 4.8000 2 -34797.430 -63.292355 35.552286 8.4262785 0.0000000 -2.4021796 3.5290747 38 | 5.0000 2 -34714.504 11.299449 10.734492 0.95961855 0.0000000 3.3388088 13.328189 39 | 5.2000 1 -34667.297 -103.44635 20.001089 0.0000000 -5.0730867 -4.6959488 3.4382302 40 | 5.4000 2 -34616.023 -101.13643 49.237663 12.302009 0.0000000 -5.2862215 -1.4572814 41 | 5.6000 2 -34592.965 -41.386707 27.747991 6.1496372 0.0000000 -0.82253956 5.8893497 42 | 5.8000 2 -34512.500 -72.215378 36.896324 9.1032350 0.0000000 -3.3137383 1.3691077 43 | 6.0000 1 -34509.883 -250.14395 41.887876 0.0000000 -14.738578 -22.203424 -20.435140 44 | 6.2000 2 -34482.641 -50.894749 31.380619 7.1364438 0.0000000 -1.5505838 4.5748667 45 | 6.4000 2 -34566.047 -8.7048426 15.616304 2.7395565 0.0000000 1.5813048 9.7713534 46 | 6.6000 1 -34601.863 -28.744118 7.9427849 0.0000000 -0.44202898 3.0331333 12.708274 47 | 6.8000 2 -34692.965 -11.389771 17.797569 3.1337442 0.0000000 1.4477675 9.5879600 48 | 7.0000 1 -34825.090 -94.880440 17.997850 0.0000000 -4.7396529 -4.6190333 2.5164022 49 | 7.2000 2 -34802.016 -14.258325 18.661376 3.4366216 0.0000000 1.2802632 9.5486924 50 | 7.4000 1 -34790.531 -108.75335 20.267333 0.0000000 -5.5707280 -5.8981857 1.2931432 51 | 7.6000 2 -34832.719 -51.069721 31.479154 7.2031650 0.0000000 -1.4504411 5.2328593 52 | 7.8000 2 -34783.875 -158.10257 67.920695 17.964928 0.0000000 -9.7161848 -9.1541055 53 | 8.0000 3 -34793.789 -77.359856 103.87485 38.248480 14.137779 0.0000000 -2.3299037 54 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/dhdl/simulation_example/sim_3/iteration_2/dhdl.xvg: -------------------------------------------------------------------------------- 1 | # This file was created Mon Jun 19 04:08:44 2023 2 | # Created by: 3 | # :-) GROMACS - gmx mdrun, 2022.5-dev-20230428-fdf57150ad (-: 4 | # 5 | # Executable: /jet/home/wehs7661/pkgs/gromacs/2022.5/bin/gmx 6 | # Data prefix: /jet/home/wehs7661/pkgs/gromacs/2022.5 7 | # Working dir: /ocean/projects/cts160011p/wehs7661/EEXE_experiments/Anthracene/EEXE/fixed_weight/Redo/test_7/sim_3/iteration_2 8 | # Command line: 9 | # gmx mdrun -s sys_EE.tpr -nt 16 -ntmpi 1 10 | # gmx mdrun is part of G R O M A C S: 11 | # 12 | # GROup of MAchos and Cynical Suckers 13 | # 14 | @ title "dH/d\xl\f{} and \xD\f{}H" 15 | @ xaxis label "Time (ps)" 16 | @ yaxis label "dH/d\xl\f{} and \xD\f{}H (kJ/mol [\xl\f{}]\S-1\N)" 17 | @TYPE xy 18 | @ subtitle "T = 300 (K) " 19 | @ view 0.15, 0.15, 0.75, 0.85 20 | @ legend on 21 | @ legend box on 22 | @ legend loctype view 23 | @ legend 0.78, 0.8 24 | @ legend length 2 25 | @ s0 legend "Thermodynamic state" 26 | @ s1 legend "Total Energy (kJ/mol)" 27 | @ s2 legend "dH/d\xl\f{} vdw-lambda = 0.8600" 28 | @ s3 legend "\xD\f{}H \xl\f{} to 0.5700" 29 | @ s4 legend "\xD\f{}H \xl\f{} to 0.6800" 30 | @ s5 legend "\xD\f{}H \xl\f{} to 0.7600" 31 | @ s6 legend "\xD\f{}H \xl\f{} to 0.8600" 32 | @ s7 legend "\xD\f{}H \xl\f{} to 1.0000" 33 | 8.0000 3 -34784.020 -77.079910 103.68410 38.166362 14.101582 0.0000000 -2.3011742 34 | 8.2000 3 -34860.699 -58.251957 86.461296 31.417711 11.356713 0.0000000 -0.75197034 35 | 8.4000 3 -34859.223 -16.553837 54.195003 18.130927 5.7016413 0.0000000 3.2131857 36 | 8.6000 2 -34805.293 -131.15421 58.714853 15.259576 0.0000000 -7.6177195 -5.4159167 37 | 8.8000 3 -34891.207 -74.783188 98.909443 36.761498 13.646595 0.0000000 -2.1796022 38 | 9.0000 3 -34795.844 -85.563187 106.10056 39.968034 15.062222 0.0000000 -3.2385274 39 | 9.2000 3 -34817.168 -62.806141 89.513820 32.832173 11.981368 0.0000000 -1.1259146 40 | 9.4000 2 -34871.062 -132.36244 57.814263 15.243424 0.0000000 -7.8148593 -5.9443458 41 | 9.6000 2 -34903.781 -51.724876 31.809730 7.2676394 0.0000000 -1.5270443 4.9536180 42 | 9.8000 2 -34873.547 -65.990837 37.090620 8.7470559 0.0000000 -2.6001132 3.1049916 43 | 10.0000 2 -34842.301 -68.331505 36.699844 8.8441776 0.0000000 -2.8967041 2.3632594 44 | 10.2000 2 -34814.570 -28.212650 23.207305 4.8157071 0.0000000 0.18411137 7.6140201 45 | 10.4000 1 -34842.922 -17.237011 6.6958868 0.0000000 0.43287851 4.8234432 15.423047 46 | 10.6000 1 -34889.977 -50.003258 11.445712 0.0000000 -1.7323375 0.94870832 10.348200 47 | 10.8000 2 -34907.156 -159.88383 67.373923 17.997990 0.0000000 -9.9937868 -9.9714539 48 | 11.0000 3 -34936.309 -77.132729 98.832614 36.886646 13.790942 0.0000000 -2.6671138 49 | 11.2000 3 -34800.629 -68.980125 94.532006 34.906907 12.851202 0.0000000 -1.6614399 50 | 11.4000 3 -34740.562 -113.63854 129.12077 49.226807 18.943248 0.0000000 -5.8271056 51 | 11.6000 4 -34780.863 11.287065 139.94837 58.477653 27.002308 6.8633881 0.0000000 52 | 11.8000 3 -34739.133 -155.06459 154.36888 60.818883 24.201765 0.0000000 -10.067938 53 | 12.0000 4 -34730.758 -16.987450 183.54891 80.260639 39.675461 12.434976 0.0000000 54 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/expanded.mdp: -------------------------------------------------------------------------------- 1 | ; Run control 2 | integrator = md-vv 3 | tinit = 0 4 | dt = 0.002 5 | nsteps = 500 6 | comm_mode = Linear 7 | nstcomm = 1 8 | nstfout = 0 9 | 10 | ; Output control 11 | nstlog = 100 12 | nstcalcenergy = 1 13 | nstenergy = 1000 14 | nstxout_compressed = 100 15 | 16 | ; Neighborsearching and short-range nonbonded interactions 17 | nstlist = 10 18 | ns_type = grid 19 | pbc = xyz 20 | rlist = 1.0 21 | 22 | ; Electrostatics 23 | cutoff_scheme = verlet 24 | coulombtype = PME 25 | coulomb_modifier = Potential-shift-Verlet 26 | rcoulomb_switch = 0.89 27 | rcoulomb = 0.9 28 | 29 | ; van der Waals 30 | vdw_type = Cut-off 31 | vdw_modifier = Potential-switch 32 | rvdw_switch = 0.85 33 | rvdw = 0.9 34 | 35 | ; Apply long range dispersion corrections for Energy and Pressure 36 | DispCorr = AllEnerPres 37 | 38 | ; Spacing for the PME/PPPM FFT grid 39 | fourierspacing = 0.1 40 | 41 | ; EWALD/PME/PPPM parameters 42 | fourier_nx = 0 43 | fourier_ny = 0 44 | fourier_nz = 0 45 | pme_order = 4 46 | ewald_rtol = 1e-05 47 | ewald_geometry = 3d 48 | epsilon_surface = 0 49 | 50 | ; Temperature coupling 51 | tcoupl = v-rescale 52 | nsttcouple = 1 53 | tc_grps = System 54 | tau_t = 0.5 55 | ref_t = 298 56 | 57 | ; Pressure coupling is on for NPT 58 | pcoupl = no 59 | 60 | ; refcoord_scaling should do nothing since there are no position restraints. 61 | 62 | gen_vel = yes 63 | gen_temp = 298 64 | gen_seed = -1 65 | 66 | ; options for bonds 67 | constraints = h-bonds 68 | 69 | ; Type of constraint algorithm 70 | constraint_algorithm = lincs 71 | continuation = no 72 | 73 | ; Highest order in the expansion of the constraint coupling matrix 74 | lincs_order = 12 75 | lincs_iter = 2 76 | 77 | ; Free energy calculation 78 | free_energy = expanded 79 | calc_lambda_neighbors = -1 80 | sc_alpha = 0.5 81 | couple_moltype = LIG 82 | couple_lambda0 = vdw-q 83 | couple_lambda1 = none 84 | couple_intramol = no 85 | init_lambda_state = 0 86 | 87 | nstdhdl = 10 88 | dhdl_print_energy = total 89 | 90 | ; Seed for Monte Carlo in lambda space 91 | lmc_seed = -1 92 | lmc_gibbsdelta = -1 93 | lmc_forced_nstart = 0 94 | symmetrized_transition_matrix = yes 95 | nst_transition_matrix = 100000 96 | wl_scale = 0.8 97 | wl_ratio = 0.8 98 | init_wl_delta = 0.5 99 | 100 | ; expanded ensemble variables 101 | nstexpanded = 10 102 | lmc_stats = wang-landau 103 | lmc_move = metropolized-gibbs 104 | lmc_weights_equil = wl-delta 105 | weight_equil_wl_delta = 0.001 106 | 107 | ; lambda-states = 1 2 3 4 5 6 7 8 9 108 | coul_lambdas = 0.0 0.25 0.5 0.75 1.0 1.0 1.0 1.0 1.0 109 | vdw_lambdas = 0.0 0.0 0.0 0.0 0.0 0.25 0.5 0.75 1.0 110 | init_lambda_weights = 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 111 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/expanded_pull.mdp: -------------------------------------------------------------------------------- 1 | ; Run control 2 | integrator = md-vv 3 | tinit = 0 4 | dt = 0.002 5 | nsteps = 100000000 6 | nstcomm = 10 7 | 8 | ; Output control 9 | nstlog = 1000 10 | nstcalcenergy = 10 11 | nstenergy = 1000 12 | nstxout_compressed = 1000 13 | 14 | ; Neighborsearching and short-range nonbonded interactions 15 | nstlist = 10 16 | ns_type = grid 17 | pbc = xyz 18 | rlist = 1.3 19 | 20 | ; Electrostatics 21 | coulombtype = PME-switch 22 | rcoulomb_switch = 0.88 23 | rcoulomb = 0.9 24 | 25 | ; van der Waals 26 | vdw_type = switch 27 | rvdw_switch = 0.85 28 | rvdw = 0.9 29 | 30 | ; Apply long range dispersion corrections for Energy and Pressure 31 | DispCorr = AllEnerPres 32 | 33 | ; Spacing for the PME/PPPM FFT grid 34 | fourierspacing = 0.12 35 | 36 | ; EWALD/PME/PPPM parameters 37 | pme_order = 4 38 | ewald_rtol = 1e-05 39 | ewald_geometry = 3d 40 | epsilon_surface = 0 41 | optimize_fft = yes 42 | 43 | ; Temperature coupling 44 | tcoupl = nose-hoover 45 | nsttcouple = 10 46 | tc_grps = System 47 | tau_t = 1.0 48 | ref_t = 300 49 | 50 | ; Pressure coupling is on for NPT 51 | pcoupl = no 52 | 53 | gen_vel = yes 54 | gen_temp = 300 55 | gen_seed = -1 56 | 57 | ; options for bonds 58 | constraints = h-bonds 59 | 60 | ; Type of constraint algorithm 61 | constraint_algorithm = shake 62 | shake_tol = 1e-05 63 | 64 | ; Free energy calculation 65 | free_energy = expanded 66 | calc_lambda_neighbors = -1 67 | sc_alpha = 0.5 68 | sc_power = 1 69 | sc_sigma = 0.5 70 | couple_moltype = MOL 71 | couple_lambda0 = vdw-q 72 | couple_lambda1 = none 73 | couple_intramol = no 74 | init_lambda_state = 0 75 | nstdhdl = 100 76 | dhdl_print_energy = total 77 | 78 | ; Seed for Monte Carlo in lambda space 79 | symmetrized_transition_matrix = no 80 | nst_transition_matrix = 100000 81 | ; wl-scale = 0.8 82 | ; wl-ratio = 0.7 83 | ; init-wl-delta = 10 84 | 85 | ; expanded ensemble variables 86 | nstexpanded = 100 87 | lmc_stats = no 88 | lmc_move = metropolized-gibbs 89 | ; lmc-weights-equil = wl-delta 90 | ; weight-equil-wl-delta = 0.001 91 | ; wl-oneovert = yes 92 | 93 | ; lambda-states = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 94 | 95 | coul_lambdas = 0.0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 96 | vdw_lambdas = 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.2 0.3 0.4 0.45 0.5 0.55 0.6 0.63 0.66 0.69 0.72 0.75 0.78 0.81 0.84 0.88 0.92 1.0 97 | 98 | ; PULL CODE 99 | pull = yes 100 | pull_ngroups = 2 101 | pull_ncoords = 1 102 | pull_group1_name = HOS 103 | pull_group2_name = MOL 104 | pull_pbc_ref_prev_step_com = yes 105 | 106 | pull_coord1_groups = 1 2 107 | pull_coord1_type = umbrella 108 | pull_coord1_geometry = distance 109 | pull_coord1_dim = Y Y Y 110 | pull_coord1_origin = 0.0 0.0 0.0 111 | pull_coord1_vec = 0.0 0.0 0.0 112 | pull_coord1_start = yes 113 | pull_coord1_init = 0 114 | pull_coord1_rate = 0 115 | pull_coord1_k = 0 116 | pull_coord1_kB = 1000 117 | pull_nstfout = 400000 118 | pull_nstxout = 1000 119 | pull_print_ref_value = yes 120 | 121 | restraint_lambdas = 0.0 0.0 0.0 0.0 0.0 0.0 0.01 0.05 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 0.95 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 122 | init_lambda_weights = 0.0 57.88597 112.71883 163.84425 210.48097 253.80261 294.79849 333.90408 370.82669 406.02515 438.53116 468.53751 496.24649 521.58417 544.57404 565.26697 583.7337 599.60651 613.43958 624.70471 633.95947 638.29785 642.44977 646.33551 649.91626 651.54779 652.93359 654.13263 654.94073 655.13086 655.07239 654.66443 653.68683 652.32123 650.72308 649.2381 647.94586 646.599 645.52063 643.99133 123 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/mdp/compare_1.mdp: -------------------------------------------------------------------------------- 1 | ; Run control 2 | integrator = md-vv 3 | tinit = 0 4 | dt = 0.002 5 | nsteps = 100000000 6 | nstcomm = 10 7 | 8 | ; Output control 9 | nstlog = 1000 10 | nstcalcenergy = 10 11 | nstenergy = 1000 12 | nstxout_compressed = 1000 13 | 14 | ; Neighborsearching and short-range nonbonded interactions 15 | nstlist = 10 16 | ns_type = grid 17 | pbc = xyz 18 | rlist = 1.3 19 | 20 | ; Electrostatics 21 | coulombtype = PME-switch 22 | rcoulomb_switch = 0.88 23 | rcoulomb = 0.9 24 | 25 | ; van der Waals 26 | vdw_type = switch 27 | rvdw_switch = 0.85 28 | rvdw = 0.9 29 | 30 | ; Apply long range dispersion corrections for Energy and Pressure 31 | DispCorr = AllEnerPres 32 | 33 | ; Spacing for the PME/PPPM FFT grid 34 | fourierspacing = 0.12 35 | 36 | ; EWALD/PME/PPPM parameters 37 | pme_order = 4 38 | ewald_rtol = 1e-05 39 | ewald_geometry = 3d 40 | epsilon_surface = 0 41 | optimize_fft = yes 42 | 43 | ; Temperature coupling 44 | tcoupl = nose-hoover 45 | nsttcouple = 10 46 | tc_grps = System 47 | tau_t = 1.0 48 | ref_t = 300 49 | 50 | ; Pressure coupling is on for NPT 51 | pcoupl = no 52 | 53 | gen_vel = yes 54 | gen_temp = 300 55 | gen_seed = -1 56 | 57 | ; options for bonds 58 | constraints = h-bonds 59 | 60 | ; Type of constraint algorithm 61 | constraint_algorithm = shake 62 | shake_tol = 1e-05 63 | 64 | ; Free energy calculation 65 | free_energy = expanded 66 | calc_lambda_neighbors = -1 67 | sc_alpha = 0.5 68 | sc_power = 1 69 | sc_sigma = 0.5 70 | couple_moltype = MOL 71 | couple_lambda0 = vdw-q 72 | couple_lambda1 = none 73 | couple_intramol = no 74 | init_lambda_state = 0 75 | nstdhdl = 100 76 | dhdl_print_energy = total 77 | 78 | ; Seed for Monte Carlo in lambda space 79 | symmetrized_transition_matrix = no 80 | nst_transition_matrix = 100000 81 | ; wl-scale = 0.8 82 | ; wl-ratio = 0.7 83 | ; init-wl-delta = 10 84 | 85 | ; expanded ensemble variables 86 | nstexpanded = 100 87 | lmc_stats = no 88 | lmc_move = metropolized-gibbs 89 | ; lmc-weights-equil = wl-delta 90 | ; weight-equil-wl-delta = 0.001 91 | ; wl-oneovert = yes 92 | 93 | ; lambda-states = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 94 | 95 | coul_lambdas = 0.0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 96 | vdw_lambdas = 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.2 0.3 0.4 0.45 0.5 0.55 0.6 0.63 0.66 0.69 0.72 0.75 0.78 0.81 0.84 0.88 0.92 1.0 97 | 98 | ; PULL CODE 99 | pull = yes 100 | pull_ngroups = 2 101 | pull_ncoords = 1 102 | pull_group1_name = HOS 103 | pull_group2_name = MOL 104 | pull_pbc_ref_prev_step_com = yes 105 | 106 | pull_coord1_groups = 1 2 107 | pull_coord1_type = umbrella 108 | pull_coord1_geometry = distance 109 | pull_coord1_dim = Y Y Y 110 | pull_coord1_origin = 0.0 0.0 0.0 111 | pull_coord1_vec = 0.0 0.0 0.0 112 | pull_coord1_start = yes 113 | pull_coord1_init = 0 114 | pull_coord1_rate = 0 115 | pull_coord1_k = 0 116 | pull_coord1_kB = 1000 117 | pull_nstfout = 400000 118 | pull_nstxout = 1000 119 | pull-print-ref-value = yes 120 | 121 | restraint_lambdas = 0.0 0.0 0.0 0.0 0.0 0.0 0.01 0.05 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 0.95 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 122 | init_lambda_weights = 0.0 57.88597 112.71883 163.84425 210.48097 253.80261 294.79849 333.90408 370.82669 406.02515 438.53116 468.53751 496.24649 521.58417 544.57404 565.26697 583.7337 599.60651 613.43958 624.70471 633.95947 638.29785 642.44977 646.33551 649.91626 651.54779 652.93359 654.13263 654.94073 655.13086 655.07239 654.66443 653.68683 652.32123 650.72308 649.2381 647.94586 646.599 645.52063 643.99133 123 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/mdp/compare_2.mdp: -------------------------------------------------------------------------------- 1 | ; Run control 2 | integrator = md-vv 3 | tinit = 0 4 | dt = 0.002 5 | nsteps = 100000000 6 | nstcomm = 10 7 | 8 | ; Output control 9 | nstlog = 1000 10 | nstcalcenergy = 10 11 | nstenergy = 1000 12 | nstxout_compressed = 1000 13 | 14 | ; Neighborsearching and short-range nonbonded interactions 15 | nstlist = 10 16 | ns_type = grid 17 | pbc = xyz 18 | rlist = 1.3 19 | 20 | ; Electrostatics 21 | coulombtype = PME-switch 22 | rcoulomb_switch = 0.88 23 | rcoulomb = 0.9 24 | 25 | ; van der Waals 26 | vdw_type = switch 27 | rvdw_switch = 0.85 28 | rvdw = 0.9 29 | 30 | ; Apply long range dispersion corrections for Energy and Pressure 31 | DispCorr = AllEnerPres 32 | 33 | ; Spacing for the PME/PPPM FFT grid 34 | fourierspacing = 0.12 35 | 36 | ; EWALD/PME/PPPM parameters 37 | pme_order = 4 38 | ewald_rtol = 1e-05 39 | ewald_geometry = 3d 40 | epsilon_surface = 0 41 | optimize_fft = yes 42 | 43 | ; Temperature coupling 44 | tcoupl = nose-hoover 45 | nsttcouple = 10 46 | tc_grps = System 47 | tau_t = 1.0 48 | ref_t = 300 49 | 50 | ; Pressure coupling is on for NPT 51 | pcoupl = no 52 | 53 | gen_vel = yes 54 | gen_temp = 300 55 | gen_seed = -1 56 | 57 | ; options for bonds 58 | constraints = h-bonds 59 | 60 | ; Type of constraint algorithm 61 | constraint_algorithm = shake 62 | shake_tol = 1e-05 63 | 64 | ; Free energy calculation 65 | free_energy = expanded 66 | calc_lambda_neighbors = -1 67 | sc_alpha = 0.5 68 | sc_power = 1 69 | sc_sigma = 0.5 70 | couple_moltype = MOL 71 | couple_lambda0 = vdw-q 72 | couple_lambda1 = none 73 | couple_intramol = no 74 | init_lambda_state = 0 75 | nstdhdl = 100 76 | dhdl_print_energy = total 77 | 78 | ; Seed for Monte Carlo in lambda space 79 | symmetrized_transition_matrix = no 80 | nst_transition_matrix = 100000 81 | ; wl-scale = 0.8 82 | ; wl-ratio = 0.7 83 | ; init-wl-delta = 10 84 | 85 | ; expanded ensemble variables 86 | nstexpanded = 100 87 | lmc_stats = no 88 | lmc_move = metropolized-gibbs 89 | ; lmc-weights-equil = wl-delta 90 | ; weight-equil-wl-delta = 0.001 91 | ; wl-oneovert = yes 92 | 93 | ; lambda-states = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 94 | 95 | coul_lambdas = 0.0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 96 | vdw_lambdas = 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.2 0.3 0.4 0.45 0.5 0.55 0.6 0.63 0.66 0.69 0.72 0.75 0.78 0.81 0.84 0.88 0.92 1.0 97 | 98 | ; PULL CODE 99 | pull = yes 100 | pull_ngroups = 2 101 | pull_ncoords = 1 102 | pull_group1_name = HOS 103 | pull_group2_name = MOL 104 | pull_pbc_ref_prev_step_com = yes 105 | 106 | pull_coord1_groups = 1 2 107 | pull_coord1_type = umbrella 108 | pull_coord1_geometry = distance 109 | pull_coord1_dim = Y Y Y 110 | pull_coord1_origin = 0.0 0.0 0.0 111 | pull_coord1_vec = 0.0 0.0 0.0 112 | pull_coord1_start = yes 113 | pull_coord1_init = 0 114 | pull_coord1_rate = 0 115 | pull_coord1_k = 0 116 | pull_coord1_kB = 1000 117 | pull_nstfout = 400000 118 | pull_nstxout = 1000 119 | pull_print_ref_value = yes 120 | 121 | restraint_lambdas = 0.0 0.0 0.0 0.0 0.0 0.0 0.01 0.05 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 0.95 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 122 | init_lambda_weights = 0.0 57.88597 112.71883 163.84425 210.48097 253.80261 294.79849 333.90408 370.82669 406.02515 438.53116 468.53751 496.24649 521.58417 544.57404 565.26697 583.7337 599.60651 613.43958 624.70471 633.95947 638.29785 642.44977 646.33551 649.91626 651.54779 652.93359 654.13263 654.94073 655.13086 655.07239 654.66443 653.68683 652.32123 650.72308 649.2381 647.94586 646.599 645.52063 643.99133 123 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/mdp/compare_3.mdp: -------------------------------------------------------------------------------- 1 | ; Run control 2 | integrator = md-vv 3 | tinit = 0 4 | dt = 0.002 5 | nsteps = 100000000 6 | nstcomm = 10 7 | 8 | ; Output control 9 | nstlog = 1000 10 | nstcalcenergy = 10 11 | nstenergy = 1000 12 | nstxout_compressed = 1000 13 | 14 | ; Neighborsearching and short-range nonbonded interactions 15 | nstlist = 10 16 | ns_type = grid 17 | pbc = xyz 18 | rlist = 1.3 19 | 20 | ; Electrostatics 21 | coulombtype = PME-switch 22 | rcoulomb_switch = 0.88 23 | rcoulomb = 0.9 24 | 25 | ; van der Waals 26 | vdw_type = switch 27 | rvdw_switch = 0.85 28 | rvdw = 0.9 29 | 30 | ; Apply long range dispersion corrections for Energy and Pressure 31 | DispCorr = AllEnerPres 32 | 33 | ; Spacing for the PME/PPPM FFT grid 34 | fourierspacing = 0.12 35 | 36 | ; EWALD/PME/PPPM parameters 37 | pme_order = 4 38 | ewald_rtol = 1e-05 39 | ewald_geometry = 3d 40 | epsilon_surface = 0 41 | optimize_fft = yes 42 | 43 | ; Temperature coupling 44 | tcoupl = nose-hoover 45 | nsttcouple = 10 46 | tc_grps = System 47 | tau_t = 1.0 48 | ref_t = 300 49 | 50 | ; Pressure coupling is on for NPT 51 | pcoupl = no 52 | 53 | gen_vel = yes 54 | gen_temp = 300 55 | gen_seed = -1 56 | 57 | ; options for bonds 58 | constraints = h-bonds 59 | 60 | ; Type of constraint algorithm 61 | constraint_algorithm = shake 62 | shake_tol = 1e-05 63 | 64 | ; Free energy calculation 65 | free_energy = expanded 66 | calc_lambda_neighbors = -1 67 | sc_alpha = 0.5 68 | sc_power = 1 69 | sc_sigma = 0.5 70 | couple_moltype = MOL 71 | couple_lambda0 = vdw-q 72 | couple_lambda1 = none 73 | couple_intramol = no 74 | init_lambda_state = 0 75 | nstdhdl = 10 76 | dhdl_print_energy = total 77 | 78 | ; Seed for Monte Carlo in lambda space 79 | lmc_seed = -1 80 | symmetrized_transition_matrix = no 81 | nst_transition_matrix = 100000 82 | wl_scale = 0.8 83 | wl_ratio = 0.7 84 | init_wl_delta = 10 85 | 86 | ; expanded ensemble variables 87 | nstexpanded = 10 88 | lmc_stats = wang-landau 89 | lmc_move = metropolized-gibbs 90 | lmc_weights_equil = wl-delta 91 | weight_equil_wl_delta = 0.001 92 | wl_oneovert = yes 93 | 94 | ; lambda-states = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 95 | 96 | coul_lambdas = 0.0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 97 | vdw_lambdas = 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.2 0.3 0.4 0.45 0.5 0.55 0.6 0.63 0.66 0.69 0.72 0.75 0.78 0.81 0.84 0.88 0.92 1.0 98 | 99 | ; PULL CODE 100 | pull = yes 101 | pull_ngroups = 2 102 | pull_ncoords = 1 103 | pull_group1_name = HOS 104 | pull_group2_name = MOL 105 | pull_pbc_ref_prev_step_com = yes 106 | 107 | pull_coord1_groups = 1 2 108 | pull_coord1_type = umbrella 109 | pull_coord1_geometry = distance 110 | pull_coord1_dim = Y Y Y 111 | pull_coord1_origin = 0.0 0.0 0.0 112 | pull_coord1_vec = 0.0 0.0 0.0 113 | pull_coord1_start = yes 114 | pull_coord1_init = 0 115 | pull_coord1_rate = 0 116 | pull_coord1_k = 0 117 | pull_coord1_kB = 1000 118 | pull_nstfout = 400000 119 | pull_nstxout = 1000 120 | pull_print_ref_value = yes 121 | 122 | restraint_lambdas = 0.0 0.0 0.0 0.0 0.0 0.0 0.01 0.05 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 0.95 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 123 | 124 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/pullx.xvg: -------------------------------------------------------------------------------- 1 | # This file was created Thu Feb 15 02:05:13 2024 2 | # Created by: 3 | # :-) GROMACS - gmx mdrun, 2022.5-dev-20230428-fdf57150ad (-: 4 | # 5 | # Executable: /jet/home/wehs7661/pkgs/gromacs/2022.5/bin/gmx 6 | # Data prefix: /jet/home/wehs7661/pkgs/gromacs/2022.5 7 | # Working dir: /ocean/projects/bio230014p/wehs7661/EEXE_experiments/CB7-10/complex/REXEE/fixed/Group_1/test_1/rep_1/sim_0/iteration_0 8 | # Command line: 9 | # gmx mdrun -s sys_EE.tpr -nt 16 -ntmpi 1 10 | # gmx mdrun is part of G R O M A C S: 11 | # 12 | # GROwing Monsters And Cloning Shrimps 13 | # 14 | @ title "Pull COM" 15 | @ xaxis label "Time (ps)" 16 | @ yaxis label "Position (nm)" 17 | @TYPE xy 18 | @ view 0.15, 0.15, 0.75, 0.85 19 | @ legend on 20 | @ legend box on 21 | @ legend loctype view 22 | @ legend 0.78, 0.8 23 | @ legend length 2 24 | @ s0 legend "1" 25 | @ s1 legend "1 ref" 26 | 0.0000 0.428422 0.428422 27 | 2.0000 0.457696 0.428422 28 | 4.0000 0.374694 0.428422 29 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/sys.top: -------------------------------------------------------------------------------- 1 | ; 2 | ; File system.top was generated 3 | ; By user: wei-tse (1000) 4 | ; On host: castlepeak 5 | ; At date: Mon. April 1 23:27:50 2020 6 | ; 7 | ; This is a standalone topology file 8 | ; 9 | ; Created by: 10 | ; ParmEd: openff.py, VERSION 3.2.0 11 | ; Executable: openff.py 12 | ; Library dir: /usr/local/gromacs/share/gromacs/top 13 | ; Command line: 14 | ; openff.py 15 | ; 16 | 17 | [ defaults ] 18 | ; nbfunc comb-rule gen-pairs fudgeLJ fudgeQQ 19 | 1 2 no 1 0.83333 20 | 21 | [ atomtypes ] 22 | ; name at.num mass charge ptype sigma epsilon 23 | C 6 10.0 0.0000 A 0.35 0.5 24 | OW 8 16.00 0.0000 A 3.15061e-01 6.36386e-01 25 | HW 1 1.008 0.0000 A 0.00000e+00 0.00000e+00 26 | 27 | [ moleculetype ] 28 | ; Name nrexcl 29 | LIG 3 30 | 31 | [ atoms ] 32 | ; nr type resnr residue atom cgnr charge mass typeB chargeB massB 33 | ; residue 1 LIG rtp LIG q -0.0 34 | 1 C 1 LIG C1 1 0.2 10.0 35 | 2 C 1 LIG C2 2 0.0 10.0 36 | 3 C 1 LIG C3 3 0.0 10.0 37 | 4 C 1 LIG C4 4 -0.2 10.0 38 | 39 | [ bonds ] 40 | ; ai aj funct c0 c1 c2 c3 41 | 1 2 1 0.15 400000 42 | 2 3 1 0.15 400000 43 | 3 4 1 0.15 400000 44 | 45 | [ pairs ] 46 | ; ai aj funct c0 c1 c2 c3 47 | 1 4 1 0.35 0.5 48 | 49 | [ angles ] 50 | ; ai aj ak funct c0 c1 c2 c3 51 | 1 2 3 1 120.0 500.0 52 | 2 3 4 1 120.0 500.0 53 | 54 | [ dihedrals ] 55 | ; ai aj ak al funct c0 c1 c2 c3 c4 c5 56 | 1 2 3 4 1 180.0000000 60.000 2 57 | 58 | ; Include water topology 59 | #include "amber99sb-ildn.ff/tip3p.itp" 60 | 61 | [ system ] 62 | ; Name 63 | Generic title in water 64 | 65 | [ molecules ] 66 | ; Compound #mols 67 | LIG 1 68 | SOL 839 69 | -------------------------------------------------------------------------------- /ensemble_md/tests/data/traj.xvg: -------------------------------------------------------------------------------- 1 | # This file was created by ensemble_md 2 | # Time (ps) v.s. CV 3 | 0.0 0.000000 4 | 2000.0 0.000000 5 | 4000.0 6.000000 6 | 6000.0 19.000000 7 | 8000.0 2.000000 8 | 10000.0 19.000000 9 | 12000.0 9.000000 10 | 14000.0 34.000000 11 | 16000.0 27.000000 12 | 18000.0 17.000000 13 | 20000.0 12.000000 14 | 22000.0 9.000000 15 | 24000.0 6.000000 16 | 26000.0 0.000000 17 | 28000.0 37.000000 18 | 30000.0 0.000000 19 | 32000.0 15.000000 20 | 34000.0 25.000000 21 | 36000.0 19.000000 22 | 38000.0 13.000000 23 | 40000.0 38.000000 24 | 42000.0 0.000000 25 | 44000.0 34.000000 26 | 46000.0 9.000000 27 | 48000.0 39.000000 28 | 50000.0 12.000000 29 | -------------------------------------------------------------------------------- /ensemble_md/tests/test_synthesize_data.py: -------------------------------------------------------------------------------- 1 | #################################################################### 2 | # # 3 | # ensemble_md, # 4 | # a python package for running GROMACS simulation ensembles # 5 | # # 6 | # Written by Wei-Tse Hsu # 7 | # Copyright (c) 2022 University of Colorado Boulder # 8 | # # 9 | #################################################################### 10 | """ 11 | Unit tests for the module synthesize_data.py. 12 | """ 13 | import pytest 14 | import numpy as np 15 | from ensemble_md.analysis import synthesize_data 16 | 17 | 18 | def test_synthesize_traj(): 19 | 20 | # Test 1: method == 'transmtx', check_row == N 21 | trans_mtx = np.array([[0.5, 0.5], [0.7, 0.3]]) 22 | syn_traj = synthesize_data.synthesize_traj(trans_mtx, method='transmtx', start=1) 23 | assert syn_traj.shape[0] == 100000 24 | assert syn_traj[0] == 1 25 | 26 | # Test 2: method == 'transmtx', check_col == N 27 | trans_mtx = np.array([[0.5, 0.7], [0.5, 0.3]]) 28 | syn_traj = synthesize_data.synthesize_traj(trans_mtx, n_frames=1000) 29 | assert syn_traj.shape[0] == 1000 30 | assert syn_traj[0] == 0 31 | 32 | # Test 3: method == 'transmtx', not normalized / invalid method 33 | trans_mtx = np.array([[0.2, 0.3], [0.5, 0.2]]) 34 | with pytest.raises(ValueError, match='The input matrix is not normalized.'): 35 | synthesize_data.synthesize_traj(trans_mtx, method='transmtx') 36 | with pytest.raises(ValueError, match='Invalid method: test. The method must be either "transmtx" or "equil_prob".'): # noqa: E501 37 | synthesize_data.synthesize_traj(trans_mtx, method='test') 38 | 39 | # Test 4: method == 'equil_prob' (Note that start should be ignored.) 40 | trans_mtx = np.array([[0.5, 0.5], [0.5, 0.5]]) 41 | syn_traj = synthesize_data.synthesize_traj(trans_mtx, method='equil_prob', start=0) 42 | assert syn_traj.shape[0] == 100000 43 | 44 | # Test 5: Invalid value for start 45 | with pytest.raises(ValueError, match='The starting state 2 is out of the range of the input transition matrix.'): 46 | synthesize_data.synthesize_traj(trans_mtx, start=2) 47 | 48 | 49 | def test_synthesize_transmtx(): 50 | trans_mtx = np.array([[0.5, 0.5], [0.7, 0.3]]) 51 | result = synthesize_data.synthesize_transmtx(trans_mtx, n_frames=1000000, seed=0) # This should generate a diff_mtx close enough to a zero matrix. # noqa: E501 52 | 53 | assert np.allclose(result[0], np.array([[0.5, 0.5], [0.7, 0.3]]), atol=0.01) 54 | assert len(result[1]) == 1000000 55 | assert np.allclose(result[2], np.array([[0, 0], [0, 0]]), atol=0.01) # Basically the same as the first assertion 56 | -------------------------------------------------------------------------------- /ensemble_md/utils/exceptions.py: -------------------------------------------------------------------------------- 1 | #################################################################### 2 | # # 3 | # ensemble_md, # 4 | # a python package for running GROMACS simulation ensembles # 5 | # # 6 | # Written by Wei-Tse Hsu # 7 | # Copyright (c) 2022 University of Colorado Boulder # 8 | # # 9 | #################################################################### 10 | 11 | 12 | class ParameterError(Exception): 13 | """Error raised when detecting improperly specified parameters in the YAML file.""" 14 | 15 | 16 | class ParseError(Exception): 17 | """Error raised during parsing a file.""" 18 | -------------------------------------------------------------------------------- /environment.yml: -------------------------------------------------------------------------------- 1 | # Note that this file is only for setting up the Binder environment for tutorials 2 | dependencies: 3 | - gromacs=2023.3=nompi* 4 | - nglview 5 | - mpi4py 6 | - pip 7 | - tree 8 | - pip: 9 | - -e . 10 | -------------------------------------------------------------------------------- /example_outputs.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wehs7661/ensemble_md/5b7c6cd8b82f05fad7b2215ac0bfefc73e6e11e7/example_outputs.zip -------------------------------------------------------------------------------- /readthedocs.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | 3 | build: 4 | os: "ubuntu-22.04" 5 | tools: 6 | python: "3.8" 7 | 8 | python: 9 | install: 10 | - requirements: docs/requirements.txt 11 | 12 | 13 | -------------------------------------------------------------------------------- /setup.cfg: -------------------------------------------------------------------------------- 1 | # Helper file to handle all configs 2 | 3 | [coverage:run] 4 | # .coveragerc to control coverage.py and pytest-cov 5 | omit = 6 | # Omit the tests 7 | */tests/* 8 | # Omit generated versioneer 9 | ensemble_md/_version.py 10 | parallel = True 11 | 12 | [yapf] 13 | # YAPF, in .style.yapf files this shows up as "[style]" header 14 | COLUMN_LIMIT = 119 15 | INDENT_WIDTH = 4 16 | USE_TABS = False 17 | 18 | [flake8] 19 | # Flake8, PyFlakes, etc 20 | max-line-length = 119 21 | 22 | [versioneer] 23 | # Automatic version numbering scheme 24 | VCS = git 25 | style = pep440 26 | versionfile_source = ensemble_md/_version.py 27 | versionfile_build = ensemble_md/_version.py 28 | tag_prefix = '' 29 | 30 | [aliases] 31 | test = pytest 32 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | """ 2 | ensemble_md 3 | A repository for developing ensemble simulation methods 4 | """ 5 | import sys 6 | from setuptools import setup, find_packages 7 | import versioneer 8 | 9 | short_description = "A package for setting up, performing, and analyzing molecular dynamics ensembles using GROMACS".split("\n")[0] 10 | 11 | # from https://github.com/pytest-dev/pytest-runner#conditional-requirement 12 | needs_pytest = {'pytest', 'test', 'ptr'}.intersection(sys.argv) 13 | pytest_runner = ['pytest-runner'] if needs_pytest else [] 14 | 15 | try: 16 | with open("README.md", "r") as handle: 17 | long_description = handle.read() 18 | except FileNotFoundError: 19 | long_description = "\n".join(short_description[2:]) 20 | 21 | 22 | setup( 23 | # Self-descriptive entries which should always be present 24 | name='ensemble_md', 25 | author='Wei-Tse Hsu', 26 | author_email='wehs7661@colorado.edu', 27 | description=short_description, 28 | long_description=long_description, 29 | long_description_content_type="text/markdown", 30 | version=versioneer.get_version(), 31 | cmdclass=versioneer.get_cmdclass(), 32 | license='MIT', 33 | project_urls={ 34 | "Documentation": "https://ensemble-md.readthedocs.io/", 35 | "Source Code": "https://github.com/wehs7661/ensemble_md", 36 | }, 37 | keywords="molecular mechanics, free energy calculations, advanced sampling", 38 | 39 | # Describes the project using a list of classifiers (https://pypi.org/classifiers/) 40 | # This makes the project more searchable. 41 | classifiers=[ 42 | "Intended Audience :: Science/Research", 43 | "License :: OSI Approved :: MIT License", 44 | "Operating System :: POSIX", 45 | "Operating System :: MacOS :: MacOS X", 46 | "Operating System :: Microsoft :: Windows ", 47 | "Programming Language :: Python", 48 | "Programming Language :: Python :: 3", 49 | "Programming Language :: Python :: 3.8", 50 | "Programming Language :: Python :: 3.9", 51 | "Programming Language :: Python :: 3.10", 52 | "Programming Language :: Python :: 3.11", 53 | "Topic :: Scientific/Engineering", 54 | "Topic :: Scientific/Engineering :: Bio-Informatics", 55 | "Topic :: Scientific/Engineering :: Chemistry", 56 | "Topic :: Scientific/Engineering :: Physics", 57 | "Topic :: Software Development :: Libraries :: Python Modules", 58 | ], 59 | 60 | # Which Python importable modules should be included when your package is installed 61 | # Handled automatically by setuptools. Use 'exclude' to prevent some specific 62 | # subpackage(s) from being added, if needed 63 | packages=find_packages(), 64 | 65 | # Optional include package data to ship with your package 66 | # Customize MANIFEST.in if the general case does not suit your needs 67 | # Comment out this line or set include_package_data to False to prevent the files from being packaged with your software 68 | include_package_data=False, 69 | 70 | # Allows `setup.py test` to work correctly with pytest 71 | setup_requires=[] + pytest_runner, 72 | 73 | # Add entry points 74 | entry_points={ 75 | 'console_scripts':[ 76 | 'run_REXEE = ensemble_md.cli.run_REXEE:main', 77 | 'analyze_REXEE = ensemble_md.cli.analyze_REXEE:main', 78 | 'explore_REXEE = ensemble_md.cli.explore_REXEE:main', 79 | ], 80 | }, 81 | 82 | # Additional entries you may want simply uncomment the lines you want and fill in the data 83 | # url='https://github.com/wehs7661/ensemble_md', # Website 84 | 85 | # Required packages, pulls from pip if needed; do not use for Conda deployment 86 | install_requires=[ 87 | 'numpy', 88 | 'natsort', 89 | 'argparse', 90 | 'pymbar>=4.0.1', 91 | 'alchemlyb>=2.0.0', 92 | 'pyyaml', 93 | 'seaborn', 94 | 'matplotlib<=3.8.4', 95 | 'pyemma', 96 | 'mpi4py', 97 | 'ruptures' 98 | ], 99 | 100 | # (OBSOLETE) The following extra_require directive provides optional dependencies by, in our case, pip install ensemble[gmxapi]. 101 | # ensemble_md requires GROMACS and gmxapi to be installed before use. 102 | # If a working version of GROMACS is available, the user can choose to install ensemble_md along with gmxapi 103 | # using the following command: `pip install ensemble_md[gmxapi]`. Otherwise, follow installation 104 | # instructions of GROMACS and gmxapi to install each package separately. 105 | 106 | # extras_require={ 107 | # 'gmxapi': [ 108 | # 'pybind11>=2.6', 109 | # 'setuptools>=42.0', 110 | # 'gmxapi>=0.4.0rc2' 111 | # ], 112 | # }, 113 | 114 | platforms=['Linux', 115 | 'Mac OS-X', 116 | 'Unix', 117 | 'Windows'], # Valid platforms your code works on, adjust to your flavor 118 | 119 | python_requires=">=3.8", # Python version restrictions 120 | 121 | # Manual control if final package is compressible or not, set False to prevent the .egg from being made 122 | # zip_safe=False, 123 | 124 | ) 125 | --------------------------------------------------------------------------------