Home

Awesome

<!-- README.md is generated from README.Rmd. Please edit that file -->

TinGa

This is a repository hosting the R implementation of TinGa [1], a trajectory inference method based on the Growing Neural Gas algorithm [2].

Getting Started

These instructions show how to use TinGa on an example single cell dataset and how to visualise its results using the dynplot package hosted on github (see https://github.com/dynverse/dynplot)

Installing

TinGa can be used in the dynverse framework (see https://dynverse.org/users/2-quick_start/), which offers a wide range of functions for visualisation of trajectories and genes of interest in single cell datasets.

TInGa, dynwrap and dynplot can be installed in R as follows:

install.packages("devtools")
devtools::install_github("Helena-todd/TInGa/package")

Usage of TInGa, together with dynwrap and dynplot

Any single cell dataset can be wrapped into an object for further use with dyn- packages. Two matrices need to be provided: * the counts matrix, of the form cells * features * the normalised expression matrix, of the form cells * features

We provide an example dataset

library(TInGa)
library(tidyverse)
library(dyno)

data <- wrap_expression(
  expression = TInGa::data_exp,
  counts = TInGa::data_counts
)

Apply TinGa to the data

traj <- infer_trajectory(
  data, 
  method = gng_param2(), 
  seed = 42
)

Visualise the resulting trajectory using dynplot

plot_dimred(
  traj,
  label_milestones = TRUE
)
<img src="results/Readme_figures/unnamed-chunk-4-1.png" width="100%" />

The features that vary the most along the trajectory can be identified and plotted in the form of a heatmap using dynplot. If the trajectory contains branching, the different branches will be represented separately in the heatmap

plot_heatmap(
  traj, 
  expression_source = data$expression
)
#> Warning: `as_data_frame()` is deprecated as of tibble 2.0.0.
#> Please use `as_tibble()` instead.
#> The signature and semantics have changed, see `?as_tibble`.
#> This warning is displayed once every 8 hours.
#> Call `lifecycle::last_warnings()` to see where this warning was generated.
#> Warning: `data_frame()` is deprecated as of tibble 1.1.0.
#> Please use `tibble()` instead.
#> This warning is displayed once every 8 hours.
#> Call `lifecycle::last_warnings()` to see where this warning was generated.
<img src="results/Readme_figures/unnamed-chunk-5-1.png" width="100%" />

Visualise the expression of one feature of interest in the trajectory

plot_dimred(
  traj, 
  color_cells = "feature", 
  expression_source = data$expression, 
  feature_oi = "MT1E"
)
<img src="results/Readme_figures/unnamed-chunk-6-1.png" width="100%" />

TinGa with a prior dimensionality reduction

Use the following code to run TinGa on a custom dimensionality reduction (e.g. UMAP, tSNE, PCA, …) provided by you.

# calculate a PCA
dimred <- prcomp(TInGa::data_exp)$x[,1:2]

data_with_prior <-
  wrap_expression(
    expression = TInGa::data_exp,
    counts = TInGa::data_counts
  ) %>%
  add_prior_information(
    dimred = dimred
  )

Apply TinGa to custom dimred

traj <- infer_trajectory(
  data_with_prior, 
  method = gng_param2(), 
  give_priors = "dimred",
  seed = 42
)

Visualise the resulting trajectory using dynplot

plot_dimred(
  traj,
  label_milestones = TRUE
)
<img src="results/Readme_figures/unnamed-chunk-9-1.png" width="100%" />

Acknowledgments

References

[1] Helena Todorov, Robrecht Cannoodt, Wouter Saelens, Yvan Saeys (2020) TinGa: fast and flexible trajectory inference with Growing Neural Gas, Bioinformatics 36 i66–i74, https://doi.org/10.1093/bioinformatics/btaa463.

[2]: Fritzke, B. (1995) A growing neural gas network learns topologies, Advances in Neural Information Processing Systems 7, 625-632.