cTRAP: identifying candidate causal perturbations from differential gene expression data

Bernardo P. de Almeida & Nuno Saraiva-Agostinho

2018-12-03


Introduction

cTRAP is an R package designed to compare differential gene expression results with those from known cellular perturbations (such as gene knock-down, overexpression or small molecules) derived from the Connectivity Map (Subramanian et al., Cell 2017). Such analyses allow not only to infer the molecular causes of the observed difference in gene expression but also to identify small molecules that could drive or revert specific transcriptomic alterations.

To illustrate the package functionalities, we will use an example based on a gene knock-down dataset from the ENCODE project for which there is available RNA-seq data. After performing differential expression analyses to the macthed-control sample, we will compare the respective transcriptomic changes with the ones caused by all Connectivity Map’s gene knock-down perturbations to identify which ones have similar or inverse transcriptomic changes to the observed ones. As a positive control, we expect to find the knock-down of the gene depleted in the ENCODE experiment as one of the most similar transcriptomic perturbations.

Getting started

To load the cTRAP package into your R environment type:

library(cTRAP)

Load ENCODE RNA-seq data and perform differential gene expression analysis

In this example, we will use the EIF4G1 shRNA knockdown followed by RNA-seq experiment in HepG2 cell line from the ENCODE project as the dataset of interest. The RNA-seq processed data (gene quantifications from RSEM method) for the EIF4G1 knock-down and respective controls (two replicates each) can be downloaded by typing:

gene <- "EIF4G1"
cellLine <- "HepG2"

ENCODEmetadata <- downloadENCODEknockdownMetadata(cellLine, gene)
table(ENCODEmetadata$`Experiment target`)
length(unique(ENCODEmetadata$`Experiment target`))

ENCODEsamples <- downloadENCODEsamples(ENCODEmetadata)
counts <- prepareENCODEgeneExpression(ENCODEsamples)

Gene expression data (read counts) were quantile-normalized using voom and differential expression analysis was performed using the limma R package.

# Remove low coverage (at least 10 counts shared across two samples)
minReads   <- 10
minSamples <- 2
filter <- rowSums(counts[ , -c(1, 2)] >= minReads) >= minSamples
counts <- counts[filter, ]

# Convert ENSEMBL identifier to gene symbol
library(biomaRt)
mart <- useDataset("hsapiens_gene_ensembl", useMart("ensembl"))
genes <- sapply(strsplit(counts$gene_id, "\\."), `[`, 1)
geneConversion <- getBM(filters="ensembl_gene_id", values=genes, mart=mart,
                        attributes=c("ensembl_gene_id", "hgnc_symbol"))
counts$gene_id <- geneConversion$hgnc_symbol[
    match(genes, geneConversion$ensembl_gene_id)]

# Perform differential gene expression analysis
diffExpr <- performDifferentialExpression(counts)

As our metric of differential expression after EIF4G1 shRNA knock-down, we will use the respective t-statistic.

# Get t-statistics of differential expression with respective gene names 
# (expected input for downstream analyses)
diffExprStat <- diffExpr$t
names(diffExprStat) <- diffExpr$Gene_symbol

Load Connectivity Map perturbation data

We will compare our differential gene expression metric with all Connectivity Map’s gene knock-down perturbations in the same cell line (HepG2). Note that this comparison can also be done to perturbations in a different cell line or in all cell lines, using in the latter the average result across cell lines. Differential gene expression data for each Connectivity Map’s perturbation are available in z-score normalised values (see Subramanian et al., Cell 2017 for more details).

# Check available conditions for L1000 perturbations
l1000metadata <- downloadL1000data("l1000metadata.txt", "metadata")
## Loading L1000 metadata...
getL1000conditions(l1000metadata)
## $`Perturbation type`
## [1] "Compound"                                               
## [2] "Peptides and other biological agents (e.g. cytokine)"   
## [3] "shRNA for loss of function (LoF) of gene"               
## [4] "Consensus signature from shRNAs targeting the same gene"
## [5] "cDNA for overexpression of wild-type gene"              
## [6] "cDNA for overexpression of mutated gene"                
## 
## $`Cell line`
##  [1] "CD34"     "HL60"     "PC3"      "U937"     "MCF7"     "A375"    
##  [7] "HEK293T"  "A549"     "ASC"      "HA1E"     "HCC515"   "HEKTE"   
## [13] "HEPG2"    "HT29"     "NCIH716"  "NPC"      "SHSY5Y"   "SKL"     
## [19] "SW480"    "VCAP"     "BT20"     "FIBRNPC"  "HS578T"   "MCF10A"  
## [25] "MCH58"    "MDAMB231" "NEU"      "NKDBA"    "NOMO1"    "PHH"     
## [31] "SKBR3"    "SKB"      "SKM1"     "THP1"     "A673"     "AGS"     
## [37] "CL34"     "CORL23"   "COV644"   "DV90"     "EFO27"    "H1299"   
## [43] "HCC15"    "HCT116"   "HEC108"   "HT115"    "JHUEM2"   "LOVO"    
## [49] "MDST8"    "NCIH1694" "NCIH1836" "NCIH2073" "NCIH508"  "NCIH596" 
## [55] "OV7"      "PL21"     "RKO"      "RMGI"     "RMUGS"    "SKLU1"   
## [61] "SKMEL1"   "SKMEL28"  "SNGM"     "SNU1040"  "SNUC4"    "SNUC5"   
## [67] "SW620"    "SW948"    "T3M10"    "TYKNU"    "WSUDLCL2" "HUH7"    
## [73] "HS27A"    "JURKAT"   "U266"     "U2OS"    
## 
## $Dosage
##  [1] "0.1 %"               "500 nM"              "1 µM"               
##  [4] "10 µM"               "3 µM"                "5 µM"               
##  [7] "100 nM"              NA                    "1 µL"               
## [10] "6 µL"                "1.5 µL"              "2 µL"               
## [13] "10 µL"               "5 µL"                "60 µM"              
## [16] "100 µM"              "40 µM"               "30 µM"              
## [19] "20 µM"               "80 µM"               "90 µM"              
## [22] "70 µM"               "50 µM"               "10 nM"              
## [25] "0.03 ng/mL"          "20 ng/mL"            "500 ng/mL"          
## [28] "10000 ng/mL"         "50 ng/mL"            "200 ng/mL"          
## [31] "2000 ng/mL"          "5 ng/mL"             "100000 ng/mL"       
## [34] "1000 ng/mL"          "30 ng/mL"            "100 ng/mL"          
## [37] "10 ng/mL"            "15 ng/mL"            "2 ng/mL"            
## [40] "800 ng/mL"           "400 ng/mL"           "25 ng/mL"           
## [43] "80 ng/mL"            "1 ng/mL"             "40 ng/mL"           
## [46] "0.3 ng/mL"           "50000 ng/mL"         "150 ng/mL"          
## [49] "0 ng/mL"             "0.2 ng/mL"           "0.15 ng/mL"         
## [52] "200000 ng/mL"        "3000 ng/mL"          "0.5 ng/mL"          
## [55] "0.1 ng/mL"           "250 ng/mL"           "8300 ng/mL"         
## [58] "5000 ng/mL"          "1.65 ng/mL"          "0.01 ng/mL"         
## [61] "16 ng/mL"            "2500 ng/mL"          "45 ng/mL"           
## [64] "20 µL"               "1 nM"                "-666 -666"          
## [67] "200 ng"              "150 ng"              "-666 -666|-666 -666"
## [70] "300 ng"              "300 ng|300 ng"       "3 µL"               
## [73] "1 ng/µL"             "100 ng/µL"           "0.1 ng/µL"          
## [76] "10 ng/µL"            "3 ng/µL"             "300 ng/µL"          
## [79] "4 µL"                "0.04 µM"             "0.12 µM"            
## [82] "0.37 µM"             "1.11 µM"             "3.33 µM"            
## [85] "0.41 µM"             "1.23 µM"             "11.11 µM"           
## [88] "3.7 µM"              "33.33 µM"           
## 
## $`Time points`
##  [1] "24 h"  "6 h"   "96 h"  "144 h" "120 h" "168 h" "48 h"  "1 h"  
##  [9] "3 h"   "2 h"   "4 h"   "72 h"
# Code for loading CMap gene KD HepG2 data
l1000metadataKnockdown <- filterL1000metadata(
    l1000metadata, cellLine="HepG2",
    perturbationType="Consensus signature from shRNAs targeting the same gene")
l1000zscores  <- downloadL1000data("l1000zscores.gctx", "zscores",
                                   l1000metadataKnockdown$sig_id)
l1000geneInfo <- downloadL1000data("l1000geneInfo.txt", "geneInfo")

l1000perturbationsKnockdown <- loadL1000perturbations(
    l1000metadataKnockdown, l1000zscores, l1000geneInfo)

If the interest is in small molecules, one can download the differential gene expression z-scores for each small molecule perturbation in HepG2 (given a specific concentration and time point of RNA extraction) through the following command:

l1000metadataSmallMolecules <- filterL1000metadata(
    l1000metadata, cellLine="HepG2", timepoint="24 h", 
    dosage="5 \U00B5M", # \U00B5 is the unicode code for the micro symbol
    perturbationType="Compound")
l1000zscores  <- downloadL1000data("l1000zscores.gctx", "zscores",
                                   l1000metadataSmallMolecules$sig_id)
l1000geneInfo <- downloadL1000data("l1000geneInfo.txt")

l1000perturbationsSmallMolecules <- loadL1000perturbations(
    l1000metadataSmallMolecules, l1000zscores, l1000geneInfo,
    sanitizeCompoundNames=TRUE)

Comparison with Connectivity Map’s perturbations

This is the main function of the package. Here we compare the statistic for differential expression (the t-statistic, in this case) with the z-scores for the perturbations we have loaded using the three different methods available (Spearman’s correlation, Pearson’s correlation and Gene Set Enrichment Analysis (GSEA)). For GSEA, the default option is to use the top and bottom 150 genes (ranked by the user’s t-statistic) as gene sets, but this can be changed by the user.

For small molecules:

compareSmallMolecule <- list()
# Compare against L1000 using Spearman correlation
compareSmallMolecule$spearman <- compareAgainstL1000(
    diffExprStat, l1000perturbationsSmallMolecules, cellLine, method="spearman")
## Comparing with cell line HepG2
# Compare against L1000 using Pearson correlation
compareSmallMolecule$pearson <- compareAgainstL1000(
    diffExprStat, l1000perturbationsSmallMolecules, cellLine, method="pearson")
## Comparing with cell line HepG2
# Compare against L1000 using gene set enrichment analysis (GSEA) with the top
# and bottom 150 genes
compareSmallMolecule$gsea <- compareAgainstL1000(
    diffExprStat, l1000perturbationsSmallMolecules, cellLine, method="gsea",
    geneSize=150)
## Performing GSA using perturbation signatures...

For each method used, this function will return a table with the results of the comparison with each perturbation tested, including the test statistics (depending on the method used: Spearman’s correlation coefficient, Pearson’s correlation coefficient or GSEA Enrichment Score), the respective p-value and the Benjamini-Hochberg-adjusted p-value.

# Order knockdown perturbations according to similarity
compareKnockdown$spearman_ordered <- compareKnockdown$spearman[
    order(compareKnockdown$spearman$HepG2_spearman_coef, decreasing=TRUE)]
compareKnockdown$pearson_ordered <- compareKnockdown$pearson[
    order(compareKnockdown$pearson$HepG2_pearson_coef, decreasing=TRUE)]
compareKnockdown$gsea_ordered <- compareKnockdown$gsea[
    order(compareKnockdown$gsea$HepG2_WTCS, decreasing=TRUE)]

# Most positively associated perturbations (note that EIF4G1 knockdown is the
# 6th, 1st and 2nd most positively associated perturbation based on Spearman
# correlation, Pearson correlation and GSEA, respectively)
head(compareKnockdown$spearman_ordered)
##                            genes HepG2_spearman_coef HepG2_spearman_pvalue
## 1:    CGS001_HEPG2_96H:MECP2:1.5           0.1937723          1.589544e-75
## 2: CGS001_HEPG2_96H:KIAA0196:1.5           0.1889788          7.356415e-72
## 3:    CGS001_HEPG2_96H:SQRDL:1.5           0.1885575          1.527874e-71
## 4:     CGS001_HEPG2_96H:PPIH:1.5           0.1869051          2.641856e-70
## 5:    CGS001_HEPG2_96H:STAT1:1.5           0.1831623          1.523248e-67
## 6:   CGS001_HEPG2_96H:EIF4G1:1.5           0.1775784          1.554203e-63
##    HepG2_spearman_qvalue Average_spearman_coef
## 1:          2.066407e-74             0.1937723
## 2:          4.781670e-71             0.1889788
## 3:          7.944946e-71             0.1885575
## 4:          1.144804e-69             0.1869051
## 5:          5.657779e-67             0.1831623
## 6:          5.051159e-63             0.1775784
head(compareKnockdown$pearson_ordered)
##                            genes HepG2_pearson_coef HepG2_pearson_pvalue
## 1:   CGS001_HEPG2_96H:EIF4G1:1.5          0.1934591         2.778476e-75
## 2:    CGS001_HEPG2_96H:STAT1:1.5          0.1883958         2.021938e-71
## 3: CGS001_HEPG2_96H:KIAA0196:1.5          0.1844667         1.687905e-68
## 4:     CGS001_HEPG2_96H:MEST:1.5          0.1840570         3.374840e-68
## 5:    CGS001_HEPG2_96H:COPS5:1.5          0.1789767         1.584941e-64
## 6:   CGS001_HEPG2_96H:KIF20A:1.5          0.1784591         3.698612e-64
##    HepG2_pearson_qvalue Average_pearson_coef
## 1:         2.408013e-74            0.1934591
## 2:         1.051408e-70            0.1883958
## 3:         7.314255e-68            0.1844667
## 4:         1.253512e-67            0.1840570
## 5:         5.151058e-64            0.1789767
## 6:         1.068488e-63            0.1784591
head(compareKnockdown$gsea_ordered)
##                          genes HepG2_WTCS Average_WTCS
## 1: CGS001_HEPG2_96H:SKIV2L:1.5  0.5065089    0.5065089
## 2: CGS001_HEPG2_96H:EIF4G1:1.5  0.4976589    0.4976589
## 3:    CGS001_HEPG2_96H:HFE:1.5  0.4820979    0.4820979
## 4: CGS001_HEPG2_96H:GTPBP8:1.5  0.4808889    0.4808889
## 5:  CGS001_HEPG2_96H:TMEM5:1.5  0.4762129    0.4762129
## 6: CGS001_HEPG2_96H:UBAP2L:1.5  0.4718731    0.4718731
# Most negatively associated perturbations
tail(compareKnockdown$spearman_ordered)
##                          genes HepG2_spearman_coef HepG2_spearman_pvalue
## 1:    CGS001_HEPG2_96H:MAF:1.5          -0.1577440          2.375410e-50
## 2:  CGS001_HEPG2_96H:EHMT2:1.5          -0.1638997          2.877276e-54
## 3: CGS001_HEPG2_96H:ZBTB24:1.5          -0.1643478          1.471387e-54
## 4: CGS001_HEPG2_96H:NDUFB6:1.5          -0.1679383          6.367802e-57
## 5:  CGS001_HEPG2_96H:CDCA8:1.5          -0.1933458          3.399082e-75
## 6:   CGS001_HEPG2_96H:EYA1:1.5          -0.1988185          1.722645e-79
##    HepG2_spearman_qvalue Average_spearman_coef
## 1:          4.117378e-50            -0.1577440
## 2:          5.343512e-54            -0.1638997
## 3:          2.942775e-54            -0.1643478
## 4:          1.505117e-56            -0.1679383
## 5:          2.945871e-74            -0.1933458
## 6:          4.478876e-78            -0.1988185
tail(compareKnockdown$pearson_ordered)
##                           genes HepG2_pearson_coef HepG2_pearson_pvalue
## 1:  CGS001_HEPG2_96H:NDUFB6:1.5         -0.1648090         7.364206e-55
## 2:     CGS001_HEPG2_96H:MAF:1.5         -0.1714564         2.728302e-59
## 3: CGS001_HEPG2_96H:SULT1A2:1.5         -0.1740169         4.784021e-61
## 4:   CGS001_HEPG2_96H:CDCA8:1.5         -0.1924571         1.647194e-74
## 5:    CGS001_HEPG2_96H:EYA1:1.5         -0.1947099         2.970640e-76
## 6:  CGS001_HEPG2_96H:ZBTB24:1.5         -0.1951942         1.244783e-76
##    HepG2_pearson_qvalue Average_pearson_coef
## 1:         1.126290e-54           -0.1648090
## 2:         5.066846e-59           -0.1714564
## 3:         1.036538e-60           -0.1740169
## 4:         1.070676e-73           -0.1924571
## 5:         3.861832e-75           -0.1947099
## 6:         3.236435e-75           -0.1951942
tail(compareKnockdown$gsea_ordered)
##                         genes HepG2_WTCS Average_WTCS
## 1:   CGS001_HEPG2_96H:SHB:1.5 -0.4112249   -0.4112249
## 2: CGS001_HEPG2_96H:PLOD2:1.5 -0.4124014   -0.4124014
## 3: CGS001_HEPG2_96H:SIAH2:1.5 -0.4145594   -0.4145594
## 4: CGS001_HEPG2_96H:GNAI2:1.5 -0.4195705   -0.4195705
## 5: CGS001_HEPG2_96H:DHX16:1.5 -0.4397605   -0.4397605
## 6: CGS001_HEPG2_96H:CDCA8:1.5 -0.4731694   -0.4731694

For small molecules:

# Order small molecule perturbations according to similarity
compareSmallMolecule$spearman_ordered <- compareSmallMolecule$spearman[
    order(compareSmallMolecule$spearman$HepG2_spearman_coef, decreasing=TRUE)]
compareSmallMolecule$pearson_ordered <- compareSmallMolecule$pearson[
    order(compareSmallMolecule$pearson$HepG2_pearson_coef, decreasing=TRUE)]
compareSmallMolecule$gsea_ordered <- compareSmallMolecule$gsea[
    order(compareSmallMolecule$gsea$HepG2_WTCS, decreasing=TRUE)]

# Most positively associated perturbations
head(compareSmallMolecule$spearman_ordered)
##                           genes HepG2_spearman_coef HepG2_spearman_pvalue
## 1:                BRD-A14014306         0.224775384         1.227944e-101
## 2:               strophanthidin         0.084854448          1.338936e-15
## 3:                BRD-K41172353         0.004220162          6.915826e-01
## 4: caffeic-acid-phenethyl-ester        -0.036977918          5.066574e-04
## 5:                     PD-98059        -0.048889942          4.254735e-06
## 6:                BRD-K84389640        -0.077121897          3.857241e-13
##    HepG2_spearman_qvalue Average_spearman_coef
## 1:         1.350738e-100           0.224775384
## 2:          2.454716e-15           0.084854448
## 3:          6.915826e-01           0.004220162
## 4:          5.573232e-04          -0.036977918
## 5:          5.200232e-06          -0.048889942
## 6:          5.303706e-13          -0.077121897
head(compareSmallMolecule$pearson_ordered)
##                           genes HepG2_pearson_coef HepG2_pearson_pvalue
## 1:                BRD-A14014306         0.22591398        1.121002e-102
## 2:               strophanthidin         0.06827312         1.315645e-10
## 3:                BRD-K41172353        -0.01302736         2.207039e-01
## 4:                     PD-98059        -0.02411005         2.340621e-02
## 5: caffeic-acid-phenethyl-ester        -0.04495528         2.357215e-05
## 6:                         YC-1        -0.06336898         2.478826e-09
##    HepG2_pearson_qvalue Average_pearson_coef
## 1:        1.233102e-101           0.22591398
## 2:         2.067443e-10           0.06827312
## 3:         2.207039e-01          -0.01302736
## 4:         2.574683e-02          -0.02411005
## 5:         2.881040e-05          -0.04495528
## 6:         3.408386e-09          -0.06336898
head(compareSmallMolecule$gsea_ordered)
##             genes HepG2_WTCS Average_WTCS
## 1:  BRD-A14014306  0.4910751    0.4910751
## 2:       PD-98059  0.2375884    0.2375884
## 3: strophanthidin  0.2163898    0.2163898
## 4:  BRD-K31030218  0.0000000    0.0000000
## 5:  BRD-K41172353  0.0000000    0.0000000
## 6:  BRD-K84389640  0.0000000    0.0000000
# Most negatively associated perturbations
tail(compareSmallMolecule$spearman_ordered)
##            genes HepG2_spearman_coef HepG2_spearman_pvalue
## 1: BRD-K84389640         -0.07712190          3.857241e-13
## 2:          YC-1         -0.07866732          1.297578e-13
## 3: BRD-K77508012         -0.09429871          6.442248e-19
## 4: BRD-K94818765         -0.11312689          1.429293e-26
## 5: BRD-K31030218         -0.12424907          9.467493e-32
## 6: BRD-A65142661         -0.16499644          5.554845e-55
##    HepG2_spearman_qvalue Average_spearman_coef
## 1:          5.303706e-13           -0.07712190
## 2:          2.039052e-13           -0.07866732
## 3:          1.417294e-18           -0.09429871
## 4:          3.930556e-26           -0.11312689
## 5:          3.471414e-31           -0.12424907
## 6:          3.055165e-54           -0.16499644
tail(compareSmallMolecule$pearson_ordered)
##            genes HepG2_pearson_coef HepG2_pearson_pvalue
## 1:          YC-1        -0.06336898         2.478826e-09
## 2: BRD-K84389640        -0.08160486         1.543280e-14
## 3: BRD-K77508012        -0.08295481         5.653907e-15
## 4: BRD-K94818765        -0.11066917         1.711389e-25
## 5: BRD-K31030218        -0.11988649         1.164748e-29
## 6: BRD-A65142661        -0.14750759         3.497969e-44
##    HepG2_pearson_qvalue Average_pearson_coef
## 1:         3.408386e-09          -0.06336898
## 2:         2.829346e-14          -0.08160486
## 3:         1.243860e-14          -0.08295481
## 4:         4.706320e-25          -0.11066917
## 5:         4.270742e-29          -0.11988649
## 6:         1.923883e-43          -0.14750759
tail(compareSmallMolecule$gsea_ordered)
##                           genes HepG2_WTCS Average_WTCS
## 1:                BRD-K84389640  0.0000000    0.0000000
## 2:                         YC-1  0.0000000    0.0000000
## 3:                BRD-K77508012 -0.2414770   -0.2414770
## 4:                BRD-K94818765 -0.2619299   -0.2619299
## 5: caffeic-acid-phenethyl-ester -0.2745993   -0.2745993
## 6:                BRD-A65142661 -0.3353615   -0.3353615

Plot

To analyse the relationship between the user-provided differential expression profile with that associated with a specific perturbation, we provide the option to create a scatter plot (for Spearman and Pearson analyses) or a GSEA plot.

Below you can see how to plot the relationship between the ENCODE’s EIF4G1 shRNA knockdown with the perturbations of interest.

# Plot relationship with EIF4G1 knockdown
EIF4G1knockdown <- grep("EIF4G1", compareKnockdown$gsea_ordered$genes,
                        value=TRUE)
plotL1000comparison(compareKnockdown$spearman, EIF4G1knockdown)
plotL1000comparison(compareKnockdown$pearson, EIF4G1knockdown)

plotL1000comparison(compareKnockdown$gsea, EIF4G1knockdown, topGenes=TRUE)

plotL1000comparison(compareKnockdown$gsea, EIF4G1knockdown, topGenes=FALSE)

# Plot relationship with most negatively associated perturbation
plotL1000comparison(compareKnockdown$spearman,
                    tail(compareKnockdown$spearman_ordered, 1)$genes)

plotL1000comparison(compareKnockdown$pearson,
                    tail(compareKnockdown$pearson_ordered, 1)$genes)

plotL1000comparison(compareKnockdown$gsea,
                    tail(compareKnockdown$gsea_ordered, 1)$genes, 
                    topGenes=TRUE)

plotL1000comparison(compareKnockdown$gsea, 
                    tail(compareKnockdown$gsea_ordered, 1)$genes, 
                    topGenes=FALSE)

For small molecules:

# Plot relationship with most positively associated perturbation
plotL1000comparison(compareSmallMolecule$spearman,
                    head(compareSmallMolecule$spearman_ordered, 1)$genes)
plotL1000comparison(compareSmallMolecule$pearson,
                    head(compareSmallMolecule$pearson_ordered, 1)$genes)

plotL1000comparison(compareSmallMolecule$gsea,
                    head(compareSmallMolecule$gsea_ordered, 1)$genes)

# Plot relationship with most negatively associated perturbation
plotL1000comparison(compareSmallMolecule$spearman,
                    tail(compareSmallMolecule$spearman_ordered, 1)$genes)
plotL1000comparison(compareSmallMolecule$pearson,
                    tail(compareSmallMolecule$pearson_ordered, 1)$genes)

plotL1000comparison(compareSmallMolecule$gsea,
                    tail(compareSmallMolecule$gsea_ordered, 1)$genes)

Feedback

All feedback on the program, documentation and associated material (including this tutorial) is welcome. Please send any suggestions and comments to:

Nuno Saraiva-Agostinho (nunoagostinho@medicina.ulisboa.pt)

Bernardo P. de Almeida (bernardo.almeida94@gmail.com)

Disease Transcriptomics Lab, Instituto de Medicina Molecular (Portugal)