Infer gene regulatory networks (GRNs) de novo from single-cell RNA-seq data using pySCENIC. This workflow discovers transcription factor (TF) regulons directly from expression patterns and calculates cell-level TF activity scores.
Scanned 9/4/2026
Install to Claude Code
npx -y skills add gabrielmoreira/agent-skills-mirror --skill grn-pyscenic --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Grn Pyscenic?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/gabrielmoreira-grn-pyscenic)More formats (shields.io, HTML) on the badges page.
---
id: grn-pyscenic
name: Gene Regulatory Network Inference (pySCENIC)
category: transcriptomics
short-description: Infer transcription factor regulatory networks and cell-level TF activity from single-cell RNA-seq data.
detailed-description: Discover gene regulatory networks (GRNs) de novo from single-cell RNA-seq using pySCENIC. Identifies transcription factor (TF) regulons through co-expression analysis (GRNBoost2), validates with motif enrichment (cisTarget), and calculates cell-level TF activity scores (AUCell). Use when you need to discover TF-target relationships directly from your data, identify cell-type-specific regulatory programs, or score individual cells for TF activity. Requires 500+ cells for robust inference. Not recommended for bulk RNA-seq (use functional enrichment or curated network approaches instead). Computationally intensive, requires reference databases and 16GB+ RAM.
starting-prompt: Infer gene regulatory networks and TF activity from my single-cell RNA-seq data . .
---
# Gene Regulatory Network Inference (pySCENIC)
Infer gene regulatory networks (GRNs) de novo from single-cell RNA-seq data using pySCENIC. This workflow discovers transcription factor (TF) regulons directly from expression patterns and calculates cell-level TF activity scores.
## When to Use This Skill
Use pySCENIC GRN inference when you need to:
- ✅ **Discover TF-target relationships** de novo from single-cell RNA-seq data
- ✅ **Calculate cell-level TF activity** scores for regulatory programs
- ✅ **Identify cell-type-specific** transcriptional programs
- ✅ **Find key regulators** driving cell state transitions or differentiation
- ✅ **Compare regulatory programs** across conditions, tissues, or species
**Don't use this skill for:**
- ❌ Bulk RNA-seq with few samples → Use functional-enrichment-from-degs or tf-activity workflows
- ❌ Quick TF activity from DE results → Use curated network approaches (faster, less computational)
- ❌ <500 cells → Insufficient for robust GRN inference
- ❌ Limited computational resources → Requires 16GB+ RAM, several hours runtime
**Key Concept:** Unlike curated network approaches, pySCENIC infers TF-target relationships directly from your data using co-expression analysis, then validates them using motif enrichment in cis-regulatory regions.
**The SCENIC Pipeline:**
1. **GRN Inference (GRNBoost2)**: Identify co-expression modules linking TFs to potential target genes
2. **Regulon Prediction (cisTarget)**: Prune targets to those with TF binding motifs in promoters
3. **Cell Activity Scoring (AUCell)**: Score each cell for regulon activity
## Quick Start
**Fastest way to test the workflow (~10-15 minutes):**
```python
# Step 1: Load example PBMC data (500 cells)
from load_example_data import load_pbmc3k_example
adata, ex_matrix = load_pbmc3k_example(preprocess=True, subsample=500)
# Step 2: Run complete GRN workflow
from run_grn_workflow import run_complete_grn_workflow
results = run_complete_grn_workflow(
ex_matrix=ex_matrix,
tf_list_file="pyscenic_databases/allTFs_hg38.txt",
database_glob="pyscenic_databases/*.feather",
motif_annotations_file="pyscenic_databases/motifs-v10nr_clust-nr.hgnc-m0.001-o0.0.tbl",
output_dir="scenic_test_results",
n_workers=4
)
# Step 3: Visualize and export
from integrate_with_adata import integrate_with_adata
from plot_regulon_visualizations import generate_all_visualizations
from export_all import export_all
adata = integrate_with_adata(adata, results['auc_matrix'], results['regulons'])
generate_all_visualizations(results['auc_matrix'], results['regulons'], adata,
output_dir="scenic_test_results/plots")
export_all(results['regulons'], results['auc_matrix'], results['auc_summary'],
results['adjacencies'], output_dir="scenic_test_results")
```
**Expected output:** 20-40 regulons, 13 output files (CSVs, plots, integrated H5AD)
**Note:** Requires databases to be downloaded first (see Installation → Reference Databases section).
## Installation
### Required Software
| Software | Version | License | Commercial Use | Installation |
|----------|---------|---------|----------------|--------------|
| pySCENIC | ≥0.12.0 | GPL-3.0 | ✅ Permitted | `pip install pyscenic` |
| arboreto | ≥0.1.6 | BSD-3-Clause | ✅ Permitted | Installed with pySCENIC |
| ctxcore | ≥0.2.0 | GPL-3.0 | ✅ Permitted | Installed with pySCENIC |
| scanpy | ≥1.9 | BSD-3-Clause | ✅ Permitted | `pip install scanpy` |
| pandas | ≥1.3 | BSD-3-Clause | ✅ Permitted | `pip install pandas` |
| numpy | ≥1.20 | BSD-3-Clause | ✅ Permitted | `pip install numpy` |
| loompy | ≥3.0 | BSD-3-Clause | ✅ Permitted | `pip install loompy` |
| networkx | ≥2.6 | BSD-3-Clause | ✅ Permitted | `pip install networkx` |
| seaborn | ≥0.11 | BSD-3-Clause | ✅ Permitted | `pip install seaborn` |
| matplotlib | ≥3.4 | PSF-based | ✅ Permitted | `pip install matplotlib` |
| reportlab | ≥3.6 | BSD | ✅ Permitted | `pip install reportlab` |
**Minimum Python version:** Python ≥3.8
**Quick install:**
```bash
pip install pyscenic scanpy pandas numpy loompy networkx seaborn matplotlib reportlab
```
**Note:** pySCENIC automatically installs arboreto (for GRNBoost2) and ctxcore (for cisTarget) as dependencies.
### Reference Databases (Required)
Download species-specific databases from [SCENIC resources](https://resources.aertslab.org/cistarget/):
**For human (hg38):**
```bash
wget https://resources.aertslab.org/cistarget/databases/homo_sapiens/hg38/refseq_r80/mc_v10_clust/gene_based/hg38_10kbp_up_10kbp_down_full_tx_v10_clust.genes_vs_motifs.rankings.feather
wget https://resources.aertslab.org/cistarget/motif2tf/motifs-v10nr_clust-nr.hgnc-m0.001-o0.0.tbl
wget https://resources.aertslab.org/cistarget/tf_lists/allTFs_hg38.txt
```
**For other species:** See [references/database_downloads.md](references/database_downloads.md)
**Database requirements:**
- Motif ranking database (.feather format, ~1-2GB)
- Motif annotation file (.tbl format)
- TF list for your species
## Inputs
### Required Input
1. **Single-cell expression matrix** (one of):
- AnnData object (.h5ad) with raw or normalized counts
- Loom file (.loom)
- CSV/TSV matrix (genes × cells)
2. **Reference databases** (downloaded from SCENIC resources):
- Motif ranking database (e.g., `hg38_10kbp_up_10kbp_down_full_tx_v10_clust.genes_vs_motifs.rankings.feather`)
- Motif annotation file (e.g., `motifs-v10nr_clust-nr.hgnc-m0.001-o0.0.tbl`)
- TF list (e.g., `allTFs_hg38.txt`)
### Data Requirements
- **Minimum cells**: 500 (1,000+ recommended for robust GRN inference)
- **Minimum genes**: 2,000+ expressed genes
- **Memory**: 16GB+ RAM (more for large datasets)
- **Runtime**: 1-4 hours depending on dataset size
- **QC**: Apply basic quality filtering before SCENIC (remove low-quality cells/genes)
## Outputs
### Files Generated
**Analysis objects (Pickle):**
- `regulons.pkl` - Regulon objects for downstream analysis
- Load with: `regulons = pickle.load(open('regulons.pkl', 'rb'))`
- Required for: Downstream TF activity analysis, network visualization
- `auc_matrix.pkl` - AUCell activity matrix (cells × regulons)
- Load with: `auc_matrix = pickle.load(open('auc_matrix.pkl', 'rb'))`
**Results (CSV):**
- `adjacencies.csv` - Raw TF-target co-expression (GRNBoost2 output)
- `regulons.csv` - Final TF-target relationships after motif pruning
- `aucell_matrix.csv` - Cell × Regulon activity scores (values 0-1)
- `aucell_summary.csv` - Per-regulon statistics
- `scenic_regulon_summary.csv` - Comprehensive regulon summary
**Integrated data:**
- `adata_with_scenic.h5ad` - AnnData with integrated regulon activities
**Visualizations (PNG + SVG):**
- `regulon_heatmap.png/.svg` - Top regulons by variance
- `regulon_network.png/.svg` - TF-target network visualization
**Reports:**
- `scenic_report.md` - Analysis summary with top regulons
- `scenic_analysis_report.pdf` - Publication-quality PDF with Introduction, Methods, Results (embedded figures), Conclusions
- Requires: `pip install reportlab` (optional — markdown report generated regardless)
## Clarification Questions
**Before running, confirm:**
1. **Input Files** (ASK THIS FIRST):
- Do you have single-cell RNA-seq data to analyze?
- If uploaded: Is this the .h5ad/.loom/matrix file you'd like to use?
- Expected formats: AnnData (.h5ad), Loom (.loom), CSV/TSV matrix
- **Or use example/demo data?** Use `load_example_data.py` for PBMC 3k (~2,700 cells, 30-45 min test)
2. **Species?**
- Human (hg38) - most common, databases readily available
- Mouse (mm10) - databases available
- Other species - check database availability first
3. **Dataset size?**
- 500-2,000 cells → Minimum viable, ~1-2 hours
- 2,000-10,000 cells → Good, ~2-3 hours
- 10,000+ cells → Excellent, may need subsampling, 3-4 hours
4. **Do you have the cisTarget databases downloaded?**
- Yes → Provide paths to .feather, .tbl, and TF list files
- No → Will download during setup (~2-3GB, 10-15 min)
5. **What outputs do you need?**
- Regulons only (TF-target relationships)
- AUCell scores (cell-level TF activity)
- Both with visualizations (recommended)
## Standard Workflow
> **Note:** Run from the OmicsClaw root directory and add the workflow scripts to `sys.path`:
> ```python
> import sys; import os; sys.path.insert(0, os.path.abspath('knowledge_base/scripts/grn-pyscenic'))
> ```
🚨 **MANDATORY: USE SCRIPTS EXACTLY AS SHOWN - DO NOT WRITE INLINE CODE** 🚨
**Step 1 - Load data and run GRN inference:**
```python
# Load expression data
# Option A: Load your own data
from load_expression_data import load_expression_data
adata, ex_matrix = load_expression_data("scrnaseq_data.h5ad")
# Option B: Load example PBMC 3k data for testing
# from load_example_data import load_pbmc3k_example
# adata, ex_matrix = load_pbmc3k_example()
# Run GRN inference with GRNBoost2
from run_grn_workflow import run_complete_grn_workflow
results = run_complete_grn_workflow(
ex_matrix=ex_matrix,
tf_list_file="allTFs_hg38.txt",
database_glob="pyscenic_databases/*.feather",
motif_annotations_file="pyscenic_databases/motifs-v10nr_clust-nr.hgnc-m0.001-o0.0.tbl",
output_dir="scenic_results"
)
```
**DO NOT write inline GRNBoost2, cisTarget, or AUCell code. Use the script.**
**✅ VERIFICATION:** You should see:
- `"✓ Data loaded successfully: X cells, Y genes"`
- `"✓ GRN inference completed: X TF-target pairs"`
- `"✓ cisTarget pruning completed: X regulons"`
- `"✓ AUCell scoring completed"`
**Step 2 - Integrate with AnnData:**
```python
from integrate_with_adata import integrate_with_adata
adata = integrate_with_adata(
adata,
results['auc_matrix'],
results['regulons'],
output_file="scenic_results/adata_with_scenic.h5ad"
)
```
**✅ VERIFICATION:** `"✓ Integration completed: regulon activities added to adata.obsm['X_aucell']"`
**Step 3 - Generate visualizations:**
```python
from plot_regulon_visualizations import generate_all_visualizations
generate_all_visualizations(
results['auc_matrix'],
results['regulons'],
adata,
top_n=20,
output_dir="scenic_results/plots"
)
```
🚨 **DO NOT write inline plotting code (matplotlib, seaborn, etc.). Just use the script.** 🚨
**The script handles PNG + SVG export with graceful fallback.**
**✅ VERIFICATION:** `"✓ All visualizations generated successfully!"`
**Step 4 - Export results:**
```python
from export_all import export_all
export_all(
regulons=results['regulons'],
auc_matrix=results['auc_matrix'],
auc_summary=results['auc_summary'],
adjacencies=results['adjacencies'],
output_dir="scenic_results"
)
```
**DO NOT write custom export code. Use export_all().**
**✅ VERIFICATION:** `"=== Export Complete ==="`
**Note:** If reportlab is installed, a PDF report (`scenic_analysis_report.pdf`) is also generated.
⚠️ **CRITICAL - DO NOT:**
- ❌ **Write inline GRNBoost2/cisTarget code** → **STOP: Use `run_complete_grn_workflow()`**
- ❌ **Write inline plotting code** → **STOP: Use `generate_all_visualizations()`**
- ❌ **Write custom export code** → **STOP: Use `export_all()`**
- ❌ **Try to install system dependencies** → Script checks availability
**⚠️ IF SCRIPTS FAIL - Script Failure Hierarchy:**
1. **Fix and Retry (90%)** - Install missing package, re-run script
2. **Modify Script (5%)** - Edit the script file itself, document changes
3. **Use as Reference (4%)** - Read script, adapt approach, cite source
4. **Write from Scratch (1%)** - Only if genuinely impossible, explain why
**NEVER skip directly to writing inline code without trying the script first.**
## Common Issues
| Error | Cause | Solution |
|-------|-------|----------|
| **Memory error during GRNBoost2** | Dataset too large | Subsample to 5,000-10,000 cells or filter to top 2,000-5,000 variable genes |
| **No regulons found** | TF names don't match gene symbols | Check TF list uses same nomenclature (HGNC/MGI); verify gene names in data |
| **cisTarget database error** | Wrong format or corrupted file | Re-download databases; ensure using Feather v2 format (.feather) |
| **Very slow GRN inference** | Too many genes or single-threaded | Filter to variable genes; increase `n_workers` parameter (4-8 recommended) |
| **AUCell scores all low** | Poor regulon quality or normalization | Check regulon sizes (need 10+ genes); verify input is normalized counts |
| **Database loading fails** | Path incorrect or file not found | Use absolute paths to databases; verify files exist |
| **SVG export error** | Missing optional dependency | **Normal - script falls back to PNG automatically. Both formats will be created.** |
| **NumPy AttributeError: np.object** | Incompatible NumPy version | **Install NumPy <1.24: `pip install 'numpy<1.24.0'` - pySCENIC 0.12.1 requires NumPy 1.20-1.23** |
| **TypeError: Must supply at least one delayed object** | Incompatible Dask version | **Install Dask 2023.5.0: `pip install 'dask[complete]==2023.5.0' 'distributed==2023.5.0'` and uninstall dask-expr if present** |
## Suggested Next Steps
After completing pySCENIC analysis:
1. **Identify key regulators**: Focus on high-variance regulons with cell-type-specific activity
2. **Validate regulons**: Compare with literature, ChIP-seq data, or perturbation experiments
3. **Downstream analysis**:
- Differential regulon activity between conditions (Scanpy/Seurat)
- Trajectory analysis with regulon dynamics (RNA velocity + SCENIC)
- Integration with other modalities (ATAC-seq, ChIP-seq)
4. **Functional enrichment**: Analyze target genes of top regulons
5. **Network analysis**: Identify TF-TF interactions and regulatory hierarchies
## Related Skills
- **scrnaseq-scanpy-core-analysis** - Upstream: Single-cell preprocessing and clustering
- **scrnaseq-seurat-core-analysis** - Upstream: Alternative single-cell preprocessing (R)
- **functional-enrichment-from-degs** - Related: Pathway analysis of regulon targets
- **de-results-to-plots** - Related: Visualizing differential activity results
## References
- Aibar et al. (2017). SCENIC: single-cell regulatory network inference and clustering. *Nature Methods*. [doi:10.1038/nmeth.4463](https://doi.org/10.1038/nmeth.4463)
- Van de Sande et al. (2020). A scalable SCENIC workflow for single-cell gene regulatory network analysis. *Nature Protocols*. [doi:10.1038/s41596-020-0336-2](https://doi.org/10.1038/s41596-020-0336-2)
- Huynh-Thu et al. (2010). Inferring regulatory networks from expression data using tree-based methods. *PLoS ONE*. [doi:10.1371/journal.pone.0012776](https://doi.org/10.1371/journal.pone.0012776)
- pySCENIC Documentation: https://pyscenic.readthedocs.io/
- SCENIC Resources: https://resources.aertslab.org/cistarget/
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!