如何在Neo4j中利用指定数据构建糖酵解代谢通路?
嘿,我来帮你搞定在Neo4j里搭建糖酵解通路的事儿!结合你提到的生物实体和glycolysis_bioentities.csv数据,我整理了一套实操步骤,一步步来就能搞定~
1. 先理清实体类型
首先把你提到的生物实体分成两类,方便后续建模:
- 代谢物:α-D-glucose、glucose 6-phosphate、fructose 6-phosphate、"fructose 1,6-bisphosphate"、dihydroxyacetone phosphate、D-glyceraldehyde 3-phosphate、"1,3-bisphosphoglycerate"、3-phosphoglycerate、2-phosphoglycerate、phosphoenolpyruvate、pyruvate
- 酶:hexokinase、glucose-6-phosphatase、phosphoglucose isomerase、phosphofructokinase、"fructose-bisphosphate aldolase"
建议你的glycolysis_bioentities.csv里至少包含两列:entity_name(实体名称)和entity_type(标记是metabolite还是enzyme),这样导入时能快速区分。
2. 导入数据创建节点
先把你的csv文件放到Neo4j的import目录下(或者在LOAD CSV里指定正确的文件路径),然后执行以下Cypher命令创建节点:
创建代谢物节点
LOAD CSV WITH HEADERS FROM "file:///glycolysis_bioentities.csv" AS row WHERE row.entity_type = "metabolite" CREATE (m:Metabolite {name: row.entity_name})
创建酶节点
LOAD CSV WITH HEADERS FROM "file:///glycolysis_bioentities.csv" AS row WHERE row.entity_type = "enzyme" CREATE (e:Enzyme {name: row.entity_name})
如果你的csv里还有其他属性(比如代谢物的分子式、酶的EC编号),可以直接加到节点属性里,比如:
CREATE (m:Metabolite {name: row.entity_name, formula: row.formula})
3. 构建通路的核心关系
糖酵解通路的核心是代谢物之间的转化关系,以及酶对转化反应的催化关系。我把关键反应对应的Cypher命令整理好了,你可以逐个执行:
1. 葡萄糖 → 葡萄糖-6-磷酸(己糖激酶催化)
MATCH (g:Metabolite {name: "α-D-glucose"}), (g6p:Metabolite {name: "glucose 6-phosphate"}), (hk:Enzyme {name: "hexokinase"}) CREATE (g)-[:CONVERTS_TO {reaction: "Glucose phosphorylation", atp_used: 1}]->(g6p), (hk)-[:CATALYZES]->(g)-[:CONVERTS_TO]->(g6p)
2. 葡萄糖-6-磷酸 ↔ 果糖-6-磷酸(磷酸葡萄糖异构酶催化,可逆反应)
MATCH (g6p:Metabolite {name: "glucose 6-phosphate"}), (f6p:Metabolite {name: "fructose 6-phosphate"}), (pgi:Enzyme {name: "phosphoglucose isomerase"}) CREATE (g6p)-[:CONVERTS_TO {reaction: "Glucose-6-P isomerization", reversible: true}]->(f6p), (f6p)-[:CONVERTS_TO {reaction: "Glucose-6-P isomerization", reversible: true}]->(g6p), (pgi)-[:CATALYZES]->(g6p)-[:CONVERTS_TO]->(f6p)
3. 果糖-6-磷酸 → 果糖1,6-二磷酸(磷酸果糖激酶催化,关键限速步骤)
MATCH (f6p:Metabolite {name: "fructose 6-phosphate"}), (fbp:Metabolite {name: "fructose 1,6-bisphosphate"}), (pfk:Enzyme {name: "phosphofructokinase"}) CREATE (f6p)-[:CONVERTS_TO {reaction: "Fructose-6-P phosphorylation", atp_used: 1}]->(fbp), (pfk)-[:CATALYZES]->(f6p)-[:CONVERTS_TO]->(fbp)
4. 果糖1,6-二磷酸 → 二羟丙酮磷酸 + 甘油醛-3-磷酸(醛缩酶催化)
MATCH (fbp:Metabolite {name: "fructose 1,6-bisphosphate"}), (dhap:Metabolite {name: "dihydroxyacetone phosphate"}), (g3p:Metabolite {name: "D-glyceraldehyde 3-phosphate"}), (aldolase:Enzyme {name: "fructose-bisphosphate aldolase"}) CREATE (fbp)-[:CONVERTS_TO {reaction: "Fructose-1,6-BP cleavage"}]->(dhap), (fbp)-[:CONVERTS_TO {reaction: "Fructose-1,6-BP cleavage"}]->(g3p), (aldolase)-[:CATALYZES]->(fbp)-[:CONVERTS_TO]->(dhap), (aldolase)-[:CATALYZES]->(fbp)-[:CONVERTS_TO]->(g3p)
5. 二羟丙酮磷酸 ↔ 甘油醛-3-磷酸(可选补充)
如果你的通路需要这个可逆反应,可以添加:
MATCH (dhap:Metabolite {name: "dihydroxyacetone phosphate"}), (g3p:Metabolite {name: "D-glyceraldehyde 3-phosphate"}) CREATE (dhap)-[:CONVERTS_TO {reaction: "Triose phosphate isomerization", reversible: true}]->(g3p), (g3p)-[:CONVERTS_TO {reaction: "Triose phosphate isomerization", reversible: true}]->(dhap)
6. 甘油醛-3-磷酸 → 1,3-二磷酸甘油酸
MATCH (g3p:Metabolite {name: "D-glyceraldehyde 3-phosphate"}), (bgp:Metabolite {name: "1,3-bisphosphoglycerate"}) CREATE (g3p)-[:CONVERTS_TO {reaction: "G3P oxidation", nadh_produced: 1}]->(bgp)
7. 1,3-二磷酸甘油酸 → 3-磷酸甘油酸
MATCH (bgp:Metabolite {name: "1,3-bisphosphoglycerate"}), (pg3:Metabolite {name: "3-phosphoglycerate"}) CREATE (bgp)-[:CONVERTS_TO {reaction: "1,3-BPG dephosphorylation", atp_produced: 1}]->(pg3)
8. 3-磷酸甘油酸 → 2-磷酸甘油酸
MATCH (pg3:Metabolite {name: "3-phosphoglycerate"}), (pg2:Metabolite {name: "2-phosphoglycerate"}) CREATE (pg3)-[:CONVERTS_TO {reaction: "Phosphoglycerate mutase"}]->(pg2)
9. 2-磷酸甘油酸 → 磷酸烯醇式丙酮酸
MATCH (pg2:Metabolite {name: "2-phosphoglycerate"}), (pep:Metabolite {name: "phosphoenolpyruvate"}) CREATE (pg2)-[:CONVERTS_TO {reaction: "Enolase dehydration"}]->(pep)
10. 磷酸烯醇式丙酮酸 → 丙酮酸
MATCH (pep:Metabolite {name: "phosphoenolpyruvate"}), (pyr:Metabolite {name: "pyruvate"}) CREATE (pep)-[:CONVERTS_TO {reaction: "Pyruvate kinase", atp_produced: 1}]->(pyr)
11. 葡萄糖-6-磷酸 → 葡萄糖(葡萄糖-6-磷酸酶催化,糖异生方向)
MATCH (g6p:Metabolite {name: "glucose 6-phosphate"}), (g:Metabolite {name: "α-D-glucose"}), (g6pase:Enzyme {name: "glucose-6-phosphatase"}) CREATE (g6p)-[:CONVERTS_TO {reaction: "Glucose-6-P dephosphorylation"}]->(g), (g6pase)-[:CATALYZES]->(g6p)-[:CONVERTS_TO]->(g)
4. 验证与可视化通路
全部关系创建完成后,你可以用下面的Cypher命令查询整个通路并可视化:
MATCH path=(:Metabolite)-[:CONVERTS_TO*]->(:Metabolite) RETURN path
在Neo4j浏览器里执行后,切换到可视化视图,调整布局(比如用“层级布局”),就能看到和你目标图片一致的糖酵解通路啦~
小贴士
- 如果反应有更多细节(比如辅酶参与、反应方向),可以随时给
CONVERTS_TO关系添加更多属性 - 可逆反应用双向关系更符合生物实际,方便后续查询双向转化
- 若csv里实体名称有引号(比如"fructose 1,6-bisphosphate"),Cypher里匹配时要注意引号的一致性,或者提前处理csv去掉引号
内容的提问来源于stack exchange,提问作者Victoria Stuart
相关产品推荐
相关产品推荐

