A Bayesian implementation of KdSAXS for calculating dissociation constants from SAXS data for a simple monomer-oligomer model.
- Ensure ATSAS software suite is installed and accessible
- Check the examples below (for Beta-Lactoglobulin protein oligomerization) or upload your own and change the script accordingly:
- Theoretical data:
examples/blg/ph7/theoretical_saxs/ - Experimental data:
examples/blg/ph7/exp_saxs/
- Theoretical data:
- Update the ATSAS_PATH in the script to point to your ATSAS installation and change other variables
- Run the script and check example output interactive plots or figures below:
python kdsaxs_bayesian.py - Check the KdSAXS repository for more extensive documentation.
The analysis uses Bayesian inference through MCMC sampling to determine protein oligomerization Kd values from SAXS data. The workflow:
- Initial χ² calculation across a wide Kd range
- Identification of Kd values where χ² < threshold
- MCMC sampling within this range using a log-uniform prior
- Generation of posterior distribution and credible intervals
The χ² threshold (default: 2.0) can be adjusted based on the quality of your data. Examine the χ² vs Kd plots to:
- Identify regions of good fit
- Adjust the threshold if needed
- Balance between fit quality and sampling range
- Requires manual setting of χ² threshold
- Assumes a simple monomer-oligomer equilibrium
- Limited to single-step oligomerization processes
- Python 3.8+
- ATSAS software suite
- Required Python packages:
- numpy
- pandas
- scipy
- plotly
- pymc
- arviz
- pytensor
Interactive Analysis Results download
Interactive Diagnostics download
- Kd = 57.30 ± 4.88 µM
- 95% Credible Interval: [49.59, 65.67] µM

