{
  "_id": "6aea26852e87f76f20ad139d",
  "Package": "hyperannotatR",
  "Type": "Package",
  "Title": "Region-of-Interest Annotation for Hyperspectral Data",
  "Version": "0.3.1",
  "Authors@R": "person(\"Raban\", \"Heller\", email = \"raban.heller@charite.de\",\nrole = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0001-8006-9742\"))",
  "Description": "Annotate multiple layers of regions of interest in\nhyperspectral data cubes and their associated display rasters.\nAnnotations are stored as validated simple-feature geometries\nin image pixel coordinates with explicit pyramid-level\ntransforms, and can be rasterised to binary, labelled, or\nmulti-class integer masks for downstream segmentation and\nclassification workflows. A batch annotation application built\non 'shiny' supports resumable sessions across image queues,\nlive mask preview, and export to 'GeoJSON', 'QuPath', and\n'TIFF' formats. A versioned partner contract exchanges\nhash-inventoried handoff directories, deep-learning training\ndatasets and typed commands over an optional local control\nservice.",
  "License": "MIT + file LICENSE",
  "URL": "https://github.com/CTTIR/hyperannotatR,\nhttps://cttir.github.io/hyperannotatR/",
  "BugReports": "https://github.com/CTTIR/hyperannotatR/issues",
  "Encoding": "UTF-8",
  "Roxygen": "list(markdown = TRUE)",
  "Config/testthat/edition": "3",
  "VignetteBuilder": "knitr",
  "Config/roxygen2/version": "8.0.0",
  "Config/Needs/website": "CTTIR/themakR",
  "Config/pak/sysreqs": "libabsl-dev cmake libgdal-dev gdal-bin libgeos-dev\nmake libuv1-dev libssl-dev libproj-dev libsqlite3-dev\nlibudunits2-dev",
  "Repository": "https://cttir.r-universe.dev",
  "Date/Publication": "2026-11-03 12:05:15 UTC",
  "RemoteUrl": "https://github.com/CTTIR/hyperannotatR",
  "RemoteRef": "HEAD",
  "RemoteSha": "2ac2309744e39420cb0aa16326af68c1ada0b080",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-11-03 18:11:00 UTC",
    "User": "root"
  },
  "Author": "Raban Heller [aut, cre] (ORCID:\n<https://orcid.org/0000-0001-8006-9742>)",
  "Maintainer": "Raban Heller <raban.heller@charite.de>",
  "_user": "cttir",
  "_type": "src",
  "_file": "hyperannotatR_0.3.1.tar.gz",
  "_fileid": "https://r2.ropensci.org/a73cf4d792dd2d8ac961d18a57742098fad86817fc0f24da92ba4e53efbb3379",
  "_filesize": 6038278,
  "_sha256": "a73cf4d792dd2d8ac961d18a57742098fad86817fc0f24da92ba4e53efbb3379",
  "_expires": "2027-02-11T18:22:58.000Z",
  "_created": "2026-11-03T18:11:00.000Z",
  "_published": "2026-11-03T18:23:01.169Z",
  "_upstream": "https://github.com/CTTIR/hyperannotatR",
  "_status": "success",
  "_maintainer": {
    "name": "Raban Heller",
    "email": "raban.heller@charite.de",
    "login": "r-heller",
    "orcid": "0000-0001-8006-9742",
    "description": "Doctoral researcher at Charité Universitätsmedizin Berlin, Germany. Focus on biomedical research, biostatistics, and data science.",
    "uuid": 58561665
  },
  "_jobs": [
    {
      "job": 126110785514,
      "time": 634,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "NOTE",
      "artifact": "13256499943"
    },
    {
      "job": 126110785628,
      "time": 639,
      "config": "linux-release-x86_64",
      "r": "4.6.2",
      "check": "NOTE",
      "artifact": "13258620259"
    },
    {
      "job": 126110785760,
      "time": 507,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "NOTE",
      "artifact": "13258535017"
    },
    {
      "job": 126110785625,
      "time": 566,
      "config": "macos-release-arm64",
      "r": "4.6.2",
      "check": "NOTE",
      "artifact": "13257629544"
    },
    {
      "job": 126107846325,
      "time": 319,
      "config": "source",
      "r": "4.6.2",
      "check": "OK",
      "artifact": "13256344821"
    },
    {
      "job": 126110785516,
      "time": 147,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "13257842568"
    },
    {
      "job": 126110785801,
      "time": 655,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "NOTE",
      "artifact": "13256859749"
    },
    {
      "job": 126110785621,
      "time": 444,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "NOTE",
      "artifact": "13256059650"
    },
    {
      "job": 126110785564,
      "time": 641,
      "config": "windows-release-x86_64",
      "r": "4.6.2",
      "check": "NOTE",
      "artifact": "13258870381"
    }
  ],
  "_buildurl": "https://github.com/r-universe/cttir/actions/runs/41690522075",
  "_commit": {
    "id": "2ac2309744e39420cb0aa16326af68c1ada0b080",
    "author": "R. Heller <58561665+r-heller@users.noreply.github.com>",
    "committer": "R. Heller <58561665+r-heller@users.noreply.github.com>",
    "message": "Verify dangling link targets through actual read failure\n",
    "time": 1793707515
  },
  "_distro": "resolute",
  "_host": "GitHub-Actions",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.1.0",
      "role": "Depends"
    },
    {
      "package": "cli",
      "role": "Imports"
    },
    {
      "package": "digest",
      "role": "Imports"
    },
    {
      "package": "dplyr",
      "role": "Imports"
    },
    {
      "package": "fs",
      "role": "Imports"
    },
    {
      "package": "ggplot2",
      "role": "Imports"
    },
    {
      "package": "grDevices",
      "role": "Imports"
    },
    {
      "package": "jsonlite",
      "role": "Imports"
    },
    {
      "package": "rlang",
      "version": ">= 1.1.0",
      "role": "Imports"
    },
    {
      "package": "sf",
      "version": ">= 1.0.0",
      "role": "Imports"
    },
    {
      "package": "stars",
      "version": ">= 0.6.0",
      "role": "Imports"
    },
    {
      "package": "stats",
      "role": "Imports"
    },
    {
      "package": "tibble",
      "role": "Imports"
    },
    {
      "package": "tools",
      "role": "Imports"
    },
    {
      "package": "utils",
      "role": "Imports"
    },
    {
      "package": "bslib",
      "version": ">= 0.6.0",
      "role": "Suggests"
    },
    {
      "package": "callr",
      "role": "Suggests"
    },
    {
      "package": "chromote",
      "role": "Suggests"
    },
    {
      "package": "covr",
      "role": "Suggests"
    },
    {
      "package": "curl",
      "role": "Suggests"
    },
    {
      "package": "htmltools",
      "role": "Suggests"
    },
    {
      "package": "htmlwidgets",
      "role": "Suggests"
    },
    {
      "package": "httpuv",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "later",
      "role": "Suggests"
    },
    {
      "package": "magick",
      "role": "Suggests"
    },
    {
      "package": "openssl",
      "role": "Suggests"
    },
    {
      "package": "pkgload",
      "role": "Suggests"
    },
    {
      "package": "png",
      "role": "Suggests"
    },
    {
      "package": "RBioFormats",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "shiny",
      "version": ">= 1.7.0",
      "role": "Suggests"
    },
    {
      "package": "shinyjs",
      "role": "Suggests"
    },
    {
      "package": "shinytest2",
      "role": "Suggests"
    },
    {
      "package": "terra",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.3.2",
      "role": "Suggests"
    },
    {
      "package": "tiff",
      "role": "Suggests"
    },
    {
      "package": "withr",
      "role": "Suggests"
    },
    {
      "package": "xml2",
      "role": "Suggests"
    },
    {
      "package": "zip",
      "role": "Suggests"
    }
  ],
  "_owner": "cttir",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-30",
      "n": 37
    },
    {
      "week": "2026-33",
      "n": 1
    },
    {
      "week": "2026-34",
      "n": 2
    },
    {
      "week": "2026-38",
      "n": 2
    },
    {
      "week": "2026-40",
      "n": 2
    },
    {
      "week": "2026-42",
      "n": 4
    },
    {
      "week": "2026-43",
      "n": 6
    },
    {
      "week": "2026-44",
      "n": 6
    },
    {
      "week": "2026-45",
      "n": 10
    }
  ],
  "_tags": [],
  "_stars": 0,
  "_contributors": [
    {
      "user": "r-heller",
      "count": 80,
      "uuid": 58561665
    }
  ],
  "_userbio": {
    "uuid": 275040041,
    "type": "organization",
    "name": "CTTIR",
    "followers": 10,
    "description": "Computational Trauma and Tissue Injury Research"
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/hyperannotatR"
  },
  "_devurl": "https://github.com/cttir/hyperannotatr",
  "_pkgdown": "https://cttir.github.io/hyperannotatR/",
  "_searchresults": 0,
  "_rbuild": "4.6.2",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/hyperannotatR.html",
    "extra/manual.pdf",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "LICENSE"
  ],
  "_cranurl": false,
  "_exports": [
    "at_add_layer",
    "at_add_roi",
    "at_annotate",
    "at_annotation_revision",
    "at_app",
    "at_backend_detect",
    "at_backend_get",
    "at_backend_list",
    "at_backend_register",
    "at_band_operations",
    "at_band_view",
    "at_bands",
    "at_batch_apply",
    "at_batch_check_geometry",
    "at_canvas",
    "at_canvas_fit",
    "at_canvas_proxy",
    "at_canvas_set_annotations",
    "at_canvas_set_band",
    "at_canvas_set_overlay",
    "at_canvas_set_selection",
    "at_canvas_set_tool",
    "at_check_containment",
    "at_check_geometry",
    "at_clamp",
    "at_close_image",
    "at_commit_qupflowr",
    "at_control_capabilities",
    "at_control_close",
    "at_control_command",
    "at_control_connect",
    "at_control_events",
    "at_control_request_status",
    "at_control_start",
    "at_control_state",
    "at_control_stop",
    "at_convert_values",
    "at_cubert_export_envi",
    "at_current",
    "at_dims",
    "at_example_image",
    "at_example_path",
    "at_example_project",
    "at_example_session",
    "at_export_all",
    "at_export_qupflowr",
    "at_extract",
    "at_extract_pixels",
    "at_extract_spectrum",
    "at_fix_geometry",
    "at_flip_y",
    "at_goto",
    "at_hsi_meta",
    "at_image_capabilities",
    "at_import_qupflowr",
    "at_inspect_saved",
    "at_inspect_source",
    "at_interop_capabilities",
    "at_interop_manifest",
    "at_is_pyramidal",
    "at_is_spectral",
    "at_layer",
    "at_layer_add",
    "at_layer_n",
    "at_layer_remove",
    "at_layer_rois",
    "at_layers",
    "at_load_project",
    "at_load_session",
    "at_manifest",
    "at_mask",
    "at_mask_agreement",
    "at_mask_boundary",
    "at_mask_derive",
    "at_mask_legend",
    "at_mask_preview",
    "at_mask_stack",
    "at_mask_stats",
    "at_meta",
    "at_n_bands",
    "at_n_levels",
    "at_next",
    "at_pixel_size",
    "at_plot",
    "at_plot_image",
    "at_plot_mask",
    "at_plot_overlay",
    "at_plot_project",
    "at_plot_spectrum",
    "at_plot_summary",
    "at_prev",
    "at_project",
    "at_read_geojson",
    "at_read_image",
    "at_read_mask",
    "at_read_npy",
    "at_read_qupath",
    "at_read_rois_csv",
    "at_read_stats",
    "at_relink_source",
    "at_remove_layer",
    "at_remove_roi",
    "at_resume",
    "at_roi_area",
    "at_roi_bbox",
    "at_roi_buffer",
    "at_roi_centroid",
    "at_roi_circle",
    "at_roi_contains",
    "at_roi_difference",
    "at_roi_distance",
    "at_roi_ellipse",
    "at_roi_freehand",
    "at_roi_from_geojson",
    "at_roi_from_sf",
    "at_roi_intersect",
    "at_roi_overlaps",
    "at_roi_point",
    "at_roi_polygon",
    "at_roi_rect",
    "at_roi_rescale",
    "at_roi_ring",
    "at_roi_simplify",
    "at_roi_symdiff",
    "at_roi_union",
    "at_rois",
    "at_rois_overlap",
    "at_save_project",
    "at_save_session",
    "at_session",
    "at_session_status",
    "at_set_status",
    "at_snap",
    "at_stage_qupflowr",
    "at_style",
    "at_summary",
    "at_summary_table",
    "at_tile",
    "at_tile_source",
    "at_tivita_profile",
    "at_training_check",
    "at_training_export",
    "at_training_import",
    "at_transform",
    "at_validate",
    "at_wavelengths",
    "at_write_geojson",
    "at_write_mask",
    "at_write_masks",
    "at_write_npy",
    "at_write_qupath",
    "at_write_rois_csv",
    "atCanvasOutput",
    "renderAtCanvas"
  ],
  "_help": [
    {
      "page": "at_add_layer",
      "title": "Add a layer to a project",
      "concept": [
        "projects"
      ],
      "topics": [
        "at_add_layer"
      ]
    },
    {
      "page": "at_add_roi",
      "title": "Add an ROI to a project layer",
      "concept": [
        "projects"
      ],
      "topics": [
        "at_add_roi"
      ]
    },
    {
      "page": "at_annotate",
      "title": "Launch the batch annotation application",
      "concept": [
        "shiny"
      ],
      "topics": [
        "at_annotate"
      ]
    },
    {
      "page": "at_annotation_revision",
      "title": "Annotation revision token",
      "concept": [
        "interop"
      ],
      "topics": [
        "at_annotation_revision"
      ]
    },
    {
      "page": "at_app",
      "title": "Build the annotation app as a Shiny app object",
      "concept": [
        "shiny"
      ],
      "topics": [
        "at_app"
      ]
    },
    {
      "page": "at_backend_detect",
      "title": "Detect the backend for a file",
      "concept": [
        "backends"
      ],
      "topics": [
        "at_backend_detect"
      ]
    },
    {
      "page": "at_backend_get",
      "title": "Get a registered backend",
      "concept": [
        "backends"
      ],
      "topics": [
        "at_backend_get"
      ]
    },
    {
      "page": "at_backend_list",
      "title": "List registered image backends",
      "concept": [
        "backends"
      ],
      "topics": [
        "at_backend_list"
      ]
    },
    {
      "page": "at_backend_register",
      "title": "Register an image backend",
      "concept": [
        "backends"
      ],
      "topics": [
        "at_backend_register"
      ]
    },
    {
      "page": "at_band_operations",
      "title": "Registered band operations",
      "concept": [
        "hsi"
      ],
      "topics": [
        "at_band_operations"
      ]
    },
    {
      "page": "at_band_view",
      "title": "Compute a registered band view",
      "concept": [
        "hsi"
      ],
      "topics": [
        "at_band_view"
      ]
    },
    {
      "page": "at_bands",
      "title": "Band (channel) table",
      "concept": [
        "images"
      ],
      "topics": [
        "at_bands"
      ]
    },
    {
      "page": "at_batch_apply",
      "title": "Apply a function to every project in a session",
      "concept": [
        "batch"
      ],
      "topics": [
        "at_batch_apply"
      ]
    },
    {
      "page": "at_batch_check_geometry",
      "title": "Check geometry across a whole session",
      "concept": [
        "batch"
      ],
      "topics": [
        "at_batch_check_geometry"
      ]
    },
    {
      "page": "at_canvas",
      "title": "An annotation canvas widget",
      "concept": [
        "shiny"
      ],
      "topics": [
        "at_canvas"
      ]
    },
    {
      "page": "at_canvas_fit",
      "title": "Zoom the canvas to a bounding box",
      "concept": [
        "shiny"
      ],
      "topics": [
        "at_canvas_fit"
      ]
    },
    {
      "page": "at_canvas_proxy",
      "title": "A proxy for an existing annotation canvas",
      "concept": [
        "shiny"
      ],
      "topics": [
        "at_canvas_proxy"
      ]
    },
    {
      "page": "at_canvas_set_annotations",
      "title": "Replace the annotations on a canvas",
      "concept": [
        "shiny"
      ],
      "topics": [
        "at_canvas_set_annotations"
      ]
    },
    {
      "page": "at_canvas_set_band",
      "title": "Set the displayed band or RGB triple",
      "concept": [
        "shiny"
      ],
      "topics": [
        "at_canvas_set_band"
      ]
    },
    {
      "page": "at_canvas_set_overlay",
      "title": "Overlay a mask on the canvas",
      "concept": [
        "shiny"
      ],
      "topics": [
        "at_canvas_set_overlay"
      ]
    },
    {
      "page": "at_canvas_set_selection",
      "title": "Highlight selected ROIs on a canvas",
      "concept": [
        "shiny"
      ],
      "topics": [
        "at_canvas_set_selection"
      ]
    },
    {
      "page": "at_canvas_set_tool",
      "title": "Set the active drawing tool",
      "concept": [
        "shiny"
      ],
      "topics": [
        "at_canvas_set_tool"
      ]
    },
    {
      "page": "at_check_containment",
      "title": "Check cross-layer containment",
      "concept": [
        "geometry"
      ],
      "topics": [
        "at_check_containment"
      ]
    },
    {
      "page": "at_check_geometry",
      "title": "Check the geometry of every ROI in a project",
      "concept": [
        "geometry"
      ],
      "topics": [
        "at_check_geometry"
      ]
    },
    {
      "page": "at_clamp",
      "title": "Clip an ROI to image bounds",
      "concept": [
        "geometry"
      ],
      "topics": [
        "at_clamp"
      ]
    },
    {
      "page": "at_close_image",
      "title": "Release an image handle",
      "concept": [
        "backends",
        "images"
      ],
      "topics": [
        "at_close_image"
      ]
    },
    {
      "page": "at_commit_qupflowr",
      "title": "Commit a staged partner patch",
      "concept": [
        "interop"
      ],
      "topics": [
        "at_commit_qupflowr"
      ]
    },
    {
      "page": "at_control_capabilities",
      "title": "Control protocol capabilities",
      "concept": [
        "control"
      ],
      "topics": [
        "at_control_capabilities"
      ]
    },
    {
      "page": "at_control_close",
      "title": "Close a control service connection",
      "concept": [
        "control"
      ],
      "topics": [
        "at_control_close"
      ]
    },
    {
      "page": "at_control_command",
      "title": "Send a typed control command",
      "concept": [
        "control"
      ],
      "topics": [
        "at_control_command"
      ]
    },
    {
      "page": "at_control_connect",
      "title": "Connect to a running control service",
      "concept": [
        "control"
      ],
      "topics": [
        "at_control_connect"
      ]
    },
    {
      "page": "at_control_events",
      "title": "Read control events after a cursor",
      "concept": [
        "control"
      ],
      "topics": [
        "at_control_events"
      ]
    },
    {
      "page": "at_control_request_status",
      "title": "Resolve the outcome of a control request",
      "concept": [
        "control"
      ],
      "topics": [
        "at_control_request_status"
      ]
    },
    {
      "page": "at_control_start",
      "title": "Start the local control service",
      "concept": [
        "control"
      ],
      "topics": [
        "at_control_start"
      ]
    },
    {
      "page": "at_control_state",
      "title": "Read the state of a control service",
      "concept": [
        "control"
      ],
      "topics": [
        "at_control_state"
      ]
    },
    {
      "page": "at_control_stop",
      "title": "Stop a local control service",
      "concept": [
        "control"
      ],
      "topics": [
        "at_control_stop"
      ]
    },
    {
      "page": "at_convert_values",
      "title": "Convert spectral values between declared units",
      "concept": [
        "hsi"
      ],
      "topics": [
        "at_convert_values"
      ]
    },
    {
      "page": "at_cubert_export_envi",
      "title": "Export a Cubert measurement to a portable ENVI cube",
      "concept": [
        "backends",
        "hsi"
      ],
      "topics": [
        "at_cubert_export_envi"
      ]
    },
    {
      "page": "at_current",
      "title": "The current project",
      "concept": [
        "sessions"
      ],
      "topics": [
        "at_current"
      ]
    },
    {
      "page": "at_dims",
      "title": "Image dimensions at a pyramid level",
      "concept": [
        "images"
      ],
      "topics": [
        "at_dims",
        "dim.annot_image"
      ]
    },
    {
      "page": "at_example_image",
      "title": "Read a bundled example image",
      "concept": [
        "example data",
        "images"
      ],
      "topics": [
        "at_example_image"
      ]
    },
    {
      "page": "at_example_path",
      "title": "Path to a bundled example file",
      "concept": [
        "example data"
      ],
      "topics": [
        "at_example_path"
      ]
    },
    {
      "page": "at_example_project",
      "title": "A populated example project",
      "concept": [
        "example data",
        "projects"
      ],
      "topics": [
        "at_example_project"
      ]
    },
    {
      "page": "at_example_session",
      "title": "An example batch session",
      "concept": [
        "example data",
        "sessions"
      ],
      "topics": [
        "at_example_session"
      ]
    },
    {
      "page": "at_export_all",
      "title": "Export a whole session",
      "concept": [
        "batch"
      ],
      "topics": [
        "at_export_all"
      ]
    },
    {
      "page": "at_export_qupflowr",
      "title": "Export annotations as a qupflowR handoff directory",
      "concept": [
        "interop"
      ],
      "topics": [
        "at_export_qupflowr"
      ]
    },
    {
      "page": "at_extract",
      "title": "Extract summary statistics under ROIs",
      "concept": [
        "extraction"
      ],
      "topics": [
        "at_extract"
      ]
    },
    {
      "page": "at_extract_pixels",
      "title": "Extract per-pixel values under ROIs",
      "concept": [
        "extraction"
      ],
      "topics": [
        "at_extract_pixels"
      ]
    },
    {
      "page": "at_extract_spectrum",
      "title": "Extract mean/median spectra for a spectral cube",
      "concept": [
        "extraction"
      ],
      "topics": [
        "at_extract_spectrum"
      ]
    },
    {
      "page": "at_fix_geometry",
      "title": "Repair the geometry of a project",
      "concept": [
        "geometry"
      ],
      "topics": [
        "at_fix_geometry"
      ]
    },
    {
      "page": "at_flip_y",
      "title": "Flip an ROI's y-axis",
      "concept": [
        "geometry"
      ],
      "topics": [
        "at_flip_y"
      ]
    },
    {
      "page": "at_goto",
      "title": "Jump to a specific image",
      "concept": [
        "sessions"
      ],
      "topics": [
        "at_goto"
      ]
    },
    {
      "page": "at_hsi_meta",
      "title": "Hyperspectral and acquisition metadata of an image",
      "concept": [
        "hsi",
        "images"
      ],
      "topics": [
        "at_hsi_meta"
      ]
    },
    {
      "page": "at_image_capabilities",
      "title": "Inspect the effective reading capabilities of an image",
      "concept": [
        "backends",
        "images"
      ],
      "topics": [
        "at_image_capabilities"
      ]
    },
    {
      "page": "at_import_qupflowr",
      "title": "Import a qupflowR handoff or neutral interchange file",
      "concept": [
        "interop"
      ],
      "topics": [
        "at_import_qupflowr"
      ]
    },
    {
      "page": "at_inspect_saved",
      "title": "Inspect a saved checkpoint without modifying it",
      "concept": [
        "io"
      ],
      "topics": [
        "at_inspect_saved"
      ]
    },
    {
      "page": "at_inspect_source",
      "title": "Inspect an image source without changing annotations or reading pixels",
      "concept": [
        "io"
      ],
      "topics": [
        "at_inspect_source"
      ]
    },
    {
      "page": "at_interop_capabilities",
      "title": "Partner interoperability capabilities",
      "concept": [
        "interop"
      ],
      "topics": [
        "at_interop_capabilities"
      ]
    },
    {
      "page": "at_interop_manifest",
      "title": "Build a partner interop manifest",
      "concept": [
        "interop"
      ],
      "topics": [
        "at_interop_manifest"
      ]
    },
    {
      "page": "at_is_pyramidal",
      "title": "Is the image pyramidal?",
      "concept": [
        "images"
      ],
      "topics": [
        "at_is_pyramidal"
      ]
    },
    {
      "page": "at_is_spectral",
      "title": "Is the image a spectral cube?",
      "concept": [
        "images"
      ],
      "topics": [
        "at_is_spectral"
      ]
    },
    {
      "page": "at_layer",
      "title": "Create a layer",
      "concept": [
        "layers"
      ],
      "topics": [
        "at_layer"
      ]
    },
    {
      "page": "at_layer_add",
      "title": "Add an ROI to a layer",
      "concept": [
        "layers"
      ],
      "topics": [
        "at_layer_add"
      ]
    },
    {
      "page": "at_layer_n",
      "title": "Number of ROIs in a layer",
      "concept": [
        "layers"
      ],
      "topics": [
        "at_layer_n"
      ]
    },
    {
      "page": "at_layer_remove",
      "title": "Remove an ROI from a layer",
      "concept": [
        "layers"
      ],
      "topics": [
        "at_layer_remove"
      ]
    },
    {
      "page": "at_layer_rois",
      "title": "Layer ROI table",
      "concept": [
        "layers"
      ],
      "topics": [
        "at_layer_rois"
      ]
    },
    {
      "page": "at_layers",
      "title": "Layer summary table",
      "concept": [
        "projects"
      ],
      "topics": [
        "at_layers"
      ]
    },
    {
      "page": "at_load_project",
      "title": "Load a project",
      "concept": [
        "io"
      ],
      "topics": [
        "at_load_project"
      ]
    },
    {
      "page": "at_load_session",
      "title": "Load a session",
      "concept": [
        "io"
      ],
      "topics": [
        "at_load_session"
      ]
    },
    {
      "page": "at_manifest",
      "title": "Session progress manifest with per-label counts",
      "concept": [
        "sessions"
      ],
      "topics": [
        "at_manifest"
      ]
    },
    {
      "page": "at_mask",
      "title": "Rasterise ROIs to a mask (\"Schablone\")",
      "concept": [
        "masks"
      ],
      "topics": [
        "at_mask"
      ]
    },
    {
      "page": "at_mask_agreement",
      "title": "Agreement between two masks",
      "concept": [
        "masks"
      ],
      "topics": [
        "at_mask_agreement"
      ]
    },
    {
      "page": "at_mask_boundary",
      "title": "Object boundaries of a mask",
      "concept": [
        "masks"
      ],
      "topics": [
        "at_mask_boundary"
      ]
    },
    {
      "page": "at_mask_derive",
      "title": "Derive a training mask from layer masks",
      "concept": [
        "masks"
      ],
      "topics": [
        "at_mask_derive"
      ]
    },
    {
      "page": "at_mask_legend",
      "title": "Legend of a mask",
      "concept": [
        "masks"
      ],
      "topics": [
        "at_mask_legend"
      ]
    },
    {
      "page": "at_mask_preview",
      "title": "Downsampled preview of a mask",
      "concept": [
        "masks"
      ],
      "topics": [
        "at_mask_preview"
      ]
    },
    {
      "page": "at_mask_stack",
      "title": "Stack per-layer masks into a 3D array",
      "concept": [
        "masks"
      ],
      "topics": [
        "at_mask_stack"
      ]
    },
    {
      "page": "at_mask_stats",
      "title": "Per-value statistics of a mask",
      "concept": [
        "masks"
      ],
      "topics": [
        "at_mask_stats"
      ]
    },
    {
      "page": "at_meta",
      "title": "Image metadata",
      "concept": [
        "images"
      ],
      "topics": [
        "at_meta"
      ]
    },
    {
      "page": "at_n_bands",
      "title": "Number of bands (channels)",
      "concept": [
        "images"
      ],
      "topics": [
        "at_n_bands"
      ]
    },
    {
      "page": "at_n_levels",
      "title": "Number of pyramid levels",
      "concept": [
        "images"
      ],
      "topics": [
        "at_n_levels"
      ]
    },
    {
      "page": "at_next",
      "title": "Advance to the next image",
      "concept": [
        "sessions"
      ],
      "topics": [
        "at_next"
      ]
    },
    {
      "page": "at_pixel_size",
      "title": "Physical pixel size",
      "concept": [
        "images"
      ],
      "topics": [
        "at_pixel_size"
      ]
    },
    {
      "page": "at_plot",
      "title": "Plot generic for hyperannotatR objects",
      "concept": [
        "plots"
      ],
      "topics": [
        "at_plot"
      ]
    },
    {
      "page": "at_plot_image",
      "title": "Plot an image",
      "concept": [
        "plots"
      ],
      "topics": [
        "at_plot_image"
      ]
    },
    {
      "page": "at_plot_mask",
      "title": "Plot a mask",
      "concept": [
        "plots"
      ],
      "topics": [
        "at_plot_mask"
      ]
    },
    {
      "page": "at_plot_overlay",
      "title": "Plot ROIs overlaid on the image",
      "concept": [
        "plots"
      ],
      "topics": [
        "at_plot_overlay"
      ]
    },
    {
      "page": "at_plot_project",
      "title": "Plot a project's ROIs",
      "concept": [
        "plots"
      ],
      "topics": [
        "at_plot_project"
      ]
    },
    {
      "page": "at_plot_spectrum",
      "title": "Plot spectra",
      "concept": [
        "plots"
      ],
      "topics": [
        "at_plot_spectrum"
      ]
    },
    {
      "page": "at_plot_summary",
      "title": "Plot a project summary",
      "concept": [
        "plots"
      ],
      "topics": [
        "at_plot_summary"
      ]
    },
    {
      "page": "at_prev",
      "title": "Step back to the previous image",
      "concept": [
        "sessions"
      ],
      "topics": [
        "at_prev"
      ]
    },
    {
      "page": "at_project",
      "title": "Create an annotation project",
      "concept": [
        "projects"
      ],
      "topics": [
        "at_project"
      ]
    },
    {
      "page": "at_read_geojson",
      "title": "Read ROIs from a GeoJSON file",
      "concept": [
        "io"
      ],
      "topics": [
        "at_read_geojson"
      ]
    },
    {
      "page": "at_read_image",
      "title": "Read an image",
      "concept": [
        "backends",
        "images"
      ],
      "topics": [
        "at_read_image"
      ]
    },
    {
      "page": "at_read_mask",
      "title": "Read a mask into editable ROIs",
      "concept": [
        "masks"
      ],
      "topics": [
        "at_read_mask"
      ]
    },
    {
      "page": "at_read_npy",
      "title": "Read a NumPy '.npy' integer mask",
      "concept": [
        "masks"
      ],
      "topics": [
        "at_read_npy"
      ]
    },
    {
      "page": "at_read_qupath",
      "title": "Read ROIs from a QuPath GeoJSON file",
      "concept": [
        "io"
      ],
      "topics": [
        "at_read_qupath"
      ]
    },
    {
      "page": "at_read_rois_csv",
      "title": "Read ROIs from a CSV with WKT geometry",
      "concept": [
        "io"
      ],
      "topics": [
        "at_read_rois_csv"
      ]
    },
    {
      "page": "at_read_stats",
      "title": "Read accounting for an image",
      "concept": [
        "hsi"
      ],
      "topics": [
        "at_read_stats"
      ]
    },
    {
      "page": "at_relink_source",
      "title": "Explicitly relink or revalidate an image source",
      "concept": [
        "io"
      ],
      "topics": [
        "at_relink_source"
      ]
    },
    {
      "page": "at_remove_layer",
      "title": "Remove a layer from a project",
      "concept": [
        "projects"
      ],
      "topics": [
        "at_remove_layer"
      ]
    },
    {
      "page": "at_remove_roi",
      "title": "Remove an ROI from a project",
      "concept": [
        "projects"
      ],
      "topics": [
        "at_remove_roi"
      ]
    },
    {
      "page": "at_resume",
      "title": "Resume a saved session",
      "concept": [
        "sessions"
      ],
      "topics": [
        "at_resume"
      ]
    },
    {
      "page": "at_roi_area",
      "title": "ROI area",
      "concept": [
        "rois"
      ],
      "topics": [
        "at_roi_area"
      ]
    },
    {
      "page": "at_roi_bbox",
      "title": "ROI bounding box",
      "concept": [
        "rois"
      ],
      "topics": [
        "at_roi_bbox"
      ]
    },
    {
      "page": "at_roi_buffer",
      "title": "Buffer an ROI",
      "concept": [
        "geometry"
      ],
      "topics": [
        "at_roi_buffer"
      ]
    },
    {
      "page": "at_roi_centroid",
      "title": "ROI centroid",
      "concept": [
        "rois"
      ],
      "topics": [
        "at_roi_centroid"
      ]
    },
    {
      "page": "at_roi_circle",
      "title": "Create a circular ROI",
      "concept": [
        "rois"
      ],
      "topics": [
        "at_roi_circle"
      ]
    },
    {
      "page": "at_roi_contains",
      "title": "Test whether points fall inside an ROI",
      "concept": [
        "geometry"
      ],
      "topics": [
        "at_roi_contains"
      ]
    },
    {
      "page": "at_roi_distance",
      "title": "Distance between two ROIs",
      "concept": [
        "geometry"
      ],
      "topics": [
        "at_roi_distance"
      ]
    },
    {
      "page": "at_roi_ellipse",
      "title": "Create an elliptical ROI",
      "concept": [
        "rois"
      ],
      "topics": [
        "at_roi_ellipse"
      ]
    },
    {
      "page": "at_roi_freehand",
      "title": "Create a freehand ROI",
      "concept": [
        "rois"
      ],
      "topics": [
        "at_roi_freehand"
      ]
    },
    {
      "page": "at_roi_from_geojson",
      "title": "Convert a GeoJSON feature to an ROI",
      "concept": [
        "io",
        "rois"
      ],
      "topics": [
        "at_roi_from_geojson"
      ]
    },
    {
      "page": "at_roi_from_sf",
      "title": "Create an ROI from an existing sf geometry",
      "concept": [
        "rois"
      ],
      "topics": [
        "at_roi_from_sf"
      ]
    },
    {
      "page": "at_roi_overlaps",
      "title": "Test whether two ROIs intersect",
      "concept": [
        "geometry"
      ],
      "topics": [
        "at_roi_overlaps"
      ]
    },
    {
      "page": "at_roi_point",
      "title": "Create a point ROI",
      "concept": [
        "rois"
      ],
      "topics": [
        "at_roi_point"
      ]
    },
    {
      "page": "at_roi_polygon",
      "title": "Create a polygon ROI",
      "concept": [
        "rois"
      ],
      "topics": [
        "at_roi_polygon"
      ]
    },
    {
      "page": "at_roi_rect",
      "title": "Create a rectangular ROI",
      "concept": [
        "rois"
      ],
      "topics": [
        "at_roi_rect"
      ]
    },
    {
      "page": "at_roi_rescale",
      "title": "Rescale an ROI between pyramid levels",
      "concept": [
        "geometry"
      ],
      "topics": [
        "at_roi_rescale"
      ]
    },
    {
      "page": "at_roi_ring",
      "title": "Ring (annulus) along an ROI margin",
      "concept": [
        "geometry"
      ],
      "topics": [
        "at_roi_ring"
      ]
    },
    {
      "page": "at_roi_setops",
      "title": "Set operations on ROIs",
      "concept": [
        "geometry"
      ],
      "topics": [
        "at_roi_difference",
        "at_roi_intersect",
        "at_roi_setops",
        "at_roi_symdiff",
        "at_roi_union"
      ]
    },
    {
      "page": "at_roi_simplify",
      "title": "Simplify an ROI",
      "concept": [
        "geometry"
      ],
      "topics": [
        "at_roi_simplify"
      ]
    },
    {
      "page": "at_rois",
      "title": "Query the ROIs of a project",
      "concept": [
        "projects"
      ],
      "topics": [
        "at_rois"
      ]
    },
    {
      "page": "at_rois_overlap",
      "title": "Pairwise ROI overlaps within a layer",
      "concept": [
        "geometry"
      ],
      "topics": [
        "at_rois_overlap"
      ]
    },
    {
      "page": "at_save_project",
      "title": "Save a project",
      "concept": [
        "io"
      ],
      "topics": [
        "at_save_project"
      ]
    },
    {
      "page": "at_save_session",
      "title": "Save a session",
      "concept": [
        "io"
      ],
      "topics": [
        "at_save_session"
      ]
    },
    {
      "page": "at_session",
      "title": "Create a batch annotation session",
      "concept": [
        "sessions"
      ],
      "topics": [
        "at_session"
      ]
    },
    {
      "page": "at_session_status",
      "title": "The session manifest",
      "concept": [
        "sessions"
      ],
      "topics": [
        "at_session_status"
      ]
    },
    {
      "page": "at_set_status",
      "title": "Set the status of a queued image",
      "concept": [
        "sessions"
      ],
      "topics": [
        "at_set_status"
      ]
    },
    {
      "page": "at_snap",
      "title": "Snap ROI vertices to a grid",
      "concept": [
        "geometry"
      ],
      "topics": [
        "at_snap"
      ]
    },
    {
      "page": "at_stage_qupflowr",
      "title": "Stage partner changes against a hyperannotatR project",
      "concept": [
        "interop"
      ],
      "topics": [
        "at_stage_qupflowr"
      ]
    },
    {
      "page": "at_style",
      "title": "Layer style",
      "concept": [
        "layers"
      ],
      "topics": [
        "at_style"
      ]
    },
    {
      "page": "at_summary",
      "title": "Summarise a project",
      "concept": [
        "projects"
      ],
      "topics": [
        "at_summary"
      ]
    },
    {
      "page": "at_summary_table",
      "title": "Session summary statistics",
      "concept": [
        "batch"
      ],
      "topics": [
        "at_summary_table"
      ]
    },
    {
      "page": "at_tile",
      "title": "Read a tile from an image",
      "concept": [
        "backends",
        "images"
      ],
      "topics": [
        "at_tile"
      ]
    },
    {
      "page": "at_tile_source",
      "title": "Build a tile-source descriptor for the canvas",
      "concept": [
        "shiny"
      ],
      "topics": [
        "at_tile_source"
      ]
    },
    {
      "page": "at_tivita_profile",
      "title": "Declare a TIVITA SpecCube layout profile",
      "concept": [
        "backends",
        "hsi"
      ],
      "topics": [
        "at_tivita_profile"
      ]
    },
    {
      "page": "at_training_check",
      "title": "Check a training dataset",
      "concept": [
        "training"
      ],
      "topics": [
        "at_training_check"
      ]
    },
    {
      "page": "at_training_export",
      "title": "Export a DNN training dataset",
      "concept": [
        "training"
      ],
      "topics": [
        "at_training_export"
      ]
    },
    {
      "page": "at_training_import",
      "title": "Import model predictions as staged annotations",
      "concept": [
        "training"
      ],
      "topics": [
        "at_training_import"
      ]
    },
    {
      "page": "at_transform",
      "title": "Transform an ROI between pyramid levels using real image dimensions",
      "concept": [
        "geometry"
      ],
      "topics": [
        "at_transform"
      ]
    },
    {
      "page": "at_validate",
      "title": "Validate a project's invariants",
      "concept": [
        "projects"
      ],
      "topics": [
        "at_validate"
      ]
    },
    {
      "page": "at_wavelengths",
      "title": "Band centre wavelengths",
      "concept": [
        "images"
      ],
      "topics": [
        "at_wavelengths"
      ]
    },
    {
      "page": "at_write_geojson",
      "title": "Write a project's ROIs to GeoJSON",
      "concept": [
        "io"
      ],
      "topics": [
        "at_write_geojson"
      ]
    },
    {
      "page": "at_write_mask",
      "title": "Write a mask to disk",
      "concept": [
        "masks"
      ],
      "topics": [
        "at_write_mask"
      ]
    },
    {
      "page": "at_write_masks",
      "title": "Batch-write the masks of a project",
      "concept": [
        "masks"
      ],
      "topics": [
        "at_write_masks"
      ]
    },
    {
      "page": "at_write_npy",
      "title": "Write a mask to a NumPy '.npy' file",
      "concept": [
        "masks"
      ],
      "topics": [
        "at_write_npy"
      ]
    },
    {
      "page": "at_write_qupath",
      "title": "Write a project's ROIs as QuPath GeoJSON",
      "concept": [
        "io"
      ],
      "topics": [
        "at_write_qupath"
      ]
    },
    {
      "page": "at_write_rois_csv",
      "title": "Write a project's ROIs to CSV",
      "concept": [
        "io"
      ],
      "topics": [
        "at_write_rois_csv"
      ]
    },
    {
      "page": "atCanvasOutput",
      "title": "Shiny output for the annotation canvas",
      "concept": [
        "shiny"
      ],
      "topics": [
        "atCanvasOutput"
      ]
    },
    {
      "page": "hyperannotatR-classes",
      "title": "hyperannotatR S3 classes",
      "concept": [
        "images"
      ],
      "topics": [
        "annot_image",
        "annot_layer",
        "annot_mask",
        "annot_project",
        "annot_roi",
        "annot_session",
        "annot_style",
        "annot_summary",
        "hyperannotatR-classes"
      ]
    },
    {
      "page": "renderAtCanvas",
      "title": "Render an annotation canvas in Shiny",
      "concept": [
        "shiny"
      ],
      "topics": [
        "renderAtCanvas"
      ]
    }
  ],
  "_pkglogo": "https://github.com/CTTIR/hyperannotatR/raw/HEAD/man/figures/logo.svg",
  "_readme": "https://github.com/CTTIR/hyperannotatR/raw/HEAD/README.md",
  "_rundeps": [
    "abind",
    "class",
    "classInt",
    "cli",
    "cpp11",
    "DBI",
    "digest",
    "dplyr",
    "e1071",
    "farver",
    "fs",
    "generics",
    "ggplot2",
    "glue",
    "gtable",
    "isoband",
    "jsonlite",
    "KernSmooth",
    "labeling",
    "lifecycle",
    "magrittr",
    "pillar",
    "pkgconfig",
    "proxy",
    "R6",
    "RColorBrewer",
    "Rcpp",
    "rlang",
    "s2",
    "S7",
    "scales",
    "sf",
    "stars",
    "tibble",
    "tidyselect",
    "units",
    "utf8",
    "vctrs",
    "viridisLite",
    "withr",
    "wk"
  ],
  "_vignettes": [
    {
      "source": "hyperannotatR.Rmd",
      "filename": "hyperannotatR.html",
      "title": "Get started with hyperannotatR",
      "engine": "knitr::rmarkdown",
      "headings": [
        "An example image",
        "Building a project",
        "Adding some regions",
        "Inspecting the annotations",
        "Seeing them in context",
        "Rasterising to a mask",
        "Writing the mask to disk"
      ],
      "created": "2026-10-19 05:47:38",
      "modified": "2026-11-02 17:41:08",
      "commits": 4
    },
    {
      "source": "images-and-backends.Rmd",
      "filename": "images-and-backends.html",
      "title": "Images and backends",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Image handles and windowed readers",
        "Pyramid levels",
        "Backends",
        "Raw samples and input validation",
        "Reopening saved reader contracts",
        "The universal tile accessor",
        "Registering a custom backend",
        "Memory discipline",
        "Quantitative extraction contracts"
      ],
      "created": "2026-07-20 22:36:17",
      "modified": "2026-11-02 18:09:56",
      "commits": 8
    },
    {
      "source": "interop.Rmd",
      "filename": "interop.html",
      "title": "Interoperability",
      "engine": "knitr::rmarkdown",
      "headings": [
        "GeoJSON",
        "Coordinate levels and legacy imports",
        "The flip_y option",
        "QuPath",
        "The colour gotcha",
        "Masks for Python",
        "CSV and WKT",
        "Export destinations and receipts"
      ],
      "created": "2026-07-20 22:36:17",
      "modified": "2026-11-02 17:41:08",
      "commits": 8
    },
    {
      "source": "masks.Rmd",
      "filename": "masks.html",
      "title": "Masks",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Three mask types",
        "Grid size and memory budget",
        "Encoding metadata and alignment",
        "The pixel-coverage contract",
        "touches: centres versus contact",
        "Overlap resolution",
        "Masks from a project",
        "Writing masks and the legend sidecar",
        "Downstream consumption",
        "Reading masks back"
      ],
      "created": "2026-07-20 22:36:17",
      "modified": "2026-11-02 18:10:11",
      "commits": 8
    },
    {
      "source": "reproducible-analysis.Rmd",
      "filename": "reproducible-analysis.html",
      "title": "Reproducible analytical summaries",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Counts and estimands",
        "Nonfinite values and spectra",
        "Agreement with explicit alignment",
        "Traceability and scope"
      ],
      "created": "2026-10-19 12:10:07",
      "modified": "2026-11-02 17:41:08",
      "commits": 3
    },
    {
      "source": "annotation-model.Rmd",
      "filename": "annotation-model.html",
      "title": "The annotation model",
      "engine": "knitr::rmarkdown",
      "headings": [
        "The coordinate system",
        "The object hierarchy",
        "Geometry validity and repair",
        "Pyramid levels and coordinate transforms"
      ],
      "created": "2026-07-20 22:36:17",
      "modified": "2026-11-02 17:41:08",
      "commits": 7
    },
    {
      "source": "shiny-workflow.Rmd",
      "filename": "shiny-workflow.html",
      "title": "The batch annotation app",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Building a session",
        "Layer templates and label vocabularies",
        "Launching the app",
        "Hyperspectral cubes in the app",
        "Reference lengths and estimated spatial scale",
        "Staged changes and status",
        "Keyboard shortcuts",
        "Copy-forward for serial sections",
        "Autosave and recovery",
        "Folder restrictions",
        "The session API without the app",
        "Export scoping"
      ],
      "created": "2026-07-20 22:36:17",
      "modified": "2026-11-02 18:11:51",
      "commits": 9
    },
    {
      "source": "partner-interop.Rmd",
      "filename": "partner-interop.html",
      "title": "Working with qupflowR: handoffs, control and training data",
      "engine": "knitr::rmarkdown",
      "headings": [
        "What this installation supports",
        "Handoff directories",
        "The manifest",
        "Importing, staging and committing",
        "Hyperspectral metadata",
        "Deep-learning training datasets",
        "The control service",
        "Versions and migration"
      ],
      "created": "2026-09-15 09:25:17",
      "modified": "2026-11-02 18:27:11",
      "commits": 7
    }
  ],
  "_score": 4.556302500767288,
  "_indexed": true,
  "_nocasepkg": "hyperannotatr",
  "_universes": [
    "cttir",
    "r-heller"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.3.1",
      "date": "2026-11-03T18:13:59.000Z",
      "distro": "resolute",
      "commit": "2ac2309744e39420cb0aa16326af68c1ada0b080",
      "fileid": "https://r2.ropensci.org/c76a00dfa5757f71f403458d36a5daea3af7d7906b8280aaa760939240921b37",
      "status": "success",
      "check": "NOTE",
      "buildurl": "https://github.com/r-universe/cttir/actions/runs/41690522075"
    },
    {
      "r": "4.6.2",
      "os": "linux",
      "version": "0.3.1",
      "date": "2026-11-03T18:14:29.000Z",
      "distro": "resolute",
      "commit": "2ac2309744e39420cb0aa16326af68c1ada0b080",
      "fileid": "https://r2.ropensci.org/f1d734b6decf9fcde15c1f0e454a28a2a0dc479de7a0bfcd45a0d82fcfc855e8",
      "status": "success",
      "check": "NOTE",
      "buildurl": "https://github.com/r-universe/cttir/actions/runs/41690522075"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.3.1",
      "date": "2026-11-03T18:13:10.000Z",
      "commit": "2ac2309744e39420cb0aa16326af68c1ada0b080",
      "fileid": "https://r2.ropensci.org/defe311818d36927e6e40b6a02c402d84485f3b86ab9f4bdab17b2da575053b7",
      "status": "success",
      "check": "NOTE",
      "buildurl": "https://github.com/r-universe/cttir/actions/runs/41690522075"
    },
    {
      "r": "4.6.2",
      "os": "mac",
      "version": "0.3.1",
      "date": "2026-11-03T18:13:41.000Z",
      "commit": "2ac2309744e39420cb0aa16326af68c1ada0b080",
      "fileid": "https://r2.ropensci.org/7bb00e435e1e381b8ff98c2c9334138a800d997e85a2745b64dc97d7d18350ae",
      "status": "success",
      "check": "NOTE",
      "buildurl": "https://github.com/r-universe/cttir/actions/runs/41690522075"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.3.1",
      "date": "2026-11-03T18:14:06.000Z",
      "commit": "2ac2309744e39420cb0aa16326af68c1ada0b080",
      "fileid": "https://r2.ropensci.org/6fc71657aafdba8c7005c9243e6f19eee4b7e6d4ca5edd04723d7c25b5af29ca",
      "status": "success",
      "buildurl": "https://github.com/r-universe/cttir/actions/runs/41690522075"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.3.1",
      "date": "2026-11-03T18:12:54.000Z",
      "commit": "2ac2309744e39420cb0aa16326af68c1ada0b080",
      "fileid": "https://r2.ropensci.org/02d48b351f14a5aad7af9884737e15c046ebb657c2904f2bb33e5504cc2ae5a7",
      "status": "success",
      "check": "NOTE",
      "buildurl": "https://github.com/r-universe/cttir/actions/runs/41690522075"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.3.1",
      "date": "2026-11-03T18:12:41.000Z",
      "commit": "2ac2309744e39420cb0aa16326af68c1ada0b080",
      "fileid": "https://r2.ropensci.org/ead2afebac921a359b3438aa9ee1a1783d2fd192ed2ac4664765b24cd14307e6",
      "status": "success",
      "check": "NOTE",
      "buildurl": "https://github.com/r-universe/cttir/actions/runs/41690522075"
    },
    {
      "r": "4.6.2",
      "os": "win",
      "version": "0.3.1",
      "date": "2026-11-03T18:12:54.000Z",
      "commit": "2ac2309744e39420cb0aa16326af68c1ada0b080",
      "fileid": "https://r2.ropensci.org/4f170a1d10d3944688763ac52beb53ef3ed6de74cad4bea17c549ff8ce1af999",
      "status": "success",
      "check": "NOTE",
      "buildurl": "https://github.com/r-universe/cttir/actions/runs/41690522075"
    }
  ]
}