{
  "_id": "6a1a7b851d7bb097a09d387e",
  "Package": "neuromapr",
  "Title": "Spatial Null Models and Transforms for Brain Map Comparison",
  "Version": "0.2.2",
  "Authors@R": "c(\nperson(\"Athanasia Mo\", \"Mowinckel\", , \"a.m.mowinckel@psykologi.uio.no\",\nrole = c(\"aut\", \"cre\", \"cph\"),\ncomment = c(ORCID = \"0000-0002-5756-0223\"))\n)",
  "Description": "Implements spatial null models and coordinate-space\ntransformations for statistical comparison of brain maps,\nfollowing the framework described in Markello et al. (2022)\n<doi:10.1038/s41592-022-01625-w>. Provides variogram-matching\nsurrogates (Burt et al. 2020), Moran spectral randomization\n(Wagner & Dray 2015), and spin-based permutation tests\n(Alexander-Bloch et al. 2018). Includes an R interface to the\n'neuromaps' annotation registry for browsing, downloading, and\ncomparing brain map annotations from the Open Science Framework\n('OSF'). Integrates with 'ciftiTools' for coordinate-space\ntransforms.",
  "License": "MIT + file LICENSE",
  "Encoding": "UTF-8",
  "Roxygen": "list(markdown = TRUE)",
  "RoxygenNote": "7.3.3",
  "Config/testthat/edition": "3",
  "Config/testthat/parallel": "true",
  "VignetteBuilder": "knitr",
  "URL": "https://github.com/lcbc-uio/neuromapr,\nhttps://lcbc-uio.github.io/neuromapr/,\nhttps://doi.org/10.5281/zenodo.18648937",
  "BugReports": "https://github.com/lcbc-uio/neuromapr/issues",
  "Config/pak/sysreqs": "libglpk-dev libxml2-dev libssl-dev",
  "Repository": "https://ggsegverse.r-universe.dev",
  "Date/Publication": "2026-04-30 10:19:46 UTC",
  "RemoteUrl": "https://github.com/lcbc-uio/neuromapr",
  "RemoteRef": "HEAD",
  "RemoteSha": "67a814bb752e0bb258d8ed571a9d5afb6cba79c3",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-05-30 05:32:18 UTC",
    "User": "root"
  },
  "Author": "Athanasia Mo Mowinckel [aut, cre, cph] (ORCID:\n<https://orcid.org/0000-0002-5756-0223>)",
  "Maintainer": "Athanasia Mo Mowinckel <a.m.mowinckel@psykologi.uio.no>",
  "MD5sum": "a8387b9ed35fcfa43bdfcd05b2822efe",
  "_user": "ggsegverse",
  "_type": "src",
  "_file": "neuromapr_0.2.2.tar.gz",
  "_fileid": "b35e833708577d9f1dc08691a0c37f8234e48bcef61b920742cb014a6e11b01c",
  "_filesize": 817901,
  "_sha256": "b35e833708577d9f1dc08691a0c37f8234e48bcef61b920742cb014a6e11b01c",
  "_created": "2026-05-30T05:32:18.000Z",
  "_published": "2026-05-30T05:54:12.965Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 78627132477,
      "time": 193,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7305729483"
    },
    {
      "job": 78627132472,
      "time": 196,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7305729818"
    },
    {
      "job": 78627132487,
      "time": 201,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7305852160"
    },
    {
      "job": 78627132474,
      "time": 231,
      "config": "macos-release-arm64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7305848836"
    },
    {
      "job": 78626931536,
      "time": 213,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7305709758"
    },
    {
      "job": 78627132467,
      "time": 116,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7305721663"
    },
    {
      "job": 78627132473,
      "time": 502,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7305763399"
    },
    {
      "job": 78627132478,
      "time": 550,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7305769297"
    },
    {
      "job": 78627132479,
      "time": 197,
      "config": "windows-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7305729724"
    }
  ],
  "_buildurl": "https://github.com/r-universe/ggsegverse/actions/runs/26675712976",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_upstream": "https://github.com/lcbc-uio/neuromapr",
  "_commit": {
    "id": "67a814bb752e0bb258d8ed571a9d5afb6cba79c3",
    "author": "github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
    "committer": "github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
    "message": "neuroc_release v0.2.2 [skip ci]\n",
    "time": 1777544386
  },
  "_maintainer": {
    "name": "Athanasia Mo Mowinckel",
    "email": "a.m.mowinckel@psykologi.uio.no",
    "login": "drmowinckels",
    "mastodon": "@Drmowinckels@fosstodon.org",
    "bluesky": "@drmowinckels.io",
    "orcid": "0000-0002-5756-0223",
    "description": "Staff researcher at @LCBC-UiO (www.oslobrains.no) and @Lifebrain (www.lifebrain.uio.no/). PhD in Cognitive Neuroscience. Chapter head for @rladies Oslo",
    "uuid": 14014329
  },
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.2.0",
      "role": "Depends"
    },
    {
      "package": "cli",
      "role": "Imports"
    },
    {
      "package": "dplyr",
      "role": "Imports"
    },
    {
      "package": "ggplot2",
      "role": "Imports"
    },
    {
      "package": "gifti",
      "role": "Imports"
    },
    {
      "package": "httr2",
      "role": "Imports"
    },
    {
      "package": "igraph",
      "role": "Imports"
    },
    {
      "package": "lifecycle",
      "role": "Imports"
    },
    {
      "package": "rlang",
      "role": "Imports"
    },
    {
      "package": "stats",
      "role": "Imports"
    },
    {
      "package": "tibble",
      "role": "Imports"
    },
    {
      "package": "tools",
      "role": "Imports"
    },
    {
      "package": "withr",
      "role": "Imports"
    },
    {
      "package": "ciftiTools",
      "role": "Suggests"
    },
    {
      "package": "clue",
      "role": "Suggests"
    },
    {
      "package": "freesurferformats",
      "role": "Suggests"
    },
    {
      "package": "jsonlite",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "RNifti",
      "role": "Suggests"
    },
    {
      "package": "RSpectra",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "vcr",
      "version": ">= 1.0.0",
      "role": "Suggests"
    }
  ],
  "_owner": "lcbc-uio",
  "_selfowned": false,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-07",
      "n": 14
    },
    {
      "week": "2026-08",
      "n": 8
    },
    {
      "week": "2026-09",
      "n": 3
    },
    {
      "week": "2026-18",
      "n": 2
    }
  ],
  "_tags": [
    {
      "name": "v0.2.0",
      "date": "2026-02-15"
    },
    {
      "name": "v0.2.1",
      "date": "2026-02-28"
    },
    {
      "name": "v0.2.2",
      "date": "2026-04-30"
    }
  ],
  "_stars": 5,
  "_contributors": [
    {
      "user": "drmowinckels",
      "count": 24,
      "uuid": 14014329
    }
  ],
  "_userbio": {
    "uuid": 84540149,
    "type": "organization",
    "name": "ggsegverse",
    "description": "ggseg-suite packages from the Lifebrain EU project lead by Center of Lifespan Changes in Brain and Cogntion - UiO"
  },
  "_downloads": {
    "count": 429,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/neuromapr"
  },
  "_devurl": "https://github.com/lcbc-uio/neuromapr",
  "_pkgdown": "https://lcbc-uio.github.io/neuromapr/",
  "_searchresults": 8,
  "_rbuild": "4.6.0",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/neuromapr.html",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "manual.pdf"
  ],
  "_homeurl": "https://github.com/lcbc-uio/neuromapr",
  "_realowner": "lcbc-uio",
  "_cranurl": true,
  "_releases": [
    {
      "version": "0.2.1",
      "date": "2026-02-27"
    },
    {
      "version": "0.2.2",
      "date": "2026-04-30"
    }
  ],
  "_exports": [
    "annot_to_gifti",
    "check_wb_command",
    "clear_neuromaps_cache",
    "compare_maps",
    "fetch_neuromaps_annotation",
    "fsmorph_to_gifti",
    "generate_nulls",
    "get_parcel_centroids",
    "get_surface_distance",
    "make_surf_graph",
    "neuromaps_available",
    "new_null_distribution",
    "null_alexander_bloch",
    "null_baum",
    "null_burt2018",
    "null_burt2020",
    "null_cornblath",
    "null_moran",
    "null_spin_hungarian",
    "null_spin_vasa",
    "parcellate",
    "parcels_to_vertices",
    "permtest_metric",
    "read_brain_map_values",
    "resample_images",
    "transform_to_space",
    "unparcellate",
    "vertex_areas",
    "vertices_to_parcels"
  ],
  "_help": [
    {
      "page": "annot_to_gifti",
      "title": "Convert FreeSurfer annotation to GIFTI",
      "topics": [
        "annot_to_gifti"
      ]
    },
    {
      "page": "check_wb_command",
      "title": "Check for Connectome Workbench",
      "topics": [
        "check_wb_command"
      ]
    },
    {
      "page": "clear_neuromaps_cache",
      "title": "Clear cached neuromaps registry data",
      "topics": [
        "clear_neuromaps_cache"
      ]
    },
    {
      "page": "compare_maps",
      "title": "Compare brain maps with spatial null model significance testing",
      "topics": [
        "compare_maps",
        "print.neuromaps_enhanced_comparison"
      ]
    },
    {
      "page": "fetch_neuromaps_annotation",
      "title": "Download a neuromaps annotation",
      "topics": [
        "fetch_neuromaps_annotation"
      ]
    },
    {
      "page": "fsmorph_to_gifti",
      "title": "Convert FreeSurfer morphometry to GIFTI",
      "topics": [
        "fsmorph_to_gifti"
      ]
    },
    {
      "page": "generate_nulls",
      "title": "Generate null distributions for brain map data",
      "topics": [
        "generate_nulls"
      ]
    },
    {
      "page": "get_parcel_centroids",
      "title": "Compute parcel centroids",
      "topics": [
        "get_parcel_centroids"
      ]
    },
    {
      "page": "get_surface_distance",
      "title": "Compute geodesic distances on a surface mesh",
      "topics": [
        "get_surface_distance"
      ]
    },
    {
      "page": "make_surf_graph",
      "title": "Build an igraph from a triangular surface mesh",
      "topics": [
        "make_surf_graph"
      ]
    },
    {
      "page": "neuromaps_available",
      "title": "List available neuromaps annotations",
      "topics": [
        "neuromaps_available"
      ]
    },
    {
      "page": "null_alexander_bloch",
      "title": "Alexander-Bloch spin test null model",
      "topics": [
        "null_alexander_bloch"
      ]
    },
    {
      "page": "null_baum",
      "title": "Baum spin test null model",
      "topics": [
        "null_baum"
      ]
    },
    {
      "page": "null_burt2018",
      "title": "Burt 2018 spatial autoregressive null model",
      "topics": [
        "null_burt2018"
      ]
    },
    {
      "page": "null_burt2020",
      "title": "Variogram-matching null model",
      "topics": [
        "null_burt2020"
      ]
    },
    {
      "page": "null_cornblath",
      "title": "Cornblath spin test null model",
      "topics": [
        "null_cornblath"
      ]
    },
    {
      "page": "null_distribution",
      "title": "Create a null distribution object",
      "topics": [
        "as.matrix.null_distribution",
        "new_null_distribution",
        "null_distribution",
        "plot.null_distribution",
        "print.null_distribution",
        "summary.null_distribution"
      ]
    },
    {
      "page": "null_moran",
      "title": "Moran spectral randomization null model",
      "topics": [
        "null_moran"
      ]
    },
    {
      "page": "null_spin_vasa",
      "title": "Spin-test null models for brain maps",
      "topics": [
        "null_spin_hungarian",
        "null_spin_vasa"
      ]
    },
    {
      "page": "parcellate",
      "title": "Parcellate brain map data",
      "topics": [
        "parcellate"
      ]
    },
    {
      "page": "parcels_to_vertices",
      "title": "Map parcel data back to vertices",
      "topics": [
        "parcels_to_vertices"
      ]
    },
    {
      "page": "permtest_metric",
      "title": "Permutation test for any metric between brain maps",
      "topics": [
        "permtest_metric"
      ]
    },
    {
      "page": "read_brain_map_values",
      "title": "Read vertex/voxel values from a brain map file",
      "topics": [
        "read_brain_map_values"
      ]
    },
    {
      "page": "resample_images",
      "title": "Resample brain maps for comparison",
      "topics": [
        "resample_images"
      ]
    },
    {
      "page": "transform_to_space",
      "title": "Transform brain maps between coordinate spaces",
      "topics": [
        "transform_to_space"
      ]
    },
    {
      "page": "unparcellate",
      "title": "Unparcellate brain map data",
      "topics": [
        "unparcellate"
      ]
    },
    {
      "page": "vertex_areas",
      "title": "Compute per-vertex surface areas",
      "topics": [
        "vertex_areas"
      ]
    },
    {
      "page": "vertices_to_parcels",
      "title": "Aggregate vertex data into parcels",
      "topics": [
        "vertices_to_parcels"
      ]
    }
  ],
  "_pkglogo": "https://github.com/lcbc-uio/neuromapr/raw/HEAD/man/figures/logo.svg",
  "_readme": "https://github.com/lcbc-uio/neuromapr/raw/HEAD/README.md",
  "_rundeps": [
    "askpass",
    "base64enc",
    "cli",
    "cpp11",
    "curl",
    "dplyr",
    "farver",
    "generics",
    "ggplot2",
    "gifti",
    "glue",
    "gtable",
    "httr2",
    "igraph",
    "isoband",
    "labeling",
    "lattice",
    "lifecycle",
    "magrittr",
    "Matrix",
    "openssl",
    "pillar",
    "pkgconfig",
    "R.methodsS3",
    "R.oo",
    "R.utils",
    "R6",
    "rappdirs",
    "RColorBrewer",
    "rlang",
    "S7",
    "scales",
    "sys",
    "tibble",
    "tidyselect",
    "utf8",
    "vctrs",
    "viridisLite",
    "withr",
    "xml2"
  ],
  "_vignettes": [
    {
      "source": "null-models.Rmd",
      "filename": "null-models.html",
      "title": "Choosing and Using Null Models",
      "engine": "knitr::rmarkdown",
      "headings": [
        "The landscape",
        "Distance-based methods",
        "Variogram matching (burt2020)",
        "Spatial autoregressive model (burt2018)",
        "Moran spectral randomization (moran)",
        "Spin-based methods",
        "Original spin test (alexander_bloch)",
        "Greedy assignment (spin_vasa)",
        "Optimal assignment (spin_hungarian)",
        "Parcel spin methods",
        "Maximum overlap (baum)",
        "Majority vote (cornblath)",
        "Comparing null distributions visually",
        "Using permtest_metric() for custom metrics",
        "Building custom null distributions",
        "Decision guide",
        "References"
      ],
      "created": "2026-02-12 14:54:46",
      "modified": "2026-02-12 20:08:38",
      "commits": 3
    },
    {
      "source": "neuromapr.Rmd",
      "filename": "neuromapr.html",
      "title": "Getting Started with neuromapr",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Comparing two brain maps",
        "Adding a spatial null model",
        "Visualising the null distribution",
        "Pre-computing null distributions",
        "Working with real brain map files",
        "Accessing the neuromaps atlas collection",
        "Custom metrics with permtest_metric()",
        "Choosing a null model",
        "What comes next",
        "References"
      ],
      "created": "2026-02-12 14:54:46",
      "modified": "2026-02-12 20:04:40",
      "commits": 2
    },
    {
      "source": "rotation-methods.Rmd",
      "filename": "rotation-methods.html",
      "title": "Rotation Methods for Spin Tests",
      "engine": "knitr::rmarkdown",
      "headings": [
        "What a random rotation needs to do",
        "Euler ZYZ rotations",
        "Rodrigues axis-angle rotations",
        "Where Rodrigues has the edge",
        "Geometric transparency",
        "Axis uniformity is explicit",
        "Numerical stability",
        "Idiomatic R",
        "Where Euler has the edge",
        "How much does the difference matter?",
        "Choosing a method",
        "Summary",
        "References"
      ],
      "created": "2026-02-16 20:48:56",
      "modified": "2026-02-16 20:48:56",
      "commits": 1
    },
    {
      "source": "surface-geometry.Rmd",
      "filename": "surface-geometry.html",
      "title": "Surface Geometry",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Surface meshes",
        "Building a surface graph",
        "Geodesic distances",
        "Partial distance matrices",
        "Euclidean vs geodesic",
        "Vertex areas",
        "Checking the geometry",
        "Format conversions",
        "Annotation to GIFTI",
        "Morphometry to GIFTI",
        "Resampling between coordinate spaces",
        "Putting it together",
        "References"
      ],
      "created": "2026-02-12 14:54:46",
      "modified": "2026-02-12 20:04:40",
      "commits": 2
    },
    {
      "source": "parcellation.Rmd",
      "filename": "parcellation.html",
      "title": "Working with Parcellated Data",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Vertices to parcels",
        "Parcels back to vertices",
        "The high-level wrappers",
        "Parcel centroids",
        "Average centroid",
        "Surface centroid",
        "Geodesic centroid",
        "Building a parcel-level distance matrix",
        "Parcellation and null models together",
        "Practical considerations",
        "References"
      ],
      "created": "2026-02-12 14:54:46",
      "modified": "2026-02-12 20:08:38",
      "commits": 3
    }
  ],
  "_score": 5.698970004336019,
  "_indexed": false,
  "_nocasepkg": "neuromapr",
  "_universes": [
    "ggsegverse"
  ],
  "_indexurl": "https://lcbc-uio.r-universe.dev/neuromapr",
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.2.2",
      "date": "2026-05-30T05:34:41.000Z",
      "distro": "noble",
      "commit": "67a814bb752e0bb258d8ed571a9d5afb6cba79c3",
      "fileid": "14c372437433aec4893f647c5f469fa031a0a81e2d59144589784ade19e027cc",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/ggsegverse/actions/runs/26675712976"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "0.2.2",
      "date": "2026-05-30T05:34:46.000Z",
      "distro": "noble",
      "commit": "67a814bb752e0bb258d8ed571a9d5afb6cba79c3",
      "fileid": "a7856cfc6f465559be1ece84f7a90171c8a3e667037bc2b3b9ad19ea907fb2e4",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/ggsegverse/actions/runs/26675712976"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.2.2",
      "date": "2026-05-30T05:51:35.000Z",
      "commit": "67a814bb752e0bb258d8ed571a9d5afb6cba79c3",
      "fileid": "9a21a426213d28c15f7a34941e5a977a1108bdaeabc1175ad557cba9da3ab513",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/ggsegverse/actions/runs/26675712976"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "0.2.2",
      "date": "2026-05-30T05:50:46.000Z",
      "commit": "67a814bb752e0bb258d8ed571a9d5afb6cba79c3",
      "fileid": "0dfb150bcfde977cf4fae701b4ff8adb7d5854e467a7f541544ca7e7a1c5235f",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/ggsegverse/actions/runs/26675712976"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.2.2",
      "date": "2026-05-30T05:34:33.000Z",
      "commit": "67a814bb752e0bb258d8ed571a9d5afb6cba79c3",
      "fileid": "24bb41fb96fd6f790139af531349842a6ed3291b307df53d36f64fa2b34999cc",
      "status": "success",
      "buildurl": "https://github.com/r-universe/ggsegverse/actions/runs/26675712976"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.2.2",
      "date": "2026-05-30T05:38:47.000Z",
      "commit": "67a814bb752e0bb258d8ed571a9d5afb6cba79c3",
      "fileid": "13112ee7f73f27595e1276ef3fb979021322fd1ab9d91ba6a9ce6b6e33279f64",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/ggsegverse/actions/runs/26675712976"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.2.2",
      "date": "2026-05-30T05:39:34.000Z",
      "commit": "67a814bb752e0bb258d8ed571a9d5afb6cba79c3",
      "fileid": "75fd8e92cda3da67348e4c5e6b219349a6a6135b5e1faddebfc319efe0b3a2f7",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/ggsegverse/actions/runs/26675712976"
    },
    {
      "r": "4.6.0",
      "os": "win",
      "version": "0.2.2",
      "date": "2026-05-30T05:33:33.000Z",
      "commit": "67a814bb752e0bb258d8ed571a9d5afb6cba79c3",
      "fileid": "17567fd16f259fb9e76802b303fd22cc67376ede0ddf4abbd55315c9ad78c5da",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/ggsegverse/actions/runs/26675712976"
    }
  ]
}