sensasp-mcp 1.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,109 @@
1
+ Metadata-Version: 2.5
2
+ Name: sensasp-mcp
3
+ Version: 1.0.0
4
+ Summary: SenSASP MCP Server — unified senescence / SASP gene database for Claude and MCP clients
5
+ Project-URL: Homepage, https://xuan13hao.github.io/sensasp
6
+ Project-URL: Repository, https://github.com/xuan13hao/sensasp
7
+ Project-URL: Paper, https://doi.org/10.64898/2026.08.26.747427
8
+ Author: Yu Huang, Jiang Bian
9
+ Author-email: Xuan Hao <xuanhao@iu.edu>
10
+ License: CC-BY-4.0
11
+ Keywords: Claude,MCP,SASP,bioinformatics,gene-database,senescence
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Science/Research
14
+ Classifier: License :: Free for non-commercial use
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
20
+ Requires-Python: >=3.10
21
+ Requires-Dist: mcp<2,>=1.0
22
+ Description-Content-Type: text/markdown
23
+
24
+ # SenSASP: A Unified, Multi-Layer Database of Senescence and SASP Genes
25
+
26
+ A fully scripted, one-command-reproducible pipeline that unifies four senescence /
27
+ SASP gene resources onto a single canonical identifier and enriches every gene
28
+ with cross-species conservation, tissue/cell-type expression, and protein–protein
29
+ interaction annotation.
30
+
31
+ ## Quick start
32
+
33
+ ```bash
34
+ ./main.sh # install deps, run the data pipeline, regenerate all figures
35
+ ./main.sh --no-figs # data pipeline only (skip the notebook)
36
+ ```
37
+
38
+ Everything is fetched from public APIs at run time — no manual downloads, no
39
+ credentials. Total runtime is a few minutes (the Human Protein Atlas step makes
40
+ one request per gene and dominates the wall time).
41
+
42
+ ## What it does
43
+
44
+ | Step | Module | Output |
45
+ |---|---|---|
46
+ | 1 | `step1_acquire.py` | Download CellAge, GenAge, SenMayo, Reactome → `data/raw/seed_lists_raw.json` |
47
+ | 2 | `step2_harmonize.py` | Map symbols→Ensembl/UniProt/Entrez via MyGene.info → `data/processed/id_map.{json,csv}` |
48
+ | 3 | `step3_unify.py` | Collapse to unique genes on Ensembl ID, record provenance (RQ1) → `data/processed/unified_core.json`, `results/source_overlap.csv` |
49
+ | 4 | `step4_conservation.py` | Mouse + zebrafish orthologs via Ensembl BioMart → `data/processed/conservation.json` |
50
+ | 5 | `step5_expression.py` | GTEx v8 (54 tissues) + Human Protein Atlas → `data/processed/expression.json` |
51
+ | 6 | `step6_interactions.py` | STRING v12 high-confidence network (score≥700) → `data/processed/interaction.json`, `string_network.json` |
52
+ | 7 | `step7_assemble.py` | Merge all layers → `results/senescence_sasp_database.{json,csv}` |
53
+ | 8 | `step8_metrics.py` | Outcome metrics (RQ1/RQ2) → `results/build_metrics.json`, `summary_report.md` |
54
+
55
+ Figures are generated separately from the pipeline outputs by
56
+ `notebooks/figures.ipynb`.
57
+
58
+ ## Running individual steps
59
+
60
+ ```bash
61
+ PYTHONPATH=. python run_pipeline.py # all steps
62
+ PYTHONPATH=. python run_pipeline.py 4 5 6 # only these (reuse earlier outputs)
63
+ ```
64
+
65
+ ## Layout
66
+
67
+ ```
68
+ senescence_db_pipeline/
69
+ ├── main.sh # one-click reproduction
70
+ ├── run_pipeline.py # step runner
71
+ ├── requirements.txt
72
+ ├── pipeline/ # step1..step8 modules + config.py
73
+ ├── notebooks/figures.ipynb # all figure-generation code
74
+ ├── data/raw, data/processed
75
+ ├── results/ # database + metrics + report
76
+ ├── figures/ # generated PNGs
77
+ └── paper/paper.md # manuscript (Intro/Methods/Data/Results/Discussion)
78
+ ```
79
+
80
+ ## Data sources
81
+
82
+ CellAge & GenAge (HAGR), SenMayo (MSigDB `SAUL_SEN_MAYO` / M45803, Saul et al.
83
+ 2022), Reactome Cellular Senescence (R-HSA-2559583); annotation via MyGene.info,
84
+ Ensembl BioMart, GTEx v8, Human Protein Atlas, and STRING v12.
85
+
86
+ ## Web database (GitHub Pages)
87
+
88
+ The interactive database is served from `docs/` via GitHub Pages:
89
+
90
+ ```
91
+ https://xuan13hao.github.io/sensasp
92
+ ```
93
+
94
+ To enable: **Settings → Pages → Source: Deploy from branch → Branch: `main` → Folder: `/docs`**
95
+
96
+ To regenerate site data after re-running the pipeline:
97
+
98
+ ```bash
99
+ python3 generate_site_data.py
100
+ ```
101
+
102
+ This rebuilds `docs/data/genes.json`, `genes_full.json`, `metrics.json`, and `sources.json`.
103
+
104
+ ## Key results
105
+
106
+ 1,460 summed source entries → **1,250 unique genes** (210 redundant collapsed,
107
+ 14.4%); 173 genes confirmed by ≥2 sources, 2 (IL6, JUN) by all four. Net-new
108
+ annotation reaches 95.8% (conservation), 97.8% (expression), 92.9%
109
+ (interactions), with 89.3% complete across all three layers.
@@ -0,0 +1,86 @@
1
+ # SenSASP: A Unified, Multi-Layer Database of Senescence and SASP Genes
2
+
3
+ A fully scripted, one-command-reproducible pipeline that unifies four senescence /
4
+ SASP gene resources onto a single canonical identifier and enriches every gene
5
+ with cross-species conservation, tissue/cell-type expression, and protein–protein
6
+ interaction annotation.
7
+
8
+ ## Quick start
9
+
10
+ ```bash
11
+ ./main.sh # install deps, run the data pipeline, regenerate all figures
12
+ ./main.sh --no-figs # data pipeline only (skip the notebook)
13
+ ```
14
+
15
+ Everything is fetched from public APIs at run time — no manual downloads, no
16
+ credentials. Total runtime is a few minutes (the Human Protein Atlas step makes
17
+ one request per gene and dominates the wall time).
18
+
19
+ ## What it does
20
+
21
+ | Step | Module | Output |
22
+ |---|---|---|
23
+ | 1 | `step1_acquire.py` | Download CellAge, GenAge, SenMayo, Reactome → `data/raw/seed_lists_raw.json` |
24
+ | 2 | `step2_harmonize.py` | Map symbols→Ensembl/UniProt/Entrez via MyGene.info → `data/processed/id_map.{json,csv}` |
25
+ | 3 | `step3_unify.py` | Collapse to unique genes on Ensembl ID, record provenance (RQ1) → `data/processed/unified_core.json`, `results/source_overlap.csv` |
26
+ | 4 | `step4_conservation.py` | Mouse + zebrafish orthologs via Ensembl BioMart → `data/processed/conservation.json` |
27
+ | 5 | `step5_expression.py` | GTEx v8 (54 tissues) + Human Protein Atlas → `data/processed/expression.json` |
28
+ | 6 | `step6_interactions.py` | STRING v12 high-confidence network (score≥700) → `data/processed/interaction.json`, `string_network.json` |
29
+ | 7 | `step7_assemble.py` | Merge all layers → `results/senescence_sasp_database.{json,csv}` |
30
+ | 8 | `step8_metrics.py` | Outcome metrics (RQ1/RQ2) → `results/build_metrics.json`, `summary_report.md` |
31
+
32
+ Figures are generated separately from the pipeline outputs by
33
+ `notebooks/figures.ipynb`.
34
+
35
+ ## Running individual steps
36
+
37
+ ```bash
38
+ PYTHONPATH=. python run_pipeline.py # all steps
39
+ PYTHONPATH=. python run_pipeline.py 4 5 6 # only these (reuse earlier outputs)
40
+ ```
41
+
42
+ ## Layout
43
+
44
+ ```
45
+ senescence_db_pipeline/
46
+ ├── main.sh # one-click reproduction
47
+ ├── run_pipeline.py # step runner
48
+ ├── requirements.txt
49
+ ├── pipeline/ # step1..step8 modules + config.py
50
+ ├── notebooks/figures.ipynb # all figure-generation code
51
+ ├── data/raw, data/processed
52
+ ├── results/ # database + metrics + report
53
+ ├── figures/ # generated PNGs
54
+ └── paper/paper.md # manuscript (Intro/Methods/Data/Results/Discussion)
55
+ ```
56
+
57
+ ## Data sources
58
+
59
+ CellAge & GenAge (HAGR), SenMayo (MSigDB `SAUL_SEN_MAYO` / M45803, Saul et al.
60
+ 2022), Reactome Cellular Senescence (R-HSA-2559583); annotation via MyGene.info,
61
+ Ensembl BioMart, GTEx v8, Human Protein Atlas, and STRING v12.
62
+
63
+ ## Web database (GitHub Pages)
64
+
65
+ The interactive database is served from `docs/` via GitHub Pages:
66
+
67
+ ```
68
+ https://xuan13hao.github.io/sensasp
69
+ ```
70
+
71
+ To enable: **Settings → Pages → Source: Deploy from branch → Branch: `main` → Folder: `/docs`**
72
+
73
+ To regenerate site data after re-running the pipeline:
74
+
75
+ ```bash
76
+ python3 generate_site_data.py
77
+ ```
78
+
79
+ This rebuilds `docs/data/genes.json`, `genes_full.json`, `metrics.json`, and `sources.json`.
80
+
81
+ ## Key results
82
+
83
+ 1,460 summed source entries → **1,250 unique genes** (210 redundant collapsed,
84
+ 14.4%); 173 genes confirmed by ≥2 sources, 2 (IL6, JUN) by all four. Net-new
85
+ annotation reaches 95.8% (conservation), 97.8% (expression), 92.9%
86
+ (interactions), with 89.3% complete across all three layers.
@@ -0,0 +1,44 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "sensasp-mcp"
7
+ version = "1.0.0"
8
+ description = "SenSASP MCP Server — unified senescence / SASP gene database for Claude and MCP clients"
9
+ readme = "README.md"
10
+ license = { text = "CC-BY-4.0" }
11
+ authors = [
12
+ { name = "Xuan Hao", email = "xuanhao@iu.edu" },
13
+ { name = "Yu Huang" },
14
+ { name = "Jiang Bian" },
15
+ ]
16
+ keywords = ["senescence", "SASP", "bioinformatics", "MCP", "Claude", "gene-database"]
17
+ classifiers = [
18
+ "Development Status :: 4 - Beta",
19
+ "Intended Audience :: Science/Research",
20
+ "Topic :: Scientific/Engineering :: Bio-Informatics",
21
+ "License :: Free for non-commercial use",
22
+ "Programming Language :: Python :: 3",
23
+ "Programming Language :: Python :: 3.10",
24
+ "Programming Language :: Python :: 3.11",
25
+ "Programming Language :: Python :: 3.12",
26
+ ]
27
+ requires-python = ">=3.10"
28
+ dependencies = [
29
+ "mcp>=1.0,<2",
30
+ ]
31
+
32
+ [project.urls]
33
+ Homepage = "https://xuan13hao.github.io/sensasp"
34
+ Repository = "https://github.com/xuan13hao/sensasp"
35
+ Paper = "https://doi.org/10.64898/2026.08.26.747427"
36
+
37
+ [project.scripts]
38
+ sensasp-mcp = "sensasp_mcp.server:main"
39
+
40
+ [tool.hatch.build.targets.wheel]
41
+ packages = ["sensasp_mcp"]
42
+
43
+ [tool.hatch.build.targets.sdist]
44
+ include = ["sensasp_mcp/", "README.md", "pyproject.toml"]
@@ -0,0 +1,68 @@
1
+ # Unified Cellular Senescence / SASP Gene Database — Pipeline
2
+
3
+ A fully scripted, one-command-reproducible pipeline that unifies four senescence /
4
+ SASP gene resources onto a single canonical identifier and enriches every gene
5
+ with cross-species conservation, tissue/cell-type expression, and protein–protein
6
+ interaction annotation.
7
+
8
+ ## Quick start
9
+
10
+ ```bash
11
+ ./main.sh # install deps, run the data pipeline, regenerate all figures
12
+ ./main.sh --no-figs # data pipeline only (skip the notebook)
13
+ ```
14
+
15
+ Everything is fetched from public APIs at run time — no manual downloads, no
16
+ credentials. Total runtime is a few minutes (the Human Protein Atlas step makes
17
+ one request per gene and dominates the wall time).
18
+
19
+ ## What it does
20
+
21
+ | Step | Module | Output |
22
+ |---|---|---|
23
+ | 1 | `step1_acquire.py` | Download CellAge, GenAge, SenMayo, Reactome → `data/raw/seed_lists_raw.json` |
24
+ | 2 | `step2_harmonize.py` | Map symbols→Ensembl/UniProt/Entrez via MyGene.info → `data/processed/id_map.{json,csv}` |
25
+ | 3 | `step3_unify.py` | Collapse to unique genes on Ensembl ID, record provenance (RQ1) → `data/processed/unified_core.json`, `results/source_overlap.csv` |
26
+ | 4 | `step4_conservation.py` | Mouse + zebrafish orthologs via Ensembl BioMart → `data/processed/conservation.json` |
27
+ | 5 | `step5_expression.py` | GTEx v8 (54 tissues) + Human Protein Atlas → `data/processed/expression.json` |
28
+ | 6 | `step6_interactions.py` | STRING v12 high-confidence network (score≥700) → `data/processed/interaction.json`, `string_network.json` |
29
+ | 7 | `step7_assemble.py` | Merge all layers → `results/senescence_sasp_database.{json,csv}` |
30
+ | 8 | `step8_metrics.py` | Outcome metrics (RQ1/RQ2) → `results/build_metrics.json`, `summary_report.md` |
31
+
32
+ Figures are generated separately from the pipeline outputs by
33
+ `notebooks/figures.ipynb`.
34
+
35
+ ## Running individual steps
36
+
37
+ ```bash
38
+ PYTHONPATH=. python run_pipeline.py # all steps
39
+ PYTHONPATH=. python run_pipeline.py 4 5 6 # only these (reuse earlier outputs)
40
+ ```
41
+
42
+ ## Layout
43
+
44
+ ```
45
+ senescence_db_pipeline/
46
+ ├── main.sh # one-click reproduction
47
+ ├── run_pipeline.py # step runner
48
+ ├── requirements.txt
49
+ ├── pipeline/ # step1..step8 modules + config.py
50
+ ├── notebooks/figures.ipynb # all figure-generation code
51
+ ├── data/raw, data/processed
52
+ ├── results/ # database + metrics + report
53
+ ├── figures/ # generated PNGs
54
+ └── paper/paper.md # manuscript (Intro/Methods/Data/Results/Discussion)
55
+ ```
56
+
57
+ ## Data sources
58
+
59
+ CellAge & GenAge (HAGR), SenMayo (MSigDB `SAUL_SEN_MAYO` / M45803, Saul et al.
60
+ 2022), Reactome Cellular Senescence (R-HSA-2559583); annotation via MyGene.info,
61
+ Ensembl BioMart, GTEx v8, Human Protein Atlas, and STRING v12.
62
+
63
+ ## Key results
64
+
65
+ 1,460 summed source entries → **1,250 unique genes** (210 redundant collapsed,
66
+ 14.4%); 173 genes confirmed by ≥2 sources, 2 (IL6, JUN) by all four. Net-new
67
+ annotation reaches 95.8% (conservation), 97.8% (expression), 92.9%
68
+ (interactions), with 89.3% complete across all three layers.
@@ -0,0 +1,2 @@
1
+ """SenSASP MCP Server — unified senescence / SASP gene database."""
2
+ __version__ = "1.0.0"