How do gut microbiome-derived metabolites SCFAs LPS TMAO influence alpha-synuclein aggregation and dopaminergic neuron survival via vagal nerve signaling in Parkinson disease¶
Notebook ID: nb-SDA-2026-04-16-gap-20260416-121711 · Analysis: SDA-2026-04-16-gap-20260416-121711 · Generated: 2026-04-21T18:43:56
Research question¶
How do gut microbiome-derived metabolites SCFAs LPS TMAO influence alpha-synuclein aggregation and dopaminergic neuron survival via vagal nerve signaling in Parkinson disease
Approach¶
This notebook is generated programmatically from real Forge tool calls and SciDEX debate data. Forge tools used: PubMed Search, MyGene, STRING PPI, Reactome pathways, Enrichr.
Debate Summary¶
Quality score: 0.84 · Rounds: 4
1. Target gene annotations (MyGene)¶
import pandas as pd
ann_rows = [{'gene': 'MYD88', 'name': 'MYD88 innate immune signal transduction adaptor', 'summary': 'This gene encodes a cytosolic adapter protein that plays a central role in the innate and adaptive immune response. This'}, {'gene': 'NAMPT', 'name': 'nicotinamide phosphoribosyltransferase', 'summary': 'This gene encodes a protein that catalyzes the condensation of nicotinamide with 5-phosphoribosyl-1-pyrophosphate to yie'}, {'gene': 'SIRT1', 'name': 'sirtuin 1', 'summary': 'This gene encodes a member of the sirtuin family of proteins, homologs to the yeast Sir2 protein. Members of the sirtuin'}, {'gene': 'TLR4', 'name': 'toll like receptor 4', 'summary': 'The protein encoded by this gene is a member of the Toll-like receptor (TLR) family which plays a fundamental role in pa'}]
pd.DataFrame(ann_rows)
| gene | name | summary | |
|---|---|---|---|
| 0 | MYD88 | MYD88 innate immune signal transduction adaptor | This gene encodes a cytosolic adapter protein ... |
| 1 | NAMPT | nicotinamide phosphoribosyltransferase | This gene encodes a protein that catalyzes the... |
| 2 | SIRT1 | sirtuin 1 | This gene encodes a member of the sirtuin fami... |
| 3 | TLR4 | toll like receptor 4 | The protein encoded by this gene is a member o... |
2. GO Biological Process enrichment (Enrichr)¶
go_bp = [{'rank': 1, 'term': 'Regulation Of Interleukin-23 Production (GO:0032667)', 'p_value': 8.396275896569607e-07, 'odds_ratio': 3331.6666666666665, 'genes': ['TLR4', 'MYD88']}, {'rank': 2, 'term': 'Positive Regulation Of Macromolecule Biosynthetic Process (GO:0010557)', 'p_value': 8.818172756223627e-07, 'odds_ratio': 501.10084033613447, 'genes': ['NAMPT', 'SIRT1', 'TLR4']}, {'rank': 3, 'term': 'Cellular Response To Oxidised Low-Density Lipoprotein Particle Stimulus (GO:0140052)', 'p_value': 1.0794527804927066e-06, 'odds_ratio': 2855.5714285714284, 'genes': ['TLR4', 'MYD88']}, {'rank': 4, 'term': 'Positive Regulation Of Nitric-Oxide Synthase Biosynthetic Process (GO:0051770)', 'p_value': 1.3492299001701414e-06, 'odds_ratio': 2498.5, 'genes': ['NAMPT', 'TLR4']}, {'rank': 5, 'term': 'Regulation Of Nitric-Oxide Synthase Biosynthetic Process (GO:0051769)', 'p_value': 2.338213497902388e-06, 'odds_ratio': 1816.8181818181818, 'genes': ['NAMPT', 'TLR4']}, {'rank': 6, 'term': 'Cell Surface Toll-Like Receptor Signaling Pathway (GO:0140895)', 'p_value': 3.5965506045033277e-06, 'odds_ratio': 1427.2857142857142, 'genes': ['TLR4', 'MYD88']}, {'rank': 7, 'term': 'Toll-Like Receptor 4 Signaling Pathway (GO:0034142)', 'p_value': 4.075824859400975e-06, 'odds_ratio': 1332.0666666666666, 'genes': ['TLR4', 'MYD88']}, {'rank': 8, 'term': 'Positive Regulation Of NLRP3 Inflammasome Complex Assembly (GO:1900227)', 'p_value': 4.585003458844033e-06, 'odds_ratio': 1248.75, 'genes': ['TLR4', 'MYD88']}, {'rank': 9, 'term': 'Positive Regulation Of Cytokine Production Involved In Inflammatory Response (GO:1900017)', 'p_value': 4.585003458844033e-06, 'odds_ratio': 1248.75, 'genes': ['TLR4', 'MYD88']}, {'rank': 10, 'term': 'Cellular Response To Low-Density Lipoprotein Particle Stimulus (GO:0071404)', 'p_value': 6.9206420320479584e-06, 'odds_ratio': 998.8, 'genes': ['TLR4', 'MYD88']}]
go_df = pd.DataFrame(go_bp)[['term','p_value','odds_ratio','genes']]
go_df['p_value'] = go_df['p_value'].apply(lambda p: f'{p:.2e}')
go_df['odds_ratio'] = go_df['odds_ratio'].round(1)
go_df['term'] = go_df['term'].str[:60]
go_df['n_hits'] = go_df['genes'].apply(len)
go_df['genes'] = go_df['genes'].apply(lambda g: ', '.join(g))
go_df[['term','n_hits','p_value','odds_ratio','genes']]
| term | n_hits | p_value | odds_ratio | genes | |
|---|---|---|---|---|---|
| 0 | Regulation Of Interleukin-23 Production (GO:00... | 2 | 8.40e-07 | 3331.7 | TLR4, MYD88 |
| 1 | Positive Regulation Of Macromolecule Biosynthe... | 3 | 8.82e-07 | 501.1 | NAMPT, SIRT1, TLR4 |
| 2 | Cellular Response To Oxidised Low-Density Lipo... | 2 | 1.08e-06 | 2855.6 | TLR4, MYD88 |
| 3 | Positive Regulation Of Nitric-Oxide Synthase B... | 2 | 1.35e-06 | 2498.5 | NAMPT, TLR4 |
| 4 | Regulation Of Nitric-Oxide Synthase Biosynthet... | 2 | 2.34e-06 | 1816.8 | NAMPT, TLR4 |
| 5 | Cell Surface Toll-Like Receptor Signaling Path... | 2 | 3.60e-06 | 1427.3 | TLR4, MYD88 |
| 6 | Toll-Like Receptor 4 Signaling Pathway (GO:003... | 2 | 4.08e-06 | 1332.1 | TLR4, MYD88 |
| 7 | Positive Regulation Of NLRP3 Inflammasome Comp... | 2 | 4.59e-06 | 1248.8 | TLR4, MYD88 |
| 8 | Positive Regulation Of Cytokine Production Inv... | 2 | 4.59e-06 | 1248.8 | TLR4, MYD88 |
| 9 | Cellular Response To Low-Density Lipoprotein P... | 2 | 6.92e-06 | 998.8 | TLR4, MYD88 |
import matplotlib.pyplot as plt
import numpy as np
go_bp = [{'rank': 1, 'term': 'Regulation Of Interleukin-23 Production (GO:0032667)', 'p_value': 8.396275896569607e-07, 'odds_ratio': 3331.6666666666665, 'genes': ['TLR4', 'MYD88']}, {'rank': 2, 'term': 'Positive Regulation Of Macromolecule Biosynthetic Process (GO:0010557)', 'p_value': 8.818172756223627e-07, 'odds_ratio': 501.10084033613447, 'genes': ['NAMPT', 'SIRT1', 'TLR4']}, {'rank': 3, 'term': 'Cellular Response To Oxidised Low-Density Lipoprotein Particle Stimulus (GO:0140052)', 'p_value': 1.0794527804927066e-06, 'odds_ratio': 2855.5714285714284, 'genes': ['TLR4', 'MYD88']}, {'rank': 4, 'term': 'Positive Regulation Of Nitric-Oxide Synthase Biosynthetic Process (GO:0051770)', 'p_value': 1.3492299001701414e-06, 'odds_ratio': 2498.5, 'genes': ['NAMPT', 'TLR4']}, {'rank': 5, 'term': 'Regulation Of Nitric-Oxide Synthase Biosynthetic Process (GO:0051769)', 'p_value': 2.338213497902388e-06, 'odds_ratio': 1816.8181818181818, 'genes': ['NAMPT', 'TLR4']}, {'rank': 6, 'term': 'Cell Surface Toll-Like Receptor Signaling Pathway (GO:0140895)', 'p_value': 3.5965506045033277e-06, 'odds_ratio': 1427.2857142857142, 'genes': ['TLR4', 'MYD88']}, {'rank': 7, 'term': 'Toll-Like Receptor 4 Signaling Pathway (GO:0034142)', 'p_value': 4.075824859400975e-06, 'odds_ratio': 1332.0666666666666, 'genes': ['TLR4', 'MYD88']}, {'rank': 8, 'term': 'Positive Regulation Of NLRP3 Inflammasome Complex Assembly (GO:1900227)', 'p_value': 4.585003458844033e-06, 'odds_ratio': 1248.75, 'genes': ['TLR4', 'MYD88']}]
terms = [t['term'][:45] for t in go_bp][::-1]
neglogp = [-np.log10(max(t['p_value'], 1e-300)) for t in go_bp][::-1]
fig, ax = plt.subplots(figsize=(9, 4.5))
ax.barh(terms, neglogp, color='#4fc3f7')
ax.set_xlabel('-log10(p-value)')
ax.set_title('Top GO:BP enrichment (Enrichr)')
ax.grid(axis='x', alpha=0.3)
plt.tight_layout(); plt.show()
/home/ubuntu/.config/matplotlib is not a writable directory
Matplotlib created a temporary cache directory at /tmp/matplotlib-p9qm27av because there was an issue with the default path (/home/ubuntu/.config/matplotlib); it is highly recommended to set the MPLCONFIGDIR environment variable to a writable directory, in particular to speed up the import of Matplotlib and to better support multiprocessing.
3. STRING protein interaction network¶
ppi = [{'protein1': 'NAMPT', 'protein2': 'TLR4', 'score': 0.4, 'nscore': 0, 'fscore': 0, 'pscore': 0, 'ascore': 0, 'escore': 0, 'dscore': 0, 'tscore': 0.401}, {'protein1': 'TLR4', 'protein2': 'MYD88', 'score': 0.992, 'nscore': 0, 'fscore': 0, 'pscore': 0, 'ascore': 0, 'escore': 0.508, 'dscore': 0, 'tscore': 0.985}]
ppi_df = pd.DataFrame(ppi).sort_values('score', ascending=False)
display_cols = [c for c in ['protein1','protein2','score','escore','tscore'] if c in ppi_df.columns]
print(f'{len(ppi_df)} STRING edges')
ppi_df[display_cols].head(20)
2 STRING edges
| protein1 | protein2 | score | escore | tscore | |
|---|---|---|---|---|---|
| 1 | TLR4 | MYD88 | 0.992 | 0.508 | 0.985 |
| 0 | NAMPT | TLR4 | 0.400 | 0.000 | 0.401 |
import math
ppi = [{'protein1': 'NAMPT', 'protein2': 'TLR4', 'score': 0.4, 'nscore': 0, 'fscore': 0, 'pscore': 0, 'ascore': 0, 'escore': 0, 'dscore': 0, 'tscore': 0.401}, {'protein1': 'TLR4', 'protein2': 'MYD88', 'score': 0.992, 'nscore': 0, 'fscore': 0, 'pscore': 0, 'ascore': 0, 'escore': 0.508, 'dscore': 0, 'tscore': 0.985}]
if ppi:
nodes = sorted({p for e in ppi for p in (e['protein1'], e['protein2'])})
n = len(nodes)
pos = {n_: (math.cos(2*math.pi*i/n), math.sin(2*math.pi*i/n)) for i, n_ in enumerate(nodes)}
fig, ax = plt.subplots(figsize=(7, 7))
for e in ppi:
x1,y1 = pos[e['protein1']]; x2,y2 = pos[e['protein2']]
ax.plot([x1,x2],[y1,y2], color='#888', alpha=0.3+0.5*e.get('score',0))
for name,(x,y) in pos.items():
ax.scatter([x],[y], s=450, color='#ffd54f', edgecolors='#333', zorder=3)
ax.annotate(name, (x,y), ha='center', va='center', fontsize=8, fontweight='bold', zorder=4)
ax.set_aspect('equal'); ax.axis('off')
ax.set_title(f'STRING PPI network ({len(ppi)} edges)')
plt.tight_layout(); plt.show()
4. Reactome pathway footprint¶
pw_rows = [{'gene': 'MYD88', 'n_pathways': 8, 'top_pathway': 'ER-Phagosome pathway'}, {'gene': 'NAMPT', 'n_pathways': 3, 'top_pathway': 'BMAL1:CLOCK,NPAS2 activates circadian expression'}, {'gene': 'SIRT1', 'n_pathways': 8, 'top_pathway': 'Regulation of HSF1-mediated heat shock response'}, {'gene': 'TLR4', 'n_pathways': 8, 'top_pathway': 'ER-Phagosome pathway'}]
pd.DataFrame(pw_rows).sort_values('n_pathways', ascending=False)
| gene | n_pathways | top_pathway | |
|---|---|---|---|
| 0 | MYD88 | 8 | ER-Phagosome pathway |
| 2 | SIRT1 | 8 | Regulation of HSF1-mediated heat shock response |
| 3 | TLR4 | 8 | ER-Phagosome pathway |
| 1 | NAMPT | 3 | BMAL1:CLOCK,NPAS2 activates circadian expression |
5. Hypothesis ranking (2 hypotheses)¶
hyp_data = [('SIRT1/PGC-1α Axis Activation to Preserve Mitochondrial ', 0.778), ('TLR4/MyD88/NF-κB Axis Blockade to Interrupt LPS-Mediate', 0.703)]
titles = [h[0] for h in hyp_data][::-1]
scores = [h[1] for h in hyp_data][::-1]
fig, ax = plt.subplots(figsize=(10, max(8, len(titles)*0.4)))
colors = ['#ef5350' if s >= 0.6 else '#ffa726' if s >= 0.5 else '#66bb6a' for s in scores]
ax.barh(range(len(titles)), scores, color=colors)
ax.set_yticks(range(len(titles))); ax.set_yticklabels(titles, fontsize=7)
ax.set_xlabel('Composite Score'); ax.set_title('How do gut microbiome-derived metabolites SCFAs LPS TMAO influence alpha-synuclein aggregation and dopaminergic neuron survival via vagal nerve signaling in Parkinson disease')
ax.grid(axis='x', alpha=0.3)
plt.tight_layout(); plt.show()
labels = ['SIRT1/PGC-1α Axis Activation to Preserve', 'TLR4/MyD88/NF-κB Axis Blockade to Interr']
matrix = np.array([[0.72, 0.78, 0.82, 0.88, 0.0, 0.82, 0.78, 0.8, 0.75], [0.65, 0.55, 0.7, 0.72, 0.0, 0.7, 0.65, 0.72, 0.58]])
dims = ['novelty_score', 'feasibility_score', 'impact_score', 'mechanistic_plausibility_score', 'clinical_relevance_score', 'data_availability_score', 'reproducibility_score', 'druggability_score', 'safety_profile_score']
if matrix.size:
fig, ax = plt.subplots(figsize=(10, 5))
im = ax.imshow(matrix, cmap='RdYlGn', aspect='auto', vmin=0, vmax=1)
ax.set_xticks(range(len(dims)))
ax.set_xticklabels([d.replace('_score','').replace('_',' ').title() for d in dims],
rotation=45, ha='right', fontsize=8)
ax.set_yticks(range(len(labels))); ax.set_yticklabels(labels, fontsize=7)
ax.set_title('Score dimensions — hypotheses')
plt.colorbar(im, ax=ax, shrink=0.8)
plt.tight_layout(); plt.show()
else:
print('No score data available')
6. PubMed literature per hypothesis¶
Hypothesis 1: SIRT1/PGC-1α Axis Activation to Preserve Mitochondrial Resiliency Agai¶
Target genes: SIRT1, PGC-1α (PPARGC1A), NAMPT · Composite score: 0.778
Gut-derived LPS and TMAO drive chronic neuroinflammation that impairs mitochondrial function in dopaminergic neurons. The SIRT1/PGC-1α signaling axis coordinates antioxidant response and mitochondrial biogenesis; however, this protective pathway is downregulated in PD. NAMPT-catalyzed NAD+ salvage p
print('No PubMed results for hypothesis h-26b9f3e7')
No PubMed results for hypothesis h-26b9f3e7
Hypothesis 2: TLR4/MyD88/NF-κB Axis Blockade to Interrupt LPS-Mediated Gut-Brain Neu¶
Target genes: TLR4, MyD88 (MYD88), NF-κB (NFKB1) · Composite score: 0.703
Circulating LPS from gut dysbiosis activates TLR4 signaling in both intestinal epithelial cells and CNS microglia, triggering MyD88-dependent NF-κB activation and pro-inflammatory cytokine release. Subdiaphragmatic vagus nerve serves as a conduit for this inflammatory signal to the brainstem dorsal
print('No PubMed results for hypothesis h-21d25124')
No PubMed results for hypothesis h-21d25124
7. Knowledge graph edges (2 total)¶
edge_data = [{'source': 'SIRT1, PGC-1α (PPARGC1A), NAMP', 'relation': 'promoted: SIRT1/PGC-1α Ax', 'target': 'neurodegeneration', 'strength': 0.65}, {'source': 'TLR4, MyD88 (MYD88), NF-κB (NF', 'relation': 'promoted: TLR4/MyD88/NF-κ', 'target': 'neurodegeneration', 'strength': 0.57}]
if edge_data:
pd.DataFrame(edge_data).head(25)
else:
print('No KG edge data available')
Caveats¶
This notebook uses real Forge tool calls from live APIs:
- Enrichment is against curated gene-set libraries (Enrichr)
- STRING/Reactome/HPA/MyGene reflect curated knowledge
- PubMed literature is search-relevance ranked, not systematic review