🧠 ADは「ネットワーク病」
- アルツハイマー病:
- Aβ
- Tau
- 炎症
- ミクログリア
- ミトコンドリア
- シナプス
- BBB
- APOE
- 老化
が相互作用するネットワーク疾患 - Tau
これからやる研究の全体像(ロードマップ)
① AD病態知識の構造化(知識グラフ)
↓
② 病態ネットワーク解析
↓
③ Key driver(支配ノード)探索
↓
④ 創薬ターゲット候補抽出
↓
⑤ 既存薬・化合物との接続
※現在地:①の入り口
STEP1 : AD病態知識グラフの作成
実際にNeo4jに入れる
JupyterLabのセルで以下を実行。
neo4j.py
def create_ad_core(tx):
tx.run("""
MERGE (app:Gene {name: "APP"})
MERGE (ab:Protein {name: "Amyloid-beta"})
MERGE (tau:Protein {name: "Tau"})
MERGE (syn:Process {name: "Synaptic dysfunction"})
MERGE (cog:Process {name: "Cognitive decline"})
MERGE (infl:Process {name: "Neuroinflammation"})
MERGE (app)-[:PRODUCES]->(ab)
MERGE (ab)-[:CAUSES]->(syn)
MERGE (syn)-[:LEADS_TO]->(cog)
MERGE (tau)-[:CAUSES]->(:Process {name: "Neurofibrillary tangle"})
MERGE (:Cell {name: "Microglia"})-[:MEDIATES]->(infl)
""")
with driver.session() as session:
session.execute_write(create_ad_core)
Neo4j Desktop → Query → 実行
query.py
MATCH (n)-[r]->(m)
RETURN n,r,m
以上を実行するとADの病態構造が可視化されるので、これを基に「ADとは何がどう繋がっている病気なのか」が構造として見えるようになる。
今回は以上。
次回はわけわかんない単語の解説と私の仮説を用いたneo4jを使った病理解明の続きをする。と思ったけど、キリが悪いのでここで書いとく。
- ・ノードって何?
- ・遺伝子(APP, APOE)
- ・タンパク質(Aβ, Tau)
- ・細胞(ミクログリア)
- ・病態(炎症、シナプス障害)
- =“主語になれるもの”
- ・タンパク質(Aβ, Tau)
- ・エッジって何?
- ・産生する
- ・活性化する
- ・抑制する
- ・引き起こす
- などの動詞
- ・活性化する
- ・知識グラフって何?
- 今まで
・論文を読む
・知識を頭でつなぐ
・因果関係を理解する
をやってきた。
- ・ノード(概念)
- ・エッジ(関係)
- としてコンピュータにそのまま渡してデータにしたもの。
- ・ノード(概念)
- ・ネットワーク病って何?
- 1個壊れて起きる病気でないもの。
- ・創薬ターゲットってどういう意味?
- 病態ネットワークの中で
- ・影響力が大きい点
- ・複数の経路を同時に制御できる点
- ・影響力が大きい点
ADの「骨格」をグラフにする
ADを「構造」として理解することを目的として次のノードとエッジの関係性をグラフ化する。
- ノード
- APP(遺伝子)
- Amyloid-beta(Aβ)
- Tau
- Microglia
- Neuroinflammation
- Synaptic dysfunction
- Cognitive decline
- Amyloid-beta(Aβ)
- エッジ
- PRODUCES
- CAUSES
- MEDIATES
- LEADS_TO
- CAUSES
JupyterLabで以下のコードを実行
node.py
def create_nodes(tx):
tx.run("""
MERGE (:Gene {name: "APP"})
MERGE (:Protein {name: "Amyloid-beta"})
MERGE (:Protein {name: "Tau"})
MERGE (:Cell {name: "Microglia"})
MERGE (:Process {name: "Neuroinflammation"})
MERGE (:Process {name: "Synaptic dysfunction"})
MERGE (:Process {name: "Cognitive decline"})
""")
with driver.session() as session:
session.execute_write(create_nodes)
上記のコードによりノードを作成。
edge.py
def create_edges(tx):
tx.run("""
MATCH (app:Gene {name:"APP"}),
(ab:Protein {name:"Amyloid-beta"}),
(syn:Process {name:"Synaptic dysfunction"}),
(cog:Process {name:"Cognitive decline"}),
(micro:Cell {name:"Microglia"}),
(infl:Process {name:"Neuroinflammation"}),
(tau:Protein {name:"Tau"})
MERGE (app)-[:PRODUCES]->(ab)
MERGE (ab)-[:CAUSES]->(syn)
MERGE (syn)-[:LEADS_TO]->(cog)
MERGE (ab)-[:ACTIVATES]->(micro)
MERGE (micro)-[:MEDIATES]->(infl)
MERGE (infl)-[:EXACERBATES]->(syn)
MERGE (tau)-[:CAUSES]->(:Process {name:"Neurofibrillary tangle"})
""")
with driver.session() as session:
session.execute_write(create_edges)
これにより、エッジを足す。
Neo4jで実行
以下のコードを実行。
query.py
MATCH (n)-[r]->(m)
RETURN n, r, m
APP(Gene)→ Aβ(Protein)→ Microglia(Cell)→ 炎症(Process)→ シナプス障害(Process)→ 認知低下(Process)の流れが見えてきた。
今回はここまで。
次回は私の仮説を織り交ぜてさらに深掘りしていく。
