test_that("not a power of 2 smash has similar results as a power of 2 case",{
#' @title simulate gaussian or poisson distributed data
#' @param n the number of data
#' @param type a string that is either "gaus" or "poiss"
simulate = function(n, type){
t=1:n/n
spike.f = function(x) (0.75*exp(-500*(x-0.23)^2) +
1.5*exp(-2000*(x-0.33)^2) +
3*exp(-8000*(x-0.47)^2) +
2.25*exp(-16000*(x-0.69)^2) +
0.5*exp(-32000*(x-0.83)^2))
mu.s = spike.f(t)
if (type=="gaus"){
mu.t = (1+mu.s)/5
var.fn = (0.0001 + 4*(exp(-550*(t-0.2)^2) +
exp(-200*(t-0.5)^2) +
exp(-950*(t-0.8)^2)))/1.35
rsnr=sqrt(5)
sigma.t=sqrt(var.fn)/mean(sqrt(var.fn))*sd(mu.t)/rsnr^2
set.seed(1)
X.s=rnorm(n,mu.t,sigma.t)
} else if(type=="poiss"){
mu.t <- 0.01 + mu.s
set.seed(1)
X.s <- rpois(n,mu.t)
} else {
stop("Type should be either gaus or poiss.")
}
return(X.s=X.s)
}
# data 1 simulates 1000 data points
#
# data 2 includes data 1 and then has extra 24 data points, i.e.,
# the number of data 2 is 1024
data1_gaus = simulate(1000, "gaus")
data2_gaus = c(data1_gaus, simulate(24, "gaus"))
data1_poiss = simulate(1000, "poiss")
data2_poiss = c(data1_poiss, simulate(24, "poiss"))
expect_equal(smash(data2_gaus)[1:1000], smash(data1_gaus), tolerance=0.02)
expect_equal(smash(data2_poiss)[1:1000], smash(data1_poiss), tolerance=0.02)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.