首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Networkx解析gml写入不可用的gml文件

Networkx解析gml写入不可用的gml文件
EN

Stack Overflow用户
提问于 2013-10-14 03:10:52
回答 2查看 1.3K关注 0票数 1

我一直试图解析networkx的一些附加属性,以供以后使用,并且遇到了一个问题。

当从Cytoscape给出gml文件时,networkx输出自己无法读取的gml文件。

例如,将->转换为networkx ->输出->到networkx ->错误:

代码语言:javascript
复制
pyparsing.ParseException: Expected "]" (at char 1116756), (line:71732, col:3)

现在,该错误在节点之后请求一个额外的] (AKA使图形忽略边缘),如果这样做,则该图可以工作。然而,它不再有任何边缘。

为了全面测试这一点,我完成了“->到networkx ->输出”,而没有更改代码,只是:

代码语言:javascript
复制
DG = nx.read_gml("KeggComplete.gml", relabel = True)
nx.write_gml(DG, "KeggCompleteEng.gml")
exit()

然后用以下内容阅读:

代码语言:javascript
复制
BasicGraph = nx.read_gml("KeggCompleteEng.gml", relabel = True)

而且这个错误仍然是可复制的。因此,我认为这与networkx编写gml文件的方式有关。

我使用的两个文件是:

如果有人能给一些洞察力,为什么会发生这种情况,这将是最感谢的!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-14 08:42:49

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

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

票数 1
EN

Stack Overflow用户

发布于 2013-10-14 03:41:38

当解析错误发生时,parsing不是最聪明的库。最近版本的库确实支持一些更好的错误识别,但它们需要对解析器进行一些更新才能获得这些信息。

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

代码语言:javascript
复制
[
  [
  bunch of nodes...
  ]
  [
  optional bunch of edges...
  ]
]

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

要诊断这一点,请尝试给解析器提供最初的几个边。然后继续添加越来越多的边,直到得到pyparsing -最近添加的边包含关键的语法错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19352960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档