Quick Start Guide

Introduction

scFOCAL (Single-Cell Framework for Omics-Connectivity and Analysis via L1000) is a computational framework designed to bridge single-cell transcriptomics with pharmacological knowledge. By integrating drug-response transcriptional consensus signatures (TCS) from the LINCS L1000 database with single-cell RNA sequencing data, scFOCAL enables:

  • Identification of drug-sensitive and drug-resistant cell populations
  • Discovery of combination therapy candidates
  • Analysis of tumor heterogeneity in drug response

This vignette provides a quick introduction to get you started with scFOCAL.

Installation

From GitHub

# Install devtools if needed
if (!requireNamespace("devtools", quietly = TRUE))
    install.packages("devtools")

devtools::install_github("Zaoqu-Liu/scFOCAL")

Dependencies

scFOCAL requires several Bioconductor packages:

if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")

BiocManager::install(c("MAST", "edgeR", "ComplexHeatmap", "EnhancedVolcano"))

Note: Seurat is required but listed as a suggested package:

# For Seurat v4 (recommended)
remotes::install_version("Seurat", version = "4.4.0")

# Or for Seurat v5
install.packages("Seurat")

Launching scFOCAL

Once installed, launching the interactive Shiny application is straightforward:

library(scFOCAL)

# Launch the GUI
runscFOCAL()

This will open the scFOCAL interface in your default web browser.

Workflow Overview

The scFOCAL workflow consists of five main steps:

Step 1: Data Upload

Upload your preprocessed Seurat object (.rds format) containing:

  • Normalized expression data
  • Cell type annotations in metadata
  • Dimensional reduction (UMAP/tSNE)

Step 2: Pre-processing

Define your analysis groups:

  • Control populations: Non-malignant cells (e.g., immune cells, stromal cells)
  • Test populations: Tumor cells of interest

Step 3: Disease Signature Generation

Compute cell-type-specific differential expression signatures using the MAST statistical framework:

Step 4: Drug-Cell Connectivity Analysis

Calculate Spearman correlations between single-cell expression profiles and L1000 drug signatures:

Step 5: Results Analysis

Explore differential connectivity and identify combination therapy candidates:

Built-in Data

scFOCAL includes pre-processed LINCS L1000 data:

library(scFOCAL)

# View available compounds
head(L1000_compounds)

# View L1000 gene list
head(L1000_genes)

# LINCS Response Signatures (1679 compounds × 978 genes)
dim(LINCS.ResponseSigs)

Example Dataset

Download our example dataset to test scFOCAL:

Next Steps

For more detailed information, see:

Citation

If you use scFOCAL in your research, please cite:

Suter RK, Jermakowicz AM, Veeramachaneni R, et al. Drug and single-cell gene expression integration identifies sensitive and resistant glioblastoma cell populations. Nature Communications 17, 99 (2026). https://doi.org/10.1038/s41467-025-67783-5

Session Info

sessionInfo()
## R version 4.6.1 (2026-06-24)
## Platform: x86_64-pc-linux-gnu
## Running under: Ubuntu 26.04 LTS
## 
## Matrix products: default
## BLAS:   /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 
## LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.32.so;  LAPACK version 3.12.0
## 
## locale:
##  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
##  [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
##  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
##  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
##  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
## 
## time zone: Etc/UTC
## tzcode source: system (glibc)
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] tidyr_1.3.2    dplyr_1.2.1    ggplot2_4.0.3  rmarkdown_2.31
## 
## loaded via a namespace (and not attached):
##  [1] Matrix_1.7-5       gtable_0.3.6       jsonlite_2.0.0     compiler_4.6.1    
##  [5] tidyselect_1.2.1   gridExtra_2.3.1    jquerylib_0.1.4    splines_4.6.1     
##  [9] scales_1.4.0       yaml_2.3.12        fastmap_1.2.0      lattice_0.22-9    
## [13] R6_2.6.1           labeling_0.4.3     generics_0.1.4     knitr_1.51        
## [17] tibble_3.3.1       maketools_1.3.2    bslib_0.11.0       pillar_1.11.1     
## [21] RColorBrewer_1.1-3 rlang_1.2.0        cachem_1.1.0       xfun_0.59         
## [25] sass_0.4.10        sys_3.4.3          S7_0.2.2           otel_0.2.0        
## [29] cli_3.6.6          mgcv_1.9-4         withr_3.0.3        magrittr_2.0.5    
## [33] digest_0.6.39      grid_4.6.1         nlme_3.1-169       lifecycle_1.0.5   
## [37] vctrs_0.7.3        evaluate_1.0.5     glue_1.8.1         farver_2.1.2      
## [41] buildtools_1.0.0   purrr_1.2.2        tools_4.6.1        pkgconfig_2.0.3   
## [45] htmltools_0.5.9