configuration_model() 在 Networkx 1.10 中获得关键字参数 'create_using' 的多个值

configuration_model() got multiple values for keyword argument 'create_using' in Networkx 1.10

我在 python 2.7 中使用 networkx 1.9 并决定更新到最新的 1.10 版本。 在使用二分图生成器函数 configuration_model 时,我发现我之前使用的是:

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= 应该是什么吗?我阅读了源文件,但看不到需要什么!

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

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')

绘制生成的图形:

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

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

它将aseq解释为度数分布。然后它将第二个参数解释为 create_using 变量(如果第二个参数是可选的,则可以通过在函数调用中提供第二个参数或在函数调用中使用关键字 (more details)).所以它将其视为 create_using=bseq。然后你显式地给它传递了一个额外的值 create_using,所以它有多个值。您显然不是有意这样做,因此出现错误。

我相信 Abdallah 的回答向您展示了您真正想做的事情。


补充:我怀疑你真的打算进行这两个调用。

from networkx.algorithms import bipartite
import networkx.algorithms.bipartite as bipartite