Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions DESCRIPTION
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ Collate:
'searchlight.R'
'sparse_neurovec.R'
'spat_filter.R'
'as_raster.R'
'zzz.R'
RoxygenNote: 7.3.2.9000
Imports:
Expand Down
2 changes: 2 additions & 0 deletions NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ export(as.dense)
export(as.mask)
export(as.matrix)
export(as.sparse)
export(as.raster)
export(as_nifti_header)
export(axes)
export(bilateral_filter)
Expand Down Expand Up @@ -198,6 +199,7 @@ exportMethods(as.mask)
exportMethods(as.matrix)
exportMethods(as.numeric)
exportMethods(as.sparse)
exportMethods(as.raster)
exportMethods(axes)
exportMethods(bounds)
exportMethods(centroid)
Expand Down
1 change: 1 addition & 0 deletions R/all_generic.R
Original file line number Diff line number Diff line change
Expand Up @@ -1450,6 +1450,7 @@ if (!isGeneric("image"))
#' @param x An object to be converted.
#' @param ... Additional arguments passed to the conversion methods.
#' @return A \code{raster} object representing \code{x}.
#' @export
#' @rdname as.raster
if (!isGeneric("as.raster"))
setGeneric("as.raster", function(x, ...) standardGeneric("as.raster"))
Expand Down
32 changes: 32 additions & 0 deletions R/as_raster.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#' Convert neuroimaging objects to raster images
#'
#' These methods convert \code{NeuroSlice} and \code{NeuroVol} objects
#' into \code{raster} images that can be displayed with
#' \code{grid::grid.raster} or base \code{plot}.
#'
#' @inheritParams plot,NeuroSlice-method
#' @param x object to convert.
#' @param zlevel slice index for \code{NeuroVol} objects. Defaults to the middle slice.
#' @param ... additional arguments passed to methods
#' @return A \code{raster} object
#' @seealso \code{\link{plot,NeuroSlice-method}}, \code{\link{plot,NeuroVol-method}}
#' @rdname as.raster-methods
#' @export
setMethod("as.raster", "NeuroSlice",
function(x,
cmap=gray(seq(0,1,length.out=255)),
irange=range(x, na.rm=TRUE), ...){
cols <- mapToColors(x, col=cmap, alpha=1,
irange=irange, zero_col="#00000000")
grDevices::as.raster(cols)
})

#' @rdname as.raster-methods
#' @export
setMethod("as.raster", "NeuroVol",
function(x, zlevel=ceiling(dim(x)[3]/2),
cmap=gray(seq(0,1,length.out=255)),
irange=range(x, na.rm=TRUE), ...){
sl <- slice(x, zlevel=zlevel, along=3)
as.raster(sl, cmap=cmap, irange=irange, ...)
})
2 changes: 2 additions & 0 deletions R/neuroslice.R
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,8 @@ setMethod(f="index_to_grid",
#' @details when `x` is a NeuroSlice object, the plot method returns a \code{ggplot2} object containing the raster visualization of the slice data.
#' The plot can be further customized using standard ggplot2 functions.
#'
#' @seealso \code{\link{as.raster}}
#'
#' @examples
#' # Create example slice
#' slice_space <- NeuroSpace(c(100, 100))
Expand Down
1 change: 1 addition & 0 deletions R/neurovol.R
Original file line number Diff line number Diff line change
Expand Up @@ -1083,6 +1083,7 @@ setMethod(f="[", signature=signature(x = "SparseNeuroVol", i = "numeric", j = "n
#' @param alpha the level of alpha transparency
#' @param bgvol a background volume that serves as an image underlay (currently ignored).
#' @param bgcmap a color map for backround layer consisting of a vector of colors in hex format (e.g. \code{gray(n=255)})
#' @seealso \code{\link{as.raster}}
#' @export
#' @importFrom graphics plot
#' @import colorplane
Expand Down
23 changes: 23 additions & 0 deletions man/as.raster-methods.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions man/plot-methods.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions tests/testthat/test-as-raster.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
test_that("as.raster works for NeuroSlice", {
space <- NeuroSpace(c(10, 10))
dat <- matrix(rnorm(100), 10, 10)
sl <- NeuroSlice(dat, space)
r <- as.raster(sl)
expect_s3_class(r, "raster")
expect_equal(dim(r), dim(dat))
})

test_that("as.raster works for NeuroVol", {
space <- NeuroSpace(c(10,10,5))
dat <- array(rnorm(10*10*5), c(10,10,5))
vol <- NeuroVol(dat, space)
r <- as.raster(vol, zlevel=1)
expect_s3_class(r, "raster")
expect_equal(dim(r), dim(dat)[1:2])
})