From 2be4aadbf6db2bb3192b4bf812e7f4a80914394e Mon Sep 17 00:00:00 2001 From: MayarMAhmed Date: Tue, 10 Mar 2026 12:01:46 -0400 Subject: [PATCH 1/6] fixing the config overwrite --- povme/pocket/detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/povme/pocket/detect.py b/povme/pocket/detect.py index 8f96776..9901919 100644 --- a/povme/pocket/detect.py +++ b/povme/pocket/detect.py @@ -26,7 +26,7 @@ def __init__( """ if config is None: config = PocketDetectConfig() - self.config = PocketDetectConfig() + self.config = config def run(self, path_pdb: str, output_prefix: str = "") -> None: config = self.config From 9dc3819b456a69f44c6c82c3a0453d124cf58739 Mon Sep 17 00:00:00 2001 From: MayarMAhmed Date: Wed, 11 Mar 2026 08:23:09 -0400 Subject: [PATCH 2/6] updating lock file --- pixi.lock | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/pixi.lock b/pixi.lock index 4f8229d..5fe05a2 100644 --- a/pixi.lock +++ b/pixi.lock @@ -5,8 +5,6 @@ environments: - url: https://conda.anaconda.org/conda-forge/ indexes: - https://pypi.org/simple - options: - pypi-prerelease-mode: if-necessary-or-explicit packages: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 @@ -183,8 +181,6 @@ environments: - url: https://conda.anaconda.org/conda-forge/ indexes: - https://pypi.org/simple - options: - pypi-prerelease-mode: if-necessary-or-explicit packages: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 @@ -587,8 +583,6 @@ environments: - url: https://conda.anaconda.org/conda-forge/ indexes: - https://pypi.org/simple - options: - pypi-prerelease-mode: if-necessary-or-explicit packages: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 @@ -3867,6 +3861,7 @@ packages: - ray>=2.38.0,<3 - pymolecule @ git+https://github.com/durrantlab/pymolecule requires_python: '>=3.10,<3.13' + editable: true - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.36-pyha770c72_0.conda sha256: 6bd3626799c9467d7aa8ed5f95043e4cea614a1329580980ddcf40cfed3ee860 md5: 4d79ec192e0bfd530a254006d123b9a6 From 69dc79860d838c882e2d374d2980c979930f7610 Mon Sep 17 00:00:00 2001 From: MayarMAhmed Date: Wed, 11 Mar 2026 09:11:42 -0400 Subject: [PATCH 3/6] updating readme --- README.md | 65 +++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 42 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index e178995..9f35861 100644 --- a/README.md +++ b/README.md @@ -30,24 +30,9 @@ By enabling precise volume and flexibility measurements, POVME has become an ess - Supporting virtual screening and druggability predictions. - Comparing conformational ensembles from molecular dynamics simulations. -## Development - -We use [pixi](https://pixi.sh/latest/) to manage Python environments and simplify the developer workflow. -Once you have [pixi](https://pixi.sh/latest/) installed, move into `POVME` directory (e.g., `cd POVME`) and install the environment using the command - -```bash -pixi install -``` - -Now you can activate the new virtual environment using - -```sh -pixi shell -e dev -``` - ## Installation -### Development +### Latest development version To install the latest development version of `povme`, follow these steps. @@ -63,15 +48,21 @@ Navigate into the cloned directory. cd POVME ``` -Install the development version using `pip`. +Install the latest version using `pixi`. ```bash -pip install . +pixi install ``` -This will install `povme` along with all required dependencies into your current Python environment. +This will install `povme` along with all required dependencies into a virtual environment. + +To use `povme`, activate the environment and run: -### Tagged +```bash +pixi shell +``` + +### Tagged version To install a specific version of `povme`, such as `v2.2.2`, follow these steps. @@ -83,14 +74,42 @@ cd POVME git checkout v2.2.2 ``` -Install the tagged version using `pip`. +Ensure your environment includes the required dependencies. If not, please run the following: ```bash -pip install . +conda create -n povme python=3.11 numpy=1.23 scipy=1.10 +conda activate povme ``` This will install the specified version of `povme` and its dependencies into your current Python environment. +You can use `povme` as follows: + +```bash +python3 POVME2.py your_input.init +``` + +You can also check your installation is valid by running: + +```bash +python3 POVME2.py --test +``` + +## Development + +We use [pixi](https://pixi.sh/latest/) to manage Python environments and simplify the developer workflow. +Once you have [pixi](https://pixi.sh/latest/) installed, move into the `POVME` directory (e.g., `cd POVME`) and install the environment using the command: + +```bash +pixi install +``` + +Now you can activate the development virtual environment using: + +```sh +pixi shell -e dev +``` + ## Cite If you use POVME in your work, please cite: @@ -106,4 +125,4 @@ This program is distributed in the hope that it will be useful, but WITHOUT ANY See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. -If not, see [https://www.gnu.org/licenses/](https://www.gnu.org/licenses/). +If not, see [https://www.gnu.org/licenses/](https://www.gnu.org/licenses/). \ No newline at end of file From 257fe87afd06e0680df86e4e75485741e6fd7782 Mon Sep 17 00:00:00 2001 From: MayarMAhmed Date: Wed, 11 Mar 2026 09:12:46 -0400 Subject: [PATCH 4/6] ensuring ray shutdown between tests --- tests/conftest.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/conftest.py b/tests/conftest.py index d3c5151..b50b730 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -34,6 +34,14 @@ def turn_on_logging(): enable_logging(10) +@pytest.fixture(autouse=True) +def shutdown_ray_after_test(): + """Ensure Ray is shut down after each test to prevent deadlocks.""" + yield + if HAS_RAY and ray.is_initialized(): + ray.shutdown() + + @pytest.fixture def path_4nss_config(): return os.path.join(TEST_DIR, "files/4nss/povme.yml") From 4c362431b94b4bcfa4088da663c8e0d5f44c44e0 Mon Sep 17 00:00:00 2001 From: MayarMAhmed Date: Wed, 11 Mar 2026 09:13:34 -0400 Subject: [PATCH 5/6] removing Deprecated imports --- povme/parallel.py | 9 +++++++-- povme/pocket/volume.py | 3 ++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/povme/parallel.py b/povme/parallel.py index b1fdf64..757b3c8 100644 --- a/povme/parallel.py +++ b/povme/parallel.py @@ -71,9 +71,10 @@ def save_results(results, **kwargs): """ +import os from abc import ABC, abstractmethod -from collections.abc import Callable -from typing import Any, Generator +from collections.abc import Callable, Generator +from typing import Any import ray from loguru import logger @@ -126,6 +127,10 @@ def __init__( self.n_cores = ( n_cores if n_cores > 0 else int(ray.available_resources().get("CPU", 1)) ) + if not use_ray and n_cores > 1: + logger.warning( + "n_cores > 1 but use_ray is False. Running tasks sequentially." + ) """ The number of parallel tasks to run. If set to `-1` or any value less than or equal to `0`, all available CPU cores are utilized. diff --git a/povme/pocket/volume.py b/povme/pocket/volume.py index 07035ee..50cf578 100644 --- a/povme/pocket/volume.py +++ b/povme/pocket/volume.py @@ -14,8 +14,9 @@ import os import sys import time +from collections.abc import Generator from io import StringIO -from typing import Any, Generator +from typing import Any import numpy as np from loguru import logger From f0fe281a415db69fe6e86508c428033c50967f61 Mon Sep 17 00:00:00 2001 From: MayarMAhmed Date: Wed, 11 Mar 2026 09:25:45 -0400 Subject: [PATCH 6/6] removed unused import --- povme/parallel.py | 1 - 1 file changed, 1 deletion(-) diff --git a/povme/parallel.py b/povme/parallel.py index 757b3c8..69c4fa7 100644 --- a/povme/parallel.py +++ b/povme/parallel.py @@ -71,7 +71,6 @@ def save_results(results, **kwargs): """ -import os from abc import ABC, abstractmethod from collections.abc import Callable, Generator from typing import Any