CaDRReS-Sc is an AI/ML framework for robust cancer drug response prediction based on single-cell RNA-sequencing (scRNA-seq) data. It extends an existing recommender system model (CaDRReS, Suphavilai et al., 2018) with new features calibrated for diverse cell types, and accounting for tumor heterogeneity (Suphavilai et al., 2020). In addition to monotherapy response, CaDRReS-Sc can also predict response to combinatorial therapy targeting tumor sub-clones.
Key features:
- Predicts cancer drug response from transcriptomic profiles for (a) single-cells, (b) cell clusters (e.g. using Scanpy, see tutorial notebook), and (c) from bulk analysis.
- Includes a pre-trained model based on the GDSC database.
- Reports half-maximal inhibitory concentrations (IC50) as well as predicted cell death percentages for a specific drug dosage (see tutorial).
- Robust to gene expression measurements across diverse platforms, including microarrays, RNA-seq and scRNA-seq (Suphavilai et al., 2018, Suphavilai et al., 2020).
- Interpretable model based on a latent "pharmacogenomic space" (Suphavilai et al., 2018, Suphavilai et al., 2020).
- Flexibility to train a new model based on other drug response datasets (e.g. CTRP, see model training tutorial).
git clone https://github.com/CSB5/CaDRReS-Sc.git
CaDRReS-Sc is based on Python 3.x
Required packages
Optional package
- Scanpy (for single-cell clustering)
Please refer to our tutorial notebooks. Below are snippets from the notebooks:
Model training (tutorial)
model_dict, output_dict = model.train_model_logistic_weight(
Y_train, X_train, # Y = drug response; X = kernel features
Y_test, X_test,
sample_weights_logistic_x0_df, # Sample weight w.r.t. maximum drug dosage
indication_weight_df, # High weight for specific tissue types
10, 0.0, 100000, 0.01, # Hyperparamters
model_spec_name=model_spec_name, # Select objective function
save_interval=5000,
output_dir=output_dir)
Predicting monotherapy response based on a pre-trained model (tutorial)
cadrres_model = model.load_model(model_file)
pred_df, P_df = model.predict_from_model(cadrres_model, X_test, model_spec_name)
pred_df.head() # Predicted drug response (log2 IC50)
D1 | D1001 | D1003 | D1004 | ... | |
---|---|---|---|---|---|
906826 | 3.86 | 11.11 | -5.71 | -5.56 | ... |
687983 | 7.00 | 11.52 | -4.12 | -4.48 | ... |
910927 | 1.74 | 10.84 | -7.32 | -6.77 | ... |
1240138 | 3.55 | 11.42 | -4.79 | -4.82 | ... |
1240139 | 2.79 | 10.70 | -7.89 | -7.42 | ... |
P_df.head() # A latent vector of each sample in the 10D pharmacogenomic space
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
---|---|---|---|---|---|---|---|---|---|---|
906826 | 0.38 | -1.39 | -1.26 | -0.15 | -0.37 | -1.35 | 1.09 | 0.04 | -0.78 | 0.37 |
687983 | 0.26 | -0.68 | 0.47 | 1.31 | 0.61 | 0.93 | -0.09 | -0.77 | -2.20 | -0.42 |
910927 | -0.52 | 0.47 | 0.12 | -0.10 | -1.56 | -2.99 | 1.15 | -0.06 | -0.58 | -1.21 |
1240138 | 0.72 | 0.51 | -1.16 | -0.34 | 1.56 | -1.21 | 1.06 | -0.59 | 0.08 | -0.53 |
1240139 | -0.08 | -0.45 | 0.45 | -0.19 | -0.75 | -2.93 | 0.50 | 0.67 | -0.11 | 0.27 |
Predicting response to drug combinations at specific dosages (tutorial)
Inputs:
freq_df
Proportion of each cell cluster in each sample
cluster_gene_exp_df
Cluster-specific gene expression profiles
drug_df
Drug dosage information
Example outputs:
drug_combi_pred_df.head() # Predicted cell death percentage at specific dosage
patient | drug_id_A | drug_id_B | cell_death_A | cell_death_B | cell_death_combi | improve |
---|---|---|---|---|---|---|
HN120 | D1007 | D133 | 8.52 | 75.63 | 77.19 | 1.56 |
HN120 | D1007 | D201 | 8.52 | 60.39 | 63.04 | 2.65 |
HN120 | D1007 | D1010 | 8.52 | 15.31 | 22.39 | 7.08 |
HN120 | D1007 | D182 | 8.52 | 64.66 | 67.22 | 2.56 |
HN120 | D1007 | D301 | 8.52 | 63.39 | 66.39 | 3.00 |
Suphavilai C, Chia S, Sharma A et al. Predicting heterogeneity in clone-specific therapeutic vulnerabilities using single-cell transcriptomic signatures. Genome Medicine 13, Article number: 189 (2021)
Suphavilai C, Bertrand D, Nagarajan N. Predicting cancer drug response using a recommender system. Bioinformatics 2018 Nov 15;34(22):3907-14.
For additional information, help and bug reports please email Chayaporn Suphavilai ([email protected])