Releases: igraph/rigraph
igraph 2.3.0
New features
-
Add
transitive_closure()function to compute the transitive closure of a graph (#1350, #2413). -
Add
make_full_multipartite()andmake_turan()graph constructors (#1562, #2406). -
Add
make_circulant()to exposeigraph_circulant()(#1563, #2407). -
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 publicmake_()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 noweightsargument is supplied. -
Fix
alpha_centrality()crash whenweightsis 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
clipackage for consistent, styled output instead of base Rstop()(#731, #2588). -
The R Consortium is listed as a funder with its ROR ID in the package metadata (#2587).
-
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
_implfunctions intest-aaa-auto.R, verifying argument passing and return values (#2448, #2449).
Internal
-
The R interface for most C library functions is now autogenerated using the py-stimulus framework, covering 108+ functions including BFS and DFS callbacks, leading-eigenvector community detection, motif callbacks, sparse matrix operations, and graph-list constructors. Arguments use snake_case naming throughout for consistency (#2152, #2424, #2442, #2461, #2462, #2464, #2465, #2484, #2485, #2531, #2532, #2533, #2534, #2540, #2550, #2551, #2552, #2553, #2554, #2555).
-
Most direct
.Call()invocations to C library functions have been replaced with autogenerated_impl()wrapper functions that use explicit named arguments, covering all R source files (R/assortativity.R,R/bipartite.R,R/centrality.R,R/centralization.R,R/cliques.R,R/coloring.R,R/embedding.R,R/flow.R,R/games.R,R/layout.R,R/make.R,R/other.R,R/simple.R,R/structural-properties.R,R/topology.R,R/trees.R,R/triangles.R, and others) (#2332, #2334, #2345, #2347, #2348, #2351, #2352, #2355, #2357, #2358, #2359, #2361, #2362, #2363, #2364, #2365, #2366, #2367, #2368, #2369, #2370, #2372, #2373, #2374, #2379, #2380, #2382, #2383, #2384, #2386, #2388, #2398, #2422, #2423, #2428, #2429, #2434, #2443, #2471, #2476, #2477, #2478, #2539, #2541, #2545, #2546).
igraph 2.2.3
Chore
- Remove calls to non-API functions.
igraph 2.2.2
Chore
- Remove calls to unused APIs only used in the conversion of very old graph objects.
igraph 2.2.1
Chore
-
Fix ASAN checks.
-
Add protection to fix rchk error.
Testing
-
Improve centralitystress test (#2214).
-
Fix flaky test.
igraph 2.2.0
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 tolayout_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()andis_ivs()(#1316, #1388, #1581). -
Expose
feedback_vertex_set()to find a minimum feedback vertex set in a graph (#1446, #1447, #1560). -
Add
weightsparameter tolocal_scan()(#1082, #1448, #1982). -
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). -
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
loopsargument is set toTRUE(#1662, #1661). -
Breaking change: remove deprecated
neimodeparameter frombfs()anddfs()(#1105, #1526). -
Breaking change: stricter deprecation of non-functional parameters of
layout_with_kk()andlayout_with_fr()(#1108, #1628).
Bug fixes
-
NAattribute values are replaced with default values inplot()(#293, #1707). -
NAchecking only in from/to columns of edge data frame (#1906). -
Keep vertex attribute type for
disjoint_union()(#1640, #1909). -
Error in bipartite projection if
typeis not a vertex attribute (#898, #1889). -
Do not try to destroy non-initialized SIR objects upon error (#1888).
-
Added proper
NAhandling 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)inarrow.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). -
Allow more than one edge label font family in
plot()(#37, #1896). -
Replace
NAvalues inlabelattributes inplot()with default values (#1796, #1797). -
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).
-
Update allcontributors info (#1975).
-
Link to replacements of deprecated functions (#1823).
-
Add documentation of all file formats to
read_graph()andwrite_graph()(#777, #1969). RecommendsaveRDS()andreadRDS()for saving and loading graphs (#1242, #1700). -
Document return value of
make_clusters()(#1794). -
Clarify that
girth()returnsInffor 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. -
Correct the description of the
weightsparameter ofhits_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
orderparameter ofego()and related functions (#1746). -
Added lifecycle table (#1525).
-
Add more about igraph.r2cdocs in the contributing guide (#1686, #1697).
Performance
igraph 2.1.4
Testing
- Tweak tests that use the graph package.
igraph 2.1.3
Features
-
Use
_pvdestroy functions to satisfy ASAN checks (#1630). -
Use safe accessor to vector elements (#1633).
Chore
Documentation
igraph 2.1.2
Bug fixes
-
adjacent_vertices()andincident_edges()are now correct if the"return.vs.es"option isFALSE(@stibu81, #1605, #1606). -
Fix protection errors reported by rchk (#1592).
-
Fix the incorrect handling of the
sampleparameter insample_motifs()and ensure that the defaultsample.sizeis integer (#1568).
Documentation
-
Clarify what type of graph each community detection function supports.
-
Improve
?read_graphand?write_graphdocumentation. -
Improve
all_simple_paths()documentation. -
cluster_optimal()does support directed graphs.
Testing
igraph 2.1.1
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()andlayout.grid.3d()which have been deprecated for 10 years (#1398). - Breaking change: use
rlang::arg_match()inigraph.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 ofivs_size()(#1522). - Add
get_edge_ids()as an alias ofget.edge.ids()(#1510). - Increase the deprecation signal to a warning for
hub.score()andauthority.score()both replaced byhits_scores()(#1352). - Soft-deprecate
erdos.renyi.game()andrandom.graph.game()(#1509).
Features
C library
- Update vendored C/igraph sources to igraph/igraph@d2e0f4e.
New functionality
- Add
p.valueandp.precisionarguments tofit_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()andradius()(#1211). - Add some argument checking to
add_shape()(#1478).
More informative errors
- Export
.from()etc. with behavior similar todplyr::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 replacementmake_lattice()(#1439). - Use
deprecated()as default value forcircularargument tomake_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
igraph 2.0.3
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
@seealsofrom?sample_pa(#1268). - Remove incorrect claim about handling of complete graphs by
is_separator()andis_min_separator()(#1263). - Fix error messages mentioning to mention
upgrade_graph()instead of the nonexistingupgrade_version()(#1252). - Split
is_bipartite()manual page from other manual page (#1230). - Improve bug report template.
CITATION.cffcontains only the first three version components.- Install lock workflow to lock stale discussions after one year (#1304).