# Create a simple clustered brain volume
dim <- c(10L, 10L, 10L)
mask_data <- array(rep(c(TRUE, FALSE), 500), dim)
mask <- new("LogicalNeuroVol", .Data = mask_data,
space = NeuroSpace(dim = dim, origin = c(0,0,0), spacing = c(1,1,1)))
clusters <- as.integer(runif(sum(mask_data)) * 5)+1
label_map <- list("Cluster1" = 1, "Cluster2" = 2, "Cluster3" = 3,
"Cluster4" = 4, "Cluster5" = 5)
cluster_map <- list()
for (i in 1:5) {
cluster_map[[as.character(i)]] <- which(clusters == i)
}
clustered_vol <- ClusteredNeuroVol(
mask = mask,
clusters = clusters,
label_map = label_map)
# Create a simple space and volume
space <- NeuroSpace(c(16, 16, 16), spacing = c(1, 1, 1))
vol_data <- array(rnorm(16^3), dim = c(16, 16, 16))
vol <- NeuroVol(vol_data, space)
# Create a binary mask (e.g., values > 0)
mask_data <- vol_data > 0
mask_vol <- LogicalNeuroVol(mask_data, space)
# Get coordinates of masked voxels
mask_idx <- which(mask_data)
coords <- index_to_coord(mask_vol, mask_idx)
# Cluster the coordinates into 10 groups
set.seed(123) # for reproducibility
kmeans_result <- kmeans(coords, centers = 10)
# Create the clustered volume
clustered_vol <- ClusteredNeuroVol(mask_vol, kmeans_result$cluster)
# Print information about the clusters
print(clustered_vol)
Run the code above in your browser using DataLab