Simulation analysis package for working with disordered proteins
Project description
SOURSOP
A Python package for the analysis of simulations of intrinsically disordered and unfolded proteins.
Overview
SOURSOP is a Python-based simulation analysis package built for the conformational analysis of intrinsically disordered regions (IDRs), unfolded states, and other flexible biopolymers. It is built on top of MDTraj, which handles trajectory I/O and the low-level atomic representation, and adds an analysis layer of polymer-physics-aware observables designed specifically for disordered ensembles.
SOURSOP was originally developed by Jared Lalmansingh in the Pappu lab and Alex Holehouse in the Holehouse Lab at Washington University in St. Louis.
Features
- Global dimensions & shape — radius of gyration, hydrodynamic radius, end-to-end distance, asphericity, acylindricity, prolateness, and the full gyration tensor.
- Polymer scaling — internal scaling profiles, the apparent scaling exponent ν (with bootstrap confidence intervals), and local scaling heterogeneity.
- Distances & contacts — inter-residue and inter-atomic distance maps, polymer-scaled distance maps, contact maps, and fraction of native contacts (Q).
- Secondary structure — per-frame DSSP assignments and BBSEG backbone-torsion classification.
- Solvent accessibility — per-residue, regional, and site-level SASA.
- NMR observables — random-coil chemical shifts, ³J(HN, Hα) scalar
couplings, NOE distances (
ssnmr), and paramagnetic relaxation enhancement (sspre). - Ensemble reweighting — a consistent, deterministic per-frame
weightssystem across the package, with Bayesian Maximum Entropy (ssbme: BME / iBME / BMECustom) and Convex Optimization for Ensemble Reweighting (sscoper: COPER / iCOPER) for reweighting ensembles against experimental data. - HDX protection factors — Best–Vendruscolo ln(P) predictions (
sshdx). - Sampling diagnostics — convergence assessment of disordered-protein
ensembles via PENGUIN (
sssampling). - Multiple resolutions — all-atom and one-bead-per-residue coarse-grained trajectories, with automatic detection.
Installation
SOURSOP can be installed from PyPI with either pip or
uv:
pip install soursop
# or
uv pip install soursop
To install the latest development version directly from GitHub:
pip install "git+https://github.com/holehouse-lab/soursop.git"
Verify the installation with:
python -c "import soursop; print(soursop.__version__)"
Full installation instructions (conda, editable/source installs, and running the tests) are in the documentation.
Quickstart
import numpy as np
from soursop.sstrajectory import SSTrajectory
# read in a trajectory (trajectory file + topology file)
traj = SSTrajectory('traj.xtc', 'start.pdb')
# extract the first protein chain (an SSProtein object)
protein = traj.proteinTrajectoryList[0]
# ensemble-average radius of gyration and end-to-end distance
rg = np.mean(protein.get_radius_of_gyration())
ree = np.mean(protein.get_end_to_end_distance())
# ensemble-average inter-residue distance map
dmap = protein.get_distance_map()
print(f"Rg = {rg:.2f} Å")
print(f"Ree = {ree:.2f} Å")
See the worked examples in the documentation for end-to-end analyses.
Documentation
Full documentation, including installation, tutorials, worked examples, and the complete API reference, is hosted at soursop.readthedocs.io.
Versioning and changelog
The current PyPI release is 0.2.7. The upcoming 2.0.0 release (in
development on this repository) is a large maintenance, performance,
documentation, and feature release that adds a consistent ensemble-reweighting
(weights) system across the package, two new modules for deriving frame
weights from experimental data (ssbme: BME / iBME / BMECustom, and sscoper:
COPER / iCOPER), new experimental forward-model observables (scalar
³J(HN, Hα) couplings and NOE distances in ssnmr, plus HDX protection factors
in the new sshdx module) — alongside wide-ranging bug fixes and
behaviour-preserving speed-ups.
The full, versioned changelog is in CHANGELOG.md.
Reporting bugs and requesting features
If you find a bug, typo, or error, please raise an issue on GitHub.
If you wish to add a new feature or contribute a plugin, please see the development documentation.
Citing SOURSOP
If you use SOURSOP in your work, please cite:
Lalmansingh, J. M., Keeley, A. T., Ruff, K. M., Pappu, R. V. & Holehouse, A. S. SOURSOP: A Python Package for the Analysis of Simulations of Intrinsically Disordered Proteins. J. Chem. Theory Comput. 19, 5609–5620 (2023). doi:10.1021/acs.jctc.3c00190
License
SOURSOP is distributed under the GNU Lesser General Public License v3.0 (LGPLv3). See LICENSE for the full text.
Copyright © 2014–2026 Alex Holehouse and contributors.
Acknowledgements
Project structure based on the Computational Molecular Science Python Cookiecutter version 1.0.
Project details
Release history Release notifications | RSS feed
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 soursop-2.0.1.tar.gz.
File metadata
- Download URL: soursop-2.0.1.tar.gz
- Upload date:
- Size: 12.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b86c67a51029e180b9ca588da9b2cf341ca8179a93d726d68ad04153d251dce9
|
|
| MD5 |
a746ddcbb2fc58aea29ec98583c66549
|
|
| BLAKE2b-256 |
3095969d59dc2e485f2f7ec94fc7c700ab406b0901cc060c203be656e76b67a2
|
File details
Details for the file soursop-2.0.1-py3-none-any.whl.
File metadata
- Download URL: soursop-2.0.1-py3-none-any.whl
- Upload date:
- Size: 12.3 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dc3cc11fd73c8dfc38f1be8a974ee077b576b0ae9aa243ad42475e1b76a70659
|
|
| MD5 |
b7fa41ae874909f441e2becc6429de8e
|
|
| BLAKE2b-256 |
36bf8aac7dcab235c03edce1d2896d3e31751648e9141d87b9deff742fe4c747
|