Skip to main content

xynergy

Fast and high throughput Drug Synergy Prediction from Minimal Combination Data via Radial Basis Function Surface Interpolation combined with NMF and XGBoost

Workflow

A typical workflow will involve calling several functions in sequence:

  1. tidy() - Coaxes your data into a format suitable for downstream analysis
  2. pre_impute() - Fills in missing experimental points, largely to give full matrices for the next step to factorize
  3. matrix_factorize() - Approximate the imputed matrix via various matrix factorization algorithms
  4. post_impute() - Create a final imputed dataframe using matrix factorization results
  5. add_synergy() - Add columns calculating the synergy at each point under various assumptions (Bliss, Loewe, HSA, and/or ZIP)

xynergy enforces relatively few constraints on the form of your data and in theory allows you to shim in your own data transformations between any of these steps (whether that is a good idea or not is not for me to decide).

An example workflow looks something like this:

import xynergy as xyn
import xynergy.example as ex

data = ex.load_example_data()

# Normalizes column names so we can use default arguments for downstream functions
clean_data = xyn.tidy(
    data,
    dose_cols=["dose_a", "dose_b"],
    response_col="response",
    experiment_cols=["experiment_source_id", "line", "drug_a", "drug_b", "pair_index"],
)
imputed = xyn.pre_impute(clean_data, method="XGBR")
factored = xyn.matrix_factorize(imputed, method=["SVD", "NMF"])
final = xyn.post_impute(factored)
with_synergy = xyn.add_synergy(final, method=["bliss", "zip"])

The bundled workbook lives at xynergy/example_data/data.xlsx and is loaded by xynergy.example.load_example_data(). See the tutorial "Using Xynergy" in the Sphinx documentation for a fuller walkthrough.

Acknowledgments

This work stands on the shoulders of so many things. In addition to the software packages explicitly and implicitly used in this repo, some code/equations came from other places:

  • The cNMF-like algorithm that came from DECREASE (DOI: 10.1038/s42256-019-0122-4)
  • The Venter-mode code that came from the R {modeest} package (DOI: 10.32614/CRAN.package.modeest)
  • The closed-form Loewe additivity algorithm from 10.3389/fphar.2018.00031

Metadata

Release files for xynergy 0.0.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for xynergy 0.0.6
File Size Uploaded
xynergy-0.0.6.tar.gz 70.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for xynergy 0.0.6
File Interpreter ABI Platform
xynergy-0.0.6-py3-none-any.whl Python 3 none any Details

Total release size: 146.8 kB

Release files / xynergy-0.0.6.tar.gz

Download URL xynergy-0.0.6.tar.gz
Size 70.3 kB
Tags Source
SHA-256 checksum
How to use checksums
1bb7725b67afe6a82acad7c03f6172ddb80297a9e7ac5f504f5c6b9e36a0af21
BLAKE2b-256 checksum
How to use checksums
617c8d3988af08d5f1b002dc7fcdffae818f8aba4137461a811a6e9655df1dd5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.9

Release files / xynergy-0.0.6-py3-none-any.whl

Download URL xynergy-0.0.6-py3-none-any.whl
Size 76.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1c63263c584a988c65c5caf9b0c1ea4881ca0b402f8e99f811c3d8be20504e16
BLAKE2b-256 checksum
How to use checksums
09b87b32a75a4ac6dbbeb13202551d00215aa193c308b874a94674a064037e1d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.9

Release history Release notifications | RSS feed

This release

0.0.6 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page