Generic function to extract a sub-vector from a NeuroVec
object.
Source: R/all_generic.R
, R/filebacked_neurovec.R
, R/neurovec.R
, and 2 more
sub_vector-methods.Rd
Extracts a subset of volumes from a file-backed neuroimaging vector and returns them as a dense (in-memory) vector.
Extracts a subsequence of volumes from a NeuroVecSeq object.
Usage
sub_vector(x, i, ...)
# S4 method for class 'FileBackedNeuroVec,numeric'
sub_vector(x, i)
# S4 method for class 'NeuroVec,numeric'
sub_vector(x, i)
# S4 method for class 'NeuroVecSeq,numeric'
sub_vector(x, i)
# S4 method for class 'NeuroVecSeq,numeric'
sub_vector(x, i)
# S4 method for class 'SparseNeuroVec,numeric'
sub_vector(x, i)
Value
a NeuroVec
object that is a sub-sequence of the supplied object.
A DenseNeuroVec
object containing the extracted volumes.
A NeuroVecSeq object containing the extracted subsequence
Details
This method efficiently reads only the requested volumes from disk, converting them to an in-memory representation. The spatial metadata is preserved but adjusted to reflect the new number of volumes.
Memory usage is proportional to the number of volumes requested, not the size of the full dataset.
Examples
bvec <- NeuroVec(array(rnorm(24*24*24*24), c(24,24,24,24)), NeuroSpace(c(24,24,24,24), c(1,1,1)))
vec <- sub_vector(bvec,1:2)
all.equal(2, dim(vec)[4])
#> [1] TRUE
vec <- sub_vector(bvec, c(1,3,5,7))
all.equal(4, dim(vec)[4])
#> [1] TRUE
mask <- LogicalNeuroVol(rep(TRUE, 24*24*24), NeuroSpace(c(24,24,24), c(1,1,1)))
svec <- SparseNeuroVec(array(rnorm(24*24*24*24), c(24,24,24,24)),
NeuroSpace(c(24,24,24,24), c(1,1,1)), mask)
vec <- sub_vector(svec, c(1,3,5))
all.equal(3, dim(vec)[4])
#> [1] TRUE
if (FALSE) { # \dontrun{
fbvec <- FileBackedNeuroVec("fmri_data.nii")
# Extract first 10 volumes
subset <- sub_vector(fbvec, 1:10)
# Extract specific timepoints
volumes <- sub_vector(fbvec, c(1, 5, 10))
} # }