The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
neuroim2 gives you a small set of data structures for 3D
and 4D neuroimaging data, plus the spatial tools you need to move
between file I/O, coordinate systems, regions of interest, and
resampling. The package is broad, so this overview is intentionally
narrow: it shows the first objects and workflows to learn, then points
you to the focused vignettes that carry the rest.
Start by reading one image and inspecting its spatial metadata.
img <- read_vol(system.file("extdata", "global_mask2.nii.gz", package = "neuroim2"))
dim(img)
#> [1] 64 64 25
spacing(img)
#> [1] 3.5 3.5 3.7
origin(img)
#> [1] 112.00 -108.50 -46.25The most important thing to notice is that a NeuroVol is
not just an array. It also carries a NeuroSpace, which
tracks voxel spacing, origin, and affine transforms.
The recommended path through the package is:
vignette("ChoosingBackends", package = "neuroim2") for
dense, sparse, mapped, file-backed, and hyper-vector backends.vignette("coordinate-systems", package = "neuroim2")
for voxel, grid, and world-coordinate conversions.vignette("VolumesAndVectors", package = "neuroim2") for
the core manipulation story.vignette("Resampling", package = "neuroim2") for
resample(), downsample(),
reorient(), and deoblique().vignette("AnalysisWorkflows", package = "neuroim2") for
ROIs, searchlights, and map-reduce style analyses.If you only read one follow-on article after this overview, make it
vignette("VolumesAndVectors", package = "neuroim2").
Most work in neuroim2 starts with three ideas:
NeuroVol for 3D images such as anatomical volumes,
masks, and single summary maps.NeuroVec for 4D data such as fMRI time-series or
stacked volumes.ROI objects for region-based extraction and local
analyses.Here is the smallest possible example of each.
mask <- img > 0
sum(mask)
#> [1] 29532
vec <- read_vec(system.file("extdata", "global_mask_v4.nii", package = "neuroim2"))
dim(vec)
#> [1] 64 64 25 4
roi <- spherical_roi(space(vec), c(45, 45, 20), radius = 4)
length(roi)
#> [1] 7That is the core mental model for the package:
The next common step is to move from a 4D image to a region-level summary.
roi_ts <- series_roi(vec, roi)
roi_mat <- values(roi_ts)
mean_ts <- rowMeans(roi_mat)
stopifnot(
nrow(roi_mat) == dim(vec)[4],
ncol(roi_mat) == length(roi),
all(is.finite(mean_ts))
)
head(mean_ts)
#> [1] 0 0 0 0This is a deliberately small example, but it shows the typical
neuroim2 workflow:
For broader ROI and searchlight patterns, move directly to
vignette("AnalysisWorkflows", package = "neuroim2").
Once you are comfortable reading data and extracting values, the next important layer is spatial transformation.
img_down <- downsample(img, spacing = c(2, 2, 2))
dim(img)
#> [1] 64 64 25
dim(img_down)
#> [1] 112 112 46
spacing(img_down)
#> [1] 2.00000 2.00000 2.01087For the full story, including orientation handling and affine-aware transforms, use:
vignette("coordinate-systems", package = "neuroim2")vignette("Resampling", package = "neuroim2")You do not need a special backend to start. Use the default dense path first, then switch when the workload demands it.
big_vec <- read_vec(
system.file("extdata", "global_mask_v4.nii", package = "neuroim2"),
mode = "filebacked"
)
series(big_vec, 45, 45, 20)The details and tradeoffs belong in
vignette("ChoosingBackends", package = "neuroim2").
vignette("ChoosingBackends", package = "neuroim2")vignette("coordinate-systems", package = "neuroim2")vignette("VolumesAndVectors", package = "neuroim2")vignette("Resampling", package = "neuroim2")vignette("AnalysisWorkflows", package = "neuroim2")vignette("ImageVolumes", package = "neuroim2")vignette("NeuroVector", package = "neuroim2")vignette("regionOfInterest", package = "neuroim2")vignette("clustered-neurovec", package = "neuroim2")vignette("pipelines", package = "neuroim2")vignette("slice-visualization", package = "neuroim2")vignette("Cookbook", package = "neuroim2")The package becomes much easier to navigate if you treat this
overview as a map, not a manual. Learn NeuroVol,
NeuroVec, and ROI extraction here, then move into the
focused workflow vignettes for backend choice, spatial transforms, and
analysis patterns.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.