Load packages

library( "Seurat" )
library( "scater" )
library( "scran" )

library( "tidyverse" )

Load data

Seurat -> SingleCellExperiment

sce <- readRDS( "/home/idies/workspace/practical_genomics/day1/retina.rds" )
sce <- as.SingleCellExperiment( sce )

Check data

1. assay()

Introduce

  • How to access the expression data?
help( assay )
m_assay <- assay( , "logcounts" )
  • What class of object is this?
class(  )
  • How large is it?
dim(  )
  • How to subset first 10 rows, first 3 columns?
m_assay[ ,  ]

Subset RHO

x_rho <- m_assay[ , ]
( x_rho )
( x_rho )
hist(  )
summary(  )

Subset RHO, VIM

goi <- c( "RHO", "VIM" )
x_rhovim <- m_assay[ , ]
( x_rhovim )
( x_rhovim )
( x_rhovim )

ggplot RHO, VIM

  • t(), data.frame(), rownames_to_column(), pivot_longer()
df_rhovim <- ( x_rhovim )
df_rhovim <- ( df_rhovim )
df_rhovim <- ( df_rhovim )
df_rhovim <- ( df_rhovim, cols=c( "RHO", "VIM" ) )
df_rhovim
ggplot(  ) +
  geom_histogram( aes(  ) ) +
  facet_wrap( vars() )

2. colData()

Introduce

  • How to access the cell metadata?
( colData )
meta <- colData(  )
  • What class of object is this?
( meta )
  • What is DFrame?
meta
data.frame(  )
  • How large is it?
( meta )
  • What categories exist?
colnames(  )

Subset rows

  • colData(), data.frame(), rownames_to_column()
df_meta <- ( sce ) %>%
  () %>%
  ()
df_meta
( df_meta )
df_meta[ ,  ]

Subset libraryID

table( df_meta$ )
df_fovea2 <- df_meta %>%
  filter( libraryID=="" )
df_fovea2
( df_fovea2 )
table( df_fovea2$ )

ggplot gene by cell_type

  • full_join(), filter()
df_rhovim_fovea2 <- df_rhovim %>%
  ( df_meta, by="rowname" ) %>%
  ( libraryID=="fovea_donor_2" )
df_rhovim_fovea2
  • geom_violin(), facet_wrap(), theme()
ggplot( df_rhovim_fovea2 ) +
  ( aes( cell_type, value ) ) +
  ( vars(name) ) +
  ( axis.text.x=element_text( angle=90 ) )

3. reducedDim()

Introduce

  • How to access the cluster visualization?
( reducedDim )
  • data.frame(), rownames_to_column()
df_umap <- reducedDim( sce, "" ) %>%
  () %>%
  ()
df_umap

ggplot cell_type

df_umap_meta <- full_join( , , by="rowname" )
df_umap_meta
ggplot(  ) +
  geom_point( aes( , , color= ) )

ggplot RHO

df_umap_rho <- full_join( , , by="rowname" ) %>%
  filter( name=="" )
df_umap_rho
ggplot(  ) +
  geom_point( aes( , , color= ) )

4. findMarkers()

Introduce

  • How to access differentially expressed genes?
( findMarkers )
  • Preview of findMarkers() syntax
colLabels( sce ) <- colData( sce )$
markers <- findMarkers(  )
  • What class of object is this?
( markers )
  • How large is it?
( markers )
  • Build up to data.frame( markers[[1]] )
markers

hist summary.logFC

markers[1]
df_markers_amacrine <- markers[[1]] %>%
  ()
df_markers_amacrine
hist( df_markers_amacrine$ )

plotUMAP markers

df_markers_amacrine %>%
  filter( summary.logFC >  )
help(  )
plotUMAP( sce, colour_by="MEG3", ="cell_type" )

Exercise 2

  1. Recreate plotUMAP() using ggplot2
    • Plot another gene, cell metadata
  2. Recreate plotExpression() using ggplot2
    • Plot another gene by cell metadata
  3. Adjust ggplot2 appearance
    • Add titles, customize x/y labels, theme
  4. Explore findMarkers() results
    • Use plotUMAP(), plotExpression()

Document software

sessionInfo()
LS0tCnRpdGxlIDogIkRheSAxIC8vIEhhbmRzLW9uIDIgLy8gRXhwbG9yZSBTaW5nbGVDZWxsRXhwZXJpbWVudCIKYXV0aG9yOiAiIgpkYXRlICA6ICIwNCBPY3RvYmVyIDIwMjEiCm91dHB1dDogCiAgaHRtbF9ub3RlYm9vazoKICAgIHRvYzogdHJ1ZQogICAgdG9jX2Zsb2F0OiB0cnVlCi0tLQoKIyBMb2FkIHBhY2thZ2VzCgpgYGB7ciBtZXNzYWdlPUZBTFNFfQpsaWJyYXJ5KCAiU2V1cmF0IiApCmxpYnJhcnkoICJzY2F0ZXIiICkKbGlicmFyeSggInNjcmFuIiApCgpsaWJyYXJ5KCAidGlkeXZlcnNlIiApCmBgYAoKIyBMb2FkIGRhdGEKCiMjIFNldXJhdCAtPiBTaW5nbGVDZWxsRXhwZXJpbWVudAoKYGBge3J9CnNjZSA8LSByZWFkUkRTKCAiL2hvbWUvaWRpZXMvd29ya3NwYWNlL3ByYWN0aWNhbF9nZW5vbWljcy9kYXkxL3JldGluYS5yZHMiICkKc2NlIDwtIGFzLlNpbmdsZUNlbGxFeHBlcmltZW50KCBzY2UgKQpgYGAKCiMjIENoZWNrIGRhdGEKCmBgYHtyfQoKYGBgCgojIDEuIGFzc2F5KCkKCiMjIEludHJvZHVjZQoKLSBIb3cgdG8gYWNjZXNzIHRoZSBleHByZXNzaW9uIGRhdGE/CgpgYGB7cn0KaGVscCggYXNzYXkgKQpgYGAKCmBgYHtyfQptX2Fzc2F5IDwtIGFzc2F5KCAsICJsb2djb3VudHMiICkKYGBgCgotIFdoYXQgY2xhc3Mgb2Ygb2JqZWN0IGlzIHRoaXM/CgpgYGB7cn0KY2xhc3MoICApCmBgYAoKLSBIb3cgbGFyZ2UgaXMgaXQ/CgpgYGB7cn0KZGltKCAgKQpgYGAKCi0gSG93IHRvIHN1YnNldCBmaXJzdCAxMCByb3dzLCBmaXJzdCAzIGNvbHVtbnM/CgpgYGB7cn0KbV9hc3NheVsgLCAgXQpgYGAKCiMjIFN1YnNldCBSSE8KCmBgYHtyfQp4X3JobyA8LSBtX2Fzc2F5WyAsIF0KYGBgCgpgYGB7cn0KKCB4X3JobyApCmBgYAoKYGBge3J9CiggeF9yaG8gKQpgYGAKCmBgYHtyfQpoaXN0KCAgKQpgYGAKCmBgYHtyfQpzdW1tYXJ5KCAgKQpgYGAKCiMjIFN1YnNldCBSSE8sIFZJTQoKYGBge3J9CmdvaSA8LSBjKCAiUkhPIiwgIlZJTSIgKQp4X3Job3ZpbSA8LSBtX2Fzc2F5WyAsIF0KYGBgCgpgYGB7cn0KKCB4X3Job3ZpbSApCmBgYAoKYGBge3J9CiggeF9yaG92aW0gKQpgYGAKCmBgYHtyfQooIHhfcmhvdmltICkKYGBgCgojIyBnZ3Bsb3QgUkhPLCBWSU0KCi0gYHQoKWAsIGBkYXRhLmZyYW1lKClgLCBgcm93bmFtZXNfdG9fY29sdW1uKClgLCBgcGl2b3RfbG9uZ2VyKClgCgpgYGB7cn0KZGZfcmhvdmltIDwtICggeF9yaG92aW0gKQpkZl9yaG92aW0gPC0gKCBkZl9yaG92aW0gKQpkZl9yaG92aW0gPC0gKCBkZl9yaG92aW0gKQpkZl9yaG92aW0gPC0gKCBkZl9yaG92aW0sIGNvbHM9YyggIlJITyIsICJWSU0iICkgKQpkZl9yaG92aW0KYGBgCgpgYGB7cn0KZ2dwbG90KCAgKSArCiAgZ2VvbV9oaXN0b2dyYW0oIGFlcyggICkgKSArCiAgZmFjZXRfd3JhcCggdmFycygpICkKYGBgCgojIDIuIGNvbERhdGEoKQoKIyMgSW50cm9kdWNlCgotIEhvdyB0byBhY2Nlc3MgdGhlIGNlbGwgbWV0YWRhdGE/CgpgYGB7cn0KKCBjb2xEYXRhICkKYGBgCgpgYGB7cn0KbWV0YSA8LSBjb2xEYXRhKCAgKQpgYGAKCi0gV2hhdCBjbGFzcyBvZiBvYmplY3QgaXMgdGhpcz8KCmBgYHtyfQooIG1ldGEgKQpgYGAKCi0gV2hhdCBpcyBERnJhbWU/CgpgYGB7cn0KbWV0YQpkYXRhLmZyYW1lKCAgKQpgYGAKCi0gSG93IGxhcmdlIGlzIGl0PwoKYGBge3J9CiggbWV0YSApCmBgYAoKLSBXaGF0IGNhdGVnb3JpZXMgZXhpc3Q/CgpgYGB7cn0KY29sbmFtZXMoICApCmBgYAoKIyMgU3Vic2V0IHJvd3MKCi0gYGNvbERhdGEoKWAsIGBkYXRhLmZyYW1lKClgLCBgcm93bmFtZXNfdG9fY29sdW1uKClgCgpgYGB7cn0KZGZfbWV0YSA8LSAoIHNjZSApICU+JQogICgpICU+JQogICgpCmRmX21ldGEKYGBgCgpgYGB7cn0KKCBkZl9tZXRhICkKYGBgCgpgYGB7cn0KZGZfbWV0YVsgLCAgXQpgYGAKCiMjIFN1YnNldCBsaWJyYXJ5SUQKCmBgYHtyfQp0YWJsZSggZGZfbWV0YSQgKQpgYGAKCmBgYHtyfQpkZl9mb3ZlYTIgPC0gZGZfbWV0YSAlPiUKICBmaWx0ZXIoIGxpYnJhcnlJRD09IiIgKQpkZl9mb3ZlYTIKYGBgCgpgYGB7cn0KKCBkZl9mb3ZlYTIgKQpgYGAKCmBgYHtyfQp0YWJsZSggZGZfZm92ZWEyJCApCmBgYAoKIyMgZ2dwbG90IGdlbmUgYnkgY2VsbF90eXBlCgotIGBmdWxsX2pvaW4oKWAsIGBmaWx0ZXIoKWAKCmBgYHtyfQpkZl9yaG92aW1fZm92ZWEyIDwtIGRmX3Job3ZpbSAlPiUKICAoIGRmX21ldGEsIGJ5PSJyb3duYW1lIiApICU+JQogICggbGlicmFyeUlEPT0iZm92ZWFfZG9ub3JfMiIgKQpkZl9yaG92aW1fZm92ZWEyCmBgYAoKLSBgZ2VvbV92aW9saW4oKWAsIGBmYWNldF93cmFwKClgLCBgdGhlbWUoKWAKCmBgYHtyfQpnZ3Bsb3QoIGRmX3Job3ZpbV9mb3ZlYTIgKSArCiAgKCBhZXMoIGNlbGxfdHlwZSwgdmFsdWUgKSApICsKICAoIHZhcnMobmFtZSkgKSArCiAgKCBheGlzLnRleHQueD1lbGVtZW50X3RleHQoIGFuZ2xlPTkwICkgKQpgYGAKCiMgMy4gcmVkdWNlZERpbSgpCgojIyBJbnRyb2R1Y2UKCi0gSG93IHRvIGFjY2VzcyB0aGUgY2x1c3RlciB2aXN1YWxpemF0aW9uPwoKYGBge3J9CiggcmVkdWNlZERpbSApCmBgYAoKLSBgZGF0YS5mcmFtZSgpYCwgYHJvd25hbWVzX3RvX2NvbHVtbigpYAoKYGBge3J9CmRmX3VtYXAgPC0gcmVkdWNlZERpbSggc2NlLCAiIiApICU+JQogICgpICU+JQogICgpCmRmX3VtYXAKYGBgCgojIyBnZ3Bsb3QgY2VsbF90eXBlCgpgYGB7cn0KZGZfdW1hcF9tZXRhIDwtIGZ1bGxfam9pbiggLCAsIGJ5PSJyb3duYW1lIiApCmRmX3VtYXBfbWV0YQpgYGAKCmBgYHtyfQpnZ3Bsb3QoICApICsKICBnZW9tX3BvaW50KCBhZXMoICwgLCBjb2xvcj0gKSApCmBgYAoKIyMgZ2dwbG90IFJITwoKYGBge3J9CmRmX3VtYXBfcmhvIDwtIGZ1bGxfam9pbiggLCAsIGJ5PSJyb3duYW1lIiApICU+JQogIGZpbHRlciggbmFtZT09IiIgKQpkZl91bWFwX3JobwpgYGAKCmBgYHtyfQpnZ3Bsb3QoICApICsKICBnZW9tX3BvaW50KCBhZXMoICwgLCBjb2xvcj0gKSApCmBgYAoKIyA0LiBmaW5kTWFya2VycygpCgojIyBJbnRyb2R1Y2UKCi0gSG93IHRvIGFjY2VzcyBkaWZmZXJlbnRpYWxseSBleHByZXNzZWQgZ2VuZXM/CgpgYGB7cn0KKCBmaW5kTWFya2VycyApCmBgYAoKLSBQcmV2aWV3IG9mIGZpbmRNYXJrZXJzKCkgc3ludGF4CgpgYGB7cn0KY29sTGFiZWxzKCBzY2UgKSA8LSBjb2xEYXRhKCBzY2UgKSQKbWFya2VycyA8LSBmaW5kTWFya2VycyggICkKYGBgCgotIFdoYXQgY2xhc3Mgb2Ygb2JqZWN0IGlzIHRoaXM/CgpgYGB7cn0KKCBtYXJrZXJzICkKYGBgCgotIEhvdyBsYXJnZSBpcyBpdD8KCmBgYHtyfQooIG1hcmtlcnMgKQpgYGAKCi0gQnVpbGQgdXAgdG8gYGRhdGEuZnJhbWUoIG1hcmtlcnNbWzFdXSApYAoKYGBge3J9Cm1hcmtlcnMKYGBgCgojIyBoaXN0IHN1bW1hcnkubG9nRkMKCmBgYHtyfQptYXJrZXJzWzFdCmBgYAoKYGBge3J9CmRmX21hcmtlcnNfYW1hY3JpbmUgPC0gbWFya2Vyc1tbMV1dICU+JQogICgpCmRmX21hcmtlcnNfYW1hY3JpbmUKYGBgCgpgYGB7cn0KaGlzdCggZGZfbWFya2Vyc19hbWFjcmluZSQgKQpgYGAKCiMjIHBsb3RVTUFQIG1hcmtlcnMKCmBgYHtyfQpkZl9tYXJrZXJzX2FtYWNyaW5lICU+JQogIGZpbHRlciggc3VtbWFyeS5sb2dGQyA+ICApCmBgYAoKYGBge3J9CmhlbHAoICApCmBgYAoKYGBge3IgZmlnLndpZHRoPTEwfQpwbG90VU1BUCggc2NlLCBjb2xvdXJfYnk9Ik1FRzMiLCA9ImNlbGxfdHlwZSIgKQpgYGAKCiMgRXhlcmNpc2UgMgoKMS4gUmVjcmVhdGUgcGxvdFVNQVAoKSB1c2luZyBnZ3Bsb3QyCiAgICAtIFBsb3QgYW5vdGhlciBnZW5lLCBjZWxsIG1ldGFkYXRhCjEuIFJlY3JlYXRlIHBsb3RFeHByZXNzaW9uKCkgdXNpbmcgZ2dwbG90MgogICAgLSBQbG90IGFub3RoZXIgZ2VuZSBieSBjZWxsIG1ldGFkYXRhCjEuIEFkanVzdCBnZ3Bsb3QyIGFwcGVhcmFuY2UKICAgIC0gQWRkIHRpdGxlcywgY3VzdG9taXplIHgveSBsYWJlbHMsIHRoZW1lCjEuIEV4cGxvcmUgZmluZE1hcmtlcnMoKSByZXN1bHRzCiAgICAtIFVzZSBwbG90VU1BUCgpLCBwbG90RXhwcmVzc2lvbigpCgojIERvY3VtZW50IHNvZnR3YXJlCgpgYGB7cn0Kc2Vzc2lvbkluZm8oKQpgYGAKCgo=