Skip to contents

Overview

SCENT is an R package for estimating differentiation potency of single cells from scRNA-Seq data using signaling entropy on protein-protein interaction (PPI) networks. The package implements the computational framework described in Teschendorff & Enver (2017), with performance optimizations through C++ (Rcpp/RcppArmadillo).

πŸ“– Documentation: https://zaoqu-liu.github.io/SCENT/

Theoretical Background

Signaling Entropy Rate (SR)

The differentiation potency of a cell can be quantified by the signaling entropy rate, which measures the β€œrandomness” of information flow through the protein interaction network. The mathematical formulation is:

SR=1SRmaxβˆ‘jΟ€jSjSR = \frac{1}{SR_{max}} \sum_{j} \pi_j S_j

where:

  • Ο€j\pi_j: Stationary distribution at gene jj, computed as Ο€j=xjβ‹…(𝐀𝐱)jZ\pi_j = \frac{x_j \cdot (\mathbf{A}\mathbf{x})_j}{Z}
  • SjS_j: Local entropy at gene jj, defined as Sj=βˆ’βˆ‘kPjklog⁑PjkS_j = -\sum_k P_{jk} \log P_{jk}
  • PjkP_{jk}: Transition probability from gene jj to kk, given by Pjk=Ajkβ‹…xkβˆ‘lAjlβ‹…xlP_{jk} = \frac{A_{jk} \cdot x_k}{\sum_l A_{jl} \cdot x_l}
  • SRmaxSR_{max}: Maximum entropy rate, equal to log⁑(Ξ»1)\log(\lambda_1) where Ξ»1\lambda_1 is the largest eigenvalue of 𝐀\mathbf{A}

Biological Interpretation

Cell State SR Value Network Signaling
Pluripotent (stem-like) High Uniform flow through multiple pathways
Differentiated Low Concentrated flow through specific pathways

Installation

install.packages("SCENT", repos = c(
  "https://zaoqu-liu.r-universe.dev",
  "https://cloud.r-project.org"
))

From GitHub

# Install dependencies
install.packages(c("Rcpp", "RcppArmadillo", "Matrix", "igraph"))

# Install SCENT
devtools::install_github("Zaoqu-Liu/SCENT")

System Requirements

Platform Requirement
macOS xcode-select --install
Windows Rtools
Linux Standard build tools (gcc, g++)

Quick Start

library(SCENT)

# Load built-in PPI network (8,434 genes, 303,600 interactions)
data(net13Jun12.m)

# Load your expression matrix (genes Γ— cells)
# For Seurat objects: exp <- GetAssayData(seurat_obj, layer = "data")

# Method 1: CCAT (fast approximation)
ccat_scores <- CompCCAT(exp, net13Jun12.m)

# Method 2: SR (full computation)
integ <- DoIntegPPI(exp, net13Jun12.m)
sr_result <- CompSRana(integ, local = TRUE)

# Access results
sr_scores <- sr_result$SR           # Global entropy rate per cell
local_entropy <- sr_result$locS     # Gene-level local entropy
stationary <- sr_result$inv         # Stationary distribution

Methods Comparison

Method Algorithm Speed Accuracy Use Case
SR Full entropy computation ~5s / 100 cells Gold standard Publication, validation
CCAT Correlation with degree ~0.1s / 100 cells Approximation (r β‰ˆ 0.78) Screening, large datasets

Tutorials

Tutorial Description
Quick Start Basic usage and workflow
Algorithm Mathematical background and derivation
Visualization Publication-quality figures
Benchmark Performance analysis

Citation

If you use SCENT in your research, please cite:

Teschendorff AE, Enver T. Single-cell entropy for accurate estimation of differentiation potency from a cell’s transcriptome. Nature Communications. 2017;8:15599. doi:[10.1038/ncomms15599](https://doi.org/10.1038/ncomms15599)

@article{teschendorff2017single,
  title={Single-cell entropy for accurate estimation of differentiation 
         potency from a cell's transcriptome},
  author={Teschendorff, Andrew E and Enver, Tariq},
  journal={Nature Communications},
  volume={8},
  pages={15599},
  year={2017},
  doi={10.1038/ncomms15599}
}

Authors

  • Zaoqu Liu β€” Maintainer, C++ optimization (GitHub Β· ORCID)
  • Andrew E Teschendorff β€” Original algorithm developer