Skip to contents

grip 0.2.0.9001 (development version)

  • Static plot controls now override defaults consistently, including labels, limits, aspect ratio, and orthographic vertex symbols/sizes.
  • Added layout.coords() for unchanged coordinate extraction and estimate.preparation() for dense-storage lower bounds. Large dense preparations warn before searches; the advisory threshold is configurable.
  • Native layout and refinement loops support cancellation at safe main-thread boundaries. Interrupted construction releases its owned temporary storage.
  • Undirected adjacency now requires reciprocal entries, equal multiplicities, and matching lengths. Self-loops now fail explicitly instead of being ignored or treated differently across representations; remove them before calling. Existing parallel-edge handling is preserved and documented in the guide.
  • Replaced bending load-order rebinding with explicit base implementations, consolidated graph validation, and added a developer map. Numerical objectives and defaults are unchanged.
  • Full-dependency checks require all tests to execute on Linux, Windows, and macOS; a local runner isolates split-library dependencies. The comparison article now identifies frozen versions and the distinction between repeated timings and independent layout seeds.

Documentation

  • Distinguished CRAN and development installations, including offline-vignette building, and added a development notice and direct quick-start navigation.

  • Repaired Markdown function links in help and made package help lead to a small runnable workflow and the existing installed guides.

  • Connected the visual introduction to showcase recipes and a rendered first example. Website animations now start with still previews and explicit playback controls; guide figures have alternative text.

  • Added two installed vignettes: a task-oriented function guide with checked export and method coverage, and synthetic graph-family layout examples. Linked them from the package overview, README, and website navigation; clarified metric, reference-scoring, and projection choices in related guides.

Breaking changes

  • Graph-input APIs now reject fractional, nonfinite, or out-of-range vertex indices and counts before conversion. Supply either edges/edge_weights or adj_list/weight_list, not both. A prepared graph cannot be combined with raw graph inputs; an explicit n must match its stored vertex count. Previously, some of these inputs were silently truncated or ignored.

  • metric.mds() now minimizes unweighted raw distance stress using the optional smacof package. To retain the previous classical-scaling behavior, use classical.mds(), which also accepts the add and eig arguments. See help("grip-mds-migration") for migration instructions.

  • In edge.kk() and kernel.gram.gkk(), init = "metric_mds" now requests stress minimization. Use init = "classical_mds" to retain the previous behavior. Both functions still use classical scaling by default.

New features

  • Layout printing shows the fitted objective, available termination and start information, and separately labeled graph diagnostics without recomputing them. The score help explains normalization, units, and unavailable values.

  • metric.mds() supports multiple starts and reports stress and convergence diagnostics, with coordinates returned in the input distance units.

  • score.coordinates() measures coordinate error against a reference, with rigid alignment, similarity alignment, or no alignment.

  • score.surface() measures area-weighted symmetric RMS distance between surfaces.

Bug fixes

  • Fixed metric.mds() rejecting valid undirected graphs with nearly equal shortest paths. Recreate previously saved graph preparations to obtain corrected symmetric distance matrices.

grip 0.2.0

CRAN release: 2026-08-31

Breaking changes

  • Removed the 40 long-form compatibility aliases deprecated in the 0.1 series. See help("grip-0.2-migration") for the complete replacement map.
  • Restricted the public graph-family API to primitive edge generators, configurable mask helpers, and complete graph bundles. Specialized edge-list builders, standalone surface embeddings, and parameter-coordinate builders remain available internally to those bundles.
  • Made gmds.result() internal; public layout methods continue to return the common "grip_gmds_layout" result format.

Documentation

  • Added executable examples for every exported function.

grip 0.1.3

CRAN release: 2026-08-21

  • Unified topology-first and edge-length-metric layouts under grip(metric = "hop") and grip(metric = "edge_length").
  • Added the same metric selection to trace.grip(). Replaced weighted.grip() and trace.weighted.grip() with grip(metric = "edge_length") and trace.grip(metric = "edge_length"), respectively.
  • Documented how edge lengths affect layout construction and refinement in each metric mode.

grip 0.1.2

CRAN release: 2026-08-05

  • Made saved graph-family bundle ordering deterministic when files have tied modification times, as can occur on Windows.
  • Fixed two undersized adjacency allocations in the compiled triangular mesh generator.

grip 0.1.1

  • Added geodesic-MDS, geodesic-KK, landmark, MISF, weighted, and interactive layout workflows.
  • Limited compiled parallel work to two threads to comply with CRAN resource limits, including when automatic thread selection is requested.
  • Replaced native assertion aborts with recoverable R errors.
  • Shortened graph-family save filenames so they remain portable under long Windows temporary-directory paths.
  • Expanded the pkgdown reference index.
  • Declared the C++17 compiler requirement explicitly.

grip 0.1.0

  • First public release of grip.
  • Introduced two main layout workflows: grip.layout() for unweighted graphs and grip.layout.weighted() for weighted graphs.
  • Added layout scoring and real-data candidate comparison via grip.score.layout() and grip.compare.layouts(), together with multiscale trace diagnostics via grip.layout.trace() and grip.layout.trace.weighted().
  • Included synthetic graph families, weighted real-data examples, disconnected-component packing, and plotting helpers.
  • Added experimental full geodesic-KK (GKK) and landmark geodesic-KK (LGKK) preparation, scoring, and refinement helpers for weighted layouts.
  • Included optional Shiny explorers for browsing layout catalogs and synthetic graph families.