如何将Vertice属性添加到使用TupleList创建的图形?

时间:2014-10-22 09:23:01

标签: python igraph

我有一份文件ID列表:

10.1.1.100.1022 10.1.1.133.7112 10.1.1.52.4809
10.1.1.100.1037 10.1.1.111.3104 10.1.1.14.3331 10.1.1.102.1525 10.1.1.108.8376 10.1.1.102.3750 10.1.1.164.6517 10.1.1.103.5318 10.1.1.100.2602
10.1.1.100.1045 10.1.1.106.5713 10.1.1.14.3960 10.1.1.156.2724
10.1.1.100.1057 10.1.1.111.8464 10.1.1.105.6486 10.1.1.138.784 10.1.1.121.2733
10.1.1.100.1062 10.1.1.13.9919 10.1.1.12.787 10.1.1.33.4425 10.1.1.19.1677 10.1.1.88.3931
10.1.1.100.1098 10.1.1.55.8054 10.1.1.47.3891 10.1.1.47.7464 10.1.1.38.6745 10.1.1.52.168 10.1.1.41.1417
10.1.1.100.1132 10.1.1.116.4594 10.1.1.128.174
10.1.1.100.1153 10.1.1.38.3827 10.1.1.18.7575 10.1.1.56.3738 10.1.1.110.7560 10.1.1.101.9958 10.1.1.28.7411 10.1.1.18.2975
10.1.1.100.1164 10.1.1.39.9796 10.1.1.104.2119 10.1.1.8.7906 10.1.1.131.2434 10.1.1.78.8998 10.1.1.6.6222
10.1.1.100.1196 10.1.1.153.7628 10.1.1.100.8001 10.1.1.31.2802 10.1.1.19.3462 10.1.1.128.9154

第一列是由同一行中的以下DOC引用的DOCID。

所以对于第一行 - 10.1.1.133.7112 - > 10.1.1.100.1022& 10.1.1.52.4809 - > 10.1.1.100.1022

我使用python-igraph TupleList创建了一个图形。这是列表:

  

[(' 10.1.1.133.7112',' 10.1.1.100.1022'),(' 10.1.1.52.4809',   ' 10.1.1.100.1022'),(' 10.1.1.111.3104',' 10.1.1.100.1037'),   (' 10.1.1.14.3331',' 10.1.1.100.1037'),(' 10.1.1.102.1525',   ' 10.1.1.100.1037'),(' 10.1.1.108.8376',' 10.1.1.100.1037'),   (' 10.1.1.102.3750',' 10.1.1.100.1037'),(' 10.1.1.164.6517',   ' 10.1.1.100.1037'),(' 10.1.1.103.5318',' 10.1.1.100.1037'),   (' 10.1.1.100.2602',' 10.1.1.100.1037'),(' 10.1.1.106.5713',   ' 10.1.1.100.1045'),(' 10.1.1.14.3960',' 10.1.1.100.1045'),   (' 10.1.1.156.2724',' 10.1.1.100.1045'),(' 10.1.1.111.8464',   ' 10.1.1.100.1057'),(' 10.1.1.105.6486',' 10.1.1.100.1057'),   (' 10.1.1.138.784',' 10.1.1.100.1057'),(' 10.1.1.121.2733',   ' 10.1.1.100.1057'),(' 10.1.1.13.9919',' 10.1.1.100.1062'),   (' 10.1.1.12.787',' 10.1.1.100.1062'),(' 10.1.1.33.4425',   ' 10.1.1.100.1062'),(' 10.1.1.19.1677',' 10.1.1.100.1062'),   (' 10.1.1.88.3931',' 10.1.1.100.1062'),(' 10.1.1.55.8054',   ' 10.1.1.100.1098'),(' 10.1.1.47.3891',' 10.1.1.100.1098'),   (' 10.1.1.47.7464',' 10.1.1.100.1098'),(' 10.1.1.38.6745',   ' 10.1.1.100.1098'),(' 10.1.1.52.168',' 10.1.1.100.1098'),   (' 10.1.1.41.1417',' 10.1.1.100.1098'),(' 10.1.1.116.4594',   ' 10.1.1.100.1132'),(' 10.1.1.128.174',' 10.1.1.100.1132'),   (' 10.1.1.38.3827',' 10.1.1.100.1153'),(' 10.1.1.18.7575',   ' 10.1.1.100.1153'),(' 10.1.1.56.3738',' 10.1.1.100.1153'),   (' 10.1.1.110.7560',' 10.1.1.100.1153'),(' 10.1.1.101.9958',   ' 10.1.1.100.1153'),(' 10.1.1.28.7411',' 10.1.1.100.1153'),   (' 10.1.1.18.2975',' 10.1.1.100.1153'),(' 10.1.1.39.9796',   ' 10.1.1.100.1164'),(' 10.1.1.104.2119',' 10.1.1.100.1164'),   (' 10.1.1.8.7906',' 10.1.1.100.1164'),(' 10.1.1.131.2434',   ' 10.1.1.100.1164'),(' 10.1.1.78.8998',' 10.1.1.100.1164'),   (' 10.1.1.6.6222',' 10.1.1.100.1164'),(' 10.1.1.153.7628',   ' 10.1.1.100.1196'),(' 10.1.1.100.8001',' 10.1.1.100.1196'),   (' 10.1.1.31.2802',' 10.1.1.100.1196'),(' 10.1.1.19.3462',   ' 10.1.1.100.1196'),(' 10.1.1.128.9154',' 10.1.1.100.1196')]

如何向使用TupleList创建的顶点添加属性?

2 个答案:

答案 0 :(得分:1)

每个Graph都有一个vs字段代表所有顶点的序列。可以将此字段作为常规Python字典进行操作以存储属性。您可以将属性添加/设置为所有顶点:

g = Graph.TupleList([...])
g.vs['attribute'] = ['attr1', 'attr2', 'attr3', ...]

或单独:

g.vs[0]['attribute'] = 'attr1'

有关详细信息,请查看有关如何set and retrieve attributes

的文档

答案 1 :(得分:1)

您可以使用 edge_attrs 参数直接在元组中添加属性:

g =  Graph.TupleList([ ('A','B',1,5),  ('A','C',2,6) , ... ],  edge_attrs=['weight','age'] )