Nothing
describe("fetch_neuromaps_osf_json", {
it("fetches and caches osf.json", {
the$osf_json <- NULL
fetch_count <- 0
local_mocked_bindings(
req_perform = function(req) "mock_response",
resp_body_json = function(resp, ...) {
fetch_count <<- fetch_count + 1
list(annotations = list())
},
.package = "httr2"
)
result <- fetch_neuromaps_osf_json()
expect_type(result, "list")
fetch_neuromaps_osf_json()
expect_equal(fetch_count, 1)
the$osf_json <- NULL
})
})
describe("fetch_neuromaps_meta_json", {
it("fetches and caches meta.json", {
the$meta_json <- NULL
fetch_count <- 0
local_mocked_bindings(
req_perform = function(req) "mock_response",
resp_body_json = function(resp, ...) {
fetch_count <<- fetch_count + 1
list(annotations = list())
},
.package = "httr2"
)
result <- fetch_neuromaps_meta_json()
expect_type(result, "list")
fetch_neuromaps_meta_json()
expect_equal(fetch_count, 1)
the$meta_json <- NULL
})
})
describe("parse_osf_annotations", {
it("parses annotation entries into tibble", {
long_fname_l <- paste0(
"source-abagen_desc-genepc1_space-fsaverage",
"_den-10k_hemi-L_feature.func.gii"
)
long_fname_r <- paste0(
"source-abagen_desc-genepc1_space-fsaverage",
"_den-10k_hemi-R_feature.func.gii"
)
osf_data <- list(
fsaverage = list(),
annotations = list(
list(
source = "abagen", desc = "genepc1",
space = "fsaverage",
den = "10k", res = NULL, hemi = "L",
format = "surface",
fname = long_fname_l,
rel_path = "abagen/genepc1/fsaverage/",
checksum = "abc123",
tags = list("genetics"),
url = list("4mw3a", "file123")
),
list(
source = "abagen", desc = "genepc1",
space = "fsaverage",
den = "10k", res = NULL, hemi = "R",
format = "surface",
fname = long_fname_r,
rel_path = "abagen/genepc1/fsaverage/",
checksum = "def456",
tags = list("genetics"),
url = list("4mw3a", "file456")
)
)
)
result <- parse_osf_annotations(osf_data)
expect_s3_class(result, "tbl_df")
expect_equal(nrow(result), 2)
expect_equal(result$osf_project, c("4mw3a", "4mw3a"))
expect_equal(result$osf_file_id, c("file123", "file456"))
expect_equal(result$hemi, c("L", "R"))
})
it("skips template entries", {
osf_data <- list(
fsaverage = list("10k" = list(url = list("4mw3a", "xxx"))),
annotations = list()
)
result <- parse_osf_annotations(osf_data)
expect_equal(nrow(result), 0)
})
})
describe("parse_meta_annotations", {
it("parses meta entries into tibble", {
meta_data <- list(annotations = list(
list(
annot = list(
source = "abagen", desc = "genepc1",
space = "fsaverage", den = "10k"
),
full_desc = "Gene expression PC1",
demographics = list(N = 6, age = "24-55")
)
))
result <- parse_meta_annotations(meta_data)
expect_s3_class(result, "tbl_df")
expect_equal(nrow(result), 1)
expect_equal(result$source, "abagen")
expect_equal(result$full_desc, "Gene expression PC1")
expect_equal(result$N, 6)
expect_equal(result$age, "24-55")
})
})
describe("build_neuromaps_registry", {
it("merges osf and meta data", {
the$registry <- NULL
the$osf_json <- NULL
the$meta_json <- NULL
mock_fname <- paste0(
"source-test_desc-map1_space-fsaverage",
"_den-10k_hemi-L_feature.func.gii"
)
local_mocked_bindings(
fetch_neuromaps_osf_json = function() {
list(annotations = list(
list(
source = "test", desc = "map1",
space = "fsaverage",
den = "10k", res = NULL, hemi = "L",
format = "surface",
fname = mock_fname,
rel_path = "test/map1/fsaverage/",
checksum = "aaa", tags = list("pet"),
url = list("4mw3a", "f1")
)
))
},
fetch_neuromaps_meta_json = function() {
list(annotations = list(
list(
annot = list(
source = "test", desc = "map1",
space = "fsaverage", den = "10k"
),
full_desc = "Test map",
demographics = list(N = 10, age = "30")
)
))
}
)
result <- build_neuromaps_registry()
expect_s3_class(result, "tbl_df")
expect_equal(result$full_desc, "Test map")
expect_equal(result$N, 10)
the$registry <- NULL
})
it("returns cached registry on second call", {
the$registry <- tibble::tibble(
source = "cached", desc = "x", space = "fs"
)
result <- build_neuromaps_registry()
expect_equal(result$source, "cached")
the$registry <- NULL
})
})
describe("filter_neuromaps_registry", {
reg <- tibble::tibble(
source = c("abagen", "beliveau"),
desc = c("genepc1", "az"),
space = c("fsaverage", "MNI152"),
den = c("10k", NA),
res = c(NA, "1mm"),
hemi = c("L", NA),
format = c("surface", "volume"),
tags = list(c("genetics"), c("pet"))
)
it("filters by source", {
result <- filter_neuromaps_registry(reg, source = "abagen")
expect_equal(nrow(result), 1)
expect_equal(result$source, "abagen")
})
it("filters by desc", {
result <- filter_neuromaps_registry(reg, desc = "genepc1")
expect_equal(nrow(result), 1)
})
it("filters by space", {
result <- filter_neuromaps_registry(reg, space = "MNI152")
expect_equal(nrow(result), 1)
})
it("filters by density", {
result <- filter_neuromaps_registry(reg, density = "10k")
expect_equal(nrow(result), 1)
})
it("filters by resolution", {
result <- filter_neuromaps_registry(
reg, resolution = "1mm"
)
expect_equal(nrow(result), 1)
})
it("filters by hemisphere", {
result <- filter_neuromaps_registry(
reg, hemisphere = "L"
)
expect_equal(nrow(result), 1)
})
it("filters by format", {
result <- filter_neuromaps_registry(
reg, format = "volume"
)
expect_equal(nrow(result), 1)
})
it("filters by tags with AND logic", {
reg2 <- tibble::tibble(
source = c("a", "b", "c"),
desc = c("x", "y", "z"),
space = "fs", den = "10k", res = NA,
hemi = "L", format = "surface",
tags = list(
c("pet", "receptor"), c("pet"),
c("receptor", "pet")
)
)
result <- filter_neuromaps_registry(
reg2, tags = c("pet", "receptor")
)
expect_equal(nrow(result), 2)
})
})
describe("resolve_neuromaps_entries", {
it("errors on no match", {
the$registry <- NULL
local_mocked_bindings(
build_neuromaps_registry = function() {
tibble::tibble(
source = character(), desc = character(),
space = character(), den = character(),
res = character(), hemi = character()
)
}
)
expect_error(
resolve_neuromaps_entries(
"nonexistent", "none", "nowhere"
),
"No matching"
)
the$registry <- NULL
})
it("returns matching entries", {
the$registry <- NULL
local_mocked_bindings(
build_neuromaps_registry = function() {
tibble::tibble(
source = c("test", "test"),
desc = c("m", "m"),
space = c("fs", "fs"),
den = c("10k", "10k"),
res = c(NA, NA), hemi = c("L", "R"),
fname = c("f1.gii", "f2.gii")
)
}
)
result <- resolve_neuromaps_entries(
"test", "m", "fs", density = "10k"
)
expect_equal(nrow(result), 2)
the$registry <- NULL
})
it("filters by resolution", {
the$registry <- NULL
local_mocked_bindings(
build_neuromaps_registry = function() {
tibble::tibble(
source = c("test", "test"),
desc = c("m", "m"),
space = c("mni", "mni"),
den = c(NA, NA),
res = c("1mm", "2mm"),
hemi = c(NA, NA),
fname = c("f1.nii.gz", "f2.nii.gz")
)
}
)
result <- resolve_neuromaps_entries(
"test", "m", "mni", resolution = "1mm"
)
expect_equal(nrow(result), 1)
the$registry <- NULL
})
it("filters by hemisphere", {
the$registry <- NULL
local_mocked_bindings(
build_neuromaps_registry = function() {
tibble::tibble(
source = c("test", "test"),
desc = c("m", "m"),
space = c("fs", "fs"),
den = c("10k", "10k"),
res = c(NA, NA), hemi = c("L", "R"),
fname = c("f1.gii", "f2.gii")
)
}
)
result <- resolve_neuromaps_entries(
"test", "m", "fs", hemisphere = "L"
)
expect_equal(nrow(result), 1)
expect_equal(result$hemi, "L")
the$registry <- NULL
})
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.