繁体   English   中英

我可以使用此CSV加载带有密码的neo4j图吗?

[英]Can I use this CSV to load a neo4j graph with cypher?

我是一名试图为药物建立酶数据库模型的医生,并且从CSV文件开始,该文件用于将数据加载到Gephi图形布局程序中。 我了解图数据库的功能,但是对cypher并不了解:

当前的CSV具有以下格式:

source;target;arc_type; <- this is an header needed for Gephi import
artemisinin;2B6;induces;
...
amiodarone;1A2;represses;
...
3A457;carbamazepine;metabolizes;

这些样本记录显示了三种类型的关系。 药物可以抑制或增加细胞色素,并且细胞色素可以代谢药物。

有没有办法使用此CSV加载到neo4j并创建图形的方法?

非常感谢你。

用neo4j术语, 关系必须具有“类型”,并且节点可以具有任意数量的标签 看起来您的用例可以从用DrugCytochrome标记节点中受益。

这是您的用例可能的neo4j数据模型:

(:Drug)-[:MODULATES {induces: false}]->(:Cytochrome)
(:Cytochrome)-[:METABOLIZES]->(:Drug)

induces属性具有布尔值,指示药物是诱导(真)还是抑制(假)相关细胞色素。

以下是一个(有点复杂)查询,它从CSV文件生成上述数据模型:

USING PERIODIC COMMIT 500
LOAD CSV WITH HEADERS FROM 'file:///Drugs.csv' AS line FIELDTERMINATOR ';'
WITH line,
  CASE line.arc_type
    WHEN 'metabolizes' THEN {a: [1]}
    WHEN 'induces' THEN {b: [true]}
    ELSE {b: [false]}
  END AS todo
FOREACH (ignored IN todo.a |
  MERGE (c:Cytochrome {id: line.source})
  MERGE (d:Drug {id: line.target})
  MERGE (c)-[:METABOLIZES]->(d)
)
FOREACH (induces IN todo.b |
  MERGE (d:Drug {id: line.source})
  MERGE (c:Cytochrome {id: line.target})
  MERGE (d)-[:MODULATES {induces: induces}]->(c)
)

如果IN后面的值为空,则FOREACH子句不执行任何操作。

是的,有可能,但是您需要安装APOC:Neo4j的有用存储过程的列表。 您可以在这里找到它: https : //neo4j-contrib.github.io/neo4j-apoc-procedures/

然后,您应该将CSV文件放入Neo4j的import文件夹中,然后运行以下查询:

第一个在:Node(name)上创建唯一约束:

CREATE CONSTRAINT ON (n:Node) ASSERT n.name IS UNIQUE;

然后此查询导入您的数据:

USING PERIODIC COMMIT 500
LOAD CSV WITH HEADERS FROM 'file:///my-csv-file.csv' AS line
  MERGE (n:Node {name:line.source})
  MERGE (m:Node {name:line.target})
  CALL apoc.create.relationship(n, line.arc_type,{​}, m)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM