Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rcannood/SCORPIUS
Linear trajectory inference for single-cell RNA-seq
https://github.com/rcannood/SCORPIUS
Last synced: 23 days ago
JSON representation
Linear trajectory inference for single-cell RNA-seq
- Host: GitHub
- URL: https://github.com/rcannood/SCORPIUS
- Owner: rcannood
- Created: 2015-12-19T17:52:18.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2024-04-17T16:41:26.000Z (3 months ago)
- Last Synced: 2024-05-28T14:06:50.645Z (about 1 month ago)
- Language: R
- Homepage: http://rcannood.github.io/SCORPIUS/
- Size: 72.4 MB
- Stars: 56
- Watchers: 5
- Forks: 16
- Open Issues: 13
-
Metadata Files:
- Readme: README.Rmd
Lists
- awesome_single_cell - SCORPIUS - [R] - SCORPIUS an unsupervised approach for inferring developmental chronologies from single-cell RNA sequencing data. It accurately reconstructs trajectories for a wide variety of dynamic cellular processes. The performance was evaluated using a new, quantitative evaluation pipeline, comparing the performance of current state-of-the-art techniques on 10 publicly available single-cell RNA sequencing datasets. It automatically identifies marker genes, speeding up knowledge discovery. (Software packages / RNA-seq)
README
---
output:
github_document:
html_preview: false
editor_options:
chunk_output_type: console
bibliography: library.bib
---```{r setup1, include=FALSE}
knitr::opts_chunk$set(fig.path = "man/figures/README_", warning = FALSE, message = FALSE, error = FALSE, echo = TRUE)submission_to_cran <- TRUE
library(tidyverse)
```# SCORPIUS
[![R-CMD-check](https://github.com/rcannood/SCORPIUS/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/rcannood/SCORPIUS/actions/workflows/R-CMD-check.yaml)
[![CRAN_Status_Badge](https://www.r-pkg.org/badges/version/SCORPIUS)](https://cran.r-project.org/package=SCORPIUS)
[![Codecov test coverage](https://codecov.io/gh/rcannood/SCORPIUS/branch/master/graph/badge.svg)](https://app.codecov.io/gh/rcannood/SCORPIUS?branch=master)SCORPIUS an unsupervised approach for inferring linear developmental chronologies from single-cell
RNA sequencing data. In comparison to similar approaches, it has three main advantages:* **It accurately reconstructs linear dynamic processes.**
The performance was evaluated using a quantitative evaluation pipeline and
ten single-cell RNA sequencing datasets.
* **It automatically identifies marker genes, speeding up knowledge discovery.**
* **It is fully unsupervised.** Prior knowledge of the relevant marker genes or
cellular states of individual cells is not required.
News:* See `news(package = "SCORPIUS")` for a full list of changes to the package.
* Our preprint is on [bioRxiv](https://biorxiv.org/content/early/2016/10/07/079509)
[@Cannoodt2016].* Check out our [review](https://dx.doi.org/10.1038/s41587-019-0071-9) on Trajectory Inference methods
[@Saelens2019].
## Installing SCORPIUSYou can install:
* the latest released version from CRAN with
```R
install.packages("SCORPIUS")
```* the latest development version from GitHub with
```R
devtools::install_github("rcannood/SCORPIUS", build_vignettes = TRUE)
```If you encounter a bug, please file a minimal reproducible example on the [issues](https://github.com/rcannood/SCORPIUS/issues) page.
## Learning SCORPIUS
To get started, read the introductory example below, or read one of the vignettes containing more elaborate examples:
```{r vignettes, results='asis', echo=FALSE}
walk(
list.files("vignettes", pattern = "*.Rmd"),
function(file) {
title <-
read_lines(paste0("vignettes/", file)) %>%
keep(~grepl("^title: ", .)) %>%
gsub("title: \"(.*)\"", "\\1", .)
vignette_name <- gsub("\\.Rmd", "", file)
cat(
"* ", title, ": \n",
"`vignette(\"", vignette_name, "\", package=\"SCORPIUS\")`\n",
sep = ""
)
}
)
```## Introductory example
```{r, echo=F}
set.seed(1)
```This section describes the main workflow of SCORPIUS without going in depth in the R code. For a more detailed explanation, see the vignettes listed below.
To start using SCORPIUS, simply write:
```{r libraries, message=FALSE}
library(SCORPIUS)
```The `ginhoux` dataset [@Schlitzer2015] contains 248 dendritic cell progenitors in one of three cellular cellular states: MDP, CDP or PreDC. Note that this is a reduced version of the dataset, for packaging reasons. See ?ginhoux for more info.
```{r load_ginhoux}
data(ginhoux)
expression <- ginhoux$expression
group_name <- ginhoux$sample_info$group_name
```With the following code, SCORPIUS reduces the dimensionality of the dataset and provides a visual overview of the dataset.
In this plot, cells that are similar in terms of expression values will be placed closer together than cells with dissimilar expression values.```{r reduce_dimensionality}
space <- reduce_dimensionality(expression, "spearman")
draw_trajectory_plot(space, group_name, contour = TRUE)
```To infer and visualise a trajectory through these cells, run:
```{r infer_trajectory}
traj <- infer_trajectory(space)
draw_trajectory_plot(space, group_name, traj$path, contour = TRUE)
```To identify candidate marker genes, run:
```{r find_tafs, message=F, warning=F}
# warning: setting num_permutations to 10 requires a long time (~30min) to run!
# set it to 0 and define a manual cutoff for the genes (e.g. top 200) for a much shorter execution time.
gimp <- gene_importances(
expression,
traj$time,
num_permutations = 10,
num_threads = 8,
ntree = 10000,
ntree_perm = 1000
)
```To select the most important genes and scale its expression, run:
```{r calculate_pvalue, message=F, warning=F}
gimp$qvalue <- p.adjust(gimp$pvalue, "BH", length(gimp$pvalue))
gene_sel <- gimp$gene[gimp$qvalue < .05]
expr_sel <- scale_quantile(expression[,gene_sel])
``````{r echo=F}
# reverse the trajectory. This does not change the results in any way,
# other than the heatmap being ordered more logically.
# traj <- reverse_trajectory(traj)
```To visualise the expression of the selected genes, use the `draw_trajectory_heatmap` function.
```{r visualise_tafs, fig.keep='first'}
draw_trajectory_heatmap(expr_sel, traj$time, group_name)
```Finally, these genes can also be grouped into modules as follows:
```{r moduled_tafs, fig.keep='first'}
modules <- extract_modules(scale_quantile(expr_sel), traj$time, verbose = F)
draw_trajectory_heatmap(expr_sel, traj$time, group_name, modules)
```## References