Packages used in this tutorial

The major packages used in this tutorial as listed below. Vignettes with example are available in the links provided.

Creating a MultiAssayExperiment object

A MultiAssayExperiment is a R data structure created to store different assays (RNA-Seq, DNA methylation, ATAC-Sec, ...) and samples metadata (age, gender, treatment information, etc.) in one single object. This data structure is used as to create the input for the ELMER analysis, which requires a MultiAssayExperiment containing DNA methylation and gene expression for all samples.

For more information about the MultiAssayExperiment you can check its Bioconductor page: http://bioconductor.org/packages/MultiAssayExperiment/.

We can use the TCGAbiolinks package (http://bioconductor.org/packages/TCGAbiolinks/) to retrieve TCGA DNA methylation and gene expression data from GDC data portal https://portal.gdc.cancer.gov/. TCGAbiolinks searches the data, download it and then transform it into either a matrix or a SummarizedExperiment (http://bioconductor.org/packages/SummarizedExperiment/), which is another Bioconductor data structure to handle a single assay and its samples metadata.

In this tutorial we will download data for 4 TCGA samples and create a MultiAssayExperiment.

Downloading DNA methylation array with hg19 annotation

In [1]:
suppressMessages({
    library(TCGAbiolinks)
    library(SummarizedExperiment)
})

# Define samples to be downloaded - to download all samples just remove the barcode argument
samples <- c("TCGA-2H-A9GF","TCGA-2H-A9GG","TCGA-2H-A9GH","TCGA-2H-A9GI")


# DNA methylation data aligned to hg19
query.met <- GDCquery(project =  "TCGA-ESCA",
                      legacy = TRUE,
                      data.category = "DNA methylation",
                      barcode = samples, # Filter by barcode
                      platform = "Illumina Human Methylation 450",
                      sample.type = "Primary solid Tumor")

GDCdownload(query.met)

methylation <- GDCprepare(query = query.met,
                          save = TRUE,
                          save.filename = paste0("TCGA-ESCA_450K_hg19.rda"),
                          summarizedExperiment = TRUE
)

# Checking object
methylation

# Checking DNA methylation beta-values  of the first 5 probes (rows)
as.data.frame(assay(methylation)[1:4,])
--------------------------------------
o GDCquery: Searching in GDC database
--------------------------------------
Genome of reference: hg19
--------------------------------------------
oo Accessing GDC. This might take a while...
--------------------------------------------
ooo Project: TCGA-ESCA
--------------------
oo Filtering results
--------------------
ooo By platform
ooo By barcode
ooo By sample.type
----------------
oo Checking data
----------------
ooo Check if there are duplicated cases
ooo Check if there results for the query
-------------------
o Preparing output
-------------------
Downloading data for project TCGA-ESCA
GDCdownload will download 4 files. A total of 85.10419 MB
Downloading as: Sat_Sep_21_03_12_30_2019.tar.gz
|====================================================|100%                      Completed after 3 s 
Joining, by = c("Composite.Element.REF", "Gene_Symbol", "Chromosome", "Genomic_Coordinate")
Joining, by = c("Composite.Element.REF", "Gene_Symbol", "Chromosome", "Genomic_Coordinate")
Joining, by = c("Composite.Element.REF", "Gene_Symbol", "Chromosome", "Genomic_Coordinate")
Starting to add information to samples
 => Add clinical information to samples
Add FFPE information. More information at: 
=> https://cancergenome.nih.gov/cancersselected/biospeccriteria 
=> http://gdac.broadinstitute.org/runs/sampleReports/latest/FPPP_FFPE_Cases.html
 => Adding subtype information to samples
esca subtype information from:doi:10.1038/nature20805
Saving file:TCGA-ESCA_450K_hg19.rda
File saved
class: RangedSummarizedExperiment 
dim: 485577 4 
metadata(1): data_release
assays(1): ''
rownames(485577): cg00000029 cg00000108 ... rs966367 rs9839873
rowData names(2): probeID Gene_Symbol
colnames(4): TCGA-2H-A9GF-01A-11D-A37D-05 TCGA-2H-A9GG-01A-11D-A37D-05
  TCGA-2H-A9GH-01A-11D-A37D-05 TCGA-2H-A9GI-01A-11D-A37D-05
colData names(139): sample patient ...
  subtype_GEA.CIN.Integrated.Cluster...MKL.KNN.4
  subtype_GEA.CIN.Integrated.Cluster...MKL.KNN.7
A data.frame: 4 × 4
TCGA-2H-A9GF-01A-11D-A37D-05TCGA-2H-A9GG-01A-11D-A37D-05TCGA-2H-A9GH-01A-11D-A37D-05TCGA-2H-A9GI-01A-11D-A37D-05
<dbl><dbl><dbl><dbl>
cg000000290.11389490.24727060.18743900.2444302
cg00000108 NA NA NA NA
cg00000109 NA NA NA NA
cg000001650.75148500.71313860.63798970.8069518

Downloading RNA-seq aligned against hg19

In [2]:
# Gene expression
query.exp <- GDCquery(project = "TCGA-ESCA",
                      data.category = "Gene expression",
                      data.type = "Gene expression quantification",
                      platform = "Illumina HiSeq", 
                      file.type  = "normalized_results",
                      experimental.strategy = "RNA-Seq",
                      barcode = samples,
                      legacy = TRUE)
GDCdownload(query.exp, method = "api", files.per.chunk = 10)
gene.expression <- GDCprepare(query.exp)

# Checking object
gene.expression

# Checking expression values of the first 5 genes (rows)
as.data.frame(assay(gene.expression)[1:5,])
--------------------------------------
o GDCquery: Searching in GDC database
--------------------------------------
Genome of reference: hg19
--------------------------------------------
oo Accessing GDC. This might take a while...
--------------------------------------------
ooo Project: TCGA-ESCA
--------------------
oo Filtering results
--------------------
ooo By platform
ooo By experimental.strategy
ooo By data.type
ooo By file.type
ooo By barcode
----------------
oo Checking data
----------------
ooo Check if there are duplicated cases
ooo Check if there results for the query
-------------------
o Preparing output
-------------------
Downloading data for project TCGA-ESCA
GDCdownload will download 4 files. A total of 1.743876 MB
Downloading chunk 1 of 1 (4 files, size = 1.743876 MB) as Sat_Sep_21_03_13_46_2019_0.tar.gz
  |======================================================================| 100%
Accessing grch37.ensembl.org to get gene information
Downloading genome information (try:0) Using: Human genes (GRCh37.p13)
Starting to add information to samples
 => Add clinical information to samples
Add FFPE information. More information at: 
=> https://cancergenome.nih.gov/cancersselected/biospeccriteria 
=> http://gdac.broadinstitute.org/runs/sampleReports/latest/FPPP_FFPE_Cases.html
 => Adding subtype information to samples
esca subtype information from:doi:10.1038/nature20805
class: RangedSummarizedExperiment 
dim: 19947 4 
metadata(1): data_release
assays(1): normalized_count
rownames(19947): A1BG A2M ... TICAM2 SLC25A5-AS1
rowData names(3): gene_id entrezgene ensembl_gene_id
colnames(4): TCGA-2H-A9GF-01A-11R-A37I-31 TCGA-2H-A9GG-01A-11R-A37I-31
  TCGA-2H-A9GH-01A-11R-A37I-31 TCGA-2H-A9GI-01A-11R-A37I-31
colData names(139): sample patient ...
  subtype_GEA.CIN.Integrated.Cluster...MKL.KNN.4
  subtype_GEA.CIN.Integrated.Cluster...MKL.KNN.7
A data.frame: 5 × 4
TCGA-2H-A9GF-01A-11R-A37I-31TCGA-2H-A9GG-01A-11R-A37I-31TCGA-2H-A9GH-01A-11R-A37I-31TCGA-2H-A9GI-01A-11R-A37I-31
<dbl><dbl><dbl><dbl>
A1BG 110.0228 379.9706 12.3726 32.2850
A2M10403.185519398.63739391.52475732.1918
NAT1 115.7483 110.6918 286.3901 483.8716
NAT2 2.6084 1.2579 46.9432 55.6916
RP11-986E7.7 122.5954 275.8910 578.2387 449.1652

Creating multiAssayExperiment

To create a MultiAssayExperiment object, ELMER provides the function createMAE, which requires the DNA methylation data (either a matrix or a Summarized Experiment object) [function argument met] and Gene expression data (either a matrix or a Summarized Experiment object) [function argument exp].

For DNA methylation we only keep distal probes (at least $2Kbp$ away from TSS) since it tries to infer for distal interactions regulating genes. ELMER provides the function get.feature.probe to retrieve those set of probes.

The DNA methylation data from the 450k platform has three types of probes cg (CpG loci), ch (non-CpG loci) and rs (SNP assay). The last type of probe can be used for sample identification and tracking and should be excluded for differential methylation analysis according to the ilumina manual (https://www.illumina.com/content/dam/illumina-support/documents/documentation/software_documentation/genomestudio/genomestudio-2011-1/genomestudio-methylation-v1-8-user-guide-11319130-b.pdf). Along with the filter based on the distance to TSS, probes with the rs prefix is also removed by get.feature.probe.

Finally, some probes should also be masked for other reasons presented by @zhou2017comprehensive and listed below (source: https://zwdzwd.github.io/InfiniumAnnotation).

  • MASK.mapping - whether the probe is masked for mapping reason. Probes retained should have high quality (>=40 on 0-60 scale) consistent (with designed MAPINFO) * mapping (for both in the case of type I) without INDELs.
  • MASK.typeINextBaseSwitch - whether the probe has a SNP in the extension base that causes a color channel switch from the official annotation (described as color-channel-switching, or CCS SNP in the reference). These probes should be processed differently than designed (by summing up both color channels instead of just the annotated color channel).
  • MASK.rmsk15 - whether the 15bp 3'-subsequence of the probe overlap with repeat masker, this MASK is NOT recommended.
  • MASK.sub25.copy, MASK.sub30.copy, MASK.sub35.copy and MASK.sub40.copy - whether the 25bp, 30bp, 35bp and 40bp 3'-subsequence of the probe is non-unique.
  • MASK.snp5.common - whether 5bp 3'-subsequence (including extension for typeII) overlap with any of the common SNPs from dbSNP (global MAF can be under 1%).
  • MASK.snp5.GMAF1p - whether 5bp 3'-subsequence (including extension for typeII) overlap with any of the SNPs with global MAF >1%. *MASK.extBase - probes masked for extension base inconsistent with specified color channel (type-I) or CpG (type-II) based on mapping.
  • MASK.general - recommended general purpose masking merged from "MASK.sub30.copy", "MASK.mapping", "MASK.extBase", "MASK.typeINextBaseSwitch" and "MASK.snp5.GMAF1p".

Thus, MASK.general is used by ELMER to remove the masked probes from the eavluated distal probes.

In [3]:
library(SummarizedExperiment)
library(ELMER)

# 1) retrieve distal probes
genome <- "hg19"
distal.probes <- get.feature.probe(feature = NULL,
                                   genome = genome,
                                   met.platform = "450K") 
ranges(distal.probes)
# Number of distal probes
length(distal.probes)
Loading required package: ELMER.data
Returning distal probes: 165935
IRanges object with 165935 ranges and 0 metadata columns:
                 start       end     width
             <integer> <integer> <integer>
  cg00168193    790667    790668         2
  cg08258224    800083    800084         2
  cg13938959    834183    834184         2
  cg12445832    834295    834296         2
  cg23999112    834356    834357         2
         ...       ...       ...       ...
  cg14931215  21867702  21867703         2
  cg00308367  21868532  21868533         2
  cg00063477  22741795  22741796         2
  cg01900066  22754881  22754882         2
  cg25918849  23753332  23753333         2
165935

For Gene expression data the row names accepted are Ensembl gene IDs, since our data has gene name as inout we will change the row names.

In [4]:
# 2) ELMER required ENSEMBL ID as rownames for gene expression
# for hg19, gene symbols|entre_id were the default default for RNA-seq
# so we need to rename our rows to the ensembl_gene_id which is 
# already in the rowRanges information
rowRanges(gene.expression)
rownames(gene.expression)  <- rowRanges(gene.expression)$ensembl_gene_id
GRanges object with 19947 ranges and 3 metadata columns:
               seqnames              ranges strand |      gene_id entrezgene
                  <Rle>           <IRanges>  <Rle> |  <character>  <numeric>
          A1BG    chr19   58856544-58864865      - |         A1BG          1
           A2M    chr12     9220260-9268825      - |          A2M          2
          NAT1     chr8   18027986-18081198      + |         NAT1          9
          NAT2     chr8   18248755-18258728      + |         NAT2         10
  RP11-986E7.7    chr14   95058395-95090983      + | RP11-986E7.7         12
           ...      ...                 ...    ... .          ...        ...
    RASAL2-AS1     chr1 178060643-178063119      - |   RASAL2-AS1  100302401
     LINC00882     chr3 106555658-106959488      - |    LINC00882  100302640
           FTX     chrX   73183790-73513409      - |          FTX  100302692
        TICAM2     chr5 114914339-114961876      - |       TICAM2  100302736
   SLC25A5-AS1     chrX 118599997-118603061      - |  SLC25A5-AS1  100303728
               ensembl_gene_id
                   <character>
          A1BG ENSG00000121410
           A2M ENSG00000175899
          NAT1 ENSG00000171428
          NAT2 ENSG00000156006
  RP11-986E7.7 ENSG00000273259
           ...             ...
    RASAL2-AS1 ENSG00000224687
     LINC00882 ENSG00000242759
           FTX ENSG00000230590
        TICAM2 ENSG00000243414
   SLC25A5-AS1 ENSG00000224281
  -------
  seqinfo: 24 sequences from an unspecified genome; no seqlengths

Finally, we can use createMAE setting the genome of reference ("hg19" or "hg38") used to add DNA methylation probes metadata and gene metadata information. To perform a correlation between DNA methylation and gene expression it is better to take the log2 of expression data (executed if the argument linearize.exp is TRUE). Also, if samples are from TCGA, ELMER will automatically pull samples information from TCGA, otherwise it should be provided by the user using colData and sampleMap arguments (tip: you can check the documentation of a function in R with the following command ?createMAE)

In [5]:
mae <- createMAE(exp = gene.expression,
                 met = methylation,
                 met.platform = "450K",
                 genome = genome,
                 linearize.exp = TRUE, # takes log2(expression + 1)
                 filter.probes = distal.probes,
                 save = FALSE,
                 TCGA = TRUE)
Checking if samples have both DNA methylation and Gene expression and if they are in the same order...
Starting to add information to samples
 => Add clinical information to samples
Add FFPE information. More information at: 
=> https://cancergenome.nih.gov/cancersselected/biospeccriteria 
=> http://gdac.broadinstitute.org/runs/sampleReports/latest/FPPP_FFPE_Cases.html
 => Adding subtype information to samples
esca subtype information from:doi:10.1038/nature20805
Creating MultiAssayExperiment

You can check the MAE object using some accessor described in this cheatsheet.

In [6]:
mae

# Since it is TCGA ELMER add autmaticalle the samples information
as.data.frame(colData(mae)[1:4,1:5])

# Available information
as.data.frame(colnames(colData(mae)))
A MultiAssayExperiment object of 2 listed
 experiments with user-defined names and respective classes. 
 Containing an ExperimentList class object of length 2: 
 [1] DNA methylation: RangedSummarizedExperiment with 135158 rows and 4 columns 
 [2] Gene expression: RangedSummarizedExperiment with 19947 rows and 4 columns 
Features: 
 experiments() - obtain the ExperimentList instance 
 colData() - the primary/phenotype DataFrame 
 sampleMap() - the sample availability DataFrame 
 `$`, `[`, `[[` - extract colData columns, subset, or experiment 
 *Format() - convert into a long or wide DataFrame 
 assays() - convert ExperimentList to a SimpleList of matrices
A data.frame: 4 × 5
samplepatientshortLetterCodedefinitionyear_of_diagnosis
<chr><chr><chr><chr><int>
TCGA-2H-A9GF-01ATCGA-2H-A9GF-01ATCGA-2H-A9GFTPPrimary solid Tumor2001
TCGA-2H-A9GG-01ATCGA-2H-A9GG-01ATCGA-2H-A9GGTPPrimary solid Tumor1999
TCGA-2H-A9GH-01ATCGA-2H-A9GH-01ATCGA-2H-A9GHTPPrimary solid Tumor1998
TCGA-2H-A9GI-01ATCGA-2H-A9GI-01ATCGA-2H-A9GITPPrimary solid Tumor1999
A data.frame: 139 × 1
colnames(colData(mae))
<fct>
sample
patient
shortLetterCode
definition
year_of_diagnosis
classification_of_tumor
last_known_disease_status
updated_datetime.x
primary_diagnosis
tumor_stage
age_at_diagnosis
morphology
days_to_last_known_disease_status
created_datetime.x
prior_treatment
ajcc_pathologic_n
ajcc_pathologic_m
state.x
days_to_last_follow_up
days_to_recurrence
diagnosis_id
tumor_grade
treatments
icd_10_code
days_to_diagnosis
tissue_or_organ_of_origin
progression_or_recurrence
prior_malignancy
ajcc_staging_system_edition
ajcc_pathologic_stage
subtype_SMARCA4.mutation
subtype_Percent.tumor.nuclei
subtype_Percent.tumor.cells
subtype_Percent.lymphocyte.infiltration
subtype_Estimated.leukocyte.percentage
subtype_Absolute.extract.ploidy
subtype_Absolute.extract.purity
subtype_Genome.doublings
subtype_ESCC.subtype
subtype_DNA.Methylation.Cluster...EC
subtype_SCNA.cluster.EC
subtype_MRNA.cluster.EC
subtype_MiRNA.cluster.EC
subtype_RPPA.cluster.EC
subtype_SCNA.cluster.GEA
subtype_MRNA.cluster.GEA
subtype_DNA.Methylation.Cluster...GEA
subtype_MiRNA.cluster.GEA
subtype_RPPA.cluster.GEA
subtype_SCNA.Cluster...GEA.CIN
subtype_DNA.Methylation.Cluster...GEA.CIN
subtype_Gene.Expression.Cluster...GEA.CIN
subtype_MicroRNA.Expression.Cluster...GEA.CIN
subtype_RPPA.Cluster...GEA.CIN
subtype_GEA.CIN.Integrated.Cluster...COCA
subtype_GEA.CIN.Integrated.Cluster...iCluster
subtype_GEA.CIN.Integrated.Cluster...SuperCluster
subtype_GEA.CIN.Integrated.Cluster...MKL.KNN.4
subtype_GEA.CIN.Integrated.Cluster...MKL.KNN.7
TN

The next sections we will provide the code to download the complete TCGA ESCA dataset.

Retrieving all TCGA-ESCA data

The code below downloaded all TCGA-ESCA data (DNA methylation and Gene Expression) , but due to the long time to download the data it will not be run.

{R}
# 1) get all DNA methylation data aligned annotated with hg38 information
query.met <- GDCquery(project =  "TCGA-ESCA",
                      data.category = "DNA Methylation",
                      platform = "Illumina Human Methylation 450",
                      sample.type = "Primary solid Tumor")
GDCdownload(query.met)
methylation <- GDCprepare(query = query.met,
                          save = TRUE,
                          save.filename = "TCGA-ESCA_450K_hg38.rda"
)



# 1) get all RNA-seq data aligned against hg38
query.exp <- GDCquery(project = "TCGA-ESCA",
                  data.category = "Transcriptome Profiling",
                  data.type = "Gene Expression Quantification", 
                  workflow.type = "HTSeq - FPKM-UQ")
GDCdownload(query.exp, method = "api", files.per.chunk = 10)
gene.expression <- GDCprepare(query.exp, 
                              save = TRUE, 
                              save.filename = "TCGA-ESCA_450K_hg38.rda")


# 3) Create ELMER input
#    A MultiAssayExperiment with samples 
#    that has both RNA-seq and 450K DNA methylation (distal probes)
genome <- "hg38"
distal.probes <- get.feature.probe(feature = NULL,
                                   genome = genome,
                                   met.platform = "450K") 

mae <- createMAE(exp = gene.expression,
                 met = methylation,
                 met.platform = "450K",
                 genome = genome,
                 linearize.exp = TRUE,
                 filter.probes = distal.probes,
                 save = TRUE,
                 save.filename = "TCGA_ESCA_MAE_distal_regions.rda",
                 TCGA = TRUE)

Session information

In [7]:
sessionInfo()
R version 3.5.1 (2018-07-02)
Platform: x86_64-conda_cos6-linux-gnu (64-bit)
Running under: Ubuntu 18.04.2 LTS

Matrix products: default
BLAS/LAPACK: /opt/conda/lib/R/lib/libRblas.so

locale:
 [1] LC_CTYPE=C.UTF-8       LC_NUMERIC=C           LC_TIME=C.UTF-8       
 [4] LC_COLLATE=C.UTF-8     LC_MONETARY=C.UTF-8    LC_MESSAGES=C.UTF-8   
 [7] LC_PAPER=C.UTF-8       LC_NAME=C              LC_ADDRESS=C          
[10] LC_TELEPHONE=C         LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C   

attached base packages:
[1] parallel  stats4    stats     graphics  grDevices utils     datasets 
[8] methods   base     

other attached packages:
 [1] ELMER_2.9.4                 ELMER.data_2.9.3           
 [3] SummarizedExperiment_1.12.0 DelayedArray_0.8.0         
 [5] BiocParallel_1.16.6         matrixStats_0.55.0         
 [7] Biobase_2.42.0              GenomicRanges_1.34.0       
 [9] GenomeInfoDb_1.18.2         IRanges_2.16.0             
[11] S4Vectors_0.20.1            BiocGenerics_0.28.0        
[13] TCGAbiolinks_2.13.6        

loaded via a namespace (and not attached):
  [1] uuid_0.1-2                  backports_1.1.4            
  [3] circlize_0.4.8              Hmisc_4.2-0                
  [5] aroma.light_3.12.0          plyr_1.8.4                 
  [7] selectr_0.4-1               ConsensusClusterPlus_1.46.0
  [9] repr_1.0.1                  lazyeval_0.2.2             
 [11] splines_3.5.1               ggplot2_3.2.1              
 [13] sva_3.30.1                  digest_0.6.20              
 [15] ensembldb_2.6.3             foreach_1.4.7              
 [17] htmltools_0.3.6             checkmate_1.9.4            
 [19] magrittr_1.5                memoise_1.1.0              
 [21] BSgenome_1.50.0             cluster_2.1.0              
 [23] doParallel_1.0.15           limma_3.38.3               
 [25] ComplexHeatmap_2.1.0        Biostrings_2.50.2          
 [27] readr_1.3.1                 annotate_1.60.1            
 [29] R.utils_2.9.0               prettyunits_1.0.2          
 [31] colorspace_1.4-1            blob_1.2.0                 
 [33] rvest_0.3.4                 ggrepel_0.8.1              
 [35] xfun_0.9                    dplyr_0.8.3                
 [37] crayon_1.3.4                RCurl_1.95-4.12            
 [39] jsonlite_1.6                genefilter_1.64.0          
 [41] zeallot_0.1.0               VariantAnnotation_1.28.3   
 [43] survival_2.44-1.1           zoo_1.8-6                  
 [45] iterators_1.0.12            glue_1.3.1                 
 [47] survminer_0.4.6             gtable_0.3.0               
 [49] zlibbioc_1.28.0             XVector_0.22.0             
 [51] GetoptLong_0.1.7            shape_1.4.4                
 [53] scales_1.0.0                DESeq_1.34.1               
 [55] DBI_1.0.0                   edgeR_3.24.3               
 [57] ggthemes_4.2.0              Rcpp_1.0.2                 
 [59] viridisLite_0.3.0           htmlTable_1.13.1           
 [61] xtable_1.8-4                progress_1.2.2             
 [63] clue_0.3-57                 foreign_0.8-72             
 [65] bit_1.1-14                  matlab_1.0.2               
 [67] km.ci_0.5-2                 Formula_1.2-3              
 [69] htmlwidgets_1.3             httr_1.4.1                 
 [71] RColorBrewer_1.1-2          acepack_1.4.1              
 [73] reshape_0.8.8               pkgconfig_2.0.2            
 [75] XML_3.98-1.19               R.methodsS3_1.7.1          
 [77] nnet_7.3-12                 Gviz_1.26.4                
 [79] locfit_1.5-9.1              tidyselect_0.2.5           
 [81] rlang_0.4.0                 AnnotationDbi_1.44.0       
 [83] munsell_0.5.0               tools_3.5.1                
 [85] downloader_0.4              generics_0.0.2             
 [87] RSQLite_2.1.2               broom_0.5.2                
 [89] evaluate_0.14               stringr_1.4.0              
 [91] knitr_1.24                  bit64_0.9-7                
 [93] survMisc_0.5.5              purrr_0.3.2                
 [95] AnnotationFilter_1.6.0      EDASeq_2.16.3              
 [97] nlme_3.1-141                R.oo_1.22.0                
 [99] xml2_1.2.2                  biomaRt_2.38.0             
[101] rstudioapi_0.10             compiler_3.5.1             
[103] plotly_4.9.0                curl_4.1                   
[105] png_0.1-7                   ggsignif_0.6.0             
[107] tibble_2.1.3                geneplotter_1.60.0         
[109] stringi_1.4.3               GenomicFeatures_1.34.8     
[111] lattice_0.20-38             IRdisplay_0.7.0            
[113] ProtGenerics_1.14.0         Matrix_1.2-17              
[115] KMsurv_0.1-5                vctrs_0.2.0                
[117] pillar_1.4.2                lifecycle_0.1.0            
[119] GlobalOptions_0.1.0         data.table_1.12.2          
[121] bitops_1.0-6                rtracklayer_1.42.2         
[123] R6_2.4.0                    latticeExtra_0.6-28        
[125] hwriter_1.3.2               ShortRead_1.40.0           
[127] gridExtra_2.3               codetools_0.2-16           
[129] dichromat_2.0-0             assertthat_0.2.1           
[131] rjson_0.2.20                GenomicAlignments_1.18.1   
[133] Rsamtools_1.34.1            GenomeInfoDbData_1.2.1     
[135] MultiAssayExperiment_1.8.1  mgcv_1.8-28                
[137] hms_0.5.1                   rpart_4.1-15               
[139] grid_3.5.1                  IRkernel_1.0.2             
[141] tidyr_1.0.0                 rmarkdown_1.15             
[143] ggpubr_0.2.3                biovizBase_1.30.1          
[145] pbdZMQ_0.3-3                base64enc_0.1-3            

Workshop materials

Workshops HTMLs

Workshop videos

We have a set of recorded videos, explaining some of the workshops.

In [ ]: