NetworkX读取Cytoscape json错误?

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

我正在尝试将Cytoscape Json(*cyjs)读入NetworkX图形。到目前为止运气不好,我也尝试了其他格式。以下是一个示例输入:

{
  "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,是的,您所指的代码对我来说不适用-我没有时间调查。我用一些简单的代码编辑了上面的答案。