Skip to main content

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.

Build Status codecov Documentation Status PyPI version Python versions License: LGPL v3 DOI Last commit


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 weights system 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

soursop-2.0.1.tar.gz (12.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

soursop-2.0.1-py3-none-any.whl (12.3 MB view details)

Uploaded Python 3

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

Hashes for soursop-2.0.1.tar.gz
Algorithm Hash digest
SHA256 b86c67a51029e180b9ca588da9b2cf341ca8179a93d726d68ad04153d251dce9
MD5 a746ddcbb2fc58aea29ec98583c66549
BLAKE2b-256 3095969d59dc2e485f2f7ec94fc7c700ab406b0901cc060c203be656e76b67a2

See more details on using hashes here.

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

Hashes for soursop-2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 dc3cc11fd73c8dfc38f1be8a974ee077b576b0ae9aa243ad42475e1b76a70659
MD5 b7fa41ae874909f441e2becc6429de8e
BLAKE2b-256 36bf8aac7dcab235c03edce1d2896d3e31751648e9141d87b9deff742fe4c747

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page