SenSASP: A Unified, Multi-Layer Database of Senescence and SASP Genes
1,250 unique human senescence / SASP genes unified from CellAge, GenAge, SenMayo, and Reactome, enriched with cross-species conservation, GTEx expression, and STRING interactions.
Xuan, H., Huang, Y., & Bian, J. (2026). SenSASP: A Unified, Multi-Layer Database of Senescence and SASP Genes. bioRxiv 2026.08.26.747427. https://doi.org/10.64898/2026.08.26.747427
Web database
Browse and search all genes interactively — no account or software required:
https://xuan13hao.github.io/sensasp
- Searchable/sortable/filterable gene table (Tabulator.js)
- Per-gene detail pages:
sensasp/gene.html?gene=TP53 - Coverage and source statistics
- One-click citation export (APA + BibTeX)
MCP server (Claude AI integration)
SenSASP ships as an MCP server so Claude and other AI assistants can query the database in natural language.
Install
pip install sensasp-mcp
Connect to Claude Desktop
Add to your Claude Desktop config file:
- Linux:
~/.config/claude/claude_desktop_config.json - Mac:
~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"sensasp": {
"command": "python3",
"args": ["-m", "sensasp_mcp.server"]
}
}
}
Restart Claude Desktop. Then ask in natural language:
"Which SenSASP genes are confirmed by all four sources?" "Show me the full annotation for CDKN2A." "What are the top hub genes by STRING interaction degree?"
Zero-install with uvx
uvx sensasp-mcp
Available tools
| Tool | Description |
|---|---|
search_genes |
Free-text + filter search (source, conservation, expression, STRING degree) |
get_gene |
Full record for one gene: conservation, GTEx tissues, STRING partners |
get_database_stats |
Gene count, coverage percentages, build metadata |
list_sources |
The 4 seed databases with gene counts and URLs |
get_top_hub_genes |
Top-N genes by STRING intra-set interaction degree |
get_multi_source_genes |
All 173 genes confirmed by ≥2 sources |
Remote / self-hosted
Run as an HTTP server that any MCP client can reach without a local install:
python3 -m sensasp_mcp.server --transport sse --port 8080
Users connect via:
{ "mcpServers": { "sensasp": { "url": "https://your-server.com/sse" } } }
Pipeline
A fully scripted pipeline that reproduces the database from scratch:
./main.sh # install deps, run all steps, regenerate figures
./main.sh --no-figs # data only
Everything is fetched from public APIs at run time — no manual downloads.
Steps
| Step | Module | Output |
|---|---|---|
| 1 | step1_acquire.py |
CellAge, GenAge, SenMayo, Reactome → data/raw/ |
| 2 | step2_harmonize.py |
Symbol → Ensembl/UniProt/Entrez via MyGene.info |
| 3 | step3_unify.py |
Collapse to unique genes, record provenance |
| 4 | step4_conservation.py |
Mouse + zebrafish orthologs (Ensembl BioMart) |
| 5 | step5_expression.py |
GTEx v8 (54 tissues) + Human Protein Atlas |
| 6 | step6_interactions.py |
STRING v12 high-confidence PPI (score ≥ 700) |
| 7 | step7_assemble.py |
Merge all layers → senescence_sasp_database.{json,csv} |
| 8 | step8_metrics.py |
Coverage metrics → build_metrics.json |
PYTHONPATH=. python3 run_pipeline.py # all steps
PYTHONPATH=. python3 run_pipeline.py 4 5 6 # specific steps only
Regenerate site data
After re-running the pipeline:
python3 generate_site_data.py
Rebuilds docs/data/genes.json, genes_full.json, metrics.json, sources.json,
and the bundled data in sensasp_mcp/data/.
Repository layout
sensasp/
├── senescence_sasp_database.{json,csv} # final database
├── generate_site_data.py # regenerate docs/data/ + sensasp_mcp/data/
├── mcp_server.py # standalone MCP server (dev)
├── docs/ # GitHub Pages site
│ ├── index.html # gene table
│ ├── gene.html # per-gene detail page
│ ├── cite.html # citation page
│ └── data/ # JSON files served to the browser
├── sensasp_mcp/ # PyPI package (pip install sensasp-mcp)
│ ├── server.py # MCP server with stdio + SSE transport
│ └── data/ # bundled JSON for offline use
└── senescence_db_pipeline/ # reproducible pipeline
├── pipeline/ # step1..step8 modules
├── notebooks/figures.ipynb
└── results/ # build metrics, summary report
Key results
1,460 summed source entries → 1,250 unique genes (210 redundant collapsed, 14.4%); 173 genes confirmed by ≥2 sources, 2 (IL6, JUN) by all four. Net-new annotation reaches 95.8% (conservation), 97.9% (expression), 93.0% (interactions), with 89.4% complete across all three layers.
Citation
@article{Xuan2026.08.26.747427,
author = {Xuan, Hao and Huang, Yu and Bian, Jiang},
title = {SenSASP: A Unified, Multi-Layer Database of Senescence and SASP Genes},
elocation-id = {2026.08.26.747427},
year = {2026},
doi = {10.64898/2026.08.26.747427},
publisher = {Cold Spring Harbor Laboratory},
URL = {https://www.biorxiv.org/content/early/2026/09/11/2026.08.26.747427},
journal = {bioRxiv}
}
Release files for sensasp-mcp 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| sensasp_mcp-1.0.1.tar.gz | 304.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sensasp_mcp-1.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 622.3 kB
Release files / sensasp_mcp-1.0.1.tar.gz
| Download URL | sensasp_mcp-1.0.1.tar.gz |
|---|---|
| Size | 304.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e16260191091a49250a32109fd8568d40faa5feef4221c0bd825840db6359017
|
|
BLAKE2b-256 checksum How to use checksums |
9b6dbfecb32ecc55cc976e3b468f4b15f6bb99b1594f1ae3968a99bdfe125771
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.12
|
Release files / sensasp_mcp-1.0.1-py3-none-any.whl
| Download URL | sensasp_mcp-1.0.1-py3-none-any.whl |
|---|---|
| Size | 318.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
852d16dfc715b25c4150365695eb5fee3b8ca7aba41750b593763e9741c9d87c
|
|
BLAKE2b-256 checksum How to use checksums |
13e9a1698d2e2afae1cef9313665b1ae55140ff45b74e4176f5880bf975e6cb1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.12
|