Networkx parse gml写入不可用的gml文件

2024-09-28 21:44:27 发布

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

我一直试图在networkx gml中解析一些附加属性,以便以后使用,但遇到了一个问题。在

当从Cytoscape获得gml文件时,networkx输出它自己无法读取的gml文件。在

即Cytoscape->;Into networkx->;Output->;Into networkx->;错误:

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

现在,错误请求在节点后面再加一个]的值(也就是说让图形忽略边),如果这样做,图形就会工作。但是,它不再有任何边。在

为了充分测试这一点,我做了“Cytoscape->;Into networkx->Output”,根本不更改代码,只需:

^{pr2}$

然后读到:

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

误差仍然是可重复的。所以我假设这与networkx如何编写gml文件有关。在

我使用的两个文件是:

如果有人能对为什么会发生这样的事情有一些了解,我们将不胜感激!在


Tags: 文件gtnetworkx图形output属性错误pyparsing
2条回答

这是NetworkX中生成嵌套属性(本例中为边缘图形数据)时的一个错误。 额外的一组引号错误地添加到“Line”属性中。在

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

Pyparsing并不是识别何时发生解析错误的最聪明的库。库的较新版本确实支持一些更好的错误识别,但是它们需要对解析器进行一些更新以获取这些信息。在

在没有看到解析器的情况下,从您的描述来看,解析器似乎希望看到如下内容:

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

结果是它成功地通过了“节点束…”,然后在“可选边束…”部分的一个边中发现了一些语法问题。因为这是可选的,所以只要在节点后面有一个结束的']',事情仍然有效。这就是为什么会得到pyparsing异常消息。但真正的问题是其中一个边缘有一个错误。在

要诊断这个问题,请尝试只给解析器前几个边。然后继续添加越来越多的边,直到您得到pyparsing错误-最近添加的边包含了严重的语法错误。在

相关问题 更多 >