NetworkX读取Cytoscape json错误?
我正在尝试将Cytoscape Json(*cyjs)读入NetworkX图形。到目前为止运气不好,我也尝试了其他格式。以下是一个示例输入:NetworkX读取Cytoscape json错误?,json,networkx,cytoscape,Json,Networkx,Cytoscape,我正在尝试将Cytoscape Json(*cyjs)读入NetworkX图形。到目前为止运气不好,我也尝试了其他格式。以下是一个示例输入: { "format_version" : "1.0", "generated_by" : "cytoscape-3.8.2", "target_cytoscapejs_version" : "~2.1", "da
{
"format_version" : "1.0",
"generated_by" : "cytoscape-3.8.2",
"target_cytoscapejs_version" : "~2.1",
"data" : {
"shared_name" : "Network",
"name" : "Network",
"SUID" : 172,
"__Annotations" : [ ],
"selected" : true
},
"elements" : {
"nodes" : [ {
"data" : {
"id" : "187",
"shared_name" : "Node 3",
"name" : "Node 3",
"SUID" : 187,
"selected" : false
},
"position" : {
"x" : -387.81580333030377,
"y" : 6.552640965689666
},
"selected" : false
}, {
"data" : {
"id" : "185",
"shared_name" : "Node 2",
"name" : "Node 2",
"SUID" : 185,
"selected" : false
},
"position" : {
"x" : -236.0,
"y" : -66.0
},
"selected" : false
}, {
"data" : {
"id" : "183",
"shared_name" : "Node 1",
"name" : "Node 1",
"SUID" : 183,
"selected" : false
},
"position" : {
"x" : -392.0,
"y" : -89.0
},
"selected" : false
} ],
"edges" : [ {
"data" : {
"id" : "189",
"source" : "187",
"target" : "185",
"shared_name" : "Node 3 (interacts with) Node 2",
"shared_interaction" : "interacts with",
"name" : "Node 3 (interacts with) Node 2",
"interaction" : "interacts with",
"SUID" : 189,
"selected" : false
},
"selected" : false
}, {
"data" : {
"id" : "191",
"source" : "183",
"target" : "185",
"shared_name" : "Node 1 (interacts with) Node 2",
"shared_interaction" : "interacts with",
"name" : "Node 1 (interacts with) Node 2",
"interaction" : "interacts with",
"SUID" : 191,
"selected" : false
},
"selected" : false
} ]
}
}
这是一个简单的有向图:
当我尝试使用Netorkx阅读它时
import json
from networkx.readwrite.json_graph import cytoscape_data, cytoscape_graph
cyjs = json.load(open("Network.cyjs"))
graph = cytoscape_graph(cyjs)
我得到以下信息:
...
graph = cytoscape_graph(cyjs)
File "/$HOMEDIR/.local/lib/python3.8/site-packages/networkx/readwrite/json_graph/cytoscape.py", line 89, in cytoscape_graph
node = d["data"]["value"]
KeyError: 'value'
有人有从Cytoscape成功输入NetworkX的工作示例吗
任何帮助或见解都将不胜感激。使用json编写您自己的解析器,提取边缘列表,从边缘列表构建图形。类似于的内容(确保此处的名称是唯一的)
将networkx导入为nx
导入json
def cyjs2graph(cyjs_文件名):
cyjson=json.load(打开(cyjs文件名))
name_from_id={}
对于cyjson[“元素”][“节点”]中的节点:
name_from_id[node['data']['id']]=node['data']['name']
边缘列表=[]
对于cyjson[“元素”][“边”]中的边:
src_id=edge['data']['source']
src\u name=来自\u id的名称[src\u id]
tgt_id=edge['data']['target']
tgt\u name=来自\u id的名称[tgt\u id]
edge\u list.append([src\u name,tgt\u name])
graph=nx.from_edgelist(边列表,使用=nx.DiGraph创建)
返回图
如果您已经实现了这一点,请与其他面临相同问题的人分享您的解决方案。也许您还可以在这里找到networkx实现的差异:谢谢@Sparky05,是的,您所指的代码对我来说不适用-我没有时间调查。我用一些简单的代码编辑了上面的答案。