Skip to content

Commit 738d292

Browse files
authored
Merge pull request #151 from wolberlab/openmmdl-1.1.0
Openmmdl `1.1.0` Release
2 parents 2d49ef1 + 5380861 commit 738d292

File tree

82 files changed

+7390
-7665
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

82 files changed

+7390
-7665
lines changed

.github/workflows/CI-CD.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ jobs:
3838
3939
- name: Run black formatter
4040
run: |
41-
black -l 99 .
41+
black -l 99 . --exclude '\.ipynb$'
4242
4343
- name: Install pytest and run tests
4444
run: |

CHANGELOG.md

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,34 @@ The rules for this file:
1616
* accompany each entry with github issue/PR number (Issue #xyz)
1717
-->
1818

19-
## [Unreleased]
19+
## Version 1.1.0
2020

2121
### Authors
22-
<!-- GitHub usernames of contributors to this release -->
22+
talagayev, NDoering99
2323

2424
### Added
25-
<!-- New added features -->
25+
- Addition of option to select final frame in OpenMMDL Analysis (2025-04-23, Issue #136, PR #140)
26+
- Addition of `MDontallo` Visualization (2025-04-11)
27+
- Addition of `SMIRNOFF` small molecule force field (2025-04-10, Issue #76)
28+
- Addition of `PyMOL` support for visualization (2025-04-10)
29+
- Added `Dockerfile` for image creation (2025-04-10)
30+
- Addition of citation page in documentation (2025-04-10)
2631

2732
### Fixed
28-
<!-- Bug fixes -->
33+
- Fixed error cases, where `ligand name` was not specified (2025-04-22, Issue #138, PR #139)
34+
- Fixed wrong color of the positive and negative ionizable interactions (2025-04-21, PR #137)
35+
- Fixed the `XMLSerializer` error appearing during simulation (2025-04-10, Issue #122)
36+
- Fixed the `sanitization` implementation in OpenMMDL Setup (2025-04-09)
2937

3038
### Changed
31-
<!-- Changes in existing functionality -->
39+
- Scripts moved into `analysis`, `core` and visualization` sections (PR #149)
40+
- Functions `update_dict`, `combine_subdict_values`, `update_values`, `remove_duplicate_values`,
41+
`read_pdb_as_dataframe` and `filter_and_parse_pdb`were moved to `utils.py` (PR #149)
42+
- Classes `ImageMerger` and `FigureArranger` were moved to `image_handler.py`
43+
(2025-04-30, Issue #141, PR #142)
44+
- The class `TrajectorySaver` was moved to `trajectory_saving.py` (2025-04-24, Issue #141, PR #142)
45+
- Changed to the use of `RDKitConverter` for Ligand recognition
46+
without `-l` flag in `OpenMMDL Analysis` (2025-04-10)
3247

3348
### Deprecated
3449
<!-- Soon-to-be removed features -->

Dockerfile

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
FROM ubuntu:22.04
2+
3+
# Install Miniconda
4+
RUN apt-get update && apt-get install -y wget && \
5+
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh && \
6+
bash miniconda.sh -b -p /opt/conda && \
7+
rm miniconda.sh && \
8+
apt-get clean && rm -rf /var/lib/apt/lists/*
9+
10+
# Set environment variables
11+
ENV PATH="/opt/conda/bin:$PATH"
12+
13+
# Create and activate a conda environment
14+
RUN conda create --name openmmdl_env python=3.12 -y && \
15+
echo "conda activate openmmdl_env" >> ~/.bashrc
16+
17+
# Install OpenMM and other dependencies
18+
RUN conda install -n openmmdl_env -c conda-forge openmmdl -y
19+
20+
# Set environment variables for OpenMM
21+
ENV PATH /opt/conda/envs/openmmdl_env/bin:$PATH
22+
ENV CONDA_DEFAULT_ENV openmmdl_env
23+
24+
# Set working directory
25+
WORKDIR /app
26+
27+
# Copy the OpenMMDL repository that you already cloned locally
28+
COPY . /app
29+
30+
# Install OpenMMDL
31+
RUN pip install .
32+
33+
# Optional: install Jupyter if you want to run notebooks
34+
# RUN pip install jupyterlab
35+
36+
# Default command to run bash
37+
CMD ["/bin/bash"]

README.md

Lines changed: 42 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ OpenMMDL @ Molecular Design Lab
77

88
| **Release** | [![Last release tag][badge_release]][url_latest_release] ![GitHub commits since latest release (by date) for a branch][badge_commits_since]|
99
| :----------------- | :------- |
10-
| **Availability** | [![Condaforge][badge_conda_forge]][url_conda_forge]|
10+
| **Availability** | [![Condaforge][badge_conda_forge]][url_conda_forge] ![Docker][badge_docker]|
1111
| **Workflows** | ![CI_CD][badge_ci_cd] ![CodeQL][badge_codeql]|
1212
| **Documentation** | [![docs][badge_docs]][url_docs] [![codecov][badge_codecov]][url_codecov]|
1313
| **Dependencies** | [![rdkit][badge_rdkit]][url_rdkit] [![mdanalysis][badge_mda]][url_mda] [![Code style: black][badge_black]][url_black]|
@@ -25,6 +25,28 @@ http://openmmdl.readthedocs.io/
2525

2626
conda install -c conda-forge openmmdl
2727

28+
## Installation via docker
29+
30+
**OpenMMDL** is mainly supported for Linux distribution systems, thus for Windows and MacOS the installation with docker may be preferred,
31+
due to docker creating an image with ubuntu:22.04
32+
33+
For this first clone this repository
34+
35+
cd ~
36+
git clone https://github.com/wolberlab/OpenMMDL
37+
38+
change the path to the OpenMMDL folder and build the docker image from there
39+
40+
cd OpenMMDL
41+
docker build -t openmmdl_env .
42+
43+
This will build the OpenMMDL image with docker. Now that it is build you can access it through an interactive terminal
44+
45+
docker run -it --name openmmdl_test openmmdl_env
46+
47+
From there you can access all the OpenMMDL entry points. Currently due to OpenMMDL Setup using flask it can be difficult
48+
to access it through the docker image.
49+
2850
## Installation via repository
2951

3052
#### Clone this repository
@@ -157,16 +179,31 @@ Start the analysis with the following Inputs:
157179
#### Visualization
158180
Most of the analysis outputs are JEPG images and do not need any further preparation to be viewed.
159181

160-
For the visualization of your trajectory with interaction pointclouds you can use the jupyter notebook prepared in the **OpenMMDL** repository.
182+
For the visualization of your complex with interaction pointclouds you can use NGLView with the jupyter notebook prepared in the **OpenMMDL** repository or visualize the pointclouds in PyMOL.
161183

162-
Or use this command:
184+
### Usage
163185
```
164186
openmmdl_visualization
165187
```
166-
Then edit the notebook to include the output of your analysis.
188+
#### Optional:
189+
--type = Software you wish to visualize openmmdl interactions with. Options: nglview, pymol. Default: nglview
190+
#### NGLView
191+
After running the start comand a jupyter notebook will automatically open.
192+
Edit the notebook to include the output files of your analysis.
193+
Then run all cells.
194+
#### PyMOL
195+
After running the start comand a python skript will apear in your directory.
196+
Open up PyMOL then run these two comands in the PyMOL console:
197+
```
198+
run visualization_pymol.py
199+
openmdl_visualization PATH_TO_interacting_waters.pdb, modulePATH_TO_clouds.json
200+
```
167201
## Copyright
168202
Copyright (c) 2022, Valerij Talagayev, Yu Chen, Niklas Piet Doering & Leon Obendorf (Wolber lab)
169203

204+
### Citation
205+
If you use OpenMMDL in your research, please cite the following [paper](https://doi.org/10.1021/acs.jcim.4c02158).
206+
170207
#### Acknowledgments
171208

172209
The Script is based upon the OpenMM Toolkit [OpenMM](https://github.com/openmm)
@@ -194,6 +231,7 @@ This Project is based on the
194231
[badge_mda]: https://img.shields.io/badge/powered%20by-MDAnalysis-orange.svg?logoWidth=16&logo=data:image/x-icon;base64,AAABAAEAEBAAAAEAIAAoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJD+XwCY/fEAkf3uAJf97wGT/a+HfHaoiIWE7n9/f+6Hh4fvgICAjwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACT/yYAlP//AJ///wCg//8JjvOchXly1oaGhv+Ghob/j4+P/39/f3IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJH8aQCY/8wAkv2kfY+elJ6al/yVlZX7iIiI8H9/f7h/f38UAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38egYF/noqAebF8gYaagnx3oFpUUtZpaWr/WFhY8zo6OmT///8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAn46Ojv+Hh4b/jouJ/4iGhfcAAADnAAAA/wAAAP8AAADIAAAAAwCj/zIAnf2VAJD/PAAAAAAAAAAAAAAAAICAgNGHh4f/gICA/4SEhP+Xl5f/AwMD/wAAAP8AAAD/AAAA/wAAAB8Aov9/ALr//wCS/Z0AAAAAAAAAAAAAAACBgYGOjo6O/4mJif+Pj4//iYmJ/wAAAOAAAAD+AAAA/wAAAP8AAABhAP7+FgCi/38Axf4fAAAAAAAAAAAAAAAAiIiID4GBgYKCgoKogoB+fYSEgZhgYGDZXl5e/m9vb/9ISEjpEBAQxw8AAFQAAAAAAAAANQAAADcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjo6Mb5iYmP+cnJz/jY2N95CQkO4pKSn/AAAA7gAAAP0AAAD7AAAAhgAAAAEAAAAAAAAAAACL/gsAkv2uAJX/QQAAAAB9fX3egoKC/4CAgP+NjY3/c3Nz+wAAAP8AAAD/AAAA/wAAAPUAAAAcAAAAAAAAAAAAnP4NAJL9rgCR/0YAAAAAfX19w4ODg/98fHz/i4uL/4qKivwAAAD/AAAA/wAAAP8AAAD1AAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALGxsVyqqqr/mpqa/6mpqf9KSUn/AAAA5QAAAPkAAAD5AAAAhQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkUFBSuZ2dn/3V1df8uLi7bAAAATgBGfyQAAAA2AAAAMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0AAADoAAAA/wAAAP8AAAD/AAAAWgC3/2AAnv3eAJ/+dgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9AAAA/wAAAP8AAAD/AAAA/wAKDzEAnP3WAKn//wCS/OgAf/8MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAANwAAADtAAAA7QAAAMAAABUMAJn9gwCe/e0Aj/2LAP//AQAAAAAAAAAA
195232
[badge_black]: https://img.shields.io/badge/code%20style-black-000000.svg
196233
[badge_license]: https://img.shields.io/badge/License-MIT-blue.svg
234+
[badge_docker]: https://img.shields.io/badge/Docker-2496ED?logo=docker&logoColor=fff
197235

198236
[url_latest_release]: https://github.com/wolberlab/openmmdl/releases
199237
[url_ci_cd]: https://github.com/wolberlab/OpenMMDL/actions/workflows/CI-CD.yml

docs/api.rst

Lines changed: 43 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,47 @@
11
API Documentation
2-
=================
2+
==============================
33

4-
.. autosummary::
5-
:toctree: autosummary
4+
Here is the API Documentation.
65

7-
openmmdl
8-
6+
The following API represents the MoleculeVisualizer, which is responsible for the display of the
7+
molecule in IPywidgets.
98

9+
10+
OpenMMDL Analysis API
11+
------------------------------
12+
**OpenMMDL Analysis** consists of **analysis**, **core** and **visualization** modules.
13+
14+
Here is the API of the **analysis** modules:
15+
16+
.. toctree::
17+
:maxdepth: 3
18+
:caption: API Analysis Modules:
19+
20+
modules/openmmdl_analysis/analysis/bindingmodes
21+
modules/openmmdl_analysis/analysis/interactions
22+
modules/openmmdl_analysis/analysis/markovchains
23+
modules/openmmdl_analysis/analysis/rmsd
24+
modules/openmmdl_analysis/analysis/stablewaters
25+
26+
27+
Here is the API of the **core** modules:
28+
29+
.. toctree::
30+
:maxdepth: 3
31+
:caption: API Core Modules:
32+
33+
modules/openmmdl_analysis/core/preprocessing
34+
modules/openmmdl_analysis/core/trajectories
35+
modules/openmmdl_analysis/core/utils
36+
37+
Here is the API of the **visualization** modules:
38+
39+
.. toctree::
40+
:maxdepth: 3
41+
:caption: API Visualization Modules:
42+
43+
modules/openmmdl_analysis/visualization/barcodes
44+
modules/openmmdl_analysis/visualization/figures
45+
modules/openmmdl_analysis/visualization/highlighting
46+
modules/openmmdl_analysis/visualization/pharmacophore
47+
modules/openmmdl_analysis/visualization/visualization

docs/citation.rst

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
Citation
2+
====================
3+
4+
If you use OpenMMDL in your research, please cite the following `paper <https://doi.org/10.1021/acs.jcim.4c02158>`_:
5+
6+
.. code-block:: text
7+
8+
@article{doi:10.1021/acs.jcim.4c02158,
9+
author = {Talagayev, Valerij and Chen, Yu and Doering, Niklas Piet and Obendorf, Leon and Denzinger, Katrin and Puls, Kristina and Lam, Kevin and Liu, Sijie and Wolf, Clemens Alexander and Noonan, Theresa and Breznik, Marko and Knaus, Petra and Wolber, Gerhard},
10+
title = {OpenMMDL - Simplifying the Complex: Building, Simulating, and Analyzing Protein–Ligand Systems in OpenMM},
11+
journal = {Journal of Chemical Information and Modeling},
12+
volume = {65},
13+
number = {4},
14+
pages = {1967-1978},
15+
year = {2025},
16+
doi = {10.1021/acs.jcim.4c02158},
17+
note ={PMID: 39933881},
18+
URL = {https://doi.org/10.1021/acs.jcim.4c02158},
19+
eprint = {https://doi.org/10.1021/acs.jcim.4c02158}
20+
}
21+

docs/faq.rst

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,16 @@ What OS does OpenMMDL support?
1515

1616
**OpenMMDL** is available for Linux and Mac systems. **OpenMMDL Setup** and **OpenMMDL Simulation** are currently incompatible with Windows systems, thus only **OpenMMDL Analysis** of the **OpenMMDL** package can be used on Windows systems.
1717

18+
How can I install OpenMMDL?
19+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20+
**OpenMMDL** is available as a conda package. To install it, you can use the following command:
21+
.. code-block:: text
22+
23+
conda install -c conda-forge openmmdl
24+
25+
How do I cite OpenMMDL?
26+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27+
Please refer to the :doc:`citation` page.
1828

1929
OpenMMDL Setup
2030
------------------------------------

docs/index.rst

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
:caption: User guide:
2424

2525
installation
26+
changelog
27+
citation
2628
faq
2729

2830
.. toctree::
@@ -57,8 +59,7 @@
5759
:maxdepth: 1
5860
:caption: API Docs
5961

60-
openmmdl_simulation_functions
61-
openmmdl_analysis_functions
62+
api
6263

6364

6465
Introduction

docs/installation.rst

Lines changed: 48 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,18 @@
33

44
This page details how to install **OpenMMDL** on your local device.
55

6+
Installation via conda-forge
7+
------------------------------
8+
9+
**OpenMMDL** is implemented in conda-forge and can be installed for linux-based system with the following command line:
10+
11+
.. code-block:: text
12+
13+
conda install -c conda-forge openmmdl
14+
15+
Installation via repository
16+
------------------------------
17+
**OpenMMDL** can be installed through the cloning of the repository and the installation of the required packages listed in *environment.yml* or *requirements.txt*
618

719
The first step of the installation of **OpenMMDL** on your device consists in the cloning of **OpenMMDL** to your home directory.
820
This can be achieved by using the following command lines:
@@ -12,21 +24,50 @@ This can be achieved by using the following command lines:
1224
cd ~
1325
git clone https://github.com/wolberlab/OpenMMDL
1426
15-
16-
The next step consists of installing all required dependencies in a new separate environment, which will be used to run the **OpenMMDL** package.
1727
**OpenMMDL** is written in Python 3.10 and uses several packages, which can be easily installed on a separate environment using conda (we recommend using miniconda):
1828

1929
.. code-block:: text
2030
2131
cd OpenMMDL
22-
conda create -n openmmdl c conda-forge --file requirements.txt
23-
24-
After installation, activate the conda environment and install the **OpenMMDL** package:
25-
(Be sure, you are still within the OpenMMDL folder)
32+
conda create -n openmmdl -c conda-forge --file requirements.txt
33+
34+
After installation, activate the conda environment:
2635

2736
.. code-block:: text
2837
2938
conda activate openmmdl
39+
40+
Install the **OpenMMDL** package with the required entry points via pip:
41+
42+
.. code-block:: text
43+
3044
pip install .
45+
46+
This should lead to the environment having now all the required packages and entry points for **OpenMMDL**.
47+
48+
Installation via Docker
49+
------------------------------
50+
51+
**OpenMMDL** is mainly supported for Linux distribution systems, thus for Windows and MacOS the installation with docker may be preferred, due to docker creating an image with *ubuntu:22.04*.
52+
53+
For this first clone this repository:
54+
55+
.. code-block:: text
56+
57+
cd ~
58+
git clone https://github.com/wolberlab/OpenMMDL
59+
60+
change the path to the **OpenMMDL** folder and build the docker image from there:
61+
62+
.. code-block:: text
63+
64+
cd OpenMMDL
65+
docker build -t openmmdl_env .
66+
67+
This will build the **OpenMMDL** image with docker. Now that it is build you can access it through an interactive terminal:
68+
69+
.. code-block:: text
70+
71+
docker run -it --name openmmdl_test openmmdl_env
3172
32-
Now with **OpenMMDL** being installed on the local device, everything is set up to work with **OpenMMDL**.
73+
From there you can access all the **OpenMMDL** entry points. Currently due to **OpenMMDL Setup** using flask it can be difficult to access it through the docker image.

0 commit comments

Comments
 (0)