2013-02-15 93 views
0

我将一个图形投影到其中一个节点集合上,但结果投影具有比原始节点集合更多的节点,并且奇怪地说,这个“额外”节点只是一个对应于G中的节点id的数字,而不是完整的(节点,数据)元组。双节点投影中节点数量多于节点集合

C=set(n for n,d in G.nodes(data=True) if d['bipartite']==0) 
len(C) 
>>109813 
BC=bipartite.projected_graph(G,C) 
len(BC) 
>>112570 
len(BC)-len(C) 
>>2757 

BC上的所有'额外'节点只是一个数字(对应于G中的节点ID)。这个额外的2757节点来自哪里?我期望双向投影图具有与它投影到的节点集中的节点数相同数量的节点。有任何想法吗?

可能的额外有用的信息:

len(G) 
>>117679 

回答

0

很可能你的图不是相对于你的节点集, 例如二部

In [1]: import networkx as nx 

In [2]: from networkx import bipartite 

In [3]: G = nx.path_graph(5) # two parts, [0,2,4],[1,3] 

In [4]: bipartite.projected_graph(G,[0,2,4]).nodes() 
Out[4]: [0, 2, 4] # OK 

In [5]: bipartite.projected_graph(G,[0,2,3]).nodes() 
Out[5]: [0, 1, 2, 3, 4] # maybe not expected or correct 

这可能会被视为一个错误,但该文件并警告说,没有二部检查是做投影之前完成。