posecheck-fast 0.1.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,73 @@
1
+ Metadata-Version: 2.4
2
+ Name: posecheck-fast
3
+ Version: 0.1.6
4
+ Summary: Fast docking evaluation metrics: symmetry-corrected RMSD and PoseBusters filters
5
+ Keywords: docking,rmsd,posebusters,molecular-docking,benchmark
6
+ Author: Nikolenko
7
+ License-Expression: MIT
8
+ Requires-Dist: numpy>=1.21
9
+ Requires-Dist: pandas>=1.3
10
+ Requires-Dist: spyrmsd>=0.6
11
+ Requires-Dist: rdkit>=2022.3
12
+ Requires-Dist: torch>=1.10
13
+ Requires-Dist: posebusters>=0.2
14
+ Requires-Dist: tqdm>=4.60
15
+ Requires-Dist: pytest>=7.0 ; extra == 'dev'
16
+ Requires-Dist: pytest-cov>=4.0 ; extra == 'dev'
17
+ Requires-Dist: ruff>=0.4 ; extra == 'dev'
18
+ Requires-Python: >=3.11
19
+ Provides-Extra: dev
20
+ Description-Content-Type: text/markdown
21
+
22
+ # posecheck-fast
23
+
24
+ [![PyPI version](https://badge.fury.io/py/posecheck-fast.svg)](https://pypi.org/project/posecheck-fast/)
25
+ [![CI](https://github.com/LigandPro/posecheck-fast/actions/workflows/ci.yml/badge.svg)](https://github.com/LigandPro/posecheck-fast/actions/workflows/ci.yml)
26
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
27
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
28
+
29
+ Fast docking evaluation metrics: symmetry-corrected RMSD and lightweight PoseBusters filters.
30
+
31
+ ## Installation
32
+
33
+ ```bash
34
+ uv pip install posecheck-fast
35
+ ```
36
+
37
+ ## Features
38
+
39
+ - **Symmetry-corrected RMSD** — accounts for molecular symmetry (benzene, carboxylates, etc.)
40
+ - **Fast PoseBusters filters** — 4 key checks in ~10ms instead of full 27-test suite (~1-2s)
41
+
42
+ ## Usage
43
+
44
+ ```python
45
+ from posecheck_fast import compute_all_isomorphisms, get_symmetry_rmsd_with_isomorphisms
46
+
47
+ # Symmetry-corrected RMSD
48
+ isomorphisms = compute_all_isomorphisms(rdkit_mol)
49
+ rmsd = get_symmetry_rmsd_with_isomorphisms(true_coords, pred_coords, isomorphisms)
50
+ ```
51
+
52
+ ```python
53
+ from posecheck_fast import check_intermolecular_distance
54
+
55
+ # Fast filters: not_too_far_away, no_clashes, no_volume_clash, no_internal_clash
56
+ results = check_intermolecular_distance(
57
+ mol_orig=rdkit_mol,
58
+ pos_pred=pred_positions, # (n_samples, n_atoms, 3)
59
+ pos_cond=protein_positions, # (n_protein_atoms, 3)
60
+ atom_names_pred=lig_atoms,
61
+ atom_names_cond=prot_atoms,
62
+ )
63
+ ```
64
+
65
+ ## Related
66
+
67
+ - [PoseBench](https://github.com/BioinfoMachineLearning/PoseBench) — full benchmark suite
68
+ - [PoseBusters](https://github.com/maabuu/posebusters) — full 27-test validation
69
+ - [spyrmsd](https://github.com/RMeli/spyrmsd) — symmetry RMSD algorithms
70
+
71
+ ## License
72
+
73
+ MIT
@@ -0,0 +1,52 @@
1
+ # posecheck-fast
2
+
3
+ [![PyPI version](https://badge.fury.io/py/posecheck-fast.svg)](https://pypi.org/project/posecheck-fast/)
4
+ [![CI](https://github.com/LigandPro/posecheck-fast/actions/workflows/ci.yml/badge.svg)](https://github.com/LigandPro/posecheck-fast/actions/workflows/ci.yml)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
7
+
8
+ Fast docking evaluation metrics: symmetry-corrected RMSD and lightweight PoseBusters filters.
9
+
10
+ ## Installation
11
+
12
+ ```bash
13
+ uv pip install posecheck-fast
14
+ ```
15
+
16
+ ## Features
17
+
18
+ - **Symmetry-corrected RMSD** — accounts for molecular symmetry (benzene, carboxylates, etc.)
19
+ - **Fast PoseBusters filters** — 4 key checks in ~10ms instead of full 27-test suite (~1-2s)
20
+
21
+ ## Usage
22
+
23
+ ```python
24
+ from posecheck_fast import compute_all_isomorphisms, get_symmetry_rmsd_with_isomorphisms
25
+
26
+ # Symmetry-corrected RMSD
27
+ isomorphisms = compute_all_isomorphisms(rdkit_mol)
28
+ rmsd = get_symmetry_rmsd_with_isomorphisms(true_coords, pred_coords, isomorphisms)
29
+ ```
30
+
31
+ ```python
32
+ from posecheck_fast import check_intermolecular_distance
33
+
34
+ # Fast filters: not_too_far_away, no_clashes, no_volume_clash, no_internal_clash
35
+ results = check_intermolecular_distance(
36
+ mol_orig=rdkit_mol,
37
+ pos_pred=pred_positions, # (n_samples, n_atoms, 3)
38
+ pos_cond=protein_positions, # (n_protein_atoms, 3)
39
+ atom_names_pred=lig_atoms,
40
+ atom_names_cond=prot_atoms,
41
+ )
42
+ ```
43
+
44
+ ## Related
45
+
46
+ - [PoseBench](https://github.com/BioinfoMachineLearning/PoseBench) — full benchmark suite
47
+ - [PoseBusters](https://github.com/maabuu/posebusters) — full 27-test validation
48
+ - [spyrmsd](https://github.com/RMeli/spyrmsd) — symmetry RMSD algorithms
49
+
50
+ ## License
51
+
52
+ MIT
@@ -0,0 +1,95 @@
1
+ [project]
2
+ name = "posecheck-fast"
3
+ version = "0.1.6"
4
+ description = "Fast docking evaluation metrics: symmetry-corrected RMSD and PoseBusters filters"
5
+ readme = "README.md"
6
+ requires-python = ">=3.11"
7
+ license = "MIT"
8
+ authors = [
9
+ { name = "Nikolenko" }
10
+ ]
11
+ keywords = ["docking", "rmsd", "posebusters", "molecular-docking", "benchmark"]
12
+
13
+ dependencies = [
14
+ "numpy>=1.21",
15
+ "pandas>=1.3",
16
+ "spyrmsd>=0.6",
17
+ "rdkit>=2022.03",
18
+ "torch>=1.10",
19
+ "posebusters>=0.2",
20
+ "tqdm>=4.60",
21
+ ]
22
+
23
+ [project.optional-dependencies]
24
+ dev = [
25
+ "pytest>=7.0",
26
+ "pytest-cov>=4.0",
27
+ "ruff>=0.4",
28
+ ]
29
+
30
+ [build-system]
31
+ requires = ["uv_build"]
32
+ build-backend = "uv_build"
33
+
34
+ [tool.uv.build-backend]
35
+ module-name = "posecheck_fast"
36
+
37
+ [dependency-groups]
38
+ dev = [
39
+ "pytest>=7.0",
40
+ "pytest-cov>=4.0",
41
+ "ruff>=0.4",
42
+ "pre-commit>=4.0",
43
+ ]
44
+
45
+ [tool.ruff]
46
+ src = ["src/"]
47
+ target-version = "py311"
48
+
49
+ [tool.ruff.lint]
50
+ select = [
51
+ "E", # pycodestyle errors
52
+ "F", # Pyflakes (undefined names, unused imports, etc.)
53
+ "W", # pycodestyle warnings
54
+ "I", # isort (import sorting)
55
+ "N", # pep8-naming
56
+ "UP", # pyupgrade (modernize Python code)
57
+ "B", # flake8-bugbear (common bugs)
58
+ "C4", # flake8-comprehensions
59
+ "PIE", # flake8-pie (misc lints)
60
+ "RET", # flake8-return (return statement improvements)
61
+ "SIM", # flake8-simplify
62
+ "NPY", # NumPy-specific rules
63
+ ]
64
+
65
+ ignore = [
66
+ "E501", # Line too long (handled by formatter)
67
+ "E741", # Ambiguous variable name (allow 'l', 'O', etc. for math)
68
+ "N803", # Argument name should be lowercase (allow CamelCase for classes)
69
+ "N806", # Variable should be lowercase (allow uppercase in math/ML code)
70
+ "B008", # Do not perform function call in argument defaults (common in ML)
71
+ "RET504", # Unnecessary variable assignment before return
72
+ "SIM108", # Use ternary operator (can reduce readability)
73
+ "SIM102", # Avoid assigning lambda expressions (OK for ML configs)
74
+ "N812", # Lowercase imported as non-lowercase (allow for 'import torch.nn.functional as F')
75
+ "N802", # Function name should be lowercase (allow for class-factory style)
76
+ "E731", # Do not assign a lambda expression (allow in configs/utilities)
77
+ "C408", # Unnecessary 'dict' call (allow for explicitness)
78
+ "SIM113", # Use 'any'/'all' for simple comparisons (allow explicit loops)
79
+ ]
80
+
81
+ fixable = ["ALL"]
82
+ unfixable = []
83
+
84
+ [tool.ruff.lint.per-file-ignores]
85
+ "__init__.py" = ["F401"]
86
+ "tests/**/*.py" = ["S101"]
87
+
88
+ [tool.ruff.format]
89
+ quote-style = "double"
90
+ indent-style = "space"
91
+ skip-magic-trailing-comma = false
92
+ line-ending = "auto"
93
+
94
+ [tool.ruff.lint.pydocstyle]
95
+ convention = "numpy"
@@ -0,0 +1,53 @@
1
+ """
2
+ posecheck-fast: Fast docking evaluation metrics
3
+
4
+ Provides:
5
+ - Symmetry-corrected RMSD computation
6
+ - Fast PoseBusters filters (without full energy evaluation)
7
+ - Docking metrics (success rates, averages)
8
+ """
9
+
10
+ from posecheck_fast.filters.fast_filters import (
11
+ calc_posebusters,
12
+ check_geometry,
13
+ check_intermolecular_distance,
14
+ check_volume_overlap,
15
+ )
16
+ from posecheck_fast.metrics.aggregation import (
17
+ filter_results_by_fast,
18
+ filter_results_by_posebusters,
19
+ get_best_results_by_score,
20
+ get_final_results_for_df,
21
+ get_simple_metrics_df,
22
+ )
23
+ from posecheck_fast.metrics.rmsd import (
24
+ TimeoutException,
25
+ compute_all_isomorphisms,
26
+ get_symmetry_rmsd,
27
+ get_symmetry_rmsd_with_isomorphisms,
28
+ symmrmsd,
29
+ time_limit,
30
+ )
31
+
32
+ __version__ = "0.1.4"
33
+
34
+ __all__ = [
35
+ # RMSD
36
+ "compute_all_isomorphisms",
37
+ "get_symmetry_rmsd_with_isomorphisms",
38
+ "get_symmetry_rmsd",
39
+ "symmrmsd",
40
+ "TimeoutException",
41
+ "time_limit",
42
+ # Filters
43
+ "calc_posebusters",
44
+ "check_intermolecular_distance",
45
+ "check_volume_overlap",
46
+ "check_geometry",
47
+ # Metrics
48
+ "get_simple_metrics_df",
49
+ "get_final_results_for_df",
50
+ "filter_results_by_posebusters",
51
+ "filter_results_by_fast",
52
+ "get_best_results_by_score",
53
+ ]
@@ -0,0 +1 @@
1
+ """Dataset utilities for posecheck-fast."""
@@ -0,0 +1,15 @@
1
+ """Fast PoseBusters filters for docking evaluation."""
2
+
3
+ from posecheck_fast.filters.fast_filters import (
4
+ calc_posebusters,
5
+ check_geometry,
6
+ check_intermolecular_distance,
7
+ check_volume_overlap,
8
+ )
9
+
10
+ __all__ = [
11
+ "calc_posebusters",
12
+ "check_intermolecular_distance",
13
+ "check_volume_overlap",
14
+ "check_geometry",
15
+ ]