ITADN
daisybio/drevalpy
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

DrEvalPy:Python 癌细胞系药物反应预测套件

DOI PyPI version Python versions License Read the Docs Test status Precommit Code style: black DOI

新闻: 我们的论文已在 Nature Communications 上发表!

文档位于 ReadTheDocs

专注于模型创新 — DrEval 处理其余部分!

  • DrEval 是一个工具包,确保药物反应预测评估在统计上可靠、在生物学上有意义且可复现。
  • 在使用我们的自动化标准化评估协议和预处理工作流的同时,专注于模型创新。
  • 灵活的模型接口支持所有模型类型(例如 机器学习、统计、基于网络的分析)

通过将您的模型贡献到 DrEval 目录中,您可以增加您工作的曝光度、可重用性和可迁移性。

DrEval


使用 DrEval 构建具有影响力的药物反应模型

  1. 维护良好的最新基线目录,无需重新实现文献中的模型
  2. 用于基准测试的金标准数据集
  3. 一致的应用驱动评估
  4. 结合置换检验的消融研究
  5. 跨研究评估以进行泛化分析
  6. 优化的 nextflow 流水线以实现快速实验
  7. 易于使用的超参数调优
  8. 可直接用于论文的可视化图表以展示性能

DrEvalPy Leaderboard

本项目是慕尼黑工业大学(TUM,德国) 与柏林自由大学(FU,德国)的合作成果。

演示

查看我们在 Colab 上的演示笔记本: Open In Colab

在普通机器上的预期运行时间:

  • 独立演示: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

联系方式

主要开发者: