Nothing
context("nrrd IO")
test_that("is.nrrd works",{
tmpdir=tempfile()
dir.create(tmpdir)
on.exit(unlink(tmpdir,recursive=TRUE))
origlhmaskfile="testdata/nrrd/LHMask.nrrd"
lhmaskfile=file.path(tmpdir,
sub("\\.nrrd$", '.something', basename(origlhmaskfile)))
file.copy(origlhmaskfile,lhmaskfile)
expect_true(is.nrrd(origlhmaskfile))
expect_true(is.nrrd(origlhmaskfile, TrustSuffix=TRUE))
expect_error(is.nrrd(origlhmaskfile, ReturnVersion=TRUE, TrustSuffix=TRUE),
label="Check error when asking for nrrd version using suffix")
expect_equal(is.nrrd(origlhmaskfile,ReturnVersion=TRUE),4)
expect_true(is.nrrd(lhmaskfile))
expect_false(is.nrrd(lhmaskfile, TrustSuffix=TRUE))
expect_false(is.nrrd(charToRaw("NRRD00")))
expect_true(is.nrrd(charToRaw("NRRD0007")))
expect_false(is.nrrd(bytes=charToRaw("NRRD00")))
expect_true(is.nrrd(bytes=charToRaw("NRRD0007\n# A comment")))
expect_error(is.nrrd(f=LETTERS,bytes=charToRaw("NRRD0007")))
# it's more efficient to specify the class, but should still work without
expect_equal(getformatreader(origlhmaskfile),
getformatreader(origlhmaskfile, class='im3d'))
})
test_that("read.nrrd.header works",{
origlhmaskfile="testdata/nrrd/LHMask.nrrd"
expect_is(h<-read.nrrd.header(origlhmaskfile),'list')
baseh=list(type = "uint8", encoding = "gzip", dimension = 3,
sizes = c(50, 50, 50),
`space dimension` = 3,
`space directions` = diag(1.39999997615814, 3),
`space origin` = c(0, 0, 0),
`space units` = c("microns", "microns", "microns"))
expect_equivalent(h, baseh)
})
test_that("read-write.nrrd works",{
origlhmaskfile="testdata/nrrd/LHMask.nrrd"
expect_is(d<-read.nrrd(origlhmaskfile),'array')
expect_true(is.raw(d))
expect_equal(sum(d!=0), 28669)
dir.create(td <- tempfile())
on.exit(unlink(td, recursive = TRUE))
tf=tempfile(tmpdir = td, fileext='.nrrd')
write.nrrd(d,file=tf,dtype='byte')
d2=read.nrrd(file=tf)
expect_equivalent(d, d2)
# ... and as detached nrrd
tf2=tempfile(tmpdir = td, fileext = '.nhdr')
write.nrrd(d,file=tf2, dtype='byte')
d3=read.nrrd(file=tf2)
expect_equivalent(d, d3)
# compare headers
h=attr(d,'header')
h2=attr(d2,'header')
h3=attr(d2,'header')
common_fields=sort(intersect(names(h),names(h2)))
expect_equal(common_fields, c("dimension", "encoding", "sizes",
"space dimension", "space directions",
"space origin", "space units", "type"))
expect_equal(h[common_fields],h2[common_fields],tol=1e-6)
expect_equal(h[common_fields],h3[common_fields],tol=1e-6)
# another example with a 1d array
set.seed(42)
testhist=hist(rnorm(1000), breaks = 10, plot = F)
th=tempfile(pattern = 'testhist.nrrd')
write.nrrd(testhist$counts, file = th, enc = 'text',
header=list(axismins=testhist$breaks[1], axismaxs=max(testhist$breaks)))
# TODO this function could actually be useful somewhere ...
read.nrrd.histogram<-function(f) {
histdata=read.nrrd(f)
h=attr(histdata,'header')
breaks=seq(from=h$axismins, to=h$axismaxs, length.out = h$sizes+1)
# nb usef of c to remove attributes
counts=c(histdata)
structure(list(counts=counts, breaks=breaks,
mids = 0.5 * (breaks[-1L] + breaks[-(length(breaks))]),
density = counts/(sum(counts) * diff(breaks))),
class='histogram')
}
inhist=read.nrrd.histogram(th)
expect_equal(unclass(inhist), testhist[names(inhist)])
})
test_that("read/write bad nrrds", {
expect_error(read.nrrd("testdata/nrrd/badtype.nhdr"), 'data type')
expect_error(read.nrrd("testdata/nrrd/badenc.nhdr"), 'encoding')
expect_error(write.nrrd(list('rhubarb'), tempfile()), 'nrrd only accepts')
})
context("detached nrrd data files")
test_that("nrrd.datafiles", {
# an internal function, but somewhat complex
expect_error(nrrd.datafiles('testdata/amira/AL-a_M.am'), 'not a nrrd')
expect_equal(nrrd.datafiles("testdata/nrrd/LHMask.nhdr"),
"testdata/nrrd/LHMask.nrrd")
# check nhdrs for a list of files
nhdrs=dir("testdata/nrrd", pattern = '\\.nhdr$', full.names = TRUE)
expect_is(nhdrl<-nrrd.datafiles(nhdrs, full.names = FALSE), 'list')
# check that we can get datafiles for LIST
expect_equal(nhdrl[['testdata/nrrd/datafile_list.nhdr']],
paste0('slice',0:49,'.raw'))
# check that we can get datafiles for LIST with subdim
# i.e. slabs of data
slabs=structure(c("slab0-9.raw", "slab10-19.raw", "slab20-29.raw",
"slab30-39.raw", "slab40-49.raw"), subdim = 3L)
expect_equal(nhdrl[['testdata/nrrd/datafile_listslab.nhdr']], slabs)
})
context("detached nhdr")
test_that("write.nrrd.header.for.file", {
expect_error(write.nrrd.header.for.file('testdata/amira/AL-a_M.am'),
"only raw format")
expect_error(write.nrrd.header.for.file('testdata/amira/landmarks.am'),
"Unable to read.*am")
dir.create(td<-tempfile())
on.exit(unlink(td, recursive = TRUE))
file.copy('testdata/amira/VerySmallLabelField.am',
amcopy <- file.path(td, "VerySmallLabelField.am"))
expect_is(nhdr<-write.nrrd.header.for.file(amcopy),
"character")
expect_equal(read.im3d(nhdr), read.im3d(amcopy))
file.copy('testdata/nrrd/LHMask.nrrd',
nrrdcopy <- file.path(td, "LHMask.nrrd"))
expect_is(nhdr2<-write.nrrd.header.for.file(nrrdcopy),
"character")
expect_equal(read.im3d(nhdr2), read.im3d(nrrdcopy))
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.