XML数据的图形化可视化

2024-10-01 11:21:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个如下所示的XML文件:

<rebase>
   <Organism>
     <Name>Aminomonas paucivorans</Name>
       <Enzyme>M1.Apa12260I</Enzyme>
         <Motif>GGAGNNNNNGGC</Motif>
       <Enzyme>M2.Apa12260I</Enzyme>
         <Motif>GGAGNNNNNGGC</Motif>
   </Organism>
   <Organism>
    <Name>Bacillus cellulosilyticus</Name>
       <Enzyme>M1.BceNI</Enzyme>
         <Motif>CCCNNNNNCTC</Motif>
       <Enzyme>M2.BceNI</Enzyme>
         <Motif>CCCNNNNNCTC</Motif>
   </Organism>
</rebase>

我想将这个XML数据可视化为图形格式。连通性是这样的,很多enzymes可以包含公共的motifs,但是{}不能有类似的{}。我看了看d3.js,但我不认为它有我想要的。我对neo4j提供的可视化效果非常兴奋,但我需要从头开始学习。不过,我还没有找到任何关于通过XML数据集导入或创建neo4j中的图形的好教程。我知道在编程的世界里,任何事情都是可能的,所以我想知道如何将数据导入neo4j数据库(最好使用python)来可视化数据。在

更新

我试着遵循这个answer(这个问题下的第二个答案)。我创建了他建议的2CSV文件。但是查询有很多语法错误,例如:

  1. Invalid input 'S': expected 'n/N' (line 6, column 2) "USING PERIODIC COMMIT"
  2. WITH is required between CREATE and LOAD CSV (line 6, column 1) "MATCH (o:Organism { name: csvLine.name}),(m:Motif { name: csvLine.motif})"

我的cypher查询技能非常有限,而且我无法让任何imports工作,因此我自己修复查询是非常困难的。任何帮助都将不胜感激


Tags: 文件数据name可视化rebasexmlneo4jmotif
2条回答

为此,我建议直接使用gephi。至少一年前,它完美地工作了,它支持直接导入xml/csv数据格式,而且不需要使用neo4j作为预处理器。在

编辑

哦,我明白了,我想连接已经包括在内了。在这种情况下,必须将xml中的所有数据创建为一个单独的节点—每个enzyme和{}以及每个{}(带有参数name)的新节点。那些enzymenadmotif节点必须是唯一的,即没有重复。当创建一个organism节点时,可以通过关系将organism与其enzyme和{}节点连接起来。完成后,查询/可视化相似的节点就没有问题了,因为公共节点至少共享enzyme/motif中的一个。在

我不知道将数据xml导入到neo4j的任何聪明方法,但是将其转换为两个csv文件应该没有问题。csv的格式应该是:

第一个文件:

name,enzyme
Aminomonas paucivorans,M1.Apa12260I
Aminomonas paucivorans,M2.Apa12260I
Bacillus cellulosilyticus,M1.BceNI
Bacillus cellulosilyticus,M2.BceNI

第二个文件(我不明白为什么motif是重复的思想):

^{pr2}$

现在我们要做的是import,它创建了唯一的节点和关系(因此,上面的重复motifs只会转换成1个唯一的关系)(如果必要,也可以对同一个motif节点有多个关系):

(我不确定是否使用此导入,但它应该可以工作):

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file1.csv" AS csvLine
MATCH (o:Organism { name: csvLine.name}),(e:Enzyme { name: csvLine.enzyme})
CREATE (o)-[:has_enzyme]->(e) //or maybe CREATE UNIQUE?

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file2.csv" AS csvLine
MATCH (o:Organism { name: csvLine.name}),(m:Motif { name: csvLine.motif})
CREATE (o)-[:has_motif]->(m) //or maybe CREATE UNIQUE?

这将创建包含2个生物体节点、4个酶节点和2个motif节点的图。每个生物节点都应该与其酶和基序有关系。完成后,您可以前进到前面描述的可视化部分。在

还有一系列关于如何将XML导入Neo4j的文章

首先,您应该对数据的图形外观进行建模,您的用例需要哪些实体,以及哪些语义连接。在

一般来说,如果可以用python加载数据,可以使用py2neo或neo4jrestclient(参见http://neo4j.org/develop/python)将数据导入模型中。在

相关问题 更多 >