Nothing
## ----warning=FALSE, message=FALSE---------------------------------------------
require(TCIU)
require(doParallel)
require(cubature)
require(oro.nifti)
require(magrittr)
require(plotly)
require(ggplot2)
## ----eval=FALSE, fig.align = "center", warning=FALSE, message=FALSE, fig.width = 9----
# # For this part of code, we comment it out and import the output plot already generated before to reduce time
# # But this part of code can be run successfully. If you are interested, you can try it on your computer!
#
# # discrete Laplace Transform of sine
# range_limit = 2
# x2 = seq(from = 0, to = range_limit, length.out = 50)[2:50]
# # drop the first row to avoid real part value of 0
# y2 = seq(from = 0, to = range_limit, length.out = 50)[2:50]
# # drop the first column to avoid imaginary part value of 0
#
# # Recompute the LT(sin) discretized on lower-res grid
# z2_grid = array(dim=c(length(x2), length(y2)))# x2 %o% y2
#
# f_sin <- function(t) { sin(t) }
#
# # kime surface transform
# # use parallel computing to speed up code
# ncors = 2 # please choose the ncors according to the number of cores your PC has
# # it is better that you increase the number of cores used for parallel computing if your computer allows
# cl <- makeCluster(ncors)
# registerDoParallel(cl)
# F = list()
# for (i in 1:length(x2) ){
# F[[i]] =
# foreach(j = 1:length(y2),
# .export='cubintegrate',
# .packages='cubature') %dopar% {
# TCIU::LT(FUNCT=f_sin, complex(real=x2[i], imaginary = y2[j]))
# }
# }
#
# stopCluster(cl)
# F_vec = lapply(F, unlist)
# z2_grid = unlist(do.call(rbind, F_vec))
#
# # explicit form of Laplace Transform of sine
# laplace_sine = function(p) { 1/(p^2 + 1) } # Exact Laplace transform of sin(x), continuous function
#
# XY = expand.grid(X=x2, Y=y2)
# complex_xy = mapply(complex, real=XY$X,imaginary=XY$Y)
# sine_z =laplace_sine(complex_xy)
# dim(sine_z) = c(length(x2), length(y2))# dim(sine_z) # [1] 49 49
#
# # make the two plots in the same plot to compare
# lt_ilt_plotly = plot_ly(hoverinfo="none", showscale = FALSE)%>%
# add_trace(z=Re(sine_z)-1, type="surface", surfacecolor=Im(sine_z)) %>%
# add_trace(z = Re(z2_grid), type="surface", opacity=0.7, surfacecolor=Im(z2_grid) )%>%
# layout(title =
# "Laplace Transform, LT(sin()), Height=Re(LT(sin())), Color=Re(LT(sin())) \n Contrast Exact (Continuous) vs.
# Approximate (Discrete) Laplace Transform", showlegend = FALSE)
#
# lt_ilt_plotly
#
## ----fig.align="center", warning=FALSE, message=FALSE-------------------------
sample_save[[1]]
## ----warning=FALSE, message=FALSE, fig.width = 9, fig.align = "center", eval=FALSE----
# # For this part of code, we comment it out and import the output plot already generated before to reduce time
# # But this part of code can be run successfully. If you are interested, you can try it on your computer!
#
# # discrete Laplace Transform of sine
# f_sin = function(t) { sin(t) }
# lt_sine = function(z) TCIU::LT(f_sin, z)
#
# # inverse Laplace Transform on the lt_sine
# # using parallel computing to speed up code
# tvalsn <- seq(0, pi*2, length.out = 20)
# cl <- makeCluster(ncors)
# registerDoParallel(cl)
# sinvalsn <- foreach(t=1:length(tvalsn),
# .export='cubintegrate',
# .packages='cubature') %dopar% {
# TCIU::ILT(FUNCT=lt_sine, t=tvalsn[t])
# }
# stopCluster(cl)
# sinvalsn = unlist(sinvalsn)
#
# # make the plot of the result from ILT
# # to see whether it still looks like sine
# sinvalsn_df2 <- as.data.frame(cbind(Re=Re(sinvalsn),Im=Im(sinvalsn),
# Sin=sin(tvalsn), time_points=tvalsn))
# lt_ilt_sine = ggplot(sinvalsn_df2, aes(x=time_points))+
# geom_line(aes(y=Re, color="Real"), linetype=1, lwd=2) +
# geom_line(aes(y = Sin, color="Sin"), linetype=2, lwd=1) +
# scale_color_manual(name="Index",
# values = c("Real"="steelblue", "Sin"="darkred"))+
# labs(title = "Original fMRI Time-series f(t)=sin(t) and \n Reconstructed f'(t)=ILT(F)=ILT(discrete LT(f))",
# subtitle = bquote("F" ~ "=" ~ "discrete LT(sine)")) +
# xlab("Time") + ylab("fMRI Image Intensities (f and f')") +
# theme_grey(base_size = 16) +
# theme(legend.title = element_text(size=14, color = "black", face="bold"),
# panel.grid.minor.y = element_blank(),
# panel.grid.major.y = element_blank(),
# plot.title = element_text(hjust = 0.5),
# plot.subtitle = element_text(hjust = 0.5))
#
# lt_ilt_sine
## ---- fig.align = "center", warning=FALSE, message=FALSE, fig.width = 9-------
sample_save[[2]]
## ----warning=FALSE, message=FALSE, eval=FALSE---------------------------------
# x = seq(0, 2, length.out=50)[2:50]; y = seq(0, 2, length.out=50)[2:50];
# # do Kimesurface transform on sine function
# z2_grid = kimesurface_transform(FUNCT = function(t) { sin(t) },
# real_x = x, img_y = y)
#
# # make the plot after Kimesurface transformation
# surf_color <- atan2(Im(z2_grid), Re(z2_grid))
# colorscale = cbind(seq(0, 1, by=1/(length(x) - 1)), rainbow(length(x)))
# magnitude <- (sqrt( Re(z2_grid)^2+ Im(z2_grid)^2))
#
#
# p <- plot_ly(hoverinfo="none", showscale = FALSE) %>%
# add_trace(z = magnitude,
# surfacecolor=surf_color, colorscale=colorscale, #Phase-based color
# type = 'surface', opacity=1, visible=T) %>%
# layout(title = "fMRI Kime-Surface, F=LT(fMRI) \n Height=Mag(F), Color=Phase(F)", showlegend = FALSE,
# scene = list(aspectmode = "manual", aspectratio = list(x=1, y=1, z=1.0) ) ) # 1:1:1 aspect ratio
# p
## ----fig.align = "center", warning=FALSE, message=FALSE, fig.width = 9--------
sample_save[[3]]
## ----warning=FALSE, message=FALSE, eval = FALSE, fig.align = "center", fig.width = 9----
# # load the fMRI data
#
# fMRIURL <- "http://socr.umich.edu/HTML5/BrainViewer/data/fMRI_FilteredData_4D.nii.gz"
# fMRIFile <- file.path(tempdir(), "fMRI_FilteredData_4D.nii.gz")
# download.file(fMRIURL, dest=fMRIFile, quiet=TRUE)
# fMRIVolume <- readNIfTI(fMRIFile, reorient=FALSE)
# # dimensions: 64 x 64 x 21 x 180 ; 4mm x 4mm x 6mm x 3 sec
#
#
# # extract a set of time series data from a voxel of fMRI data
# xA_fMRI_1D_x20_y20_z11 <- fMRIVolume[20, 20, 11, ]
#
# # get the smooth function of this time series data
# # Instead of using the extremely noisy fMRI data and avoiding integration problems,
# # smooth "f" and use the **smooth version, f**
# time_points <- seq(0+0.001, 2*pi, length.out = 180)
# f <- smooth.spline(ceiling((180*time_points)/(2*pi)),
# xA_fMRI_1D_x20_y20_z11, df = 10)$y
#
# # Define the f(t)=smooth(fMRI)(t) signal as a function of real time 0<t<=2*pi
# fmri_funct <- function(t) {
# if (t < 0+0.001 || t > 2*pi) { return ( 0 ) } else {
# return ( f[ceiling((180*t)/(2*pi))] )
# }
# }
#
#
# # do the Kimesurface transform
# ncors = 8
# # please choose the ncors according to the number of cores your PC has
# x = seq(0, 2, length.out=50)[2:50]; y = seq(0, 2, length.out=50)[2:50];
# # do Kimesurface transform on sine function
# z2_grid_fmri = kimesurface_transform(FUNCT = fmri_funct,
# glb_para="f",
# real_x = x, img_y = y,
# parallel_computing = TRUE,
# ncor=ncors)
#
# # make the plot of function after Kimesurface transformation
# surf_color <- atan2(Im(z2_grid_fmri), Re(z2_grid_fmri))
# colorscale = cbind(seq(0, 1, by=1/(length(x) - 1)), rainbow(length(x)))
# magnitude <- (sqrt( Re(z2_grid_fmri)^2+ Im(z2_grid_fmri)^2))
#
#
# p_fmri <- plot_ly(hoverinfo="none", showscale = FALSE) %>%
# add_trace(z = magnitude,
# surfacecolor=surf_color, colorscale=colorscale, # Phase-based color
# type = 'surface', opacity=1, visible=T) %>%
# layout(title = "fMRI Kime-Surface, F=LT(fMRI) \n Height=Mag(F), Color=Phase(F)", showlegend = FALSE,
# scene = list(aspectmode = "manual", aspectratio = list(x=1, y=1, z=1.0) ) ) # 1:1:1 aspect ratio
# p_fmri
## ----fig.align = "center", warning=FALSE, message=FALSE, fig.width = 9--------
sample_save[[4]]
## ----warning=FALSE, message=FALSE, fig.width = 9, fig.align = "center", eval=FALSE----
# time_points <- seq(0+0.001, 2*pi, length.out = 180)
# inv_data = inv_kimesurface_transform(time_points, z2_grid)
# inv_data = inv_kimesurface_transform(time_points, z2_grid,num_length = 23,
# m=1, msg=TRUE)
#
# time_Intensities_ILT_df2 <- as.data.frame(cbind(Re=scale(Re(inv_data$Smooth_Reconstruction)),
# Im=scale(Re(inv_data$Raw_Reconstruction)),
# fMRI=scale(Re(sin(time_points))),
# time_points=time_points))
# colnames(time_Intensities_ILT_df2) = c("Smooth Reconstruction",
# "Raw Reconstruction",
# "Original Sin", "time_points")
# df = reshape2::melt(time_Intensities_ILT_df2, id.var = "time_points")
# pppp<-ggplot(df, aes(x = time_points, y = value, colour = variable)) +
# geom_line(linetype=1, lwd=3) +
# ylab("Function Intensity") + xlab("Time") +
# theme(legend.position="top")+
# labs(title= bquote("Comparison between" ~ "f(t)=Smooth(Sin)(t)" ~ "and Smooth(ILT(LT(Sin)))(t); Range [" ~ 0 ~":"~ 2*pi~"]"))
## ----fig.align = "center", warning=FALSE, message=FALSE, fig.width = 9--------
sample_save[[5]]
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.