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