posebench-fast 0.1.0__py3-none-any.whl
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.
- posebench_fast/__init__.py +53 -0
- posebench_fast/datasets/__init__.py +1 -0
- posebench_fast/filters/__init__.py +15 -0
- posebench_fast/filters/fast_filters.py +526 -0
- posebench_fast/metrics/__init__.py +31 -0
- posebench_fast/metrics/aggregation.py +388 -0
- posebench_fast/metrics/rmsd.py +273 -0
- posebench_fast/utils/__init__.py +1 -0
- posebench_fast-0.1.0.dist-info/METADATA +109 -0
- posebench_fast-0.1.0.dist-info/RECORD +11 -0
- posebench_fast-0.1.0.dist-info/WHEEL +4 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: posebench-fast
|
|
3
|
+
Version: 0.1.0
|
|
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
|
+
# posebench-fast
|
|
23
|
+
|
|
24
|
+
Fast docking evaluation metrics for molecular docking benchmarks.
|
|
25
|
+
|
|
26
|
+
## Features
|
|
27
|
+
|
|
28
|
+
- **Symmetry-corrected RMSD**: Compute RMSD accounting for molecular symmetry using graph isomorphisms
|
|
29
|
+
- **Fast PoseBusters filters**: Quick physical validity checks without full energy evaluation
|
|
30
|
+
- Distance checks (not too far, no clashes)
|
|
31
|
+
- Volume overlap detection
|
|
32
|
+
- Internal geometry validation
|
|
33
|
+
- **Metrics aggregation**: Success rates, averages, filtering by scores
|
|
34
|
+
|
|
35
|
+
## Installation
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
uv add posebench-fast
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Or with pip:
|
|
42
|
+
```bash
|
|
43
|
+
pip install posebench-fast
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Usage
|
|
47
|
+
|
|
48
|
+
### Symmetry RMSD
|
|
49
|
+
|
|
50
|
+
```python
|
|
51
|
+
from posebench_fast import compute_all_isomorphisms, get_symmetry_rmsd_with_isomorphisms
|
|
52
|
+
import numpy as np
|
|
53
|
+
|
|
54
|
+
# Compute isomorphisms once per molecule
|
|
55
|
+
isomorphisms = compute_all_isomorphisms(rdkit_mol)
|
|
56
|
+
|
|
57
|
+
# Compute symmetry-corrected RMSD
|
|
58
|
+
rmsd = get_symmetry_rmsd_with_isomorphisms(true_coords, pred_coords, isomorphisms)
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Fast PoseBusters Filters
|
|
62
|
+
|
|
63
|
+
```python
|
|
64
|
+
from posebench_fast import calc_posebusters
|
|
65
|
+
|
|
66
|
+
results = calc_posebusters(
|
|
67
|
+
pos_pred=ligand_positions, # (n_samples, n_atoms, 3)
|
|
68
|
+
pos_cond=protein_positions, # (n_atoms, 3)
|
|
69
|
+
atom_ids_pred=ligand_atom_ids,
|
|
70
|
+
atom_names_cond=protein_atom_names,
|
|
71
|
+
names="sample_id",
|
|
72
|
+
lig_mol_for_posebusters=rdkit_mol
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
# Results contain:
|
|
76
|
+
# - not_too_far_away: bool list
|
|
77
|
+
# - no_clashes: bool list
|
|
78
|
+
# - no_volume_clash: bool list
|
|
79
|
+
# - no_internal_clash: bool list
|
|
80
|
+
# - is_buried_fraction: float list
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Metrics Aggregation
|
|
84
|
+
|
|
85
|
+
```python
|
|
86
|
+
from posebench_fast import get_final_results_for_df
|
|
87
|
+
|
|
88
|
+
rows, scored_results = get_final_results_for_df(
|
|
89
|
+
full_results,
|
|
90
|
+
score_names=['error_estimate_0'],
|
|
91
|
+
posebusters_filter=True,
|
|
92
|
+
fast_filter=True
|
|
93
|
+
)
|
|
94
|
+
# Returns DataFrame with: RMSD < 2A, RMSD < 5A, SymRMSD < 2A, etc.
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Dependencies
|
|
98
|
+
|
|
99
|
+
- numpy
|
|
100
|
+
- pandas
|
|
101
|
+
- spyrmsd
|
|
102
|
+
- rdkit
|
|
103
|
+
- torch
|
|
104
|
+
- posebusters
|
|
105
|
+
- tqdm
|
|
106
|
+
|
|
107
|
+
## License
|
|
108
|
+
|
|
109
|
+
MIT
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
posebench_fast/__init__.py,sha256=C173qzQIdvxQ5R4665zRattA4WyFVL8iwrfoaxqhVqg,1264
|
|
2
|
+
posebench_fast/datasets/__init__.py,sha256=-29X5OLrM8eE-bXnB-S_RC4ROjZq0d0lluVAOKtHkRM,44
|
|
3
|
+
posebench_fast/filters/__init__.py,sha256=Qm9CK25oMyWwV0gopk7qcU0YQw8cnx9qJFJFQjybSF8,337
|
|
4
|
+
posebench_fast/filters/fast_filters.py,sha256=qfMNIAyCDXtVh5oDDl-iC-1WKxJmzN55LVJTwbolHE4,17428
|
|
5
|
+
posebench_fast/metrics/__init__.py,sha256=g49mQpR1uSy6v3gFtarTTVcDKeQXlB3ZONCntFLlRs4,765
|
|
6
|
+
posebench_fast/metrics/aggregation.py,sha256=QZNRlp40kpdcxjC5H9WyR6KWFzboOHcmcCke8AEdD-w,13046
|
|
7
|
+
posebench_fast/metrics/rmsd.py,sha256=BmHPzUCBQCEAvG8slbs7mXASZV8_ROn7ljplLcH0OFw,7410
|
|
8
|
+
posebench_fast/utils/__init__.py,sha256=TMMehJTihRawWfPW_qBEQIVzpf-Z92QujVAcgNydylI,44
|
|
9
|
+
posebench_fast-0.1.0.dist-info/WHEEL,sha256=5DEXXimM34_d4Gx1AuF9ysMr1_maoEtGKjaILM3s4w4,80
|
|
10
|
+
posebench_fast-0.1.0.dist-info/METADATA,sha256=7mZi2VFrMHlJXJqBdZmYTsnv-dnZQ5oLwrvJsKjTd0E,2573
|
|
11
|
+
posebench_fast-0.1.0.dist-info/RECORD,,
|