Site icon R-bloggers

[R-pkgs] igraph 0.6 released

Dear All, we have released version 0.6 of the igraph package today. This is a major new version, with a lot of new features, and (sadly) it is not completely compatible with code that was written for the previous igraph versions. (See “Major new features” below for details.) I have included below a list of (bigger) changes. Please see the details in the release notes and the NEWS section at the igraph homepage: http://igraph.sf.net Best Regards, Gabor ===================== Major new features ===================== – Vertices and edges are numbered from 1 instead of 0. Note that this makes most of the old R igraph code incompatible with igraph 0.6. If you want to use your old code, please use the igraph0 package. See more at http://igraph.sf.net/relnotes-< wbr>0.6.html. – The ‘[‘ and ‘[[‘ operators can now be used on igraph graphs, for ‘[‘ the graph behaves as an adjacency matrix, for ‘[[‘ is is treated as an adjacency list. It is also much simpler to manipulate the graph structure, i.e. add/remove edges and vertices, with some new operators. See more at ?graph.structure. – In all functions that take a vector or list of vertices or edges, vertex/edge names can be given instead of the numeric ids. – New package ‘igraphdata’, contains a number of data sets that can be used directly in igraph. – Igraph now supports loading graphs from the Nexus online data repository, see nexus.get(), nexus.info(), nexus.list() and nexus.search(). – All the community structure finding algorithm return a ‘communities’ object now, which has a bunch of useful operations, see ?communities for details. – Vertex and edge attributes are handled much better now. They are kept whenever possible, and can be combined via a flexible API. See ?attribute.combination. – R now prints igraph graphs to the screen in a more structured and informative way. The output of summary() was also updated accordingly. ===================== R: Other new features ===================== – It is possible to mark vertex groups on plots, via shading. Communities and cohesive blocks are plotted using this by default. – Some igraph demos are now available, see a list via ‘demo(package=”igraph”)’. – igraph now tries to select the optimal layout algorithm, when plotting a graph. – Added a simple console, using Tcl/Tk. It contains a text area for status messages and also a status bar. See igraph.console(). – Reimplemented igraph options support, see igraph.options() and getIgraphOpt(). – Igraph functions can now print status messages. =========================== R: New or updated functions =========================== Community detection ——————- – The multi-level modularity optimization community structure detection algorithm by Blondel et al. was added, see multilevel.community(). – Distance between two community structures: compare.communities(). – Community structure via exact modularity optimization, optimal.community(). – Hierarchical random graphs and community finding, porting the code from Aaron Clauset. See hrg.game(), hrg.fit(), etc. – Added the InfoMAP community finding method, thanks to Emmanuel Navarro for the code. See infomap.community(). Shortest paths ————– – Eccentricity (eccentricity()), and radius (radius()) calculations. – Shortest path calculations with get.shortest.paths() can now return the edges along the shortest paths. – get.all.shortest.paths() now supports edge weights. Centrality ———- – Centralization scores for degree, closeness, betweenness and eigenvector centrality. See centralization.scores(). – Personalized Page-Rank scores, see page.rank(). – Subgraph centrality, subgraph.centrality(). – Authority (authority.score()) and hub (hub.score()) scores support edge weights now. – Support edge weights in betweenness and closeness calculations. – bonpow(), Bonacich’s power centrality and alpha.centrality(), Alpha centrality calculations now use sparse matrices by default. – Eigenvector centrality calculation, evcent() now works for directed graphs. – Betweenness calculation can now use arbitrarily large integers, this is required for some lattice-like graphs to avoid overflow. Input/output and file formats —————————– – Support the DL file format in graph.read(). See http://www.analytictech.com/< wbr>networks/dataentry.htm. – Support writing the LEDA file format in write.graph(). Plotting and layouts ——————– – Star layout: layout.star(). – Layout based on multidimensional scaling, layout.mds(). – New layouts layout.grid() and layout.grid.3d(). – Sugiyama layout algorithm for layered directed acyclic graphs, layout.sugiyama(). Graph generators —————- – New graph generators: static.fitness.game(), static.power.law.game(). – barabasi.game() was rewritten and it supports three algorithms now, the default algorithm does not generate multiple or loop edges. The graph generation process can now start from a supplied graph. – The Watts-Strogatz graph generator, igraph_watts_strogatz() can now create graphs without loop edges. Others —— – Added the Spectral Coarse Graining algorithm, see scg(). – The cohesive.blocks() function was rewritten in C, it is much faster now. It has a nicer API, too. See demo(“cohesive”). – Added generic breadth-first and depth-first search implementations with many callbacks, graph.bfs() and graph_dfs(). – Support vertex and edge coloring in the VF2 (sub)graph isomorphism functions (graph.isomorphic.vf2(), graph.count.isomorphisms.vf2()< wbr>, graph.get.isomorphisms.vf2(), graph.subisomorphic.vf2(), graph.count.subisomorphisms.< wbr>vf2(), graph.get.subisomorphisms.vf2(< wbr>)). – Assortativity coefficient, assortativity(), assortativity.nominal() and assortativity.degree(). – Vertex operators that work by vertex names: graph.intersection.by.name(), graph.union.by.name(), graph.difference.by.name(). Thanks to Magnus Torfason for contributing his code! – Function to calculate a non-induced subraph: subgraph.edges(). – More comprehensive maximum flow and minimum cut calculation, see functions graph.maxflow(), graph.mincut(), stCuts(), stMincuts(). – Check whether a directed graph is a DAG, is.dag(). – has.multiple() to decide whether a graph has multiple edges. – Added a function to calculate a diversity score for the vertices, graph.diversity(). – Graph Laplacian calculation (graph.laplacian()) supports edge weights now. – Biconnected component calculation, biconnected.components() now returns the components themselves. – bipartite.projection() calculates multiplicity of edges. – Maximum cardinality search: maximum.cardinality.search() and chordality test: is.chordal() – Convex hull computation, convex.hull(). – Contract vertices, contract.vertices().