library('htmlTable')
make_list <- function(items) {
  paste0("<ul>", sprintf('<li>%s</li>', items), '</ul>', collapse = '')
}
make_href <- function(url, text){
  paste0("<div style='text-align:center; font-size:large; font-weight:bold'><a href=", url ,">", text, "</a></div>")
}
make_href2 <- function(url, text){
  paste0("<a href=", url ,">", text, "</a>")
}
process_entry <- function(dat) {
  if (grepl(pattern = "https://satijalab.org/img/vignette_images", x = dat$image)) {
    img <- paste0('![](', dat$image, '){width=3000px}')
  } else if (grepl(pattern = "assets/", x= dat$image)) {
    img <- paste0('![](', dat$image, '){width=3000px}') 
  } else {
    img <- paste0('![](', '../output/images/', dat$image, '){width=3000px}')
  }
  if (grepl(pattern = "https://satijalab.org/", x = dat$name)) {
    link <- dat$name
  } else {
    link <- paste0(dat$name, ".html")
  }
  go.button <- paste0('<a class="btn btn-primary" href="', link, '" role="button" style="width:100%">GO</a>')
  data.frame(
    title = make_href(url = link, text = dat$title),
    img = img,
    desc = dat$summary,
    btn = go.button
  )
}
process_wrapper_entry <- function(dat) {
  data.frame(
    Package = dat$name,
    Vignette = make_href2(url = dat$link, text = dat$title),
    Reference = make_href2(url = dat$reference, text = dat$citation),
    Source = make_href2(url = dat$source, text = dat$source)
  )
}
make_vignette_card_section <- function(vdat, cat) {
  vignettes <- vdat[[cat]]$vignettes
  dat <- data.frame(title = character(), img = character(), desc = character())
  for (v in 1:length(x = vignettes)) {
    dat <- rbind(dat, process_entry(vignettes[[v]]))
    if(nrow(x = dat) == 3 | v == length(x = vignettes)){
      colnames(dat) <- NULL
      dat <- t(dat)
      if (ncol(x = dat) == 2) {
        print(htmlTable(
          dat, 
          align = '|l|l|', 
          css.cell = "padding-left: .75em; width: 50%", 
          css.class = "two-column-htmltable"
        ))
      } else if (ncol(x = dat) == 1){
        print(htmlTable(
          dat, 
          align = '|l|', 
          css.cell = "padding-left: .75em; width: 100%", 
          css.class = "one-column-htmltable"
        ))
      } else {
        print(htmlTable(
          dat, 
          align = '|l|l|l|', 
          css.cell = "padding-left: .75em; width: 30%"
        ))
      }
      dat <- data.frame(title = character(), img = character(), desc = character())
    }
  }
}
library(yaml)
vdat <- read_yaml(file = "vignettes_v5_new.yaml")

```{=html}

We provide a series of vignettes, tutorials, and analysis walkthroughs to help users get started with Seurat. You can also check out our [Reference page](../reference/index.html) which contains a full list of functions available to users. 

Our previous Get Started page for Seurat v4 is archived [here](get_started.html). 

# Introductory Vignettes

For new users of Seurat, we suggest starting with a guided walk through of a dataset of 2,700 Peripheral Blood Mononuclear Cells (PBMCs) made publicly available by 10X Genomics. This tutorial implements the major components of a standard unsupervised clustering workflow including QC and data filtration, calculation of high-variance genes, dimensional reduction, graph-based clustering, and the identification of cluster markers. We provide additional vignettes introducing visualization techniques in Seurat, the sctransform normalization workflow, and storage/interaction with multimodal datasets. We also provide an 'essential commands cheatsheet' as a quick reference.

```r
make_vignette_card_section(vdat = vdat, cat = 1)

scRNA Data Integration

We have developed computational methods for integrated analysis of single-cell datasets generated across different conditions, technologies, or species. As an example, we provide a guided walk through for integrating and comparing PBMC datasets generated under different stimulation conditions. We provide additional vignettes demonstrating how to leverage an annotated scRNA-seq reference to map and label cells from a query, and to efficiently integrate large datasets.

make_vignette_card_section(vdat = vdat, cat = 2)

Multi-assay data

Seurat also offers support for a suite of statistical methods for analyzing multimodal single-cell data. These include methods to integrate modalities that are simultaneously measured in the same cells, modalities that are measured in different cells, and techniques to analyze pooled CRISPR screens.

make_vignette_card_section(vdat = vdat, cat = 3)

Flexible analysis of massively scalable datasets

In Seurat v5, we introduce new infrastructure and methods to analyze, interpret, and explore datasets that extend to millions of cells. We introduce support for 'sketch-based' techniques, where a subset of representative cells are stored in memory to enable rapid and iterative exploration, while the remaining cells are stored on-disk. Users can flexibly switch between both data representations, and we leverage the BPCells package from Ben Parks in the Greenleaf lab to enable high-performance analysis of disk-backed data.

The vignettes below demonstrate three scalable analyses in Seurat v5: Unsupervised clustering analysis of a large dataset (1.3M neurons), Unsupervised integration and comparison of 1M PBMC from healthy and diabetic patients, and Supervised mapping of 1.5M immune cells from healthy and COVID donors. In all cases, the vignettes perform these analyses without ever loading the full datasets into memory.

make_vignette_card_section(vdat = vdat, cat = 4)

Spatial analysis

These vignettes will help introduce users to the analysis of spatial datasets in Seurat v5, including technologies that leverage sequencing-based readouts, as well as technologies that leverage in-situ imaging-based readouts. The vignettes introduce data from multiple platforms including 10x Visium, SLIDE-seq, Vizgen MERSCOPE, 10x Xenium, Nanostring CosMx, and Akoya CODEX.

make_vignette_card_section(vdat = vdat, cat = 5)

Other

Here we provide a series of short vignettes to demonstrate a number of features that are commonly used in Seurat. We've focused the vignettes around questions that we frequently receive from users.

make_vignette_card_section(vdat = vdat, cat = 6)

SeuratWrappers

In order to facilitate the use of community tools with Seurat, we provide the Seurat Wrappers package, which contains code to run other analysis tools on Seurat objects. For the initial release, we provide wrappers for a few packages in the table below but would encourage other package developers interested in interfacing with Seurat to check out our contributor guide here.

library(knitr)
library(kableExtra)
cat <- 7
vignettes <- vdat[[cat]]$vignettes
dat <- data.frame(Package = character(),  Vignette = character(), Reference = character(), Source = character())
for (v in 1:length(x = vignettes)) {
  dat <- rbind(dat, process_wrapper_entry(vignettes[[v]]))
}
dat %>%
  kable(format = "html", escape = FALSE) %>%
  kable_styling(bootstrap_options = c("striped", "hover"))


satijalab/seurat documentation built on March 20, 2024, 8:41 p.m.