2015-11-03 105 views
2

我在使用networkx 1.9与python 2.7并决定更新到最新的1.10版本。 使用二分图生成器功能configuration_model的时候,我发现我有什么使用前:configuration_model()在Networkx中为关键字参数'create_using'获取了多个值1.10

import networkx as nx 
from networkx.algorithms import bipartite 
import networkx.algorithms.bipartite as bipartite 
aseq=[1 2 1] 
bseq=[2 1 1] 
G =bipartite_configuration_model(aseq,bseq, create_using=None, seed=None) 

新版本:

G =configuration_model(aseq, bseq, create_using=None, seed=None) 

configuration_model() got multiple values for keyword argument 'create_using' 

没有工作了。任何想法是什么create_using =应该是?我阅读源文件,看不到需要什么!

回答

1

我不确定版本之间的差异,但对旧版本的小改动解决了问题。我所做的是为您的代码更改为:

the definition of aseq and bseq as they gave error:

aseq=[1, 2, 1] # with commas between degree sequences 
bseq=[2, 1, 1] 

Calling the configuration_model function

G = bipartite.configuration_model(aseq,bseq, create_using=None, seed=None) # you had an underscore instead of a '.' 
用一个简单的color_map

然后区分属于每个部分的节点如下:

color_map = [] 
for n in G.nodes(): 
    if G.node[n]['bipartite'] == 0: 
     color_map.append('blue') 
    else: color_map.append('green') 

绘制生成的图表:

enter image description here

至于create_using参数,您可以检查documentation。它表示可以使用它来确定返回图的类型。默认情况下,它是一个具有平行边的多图。

+1

谢谢!关于序列,这确实是一个错误,我实际上使用'nx.utils.create_degree_sequence(3,powerlaw_sequence,exponent = 2)'创建我的序列,这会导致逗号分隔的度序列。但我明白@Joel和你的回答是,单独编写配置模型而没有指定双方确实导致了我的错误...但读图生成器部分并没有帮助解释我需要写'bipartite.graph_generator'。再次感谢您澄清! – user3767071

1

bipartite_configuration_modelconfiguration_model是不同的命令。您的新代码调用configuration_model,为此只有一个节点分区。

它将aseq解释为度分布。然后它将第二个参数解释为create_using变量(如果第二个参数是可选的,则可以通过在函数调用中提供第二个参数或在函数调用(more details)中使用关键字来指定)。所以它看到,作为create_using=bseq。然后你明确地通过了一个额外的值create_using,所以它有多个值。你显然不是故意这样做的,因此错误。

我相信阿卜杜拉的答案会告诉你你实际上想做什么。


附加信息:我怀疑你是否真的想要做这两个调用。

from networkx.algorithms import bipartite 
import networkx.algorithms.bipartite as bipartite 
+0

确实...不是一个干净的代码...感谢您的帮助! – user3767071

相关问题