library(BioSSA)
df <- read.csv(fpath <- system.file("extdata/fly3d/MatchIT", "gsc_ntla_wt_t008_ch01.csv", package="BioSSA"), sep = ";", header = FALSE)
names(df) <- c("cell.global.id", "expression.data", "time.stage", "x", "y", "z", "trash1", "trash2")
df$trash1 <- df$trash2 <- NULL
df$value <- df$expression.data
df$x <- -df$x
df$y <- -df$y
df$z <- -df$z
mask <- TRUE
N <- length(df$value)
signal <- 2*exp((df$x-500) / 200) + 3*exp((500-df$x)/600)
cuts <- 15
sigma <- 2.5
set.seed(1)
df$value[mask] <- signal + rnorm(N, sd = sigma)
ss <- BioSSA3d(value ~ x + y + z, data = df,
cuts = cuts,
kind = "sphere",
alpha.impute = 5000,
circular = FALSE,
L = c(1, 1, 1), rel.window = FALSE)
em <- ss$emb3
dir.create("scheme", showWarnings = FALSE)
col3d <- rev(rainbow(100, start = 1, end = 0.6))
plot.bb(em, "rotated")
plot.bb(em, "equalized")
alpha.quantile <- 0.02
scale.range <- quantile(c(em$values, em$field$f),
probs = c(alpha.quantile/2, 1-alpha.quantile/2),
na.rm = TRUE)
ball.size <- 1
ball.size.sp <- 1.25
ball.size.ssp <- 1.25
lit.sp <- TRUE # Use 'FALSE' to disable light effects
zoom.big <- 0.835
make.gl("scheme/original_ssp.png", plot.em(em, type = "nuclei", size = ball.size.ssp, col = col3d,
scale.range = scale.range, cos.trashold = 0, lit = lit.sp),
lit = lit.sp,
zoom = zoom.big)
eqv <- attr(attr(em, "unfolded"), "X.eq")
eqv.em <- em
eqv.em$x3d <- eqv[, 1]
eqv.em$y3d <- eqv[, 2]
eqv.em$z3d <- eqv[, 3]
make.gl("scheme/equalized.png", plot(eqv.em, type = "nuclei", size = ball.size, col = col3d,
scale.range = scale.range))
make.gl("scheme/flattened.png", .plot.embryo3d.nuclei.flattened(em, size = ball.size, col = col3d,
scale.range = scale.range))
make.gl("scheme/regular.png", .plot.embryo3d.nuclei.flattened(field2emb(em), size = ball.size, col = col3d,
scale.range = scale.range))
L <- 0.4
ss <- BioSSA3d(em, L = L, rel.window = TRUE, elliptical = TRUE, neig = 10)
rec <- reconstruct(ss, list(1:2))$F1
frec <- field2emb(rec)
.plot.embryo3d.nuclei.flattened(field2emb(em), size = ball.size, col = col3d,
scale.range = scale.range)
bbox <- par3d()$bbox
make.gl("scheme/rec_reg.png", .plot.embryo3d.nuclei.flattened(frec, size = ball.size, col = col3d,
scale.range = scale.range,
xlim = bbox[1:2],
ylim = bbox[3:4],
zlim = bbox[5:6]))
make.gl("scheme/rec_orig_ssp.png", plot.em(rec, type = "nuclei", size = ball.size.ssp, col = col3d,
scale.range = scale.range, cos.trashold = 0, lit = lit.sp),
lit = lit.sp,
zoom = zoom.big)