Skip to content

Releases: igraph/rigraph

igraph 2.3.0

23 Apr 03:56

Choose a tag to compare

New features

  • Add make_wheel() to expose igraph_wheel() (#1561, #2409).

  • Add transitive_closure() function to compute the transitive closure of a graph (#1350, #2413).

  • Add make_full_multipartite() and make_turan() graph constructors (#1562, #2406).

  • Add count_loops() (#1379, #2414).

  • Add make_circulant() to expose igraph_circulant() (#1563, #2407).

  • Add mean_degree() (#1380, #2415).

  • Add count_reachable() function (#1349, #2412).

  • Add invalidate_cache() (#1387, #2416).

  • graphlet_basis() returns a list of vertices in the "cliques" component instead of a raw integer matrix (#2470, #2472).

  • vertices() now errors on duplicate attribute names (#1248, #2430).

  • Implement generic mechanism for layout_() modifiers, allowing layout algorithms to be composed and adjusted uniformly (#1473, #2435).

  • Change graph constructors to use explicit named arguments instead of positional ones (#2466, #2467).

  • Improve formatting of error messages originating from the C library (#2202, #2515).

  • Functions that accept a single vertex now check that exactly one vertex is passed (#2556).

Bug fixes

  • Error call in with_vertex_()/with_edge_() should report the public make_() function, not the internal helper (#2609).

  • Not all loops are plotted when a graph has multiple loops at the same vertex (#2594, #2595).

  • Fix hrg_game_impl() which produced incorrect results (#2577, #2578).

  • graphlet_proj() no longer erroneously assigns class "igraphHRG" to the returned graph.

  • Support character labels in assortativity_nominal() in addition to integer type codes (#1283, #2432).

  • Fix uninitialized variable warnings when building with R 4.5 on Windows (#2526, #2527).

  • modularity() now uses the "weights" edge attribute automatically when no weights argument is supplied.

  • Fix alpha_centrality() crash when weights is set to a custom edge attribute name rather than a numeric vector (#915, #2403).

  • Fix matrix lists for output when returning multiple matrices from C.

Documentation

  • Error messages throughout the package now use the cli package for consistent, styled output instead of base R stop() (#731, #2588).

  • The R Consortium is listed as a funder with its ROR ID in the package metadata (#2587).

  • Fixes to the pkgdown reference index (#2590, #2592).

  • Documentation pages for R functions now automatically link to the corresponding C library documentation (#2518).

Testing

  • Structured unit tests alongside snapshot tests have been added for all autogenerated _impl functions in test-aaa-auto.R, verifying argument passing and return values (#2448, #2449).

Internal

igraph 2.2.3

10 Apr 03:50

Choose a tag to compare

Chore

  • Remove calls to non-API functions.

igraph 2.2.2

14 Feb 03:15

Choose a tag to compare

Chore

  • Remove calls to unused APIs only used in the conversion of very old graph objects.

igraph 2.2.1

29 Oct 02:25

Choose a tag to compare

Chore

  • Fix ASAN checks.

  • Add protection to fix rchk error.

Testing

  • Improve centralitystress test (#2214).

  • Fix flaky test.

igraph 2.2.0

15 Oct 02:17

Choose a tag to compare

Update C core to version 0.10.17. See https://github.com/igraph/rigraph/blob/20552ef94aed6ae4b23465ae8c7e4d3b0e558c71/src/vendor/cigraph/CHANGELOG.md for a complete changelog, in particular the section "Breaking changes".

Features

  • Generate almost all R implementations (#2047).

  • Expose align_layout() and add to layout_nicely() to align layout with axis automatically (#1907, #1957, #1958).

  • Expose simple_cycles() which lists all simple cycles (#1573, #1580).

  • Expose is_complete(), is_clique() and is_ivs() (#1316, #1388, #1581).

  • Expose find_cycle() (#1471, #1571).

  • Expose feedback_vertex_set() to find a minimum feedback vertex set in a graph (#1446, #1447, #1560).

  • Add weights parameter to local_scan() (#1082, #1448, #1982).

  • Add more layouts to tkplot() (#160, #1967).

  • Add plot(mark.lwd = ) to change line width of mark.groups (#306, #1898).

  • Add plot(vertex.label.angle = , vertex.label.adj = ) arguments to rotate vertex labels (#106, #1899).

  • Add relative size scaling to vertices in plot() (@gvegayon, #172).

  • Split sample_bipartite() into two functions for the G(n, m) and G(n, p) case (#630, #1692).

  • Implement multi attribute assignment (#55, #1916) and adding attributes via data frames (#1373, #1669, #1716). Support factors in graph_from_data_frame() (#34, #1829).

  • All _hrg() functions check their argument (#1074, #1699).

  • HRG printing with type = "auto" uses "plain" for large trees (#1879).

  • get_edge_ids() accepts data frames and matrices (#1663).

  • igraph_version() returns version of C core in an attribute (#1208, #1781).

Breaking changes

  • Breaking change: change arguments default and order for graph_from_lcf() (#1858, #1872).

  • Breaking change: Subset assignment of a graph avoids addition of double edges and ignores loops unless the new loops argument is set to TRUE (#1662, #1661).

  • Breaking change: remove deprecated neimode parameter from bfs() and dfs() (#1105, #1526).

  • Breaking change: stricter deprecation of non-functional parameters of layout_with_kk() and layout_with_fr() (#1108, #1628).

Bug fixes

  • NA attribute values are replaced with default values in plot() (#293, #1707).

  • NA checking only in from/to columns of edge data frame (#1906).

  • Keep vertex attribute type for disjoint_union() (#1640, #1909).

  • Error in bipartite projection if type is not a vertex attribute (#898, #1889).

  • Do not try to destroy non-initialized SIR objects upon error (#1888).

  • Added proper NA handling for matrix inputs (#917, #918, #1828).

  • Remove string matrix support from functions operating on biadjacency matrices (#1540, #1542, #1803).

  • Integer vectors are validated before transferring them to the C library (#1434, #1582).

  • Changed base location for graph_from_graphdb() and added tests (#1712, #1732).

  • Recycling of logical vectors when indexing into edge/vertex selectors now throws an error (#848, #1731).

  • Use function() instead of (x) in arrow.mode (#1722).

  • Temporarily disable generating an interface for igraph_simple_cycles_callback() as the framework for handling callback functions is not yet present.

Plotting bug fixes

  • Adjust loop position to vertex size in plot() (#1980).

  • Don't rescale plot coordinates to [-1,1] x [-1,1] by default (#1492, #1956, #1962).

  • Fail if "layout" attribute doesn't match the number of vertices (#1880).

  • Automatically arrange loops in plot() (#407, #556, #1881).

  • Vectorized drawing of arrows in plot() (#257, #1904).

  • Allow more than one edge label font family in plot() (#37, #1896).

  • Pie shapes now work as intended (#1882, #1883).

  • Loops not plotted on canvas (#1799, #1800).

  • Replace NA values in label attributes in plot() with default values (#1796, #1797).

  • Removed duplicated plotting of arrow heads (#640, #1709).

  • Correct mapping of edge label properties in plots when loops are present (#157, #1706).

Documentation

  • Welcome Maëlle Salmon and David Schoch as authors (#1733), add author links (#1821).

  • Remove demos (#2008).

  • Add 2023 preprint (#1240, #1984).

  • Update allcontributors info (#1975).

  • Link to replacements of deprecated functions (#1823).

  • Add documentation of all file formats to read_graph() and write_graph() (#777, #1969). Recommend saveRDS() and readRDS() for saving and loading graphs (#1242, #1700).

  • Document return value of make_clusters() (#1794).

  • Clarify that girth() returns Inf for acyclic graphs (@eqmooring, #1831).

  • Clarify the use of weights in layout_with_kk().

  • Refer to current latest version of R in troubleshooting page.

  • Fix typos in laplacian_matrix() documentation.

  • Document ellipsis in cohesion() (#971, #1985).

  • Correct the description of the weights parameter of hits_scores().

  • Better describe output of all_shortest_paths() (#1029, #1778).

  • make_graph() now supports "Groetzsch" as an alias of "Grotzsch". This change was implemented in the C core.

  • Update description of order parameter of ego() and related functions (#1746).

  • Added lifecycle table (#1525).

  • Add more about igraph.r2cdocs in the contributing guide (#1686, #1697).

Performance

  • Accelerate check if an index sequence corresponds to the entire list of vertices (#1427, #1818).

  • Faster single bracket querying of a graph (#1465, #1658).

igraph 2.1.4

25 Jan 01:53

Choose a tag to compare

Testing

  • Tweak tests that use the graph package.

igraph 2.1.3

09 Jan 02:31

Choose a tag to compare

Features

  • Use _pv destroy functions to satisfy ASAN checks (#1630).

  • Use safe accessor to vector elements (#1633).

Chore

  • Replace graph.isomorphic() with isomorphic() (#1583, #1623).

Documentation

  • Convert plot.common.Rd to roxygen2 (#1424, #1636).

  • Remove broken example from graph_from_graphdb() manual page (#1622, #1637).

  • Document argument for NCOL format in read_graph() (#1621).

  • Make documentation of disjoint_union() consistent with behavior (#1587, #1641).

  • Add central note about experimental functions (#1624).

igraph 2.1.2

10 Dec 02:17

Choose a tag to compare

Bug fixes

  • adjacent_vertices() and incident_edges() are now correct if the "return.vs.es" option is FALSE (@stibu81, #1605, #1606).

  • Fix protection errors reported by rchk (#1592).

  • Fix the incorrect handling of the sample parameter in sample_motifs() and ensure that the default sample.size is integer (#1568).

Documentation

  • Clarify what type of graph each community detection function supports.

  • Improve ?read_graph and ?write_graph documentation.

  • Improve all_simple_paths() documentation.

  • cluster_optimal() does support directed graphs.

Testing

  • Test handling of "return.vs.es" in several functions (@stibu81, #1610).

igraph 2.1.1

21 Oct 19:50

Choose a tag to compare

See https://github.com/igraph/rigraph/blob/9828d7b11be330f994f07ae93a071b356eced903/src/vendor/cigraph/CHANGELOG.md for a complete changelog, in particular the section "Breaking changes".

Lifecycle

Breaking changes

  • Breaking change: remove tkigraph from {igraph} proper (#1474).
  • Breaking change: Hard-deprecate get.edge() and layout.grid.3d() which have been deprecated for 10 years (#1398).
  • Breaking change: use rlang::arg_match() in igraph.match.arg() (#1165).

In-progress deprecations

We are working towards a more consistent interface, especially as regards function naming: ultimately we want the igraph functions to use snake case.
Please update your scripts and codebases as soon as you can.

  • Deprecate eigen_centrality(scale = ) (#1543).
  • Put deprecation message at the beginning not the end of the similarity functions (#1549).
  • Add independence_number() as an alias of ivs_size() (#1522).
  • Add get_edge_ids() as an alias of get.edge.ids() (#1510).
  • Increase the deprecation signal to a warning for hub.score() and authority.score() both replaced by hits_scores() (#1352).
  • Soft-deprecate erdos.renyi.game() and random.graph.game() (#1509).

Features

C library

New functionality

  • Add p.value and p.precision arguments to fit_power_law() to control the computation of the p-value (#1546, #1386).
  • Add max_degree() (#1403).
  • Add experimental sample_chung_lu() (#1416).
  • Rename methods available for sample_degseq() and add the "edge.switching.simple" method (#1376).
  • Weight support for eccentricity() and radius() (#1211).
  • Add some argument checking to add_shape() (#1478).

More informative errors

  • Export .from() etc. with behavior similar to dplyr::across() (#1436): functions like .from() are meant to be used inside [ but now if an user misuses them, the error is more informative.

Bug fixes

  • Fix including diagonal elements in dense adjacency matrices (#1437).
  • Align the body of graph.lattice() with its replacement make_lattice() (#1439).
  • Use deprecated() as default value for circular argument to make_lattice() (#1431).
  • subgraph_centrality() now ignores edge directions (#1414).
  • Remove unintended type conversions when using disjoint_union() (#1375).
  • Add missing PROTECT() (#1382).
  • Fix reading of LGL and NCOL files (broken in 2.0.0) (#1347).
  • Fixed potential memory leak in R_igraph_community_to_membership2() (#1367).

Documentation

  • Update allcontributors table (#1552).
  • Use mathjax for now (#1538).
  • Improve the manual page of sample_() (#1477).
  • Improve cross-links from make_() manual page (#1476).
  • Update is_separator() documentation based on C docs (#1467).
  • Add DOI to citation (#1450).
  • Improve documentation of normalization methods for laplacian_matrix() (#1420).
  • Fix typos in ?plot.common (@gvegayon) (#1413).
  • Fix sample_degseq() example (#1297).
  • Fix graph_from_adjacency_matrix() examples to avoid warnings (#1302).
  • Replace \dontrun{} with @examplesIf (#1307).
  • Improve sample_gnp() examples.
  • Improve centralization docs.
  • Further clarifications for betweenness() (#1489).
  • Clarify how betweenness with cutoff is normalized.
  • Fix centr_eigen_tmax() docs.
  • Make edge_density() examples relevant.
  • Improve eigen_centrality() documentation.
  • Improved cluster_edge_betweenness() documentation.
  • sample_forestfire() tests and example (#1318).

Developer-facing docs

  • Add slightly tweaked boilerplate CONTRIBUTING.md (#1423).
  • Update troubleshooting document.
  • Use {devtag} for internal function docs (#1507).
  • Make .igraph.progress() and .igraph.status() more internal (#1516).

Internal

  • Prepare for libxml2 depending on bcrypt, use pkg-config (#1556, @kalibera).

igraph 2.0.3

21 Oct 19:48

Choose a tag to compare

See https://github.com/igraph/rigraph/blob/3299d31/src/vendor/cigraph/CHANGELOG.md for a complete changelog of the bundled C core, and https://github.com/igraph/rigraph/compare/f3fa58b..3299d31#diff-aeb78e0159780a9b26daabaf6f95f450b0cfec7161fc735f27ad69145a57dc84 for the changes since the igraph 2.0.1.
(A permanent link to the most recent changelog of the C core used in the R package is
https://github.com/igraph/rigraph/blob/main/src/vendor/cigraph/CHANGELOG.md.)

Features

  • GMP is no longer a dependency (#1256), libxml2 (#1282) and glpk are optional.
  • Update vendored sources to igraph/igraph@857a125.
  • New voronoi_cells() to compute the Voronoi partitioning of a graph (#1173).

Bug fixes

  • Fix rglplot(edge_label = ) (#1267).

Continuous integration

  • Run examples with sanitizer (#1288).
  • Add scheduled builds.

Documentation

  • Make x11() usage in example happen only in interactive sessions (#1301).
  • Remove misleading comment about warning given as no warning is given (#1294).
  • Improve min_st_separators() documentation (#1264).
  • Add link to discussion forum (#1279) and logo (#1280).
  • Add code finding duplicate @seealso, and use it (#1270).
  • Remove duplicate @seealso from ?sample_pa (#1268).
  • Remove incorrect claim about handling of complete graphs by is_separator() and is_min_separator() (#1263).
  • Fix error messages mentioning to mention upgrade_graph() instead of the nonexisting upgrade_version() (#1252).
  • Split is_bipartite() manual page from other manual page (#1230).
  • Improve bug report template.
  • CITATION.cff contains only the first three version components.
  • Install lock workflow to lock stale discussions after one year (#1304).

Internal

  • Replace use of deprecated barabasi.game() with sample_pa() (#1291).
  • Auto-generate are_adjacent(), avoid deprecated igraph_are_connected() C function (#1254).