DrEvalPy:Python 癌细胞系药物反应预测套件
新闻: 我们的论文已在 Nature Communications 上发表!
文档位于 ReadTheDocs。
专注于模型创新 — DrEval 处理其余部分!
- DrEval 是一个工具包,确保药物反应预测评估在统计上可靠、在生物学上有意义且可复现。
- 在使用我们的自动化标准化评估协议和预处理工作流的同时,专注于模型创新。
- 灵活的模型接口支持所有模型类型(例如 机器学习、统计、基于网络的分析)
通过将您的模型贡献到 DrEval 目录中,您可以增加您工作的曝光度、可重用性和可迁移性。

使用 DrEval 构建具有影响力的药物反应模型
- 维护良好的最新基线目录,无需重新实现文献中的模型
- 用于基准测试的金标准数据集
- 一致的应用驱动评估
- 结合置换检验的消融研究
- 跨研究评估以进行泛化分析
- 优化的 nextflow 流水线以实现快速实验
- 易于使用的超参数调优
- 可直接用于论文的可视化图表以展示性能
本项目是慕尼黑工业大学(TUM,德国) 与柏林自由大学(FU,德国)的合作成果。
演示
在普通机器上的预期运行时间:
- 独立演示:38 分钟
- Nextflow 演示:5 分钟
安装
使用 pip:
pip install drevalpy
可选的 Ray Tune 支持(用于并行超参数调优):
pip install drevalpy[multiprocessing]
在普通机器上,安装大约需要一分钟。
使用 docker:
docker pull ghcr.io/daisybio/drevalpy:main
从源:
git clone https://github.com/daisybio/drevalpy.git
cd drevalpy
pip install poetry
pip install poetry-plugin-export
poetry install
在控制台中运行以下命令以检查您的安装:
drevalpy --help
快速入门
要运行目录中的模型,您可以执行:
drevalpy --run_id my_first_run --models NaiveTissueMeanPredictor NaiveDrugMeanPredictor --dataset_name TOYv1 --test_mode LCO
这将下载一个小型玩具药物响应数据集,训练我们的基线模型,这些模型仅预测药物或组织的均值,或药物和细胞系效应的均值。 它将在 "LCO" 中评估,即使用 7 折交叉验证的留一细胞系划分策略。 结果将存储在
results/my_first_run/TOYv1/LCO
你可以使用以下方法将它们可视化
drevalpy-report --run_id my_first_run --dataset_name TOYv1
这将在 results 目录中创建一个 index.html 文件,您可以在 Web 浏览器中打开它。
您也可以使用 Python 运行药物反应实验:
from drevalpy.experiment import drug_response_experiment
from drevalpy.models import MODEL_FACTORY
from drevalpy.datasets import AVAILABLE_DATASETS
from drevalpy.experiment import drug_response_experiment
naive_mean = MODEL_FACTORY["NaivePredictor"] # a naive model that just predicts the training mean
enet = MODEL_FACTORY["ElasticNet"] # An Elastic Net based on drug fingerprints and gene expression of 1000 landmark genes
simple_nn = MODEL_FACTORY["SimpleNeuralNetwork"] # A neural network based on drug fingerprints and gene expression of 1000 landmark genes
toyv1 = AVAILABLE_DATASETS["TOYv1"](path_data="data")
drug_response_experiment(
models=[enet, simple_nn],
baselines=[naive_mean], # Ablation studies and robustness tests are not run for baselines.
response_data=toyv1,
n_cv_splits=2, # the number of cross validation splits. Should be higher in practice :)
test_mode="LCO", # LCO means Leave-Cell-Line out. This means that the test and validation splits only contain unseed cell lines.
run_id="my_first_run",
path_data="data", # where the downloaded drug response and feature data is stored
path_out="results", # results are stored here :)
hyperparameter_tuning=False) # if True (default), hyperparameters of the models and baselines are tuned.
这将在 CTRPv2 数据集上运行 Random Forest 和 Simple Neural Network 模型,并使用 Naive Mean Effects Predictor 作为基线。结果将存储在 results/my_second_run/CTRPv2/LCO 中。
要获取评估指标,您可以使用:
from drevalpy.visualization.create_report import create_report
create_report(
run_id="my_first_run",
dataset=toyv1.dataset_name,
path_data= "data",
result_path="results",
)
我们建议在进行计算密集型运行以及提高可重复性时使用我们的 Nextflow 流水线。 运行它无需任何 Nextflow 知识。nextflow 流水线可在此处获取:nf-core-drugresponseeval.
示例报告
在此浏览我们的基准测试结果。 您可以通过运行以下命令来重现整个分析:
# Main run
nextflow run nf-core/drugresponseeval \
-profile docker \
--run_id main_results \
--dataset_name CTRPv2 \
--cross_study_datasets CTRPv1,CCLE,GDSC1,GDSC2 \
--models DIPK,MultiViewRandomForest \
--baselines SimpleNeuralNetwork,RandomForest,MultiViewNeuralNetwork,NaiveMeanEffectsPredictor,GradientBoosting,SRMF,ElasticNet,NaiveTissueMeanPredictor,NaivePredictor,SuperFELTR,NaiveCellLineMeanPredictor,NaiveDrugMeanPredictor \
--test_mode LPO,LCO,LTO,LDO \
--randomization_mode SVRC,SVRD \
--randomization_type permutation \
--measure LN_IC50
# EC50 run
nextflow run nf-core/drugresponseeval \
-profile docker \
--run_id ec50_run \
--dataset_name CTRPv2 \
--cross_study_datasets CTRPv1,CCLE,GDSC1,GDSC2,PDX_Bruna,BeatAML2 \
--models RandomForest \
--baselines NaiveMeanEffectsPredictor \
--test_mode LCO \
--measure pEC50
# AUC run
nextflow run nf-core/drugresponseeval \
-profile docker \
--run_id auc_run \
--dataset_name CTRPv2 \
--cross_study_datasets CTRPv1,CCLE,GDSC1,GDSC2,PDX_Bruna,BeatAML2 \
--models RandomForest \
--baselines NaiveMeanEffectsPredictor \
--test_mode LCO \
--measure AUC
# Invariant ablation run
# Run this on CPU
nextflow run nf-core/drugresponseeval \
-profile docker \
--run_id invariant-rf \
--dataset_name CTRPv2 \
--models MultiViewRandomForest \
--baselines NaiveMeanEffectsPredictor \
--test_mode LPO,LCO,LDO \
--randomization_mode SVRC,SVRD \
--randomization_type invariant \
--measure LN_IC50
# modify the profile to run this on GPU, if possible
nextflow run nf-core/drugresponseeval \
-profile docker \
--run_id invariant-dipk \
--dataset_name CTRPv2 \
--models DIPK \
--baselines NaiveMeanEffectsPredictor \
--test_mode LPO,LCO,LDO \
--randomization_mode SVRC,SVRD \
--randomization_type invariant \
--measure LN_IC50
## Inference on BeatAMl2, PDX_Bruna
# run this on CPU
nextflow run nf-core/drugresponseeval \
-profile docker \
--run_id infer_pdx_beat \
--dataset_name CTRPv2 \
--cross_study_datasets PDX_Bruna,BeatAML2 \
--models RandomForest,SimpleNeuralNetwork,GradientBoosting,SRMF,ElasticNet,NaivePredictor,NaiveDrugMeanPredictor,NaiveCellLineMeanPredictor \
--baselines NaiveMeanEffectsPredictor \
--test_mode LPO,LCO,LDO \
--measure LN_IC50
# modify profile to run this on GPU, if possible
nextflow run nf-core/drugresponseeval \
-profile docker \
--run_id dipk_pdx_beat \
--dataset_name CTRPv2 \
--cross_study_datasets PDX_Bruna,BeatAML2 \
--models DIPK \
--baselines NaiveMeanEffectsPredictor \
--test_mode LPO,LCO,LDO \
--measure LN_IC50
联系方式
主要开发者:
- Judith Bernett, 系统生物学中的数据科学, TUM
- Pascal Iversen, 生命科学中的数据集成, FU Berlin, Hasso-Plattner-Institut