pxmeter 0.1.5__tar.gz → 1.0.0__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.
Files changed (57) hide show
  1. {pxmeter-0.1.5/pxmeter.egg-info → pxmeter-1.0.0}/PKG-INFO +3 -2
  2. {pxmeter-0.1.5 → pxmeter-1.0.0}/README.md +53 -12
  3. {pxmeter-0.1.5 → pxmeter-1.0.0}/pxmeter/calc_metric.py +222 -133
  4. pxmeter-1.0.0/pxmeter/cli.py +365 -0
  5. pxmeter-1.0.0/pxmeter/configs/run_config.py +188 -0
  6. {pxmeter-0.1.5 → pxmeter-1.0.0}/pxmeter/constants.py +169 -133
  7. {pxmeter-0.1.5 → pxmeter-1.0.0}/pxmeter/data/ccd.py +102 -15
  8. {pxmeter-0.1.5 → pxmeter-1.0.0}/pxmeter/data/parser.py +223 -19
  9. {pxmeter-0.1.5 → pxmeter-1.0.0}/pxmeter/data/struct.py +112 -15
  10. {pxmeter-0.1.5 → pxmeter-1.0.0}/pxmeter/data/utils.py +64 -7
  11. {pxmeter-0.1.5 → pxmeter-1.0.0}/pxmeter/data/writer.py +4 -1
  12. {pxmeter-0.1.5 → pxmeter-1.0.0}/pxmeter/eval.py +6 -4
  13. pxmeter-1.0.0/pxmeter/input_builder/constants.py +16 -0
  14. pxmeter-1.0.0/pxmeter/input_builder/gen_input.py +381 -0
  15. pxmeter-1.0.0/pxmeter/input_builder/interactive.py +702 -0
  16. pxmeter-1.0.0/pxmeter/input_builder/model_inputs/alphafold3.py +366 -0
  17. pxmeter-1.0.0/pxmeter/input_builder/model_inputs/boltz.py +360 -0
  18. pxmeter-1.0.0/pxmeter/input_builder/model_inputs/protenix.py +559 -0
  19. pxmeter-1.0.0/pxmeter/input_builder/seq.py +584 -0
  20. pxmeter-1.0.0/pxmeter/input_builder/utils/__init__.py +0 -0
  21. pxmeter-1.0.0/pxmeter/input_builder/utils/unstd_res_mapping.py +225 -0
  22. {pxmeter-0.1.5 → pxmeter-1.0.0}/pxmeter/mapping.py +80 -40
  23. pxmeter-1.0.0/pxmeter/metrics/__init__.py +0 -0
  24. pxmeter-1.0.0/pxmeter/metrics/dockq.py +523 -0
  25. pxmeter-1.0.0/pxmeter/metrics/lddt_metrics.py +310 -0
  26. {pxmeter-0.1.5 → pxmeter-1.0.0}/pxmeter/metrics/rmsd.py +7 -5
  27. {pxmeter-0.1.5 → pxmeter-1.0.0}/pxmeter/metrics/rmsd_metrics.py +35 -32
  28. pxmeter-1.0.0/pxmeter/metrics/stereochemistry/__init__.py +0 -0
  29. pxmeter-1.0.0/pxmeter/metrics/stereochemistry/check.py +1706 -0
  30. pxmeter-1.0.0/pxmeter/metrics/stereochemistry/params.py +2324 -0
  31. pxmeter-1.0.0/pxmeter/permutation/__init__.py +0 -0
  32. {pxmeter-0.1.5 → pxmeter-1.0.0}/pxmeter/permutation/atom.py +11 -6
  33. {pxmeter-0.1.5 → pxmeter-1.0.0}/pxmeter/permutation/chain.py +96 -36
  34. pxmeter-1.0.0/pxmeter/permutation/residue.py +289 -0
  35. pxmeter-1.0.0/pxmeter/utils.py +89 -0
  36. {pxmeter-0.1.5 → pxmeter-1.0.0/pxmeter.egg-info}/PKG-INFO +3 -2
  37. {pxmeter-0.1.5 → pxmeter-1.0.0}/pxmeter.egg-info/SOURCES.txt +17 -3
  38. {pxmeter-0.1.5 → pxmeter-1.0.0}/pxmeter.egg-info/requires.txt +2 -1
  39. {pxmeter-0.1.5 → pxmeter-1.0.0}/requirements.txt +3 -2
  40. {pxmeter-0.1.5 → pxmeter-1.0.0}/setup.py +1 -1
  41. pxmeter-0.1.5/pxmeter/cli.py +0 -182
  42. pxmeter-0.1.5/pxmeter/configs/data_config.py +0 -116
  43. pxmeter-0.1.5/pxmeter/configs/run_config.py +0 -41
  44. pxmeter-0.1.5/pxmeter/metrics/clashes.py +0 -88
  45. pxmeter-0.1.5/pxmeter/metrics/lddt_metrics.py +0 -248
  46. pxmeter-0.1.5/pxmeter/utils.py +0 -38
  47. {pxmeter-0.1.5 → pxmeter-1.0.0}/LICENSE +0 -0
  48. {pxmeter-0.1.5 → pxmeter-1.0.0}/MANIFEST.in +0 -0
  49. {pxmeter-0.1.5 → pxmeter-1.0.0}/pxmeter/__init__.py +0 -0
  50. {pxmeter-0.1.5 → pxmeter-1.0.0}/pxmeter/configs/__init__.py +0 -0
  51. {pxmeter-0.1.5 → pxmeter-1.0.0}/pxmeter/data/__init__.py +0 -0
  52. {pxmeter-0.1.5/pxmeter/metrics → pxmeter-1.0.0/pxmeter/input_builder}/__init__.py +0 -0
  53. {pxmeter-0.1.5/pxmeter/permutation → pxmeter-1.0.0/pxmeter/input_builder/model_inputs}/__init__.py +0 -0
  54. {pxmeter-0.1.5 → pxmeter-1.0.0}/pxmeter.egg-info/dependency_links.txt +0 -0
  55. {pxmeter-0.1.5 → pxmeter-1.0.0}/pxmeter.egg-info/entry_points.txt +0 -0
  56. {pxmeter-0.1.5 → pxmeter-1.0.0}/pxmeter.egg-info/top_level.txt +0 -0
  57. {pxmeter-0.1.5 → pxmeter-1.0.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pxmeter
3
- Version: 0.1.5
3
+ Version: 1.0.0
4
4
  Summary: PXMeter is a comprehensive toolkit for evaluating the quality of structures generated by biomolecular structure prediction models.
5
5
  Author: Bytedance Inc.
6
6
  Author-email: ai4s-bio@bytedance.com
@@ -9,7 +9,6 @@ Platform: manylinux1
9
9
  Requires-Python: >=3.11
10
10
  License-File: LICENSE
11
11
  Requires-Dist: biotite>=1.2.0
12
- Requires-Dist: dockq==2.1.3
13
12
  Requires-Dist: gemmi==0.7.0
14
13
  Requires-Dist: joblib
15
14
  Requires-Dist: ml_collections
@@ -22,6 +21,8 @@ Requires-Dist: scipy
22
21
  Requires-Dist: tabulate
23
22
  Requires-Dist: tqdm
24
23
  Requires-Dist: click
24
+ Requires-Dist: pyarrow
25
+ Requires-Dist: PyYAML
25
26
  Dynamic: author
26
27
  Dynamic: author-email
27
28
  Dynamic: license
@@ -32,7 +32,7 @@ pip install -r requirements.txt
32
32
  pip install -e .
33
33
  ```
34
34
 
35
- PXMeter will automatically download the Chemical Component Dictionary (CCD) upon its first run. To update the CCD files:
35
+ PXMeter directly uses the Chemical Component Dictionary (CCD) bundled with Biotite. To update the CCD files:
36
36
 
37
37
  ```bash
38
38
  pxm ccd update
@@ -48,12 +48,13 @@ pxm -r examples/7rss.cif -m examples/7rss_protenix_pred.cif -o pxm_output.json
48
48
  **Key Parameters**:
49
49
  - `-r` or `--ref_cif`: Path to reference CIF file
50
50
  - `-m` or `--model_cif`: Path to model CIF file
51
- - `-o` or `--output`: Path to save evaluation results (default: "pxm_output.json")
51
+ - `-o` or `--output_json`: Path to save evaluation results (default: "pxm_output.json")
52
52
  - `--ref_model`: Specify model number of reference CIF (default: 1)
53
53
  - `--ref_assembly_id`: Specify the assembly ID for the reference CIF (default: None; uses the Asymmetric Unit for evaluation)
54
- - `ref_altloc`: Specify the alternative location identifier for the reference CIF (default: "first", uses the first alternative location code for each residue).
54
+ - `--ref_altloc`: Specify the alternative location identifier for the reference CIF (default: "first", uses the first alternative location code for each residue).
55
55
  - `--chain_id_to_mol_json`: JSON file defining custom ligands, where keys are chain IDs (label_asym_id) and values are the corresponding ligand SMILES strings.
56
56
  - `-l` or `--interested_lig_label_asym_id`: Indicate the `label_asym_id` of ligands for metrics like pocket-aligned RMSD. Multiple ligands should be comma-separated.
57
+ - `-C key.path=value`: Override fields in `pxmeter.configs.run_config.RUN_CONFIG` (repeatable; e.g., `-C metric.lddt.eps=1e-4 -C mapping.mapping_ligand=false`).
57
58
 
58
59
  To access the full list of parameters, use the `--help` option.
59
60
 
@@ -80,18 +81,59 @@ For detailed descriptions of additional parameters, use the `help()` function:
80
81
  help(evaluate)
81
82
  ```
82
83
 
84
+ If you need to modify the runtime settings defined in
85
+ `pxmeter.configs.run_config.RUN_CONFIG` (equivalent to using `-C` on the command line),
86
+ you may directly update the values in `RUN_CONFIG` and then pass it into the evaluate() function.
87
+ ```python
88
+ from pxmeter.configs.run_config import RUN_CONFIG
89
+
90
+ RUN_CONFIG.mapping.res_id_alignments = False
91
+ metric_result = evaluate(
92
+ ...,
93
+ run_config=RUN_CONFIG,
94
+ )
95
+ ```
96
+
97
+ For a detailed, step-by-step description of the PXMeter runtime evaluation pipeline (mapping, alignment, and metric computation), please refer to the [PXMeter evaluation pipeline details](docs/pxmeter_eval_details.md).
98
+
99
+ For a comprehensive overview of the runtime configuration options, recommended defaults, and advanced usage examples, see the [PXMeter run configuration guide](docs/run_config_details.md).
100
+
101
+ ### Optional: Stereochemistry checks
102
+
103
+ Run stereochemistry checks for a single CIF and export a CSV report:
104
+
105
+ ```bash
106
+ pxm stereocheck -c examples/7rss_protenix_pred.cif -o stereochem_report.csv
107
+ ```
108
+ **`pxm stereocheck` Parameters**:
109
+ - `-c` or `--cif` (required): Path to the CIF file
110
+ - `-o` or `--output-csv`: Path to the output CSV report (default: `stereochem_report.csv`)
111
+
112
+
83
113
  ## 📊 Benchmarking
84
- Refer to [benchmark/README.md](./benchmark/README.md) for evaluation protocols on:
85
- - RecentPDB dataset
86
- - PoseBusters V2
87
114
 
88
- The benchmark data is released under the CC0 license.
89
- We include code in the `benchmark` directory that evaluates various models using PXMeter and aggregates their metrics.
90
- This serves as an example of best practices for using the tool. For more details, please refer to our paper:
115
+ PXMeter offers a reproducible workflow covering both dataset creation and model evaluation.
116
+
117
+ **Note**: The benchmarking workflow (the `benchmark/` directory) is only available in the source repository and is not shipped with the PyPI package. To run benchmarking, please clone the repository first:
118
+
119
+ ```bash
120
+ git clone https://github.com/bytedance/PXMeter.git
121
+ cd PXMeter
122
+ ```
123
+
124
+ - The **[Benchmark Documentation](docs/benchmark.md)** explains how to run evaluations on model predictions and how the aggregated metrics are computed.
125
+ - The **[Dataset Pipeline Overview](docs/datapipeline.md)** describes the complete construction of the RecentPDB low-homology dataset,
126
+ including filtering, homology scans, clustering, and subset labeling.
127
+ The pipeline also allows users to **rebuild the evaluation dataset from scratch using any custom time window**.
128
+ This makes the benchmark fully flexible and adaptable to different release periods or ongoing updates from the PDB.
129
+ - For details on the dataset used in our paper, please refer to the **[legacy dataset documentation](docs/legacy_dataset_reference.md)**, which describes the dataset version and evaluation code used at the time of the initial release.
130
+
131
+ ## ➡️ Preparing input files
91
132
 
92
- 📄 <a href="https://www.biorxiv.org/content/10.1101/2025.07.17.664878v1">From Dataset Curation to Unified Evaluation: Revisiting
93
- Structure Prediction Benchmarks with PXMeter</a>
133
+ When working with structural inputs—e.g., converting mmCIF, AlpahFold3, Protenix, or Boltz formats—you may find the following utility helpful:
94
134
 
135
+ [pxm gen-input Usage Guide](docs/gen_input.md).
136
+ — a tool for generating and converting model input files via CLI or Python API.
95
137
 
96
138
 
97
139
  ## 💪 Contributing to PXMeter
@@ -124,7 +166,6 @@ If you use PXMeter in your research, please cite the following:
124
166
 
125
167
 
126
168
  ## 🚧 Limitations
127
- - PXMeter supports chain/atom permutations but not residue-level permutations. As a result, the accuracy of evaluation for branched chains, such as glycans, cannot be fully guaranteed.
128
169
  - It is recommended to use CIF files from the RCSB PDB as references, as they ensure content accuracy. All development and testing were conducted exclusively on CIF files from this source.
129
170
 
130
171