Networkx解析GML写不可用GML文件(Networkx parse gml writing

2019-10-18 19:01发布

我一直试图在一些附加的属性来解析为使用networkx GML后来,我碰到的一个问题。

当从Cytoscape中给予了GML文件,networkx输出,它本身无法读取GML文件。

即Cytoscape的 - >进入networkx - >输出 - >进入networkx - >错误:

pyparsing.ParseException: Expected "]" (at char 1116756), (line:71732, col:3)

既然错误请求节点之后的其他(AKA使得图形忽略边缘),如果你这样做,图形作品。 但是,它不再有任何的边缘。

为了全面测试这一点,我做了“的Cytoscape - >进入networkx - >输出”,而完全不改变代码,只需:

DG = nx.read_gml("KeggComplete.gml", relabel = True)
nx.write_gml(DG, "KeggCompleteEng.gml")
exit()

然后阅读在:

BasicGraph = nx.read_gml("KeggCompleteEng.gml", relabel = True)

并且误差仍然是重复的。 所以我想这是与如何networkx被写入GML文件做。

这两个文件我使用的是:

  • 从原来的Cytoscape
  • Networkx输出

如果有人可以给一些见解,为什么这可能发生的事情会很感激!

Answer 1:

这是在产生NetworkX嵌套属性(在这种情况下边缘的图形数据)时的错误。 一组额外的引号被错误地添加到“线”属性。

此修复程序已经合并,因为这拉请求的一部分: https://github.com/networkx/networkx/pull/981



Answer 2:

Pyparsing是不是最聪明的图书馆当涉及到发生分析错误时识别。 最近图书馆的版本都支持一些更好的错误识别,但他们需要一些更新解析器来获取这些信息。

没有看到分析器,从你的描述,这听起来像解析器希望看到这样的:

[
  [
  bunch of nodes...
  ]
  [
  optional bunch of edges...
  ]
]

什么情况是,它成功地获得过“一束节点...”,然后查找在“可选的一群边缘的......”一部分边缘的一个部分的语法问题。 由于这是可选的,事情仍然是有效的,如果只是那节点后关闭“]”。 这就是为什么你会得到pyparsing异常消息。 但真正的问题是,其中一个边缘有一个错字。

要诊断此,试着给解析器开头的几个边缘。 然后不断增加越来越多的边缘,直到你得到pyparsing错误 - 最近添加的边沿含有关键的语法错误。



文章来源: Networkx parse gml writing unusable gml files