knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  fig.path = "man/figures/README-",
  out.width = "100%"
)

disscat

The goal of disscat is to quantify the differences between categorical factors in single cell RNA sequencing data.

Installation

The development version of this package is available from GitHub with:

# install.packages("devtools")
devtools::install_github("sbrn3/disscat")

Example

For full tutorials on importing data, integration, normalisation, visualisation, pseudotime analysis and distance analysis have a look at the vignettes.

In this example dataset there are two groups: cells that were stimulated with interferon beta("STIM") and control cells("CTRL"). In our analysis we will be trying to quantify the differences between these two groups. Additionally there are a number of different cell types so we can look at which cell types seem to be most effected by interferon beta.

disscat is built on top of Seurat. It just needs a matrix of RNA counts for every cell and gene. Here we install an example dataset from the SeuratData package.

# Import disscat
library(disscat)
library(Seurat)
library(SeuratData)
library(ggplot2)

# Download the data
InstallData("ifnb")

# load the data
data("ifnb")

# Subset ifnb
ifnb <- subset(ifnb, cells = sample(x = rownames(ifnb@meta.data), size = 2000))

# View the S4 Seurat object
ifnb

Normalisation and dimensionality reduction

# Normalise the data
ifnb <- Seurat::NormalizeData(ifnb)

# Find the variable features  
ifnb <- FindVariableFeatures(ifnb, selection.method = "vst", nfeatures = 2000)

# Scale data 
ifnb <- ScaleData(ifnb, features = rownames(ifnb))

# Run PCA
ifnb <- RunPCA(ifnb, npcs = 10, verbose = FALSE)

We can now calculate the distance between two groups using the average linkage distance method (UPGMA).

# Calculate Average linkage distance
ifnb <- AverageDistance(ifnb,
                        group = "stim",
                        reduction = "pca",
                        dims = 1:4,
                        distance = "euclidean",
                        split_by = "seurat_annotations")

And plot all the cell types next to each other to see which ones are most affected by the interferon treatment.

PlotAverageDistance(seurat_object = ifnb,
                    group = "stim",
                    group_start = "CTRL",
                    group_destination = "STIM",
                    split_by = "seurat_annotations",
                    error_bars = "sd",
                    mode = "bar",
                    rotate_x = 45) +
    theme(axis.text.x = element_text(angle = 45, hjust = 1))


sbrn3/disscat documentation built on Dec. 12, 2019, 7:54 a.m.