Sweeps a directory tree for files matching a glob pattern and extracts metadata from file paths using regex capture groups.
Arguments
- root
Root directory to search.
- pattern
Glob pattern for file discovery (e.g.,
"sub-*/analysis/*.nii.gz"). Supports*for single directory level and**for recursive matching.- path_regex
Optional regex with named capture groups for metadata extraction. Named groups like
(?<subject>[^/]+)become metadata columns.- recursive
Whether to search subdirectories. Default
TRUE. Only used if pattern does not contain**.
Examples
# Create a small study tree (empty placeholder files are enough for discovery)
root <- tempfile("study_")
for (s in c("01", "02", "03")) {
d <- file.path(root, paste0("sub-", s), "analysis")
dir.create(d, recursive = TRUE)
invisible(file.create(file.path(d, c("cope1.nii.gz", "varcope1.nii.gz"))))
}
# Discover files with subject extraction
catalog <- image_catalog(
root = root,
pattern = "sub-*/analysis/*.nii.gz",
path_regex = "sub-(?<subject>[^/]+)"
)
catalog
#> Image Catalog
#> Files: 6
#> Root: /tmp/Rtmp17Odxi/study_1cec2c99d30b
#> Pattern: sub-*/analysis/*.nii.gz
#> Metadata columns: subject
#> Subjects: 3 (01, 02, 03)
catalog$metadata[, c("basename", "subject")]
#> basename subject
#> 1 cope1.nii.gz 01
#> 2 varcope1.nii.gz 01
#> 3 cope1.nii.gz 02
#> 4 varcope1.nii.gz 02
#> 5 cope1.nii.gz 03
#> 6 varcope1.nii.gz 03
unlink(root, recursive = TRUE)