Which tau PTMs are both disease-specific and druggable with selective small molecule inhibitors?¶
Notebook ID: nb-SDA-2026-04-13-gap-debate-20260412-094612-a2e3bd09 · Analysis: SDA-2026-04-13-gap-debate-20260412-094612-a2e3bd09 · Generated: 2026-04-21T18:42:23
Research question¶
The debate highlighted promising PTMs like K280 acetylation and O-GlcNAcylation but didn't resolve which modifications can be selectively targeted without affecting physiological tau function. This specificity gap is critical for developing PTM-based therapeutics that avoid broad cellular toxicity.
Source: Debate session sess_SDA-2026-04-09-gap-debate-20260409-201742-1e8eb3bd_20260412-091129 (Analysis: SDA-2026-04-09-gap-debate-20260409-201742-1e8eb3bd)
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.65 · Rounds: 4
1. Target gene annotations (MyGene)¶
import pandas as pd
ann_rows = [{'gene': 'HDAC6', 'name': 'histone deacetylase 6', 'summary': 'Histones play a critical role in transcriptional regulation, cell cycle progression, and developmental events. Histone a'}, {'gene': 'MGEA5', 'name': 'O-GlcNAcase', 'summary': 'The dynamic modification of cytoplasmic and nuclear proteins by O-linked N-acetylglucosamine (O-GlcNAc) addition and rem'}]
pd.DataFrame(ann_rows)
| gene | name | summary | |
|---|---|---|---|
| 0 | HDAC6 | histone deacetylase 6 | Histones play a critical role in transcription... |
| 1 | MGEA5 | O-GlcNAcase | The dynamic modification of cytoplasmic and nu... |
2. GO Biological Process enrichment (Enrichr)¶
go_bp = [{'rank': 1, 'term': 'Cilium Disassembly (GO:0061523)', 'p_value': 0.0004999362185987752, 'odds_ratio': 4998.5, 'genes': ['HDAC6']}, {'rank': 2, 'term': 'Inclusion Body Assembly (GO:0070841)', 'p_value': 0.0004999362185987752, 'odds_ratio': 4998.5, 'genes': ['HDAC6']}, {'rank': 3, 'term': 'Spermidine Metabolic Process (GO:0008216)', 'p_value': 0.0006998773712248138, 'odds_ratio': 3332.0, 'genes': ['HDAC6']}, {'rank': 4, 'term': 'Peptidyl-Lysine Deacetylation (GO:0034983)', 'p_value': 0.0006998773712248138, 'odds_ratio': 3332.0, 'genes': ['HDAC6']}, {'rank': 5, 'term': 'Negative Regulation Of Protein-Containing Complex Disassembly (GO:0043242)', 'p_value': 0.0007998405838081707, 'odds_ratio': 2855.8571428571427, 'genes': ['HDAC6']}, {'rank': 6, 'term': 'Response To Misfolded Protein (GO:0051788)', 'p_value': 0.0007998405838081707, 'odds_ratio': 2855.8571428571427, 'genes': ['HDAC6']}, {'rank': 7, 'term': 'Negative Regulation Of Oxidoreductase Activity (GO:0051354)', 'p_value': 0.0009997522177478497, 'odds_ratio': 2221.0, 'genes': ['HDAC6']}, {'rank': 8, 'term': 'Polyamine Metabolic Process (GO:0006595)', 'p_value': 0.0010997006223853795, 'odds_ratio': 1998.8, 'genes': ['HDAC6']}, {'rank': 9, 'term': 'Regulation Of Microtubule-Based Movement (GO:0060632)', 'p_value': 0.0010997006223853795, 'odds_ratio': 1998.8, 'genes': ['HDAC6']}, {'rank': 10, 'term': 'Axonal Transport Of Mitochondrion (GO:0019896)', 'p_value': 0.0011996440770550066, 'odds_ratio': 1817.0, 'genes': ['HDAC6']}]
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 | Cilium Disassembly (GO:0061523) | 1 | 5.00e-04 | 4998.5 | HDAC6 |
| 1 | Inclusion Body Assembly (GO:0070841) | 1 | 5.00e-04 | 4998.5 | HDAC6 |
| 2 | Spermidine Metabolic Process (GO:0008216) | 1 | 7.00e-04 | 3332.0 | HDAC6 |
| 3 | Peptidyl-Lysine Deacetylation (GO:0034983) | 1 | 7.00e-04 | 3332.0 | HDAC6 |
| 4 | Negative Regulation Of Protein-Containing Comp... | 1 | 8.00e-04 | 2855.9 | HDAC6 |
| 5 | Response To Misfolded Protein (GO:0051788) | 1 | 8.00e-04 | 2855.9 | HDAC6 |
| 6 | Negative Regulation Of Oxidoreductase Activity... | 1 | 1.00e-03 | 2221.0 | HDAC6 |
| 7 | Polyamine Metabolic Process (GO:0006595) | 1 | 1.10e-03 | 1998.8 | HDAC6 |
| 8 | Regulation Of Microtubule-Based Movement (GO:0... | 1 | 1.10e-03 | 1998.8 | HDAC6 |
| 9 | Axonal Transport Of Mitochondrion (GO:0019896) | 1 | 1.20e-03 | 1817.0 | HDAC6 |
import matplotlib.pyplot as plt
import numpy as np
go_bp = [{'rank': 1, 'term': 'Cilium Disassembly (GO:0061523)', 'p_value': 0.0004999362185987752, 'odds_ratio': 4998.5, 'genes': ['HDAC6']}, {'rank': 2, 'term': 'Inclusion Body Assembly (GO:0070841)', 'p_value': 0.0004999362185987752, 'odds_ratio': 4998.5, 'genes': ['HDAC6']}, {'rank': 3, 'term': 'Spermidine Metabolic Process (GO:0008216)', 'p_value': 0.0006998773712248138, 'odds_ratio': 3332.0, 'genes': ['HDAC6']}, {'rank': 4, 'term': 'Peptidyl-Lysine Deacetylation (GO:0034983)', 'p_value': 0.0006998773712248138, 'odds_ratio': 3332.0, 'genes': ['HDAC6']}, {'rank': 5, 'term': 'Negative Regulation Of Protein-Containing Complex Disassembly (GO:0043242)', 'p_value': 0.0007998405838081707, 'odds_ratio': 2855.8571428571427, 'genes': ['HDAC6']}, {'rank': 6, 'term': 'Response To Misfolded Protein (GO:0051788)', 'p_value': 0.0007998405838081707, 'odds_ratio': 2855.8571428571427, 'genes': ['HDAC6']}, {'rank': 7, 'term': 'Negative Regulation Of Oxidoreductase Activity (GO:0051354)', 'p_value': 0.0009997522177478497, 'odds_ratio': 2221.0, 'genes': ['HDAC6']}, {'rank': 8, 'term': 'Polyamine Metabolic Process (GO:0006595)', 'p_value': 0.0010997006223853795, 'odds_ratio': 1998.8, 'genes': ['HDAC6']}]
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-2n9g9yzo 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¶
print('No STRING PPI data available')
No STRING PPI data available
4. Reactome pathway footprint¶
pw_rows = [{'gene': 'HDAC6', 'n_pathways': 8, 'top_pathway': 'NOTCH1 Intracellular Domain Regulates Transcription'}, {'gene': 'MGEA5', 'n_pathways': 0, 'top_pathway': '—'}]
pd.DataFrame(pw_rows).sort_values('n_pathways', ascending=False)
| gene | n_pathways | top_pathway | |
|---|---|---|---|
| 0 | HDAC6 | 8 | NOTCH1 Intracellular Domain Regulates Transcri... |
| 1 | MGEA5 | 0 | — |
5. Hypothesis ranking (2 hypotheses)¶
hyp_data = [('HDAC6 Inhibition for Dual Restoration of Microtubule St', 0.484), ("Selective OGA Inhibition as 'Tau Stabilization' Strateg", 0.458)]
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('Which tau PTMs are both disease-specific and druggable with selective small molecule inhibitors?')
ax.grid(axis='x', alpha=0.3)
plt.tight_layout(); plt.show()
labels = ['HDAC6 Inhibition for Dual Restoration of', "Selective OGA Inhibition as 'Tau Stabili"]
matrix = np.array([[0.42, 0.48, 0.65, 0.58, 0.0, 0.6, 0.48, 0.62, 0.45], [0.38, 0.4, 0.52, 0.55, 0.0, 0.65, 0.5, 0.68, 0.28]])
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: HDAC6 Inhibition for Dual Restoration of Microtubule Stability and Aut¶
Target genes: HDAC6 · Composite score: 0.484
Selective HDAC6 inhibitors (T-518, Tubastatin A, ACY-1215) simultaneously increase α-tubulin acetylation to restore microtubule stability disrupted by tau pathology, reduce tau hyperphosphorylation through improved vesicular transport, and enhance autophagic clearance of aggregated tau. The selectiv
print('No PubMed results for hypothesis h-f86127b5')
No PubMed results for hypothesis h-f86127b5
Hypothesis 2: Selective OGA Inhibition as 'Tau Stabilization' Strategy Without Phosp¶
Target genes: MGEA5 (OGA) · Composite score: 0.458
Background and Rationale
Tauopathies, including Alzheimer's disease, frontotemporal dementia, and progressive supranuclear palsy, are characterized by the pathological aggregation of tau protein into neurofibrillary tangles and oligomeric species that drive neurodegeneration. The microtubule-as
print('No PubMed results for hypothesis h-46e028b6')
No PubMed results for hypothesis h-46e028b6
7. Knowledge graph edges (8 total)¶
edge_data = [{'source': 'h-f86127b5', 'relation': 'targets', 'target': 'HDAC6', 'strength': 0.5}, {'source': 'h-46e028b6', 'relation': 'targets', 'target': 'MGEA5 (OGA)', 'strength': 0.5}, {'source': 'MGEA5 (OGA)', 'relation': 'associated_with', 'target': 'neurodegeneration', 'strength': 0.4}, {'source': 'MGEA5 (OGA)', 'relation': 'implicated_in', 'target': 'neurodegeneration', 'strength': 0.4}, {'source': 'MGEA5 (OGA)', 'relation': 'involved_in', 'target': 'o_glcnacase___glycosylation_si', 'strength': 0.4}, {'source': 'HDAC6', 'relation': 'implicated_in', 'target': 'neurodegeneration', 'strength': 0.4}, {'source': 'HDAC6', 'relation': 'involved_in', 'target': 'microtubule_dynamics_and_stabi', 'strength': 0.4}, {'source': 'MGEA5 (OGA)', 'relation': 'co_associated_with', 'target': 'OGA', 'strength': 0.3}]
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