python - ipycytoscape 和 networkx 对象交换
问题描述
从 ipycytoscape 文档中,我可以看到以下内容:
import ipycytoscape as cs
from ipycytoscape import *
import networkx as nx
# === create custom node class (inherits from cytoscape node class)
class CustomNode(cs.Node):
def __init__(self, name, classes=''):
super().__init__()
self.data['id'] = name
self.classes = classes
n1 = CustomNode("node 1", classes='class1')
n2 = CustomNode("node 2", classes='class2')
# === create graph, add custom nodes and an edge
G = nx.Graph()
G.add_node(n1)
G.add_node(n2)
G.add_edge(n1, n2, directed=True)
我的问题是一个基本问题,而不是寻求代码方面的帮助。上面的 n1 和 n2 是使用从 ipycytoscape 类 CustomNode(cs.Node) 继承的类构建的。但是它们被添加为networkx图的节点!
这怎么可能?我的意思是将 ipycytoscape 对象添加到 networkx 对象中。
解决方案
来自:https ://networkx.org/documentation/stable/tutorial.html#what-to-use-as-nodes-and-edges
您可能会注意到节点和边未指定为 NetworkX 对象。这使您可以自由地将有意义的项目用作节点和边。最常见的选择是数字或字符串,但节点可以是任何可散列对象(None 除外),并且可以使用 G.add_edge(n1, n2, object=x) 将边与任何对象 x 关联。
所以这不是 ipycytoscape 特有的,您可以使用任何自定义对象作为 networkx 的节点。像这样:
import networkx as nx
class myClass:
def __init__(self, something):
self.something = something
n1 = myClass(53)
n2 = myClass("node 2")
# === create graph, add custom nodes and an edge
G = nx.Graph()
G.add_node(n1)
G.add_node(n2)
G.add_edge(n1, n2, directed=True)
从 ipycytoscape 节点对象继承只是为了使它更容易与 ipycytoscape 一起工作。
推荐阅读
- mysql - 计算与 2 个枚举列相关的平均值
- reactjs - 从 redux 获得第一个响应后如何调用支持的 API?
- r - 我基本上试图运行一个模拟循环,从我的储蓄账户金额中减去生活费用
- mysql - 如何根据源列值的长度从第二个连接表中选择可以连接到两列中的任何一列的行
- java - Google 应用引擎 Maven 原型 HelloWorld 端点项目
- c++ - 迭代器的模板参数:函数在调用时推断类型?
- java - 如何在viewpager中显示片段之间的高程阴影?
- python - 无法使用 python 和 opencv 保存视频
- python - Python3:如何显示长时间运行的黑盒函数的“秒表”样式时间
- rust - Rust 中具有特征的对象的泛型类型转换