{
  "_id": "6abd6b5499f7aa8c6aa5018f",
  "Package": "grip",
  "Type": "Package",
  "Title": "Graph Drawing with Intelligent Placement (GRIP)",
  "Version": "0.2.0.9001",
  "Authors@R": "c(person(\"Pawel\", \"Gajer\", , \"pgajer@gmail.com\", role = c(\"aut\", \"cre\")),\nperson(\"Jonathan\", \"Zheng\", role = c(\"ctb\", \"cph\"),\ncomment = \"Author and copyright holder of MIT-licensed s_gd2 code adapted for the metric-MDS SGD backend\"),\nperson(\"Daniel\", \"Hangan\", role = \"ctb\",\ncomment = \"Author of the SGD-MDS implementation in his scikit-learn fork adapted for the metric-MDS SGD backend\"),\nperson(\"The scikit-learn developers\", role = \"cph\",\ncomment = \"Copyright holders of BSD-3-Clause code adapted from Daniel Hangan's scikit-learn fork for the metric-MDS SGD backend\"))",
  "Description": "Implements GRIP multiscale graph layout with a unified\nchoice between hop-count and geometry-aware edge-length graph\nmetrics in 2D and 3D. Provides layout scoring, candidate\ncomparison, multiscale trace diagnostics, synthetic graph\nfamilies, and advanced experimental geodesic-KK utilities for\nweighted-layout evaluation and polish. Based on Gajer and\nKobourov (2002) <doi:10.7155/jgaa.00052> and Gajer, Goodrich\nand Kobourov (2004) <doi:10.1016/j.comgeo.2004.03.014>.\nIncludes derived graph datasets from the SuiteSparse Matrix\nCollection, with source attribution and transformation\nmetadata.",
  "License": "GPL (>= 3)",
  "Copyright": "See inst/COPYRIGHTS for software and dataset attribution.\nBundled SuiteSparse-derived graph data are distributed under CC\nBY 4.0; see inst/extdata/suitesparse/PROVENANCE.md.",
  "URL": "https://pgajer.github.io/grip/, https://github.com/pgajer/grip",
  "BugReports": "https://github.com/pgajer/grip/issues",
  "Encoding": "UTF-8",
  "Config/Needs/website": "pgajer/ivue@4bc38526c334441e29fa761382d06aad67a25dcb",
  "SystemRequirements": "C++17",
  "Config/testthat/edition": "3",
  "VignetteBuilder": "knitr",
  "Config/roxygen2/version": "8.0.0",
  "Repository": "https://pgajer.r-universe.dev",
  "Date/Publication": "2026-09-30 14:12:46 UTC",
  "RemoteUrl": "https://github.com/pgajer/grip",
  "RemoteRef": "HEAD",
  "RemoteSha": "5de12956d17e5ea8fa80b2cdd4d7de1834f8b0c1",
  "NeedsCompilation": "yes",
  "Packaged": {
    "Date": "2026-09-30 19:40:02 UTC",
    "User": "root"
  },
  "Author": "Pawel Gajer [aut, cre],\nJonathan Zheng [ctb, cph] (Author and copyright holder of MIT-licensed\ns_gd2 code adapted for the metric-MDS SGD backend),\nDaniel Hangan [ctb] (Author of the SGD-MDS implementation in his\nscikit-learn fork adapted for the metric-MDS SGD backend),\nThe scikit-learn developers [cph] (Copyright holders of BSD-3-Clause\ncode adapted from Daniel Hangan's scikit-learn fork for the\nmetric-MDS SGD backend)",
  "Maintainer": "Pawel Gajer <pgajer@gmail.com>",
  "_user": "pgajer",
  "_type": "src",
  "_file": "grip_0.2.0.9001.tar.gz",
  "_fileid": "https://r2.ropensci.org/9b0382f343e8b9245685d12b4778c838a12ee4b7694fca7e16be61c48299c679",
  "_filesize": 10485637,
  "_sha256": "9b0382f343e8b9245685d12b4778c838a12ee4b7694fca7e16be61c48299c679",
  "_expires": "2027-01-08T20:04:33.000Z",
  "_created": "2026-09-30T19:40:02.000Z",
  "_published": "2026-09-30T20:04:36.090Z",
  "_jobs": [
    {
      "job": 110065284411,
      "time": 276,
      "config": "linux-devel-arm64",
      "r": "4.7.0",
      "check": "WARNING",
      "artifact": "11122346501"
    },
    {
      "job": 110065284149,
      "time": 269,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "WARNING",
      "artifact": "11122456317"
    },
    {
      "job": 110065284259,
      "time": 274,
      "config": "linux-release-arm64",
      "r": "4.6.1",
      "check": "ERROR",
      "artifact": "11122771236"
    },
    {
      "job": 110065284309,
      "time": 281,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "ERROR",
      "artifact": "11122711292"
    },
    {
      "job": 110065284240,
      "time": 266,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "ERROR",
      "artifact": "11123545167"
    },
    {
      "job": 110065284282,
      "time": 412,
      "config": "macos-oldrel-x86_64",
      "r": "4.5.3",
      "check": "ERROR",
      "artifact": "11121489445"
    },
    {
      "job": 110065284249,
      "time": 428,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "ERROR",
      "artifact": "11121794751"
    },
    {
      "job": 110065284324,
      "time": 599,
      "config": "macos-release-x86_64",
      "r": "4.6.1",
      "check": "ERROR",
      "artifact": "11122622579"
    },
    {
      "job": 110062382403,
      "time": 448,
      "config": "source",
      "r": "4.6.1",
      "check": "ERROR",
      "artifact": "11121431799"
    },
    {
      "job": 110065284181,
      "time": 186,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "11123140869"
    },
    {
      "job": 110065284474,
      "time": 375,
      "config": "windows-devel-arm64",
      "r": "4.7.0",
      "check": "ERROR",
      "artifact": "11122806492"
    },
    {
      "job": 110065284279,
      "time": 907,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "ERROR",
      "artifact": "11123257725"
    },
    {
      "job": 110065284233,
      "time": 533,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "ERROR",
      "artifact": "11122672123"
    },
    {
      "job": 110065284302,
      "time": 426,
      "config": "windows-release-arm64",
      "r": "4.6.1",
      "check": "ERROR",
      "artifact": "11122706452"
    },
    {
      "job": 110065284494,
      "time": 687,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "ERROR",
      "artifact": "11122801899"
    }
  ],
  "_host": "GitHub-Actions",
  "_buildurl": "https://github.com/r-universe/pgajer/actions/runs/36766601251",
  "_status": "failure",
  "_upstream": "https://github.com/pgajer/grip",
  "_commit": {
    "id": "5de12956d17e5ea8fa80b2cdd4d7de1834f8b0c1",
    "author": "Pawel Gajer <pgajer@gmail.com>",
    "committer": "Pawel Gajer <pgajer@gmail.com>",
    "message": "Clarify SuiteSparse dataset attribution and license in DESCRIPTION\n",
    "time": 1790777566
  },
  "_maintainer": {
    "name": "Pawel Gajer",
    "email": "pgajer@gmail.com",
    "login": "pgajer",
    "description": "",
    "uuid": 321355
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 3.5.0",
      "role": "Depends"
    },
    {
      "package": "Rcpp",
      "role": "LinkingTo"
    },
    {
      "package": "Rcpp",
      "role": "Imports"
    },
    {
      "package": "bslib",
      "role": "Suggests"
    },
    {
      "package": "DT",
      "role": "Suggests"
    },
    {
      "package": "FNN",
      "role": "Suggests"
    },
    {
      "package": "geometry",
      "role": "Suggests"
    },
    {
      "package": "igraph",
      "role": "Suggests"
    },
    {
      "package": "htmltools",
      "role": "Suggests"
    },
    {
      "package": "htmlwidgets",
      "role": "Suggests"
    },
    {
      "package": "httpuv",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "later",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "rgl",
      "role": "Suggests"
    },
    {
      "package": "shiny",
      "role": "Suggests"
    },
    {
      "package": "smacof",
      "version": ">= 2.1-7",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "withr",
      "role": "Suggests"
    },
    {
      "package": "ivue",
      "version": ">= 0.1.0",
      "role": "Enhances"
    }
  ],
  "_owner": "pgajer",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-08",
      "n": 11
    },
    {
      "week": "2026-12",
      "n": 11
    },
    {
      "week": "2026-13",
      "n": 39
    },
    {
      "week": "2026-14",
      "n": 95
    },
    {
      "week": "2026-15",
      "n": 20
    },
    {
      "week": "2026-16",
      "n": 2
    },
    {
      "week": "2026-20",
      "n": 6
    },
    {
      "week": "2026-21",
      "n": 4
    },
    {
      "week": "2026-24",
      "n": 7
    },
    {
      "week": "2026-30",
      "n": 7
    },
    {
      "week": "2026-31",
      "n": 1
    },
    {
      "week": "2026-34",
      "n": 13
    },
    {
      "week": "2026-35",
      "n": 5
    },
    {
      "week": "2026-36",
      "n": 11
    },
    {
      "week": "2026-37",
      "n": 11
    },
    {
      "week": "2026-38",
      "n": 5
    },
    {
      "week": "2026-39",
      "n": 25
    },
    {
      "week": "2026-40",
      "n": 3
    }
  ],
  "_tags": [
    {
      "name": "v0.2.0",
      "date": "2026-08-29"
    }
  ],
  "_stars": 0,
  "_contributors": [
    {
      "user": "pgajer",
      "count": 278,
      "uuid": 321355
    }
  ],
  "_userbio": {
    "uuid": 321355,
    "type": "user",
    "name": "Pawel",
    "followers": 3
  },
  "_downloads": {
    "count": 420,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/grip"
  },
  "_devurl": "https://github.com/pgajer/grip",
  "_pkgdown": "https://pgajer.github.io/grip/",
  "_searchresults": 0,
  "_topics": [
    "cpp"
  ],
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/grip.html",
    "extra/manual.pdf",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md"
  ],
  "_homeurl": "https://github.com/pgajer/grip",
  "_realowner": "pgajer",
  "_cranurl": true,
  "_releases": [
    {
      "version": "0.1.2",
      "date": "2026-08-05"
    },
    {
      "version": "0.1.3",
      "date": "2026-08-21"
    },
    {
      "version": "0.2.0",
      "date": "2026-09-08"
    }
  ],
  "_exports": [
    "build.misf",
    "build.weighted.misf",
    "classical.mds",
    "compare.layouts",
    "cube.asymmetric.cavities.surface.graph",
    "cube.channel.network.surface.graph",
    "cube.periodic.tunnels.surface.graph",
    "cylinder.surface.graph",
    "edge.kk",
    "edge.length.density.stiffness",
    "edge.repulsive.stage",
    "edge.repulsive.state",
    "edges.cube",
    "edges.cycle",
    "edges.cylinder",
    "edges.kary.tree",
    "edges.mesh",
    "edges.path",
    "edges.sierpinski.carpet",
    "edges.sierpinski.tetrahedron",
    "edges.sierpinski.triangle",
    "edges.torus",
    "estimate.preparation",
    "geodesic.kk",
    "geometry.diagnostics",
    "globalrep.grip",
    "globalrep.weighted.grip",
    "graph.riemannian.star.structure",
    "grip",
    "gripui.app",
    "gripui.family.app",
    "gripui.graph.family.catalog",
    "gripui.project",
    "gripui.project.from.compare",
    "gripui.project.from.dir",
    "gripui.validate.project",
    "irregular.annulus.surface.graph",
    "irregular.ball.solid.graph",
    "irregular.double.torus.surface.graph",
    "irregular.pair.of.pants.surface.graph",
    "irregular.rectangle.surface.graph",
    "irregular.shell.solid.graph",
    "irregular.sphere.surface.graph",
    "irregular.torus.surface.graph",
    "kary.tree.weighted.graph",
    "keep.asymmetric.notches",
    "keep.periodic.holes",
    "keep.slit.channels",
    "keep.staggered.windows",
    "kernel.gram.gkk",
    "landmark.geodesic.kk",
    "layout.coords",
    "legacy.grip",
    "mask.asymmetric.holes",
    "mask.border",
    "mask.corner",
    "mask.cross",
    "mask.cube.asymmetric.cavities",
    "mask.cube.channel.network",
    "mask.cube.periodic.tunnels",
    "mask.tetrahedron.classic",
    "mask.tetrahedron.corner.missing",
    "mask.triangle.bridge",
    "mask.triangle.classic",
    "menger.sponge.surface.graph",
    "mesh.surface.graph",
    "metric.mds",
    "misf.geodesic.kk",
    "occupied.mesh.surface.graph",
    "params.from.summary",
    "plot.layout",
    "prepare.edge.kk",
    "prepare.geodesic.kk",
    "prepare.graph.geodesic.mds",
    "prepare.landmark.geodesic.kk",
    "prepare.misf.geodesic.kk",
    "project.3d",
    "recursive.cube.mask.surface.graph",
    "recursive.mask.grid.surface.graph",
    "recursive.tetrahedron.mask.surface.graph",
    "recursive.triangle.mask.surface.graph",
    "repulsive.stage",
    "repulsive.state",
    "run.gripui",
    "run.gripui.family",
    "sampled.rectangle.surface.graph",
    "sampled.rectangle.surface.graphs",
    "score.coordinates",
    "score.geodesic.kk",
    "score.gmds",
    "score.landmark.geodesic.kk",
    "score.layout",
    "score.misf.geodesic.kk",
    "score.surface",
    "sierpinski.carpet.surface.graph",
    "sierpinski.tetrahedron.surface.graph",
    "sierpinski.triangle.surface.graph",
    "sphere.surface.graph",
    "suitesparse.graph",
    "suitesparse.graphs",
    "torus.surface.graph",
    "trace.grip",
    "trace.legacy.grip",
    "triangulated.annulus.surface.graph",
    "triangulated.pair.of.pants.surface.graph",
    "triangulated.polyhedron.surface.graph",
    "vicsek.surface.graph",
    "weighted.grip.nd"
  ],
  "_datasets": [
    {
      "name": "hmp.gc",
      "title": "HMP Illumina 16S Giant-Component Graph",
      "object": "hmp.gc",
      "file": "hmp.gc.rda",
      "class": [
        "list"
      ],
      "fields": [],
      "table": false,
      "tojson": true
    },
    {
      "name": "hmp.u01.gc.coarse",
      "title": "HMP/U01 Coarsened Giant-Component Graph",
      "object": "hmp.u01.gc.coarse",
      "file": "hmp.u01.gc.coarse.rda",
      "class": [
        "list"
      ],
      "fields": [],
      "table": false,
      "tojson": true
    }
  ],
  "_help": [
    {
      "page": "grip-package",
      "title": "grip: Graph dRawing with Intelligent Placement",
      "topics": [
        "grip-package"
      ]
    },
    {
      "page": "build.misf",
      "title": "Build a maximal independent set filtration (MISF) for a graph",
      "topics": [
        "build.misf"
      ]
    },
    {
      "page": "build.weighted.misf",
      "title": "Build a weighted MISF hierarchy",
      "topics": [
        "build.weighted.misf"
      ]
    },
    {
      "page": "classical.mds",
      "title": "Classical-MDS baseline layout for GMDS experiments",
      "topics": [
        "classical.mds"
      ]
    },
    {
      "page": "compare.layouts",
      "title": "Compare multiple layout candidates across seeds",
      "topics": [
        "compare.layouts"
      ]
    },
    {
      "page": "cube_mask_pattern_helpers",
      "title": "Cube mask pattern helpers for recursive porous families",
      "topics": [
        "cube_mask_pattern_helpers",
        "mask.cube.asymmetric.cavities",
        "mask.cube.channel.network",
        "mask.cube.periodic.tunnels"
      ]
    },
    {
      "page": "cylinder_surface_helpers",
      "title": "Weighted cylinder surface helpers",
      "topics": [
        "cylinder.surface.graph",
        "cylinder_surface_helpers"
      ]
    },
    {
      "page": "edge.kk",
      "title": "Optimize an edge-KK local repair layout",
      "topics": [
        "edge.kk"
      ]
    },
    {
      "page": "edge.length.density.stiffness",
      "title": "Construct edge-length stiffnesses for edge-isometric GMDS layouts",
      "topics": [
        "edge.length.density.stiffness"
      ]
    },
    {
      "page": "edge.repulsive.stage",
      "title": "Optimize one edge-isometric repulsive unfolding stage",
      "topics": [
        "edge.repulsive.stage"
      ]
    },
    {
      "page": "edge.repulsive.state",
      "title": "Evaluate an edge-isometric repulsive unfolding objective",
      "topics": [
        "edge.repulsive.state"
      ]
    },
    {
      "page": "estimate.preparation",
      "title": "Estimate preparation storage before allocating graph distances",
      "topics": [
        "estimate.preparation"
      ]
    },
    {
      "page": "geodesic.kk",
      "title": "Optimize a layout under the full geodesic KK energy",
      "topics": [
        "geodesic.kk"
      ]
    },
    {
      "page": "geometry.diagnostics",
      "title": "Geometry-aware diagnostics against a canonical target",
      "topics": [
        "geometry.diagnostics"
      ]
    },
    {
      "page": "globalrep.grip",
      "title": "Compute a GRIP layout with coarse global repulsion",
      "topics": [
        "globalrep.grip"
      ]
    },
    {
      "page": "globalrep.weighted.grip",
      "title": "Compute a weighted geometry-aware GRIP layout",
      "topics": [
        "globalrep.weighted.grip"
      ]
    },
    {
      "page": "graph_generators",
      "title": "Sample graph generators",
      "topics": [
        "edges.cube",
        "edges.cycle",
        "edges.cylinder",
        "edges.kary.tree",
        "edges.mesh",
        "edges.path",
        "edges.sierpinski.carpet",
        "edges.sierpinski.tetrahedron",
        "edges.sierpinski.triangle",
        "edges.torus",
        "graph_generators"
      ]
    },
    {
      "page": "graph.riemannian.star.structure",
      "title": "Build a local Riemannian star structure for Gram-gKK layouts",
      "topics": [
        "graph.riemannian.star.structure"
      ]
    },
    {
      "page": "grip",
      "title": "Compute a GRIP layout",
      "topics": [
        "grip"
      ]
    },
    {
      "page": "grip-0.2-migration",
      "title": "Migrate code to the grip 0.2 API",
      "topics": [
        "grip-0.2-migration",
        "grip.build.misf",
        "grip.build.misf.weighted",
        "grip.compare.layouts",
        "grip.edge.length.density.stiffness",
        "grip.edge.repulsive.state",
        "grip.geometry.diagnostics",
        "grip.gmds.layout.result",
        "grip.layout",
        "grip.layout.globalrep",
        "grip.layout.globalrep.weighted",
        "grip.layout.legacy",
        "grip.layout.trace",
        "grip.layout.trace.legacy",
        "grip.layout.trace.weighted",
        "grip.layout.weighted",
        "grip.layout.weighted.nd",
        "grip.metric.mds.layout",
        "grip.optimize.edge.gkk.layout",
        "grip.optimize.edge.isometric.layout",
        "grip.optimize.edge.kk.layout",
        "grip.optimize.edge.repulsive.stage",
        "grip.optimize.geodesic.kk",
        "grip.optimize.kernel.gram.gkk.layout",
        "grip.optimize.landmark.geodesic.kk",
        "grip.optimize.misf.geodesic.kk",
        "grip.optimize.repulsive.stage",
        "grip.params.from.summary",
        "grip.plot",
        "grip.prepare.edge.kk",
        "grip.prepare.geodesic.kk",
        "grip.prepare.graph.geodesic.mds",
        "grip.prepare.landmark.geodesic.kk",
        "grip.prepare.misf.geodesic.kk",
        "grip.project.3d",
        "grip.repulsive.state",
        "grip.score.geodesic.kk",
        "grip.score.gmds.layout",
        "grip.score.landmark.geodesic.kk",
        "grip.score.layout",
        "grip.score.misf.geodesic.kk"
      ]
    },
    {
      "page": "grip-mds-migration",
      "title": "Migrating classical and metric stress MDS workflows",
      "topics": [
        "grip-mds-migration"
      ]
    },
    {
      "page": "gripui.app",
      "title": "Build the 'gripui' Shiny application",
      "topics": [
        "gripui.app"
      ]
    },
    {
      "page": "gripui.family.app",
      "title": "Build the graph-family geometry explorer Shiny application",
      "topics": [
        "gripui.family.app"
      ]
    },
    {
      "page": "gripui.graph.family.catalog",
      "title": "Catalog of graph families for the geometry explorer app",
      "topics": [
        "gripui.graph.family.catalog"
      ]
    },
    {
      "page": "gripui.project",
      "title": "Create a normalized 'gripui' project object",
      "topics": [
        "gripui.project"
      ]
    },
    {
      "page": "gripui.project.from.compare",
      "title": "Convert 'compare.layouts()' output into a 'gripui_project'",
      "topics": [
        "gripui.project.from.compare"
      ]
    },
    {
      "page": "gripui.project.from.dir",
      "title": "Create a 'gripui_project' from a directory of saved artifacts",
      "topics": [
        "gripui.project.from.dir"
      ]
    },
    {
      "page": "gripui.validate.project",
      "title": "Validate a 'gripui_project'",
      "topics": [
        "gripui.validate.project"
      ]
    },
    {
      "page": "hmp.gc",
      "title": "HMP Illumina 16S Giant-Component Graph",
      "topics": [
        "hmp.gc"
      ]
    },
    {
      "page": "hmp.u01.gc.coarse",
      "title": "HMP/U01 Coarsened Giant-Component Graph",
      "topics": [
        "hmp.u01.gc.coarse"
      ]
    },
    {
      "page": "irregular_annulus_surface_helpers",
      "title": "Weighted irregular annulus surface helpers",
      "topics": [
        "irregular.annulus.surface.graph",
        "irregular_annulus_surface_helpers"
      ]
    },
    {
      "page": "irregular_ball_solid_helpers",
      "title": "Weighted irregular ball solid helpers",
      "topics": [
        "irregular.ball.solid.graph",
        "irregular_ball_solid_helpers"
      ]
    },
    {
      "page": "irregular_double_torus_surface_helpers",
      "title": "Weighted irregular double-torus surface helpers",
      "topics": [
        "irregular.double.torus.surface.graph",
        "irregular_double_torus_surface_helpers"
      ]
    },
    {
      "page": "irregular_pair_of_pants_surface_helpers",
      "title": "Weighted irregular pair-of-pants surface helpers",
      "topics": [
        "irregular.pair.of.pants.surface.graph",
        "irregular_pair_of_pants_surface_helpers"
      ]
    },
    {
      "page": "irregular_rectangle_surface_helpers",
      "title": "Irregular rectangle surface helpers",
      "topics": [
        "irregular.rectangle.surface.graph",
        "irregular_rectangle_surface_helpers"
      ]
    },
    {
      "page": "irregular_shell_solid_helpers",
      "title": "Weighted irregular shell solid helpers",
      "topics": [
        "irregular.shell.solid.graph",
        "irregular_shell_solid_helpers"
      ]
    },
    {
      "page": "irregular_sphere_surface_helpers",
      "title": "Weighted irregular sphere surface helpers",
      "topics": [
        "irregular.sphere.surface.graph",
        "irregular_sphere_surface_helpers"
      ]
    },
    {
      "page": "irregular_torus_surface_helpers",
      "title": "Weighted irregular torus surface helpers",
      "topics": [
        "irregular.torus.surface.graph",
        "irregular_torus_surface_helpers"
      ]
    },
    {
      "page": "kary_tree_weighted_graph_helpers",
      "title": "Intrinsically weighted k-ary tree helpers",
      "topics": [
        "kary.tree.weighted.graph",
        "kary_tree_weighted_graph_helpers"
      ]
    },
    {
      "page": "kernel.gram.gkk",
      "title": "Optimize a kernel Gram-gKK layout",
      "topics": [
        "kernel.gram.gkk"
      ]
    },
    {
      "page": "landmark.geodesic.kk",
      "title": "Optimize a layout under the landmark geodesic KK energy",
      "topics": [
        "landmark.geodesic.kk"
      ]
    },
    {
      "page": "layout.coords",
      "title": "Extract coordinates from a layout result",
      "topics": [
        "layout.coords"
      ]
    },
    {
      "page": "legacy.grip",
      "title": "Compute the legacy GRIP layout",
      "topics": [
        "legacy.grip"
      ]
    },
    {
      "page": "mask_pattern_helpers",
      "title": "Mask pattern helpers for recursive grid families",
      "topics": [
        "mask.asymmetric.holes",
        "mask.border",
        "mask.corner",
        "mask.cross",
        "mask_pattern_helpers"
      ]
    },
    {
      "page": "menger_sponge_surface_helpers",
      "title": "Weighted Menger sponge surface helpers",
      "topics": [
        "menger.sponge.surface.graph",
        "menger_sponge_surface_helpers"
      ]
    },
    {
      "page": "mesh_surface_helpers",
      "title": "Weighted mesh surface helpers",
      "topics": [
        "mesh.surface.graph",
        "mesh_surface_helpers"
      ]
    },
    {
      "page": "metric.mds",
      "title": "Metric stress MDS using stochastic gradient descent or SMACOF",
      "topics": [
        "metric.mds"
      ]
    },
    {
      "page": "misf.geodesic.kk",
      "title": "Optimize an embedding with the MISF-based geodesic-KK pipeline",
      "topics": [
        "misf.geodesic.kk"
      ]
    },
    {
      "page": "occupied_mesh_surface_helpers",
      "title": "Occupied-mesh and perforated-grid helpers",
      "topics": [
        "occupied.mesh.surface.graph",
        "occupied_mesh_surface_helpers"
      ]
    },
    {
      "page": "params.from.summary",
      "title": "Extract layout parameters from a comparison summary row",
      "topics": [
        "params.from.summary"
      ]
    },
    {
      "page": "perforated_grid_helpers",
      "title": "Deterministic perforated-grid occupancy helpers",
      "topics": [
        "keep.asymmetric.notches",
        "keep.periodic.holes",
        "keep.slit.channels",
        "keep.staggered.windows",
        "perforated_grid_helpers"
      ]
    },
    {
      "page": "plot.layout",
      "title": "Quick plot for graph layouts",
      "topics": [
        "plot.layout"
      ]
    },
    {
      "page": "porous_cube_surface_helpers",
      "title": "Weighted porous cube-mask surface helpers",
      "topics": [
        "cube.asymmetric.cavities.surface.graph",
        "cube.channel.network.surface.graph",
        "cube.periodic.tunnels.surface.graph",
        "porous_cube_surface_helpers"
      ]
    },
    {
      "page": "prepare.edge.kk",
      "title": "Prepare an edge-only graph for edge-KK repair",
      "topics": [
        "prepare.edge.kk"
      ]
    },
    {
      "page": "prepare.geodesic.kk",
      "title": "Prepare full geodesic KK data for repeated layout evaluation",
      "topics": [
        "prepare.geodesic.kk"
      ]
    },
    {
      "page": "prepare.graph.geodesic.mds",
      "title": "Prepare a graph-first geodesic-MDS path cache",
      "topics": [
        "prepare.graph.geodesic.mds"
      ]
    },
    {
      "page": "prepare.landmark.geodesic.kk",
      "title": "Prepare sparse landmark-geodesic KK data for repeated layout evaluation",
      "topics": [
        "prepare.landmark.geodesic.kk"
      ]
    },
    {
      "page": "prepare.misf.geodesic.kk",
      "title": "Prepare a MISF-based multiscale geodesic-KK object",
      "topics": [
        "prepare.misf.geodesic.kk"
      ]
    },
    {
      "page": "print.grip_gmds_layout",
      "title": "Print a geodesic-MDS layout summary",
      "topics": [
        "print.grip_gmds_layout"
      ]
    },
    {
      "page": "print.grip_misf",
      "title": "Print a multiscale hierarchy summary",
      "topics": [
        "print.grip_misf"
      ]
    },
    {
      "page": "project.3d",
      "title": "Project 3D coordinates to 2D for static plotting",
      "topics": [
        "project.3d"
      ]
    },
    {
      "page": "recursive_cube_mask_surface_helpers",
      "title": "Weighted recursive cube-mask surface helpers",
      "topics": [
        "recursive.cube.mask.surface.graph",
        "recursive_cube_mask_surface_helpers"
      ]
    },
    {
      "page": "recursive_mask_grid_surface_helpers",
      "title": "Weighted recursive mask-grid surface helpers",
      "topics": [
        "recursive.mask.grid.surface.graph",
        "recursive_mask_grid_surface_helpers"
      ]
    },
    {
      "page": "recursive_tetrahedron_mask_surface_helpers",
      "title": "Weighted recursive tetrahedron-mask surface helpers",
      "topics": [
        "recursive.tetrahedron.mask.surface.graph",
        "recursive_tetrahedron_mask_surface_helpers"
      ]
    },
    {
      "page": "recursive_triangle_mask_surface_helpers",
      "title": "Weighted recursive triangle-mask surface helpers",
      "topics": [
        "recursive.triangle.mask.surface.graph",
        "recursive_triangle_mask_surface_helpers"
      ]
    },
    {
      "page": "repulsive.stage",
      "title": "Optimize one pure repulsive layout stage",
      "topics": [
        "repulsive.stage"
      ]
    },
    {
      "page": "repulsive.state",
      "title": "Evaluate a pure repulsive layout objective",
      "topics": [
        "repulsive.state"
      ]
    },
    {
      "page": "run.gripui",
      "title": "Run the 'gripui' Shiny application",
      "topics": [
        "run.gripui"
      ]
    },
    {
      "page": "run.gripui.family",
      "title": "Run the graph-family geometry explorer Shiny application",
      "topics": [
        "run.gripui.family"
      ]
    },
    {
      "page": "sampled_rectangle_surface_helpers",
      "title": "Sampled rectangle surface helpers",
      "topics": [
        "sampled.rectangle.surface.graph",
        "sampled.rectangle.surface.graphs",
        "sampled_rectangle_surface_helpers"
      ]
    },
    {
      "page": "score.coordinates",
      "title": "Score coordinates against corresponding reference observations",
      "topics": [
        "score.coordinates"
      ]
    },
    {
      "page": "score.geodesic.kk",
      "title": "Score a layout under the full geodesic KK energy",
      "topics": [
        "score.geodesic.kk"
      ]
    },
    {
      "page": "score.gmds",
      "title": "Score a layout with the common GMDS diagnostic panel",
      "topics": [
        "score.gmds"
      ]
    },
    {
      "page": "score.landmark.geodesic.kk",
      "title": "Score a layout under the landmark geodesic KK energy",
      "topics": [
        "score.landmark.geodesic.kk"
      ]
    },
    {
      "page": "score.layout",
      "title": "Score a single layout using graph-aware quality heuristics",
      "topics": [
        "score.layout"
      ]
    },
    {
      "page": "score.misf.geodesic.kk",
      "title": "Score a MISF-based geodesic-KK fit",
      "topics": [
        "score.misf.geodesic.kk"
      ]
    },
    {
      "page": "score.surface",
      "title": "Estimate symmetric area-weighted distance between triangular surfaces",
      "topics": [
        "score.surface"
      ]
    },
    {
      "page": "sierpinski_carpet_surface_helpers",
      "title": "Weighted Sierpinski carpet surface helpers",
      "topics": [
        "sierpinski.carpet.surface.graph",
        "sierpinski_carpet_surface_helpers"
      ]
    },
    {
      "page": "sierpinski_tetrahedron_surface_helpers",
      "title": "Weighted Sierpinski tetrahedron surface helpers",
      "topics": [
        "sierpinski.tetrahedron.surface.graph",
        "sierpinski_tetrahedron_surface_helpers"
      ]
    },
    {
      "page": "sierpinski_triangle_surface_helpers",
      "title": "Weighted Sierpinski triangle surface helpers",
      "topics": [
        "sierpinski.triangle.surface.graph",
        "sierpinski_triangle_surface_helpers"
      ]
    },
    {
      "page": "sphere_surface_helpers",
      "title": "Weighted sphere surface helpers",
      "topics": [
        "sphere.surface.graph",
        "sphere_surface_helpers"
      ]
    },
    {
      "page": "suitesparse.graph",
      "title": "Bundled SuiteSparse Graphs",
      "topics": [
        "suitesparse.graph",
        "suitesparse.graphs"
      ]
    },
    {
      "page": "tetrahedron_mask_helpers",
      "title": "Tetrahedron mask helpers for recursive gasket families",
      "topics": [
        "mask.tetrahedron.classic",
        "mask.tetrahedron.corner.missing",
        "tetrahedron_mask_helpers"
      ]
    },
    {
      "page": "torus_surface_helpers",
      "title": "Weighted torus surface helpers",
      "topics": [
        "torus.surface.graph",
        "torus_surface_helpers"
      ]
    },
    {
      "page": "trace.grip",
      "title": "Trace a GRIP layout",
      "topics": [
        "trace.grip"
      ]
    },
    {
      "page": "trace.legacy.grip",
      "title": "Compute a trace for the legacy GRIP layout",
      "topics": [
        "trace.legacy.grip"
      ]
    },
    {
      "page": "triangle_mask_helpers",
      "title": "Triangle mask helpers for recursive gasket families",
      "topics": [
        "mask.triangle.bridge",
        "mask.triangle.classic",
        "triangle_mask_helpers"
      ]
    },
    {
      "page": "triangulated_annulus_surface_helpers",
      "title": "Weighted triangulated annulus surface helpers",
      "topics": [
        "triangulated.annulus.surface.graph",
        "triangulated_annulus_surface_helpers"
      ]
    },
    {
      "page": "triangulated_pair_of_pants_surface_helpers",
      "title": "Weighted triangulated pair-of-pants surface helpers",
      "topics": [
        "triangulated.pair.of.pants.surface.graph",
        "triangulated_pair_of_pants_surface_helpers"
      ]
    },
    {
      "page": "triangulated_polyhedron_surface_helpers",
      "title": "Weighted triangulated polyhedron surface helpers",
      "topics": [
        "triangulated.polyhedron.surface.graph",
        "triangulated_polyhedron_surface_helpers"
      ]
    },
    {
      "page": "vicsek_surface_helpers",
      "title": "Weighted Vicsek surface helpers",
      "topics": [
        "vicsek.surface.graph",
        "vicsek_surface_helpers"
      ]
    },
    {
      "page": "weighted.grip.nd",
      "title": "Weighted GRIP layout in arbitrary dimensions",
      "topics": [
        "weighted.grip.nd"
      ]
    }
  ],
  "_pkglogo": "https://github.com/pgajer/grip/raw/HEAD/man/figures/logo.svg",
  "_readme": "https://github.com/pgajer/grip/raw/HEAD/README.md",
  "_rundeps": [
    "Rcpp"
  ],
  "_sysdeps": [
    {
      "shlib": "libstdc++",
      "package": "libstdc++6",
      "source": "gcc",
      "version": "16-20260322-1ubuntu1",
      "name": "c++",
      "homepage": "http://gcc.gnu.org/",
      "description": "GNU Standard C++ Library v3"
    }
  ],
  "_score": 3.9542425094393248,
  "_indexed": true,
  "_nocasepkg": "grip",
  "_universes": [
    "pgajer"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.2.0.9001",
      "date": "2026-09-30T19:44:18.000Z",
      "distro": "resolute",
      "arch": "aarch64",
      "commit": "5de12956d17e5ea8fa80b2cdd4d7de1834f8b0c1",
      "fileid": "https://r2.ropensci.org/a82a84d49e5c02387f05452c4b8fa0ec892b9c0c67cbf23075f65fc937965354",
      "status": "success",
      "check": "WARNING",
      "buildurl": "https://github.com/r-universe/pgajer/actions/runs/36766601251"
    },
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.2.0.9001",
      "date": "2026-09-30T19:44:29.000Z",
      "distro": "resolute",
      "arch": "x86_64",
      "commit": "5de12956d17e5ea8fa80b2cdd4d7de1834f8b0c1",
      "fileid": "https://r2.ropensci.org/051eddfa88e59227778483d941cbe4dd75197150e5e3472339b4f5f8c23c130f",
      "status": "success",
      "check": "WARNING",
      "buildurl": "https://github.com/r-universe/pgajer/actions/runs/36766601251"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.2.0.9001",
      "date": "2026-09-30T19:44:20.000Z",
      "distro": "resolute",
      "arch": "aarch64",
      "commit": "5de12956d17e5ea8fa80b2cdd4d7de1834f8b0c1",
      "fileid": "https://r2.ropensci.org/d4f0299c6320d0026da51b64ba6d7835fd214ebdb346ccde699209f62d083bd0",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/pgajer/actions/runs/36766601251"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.2.0.9001",
      "date": "2026-09-30T19:44:40.000Z",
      "distro": "resolute",
      "arch": "x86_64",
      "commit": "5de12956d17e5ea8fa80b2cdd4d7de1834f8b0c1",
      "fileid": "https://r2.ropensci.org/b55b1ee7aba572ad7c4b6c151f186d7d3ad3869710c5e53086e9de2bc56b50ee",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/pgajer/actions/runs/36766601251"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.2.0.9001",
      "date": "2026-09-30T20:02:18.000Z",
      "arch": "aarch64",
      "commit": "5de12956d17e5ea8fa80b2cdd4d7de1834f8b0c1",
      "fileid": "https://r2.ropensci.org/a4b3849c01c4eaab45873a0ec2d94994682593aa4fd93ae0770488a223895bbd",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/pgajer/actions/runs/36766601251"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.2.0.9001",
      "date": "2026-09-30T19:54:03.000Z",
      "arch": "x86_64",
      "commit": "5de12956d17e5ea8fa80b2cdd4d7de1834f8b0c1",
      "fileid": "https://r2.ropensci.org/09a7a0aac592198e134b1b165059761368bcdadc3f5e9103f67088c2bdba3177",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/pgajer/actions/runs/36766601251"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.2.0.9001",
      "date": "2026-09-30T19:59:32.000Z",
      "arch": "aarch64",
      "commit": "5de12956d17e5ea8fa80b2cdd4d7de1834f8b0c1",
      "fileid": "https://r2.ropensci.org/9f92c928dc2f2048056437c34d8f4b11fbc800632d4ec3db57addfae78151845",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/pgajer/actions/runs/36766601251"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.2.0.9001",
      "date": "2026-09-30T19:48:54.000Z",
      "arch": "x86_64",
      "commit": "5de12956d17e5ea8fa80b2cdd4d7de1834f8b0c1",
      "fileid": "https://r2.ropensci.org/9d48838fae86631b1cd6df949bbb8f85afda6c401af2abb59ed41f3d6c2bfd14",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/pgajer/actions/runs/36766601251"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.2.0.9001",
      "date": "2026-09-30T19:44:34.000Z",
      "arch": "emscripten",
      "commit": "5de12956d17e5ea8fa80b2cdd4d7de1834f8b0c1",
      "fileid": "https://r2.ropensci.org/99d2a631b77677f79cf6c0c7b487108ff553f62a7159ac7c5299de6d21774a4f",
      "status": "success",
      "buildurl": "https://github.com/r-universe/pgajer/actions/runs/36766601251"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.2.0.9001",
      "date": "2026-09-30T19:44:59.000Z",
      "arch": "aarch64",
      "commit": "5de12956d17e5ea8fa80b2cdd4d7de1834f8b0c1",
      "fileid": "https://r2.ropensci.org/273829e301f1e7348af418f73bf2f0ab32cd138409c0bca71e4e62688d521a46",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/pgajer/actions/runs/36766601251"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.2.0.9001",
      "date": "2026-09-30T19:50:08.000Z",
      "arch": "x86_64",
      "commit": "5de12956d17e5ea8fa80b2cdd4d7de1834f8b0c1",
      "fileid": "https://r2.ropensci.org/e29ec4cb845bc8d7a55f5f8c2caf1221f3855277e4b37918609334d3a48b1157",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/pgajer/actions/runs/36766601251"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.2.0.9001",
      "date": "2026-09-30T19:48:04.000Z",
      "arch": "x86_64",
      "commit": "5de12956d17e5ea8fa80b2cdd4d7de1834f8b0c1",
      "fileid": "https://r2.ropensci.org/c9e234e90003383c1cc0b1f5a2453f4fe03d2da6484fafa35d904e92c07bd222",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/pgajer/actions/runs/36766601251"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.2.0.9001",
      "date": "2026-09-30T19:45:41.000Z",
      "arch": "aarch64",
      "commit": "5de12956d17e5ea8fa80b2cdd4d7de1834f8b0c1",
      "fileid": "https://r2.ropensci.org/f6471d2ed3e50c120878dcd27f55c832e25013cc274f30cd0177b1c46b2137a4",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/pgajer/actions/runs/36766601251"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.2.0.9001",
      "date": "2026-09-30T19:49:02.000Z",
      "arch": "x86_64",
      "commit": "5de12956d17e5ea8fa80b2cdd4d7de1834f8b0c1",
      "fileid": "https://r2.ropensci.org/34ccb8d436b7b3b5043e72d3020bad65483bd3338d4fedecfddadad536b16830",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/pgajer/actions/runs/36766601251"
    }
  ]
}