Contents

1 R

1.1 Vectors

‘atomic’ vectors

  • logical(), integer(), numeric(), character(), …

    x <- c(1, 3, 5)
    y <- 1:5
  • Interface: length(), [, [<-

lists

  • Interface: length(), [, [<-, [[, [[<-, $, $<-

Trouble!

  • NA

    x <- c(TRUE, FALSE, NA)
    outer(x, x, `&`)
    ##       [,1]  [,2]  [,3]
    ## [1,]  TRUE FALSE    NA
    ## [2,] FALSE FALSE FALSE
    ## [3,]    NA FALSE    NA
    outer(x, x, `|`)
    ##      [,1]  [,2] [,3]
    ## [1,] TRUE  TRUE TRUE
    ## [2,] TRUE FALSE   NA
    ## [3,] TRUE    NA   NA
  • Factors

    x <- c("Male", "Female", "male")
    gender <- factor(x, levels=c("Female", "Male"))
    gender
    ## [1] Male   Female <NA>  
    ## Levels: Female Male

1.2 Objects

The data.frame

x <- rnorm(100)
hist(x)

y <- x + rnorm(100)
df <- data.frame(x, y)
plot(y ~ x, df)

Basic data.frame operations

  • column access $, [[
  • Two-dimensional subsetting [
ridx <- df$x > 0
table(ridx)
## ridx
## FALSE  TRUE 
##    49    51
plot(y ~ x, df[ridx, ])

More complicated objects and the methods that act on them

fit <- lm(y ~ x, df)
class(fit)
## [1] "lm"
anova(fit)
## Analysis of Variance Table
## 
## Response: y
##           Df Sum Sq Mean Sq F value    Pr(>F)    
## x          1 168.92 168.921  152.36 < 2.2e-16 ***
## Residuals 98 108.65   1.109                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(y ~ x, df)
abline(fit)

1.3 Packages

library(ggplot2)
ggplot(df, aes(x, y)) + 
    geom_point() +
    geom_smooth(method="lm")

2 Tidy R

2.1 Using the ‘tidyverse’

readr for data input

library(readr)
pdata_file <- file.choose()    # ALL-sample-sheet.csv
pdata <- read_csv(pdata_file)
## Parsed with column specification:
## cols(
##   .default = col_character(),
##   age = col_double(),
##   `t(4;11)` = col_logical(),
##   `t(9;22)` = col_logical(),
##   cyto.normal = col_logical(),
##   ccr = col_logical(),
##   relapse = col_logical(),
##   transplant = col_logical()
## )
## See spec(...) for full column specifications.
pdata
## # A tibble: 128 x 22
##    sample cod   diagnosis sex     age BT    remission CR    date.cr
##    <chr>  <chr> <chr>     <chr> <dbl> <chr> <chr>     <chr> <chr>  
##  1 01005  1005  5/21/1997 M        53 B2    CR        CR    8/6/19…
##  2 01010  1010  3/29/2000 M        19 B2    CR        CR    6/27/2…
##  3 03002  3002  6/24/1998 F        52 B4    CR        CR    8/17/1…
##  4 04006  4006  7/17/1997 M        38 B1    CR        CR    9/8/19…
##  5 04007  4007  7/22/1997 M        57 B2    CR        CR    9/17/1…
##  6 04008  4008  7/30/1997 M        17 B1    CR        CR    9/27/1…
##  7 04010  4010  10/30/19… F        18 B1    CR        CR    1/7/19…
##  8 04016  4016  2/10/2000 M        16 B1    CR        CR    4/17/2…
##  9 06002  6002  3/19/1997 M        15 B2    CR        CR    6/9/19…
## 10 08001  8001  1/15/1997 M        40 B2    CR        CR    3/26/1…
## # … with 118 more rows, and 13 more variables: `t(4;11)` <lgl>,
## #   `t(9;22)` <lgl>, cyto.normal <lgl>, citog <chr>, mol.biol <chr>,
## #   `fusion protein` <chr>, mdr <chr>, kinet <chr>, ccr <lgl>,
## #   relapse <lgl>, transplant <lgl>, f.u <chr>, `date last seen` <chr>

dplyr for data manipulation

library(dplyr)
pdata %>% select(sample, sex, age, mol.biol)
## # A tibble: 128 x 4
##    sample sex     age mol.biol
##    <chr>  <chr> <dbl> <chr>   
##  1 01005  M        53 BCR/ABL 
##  2 01010  M        19 NEG     
##  3 03002  F        52 BCR/ABL 
##  4 04006  M        38 ALL1/AF4
##  5 04007  M        57 NEG     
##  6 04008  M        17 NEG     
##  7 04010  F        18 NEG     
##  8 04016  M        16 NEG     
##  9 06002  M        15 NEG     
## 10 08001  M        40 BCR/ABL 
## # … with 118 more rows
pdata %>% filter(sex == "F", age < 50)
## # A tibble: 33 x 22
##    sample cod   diagnosis sex     age BT    remission CR    date.cr
##    <chr>  <chr> <chr>     <chr> <dbl> <chr> <chr>     <chr> <chr>  
##  1 04010  4010  10/30/19… F        18 B1    CR        CR    1/7/19…
##  2 09017  9017  2/3/2000  F        27 B     CR        CR    3/23/2…
##  3 12012  12012 5/21/1997 F        36 B3    REF       REF   <NA>   
##  4 16009  16009 7/11/2000 F        43 B2    <NA>      <NA>  <NA>   
##  5 19005  19005 11/15/19… F        48 B1    CR        CR    2/3/19…
##  6 22009  22009 8/10/1999 F        19 B     <NA>      <NA>  <NA>   
##  7 22010  22010 12/31/19… F        26 B     <NA>      <NA>  <NA>   
##  8 24001  24001 10/4/1996 F        17 B2    CR        CR    12/20/…
##  9 24005  24005 1/3/1997  F        45 B1    CR        CR    4/8/19…
## 10 24008  24008 5/14/1997 F        20 B2    CR        CR    7/31/1…
## # … with 23 more rows, and 13 more variables: `t(4;11)` <lgl>,
## #   `t(9;22)` <lgl>, cyto.normal <lgl>, citog <chr>, mol.biol <chr>,
## #   `fusion protein` <chr>, mdr <chr>, kinet <chr>, ccr <lgl>,
## #   relapse <lgl>, transplant <lgl>, f.u <chr>, `date last seen` <chr>
pdata %>% mutate(sex = factor(sex, levels = c("F", "M")))
## # A tibble: 128 x 22
##    sample cod   diagnosis sex     age BT    remission CR    date.cr
##    <chr>  <chr> <chr>     <fct> <dbl> <chr> <chr>     <chr> <chr>  
##  1 01005  1005  5/21/1997 M        53 B2    CR        CR    8/6/19…
##  2 01010  1010  3/29/2000 M        19 B2    CR        CR    6/27/2…
##  3 03002  3002  6/24/1998 F        52 B4    CR        CR    8/17/1…
##  4 04006  4006  7/17/1997 M        38 B1    CR        CR    9/8/19…
##  5 04007  4007  7/22/1997 M        57 B2    CR        CR    9/17/1…
##  6 04008  4008  7/30/1997 M        17 B1    CR        CR    9/27/1…
##  7 04010  4010  10/30/19… F        18 B1    CR        CR    1/7/19…
##  8 04016  4016  2/10/2000 M        16 B1    CR        CR    4/17/2…
##  9 06002  6002  3/19/1997 M        15 B2    CR        CR    6/9/19…
## 10 08001  8001  1/15/1997 M        40 B2    CR        CR    3/26/1…
## # … with 118 more rows, and 13 more variables: `t(4;11)` <lgl>,
## #   `t(9;22)` <lgl>, cyto.normal <lgl>, citog <chr>, mol.biol <chr>,
## #   `fusion protein` <chr>, mdr <chr>, kinet <chr>, ccr <lgl>,
## #   relapse <lgl>, transplant <lgl>, f.u <chr>, `date last seen` <chr>
pdata %>% summarize(
    n = n(),
    ave_age = mean(age, na.rm=TRUE)
)
## # A tibble: 1 x 2
##       n ave_age
##   <int>   <dbl>
## 1   128    32.4
pdata %>%
    group_by(sex) %>%
    summarize(
        n = n(),
        ave_age = mean(age, na.rm = TRUE)
    )
## # A tibble: 3 x 3
##   sex       n ave_age
##   <chr> <int>   <dbl>
## 1 F        42    35.2
## 2 M        83    30.9
## 3 <NA>      3   NaN

2.2 Tidying data

Input

pdata_file <- file.choose()    # airway-sample-sheet.csv
count_file <- file.choose()    # airway-read-counts.csv
pdata <- read_csv(pdata_file)
## Parsed with column specification:
## cols(
##   SampleName = col_character(),
##   cell = col_character(),
##   dex = col_character(),
##   albut = col_character(),
##   Run = col_character(),
##   avgLength = col_double(),
##   Experiment = col_character(),
##   Sample = col_character(),
##   BioSample = col_character()
## )
pdata <- 
    pdata %>% 
    select(Run, cell, dex)
counts <- read_csv(count_file)
## Parsed with column specification:
## cols(
##   .default = col_double(),
##   Run = col_character()
## )
## See spec(...) for full column specifications.
eg <- counts[, 1:6]    # make it easy to work with
eg
## # A tibble: 8 x 6
##   Run   ENSG00000000003 ENSG00000000419 ENSG00000000457 ENSG00000000460
##   <chr>           <dbl>           <dbl>           <dbl>           <dbl>
## 1 SRR1…             679             467             260              60
## 2 SRR1…             448             515             211              55
## 3 SRR1…             873             621             263              40
## 4 SRR1…             408             365             164              35
## 5 SRR1…            1138             587             245              78
## 6 SRR1…            1047             799             331              63
## 7 SRR1…             770             417             233              76
## 8 SRR1…             572             508             229              60
## # … with 1 more variable: ENSG00000000938 <dbl>

Joining

data <- left_join(pdata, eg)
## Joining, by = "Run"
data
## # A tibble: 8 x 8
##   Run   cell  dex   ENSG00000000003 ENSG00000000419 ENSG00000000457
##   <chr> <chr> <chr>           <dbl>           <dbl>           <dbl>
## 1 SRR1… N613… untrt             679             467             260
## 2 SRR1… N613… trt               448             515             211
## 3 SRR1… N052… untrt             873             621             263
## 4 SRR1… N052… trt               408             365             164
## 5 SRR1… N080… untrt            1138             587             245
## 6 SRR1… N080… trt              1047             799             331
## 7 SRR1… N061… untrt             770             417             233
## 8 SRR1… N061… trt               572             508             229
## # … with 2 more variables: ENSG00000000460 <dbl>, ENSG00000000938 <dbl>

Gathering

library(tidyr)
tbl <- gather(data, "Gene", "Count", -(1:3))
tbl
## # A tibble: 40 x 5
##    Run        cell    dex   Gene            Count
##    <chr>      <chr>   <chr> <chr>           <dbl>
##  1 SRR1039508 N61311  untrt ENSG00000000003   679
##  2 SRR1039509 N61311  trt   ENSG00000000003   448
##  3 SRR1039512 N052611 untrt ENSG00000000003   873
##  4 SRR1039513 N052611 trt   ENSG00000000003   408
##  5 SRR1039516 N080611 untrt ENSG00000000003  1138
##  6 SRR1039517 N080611 trt   ENSG00000000003  1047
##  7 SRR1039520 N061011 untrt ENSG00000000003   770
##  8 SRR1039521 N061011 trt   ENSG00000000003   572
##  9 SRR1039508 N61311  untrt ENSG00000000419   467
## 10 SRR1039509 N61311  trt   ENSG00000000419   515
## # … with 30 more rows
tbl %>%
    group_by(Run) %>%
    summarize(lib_size = sum(Count))
## # A tibble: 8 x 2
##   Run        lib_size
##   <chr>         <dbl>
## 1 SRR1039508     1466
## 2 SRR1039509     1229
## 3 SRR1039512     1799
## 4 SRR1039513      972
## 5 SRR1039516     2049
## 6 SRR1039517     2240
## 7 SRR1039520     1496
## 8 SRR1039521     1369
tbl %>%
    group_by(Gene) %>%
    summarize(
        ave_count = mean(Count),
        ave_log_count = mean(log(1 + Count))
    )
## # A tibble: 5 x 3
##   Gene            ave_count ave_log_count
##   <chr>               <dbl>         <dbl>
## 1 ENSG00000000003   742.            6.55 
## 2 ENSG00000000419   535.            6.26 
## 3 ENSG00000000457   242             5.48 
## 4 ENSG00000000460    58.4           4.05 
## 5 ENSG00000000938     0.375         0.224

2.3 Visualization

Tidy all the data.

counts_tbl <- gather(counts, "Gene", "Count", -Run)
data_tbl <- left_join(pdata, counts_tbl)
## Joining, by = "Run"
data_tbl
## # A tibble: 267,752 x 5
##    Run        cell   dex   Gene            Count
##    <chr>      <chr>  <chr> <chr>           <dbl>
##  1 SRR1039508 N61311 untrt ENSG00000000003   679
##  2 SRR1039508 N61311 untrt ENSG00000000419   467
##  3 SRR1039508 N61311 untrt ENSG00000000457   260
##  4 SRR1039508 N61311 untrt ENSG00000000460    60
##  5 SRR1039508 N61311 untrt ENSG00000000938     0
##  6 SRR1039508 N61311 untrt ENSG00000000971  3251
##  7 SRR1039508 N61311 untrt ENSG00000001036  1433
##  8 SRR1039508 N61311 untrt ENSG00000001084   519
##  9 SRR1039508 N61311 untrt ENSG00000001167   394
## 10 SRR1039508 N61311 untrt ENSG00000001460   172
## # … with 267,742 more rows

Summarize average ‘expression’ of each gene.

gene_summaries <-
    data_tbl %>%
    group_by(Gene) %>%
    summarize(
        ave_count = mean(Count),
        ave_log_count = mean(log(1 + Count))
    )
gene_summaries
## # A tibble: 33,469 x 3
##    Gene            ave_count ave_log_count
##    <chr>               <dbl>         <dbl>
##  1 ENSG00000000003   742.            6.55 
##  2 ENSG00000000419   535.            6.26 
##  3 ENSG00000000457   242             5.48 
##  4 ENSG00000000460    58.4           4.05 
##  5 ENSG00000000938     0.375         0.224
##  6 ENSG00000000971  6035.            8.63 
##  7 ENSG00000001036  1305             7.15 
##  8 ENSG00000001084   615.            6.40 
##  9 ENSG00000001167   392.            5.89 
## 10 ENSG00000001460   188.            5.21 
## # … with 33,459 more rows

Visualize using ggplot2

library(ggplot2)
ggplot(gene_summaries, aes(ave_log_count)) +
    geom_density()

3 Bioconductor

3.1 Objects are important

library(Biostrings)
seq = c("AAACA", "CATGC")
dna <- DNAStringSet(seq)
reverseComplement(dna)
##   A DNAStringSet instance of length 2
##     width seq
## [1]     5 TGTTT
## [2]     5 GCATG
dm3_upstream_file <-
    system.file(package="Biostrings", "extdata", "dm3_upstream2000.fa.gz")
readLines(dm3_upstream_file, 10)
##  [1] ">NM_078863_up_2000_chr2L_16764737_f chr2L:16764737-16766736"
##  [2] "gttggtggcccaccagtgccaaaatacacaagaagaagaaacagcatctt"         
##  [3] "gacactaaaatgcaaaaattgctttgcgtcaatgactcaaaacgaaaatg"         
##  [4] "tttttgtgcttttcgaacaaaaaattgggagcagaatattggattcgctt"         
##  [5] "ttttcgcatcgaatatcttaagggagcaagggaagaaccatctagaataa"         
##  [6] "taaagaagaccaaaatgtatcgtaactaaaggttttttttattaattatt"         
##  [7] "aaatgttaaatattaacttataccaactcattggctttacaagtacaaca"         
##  [8] "aataaccccaaaataatttattgtcaggtgctaaattgttgtttgttgtt"         
##  [9] "cttggaatttgttttaaatgctcaatttatgtttttgtctttttgcccac"         
## [10] "aattctgctcgacaatgtcacagattttgtttcagaaacttagcaaaaag"
dna <- readDNAStringSet(dm3_upstream_file)
dna
##   A DNAStringSet instance of length 26454
##         width seq                                      names               
##     [1]  2000 GTTGGTGGCCCACCAGTGC...GTTTACCGGTTGCACGGT NM_078863_up_2000...
##     [2]  2000 TTATTTATGTAGGCGCCCG...CGGAAAGTCATCCTCGAT NM_001201794_up_2...
##     [3]  2000 TTATTTATGTAGGCGCCCG...CGGAAAGTCATCCTCGAT NM_001201795_up_2...
##     [4]  2000 TTATTTATGTAGGCGCCCG...CGGAAAGTCATCCTCGAT NM_001201796_up_2...
##     [5]  2000 TTATTTATGTAGGCGCCCG...CGGAAAGTCATCCTCGAT NM_001201797_up_2...
##     ...   ... ...
## [26450]  2000 ATTTACAAGACTAATAAAG...ATTAAATTTCAATAAAAC NM_001111010_up_2...
## [26451]  2000 GATATACGAAGGACGACCT...TTTGAGTTGTTATATATT NM_001015258_up_2...
## [26452]  2000 GATATACGAAGGACGACCT...TTTGAGTTGTTATATATT NM_001110997_up_2...
## [26453]  2000 GATATACGAAGGACGACCT...TTTGAGTTGTTATATATT NM_001276245_up_2...
## [26454]  2000 CGTATGTATTAGTTAACTC...AAGTGTAAGAACAAATTG NM_001015497_up_2...
gc <- letterFrequency(dna, "GC", as.prob = TRUE)
hist(gc)

library(BSgenome)
library(BSgenome.Hsapiens.UCSC.hg38)
BSgenome.Hsapiens.UCSC.hg38
## Human genome:
## # organism: Homo sapiens (Human)
## # provider: UCSC
## # provider version: hg38
## # release date: Dec. 2013
## # release name: Genome Reference Consortium GRCh38
## # 455 sequences:
## #   chr1                    chr2                    chr3                   
## #   chr4                    chr5                    chr6                   
## #   chr7                    chr8                    chr9                   
## #   chr10                   chr11                   chr12                  
## #   chr13                   chr14                   chr15                  
## #   ...                     ...                     ...                    
## #   chrUn_KI270744v1        chrUn_KI270745v1        chrUn_KI270746v1       
## #   chrUn_KI270747v1        chrUn_KI270748v1        chrUn_KI270749v1       
## #   chrUn_KI270750v1        chrUn_KI270751v1        chrUn_KI270752v1       
## #   chrUn_KI270753v1        chrUn_KI270754v1        chrUn_KI270755v1       
## #   chrUn_KI270756v1        chrUn_KI270757v1                               
## # (use 'seqnames()' to see all the sequence names, use the '$' or '[['
## # operator to access a given sequence)
chr17 <- BSgenome.Hsapiens.UCSC.hg38[["chr17"]]
chr17
##   83257441-letter "DNAString" instance
## seq: NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN...NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
letterFrequency(chr17, "GC", as.prob=TRUE)
##       G|C 
## 0.4513163

3.2 The interface to objects is important

library(S4Vectors)

What is a vector?

  • length(), [, …

What is a DataFrame?

  • a column of vectors, as defined above
DataFrame(x = rnorm(100), y = rnorm(100))
## DataFrame with 100 rows and 2 columns
##                      x                   y
##              <numeric>           <numeric>
## 1   -0.944041504379253  -0.455610766974721
## 2   -0.271818699506858   0.288951532687977
## 3    0.376593013180833    2.25049393969679
## 4     2.08865852110716   -1.07803387444287
## 5    0.121827514586298   -0.33510144878213
## ...                ...                 ...
## 96  -0.185216617632044   -1.89795810437905
## 97    1.59604096379008   0.686796046925052
## 98   -2.63000888891303   0.804185609470674
## 99   -1.10334520519311 0.00814316376383511
## 100  -2.66678004450304   0.387616874336104

Is DNAStringSet a vector?

length(dna)
## [1] 26454
dna[1:4]
##   A DNAStringSet instance of length 4
##     width seq                                          names               
## [1]  2000 GTTGGTGGCCCACCAGTGCCA...AAGTTTACCGGTTGCACGGT NM_078863_up_2000...
## [2]  2000 TTATTTATGTAGGCGCCCGTT...TACGGAAAGTCATCCTCGAT NM_001201794_up_2...
## [3]  2000 TTATTTATGTAGGCGCCCGTT...TACGGAAAGTCATCCTCGAT NM_001201795_up_2...
## [4]  2000 TTATTTATGTAGGCGCCCGTT...TACGGAAAGTCATCCTCGAT NM_001201796_up_2...

So…

nms = names(dna)
pos = sub(".* ", "", nms)
df <- DataFrame(
    dna = unname(dna),
    pos = pos
)
df$gc <- letterFrequency(df$dna, "GC", as.prob=TRUE)[,1]
df
## DataFrame with 26454 rows and 3 columns
##                           dna                     pos        gc
##                <DNAStringSet>             <character> <numeric>
## 1     GTTGGTGGCC...GTTGCACGGT chr2L:16764737-16766736    0.3785
## 2     TTATTTATGT...CATCCTCGAT   chr2L:8382455-8384454      0.43
## 3     TTATTTATGT...CATCCTCGAT   chr2L:8382455-8384454      0.43
## 4     TTATTTATGT...CATCCTCGAT   chr2L:8382455-8384454      0.43
## 5     TTATTTATGT...CATCCTCGAT   chr2L:8382455-8384454      0.43
## ...                       ...                     ...       ...
## 26450 ATTTACAAGA...TCAATAAAAC     chrXHet:73686-75685    0.3455
## 26451 GATATACGAA...GTTATATATT     chrXHet:12884-14883    0.3065
## 26452 GATATACGAA...GTTATATATT     chrXHet:12884-14883    0.3065
## 26453 GATATACGAA...GTTATATATT     chrXHet:12884-14883    0.3065
## 26454 CGTATGTATT...GAACAAATTG   chrYHet:277861-279860    0.3865

3.3 What’s available?

Web site: https://bioconductor.org

Support site: https://support.bioconductor.org

slack: https://community-bioc.slack.com (sign-up:

3.4 Installing software

library(BiocManager)
BiocManager::available("BSgenome.Hsapiens")
##  [1] "BSgenome.Hsapiens.1000genomes.hs37d5"
##  [2] "BSgenome.Hsapiens.NCBI.GRCh38"       
##  [3] "BSgenome.Hsapiens.UCSC.hg17"         
##  [4] "BSgenome.Hsapiens.UCSC.hg17.masked"  
##  [5] "BSgenome.Hsapiens.UCSC.hg18"         
##  [6] "BSgenome.Hsapiens.UCSC.hg18.masked"  
##  [7] "BSgenome.Hsapiens.UCSC.hg19"         
##  [8] "BSgenome.Hsapiens.UCSC.hg19.masked"  
##  [9] "BSgenome.Hsapiens.UCSC.hg38"         
## [10] "BSgenome.Hsapiens.UCSC.hg38.masked"
## also possible to install CRAN, github packages
BiocManager::install("BSgenome.Hsapiens.UCSC.hg38")

4 Provenance

sessionInfo()
## R version 3.6.0 Patched (2019-04-26 r76431)
## Platform: x86_64-apple-darwin17.7.0 (64-bit)
## Running under: macOS High Sierra 10.13.6
## 
## Matrix products: default
## BLAS:   /Users/ma38727/bin/R-3-6-branch/lib/libRblas.dylib
## LAPACK: /Users/ma38727/bin/R-3-6-branch/lib/libRlapack.dylib
## 
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
## 
## attached base packages:
## [1] stats4    parallel  stats     graphics  grDevices utils     datasets 
## [8] methods   base     
## 
## other attached packages:
##  [1] BiocManager_1.30.5.1              BSgenome.Hsapiens.UCSC.hg38_1.4.1
##  [3] BSgenome_1.53.0                   rtracklayer_1.45.1               
##  [5] GenomicRanges_1.37.14             GenomeInfoDb_1.21.1              
##  [7] Biostrings_2.53.0                 XVector_0.25.0                   
##  [9] IRanges_2.19.10                   S4Vectors_0.23.17                
## [11] BiocGenerics_0.31.4               tidyr_0.8.3                      
## [13] dplyr_0.8.2                       readr_1.3.1                      
## [15] ggplot2_3.2.0                     BiocStyle_2.13.2                 
## 
## loaded via a namespace (and not attached):
##  [1] Rcpp_1.0.1                  lattice_0.20-38            
##  [3] Rsamtools_2.1.2             assertthat_0.2.1           
##  [5] zeallot_0.1.0               digest_0.6.19              
##  [7] utf8_1.1.4                  R6_2.4.0                   
##  [9] backports_1.1.4             evaluate_0.14              
## [11] pillar_1.4.2                zlibbioc_1.31.0            
## [13] rlang_0.4.0                 lazyeval_0.2.2             
## [15] Matrix_1.2-17               rmarkdown_1.13             
## [17] labeling_0.3                BiocParallel_1.19.0        
## [19] stringr_1.4.0               RCurl_1.95-4.12            
## [21] munsell_0.5.0               DelayedArray_0.11.2        
## [23] compiler_3.6.0              xfun_0.8                   
## [25] pkgconfig_2.0.2             htmltools_0.3.6            
## [27] tidyselect_0.2.5            SummarizedExperiment_1.15.5
## [29] tibble_2.1.3                GenomeInfoDbData_1.2.1     
## [31] bookdown_0.11               codetools_0.2-16           
## [33] matrixStats_0.54.0          XML_3.98-1.20              
## [35] fansi_0.4.0                 crayon_1.3.4               
## [37] withr_2.1.2                 GenomicAlignments_1.21.4   
## [39] bitops_1.0-6                grid_3.6.0                 
## [41] gtable_0.3.0                magrittr_1.5               
## [43] scales_1.0.0                cli_1.1.0                  
## [45] stringi_1.4.3               vctrs_0.1.0                
## [47] tools_3.6.0                 Biobase_2.45.0             
## [49] glue_1.3.1                  purrr_0.3.2                
## [51] hms_0.4.2                   yaml_2.2.0                 
## [53] colorspace_1.4-1            knitr_1.23