Skip to content

caugi 1.1.0

Latest

Choose a tag to compare

@jolars jolars released this 20 Mar 14:19

New Features

  • Add normalize_latent_structure(), which normalizes the latent structure of a
    DAG while preserving the marginal model over observed variables.
  • Add minimal_d_separator(), which computes a minimal d-separator between
    sets of nodes in a DAG, with support for mandatory inclusions and restrictions.
  • Add posteriors() query function, which is the dual of anteriors(). It
    returns all nodes reachable by following paths where every edge is either
    undirected or directed away from the source node. For DAGs, posteriors()
    equals descendants(). For PDAGs and AGs, it includes both descendants and
    nodes reachable via undirected edges.
  • You can now specify whether to use an open or closed graph definition for the
    queries ancestors(), anteriors(), descendants(), and posteriors().
    This can be set globally with caugi_options() or locally with the
    open = TRUE/FALSE argument. The default remains open = TRUE.
  • Add is_mpdag() query to check whether a PDAG is closed under Meek's
    orientation rules (R1-R4), and meek_closure() to orient all implied edges
    until Meek closure.

Improvements

  • caugi_options() now supports nested key drilling: multiple unnamed arguments
    traverse nested options (e.g., caugi_options("plot", "tier_style", "fill")).
  • Rust remains the single source of truth for graph state. Graph properties
    (simple, graph_class, nodes, edges) are sourced from the session.
    • A session is always created, including empty graphs (n = 0), which simplifies
      property access.
    • Deprecated compatibility properties @.state, @name_index_map, @built,
      and @ptr now warn on access and return NULL.
    • Deprecated compatibility constructor arguments build and state in
      caugi() now warn and are ignored.
  • The inplace parameter in verb functions (add_edges(), remove_edges(),
    set_edges(), add_nodes(), remove_nodes()). All graph modifications now use
    copy-on-write semantics for consistency with R conventions. The parameter is
    deprecated and ignored with a warning.
  • Added all.equal and compare_proxy methods for caugi objects to support
    graph-content comparison in tests.
  • Add asp parameter to plot() for controlling the aspect ratio. When asp = 1,
    the plot respects equal units on both axes, preserving the layout
    coordinates. Works like base R's asp parameter (y/x aspect ratio) (#195).
  • Add pdag_to_dag() function that generates a random DAG consistent with a
    given CPDAG/PDAG structure if possible (#201).

Bug Fixes

  • Fixed a bug causing plot() to use incorrect layout if node names were not
    in the same order as in the graph object (#198).
  • Fixed set_edges() so that it correctly replaces symmetric edges in
    simple graphs.

Deprecations

  • The parameter all in districts() has been deprecated. Use districts()
    without arguments to get all districts.