Skip to content

Conversation

@krlmlr
Copy link
Contributor

@krlmlr krlmlr commented Aug 17, 2025

No description provided.

@krlmlr krlmlr enabled auto-merge (squash) August 17, 2025 05:46
@krlmlr krlmlr force-pushed the f-stimulus-unignore branch from c3e254b to c40b652 Compare August 17, 2025 07:40
@krlmlr krlmlr force-pushed the f-stimulus-unignore branch from c40b652 to de1a55c Compare August 17, 2025 07:53
@krlmlr krlmlr requested a review from Copilot August 17, 2025 08:18
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR generates R implementations for numerous igraph functions that were previously disabled or missing from the R interface. The changes enable almost all R implementations by removing IGNORE flags and adding new function definitions.

Key Changes:

  • Removed IGNORE flags: Hundreds of functions previously marked with IGNORE: RR are now enabled for R implementation
  • Added new type definitions: Introduced TRANSITIVITY_MODE and LOOPS type mappings in the stimulus configuration
  • Updated function references: Changed density(graph) to edge_density(graph) to use the correct function name

Reviewed Changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

File Description
tools/stimulus/types-RR.yaml Added new type definitions and corrected function references from density to edge_density
tools/stimulus/functions-R.yaml Removed IGNORE flags for hundreds of functions, enabling their R implementations
src/cpp11.cpp Added C function declarations for newly enabled R functions
R/aaa-auto.R Generated R wrapper functions for all newly enabled igraph functions

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

# Function call
res <- .Call(R_igraph_full_bipartite, n1, n2, directed, mode)
if (igraph_opt("add.vertex.names") && is_named()) {
names(res$types) <- vertex_attr(, "name", )
Copy link

Copilot AI Aug 17, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The vertex_attr function call is missing the graph argument. It should be vertex_attr(res, "name", ) or use the correct graph variable.

Suggested change
names(res$types) <- vertex_attr(, "name", )
names(res$types) <- vertex_attr(res, "name")

Copilot uses AI. Check for mistakes.
# Function call
res <- .Call(R_igraph_get_all_shortest_paths, graph, from-1, to-1, mode)
if (igraph_opt("return.vs.es")) {
res$vpaths <- lapply(res$vpaths, unsafe_create_vs, graph = , verts = V())
Copy link

Copilot AI Aug 17, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The graph argument is empty and V() is missing the graph argument. It should be graph = graph and verts = V(graph).

Suggested change
res$vpaths <- lapply(res$vpaths, unsafe_create_vs, graph = , verts = V())
res$vpaths <- lapply(res$vpaths, unsafe_create_vs, graph = graph, verts = V(graph))

Copilot uses AI. Check for mistakes.
@krlmlr krlmlr merged commit 7ba4899 into main Aug 17, 2025
6 checks passed
@krlmlr krlmlr deleted the f-stimulus-unignore branch August 17, 2025 08:34
Comment on lines +13 to +15
ECROSSW: 1.0 - sqrt(edge_density(graph))
ELENW: edge_density(graph) / 10
NEDISTW: 0.2 * (1-edge_density(graph))
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@szhorvat: It looks like density() was never defined. Does this make sense to you?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure what ECROSSW, ELENW and NEDISTW are. They are never used anywhere. They might as well be removed.

Copy link
Member

@szhorvat szhorvat Aug 17, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm sorry, that's not correct. They are used with the Davidson-Harel layout and used in interfaces.yaml in the C core. These look fine and should be kept! The intention here is to use such constants, defined in the repo of each interface separately, in order to account for the need to use language-specific code. This can't be checked in to the C core repo.

edge_density() is correct here.

krlmlr added a commit that referenced this pull request Oct 13, 2025
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".

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

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

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

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

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

- Faster single bracket querying of a graph (#1465, #1658).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants