## ----setup, include = FALSE--------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>", crop = NULL ## Related to https://stat.ethz.ch/pipermail/bioc-devel/2020-April/016656.html ) ## ----vignetteSetup, echo=FALSE, message=FALSE, warning = FALSE---------------- ## Bib setup library("RefManageR") ## Write bibliography information bib <- c( R = citation(), BiocFileCache = citation("BiocFileCache")[1], BiocStyle = citation("BiocStyle")[1], dplyr = citation("dplyr")[1], DropletUtils = citation("DropletUtils")[1], ggplot2 = citation("ggplot2")[1], imager = citation("imager")[1], knitr = citation("knitr")[1], pkgcond = citation("pkgcond")[1], readr = citation("readr")[1], RefManageR = citation("RefManageR")[1], rjson = citation("rjson")[1], rmarkdown = citation("rmarkdown")[1], S4Vectors = citation("S4Vectors")[1], sessioninfo = citation("sessioninfo")[1], Seurat = citation("Seurat")[1], SpatialExperiment = citation("SpatialExperiment")[1], spatialLIBD = citation("spatialLIBD")[1], stringr = citation("stringr")[1], SummarizedExperiment = citation("SummarizedExperiment")[1], testthat = citation("testthat")[1], visiumStitched = citation("visiumStitched")[1], xml2 = citation("xml2")[1] ) ## ----"install", eval = FALSE-------------------------------------------------- # if (!requireNamespace("BiocManager", quietly = TRUE)) { # install.packages("BiocManager") # } # # BiocManager::install("visiumStitched") ## ----"citation"--------------------------------------------------------------- ## Citation info citation("visiumStitched") ## ----"start", message=FALSE, warning=FALSE------------------------------------ library("SpatialExperiment") library("visiumStitched") library("dplyr") library("spatialLIBD") library("BiocFileCache") library("ggplot2") ## ----"sample_info"------------------------------------------------------------ ## Create initial sample_info sample_info <- data.frame( group = "Br2719", capture_area = c("V13B23-283_A1", "V13B23-283_C1", "V13B23-283_D1") ) ## Initial sample_info sample_info ## ----"spaceranger_dir"-------------------------------------------------------- ## Download example SpaceRanger output files sr_dir <- tempdir() temp <- unzip(spatialLIBD::fetch_data("visiumStitched_brain_spaceranger"), exdir = sr_dir ) sample_info$spaceranger_dir <- file.path( sr_dir, sample_info$capture_area, "outs", "spatial" ) ## Sample_info with paths to SpaceRanger output directories sample_info ## ----"rescale_inputs"--------------------------------------------------------- # Generate rescaled approximately high-resolution images sample_info <- rescale_fiji_inputs(sample_info, out_dir = tempdir()) ## Sample_info with output directories sample_info ## ----"fiji_out"--------------------------------------------------------------- fiji_dir <- tempdir() temp <- unzip(fetch_data("visiumStitched_brain_Fiji_out"), exdir = fiji_dir) sample_info$fiji_xml_path <- temp[grep("xml$", temp)] sample_info$fiji_image_path <- temp[grep("png$", temp)] ## ----"print_info"------------------------------------------------------------- ## Complete sample_info sample_info ## ----"prep_fiji"-------------------------------------------------------------- ## Prepare the Fiji coordinates and images. ## These functions return the file paths to the newly-created files that follow ## the standard directory structure from SpaceRanger (10x Genomics) spe_input_dir <- tempdir() prep_fiji_coords(sample_info, out_dir = spe_input_dir) prep_fiji_image(sample_info, out_dir = spe_input_dir) ## ----"gtf"-------------------------------------------------------------------- ## Download the Gencode v32 GTF file which is the closest one to the one ## that was used with SpaceRanger. Note that SpaceRanger GTFs are available at ## https://cf.10xgenomics.com/supp/cell-exp/refdata-gex-GRCh38-2024-A.tar.gz ## but is too large for us to download here since it includes many other files ## we don't need right now. ## However, ideally you would adapt this code and use the actual GTF file you ## used when running SpaceRanger. bfc <- BiocFileCache::BiocFileCache() gtf_cache <- bfcrpath( bfc, paste0( "ftp://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/", "release_32/gencode.v32.annotation.gtf.gz" ) ) ## ----"build_SpatialExperiment"------------------------------------------------ ## Now we can build the SpatialExperiment object. We'll later explore error ## metrics related to computing new array coordinates, and thus specify ## 'calc_error_metrics = TRUE'. spe <- build_SpatialExperiment( sample_info, coords_dir = spe_input_dir, reference_gtf = gtf_cache, calc_error_metrics = TRUE ) ## The images in this example data have to be mirrored across the horizontal axis. spe <- SpatialExperiment::mirrorObject(spe, axis = "h") ## Explore stitched spe object spe ## ----"exclude_overlapping"---------------------------------------------------- ## Examine spots to exclude for plotting table(spe$exclude_overlapping) ## ----"explore_coords", fig.height = 4----------------------------------------- ## Show combined raw expression of white-matter marker genes wm_genes <- rownames(spe)[ match(c("MBP", "GFAP", "PLP1", "AQP4"), rowData(spe)$gene_name) ] vis_gene(spe, geneid = wm_genes, assayname = "counts", is_stitched = TRUE) ## ----"array_plot_orig"-------------------------------------------------------- ## Plot positions of default array coordinates, before overwriting with more ## meaningful values. Use custom colors for each capture area ca_colors <- c("#A33B20", "#e7bb41", "#3d3b8e") names(ca_colors) <- c("V13B23-283_C1", "V13B23-283_D1", "V13B23-283_A1") colData(spe) |> as_tibble() |> filter(in_tissue) |> ggplot( mapping = aes( x = array_row_original, y = array_col_original, color = capture_area ) ) + geom_point(alpha = 0.3) + scale_color_manual(values = ca_colors) ## ----"array_plot_after"------------------------------------------------------- ## Plot positions of redefined array coordinates colData(spe) |> as_tibble() |> filter(in_tissue) |> ggplot( mapping = aes( x = array_row, y = array_col, color = capture_area ) ) + geom_point(alpha = 0.3) + scale_color_manual(values = ca_colors) ## ----"euclidean_error"-------------------------------------------------------- # Explore the distribution of Euclidean error colData(spe) |> as_tibble() |> ggplot(mapping = aes(x = 0, y = euclidean_error)) + geom_boxplot() ## ----"shared_neighbors"------------------------------------------------------- # Explore the distribution of Euclidean error colData(spe) |> as_tibble() |> ggplot(mapping = aes(x = 0, y = shared_neighbors)) + geom_boxplot() ## ----"precast_k2_stitched", fig.height = 4------------------------------------ ## Grab SpatialExperiment with normalized counts spe_norm <- fetch_data(type = "visiumStitched_brain_spe") assayNames(spe_norm) ## PRECAST k = 2 clusters with our manually chosen colors vis_clus( spe_norm, clustervar = "precast_k2_stitched", is_stitched = TRUE, colors = c( "1" = "gold", "2" = "darkblue", "NA" = "white" ), spatial = FALSE ) ## ----"precast_k4_stitched", fig.height = 4------------------------------------ ## PRECAST results already available in this example data vars <- colnames(colData(spe_norm)) vars[grep("precast", vars)] ## PRECAST k = 4 clusters with default cluster colors vis_clus( spe_norm, clustervar = "precast_k4_stitched", is_stitched = TRUE, spatial = FALSE ) ## ----createVignette, eval=FALSE----------------------------------------------- # ## Create the vignette # library("rmarkdown") # system.time(render("visiumStitched.Rmd", "BiocStyle::html_document")) # # ## Extract the R code # library("knitr") # knit("visiumStitched.Rmd", tangle = TRUE) ## ----reproduce3, echo=FALSE------------------------------------------------------------------------------------------- ## Session info library("sessioninfo") options(width = 120) session_info() ## ----vignetteBiblio, results = "asis", echo = FALSE, warning = FALSE, message = FALSE--------------------------------- ## Print bibliography PrintBibliography(bib, .opts = list(hyperlink = "to.doc", style = "html"))