SubtypeDrug: Prioritization of Candidate Cancer Subtype-specific Drugs

Xudong Han
Junwei Han
Chonghui Liu

2020-06-26

library(SubtypeDrug)

Introduction

The SubtypeDrug package is a systematic biological tool to optimize cancer subtype-specific drugs. The main capabilities of this tool are as follows:

1. Extracting subpathways and drug subpathway association data. We use a topology-based analysis method to mine connected subpathways from the canonical biological pathways of the KEGG database. Next, integrating drug-induced transcriptome data in human cell lines with these subpathways construct drug subpathway association data.

2. Inferring subpathway activity profile. The program provides two methods GSVA and ssGSEA to convert the gene expression profile into the subpathway activity profile.

3. Estimating a normalized drug-disease reverse association score. In the subpathway activity profile, we quantify the individualized subpathway aberrance score by comparing it with accumulated normal samples. Then, we use pattern recognition to reversely associate the drug up-regulatory and down-regulatory subpathway with the ranked list of the subpathways of each sample. The inverse correlation strength score of each drug in each sample is normalized as the normalized drug-disease reverse association score.

4. Identification of cancer subtype-specific drugs. Taking the sutype-specific drug score (SDS) of each cancer subtype as a parameter, the significant cancer subtype-specific drugs are identified through sample perturbation.

5. Visual display of results content. We provide plotDrugStructure(), plotDScoreHeatmap(), plotDSpwHeatmap(), plotGlobalGraph() and plotSpwNetGraph() functions to clearly display the results through drug structure diagram, heat map, box diagram and network diagram, etc.

In addition, for samples with only cancer and normal types, SubtypeDrug can also identify cancer-related drugs. And the effect of drugs at different concentrations is also considered.

Extracting subpathway and constructing drug subpathway association data

We used k-clique method in social network analysis to extract the subpathways from KEGG database and eliminated smaller subpathways with more than 80% overlap of the gene between subpathways that belong to the same pathway. The subpathway data is stored in a list structure. This process is similar to the psSubpathway system we built earlier (Han et al. 2019).

CMap build 02 raw data is downloaded from the CMap website (Lamb et al. 2006). After normalizing gene expression profiles, differential expression of genes between treatment groups with drugs (distinguish different concentrations of the same drug) and control groups is calculated. For each drug and different concentrations of the same drug, the genes are ranked in a ordered list according to their differential expression. The drug subpathway association score is calculated by enriching gene tags of subpathway to the gene ordered list base on Kolmogorov-Smirnov (KS) like statistic. An empirical gene-based permutation test procedure is used to estimate the significance of drug subpathway association score. The greater positive or negative drug subpathway association score of a subpathway indicate that the drug activates or inhibits this subpathway more strongly. According to the above process, each drug has a table which has Subpathway ID, drug subpathway association score (DSAS), and significance P-value as columns. The table of all drugs is stored as a list we term drug subpathway association data (DrugSpwData).

Due to the large data, we construct an packet SubtypeDrugData to store subpathway list data and drug subpathway association data.The package SubtypeDrugData has been uploaded to the github repository (https://github.com/hanjunwei-lab/SubtypeDrugData), and can be downloaded and used by the following code:

## Download SubtypeDrugData package from GitHub.
require(devtools)
install_github("hanjunwei-lab/SubtypeDrugData",force = TRUE)
require(SubtypeDrugData)
## Get subpathway list data.
## If the gene expression profile contains gene Symbol.
data(SpwSymbolList)
## If the gene expression profile contains gene Entrezid.
data(SpwEntrezidList)
## Get drug subpathway association data.
data(DrugSpwData)

Optimizing cancer subtype specific drugs (OCSSD)

This section introduces the evaluation of normalized drug-disease reverse association score, and the identification of cancer related or subtype-specific drugs. These functions are mainly implemented by the function OCSSD(). This function mainly requires four inputs: the gene expression profile, the sample phenotype data, a list of subpathways and drug subpathway association data.

First, the function OCSSD() infers the subpathway activity profile from the gene expression profile through the GSVA (Hänzelmann, Castelo, and Guinney 2013) or ssGSEA method (Barbie et al. 2009).

Identification of cancer subtype-specific drugs

Infer the normalized drug-disease reverse association score matrix

The individualized subpathway aberrance score is estimated using the mean and standard deviation of the normal samples (Ahn et al. 2014). The estimated formula as follows:

\[{\mathop{{Z}}\nolimits_{{ij}}=\frac{{\mathop{{Sub}}\nolimits_{{ij}}-mean{ \left( {S\mathop{{ub}}\nolimits_{{i,normal}}} \right) }}}{{stdev{ \left( {\mathop{{Sub}}\nolimits_{{i,normal}}} \right) }}}}\]

where \(Sub_{ij}\) is the activity value of the i th subpathway in the j th cancer sample and \(Sub_{i,normal}\) is the vector of activity value of the i th subpahtway in the normal samples. Individualized subpathway aberrance score \(Z\) denotes the expression status of the subpathway in each cancer sample relative to normal samples.

For each cancer sample, subpathways are ranked in descending order based on the individualized subpathway aberrance score to form the ordered list. For \(d\) th drug, the up- and down-regulated subpathways of drug regulation is enriched to the ordered list of each cancer sample and the individualized drug-disease reverse association score is estimated.

Finally, the normalized drug-disease reverse association score (\(NS\)) is defined as \(S_{dj}/|max(S_{d})|\) where \(S_{dj}>0\), or \(S_{dj}/|min(S_{d})|\) where \(S_{dj}<0\). Through the above method, we further convert the gene expression profile into a normalized drug-disease reverse association score matrix \(M=\{NS_{dj}\}\) (the rows are drugs and the columns are cancer samples).

Evaluation of sutype-specific drug score

For a given drug and the t th cancer subtype, the sutype-specific drug score (\(SDS\)) is estimated as follows:

\[{SDS\mathop{{}}\nolimits_{{t}}=\frac{{1}}{{\mathop{{ \beta }}\nolimits_{{t}}}}{\mathop{ \sum }\limits_{{j \in t}}{NS\mathop{{}}\nolimits_{{j}}}}}\]

where, \(\beta_{t}\) is the number of samples in the t th cancer subtype, \(NS_j\) is the normalized drug-disease reverse association score of j th cancer sample for the t th cancer subtype. The greater the negative \(SDS\) indicates the drug has stronger the potential therapeutic effect on this cancer subtype.

For the purpose of identifying significative cancer subtype-specific drugs, we assess the significance of the \(SDS\) by using an empirical sample-based permutation test procedure and pool the permuted \(SDS\) of all cancer subtype into one null distribution \(SDS_{null}\). Based on the mean and standard deviation of the \(SDS_{null}\), the subtype-specific P value and FDR (S_Pvalue and S_FDR) is evaluated.

At the same time, we integrate each cancer subtype and normal samples to determine the significance (E_Pvalue and E_FDR) of the drug’s effect on each cancer subtype. The calculation process of E_Pvalue and E_FDR is consistent with the methods of identifying cancer-related drugs. The S_Pvalue and S_FDR are the significance of the specific effect of drugs on each cancer subtype and the E_Pvalue and E_FDR are the significance of the strength of the drug’s effect on each cancer subtype.

Taking the simulative breast cancer data as an example, breast cancer-related and subtype-specific drug identification are as follows:

require(GSVA)
#> Loading required package: GSVA
require(parallel)
#> Loading required package: parallel
## Get simulated breast cancer gene expression profile data.
Geneexp<-get("Geneexp")
## Obtain sample subtype data and calculate breast cancer subtype-specific drugs.
Subtype_labels<-system.file("extdata", "Subtype_labels.cls", package = "SubtypeDrug")
# Identify breast subtype-specific drugs.
Subtype_drugs<-OCSSD(Geneexp,Subtype_labels,"Control",SpwSymbolList,
                     input.drug.data=DrugSpwData)
## Results display.
str(Subtype_drugs)
#> List of 8
#>  $ Basal            :'data.frame':   1409 obs. of  8 variables:
#>   ..$ Drug                 : chr [1:1409] "1,5-isoquinolinediol(1e-04M)" "2-deoxy-D-glucose(0.01M)" "3-aminobenzamide(0.01M)" "4,5-dianilinophthalimide(1e-05M)" ...
#>   ..$ Target_upregulation  : chr [1:1409] "00140_10 00450_2 00590_2 00830_2 04010_7 04012_7 04014_3 04015_3 04020_1 04020_2 04022_1 04022_7 04024_2 04060_"| __truncated__ "00250_1 01524_2 03015_4 04022_1 04060_52 04130_2 04137_2 04137_5 04140_5 04140_13 04141_1 04141_5 04151_8 04210"| __truncated__ "00062_8 00071_1 00310_2 00310_4 00380_2 00380_5 00480_2 00510_8 00565_2 00980_11 03015_1 04014_11 04141_1 04261"| __truncated__ "00601_8 00604_5 00980_11 04010_7 04014_3 04015_3 04020_1 04020_2 04024_2 04060_69 04062_1 04064_9 04064_15 0407"| __truncated__ ...
#>   ..$ Target_downregulation: chr [1:1409] "00030_2 00071_1 00100_2 00100_5 00100_6 00100_7 00230_1 00230_6 00240_8 00250_1 00270_3 00310_2 00410_1 00510_1"| __truncated__ "00051_1 00100_6 00230_1 00240_8 00564_6 00565_3 00590_2 00790_2 00980_10 00980_11 00983_4 04015_9 04060_83 0406"| __truncated__ "00450_1 00562_8 04070_1 04071_8 04110_8 04141_3 04360_5 04360_6 04360_15 04360_17 04390_17 04670_16 04810_3 051"| __truncated__ "00010_2 00330_5 00510_10 00620_2 00640_5 00790_2 00790_8 03013_2 03013_8 03013_11 03013_18 03013_20 03015_2 041"| __truncated__ ...
#>   ..$ SDS                  : num [1:1409] -0.747 0.172 -0.0823 -0.0887 0.586 -0.261 0.0762 0.0304 0.134 -0.0991 ...
#>   ..$ E_Pvalue             : num [1:1409] 0.0391 0.9811 0.8075 0.1268 0.1089 ...
#>   ..$ E_FDR                : num [1:1409] 0.259 0.998 0.96 0.298 0.284 ...
#>   ..$ S_Pvalue             : num [1:1409] 0.165 0.998 0.748 0.604 0.556 0.536 0.682 0.859 0.658 0.541 ...
#>   ..$ S_FDR                : num [1:1409] 0.617 1 0.93 0.857 0.843 0.83 0.905 0.973 0.89 0.833 ...
#>  $ Her2             :'data.frame':   1409 obs. of  8 variables:
#>   ..$ Drug                 : chr [1:1409] "1,5-isoquinolinediol(1e-04M)" "2-deoxy-D-glucose(0.01M)" "3-aminobenzamide(0.01M)" "4,5-dianilinophthalimide(1e-05M)" ...
#>   ..$ Target_upregulation  : chr [1:1409] "00140_10 00450_2 00590_2 00830_2 04010_7 04012_7 04014_3 04015_3 04020_1 04020_2 04022_1 04022_7 04024_2 04060_"| __truncated__ "00250_1 01524_2 03015_4 04022_1 04060_52 04130_2 04137_2 04137_5 04140_5 04140_13 04141_1 04141_5 04151_8 04210"| __truncated__ "00062_8 00071_1 00310_2 00310_4 00380_2 00380_5 00480_2 00510_8 00565_2 00980_11 03015_1 04014_11 04141_1 04261"| __truncated__ "00601_8 00604_5 00980_11 04010_7 04014_3 04015_3 04020_1 04020_2 04024_2 04060_69 04062_1 04064_9 04064_15 0407"| __truncated__ ...
#>   ..$ Target_downregulation: chr [1:1409] "00030_2 00071_1 00100_2 00100_5 00100_6 00100_7 00230_1 00230_6 00240_8 00250_1 00270_3 00310_2 00410_1 00510_1"| __truncated__ "00051_1 00100_6 00230_1 00240_8 00564_6 00565_3 00590_2 00790_2 00980_10 00980_11 00983_4 04015_9 04060_83 0406"| __truncated__ "00450_1 00562_8 04070_1 04071_8 04110_8 04141_3 04360_5 04360_6 04360_15 04360_17 04390_17 04670_16 04810_3 051"| __truncated__ "00010_2 00330_5 00510_10 00620_2 00640_5 00790_2 00790_8 03013_2 03013_8 03013_11 03013_18 03013_20 03015_2 041"| __truncated__ ...
#>   ..$ SDS                  : num [1:1409] -0.766 0.593 -0.451 -0.142 0.711 -0.489 0.133 -0.115 0.114 0.206 ...
#>   ..$ E_Pvalue             : num [1:1409] 0.0202 0.5283 0.1565 0.0894 0.0663 ...
#>   ..$ E_FDR                : num [1:1409] 0.312 0.823 0.363 0.313 0.312 ...
#>   ..$ S_Pvalue             : num [1:1409] 0.13 0.271 0.0416 0.405 0.191 0.0599 0.475 0.503 0.709 0.205 ...
#>   ..$ S_FDR                : num [1:1409] 0.577 0.611 0.576 0.69 0.595 0.576 0.745 0.767 0.861 0.595 ...
#>  $ LumA             :'data.frame':   1409 obs. of  8 variables:
#>   ..$ Drug                 : chr [1:1409] "1,5-isoquinolinediol(1e-04M)" "2-deoxy-D-glucose(0.01M)" "3-aminobenzamide(0.01M)" "4,5-dianilinophthalimide(1e-05M)" ...
#>   ..$ Target_upregulation  : chr [1:1409] "00140_10 00450_2 00590_2 00830_2 04010_7 04012_7 04014_3 04015_3 04020_1 04020_2 04022_1 04022_7 04024_2 04060_"| __truncated__ "00250_1 01524_2 03015_4 04022_1 04060_52 04130_2 04137_2 04137_5 04140_5 04140_13 04141_1 04141_5 04151_8 04210"| __truncated__ "00062_8 00071_1 00310_2 00310_4 00380_2 00380_5 00480_2 00510_8 00565_2 00980_11 03015_1 04014_11 04141_1 04261"| __truncated__ "00601_8 00604_5 00980_11 04010_7 04014_3 04015_3 04020_1 04020_2 04024_2 04060_69 04062_1 04064_9 04064_15 0407"| __truncated__ ...
#>   ..$ Target_downregulation: chr [1:1409] "00030_2 00071_1 00100_2 00100_5 00100_6 00100_7 00230_1 00230_6 00240_8 00250_1 00270_3 00310_2 00410_1 00510_1"| __truncated__ "00051_1 00100_6 00230_1 00240_8 00564_6 00565_3 00590_2 00790_2 00980_10 00980_11 00983_4 04015_9 04060_83 0406"| __truncated__ "00450_1 00562_8 04070_1 04071_8 04110_8 04141_3 04360_5 04360_6 04360_15 04360_17 04390_17 04670_16 04810_3 051"| __truncated__ "00010_2 00330_5 00510_10 00620_2 00640_5 00790_2 00790_8 03013_2 03013_8 03013_11 03013_18 03013_20 03015_2 041"| __truncated__ ...
#>   ..$ SDS                  : num [1:1409] -0.213 0.648 -0.217 0.0296 0.388 -0.0515 -0.276 -0.36 0.097 -0.188 ...
#>   ..$ E_Pvalue             : num [1:1409] 0.1399 0.0464 0.8708 0.8703 0.212 ...
#>   ..$ E_FDR                : num [1:1409] 0.429 0.419 1 1 0.458 ...
#>   ..$ S_Pvalue             : num [1:1409] 0.999 0.144 0.375 0.863 0.96 0.955 0.136 0.0352 0.753 0.247 ...
#>   ..$ S_FDR                : num [1:1409] 1 1 1 1 1 1 1 0.846 1 1 ...
#>  $ LumB             :'data.frame':   1409 obs. of  8 variables:
#>   ..$ Drug                 : chr [1:1409] "1,5-isoquinolinediol(1e-04M)" "2-deoxy-D-glucose(0.01M)" "3-aminobenzamide(0.01M)" "4,5-dianilinophthalimide(1e-05M)" ...
#>   ..$ Target_upregulation  : chr [1:1409] "00140_10 00450_2 00590_2 00830_2 04010_7 04012_7 04014_3 04015_3 04020_1 04020_2 04022_1 04022_7 04024_2 04060_"| __truncated__ "00250_1 01524_2 03015_4 04022_1 04060_52 04130_2 04137_2 04137_5 04140_5 04140_13 04141_1 04141_5 04151_8 04210"| __truncated__ "00062_8 00071_1 00310_2 00310_4 00380_2 00380_5 00480_2 00510_8 00565_2 00980_11 03015_1 04014_11 04141_1 04261"| __truncated__ "00601_8 00604_5 00980_11 04010_7 04014_3 04015_3 04020_1 04020_2 04024_2 04060_69 04062_1 04064_9 04064_15 0407"| __truncated__ ...
#>   ..$ Target_downregulation: chr [1:1409] "00030_2 00071_1 00100_2 00100_5 00100_6 00100_7 00230_1 00230_6 00240_8 00250_1 00270_3 00310_2 00410_1 00510_1"| __truncated__ "00051_1 00100_6 00230_1 00240_8 00564_6 00565_3 00590_2 00790_2 00980_10 00980_11 00983_4 04015_9 04060_83 0406"| __truncated__ "00450_1 00562_8 04070_1 04071_8 04110_8 04141_3 04360_5 04360_6 04360_15 04360_17 04390_17 04670_16 04810_3 051"| __truncated__ "00010_2 00330_5 00510_10 00620_2 00640_5 00790_2 00790_8 03013_2 03013_8 03013_11 03013_18 03013_20 03015_2 041"| __truncated__ ...
#>   ..$ SDS                  : num [1:1409] -0.76 0.661 0.125 -0.0546 0.728 -0.292 0.331 0.548 0.415 0.259 ...
#>   ..$ E_Pvalue             : num [1:1409] 0.0137 0.067 0.9277 0.8274 0.0552 ...
#>   ..$ E_FDR                : num [1:1409] 0.252 0.262 0.987 0.974 0.253 ...
#>   ..$ S_Pvalue             : num [1:1409] 0.141 0.122 0.622 0.75 0.155 0.446 0.0737 0.00135 0.103 0.11 ...
#>   ..$ S_FDR                : num [1:1409] 0.538 0.529 0.812 0.868 0.539 0.704 0.518 0.518 0.52 0.52 ...
#>  $ DrugMatrix       : num [1:1409, 1:32] -0.711 0.798 0.172 -0.137 0.888 ...
#>   ..- attr(*, "dimnames")=List of 2
#>   .. ..$ : chr [1:1409] "1,5-isoquinolinediol(1e-04M)" "2-deoxy-D-glucose(0.01M)" "3-aminobenzamide(0.01M)" "4,5-dianilinophthalimide(1e-05M)" ...
#>   .. ..$ : chr [1:32] "TCGA-C8-A12M-01A" "TCGA-AO-A03L-01A" "TCGA-AO-A0J8-01A" "TCGA-A2-A0T4-01A" ...
#>  $ SubpathwayMatrix : num [1:1113, 1:40] -0.458 0.535 0.38 -0.405 0.659 ...
#>   ..- attr(*, "dimnames")=List of 2
#>   .. ..$ : chr [1:1113] "00010_1" "00010_2" "00010_5" "00010_6" ...
#>   .. ..$ : chr [1:40] "TCGA-BH-A0BZ-11A" "TCGA-BH-A1FR-11B" "TCGA-A7-A0DB-11A" "TCGA-A7-A0CH-11A" ...
#>  $ SampleInformation:'data.frame':   40 obs. of  2 variables:
#>   ..$ sampleId     : chr [1:40] "TCGA-BH-A0BZ-11A" "TCGA-BH-A1FR-11B" "TCGA-A7-A0DB-11A" "TCGA-A7-A0CH-11A" ...
#>   ..$ sampleSubtype: chr [1:40] "Control" "Control" "Control" "Control" ...
#>  $ Parameter        :List of 11
#>   ..$ control.label       : chr "Control"
#>   ..$ spw.min.sz          : num 1
#>   ..$ spw.max.sz          : num Inf
#>   ..$ spw.score.method    : chr "gsva"
#>   ..$ kcdf                : chr "Gaussian"
#>   ..$ drug.p.val.threshold: num 0.05
#>   ..$ drug.spw.min.sz     : num 1
#>   ..$ drug.spw.max.sz     : num Inf
#>   ..$ weighted.drug.score : logi TRUE
#>   ..$ nperm               : num 1000
#>   ..$ parallel.sz         : num 1

The OCSSD() function can also be used to identify breast cancer-related drugs in only two types of samples: breast cancer and normal.

Cancer_normal_labels<-system.file("extdata", "Cancer_normal_labels.cls", package = "SubtypeDrug")
Disease_drugs<-OCSSD(Geneexp,Cancer_normal_labels,"Control",SpwSymbolList,input.drug.data=DrugSpwData)

The function OCSSD() can also support user-defined data.

## User-defined drug regulation data should resemble the structure below.
UserDS<-get("UserDS")
str(UserDS[1:5])
#> List of 5
#>  $ 1,5-isoquinolinediol(1e-04M):List of 2
#>   ..$ Target_upregulation  : chr [1:64] "00140_10" "00450_2" "00590_2" "00830_2" ...
#>   ..$ Target_downregulation: chr [1:76] "00030_2" "00071_1" "00100_2" "00100_5" ...
#>  $ 2-deoxy-D-glucose(0.01M)    :List of 2
#>   ..$ Target_upregulation  : chr [1:68] "00250_1" "01524_2" "03013_1" "03015_4" ...
#>   ..$ Target_downregulation: chr [1:43] "00051_1" "00100_6" "00230_1" "00240_8" ...
#>  $ NA                          : NULL
#>  $ NA                          : NULL
#>  $ NA                          : NULL
## Need to load gene set data consistent with drug regulation data.
UserGS<-get("UserGS")
str(UserGS[1:5])
#> List of 5
#>  $ 00140_10: chr [1:49] "CYP11A1" "HSD3B1" "HSD3B2" "CYP17A1" ...
#>  $ 00250_1 : chr [1:17] "NIT2" "ASNS" "NAT8L" "IL4I1" ...
#>  $ 00030_2 : chr [1:28] "GPI" "DERA" "PRPS1L1" "PRPS1" ...
#>  $ 00071_1 : chr [1:17] "ACADSB" "ACADS" "EHHADH" "HADH" ...
#>  $ 00100_2 : chr [1:8] "EBP" "DHCR7" "SC5D" "DHCR24" ...
Drugs<-OCSSD(Geneexp,Subtype_labels,"Control",UserGS,spw.min.sz=1,input.drug.data=UserDS,drug.spw.min.sz=1)

Visualization

Plot a heat map of normalized drug-disease reverse association scores for cancer samples

require(pheatmap)
## Heat map of normalized disease-drug reverse association scores for all subtype-specific drugs.
plotDScoreHeatmap(data=Subtype_drugs,E_Pvalue.th=0.05,E_FDR.th=1,S_Pvalue.th=0.05,S_FDR.th=1,show.colnames = FALSE)

## Plot only Basal subtype-specific drugs.
plotDScoreHeatmap(Subtype_drugs,subtype.label="Basal",SDS="all",E_Pvalue.th=0.05,E_FDR.th=1,S_Pvalue.th=0.05,S_FDR.th=1,show.colnames = FALSE)

Plot heat map of drug-regulated subpathway individualized activity aberrance score

## Plot a heat map of the individualized activity aberrance scores of subpathway regulated by drug pirenperone(1.02e-05M). 
## Basal-specific drugs pirenperone(1.02e-05M) regulated subpathways that show opposite activity from normal samples.
plotDSpwHeatmap(data=Subtype_drugs,drug.label="pirenperone(1.02e-05M)",subtype.label="Basal",show.colnames=FALSE)

Plot a global graph of the drug

## Plot a global graph of the Basal-specific drug pirenperone(1.02e-05M).
plotGlobalGraph(data=Subtype_drugs,drug.label="pirenperone(1.02e-05M)")

Polt a subpathway network graph

require(igraph)
# plot network graph of the subpathway 00020_4.
plotSpwNetGraph(spwid="00020_4")

Visualize the chemical structure of the drug

require(ChemmineR)
require(rvest)
## Plot the chemical structure of drug pirenperone(1.02e-05M).
plotDrugStructure(drug.label="pirenperone(1.02e-05M)")

References

Ahn, TaeJin, Eunjin Lee, Nam Huh, and Taesung Park. 2014. “Personalized Identification of Altered Pathways in Cancer Using Accumulated Normal Tissue Data.” Bioinformatics 30 (17): i422–i429.

Barbie, David A, Pablo Tamayo, Jesse S Boehm, So Young Kim, Susan E Moody, Ian F Dunn, Anna C Schinzel, et al. 2009. “Systematic Rna Interference Reveals That Oncogenic Kras-Driven Cancers Require Tbk1.” Nature 462 (7269): 108.

Han, Junwei, Xudong Han, Qingfei Kong, and Liang Cheng. 2019. “PsSubpathway: A Software Package for Flexible Identification of Phenotype-Specific Subpathways in Cancer Progression.” Bioinformatics.

Hänzelmann, Sonja, Robert Castelo, and Justin Guinney. 2013. “GSVA: Gene Set Variation Analysis for Microarray and Rna-Seq Data.” BMC Bioinformatics 14 (1): 7.

Lamb, Justin, Emily D Crawford, David Peck, Joshua W Modell, Irene C Blat, Matthew J Wrobel, Jim Lerner, et al. 2006. “The Connectivity Map: Using Gene-Expression Signatures to Connect Small Molecules, Genes, and Disease.” Science 313 (5795): 1929–35.