phasepred 1.0.1__tar.gz → 1.0.2__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.
- {phasepred-1.0.1 → phasepred-1.0.2}/CHANGELOG.md +14 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/PKG-INFO +1 -1
- {phasepred-1.0.1 → phasepred-1.0.2}/README.md +1 -1
- {phasepred-1.0.1 → phasepred-1.0.2}/pyproject.toml +1 -1
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/__init__.py +1 -1
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/tools/DeepCoil/README.md +7 -7
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/tools/DeepCoil/manifest.toml +1 -1
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/tools/PScore/README.md +4 -3
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/tools/PScore/manifest.toml +1 -1
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/tools/PScore/run +38 -1
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred.egg-info/PKG-INFO +1 -1
- {phasepred-1.0.1 → phasepred-1.0.2}/tests/test_check_tools_table.py +6 -2
- {phasepred-1.0.1 → phasepred-1.0.2}/tests/test_tool_contract_drift.py +49 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/LICENSE +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/MANIFEST.in +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/NOTICE +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/README-pypi.md +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/environment.yml +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/packages/catgranule/CHANGELOG.md +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/packages/catgranule/README.md +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/packages/catgranule/pyproject.toml +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/packages/catgranule/scripts/_s4_numeric.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/packages/catgranule/scripts/bootstrap_web_benchmark.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/packages/catgranule/scripts/eval_routes.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/packages/catgranule/scripts/reproduce_distilled.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/packages/catgranule/src/catgranule/__init__.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/packages/catgranule/src/catgranule/_distill.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/packages/catgranule/src/catgranule/cli.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/packages/catgranule/src/catgranule/scoring.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/packages/catgranule/src/catgranule/surrogate.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/packages/catgranule/src/catgranule/weights/catgranule_distilled_weights.json +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/packages/catgranule/src/catgranule/weights/catgranule_paper_weights.json +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/packages/catgranule/src/catgranule/weights/catgranule_v1_weights.json +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/packages/catgranule/src/catgranule/weights/distilled_xgb_model.ubj +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/packages/catgranule/src/catgranule/weights.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/packages/catgranule/tests/fixtures/P35637.fasta +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/packages/catgranule/tests/fixtures/Q08211.fasta +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/packages/catgranule/tests/test_catgranule_cli.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/packages/catgranule/tests/test_scoring.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/scripts/check_no_proprietary.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/scripts/train_phasepred.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/scripts/validate_phasepred.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/setup.cfg +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/cli.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/deepphase/LICENSE +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/deepphase/NOTICE +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/deepphase/deepphase_scores.tsv +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/PdPS/8f_model_0.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/PdPS/8f_model_1.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/PdPS/8f_model_2.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/PdPS/8f_model_3.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/PdPS/8f_model_4.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/PdPS/8f_model_5.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/PdPS/8f_model_6.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/PdPS/8f_model_7.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/PdPS/8f_model_8.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/PdPS/8f_model_9.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/PdPS/manifest.json +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/SaPS/8f_model_0.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/SaPS/8f_model_1.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/SaPS/8f_model_2.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/SaPS/8f_model_3.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/SaPS/8f_model_4.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/SaPS/8f_model_5.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/SaPS/8f_model_6.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/SaPS/8f_model_7.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/SaPS/8f_model_8.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/SaPS/8f_model_9.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/SaPS/manifest.json +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/hPdPS/8f_model_0.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/hPdPS/8f_model_1.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/hPdPS/8f_model_2.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/hPdPS/8f_model_3.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/hPdPS/8f_model_4.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/hPdPS/8f_model_5.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/hPdPS/8f_model_6.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/hPdPS/8f_model_7.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/hPdPS/8f_model_8.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/hPdPS/8f_model_9.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/hPdPS/manifest.json +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/hSaPS/8f_model_0.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/hSaPS/8f_model_1.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/hSaPS/8f_model_2.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/hSaPS/8f_model_3.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/hSaPS/8f_model_4.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/hSaPS/8f_model_5.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/hSaPS/8f_model_6.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/hSaPS/8f_model_7.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/hSaPS/8f_model_8.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/hSaPS/8f_model_9.joblib +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/models/hSaPS/manifest.json +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/tools/DeepCoil/install.sh +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/tools/DeepCoil/run +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/tools/ESpritz/README.md +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/tools/ESpritz/install.sh +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/tools/ESpritz/manifest.toml +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/tools/ESpritz/run +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/tools/LocalCIDER/README.md +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/tools/LocalCIDER/install.sh +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/tools/LocalCIDER/manifest.toml +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/tools/LocalCIDER/run +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/tools/PLAAC/README.md +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/tools/PLAAC/install.sh +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/tools/PLAAC/manifest.toml +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/tools/PLAAC/plaac-master/web/bin/plaac.jar +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/tools/PLAAC/run +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/tools/PScore/SourceCodeS2/README.txt +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/tools/PScore/SourceCodeS2/elife_phase_separation_predictor.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/tools/PScore/install.sh +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/tools/README.md +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/tools/SEG/README.md +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/tools/SEG/install.sh +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/tools/SEG/manifest.toml +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/tools/SEG/run +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/tools/SEG/seg +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/espritz.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/features.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/legacy_features.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/models.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/paper.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/predictor.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/sequences.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/tool_features.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/tool_paths.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/tools.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/training.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/training_data.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/updated_data.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/validation.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred.egg-info/SOURCES.txt +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred.egg-info/dependency_links.txt +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred.egg-info/entry_points.txt +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred.egg-info/requires.txt +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred.egg-info/top_level.txt +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/tests/test_cli.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/tests/test_cwd.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/tests/test_data_resolution.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/tests/test_demo_scripts.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/tests/test_features.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/tests/test_golden_fixtures.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/tests/test_models.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/tests/test_paper.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/tests/test_sequences.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/tests/test_train_phasepred.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/tests/test_training.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/tests/test_training_data.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/tests/test_training_data_integrity.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/tests/test_training_data_real.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/tests/test_v2022.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/tests/test_validation.py +0 -0
- {phasepred-1.0.1 → phasepred-1.0.2}/tests/test_version_consistency.py +0 -0
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.0.2] - 2026-09-28
|
|
4
|
+
|
|
5
|
+
Patch release for the 1.0.1 installation feedback. Model artifacts and
|
|
6
|
+
training data are unchanged.
|
|
7
|
+
|
|
8
|
+
### Fixed
|
|
9
|
+
|
|
10
|
+
- Use `python3` in the Ubuntu venv examples.
|
|
11
|
+
- Document DeepCoil's user-data installation path and show it in missing-tool
|
|
12
|
+
guidance; keep the legacy checkout environment as a fallback.
|
|
13
|
+
- Show the PScore install command when `check-tools` reports it missing.
|
|
14
|
+
- Let the checkout PScore runner find DBS in the installed user-data copy and
|
|
15
|
+
accept relative FASTA and output paths when invoked on its own.
|
|
16
|
+
|
|
3
17
|
## [1.0.1] - 2026-09-28
|
|
4
18
|
|
|
5
19
|
Patch release based on installation and prediction feedback. Model artifacts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: phasepred
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.2
|
|
4
4
|
Summary: Paper-faithful re-implementation of the PhaSePred phase-separation predictor (Chen et al. 2022, PNAS).
|
|
5
5
|
Author: Tingting Li Lab, Department of Biochemistry and Molecular Biology, School of Basic Medical Sciences, Peking University
|
|
6
6
|
License-Expression: MIT
|
|
@@ -52,7 +52,7 @@ pixi install
|
|
|
52
52
|
```bash
|
|
53
53
|
uv venv --python 3.12 && uv pip install .
|
|
54
54
|
conda env create -f environment.yml && conda activate phasepred
|
|
55
|
-
|
|
55
|
+
python3 -m venv .venv && .venv/bin/pip install -e . -e packages/catgranule
|
|
56
56
|
```
|
|
57
57
|
|
|
58
58
|
Then install the external feature tools. Each installer is idempotent and puts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "phasepred"
|
|
3
|
-
version = "1.0.
|
|
3
|
+
version = "1.0.2"
|
|
4
4
|
description = "Paper-faithful re-implementation of the PhaSePred phase-separation predictor (Chen et al. 2022, PNAS)."
|
|
5
5
|
readme = { file = "README-pypi.md", content-type = "text/markdown" }
|
|
6
6
|
license = "MIT"
|
|
@@ -27,8 +27,10 @@ tools/DeepCoil/
|
|
|
27
27
|
└── README.md this file
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
-
No entity is vendored — the tool lives in an isolated Python 3.8 conda env
|
|
31
|
-
|
|
30
|
+
No entity is vendored — the tool lives in an isolated Python 3.8 conda env.
|
|
31
|
+
New installations use `~/.local/share/phasepred/envs/deepcoil` by default,
|
|
32
|
+
or `$XDG_DATA_HOME/phasepred/envs/deepcoil` / `$PHASEPRED_DATA_ROOT/envs/deepcoil`
|
|
33
|
+
when set. Existing `.external_envs/deepcoil` environments remain supported.
|
|
32
34
|
|
|
33
35
|
## Install
|
|
34
36
|
|
|
@@ -38,14 +40,12 @@ bash tools/DeepCoil/install.sh --check # verify env/bin/deepcoil present
|
|
|
38
40
|
```
|
|
39
41
|
|
|
40
42
|
Overrides: `DEEPCOIL_ENV_PREFIX=/path/to/env DEEPCOIL_PYTHON_VERSION=3.8
|
|
41
|
-
DEEPCOIL_VERSION=2.0.2`. The
|
|
42
|
-
|
|
43
|
-
`env_prefix` and the wrapper's `DEEPCOIL_ENV_PREFIX` override agree.
|
|
43
|
+
DEEPCOIL_VERSION=2.0.2`. The `manifest.toml` `[runtime]` prefix names the
|
|
44
|
+
legacy checkout fallback; the installer and runner prefer the user data root.
|
|
44
45
|
|
|
45
46
|
## Usage
|
|
46
47
|
|
|
47
48
|
```bash
|
|
48
|
-
DEEPCOIL_ENV_PREFIX="$PWD/.external_envs/deepcoil" \
|
|
49
49
|
tools/DeepCoil/run -i in.fasta -out_path /tmp/dc_out -n_cpu 4
|
|
50
50
|
tools/DeepCoil/run --check
|
|
51
51
|
```
|
|
@@ -58,4 +58,4 @@ DeepCoil sanitizes output filenames (alnum + `_`). Writes
|
|
|
58
58
|
## Attribution
|
|
59
59
|
|
|
60
60
|
Reference the DeepCoil meta-server page / Ludwiczak et al. (2019) when
|
|
61
|
-
publishing scores produced by this tool.
|
|
61
|
+
publishing scores produced by this tool.
|
|
@@ -15,4 +15,4 @@ description = "Writes per-accession '<safe_id>.out' tab-separated files (aa, cc,
|
|
|
15
15
|
|
|
16
16
|
[install]
|
|
17
17
|
command = "bash tools/DeepCoil/install.sh"
|
|
18
|
-
hint = "DeepCoil has no upstream license (not redistributable).
|
|
18
|
+
hint = "DeepCoil has no upstream license (not redistributable). Install the isolated Python 3.8 env with deepcoil==2.0.2: bash tools/DeepCoil/install.sh (default: ~/.local/share/phasepred/envs/deepcoil; override with DEEPCOIL_ENV_PREFIX)."
|
|
@@ -43,8 +43,9 @@ bash tools/PScore/install.sh --check # verify predictor + DBS present
|
|
|
43
43
|
|
|
44
44
|
## Usage
|
|
45
45
|
|
|
46
|
-
Run from anywhere
|
|
47
|
-
|
|
46
|
+
Run from anywhere with relative or absolute FASTA and output paths. The wrapper
|
|
47
|
+
uses the installed user-data `SourceCodeS2/DBS/` when the checkout has no DBS,
|
|
48
|
+
then changes into `SourceCodeS2/` as required by the predictor:
|
|
48
49
|
|
|
49
50
|
```bash
|
|
50
51
|
tools/PScore/run input.fasta -output pscore.tsv -overwrite -mute
|
|
@@ -62,4 +63,4 @@ Standard output: one `PScore: <value> >ACC` line per scored accession
|
|
|
62
63
|
|
|
63
64
|
Carry the reference above and the CC-BY 4.0 notice. The archived
|
|
64
65
|
`SourceCodeS2/README.txt` documents the original authors. Data derived from
|
|
65
|
-
the upstream `DBS/` must be attributed to Vernon et al. (2018).
|
|
66
|
+
the upstream `DBS/` must be attributed to Vernon et al. (2018).
|
|
@@ -28,4 +28,4 @@ description = "One 'PScore: <value> >ACC' line per scored accession (via stdou
|
|
|
28
28
|
|
|
29
29
|
[install]
|
|
30
30
|
command = "bash tools/PScore/install.sh"
|
|
31
|
-
hint = "PScore
|
|
31
|
+
hint = "PScore is unavailable. Install its code and DBS with: bash tools/PScore/install.sh (then verify: bash tools/PScore/install.sh --check)."
|
|
@@ -12,6 +12,27 @@ pkg_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
12
12
|
src_dir="$pkg_dir/SourceCodeS2"
|
|
13
13
|
script="$src_dir/elife_phase_separation_predictor.py"
|
|
14
14
|
|
|
15
|
+
# The installer writes DBS into the user data root, not the checkout. A
|
|
16
|
+
# checkout runner can use that complete installation when its local DBS is
|
|
17
|
+
# absent. An installed runner continues to use its adjacent SourceCodeS2.
|
|
18
|
+
if [[ ! -d "$src_dir/DBS" ]]; then
|
|
19
|
+
data_root=""
|
|
20
|
+
if [[ -n "${PHASEPRED_DATA_ROOT:-}" ]]; then
|
|
21
|
+
data_root="$PHASEPRED_DATA_ROOT"
|
|
22
|
+
elif [[ -n "${XDG_DATA_HOME:-}" ]]; then
|
|
23
|
+
data_root="$XDG_DATA_HOME/phasepred"
|
|
24
|
+
elif [[ -n "${HOME:-}" ]]; then
|
|
25
|
+
data_root="$HOME/.local/share/phasepred"
|
|
26
|
+
fi
|
|
27
|
+
if [[ -n "$data_root" ]]; then
|
|
28
|
+
installed_src="$data_root/pscore/SourceCodeS2"
|
|
29
|
+
if [[ -f "$installed_src/elife_phase_separation_predictor.py" && -d "$installed_src/DBS" ]]; then
|
|
30
|
+
src_dir="$(cd "$installed_src" && pwd -P)"
|
|
31
|
+
script="$src_dir/elife_phase_separation_predictor.py"
|
|
32
|
+
fi
|
|
33
|
+
fi
|
|
34
|
+
fi
|
|
35
|
+
|
|
15
36
|
if [[ "${1:-}" == "--check" ]]; then
|
|
16
37
|
if [[ ! -f "$script" ]]; then
|
|
17
38
|
echo "PScore predictor script missing: $script" >&2
|
|
@@ -38,6 +59,10 @@ if [[ ! -f "$script" ]]; then
|
|
|
38
59
|
echo "PScore predictor script missing: $script" >&2
|
|
39
60
|
exit 1
|
|
40
61
|
fi
|
|
62
|
+
if [[ ! -d "$src_dir/DBS" ]]; then
|
|
63
|
+
echo "PScore DBS data missing: $src_dir/DBS (gitignored). Install with: bash $pkg_dir/install.sh" >&2
|
|
64
|
+
exit 1
|
|
65
|
+
fi
|
|
41
66
|
|
|
42
67
|
python_cmd=""
|
|
43
68
|
for cand in "${PHASEPRED_PYTHON:-}" python3 python; do
|
|
@@ -52,5 +77,17 @@ if [[ -z "$python_cmd" ]]; then
|
|
|
52
77
|
exit 1
|
|
53
78
|
fi
|
|
54
79
|
|
|
80
|
+
# The predictor must run from SourceCodeS2 so its relative DBS path works.
|
|
81
|
+
# Resolve the caller's relative FASTA and -output paths before changing cwd.
|
|
82
|
+
args=("$@")
|
|
83
|
+
if [[ "${args[0]}" != /* ]]; then
|
|
84
|
+
args[0]="$PWD/${args[0]}"
|
|
85
|
+
fi
|
|
86
|
+
for ((i = 1; i < ${#args[@]} - 1; i++)); do
|
|
87
|
+
if [[ "${args[i]}" == "-output" && "${args[i+1]}" != /* ]]; then
|
|
88
|
+
args[i+1]="$PWD/${args[i+1]}"
|
|
89
|
+
fi
|
|
90
|
+
done
|
|
91
|
+
|
|
55
92
|
cd "$src_dir"
|
|
56
|
-
exec "$python_cmd" "$script" "
|
|
93
|
+
exec "$python_cmd" "$script" "${args[@]}"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: phasepred
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.2
|
|
4
4
|
Summary: Paper-faithful re-implementation of the PhaSePred phase-separation predictor (Chen et al. 2022, PNAS).
|
|
5
5
|
Author: Tingting Li Lab, Department of Biochemistry and Molecular Biology, School of Basic Medical Sciences, Peking University
|
|
6
6
|
License-Expression: MIT
|
|
@@ -22,7 +22,10 @@ from phasepred.tool_paths import ToolStatus, format_status_table
|
|
|
22
22
|
|
|
23
23
|
pytestmark = pytest.mark.toolfree
|
|
24
24
|
|
|
25
|
-
TOOLS_HINT =
|
|
25
|
+
TOOLS_HINT = (
|
|
26
|
+
"PScore is unavailable. Install its code and DBS with: bash tools/PScore/install.sh "
|
|
27
|
+
"(then verify: bash tools/PScore/install.sh --check)."
|
|
28
|
+
)
|
|
26
29
|
PACKAGE_HINT = "Bundled with the phasepred wheel (deepphase_scores.tsv)."
|
|
27
30
|
|
|
28
31
|
|
|
@@ -57,6 +60,7 @@ def test_table_prints_install_hint_for_missing_rows_only() -> None:
|
|
|
57
60
|
|
|
58
61
|
assert "Install hints:" in table
|
|
59
62
|
assert "PScore: " + TOOLS_HINT in table
|
|
63
|
+
assert "bash tools/PScore/install.sh" in table
|
|
60
64
|
# Reverse proof: an OK row's hint is not a remedy and must not be printed;
|
|
61
65
|
# if the renderer dumped every hint (or the whole ToolStatus repr) this fails.
|
|
62
66
|
assert "Build the vendored SEG binary." not in table
|
|
@@ -107,4 +111,4 @@ def test_table_has_no_hint_block_when_every_row_is_ok() -> None:
|
|
|
107
111
|
table = format_status_table([_ok("Build the vendored SEG binary.")])
|
|
108
112
|
|
|
109
113
|
assert "Install hints:" not in table
|
|
110
|
-
assert "ships only in the GitHub repository" not in table
|
|
114
|
+
assert "ships only in the GitHub repository" not in table
|
|
@@ -21,9 +21,11 @@ from __future__ import annotations
|
|
|
21
21
|
|
|
22
22
|
import hashlib
|
|
23
23
|
import importlib
|
|
24
|
+
import json
|
|
24
25
|
import os
|
|
25
26
|
import shutil
|
|
26
27
|
import subprocess
|
|
28
|
+
import sys
|
|
27
29
|
import tomllib
|
|
28
30
|
from pathlib import Path
|
|
29
31
|
|
|
@@ -184,3 +186,50 @@ def test_pscore_install_check_uses_installed_data_root(tmp_path: Path) -> None:
|
|
|
184
186
|
assert result.returncode == 0, result.stdout + result.stderr
|
|
185
187
|
assert f"PScore: ok ({target})" in result.stdout
|
|
186
188
|
assert "DBS data missing" not in result.stderr
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
def test_checkout_pscore_run_uses_installed_dbs_and_caller_paths(tmp_path: Path) -> None:
|
|
192
|
+
pkg = tmp_path / "PScore"
|
|
193
|
+
pkg.mkdir()
|
|
194
|
+
shutil.copy2(TOOLS_ROOT / "PScore" / "run", pkg / "run")
|
|
195
|
+
|
|
196
|
+
root = tmp_path / "user-data"
|
|
197
|
+
source = root / "pscore" / "SourceCodeS2"
|
|
198
|
+
(source / "DBS").mkdir(parents=True)
|
|
199
|
+
(source / "elife_phase_separation_predictor.py").write_text(
|
|
200
|
+
"import json, os, sys\n"
|
|
201
|
+
"print(json.dumps({'cwd': os.getcwd(), 'args': sys.argv[1:], "
|
|
202
|
+
"'dbs': os.path.isdir('DBS')}))\n",
|
|
203
|
+
encoding="utf-8",
|
|
204
|
+
)
|
|
205
|
+
input_file = tmp_path / "input.fasta"
|
|
206
|
+
input_file.write_text(">test\nACDEFGHIKLMNPQRSTVWY\n", encoding="utf-8")
|
|
207
|
+
|
|
208
|
+
env = os.environ.copy()
|
|
209
|
+
env["PHASEPRED_DATA_ROOT"] = str(root)
|
|
210
|
+
env["PHASEPRED_PYTHON"] = sys.executable
|
|
211
|
+
check = subprocess.run(
|
|
212
|
+
[str(pkg / "run"), "--check"],
|
|
213
|
+
cwd=tmp_path, capture_output=True, text=True, timeout=60, env=env,
|
|
214
|
+
)
|
|
215
|
+
assert check.returncode == 0, check.stderr
|
|
216
|
+
|
|
217
|
+
result = subprocess.run(
|
|
218
|
+
[str(pkg / "run"), "input.fasta", "-output", "output.tsv", "-mute"],
|
|
219
|
+
cwd=tmp_path, capture_output=True, text=True, timeout=60, env=env,
|
|
220
|
+
)
|
|
221
|
+
assert result.returncode == 0, result.stderr
|
|
222
|
+
data = json.loads(result.stdout)
|
|
223
|
+
assert data == {
|
|
224
|
+
"cwd": str(source),
|
|
225
|
+
"args": [str(input_file), "-output", str(tmp_path / "output.tsv"), "-mute"],
|
|
226
|
+
"dbs": True,
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
env["PHASEPRED_DATA_ROOT"] = "user-data"
|
|
230
|
+
relative_root = subprocess.run(
|
|
231
|
+
[str(pkg / "run"), "input.fasta"],
|
|
232
|
+
cwd=tmp_path, capture_output=True, text=True, timeout=60, env=env,
|
|
233
|
+
)
|
|
234
|
+
assert relative_root.returncode == 0, relative_root.stderr
|
|
235
|
+
assert json.loads(relative_root.stdout)["args"] == [str(input_file)]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{phasepred-1.0.1 → phasepred-1.0.2}/src/phasepred/data/tools/PLAAC/plaac-master/web/bin/plaac.jar
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|