关于 igraph 发布和其他事项
igraph 0.6 是 igraph 的一个重要新版本。它包含了许多新功能和重大变化,大量的错误修复和改进。和往常一样,我们感谢那些发送评论、错误报告、问题的人,特别是那些贡献代码的人。
请看下面主要变更的列表,其中包含指向文档相关部分的链接。所有新功能都列在此处。
igraph 支持来自 R 和 Python 的 Nexus 网络存储库。 Nexus 是一个在线网络数据集数据库。您可以搜索 Nexus 并直接从 R 和 Python 下载网络。有关详细信息,请参阅文档。
igraph 的 Python 接口现在支持 Python 3。当前版本已在 Windows、Linux 和 Mac OS X 上使用 Python 3.2 进行了测试。请通过常用渠道报告您在使用 Python 3.x 中的 igraph 时遇到的任何错误。
通过精确的模块化优化进行社区结构检测。由于模块化优化是一个 NP 完全问题,因此这仅适用于小型图,Python 手册。
添加了 Blondel 等人的多级模块化优化算法。请参阅文档。
感谢 Emmanuel Navarro 的代码,我们现在支持 InfoMAP 社区查找方法。更多。
Newman 和 Girvan 的边介数社区检测方法现在也适用于加权图。请参阅文档。
我们添加了一些函数来比较各种社区结构。请参阅文档。
凝聚块查找函数已在 C 中从头开始重写。它们现在快得多,并且具有更好的 API。请参阅文档。
个性化 PageRank 分数。请参阅文档。
权威度和中心度分数、介数和紧密度计算现在都支持边权重。请参阅文档。
Igraph 现在实现了杉山布局算法,用于分层有向无环图。请参阅文档。
Igraph 现在实现了 push-relabel 算法和 Kuhn-Munkres 算法(也称为匈牙利方法),以查找无权和加权二分图中的最大匹配。请参阅文档。
Python 接口现在以特殊方式处理 name
属性。属性的值在后台进行索引,从而可以在分摊常数时间内检索具有给定名称的顶点。此外,大多数图形查询方法都接受顶点名称以及顶点索引。请参阅文档以获取更多信息。
R 使用的相同图形摘要格式现在也被 Python 采用。使用 print
语句打印图形现在以简洁的格式打印摘要和边列表
>>> print karate
IGRAPH UNW- 34 78 -- Zachary's karate club network
+ attr: Author (g), Citation (g), name (g), Faction (v), id (v), name(v),
weight (e)
+ edges (vertex names):
Mr Hi -- Actor 2, Actor 3, Actor 4, Actor 5, ...
Actor 2 -- Mr Hi, Actor 3, Actor 4, ...
...
使用 summary()
函数(在 igraph 命名空间中)打印图形仅打印简短摘要,而不打印边列表
>>> summary(karate)
IGRAPH UNW- 34 78 -- Zachary's karate club network
+ attr: Author (g), Citation (g), name (g), Faction (v), id (v), name(v),
weight (e)
使用 summary(graph, full=True)
打印图形会打印摘要、边列表、顶点和边属性。
您可以将图形视为虚拟邻接矩阵。有关详细信息,请参阅文档。
您可以使用阴影区域在图形图上标记顶点组。默认情况下,使用此技术绘制社区和凝聚块。请参阅 Graph.__plot__
函数的 mark_groups
参数。
Python 接口中的图形现在由图形绘制器类绘制,而不是由单一的绘图函数绘制。这允许人们用自定义图形绘制器替换默认图形绘制器;例如,一个将 igraph 图形发送到 UbiGraph 显示或 Cytoscape 的绘制器。默认图形绘制器还允许使用可插拔的顶点形状和边绘制器来部分自定义绘图。
在 R 和 Python 中,当操作图形时,许多 igraph 函数现在保留顶点、边和图形属性。还可以使用灵活的 API 组合属性。有关更多信息,请参阅 Python 文档中许多图形方法的 combine_edges
和 combine_attrs
参数。
name
顶点属性中给出。Nexus.get()
、Nexus.info()
、Nexus.list()
和 Nexus.search()
。Graph.community_multilevel()
。compare_communities()
。Graph.community_optimal_modularity()
。Graph.community_infomap()
。Graph.community_edge_betweenness()
。Graph.eccentricity()
) 和半径 (Graph.radius()
) 计算。Graph.get_shortest_paths()
的最短路径计算现在可以返回沿最短路径的顶点或边 ID。Graph.get_all_shortest_paths()
现在支持边权重。Graph.neighborhood()
检索顶点的邻域Graph.pagerank()
。Graph.authority_score()
) 和中心 (Graph.hub_score()
) 分数现在支持边权重。Graph.evcent()
现在适用于有向图。Graph.read()
中支持 DL 文件格式。请参阅 http://www.analytictech.com/networks/dataentry.htm。Graph.write()
中写入 LEDA 文件格式。Graph.layout_star()
。Graph.layout_mds()
Graph.layout_grid()
, Graph.layout_grid_3d()
Graph.layout_sugiyama()
。Graph.__plot__()
的 mark_groups
关键字参数在图上标记顶点组。默认情况下,使用此方式绘制社区和凝聚块。请注意,plot()
当然也接受相同的关键字参数。AbstractGraphDrawer
派生。该框架允许实现自定义图形绘制器,例如 UbiGraphDrawer
或 CytoscapeDrawer
。边由边绘制器类(从 AbstractEdgeDrawer
派生)绘制,现在可以通过 ShapeDrawers
实现自定义顶点形状。Graph.__plot__()
的 autocurve
和 edge_curved
关键字参数。请注意,plot()
当然也接受这些参数。rescale()
函数,用于将数值列表重新缩放到不同的范围,适用于绘图。Graph.Static_Fitness()
, Graph.Static_Power_Law()
。Graph.Barabasi()
已重写,现在支持三种算法,默认算法不会生成多重边或环边。图形生成过程现在可以从提供的图形开始。Graph.Watts_Strogatz()
现在可以创建没有环边的图形。Graph.simplify()
、Graph.contract_vertices()
和 Graph.to_undirected()
的 combine_edges
和 combine_attrs
关键字参数组合。print()
打印简短的信息标头和边列表,而 summary()
仅打印标头。summary()
还理解控制应添加输出的哪些部分的关键字参数;请参阅 GraphSummary
类。Graph.motifs_randesu()
Graph.transitivity_local_undirected()
Graph.cohesive_blocks()
Graph.feedback_arc_set()
Graph.similarity_jaccard_pairs()
和类似的函数。Graph.isomorphic_vf2()
, Graph.count_isomorphisms.vf2()
, Graph.get_isomorphisms_vf2()
, Graph.subisomorphic_vf2()
, Graph.count_subisomorphisms_vf2()
, Graph.get_subisomorphisms_vf2()
)。Graph.assortativity()
, Graph.assortativity_nominal()
和 Graph.assortativity_degree()
。Graph.subgraph_edges()
。Graph.has_multiple()
用于判断图形是否具有多重边。Graph.diversity()
。Graph.laplacian()
) 现在支持边权重。Graph.bipartite_projection()
计算边的多重性。Graph.contract_vertices()
。我们还修复了大量错误,抱歉,此处无法全部列出。您可以查看我们在 https://bugs.launchpad.net/igraph 上的错误跟踪器,以检查是否已修复错误。感谢所有报告错误的人。特别感谢 Minh Van Nguyen 的大量错误报告、文档修复和贡献的代码!