prothon -traj wild_type.dcd,mutant.dcd -top topology.pdb -m cbcn
CBCN (reference: ensemble 0)
ensemble 1: d = 0.2841 (floor 0.0472) — 34/76 residues differ
Prothon represents each conformational ensemble as a vector of probability distributions over local order parameters — contact numbers, virtual bond and torsion angles, solvent accessibility — and measures the Jensen–Shannon distance between corresponding distributions. Because the representation is local, no structural superposition is needed and the cost is linear in the number of frames rather than quadratic, which is what makes ensembles of tens of thousands of conformations tractable.
It reports what it cannot resolve. Two independent halves of a single ensemble have a non-zero Jensen–Shannon distance, because a finite sample never reproduces a continuous distribution exactly. That self-distance is the resolution limit of the comparison, and Prothon measures it, prints it beside every result, and draws it on every figure. A difference smaller than the floor is reported as unresolvable rather than as a small difference.
Install
conda install -c conda-forge prothon # preferred
pip install prothon-ensembles # the distribution name; see below
prothon --info
The distribution on PyPI is prothon-ensembles, because prothon was
registered in 2020 by an unrelated protobuf generator and PyPI names are
permanent. The import name and the command are both prothon:
from prothon import Prothon
Use it
From the command line:
prothon -traj a.dcd,b.dcd,c.dcd -top top.pdb -m cbcn,cata -o results --seed 0
| flag | meaning |
|---|---|
-traj |
Trajectory files, one per ensemble, comma-separated. Never concatenated. |
-top |
Topology (PDB), shared by all of them. |
-m |
Measures: cbcn, cacn, caba, cata, sasa. |
-r |
Reference ensemble index (default 0). |
-o |
Output root. Each measure writes <measure>_output/. |
-d |
Projections: pca, mds, tsne. Off by default. |
--seed |
Set it, and the run is reproducible. |
Or from Python:
from prothon import Prothon
study = Prothon(["wild_type.dcd", "mutant.dcd"], "topology.pdb", random_state=0)
results = study.compare_ensembles(methods="cbcn")
comparison = results["cbcn"][0]
comparison.global_dissimilarity # 0.2841
comparison.noise_floor # 0.0472 — the resolution limit
comparison.resolved # True: the difference clears the floor
comparison.significant # bool array, one per residue
comparison.local_dissimilarity # per residue, zero where not significant
comparison.raw_local_dissimilarity # per residue, unmasked
print(study.summary())
Each measure writes a directory containing the representation matrices as CSV,
heatmaps, global and per-residue dissimilarity figures, and a manifest.json
recording the inputs, parameters, seed and version that produced them.
The measures
| name | quantity | circular |
|---|---|---|
cbcn |
C-beta contact number, smooth cutoff | |
cacn |
C-alpha contact number, smooth cutoff | |
caba |
Virtual Cα–Cα–Cα bond angle | |
cata |
Virtual Cα torsion angle | yes |
sasa |
Per-residue solvent accessible surface area |
Torsions live on a circle, so they are estimated with a von Mises kernel on a grid spanning a full turn. Each measure declares this, so the call site cannot forget it.
Upgrading from 2.0
The API is unchanged and existing scripts run without modification, but numbers will differ, because the significance test in 2.0 was not sound: it compared each ensemble against a bootstrap of itself, a null about half as wide as the true sampling variability. Over 40 replicates in which both ensembles were drawn from an identical distribution, 2.0 called 100% of residues significantly different. The permutation test that replaces it sits at 1.2%.
--legacy-statistics reproduces the old behaviour for regenerating published
figures. CHANGELOG.md has the full account.
from Prothon import Prothon still works and warns; use
from prothon import Prothon.
Citation
Aina, A.; Hsueh, S. C. C.; Plotkin, S. S. PROTHON: A Local Order Parameter-Based Method for Efficient Comparison of Protein Ensembles. J. Chem. Inf. Model. 2023, 63 (11), 3453–3461. DOI: 10.1021/acs.jcim.3c00145
@article{aina2023prothon,
author = {Aina, Adekunle and Hsueh, Shawn C. C. and Plotkin, Steven S.},
title = {PROTHON: A Local Order Parameter-Based Method for Efficient
Comparison of Protein Ensembles},
journal = {Journal of Chemical Information and Modeling},
volume = {63},
number = {11},
pages = {3453--3461},
year = {2023},
doi = {10.1021/acs.jcim.3c00145},
}
Contributing
See CONTRIBUTING.md. The original version 1 code accompanying
the 2023 paper is preserved unchanged under legacy/.
License
MIT. See LICENSE.
Prothon was distributed under GPL-3.0 up to and including version 2.0.0. From 2.1.0 the project is MIT-licensed. Copies already obtained under GPL-3.0 remain governed by that licence — relicensing is not retroactive and takes nothing away from anyone who has a copy.
Built in the AAI Research Lab at California State University Dominguez Hills, on MDTraj, NumPy, SciPy, scikit-learn and Matplotlib.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file prothon_ensembles-2.1.0.tar.gz.
File metadata
- Download URL: prothon_ensembles-2.1.0.tar.gz
- Upload date:
- Size: 54.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f5b9ade6a5bae68c4d8dddf0ba1fe923141486dc49e457cab597bed0ddb5a509
|
|
| MD5 |
71d7da34c7e729dac5fdd99aea1e82b3
|
|
| BLAKE2b-256 |
3250ca0d30299703c47ee9db1c015f043c765bdae7028ca4276d94ab4ed119a7
|
Provenance
The following attestation bundles were made for prothon_ensembles-2.1.0.tar.gz:
Publisher:
publish.yml on aai-research-lab/Prothon
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
prothon_ensembles-2.1.0.tar.gz -
Subject digest:
f5b9ade6a5bae68c4d8dddf0ba1fe923141486dc49e457cab597bed0ddb5a509 - Sigstore transparency entry: 2408393742
- Sigstore integration time:
-
Permalink:
aai-research-lab/Prothon@3cf7199bfb0d8f12783d5c232b76f472c1aca32a -
Branch / Tag:
refs/tags/v2.1.0 - Owner: https://github.com/aai-research-lab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3cf7199bfb0d8f12783d5c232b76f472c1aca32a -
Trigger Event:
push
-
Statement type:
File details
Details for the file prothon_ensembles-2.1.0-py3-none-any.whl.
File metadata
- Download URL: prothon_ensembles-2.1.0-py3-none-any.whl
- Upload date:
- Size: 36.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
579a9cc7f09e47f07ef7133e8a787e18a27ca1264d192250636faaa7bb2e7d18
|
|
| MD5 |
3c823358ececa6c8eaab038a6fa6fb24
|
|
| BLAKE2b-256 |
49a319392ce431d45fd0e39db157c4942d7c221cd2aef214630c65b789119afa
|
Provenance
The following attestation bundles were made for prothon_ensembles-2.1.0-py3-none-any.whl:
Publisher:
publish.yml on aai-research-lab/Prothon
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
prothon_ensembles-2.1.0-py3-none-any.whl -
Subject digest:
579a9cc7f09e47f07ef7133e8a787e18a27ca1264d192250636faaa7bb2e7d18 - Sigstore transparency entry: 2408393791
- Sigstore integration time:
-
Permalink:
aai-research-lab/Prothon@3cf7199bfb0d8f12783d5c232b76f472c1aca32a -
Branch / Tag:
refs/tags/v2.1.0 - Owner: https://github.com/aai-research-lab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3cf7199bfb0d8f12783d5c232b76f472c1aca32a -
Trigger Event:
push
-
Statement type: