Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
d8bd535
Merge branch 'development' of github.com:daisybio/drevalpy into devel…
JudithBernett Nov 20, 2025
48b244f
Merge branch 'development' of github.com:daisybio/drevalpy into devel…
JudithBernett Nov 21, 2025
a5602b1
included manual docker build information in pull request template
JudithBernett Nov 21, 2025
b892086
[DEPENDABOT]: Bump actions/checkout from 5 to 6
dependabot[bot] Nov 24, 2025
9559ec5
[DEPENDABOT]: Bump actions/upload-artifact from 5 to 6
dependabot[bot] Dec 15, 2025
7fe8220
[DEPENDABOT]: Bump actions/cache from 4.3.0 to 5.0.1
dependabot[bot] Dec 15, 2025
6212d96
Merge pull request #320 from daisybio/dependabot/github_actions/devel…
JudithBernett Dec 17, 2025
0624087
Merge pull request #324 from daisybio/dependabot/github_actions/devel…
JudithBernett Dec 17, 2025
4971bf6
Merge pull request #325 from daisybio/dependabot/github_actions/devel…
JudithBernett Dec 17, 2025
7659ea1
addresses #322 : making CLI commands for the nfcore pipeline
JudithBernett Dec 17, 2025
96f4b77
updating versions
JudithBernett Dec 17, 2025
207f1f2
properly loading pickle
JudithBernett Dec 18, 2025
4fd3a96
properly loading pickle II
JudithBernett Dec 18, 2025
e6c0933
Merge branch 'cli_commands' of github.com:daisybio/drevalpy into cli_…
JudithBernett Dec 18, 2025
b638177
random
PascalIversen Dec 18, 2025
2306a7d
opening everything safely now.
JudithBernett Dec 18, 2025
c9ea461
trying to fix tests by adding a header
JudithBernett Dec 18, 2025
4c0ae3e
Merge branch 'cli_commands' of github.com:daisybio/drevalpy into cli_…
JudithBernett Dec 18, 2025
1602eae
[DEPENDABOT]: Bump actions/download-artifact from 5 to 7
dependabot[bot] Dec 22, 2025
5612305
[DEPENDABOT]: Bump codecov/codecov-action from 5.5.1 to 5.5.2
dependabot[bot] Dec 22, 2025
c315f4a
automated tests no longer dependent on Zenodo
JudithBernett Jan 7, 2026
c48f10c
fixing mypy, removing unused test
JudithBernett Jan 7, 2026
62b0efb
fixing really dumb error: forgot new loading for TOYv2
JudithBernett Jan 7, 2026
d2b3eec
maybe with resolved paths?
JudithBernett Jan 7, 2026
082239b
forgot to make sure that data exists
JudithBernett Jan 7, 2026
17af7ba
Add NaiveTissueDrugMeanPredictor
nictru Jan 9, 2026
c7c10e1
Add contributor
nictru Jan 9, 2026
3f87d01
Update strongest architecture docs
nictru Jan 9, 2026
5395d2e
Change the way tissues are accessed
nictru Jan 9, 2026
f99d046
* minor changes to the cli functions
JudithBernett Jan 9, 2026
8156dac
test_dataset function also needs the sample dataset
JudithBernett Jan 9, 2026
db6619f
mypy fix
JudithBernett Jan 9, 2026
5d789a2
Merge pull request #327 from daisybio/cli_commands
JudithBernett Jan 9, 2026
e9c97dd
Merge pull request #330 from daisybio/dependabot/github_actions/devel…
JudithBernett Jan 9, 2026
18597aa
Merge pull request #329 from daisybio/dependabot/github_actions/devel…
JudithBernett Jan 9, 2026
0199458
Update usage docs on strongest baseline
nictru Jan 9, 2026
6a5f469
Merge pull request #334 from Orakl-Oncology-Dev/naive-tissue-drug-mea…
JudithBernett Jan 9, 2026
d1b5440
Merge branch 'development' of github.com:daisybio/drevalpy into devel…
JudithBernett Jan 12, 2026
bd1f0b0
fixing #310
JudithBernett Jan 12, 2026
5cb5d27
leaderboard
PascalIversen Jan 13, 2026
5fbd0ee
added leaderboard to readme
PascalIversen Jan 13, 2026
1faa0a7
leaderbaord
PascalIversen Jan 13, 2026
f148610
font size
PascalIversen Jan 13, 2026
28e4c0b
font size and removed std
PascalIversen Jan 13, 2026
cf4ccde
black bg
PascalIversen Jan 13, 2026
3204501
true black bg and cache busting
PascalIversen Jan 13, 2026
d37f885
matching githubs darkmode :)
PascalIversen Jan 13, 2026
0c4095f
matching githubs darkmode :)
PascalIversen Jan 13, 2026
ede23c8
cache busting again
PascalIversen Jan 13, 2026
7df8c19
curvecurator test
JudithBernett Jan 13, 2026
31c2e12
updates
JudithBernett Jan 13, 2026
38356a7
1000 points are too many, actually
JudithBernett Jan 13, 2026
8603bf7
documentation added
JudithBernett Jan 13, 2026
8c9ef8c
fixing float errors
JudithBernett Jan 13, 2026
43b378f
I always forget mypy
PascalIversen Jan 13, 2026
abb222b
explanatory comment was still wrong
JudithBernett Jan 13, 2026
5330745
Merge pull request #337 from daisybio/curvecurator_fix
JudithBernett Jan 13, 2026
58682ef
lightmode friendlier
PascalIversen Jan 13, 2026
ee11959
forgot to add images
PascalIversen Jan 13, 2026
bb5f0a0
line fix
PascalIversen Jan 13, 2026
6f2e296
simplify colors
PascalIversen Jan 13, 2026
3b1a999
rm alpha :D
PascalIversen Jan 13, 2026
3904622
Update drevalpy/visualization/create_leaderboard.py
PascalIversen Jan 13, 2026
a99b3b8
Update drevalpy/visualization/create_leaderboard.py
PascalIversen Jan 13, 2026
eb728a9
update plots again
PascalIversen Jan 13, 2026
94cf1a8
update plots again again
PascalIversen Jan 13, 2026
b98e087
update plots again again
PascalIversen Jan 13, 2026
8f106d6
Update drevalpy/visualization/create_leaderboard.py
PascalIversen Jan 13, 2026
98aa5c1
Update drevalpy/visualization/create_leaderboard.py
PascalIversen Jan 13, 2026
7244508
more changes to the plot
PascalIversen Jan 13, 2026
6d8f738
Update drevalpy/visualization/create_leaderboard.py
PascalIversen Jan 13, 2026
9f2722e
Merge branch 'development' into leaderboard
PascalIversen Jan 13, 2026
e61315a
capitalized N
PascalIversen Jan 13, 2026
5748b82
capitalized N
PascalIversen Jan 13, 2026
9c94d0b
merge
PascalIversen Jan 13, 2026
8ad96bc
Merge pull request #344 from daisybio/leaderboard
PascalIversen Jan 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,12 @@ Then,
1. Open a PR from development to main with these changes.
2. Wait for a review and merge.
3. Create a new release on GitHub with the version number. Update the release notes with the changes made in this version.
4. If the Docker github action fails (e.g., no space left on device), you can do it manually:
- Enable Docker buildx locally. If you don't have a builder that supports multi-arch, create one:
```{bash}
docker buildx ls
docker buildx create --use --name multiarch-builder
docker buildx inspect --bootstrap
```
- Login to ghcr `docker login --username <GitHub-Username> --password <personal-access-token> ghcr.io`
- Build the multi-platform image, insert the correct version `docker buildx build --platform linux/amd64,linux/arm64 -t ghcr.io/daisybio/drevalpy:v<INSERT-VERSION> -t ghcr.io/daisybio/drevalpy:latest --push .`
2 changes: 1 addition & 1 deletion .github/workflows/build_package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
python: ["3.11", "3.12", "3.13"]

steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
name: Check out source-code repository

- name: Setup Python
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/labeler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Check out the repository
uses: actions/checkout@v5
uses: actions/checkout@v6

- name: Run Labeler
uses: crazy-max/ghaction-github-labeler@v5.3.0
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/publish-docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
steps:
# Necessary for buildx
- name: Checkout repository
uses: actions/checkout@v5
uses: actions/checkout@v6

- name: Setup QEMU
uses: docker/setup-qemu-action@v3
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/publish_docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
name: Check out source-code repository

- name: Setup Python
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/python-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:

steps:
- name: Check out the repository
uses: actions/checkout@v5
uses: actions/checkout@v6

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/python-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- name: Set up Python
uses: actions/setup-python@v6
with:
Expand Down
14 changes: 7 additions & 7 deletions .github/workflows/run_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:

steps:
- name: Check out the repository
uses: actions/checkout@v5
uses: actions/checkout@v6

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
Expand Down Expand Up @@ -64,7 +64,7 @@ jobs:
print("::set-output name=result::{}".format(result))

- name: Restore pre-commit cache
uses: actions/cache@v4.3.0
uses: actions/cache@v5.0.1
if: matrix.session == 'pre-commit'
with:
path: ~/.cache/pre-commit
Expand All @@ -78,15 +78,15 @@ jobs:

- name: Upload coverage data
if: always() && matrix.session == 'tests' && matrix.os == 'ubuntu-latest'
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v6
with:
name: coverage-data
path: ".coverage.*"
include-hidden-files: "true"

- name: Upload documentation
if: matrix.session == 'docs-build'
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v6
with:
name: docs
path: docs/_build
Expand All @@ -96,7 +96,7 @@ jobs:
needs: tests
steps:
- name: Check out the repository
uses: actions/checkout@v5
uses: actions/checkout@v6

- name: Set up Python 3.13
uses: actions/setup-python@v6
Expand All @@ -117,7 +117,7 @@ jobs:
nox --version

- name: Download coverage data
uses: actions/download-artifact@v5
uses: actions/download-artifact@v7
with:
name: coverage-data

Expand All @@ -128,6 +128,6 @@ jobs:
run: nox --force-color --session=coverage -- xml -i

- name: Upload coverage report
uses: codecov/codecov-action@v5.5.1
uses: codecov/codecov-action@v5.5.2
with:
token: ${{ secrets.CODECOV_TOKEN }}
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@ data/TOYv2
data/CTRPv1
data/CTRPv2
data/meta
data/BeatAML2
data/PDX_Bruna

# Results directory is created when running the demo notebook
results/

# Byte-compiled / optimized / DLL files
__pycache__/
Expand Down
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ repos:
types: [python]
require_serial: true
args:
- --ignore=D212,W503,C901,N803,N806,S615
- --ignore=D212,W503,C901,N803,N806,S615,S403,S301
- id: pyupgrade
name: pyupgrade
description: Automatically upgrade syntax for newer versions.
Expand Down
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,14 @@ Use DrEval to build drug response models that have an impact

---

<picture>
<source media="(prefers-color-scheme: dark)" srcset="docs/_static/img/leaderboard_dark.png?v=4">
<source media="(prefers-color-scheme: light)" srcset="docs/_static/img/leaderboard_light.png?v=4">
<img alt="DrEvalPy Leaderboard" src="docs/_static/img/leaderboard_dark.png?v=4">
</picture>

---

This project is a collaboration of the Technical University of Munich (TUM, Germany)
and the Freie Universität Berlin (FU, Germany).

Expand Down
7 changes: 7 additions & 0 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -68,3 +68,10 @@ Use DrEval to build drug response models that have an impact

This project is a collaboration of the Technical University of Munich (TUM, Germany)
and the Freie Universität Berlin (FU, Germany).

Leaderboard
-----------

.. image:: docs/_static/img/leaderboard.png
:alt: DrEvalPy Leaderboard
:align: center
3 changes: 2 additions & 1 deletion docs/_key_contributors.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@
* `Mario Picciani <https://github.com/picciama>`_: Developer
* `Markus List <https://github.com/mlist>`_: Advisor and PI of Data Science in Systems Biology, TUM
* `Katharina Baum <https://github.com/kathbaum>`_: Advisor and PI of Data Integration in the Life Sciences, FU Berlin
* `Mathias Wilhelm <https://github.com/mwilhelm42>`_: Advisor and PI of Computational Mass Spectrometry, TUM
* `Mathias Wilhelm <https://github.com/mwilhelm42>`_: Advisor and PI of Computational Mass Spectrometry, TUM
* `Nico Trummer <https://github.com/nictru>`_: Contributor, `Orakl Oncology <https://www.orakl-oncology.com/>`_
1 change: 1 addition & 0 deletions docs/_static/img/DrugResponseEvalLogo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/_static/img/leaderboard_dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/_static/img/leaderboard_light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,9 @@
# the built documents.
#
# The short X.Y version.
version = "1.4.0"
version = "1.4.1"
# The full version, including alpha/beta/rc tags.
release = "1.4.0"
release = "1.4.1"

# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
Expand Down
2 changes: 1 addition & 1 deletion docs/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
sphinx-autobuild==2025.8.25 ; python_version >= "3.11" and python_version <= "3.13"
sphinx-autodoc-typehints==3.5.2 ; python_version >= "3.11" and python_version <= "3.13"
sphinx-click==6.1.0 ; python_version >= "3.11" and python_version <= "3.13"
sphinx-click==6.2.0 ; python_version >= "3.11" and python_version <= "3.13"
sphinx-rtd-theme==3.0.2 ; python_version >= "3.11" and python_version <= "3.13"
29 changes: 19 additions & 10 deletions docs/usage.rst
Original file line number Diff line number Diff line change
Expand Up @@ -121,14 +121,18 @@ reproducible manner. We offer three settings via the ``--test_mode`` parameter:
An underlying issue is that drugs have a rather unique IC50 range. That means that by just predicting the mean IC50
that a drug has in the training set (aggregated over all cell lines), you can already achieve a seemingly good
prediction (as evaluated by naive R^2 or correlation metrics). This is why we also offer the possibility to compare your model to a **NaivePredictor** that predicts
the mean IC50 of all drugs in the training set. We also offer two less naive predictors:
**NaiveCellLineMeanPredictor** and **NaiveDrugMeanPredictor**. The former predicts the mean IC50 of a cell line in
the training set and the latter predicts the mean IC50 of a drug in the training set.
Finally, the strongest naive baseline is the **NaiveMeanEffectPredictor**
which combines the effects of cell lines and drugs.
It is equivalent to the **NaiveCellLineMeanPredictor** and **NaiveDrugMeanPredictor** for the LDO and LPO settings, respectively,
the mean IC50 of all drugs in the training set. We also offer several less naive predictors:
**NaiveCellLineMeanPredictor**, **NaiveDrugMeanPredictor**, **NaiveTissueMeanPredictor**, and **NaiveTissueDrugMeanPredictor**.
The **NaiveCellLineMeanPredictor** predicts the mean IC50 of a cell line in the training set,
the **NaiveDrugMeanPredictor** predicts the mean IC50 of a drug in the training set,
the **NaiveTissueMeanPredictor** predicts the mean IC50 of a tissue in the training set,
and the **NaiveTissueDrugMeanPredictor** predicts the mean IC50 per tissue-drug combination (aggregated across all cell lines with that tissue-drug pair).
The **NaiveMeanEffectPredictor** combines the effects of cell lines and drugs.
It is equivalent to the **NaiveCellLineMeanPredictor** and **NaiveDrugMeanPredictor** for the LDO and LCO settings, respectively,
as test cell line effects and drug effects are unknown in these settings.

In LCO, **NaiveTissueDrugMeanPredictor** is the strongest baseline, while in all other settings, **NaiveMeanEffectPredictor** is the strongest.

Available Models
------------------
In addition to the Naive Predictors, we offer a variety of more advanced **baseline models** and
Expand All @@ -149,6 +153,8 @@ For ``--models``, you can also perform randomization and robustness tests. The `
+---------------------------------+----------------------------+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| NaiveTissueMeanPredictor | Baseline Method | Multi-Drug Model | Predicts the mean response of the tissue in the training set. |
+---------------------------------+----------------------------+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| NaiveTissueDrugMeanPredictor | Baseline Method | Multi-Drug Model | Predicts the mean response per tissue-drug combination in the training set (aggregated across all cell lines with that tissue-drug pair). Falls back to the overall dataset mean for unseen combinations. |
+---------------------------------+----------------------------+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| NaiveMeanEffectsPredictor | Baseline Method | Multi-Drug Model | Predicts using ANOVA-like mean effect model of cell lines and drugs |
+---------------------------------+----------------------------+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| ElasticNet | Baseline Method | Multi-Drug Model | Fits an `Sklearn Elastic Net <https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.ElasticNet.html>`_, `Lasso <https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Lasso.html>`_, or `Ridge <https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Ridge.html>`_ model on gene expression data and drug fingerprints (concatenated input matrix). |
Expand Down Expand Up @@ -268,11 +274,14 @@ the available datasets in the previous section.

**Raw viability data**

* DrEvalPy expects a csv-formatted file in the location ``<path_data>/<dataset>/<dataset_name>_raw.csv`` (corresponding to the ``--path_data`` and ``--dataset_name`` options),
which contains the raw viability data in long format with the columns ["dose", "response", "sample", "drug"] and an optional "replicate" column.
If replicates are provided, the procedure will fit one curve per sample / drug pair using all replicates.
* DrEvalPy expects a csv-formatted file in the location ``<path_data>/<dataset>/<dataset_name>_raw.csv`` (corresponding to the ``--path_data`` and ``--dataset_name`` options), which contains the raw viability data in long format with the columns ["dose", "response", "sample", "drug"] and an optional "replicate" column. If replicates are provided, the procedure will fit one curve per sample / drug pair using all replicates.
* **All dosages have to be provided in µM!** Drevalpy will compute the following response measures:
* pEC50_curvecurator: computed internally by CurveCurator. Is computed as -log10(EC50_curvecurator[M]).
* EC50_curvecurator: given in µM
* IC50_curvecurator: given in µM
* LN_IC50_curvecurator: computed from IC50_curvecurator
* AUC_curvecurator
* The option ``--curve_curator_cores`` must be set. ``--no_refitting`` must not be set.
* Available measures are ["AUC", "pEC50", "EC50", "IC50"].
* DrEvalPy provides all results of the fitting in the same folder including the fitted curves in a file folder ``<path_data>/<dataset>/<dataset_name>.csv``

**Prefit viability data**
Expand Down
4 changes: 0 additions & 4 deletions drevalpy/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,3 @@ def cli_main():
"""Command line interface entry point for the drug response evaluation pipeline."""
args = get_parser().parse_args()
main(args)


if __name__ == "__main__":
cli_main()
Loading
Loading