Release Notes
There are a bunch of new features in the library itself, and
other important changes in the life of the project. Thanks everyone
for sending code and reporting bugs!
igraph @ github
igraph’s development has moved from Launchpad to github.
This has actually happened several month ago, but never
announced officially. The place for reporting bugs is
at https://github.com/igraph/igraph/issues.
New homepage
igraph’s homepage is now hosted at http://igraph.org, and it is
brand new. We wanted to make it easier to use and modern.
Better nightly downloads
You can download nightly builds from igraph at
http://igraph.org/nightly. Source and binary R packages (for windows
and OSX), are all built.
R: new features and bug fixes
- Added a demo for hierarchical random graphs, invoke it via
demo(hrg).
- Make attribute prefixes optional when writing a GraphML file.
- Added function
mod.matrix().
- Support edge weights in leading eigenvector community detection.
- Added the LAD library for checking (sub)graph isomorphism, version 1.
- Logical attributes.
- Added
layout.bipartite() function, a simple two-column layout
for bipartite graphs.
- Support incidence matrices in bipartite Pajek files.
- Pajek files in matrix format are now directed by default, unless they
are bipartite.
- Support weighted (and signed) networks in Pajek when file is in
matrix format.
- Fixed a bug in
barabasi.game(), algorithm psumtree-multiple
just froze.
- Function
layout.mds() by default returns a layout matrix now.
- Added support for Boolean attributes in the GraphML and GML readers
and writer.
- Change MDS layout coordinates, first dim is according to first
eigenvalue, etc.
plot.communities() (plot.igraph(), really) draws a border
around the marked groups by default.
- printing graphs now converts the
name graph attribute to character
- Convenience functions to query and set all attributes at once:
vertex.attriubutes(), graph.attributes() and edge.attributes().
- Function
graph.disjoint.union() handles attributes now.
- Rewrite
graph.union() to handle attributes properly.
rewire(): now supports the generation and destruction of loops.
- Erdos-Renyi type bipartite random graphs:
bipartite.random.game().
- Support the new options (predecessors and inbound_edges) of
get_shortest_paths(), reorganized the output of
get.shortest.paths() completely.
- Added
graphlets() and related functions.
- Fix modularity values of multilevel community if there are no merges
at all.
- Fixed bug when deleting edges with FALSE in the matrix notation.
- Fix
bonpow() and alpha.centrality() and make sure that the
sparse solver is called.
tkplot() news: enable setting coordinates from the command line
via tkplot.setcoords() and access to the canvas via
tkplot.canvas().
- Fixed a potential crash in
igraph_edge_connectivity(), because of an
un-initialized variable in the C code.
- Avoiding overflow in
closeness() and related functions.
- Check for NAs after converting ‘type’ to logical in
bipartite.projection().
graphNEL conversion functions only load the ‘graph’ package if it was
not loaded before and they load it at the end of the search path,
to minimize conflicts.
- Fixed a bug when creating graphs from adjacency matrices, we now convert
them to double, in case they are integers.
- Fixed an invalid memory read (and a potential crash) in the infomap
community detection.
- Fixed a memory leak in the functions with attribute combinations.
- Removed some memory leaks from the SCG functions.
- Fixed some memory leaks in the ray tracer.
- Fixed memory leak in
graph.bfs() and graph.dfs().
- Fix a bug in triad census that set the first element of the result
to NaN.
- Fixed a crash in
is.chordal().
- Fixed a bug in weighted mudularity calculation, sum of the weights
was truncated to an integer.
- Fixed a bug in weighted multilevel communtiies, the maximum weight
was rounded to an integer.
- Fixed a bug in
centralization.closeness.tmax().
- Reimplement push-relabel maximum flow with gap heuristics.
- Maximum flow functions now return some statistics about the push
relabel algorithm steps.
- Function
arpack() now gives error message if unknown options are
given.
- Fixed missing whitespace in Pajek writer when the ID attribute was
numeric.
- Fixed a bug that caused the GML reader to crash when the ID
attribute was non-numeric.
- Fixed issue #500, potential segfault if the two graphs in BLISS
differ in the number of vertices or edges.
- Added
igraphtest() function.
- Fix dyad census instability, sometimes incorrect results were
reported.
- Dyad census detects integer overflow now and gives a warning.
- Function
add.edges() does not allow now zeros in the vertex set.
- Added a function to count the number of adjacent triangles:
adjacenct.triangles().
- Added
graph.eigen() function, eigenproblems on adjacency matrices.
- Added some workarounds for functions that create a lot of
graphs,
decompose.graph() and graph.neighborhood() use it.
Fixes issue #508.
- Added weights support for
optimal.community(), closes #511.
- Faster maximal clique finding.
- Added a function to count maximum cliques.
- Set operations: union, intersection, disjoint, union, difference,
compose now work based on vertex names (if they are present) and
keep attributes, closes #20.
- Removed functions
graph.intersection.by.name(),
graph.union.by.name(), graph.difference.by.name().
- The
+ operator on graphs now calls graph.union() if both
argument graphs are named, and calls graph.disjoint.union()
otherwise.
- Added function
igraph.version().
- Generate graphs from a stochastic block model:
sbm.game().
- Do not suggest the stats, XML, jpeg and png packages any more.
- Fixed a
set.vertex/edge.attribute bug that changed both
graph objects, after copying (#533)
- Fixed a bug in
barabasi.game that caused crashes.
- We use PRPACK to calculate PageRank scores
see https://github.com/dgleich/prpack
- Added
'which argument to bipartite.projection (#307).
- Add
normalized argument to closeness functions, fixes issue #3.
- R: better handling of complex attributes,
[[ on vertex/edge sets,
fixes #231.
- Implement the
start argument in hrg.fit (#225).
- Set root vertex in Reingold-Tilford layout, solves #473.
- Fix betweenness normalization for directed graphs.
- Fixed a bug in
graph.density that resulted in incorrect values for
undirected graphs with loops
- Fixed a bug when many graphs were created in one C call
(e.g. by
graph.decompose), causing #550.
- Fixed sparse
graph.adjacency bugs for graphs with one edge,
and graphs with zero edges.
- Fixed a bug that made Bellman-Ford shortest paths calculations fail.
- Fixed a
graph.adjacency bug for undirected, weighted graphs and
sparse matrices.
main, sub, xlab and ylab are proper graphics parameters
now (#555).
graph.data.frame coerces arguments to data frame (#557).
- Fixed a minimum cut bug for weighted undirected graphs (#564).
- Functions for simulating epidemics (SIR model) on networks,
see the
sir function.
- Fixed argument ordering in
graph.mincut and related functions.
- Avoid copying attributes in query functions and print (#573),
these functions are much faster now for graphs with many
vertices/edges and attributes.
- Speed up writing GML and GraphML files, if some attributes are
integer. It was really-really slow.
- Fix multiple root vertices in
graph.bfs (#575).