SOCR ≫ TCIU Website ≫ TCIU GitHub ≫

1 Background

The Laplace transform allows us to examine the relations between the space-time and space-kime representations of longitudinal data. The Fourier transformation is a linear operator that maps complex-valued functions of real variables (e.g., space, time domains) to complex valued functions of other real variables (e.g., frequency domain). The Laplace transform is similar. However, it sends complex-valued functions of positive real variables (e.g., time) to complex-valued functions defined on complex variables (e.g., kime).

In this vignette, we introduce the use of inv_kimesurface_transform() and kimesurface_transform() functions in our package. We demonstrate how to do Laplace transform and kimesurface transform with our functions.

require(TCIU)
require(doParallel)
require(cubature)
require(oro.nifti)
require(magrittr)
require(plotly)
require(ggplot2)

2 Laplace Transform (LT) and inverse Laplace Transform (ILT)

2.1 discrete LT and analytical form of LT

Here we first apply the discrete Laplace Transform (LT) function in our package on the sine function with the domain of \([0 : 2\pi]\) to see whether it has the same 2D surface function as the analytic form of LT of sine. The analytic form is \(1/(1+z^2)\).

# 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
sample_save[[1]]

From the plot, we can easily tell that our discrete LT function generate the same 2D surface as the analytic LT function does.

2.2 ILT on discrete LT of sine

Here we first apply the discrete Laplace Transform (LT) function in our package on the sine function with the domain of \([0, 2\pi]\), and then use the inverse Laplace Transform (ILT) function in our package to prove the Laplace Transformation has been converted back to sine.

# 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
sample_save[[2]]
## $data
##               Re            Im           Sin time_points
## 1  -7.404072e-05 -1.888474e-15  0.000000e+00   0.0000000
## 2   3.295033e-01  3.517522e-15  3.246995e-01   0.3306940
## 3   6.149702e-01 -2.954290e-15  6.142127e-01   0.6613879
## 4   8.370462e-01 -2.184423e-15  8.371665e-01   0.9920819
## 5   9.746300e-01  1.059702e-14  9.694003e-01   1.3227759
## 6   9.983078e-01 -2.224456e-14  9.965845e-01   1.6534698
## 7   9.184352e-01  3.337463e-14  9.157733e-01   1.9841638
## 8   7.195434e-01 -3.831961e-14  7.357239e-01   2.3148577
## 9   4.427572e-01  1.611943e-14  4.759474e-01   2.6455517
## 10  1.536455e-01  2.195190e-14  1.645946e-01   2.9762457
## 11 -1.836331e-01 -8.396361e-14 -1.645946e-01   3.3069396
## 12 -4.670591e-01  1.166413e-13 -4.759474e-01   3.6376336
## 13 -7.172075e-01 -1.330107e-13 -7.357239e-01   3.9683276
## 14 -8.618044e-01  1.381377e-13 -9.157733e-01   4.2990215
## 15 -9.920689e-01 -6.506112e-14 -9.965845e-01   4.6297155
## 16 -1.070833e+00 -1.005387e-13 -9.694003e-01   4.9604095
## 17 -8.353279e-01  3.045155e-13 -8.371665e-01   5.2911034
## 18 -6.811159e-01 -5.070069e-13 -6.142127e-01   5.6217974
## 19 -2.926268e-01  5.270047e-13 -3.246995e-01   5.9524913
## 20 -8.648900e-03 -4.600098e-13 -2.449213e-16   6.2831853
## 
## $layers
## $layers[[1]]
## mapping: y = ~Re, colour = Real 
## geom_line: na.rm = FALSE, orientation = NA
## stat_identity: na.rm = FALSE
## position_identity 
## 
## $layers[[2]]
## mapping: y = ~Sin, colour = Sin 
## geom_line: na.rm = FALSE, orientation = NA
## stat_identity: na.rm = FALSE
## position_identity 
## 
## 
## $scales
## <ggproto object: Class ScalesList, gg>
##     add: function
##     add_defaults: function
##     add_missing: function
##     backtransform_df: function
##     clone: function
##     find: function
##     get_scales: function
##     has_scale: function
##     input: function
##     map_df: function
##     n: function
##     non_position_scales: function
##     scales: list
##     set_palettes: function
##     train_df: function
##     transform_df: function
##     super:  <ggproto object: Class ScalesList, gg>
## 
## $guides
## <Guides[0] ggproto object>
## 
## <empty>
## 
## $mapping
## $x
## <quosure>
## expr: ^time_points
## env:  global
## 
## attr(,"class")
## [1] "uneval"
## 
## $theme
## $line
## $colour
## [1] "black"
## 
## $linewidth
## [1] 0.7272727
## 
## $linetype
## [1] 1
## 
## $lineend
## [1] "butt"
## 
## $arrow
## [1] FALSE
## 
## $inherit.blank
## [1] TRUE
## 
## attr(,"class")
## [1] "element_line" "element"     
## 
## $rect
## $fill
## [1] "white"
## 
## $colour
## [1] "black"
## 
## $linewidth
## [1] 0.7272727
## 
## $linetype
## [1] 1
## 
## $inherit.blank
## [1] TRUE
## 
## attr(,"class")
## [1] "element_rect" "element"     
## 
## $text
## $family
## [1] ""
## 
## $face
## [1] "plain"
## 
## $colour
## [1] "black"
## 
## $size
## [1] 16
## 
## $hjust
## [1] 0.5
## 
## $vjust
## [1] 0.5
## 
## $angle
## [1] 0
## 
## $lineheight
## [1] 0.9
## 
## $margin
## [1] 0points 0points 0points 0points
## 
## $debug
## [1] FALSE
## 
## $inherit.blank
## [1] TRUE
## 
## attr(,"class")
## [1] "element_text" "element"     
## 
## $title
## NULL
## 
## $aspect.ratio
## NULL
## 
## $axis.title
## NULL
## 
## $axis.title.x
## $family
## NULL
## 
## $face
## NULL
## 
## $colour
## NULL
## 
## $size
## NULL
## 
## $hjust
## NULL
## 
## $vjust
## [1] 1
## 
## $angle
## NULL
## 
## $lineheight
## NULL
## 
## $margin
## [1] 4points 0points 0points 0points
## 
## $debug
## NULL
## 
## $inherit.blank
## [1] TRUE
## 
## attr(,"class")
## [1] "element_text" "element"     
## 
## $axis.title.x.top
## $family
## NULL
## 
## $face
## NULL
## 
## $colour
## NULL
## 
## $size
## NULL
## 
## $hjust
## NULL
## 
## $vjust
## [1] 0
## 
## $angle
## NULL
## 
## $lineheight
## NULL
## 
## $margin
## [1] 0points 0points 4points 0points
## 
## $debug
## NULL
## 
## $inherit.blank
## [1] TRUE
## 
## attr(,"class")
## [1] "element_text" "element"     
## 
## $axis.title.x.bottom
## NULL
## 
## $axis.title.y
## $family
## NULL
## 
## $face
## NULL
## 
## $colour
## NULL
## 
## $size
## NULL
## 
## $hjust
## NULL
## 
## $vjust
## [1] 1
## 
## $angle
## [1] 90
## 
## $lineheight
## NULL
## 
## $margin
## [1] 0points 4points 0points 0points
## 
## $debug
## NULL
## 
## $inherit.blank
## [1] TRUE
## 
## attr(,"class")
## [1] "element_text" "element"     
## 
## $axis.title.y.left
## NULL
## 
## $axis.title.y.right
## $family
## NULL
## 
## $face
## NULL
## 
## $colour
## NULL
## 
## $size
## NULL
## 
## $hjust
## NULL
## 
## $vjust
## [1] 1
## 
## $angle
## [1] -90
## 
## $lineheight
## NULL
## 
## $margin
## [1] 0points 0points 0points 4points
## 
## $debug
## NULL
## 
## $inherit.blank
## [1] TRUE
## 
## attr(,"class")
## [1] "element_text" "element"     
## 
## $axis.text
## $family
## NULL
## 
## $face
## NULL
## 
## $colour
## [1] "grey30"
## 
## $size
## [1] 0.8 *
## 
## $hjust
## NULL
## 
## $vjust
## NULL
## 
## $angle
## NULL
## 
## $lineheight
## NULL
## 
## $margin
## NULL
## 
## $debug
## NULL
## 
## $inherit.blank
## [1] TRUE
## 
## attr(,"class")
## [1] "element_text" "element"     
## 
## $axis.text.x
## $family
## NULL
## 
## $face
## NULL
## 
## $colour
## NULL
## 
## $size
## NULL
## 
## $hjust
## NULL
## 
## $vjust
## [1] 1
## 
## $angle
## NULL
## 
## $lineheight
## NULL
## 
## $margin
## [1] 3.2points 0points   0points   0points  
## 
## $debug
## NULL
## 
## $inherit.blank
## [1] TRUE
## 
## attr(,"class")
## [1] "element_text" "element"     
## 
## $axis.text.x.top
## $family
## NULL
## 
## $face
## NULL
## 
## $colour
## NULL
## 
## $size
## NULL
## 
## $hjust
## NULL
## 
## $vjust
## [1] 0
## 
## $angle
## NULL
## 
## $lineheight
## NULL
## 
## $margin
## [1] 0points   0points   3.2points 0points  
## 
## $debug
## NULL
## 
## $inherit.blank
## [1] TRUE
## 
## attr(,"class")
## [1] "element_text" "element"     
## 
## $axis.text.x.bottom
## NULL
## 
## $axis.text.y
## $family
## NULL
## 
## $face
## NULL
## 
## $colour
## NULL
## 
## $size
## NULL
## 
## $hjust
## [1] 1
## 
## $vjust
## NULL
## 
## $angle
## NULL
## 
## $lineheight
## NULL
## 
## $margin
## [1] 0points   3.2points 0points   0points  
## 
## $debug
## NULL
## 
## $inherit.blank
## [1] TRUE
## 
## attr(,"class")
## [1] "element_text" "element"     
## 
## $axis.text.y.left
## NULL
## 
## $axis.text.y.right
## $family
## NULL
## 
## $face
## NULL
## 
## $colour
## NULL
## 
## $size
## NULL
## 
## $hjust
## [1] 0
## 
## $vjust
## NULL
## 
## $angle
## NULL
## 
## $lineheight
## NULL
## 
## $margin
## [1] 0points   0points   0points   3.2points
## 
## $debug
## NULL
## 
## $inherit.blank
## [1] TRUE
## 
## attr(,"class")
## [1] "element_text" "element"     
## 
## $axis.text.theta
## NULL
## 
## $axis.text.r
## $family
## NULL
## 
## $face
## NULL
## 
## $colour
## NULL
## 
## $size
## NULL
## 
## $hjust
## [1] 0.5
## 
## $vjust
## NULL
## 
## $angle
## NULL
## 
## $lineheight
## NULL
## 
## $margin
## [1] 0points   3.2points 0points   3.2points
## 
## $debug
## NULL
## 
## $inherit.blank
## [1] TRUE
## 
## attr(,"class")
## [1] "element_text" "element"     
## 
## $axis.ticks
## $colour
## [1] "grey20"
## 
## $linewidth
## NULL
## 
## $linetype
## NULL
## 
## $lineend
## NULL
## 
## $arrow
## [1] FALSE
## 
## $inherit.blank
## [1] TRUE
## 
## attr(,"class")
## [1] "element_line" "element"     
## 
## $axis.ticks.x
## NULL
## 
## $axis.ticks.x.top
## NULL
## 
## $axis.ticks.x.bottom
## NULL
## 
## $axis.ticks.y
## NULL
## 
## $axis.ticks.y.left
## NULL
## 
## $axis.ticks.y.right
## NULL
## 
## $axis.ticks.theta
## NULL
## 
## $axis.ticks.r
## NULL
## 
## $axis.minor.ticks.x.top
## NULL
## 
## $axis.minor.ticks.x.bottom
## NULL
## 
## $axis.minor.ticks.y.left
## NULL
## 
## $axis.minor.ticks.y.right
## NULL
## 
## $axis.minor.ticks.theta
## NULL
## 
## $axis.minor.ticks.r
## NULL
## 
## $axis.ticks.length
## [1] 4points
## 
## $axis.ticks.length.x
## NULL
## 
## $axis.ticks.length.x.top
## NULL
## 
## $axis.ticks.length.x.bottom
## NULL
## 
## $axis.ticks.length.y
## NULL
## 
## $axis.ticks.length.y.left
## NULL
## 
## $axis.ticks.length.y.right
## NULL
## 
## $axis.ticks.length.theta
## NULL
## 
## $axis.ticks.length.r
## NULL
## 
## $axis.minor.ticks.length
## [1] 0.75 *
## 
## $axis.minor.ticks.length.x
## NULL
## 
## $axis.minor.ticks.length.x.top
## NULL
## 
## $axis.minor.ticks.length.x.bottom
## NULL
## 
## $axis.minor.ticks.length.y
## NULL
## 
## $axis.minor.ticks.length.y.left
## NULL
## 
## $axis.minor.ticks.length.y.right
## NULL
## 
## $axis.minor.ticks.length.theta
## NULL
## 
## $axis.minor.ticks.length.r
## NULL
## 
## $axis.line
## list()
## attr(,"class")
## [1] "element_blank" "element"      
## 
## $axis.line.x
## NULL
## 
## $axis.line.x.top
## NULL
## 
## $axis.line.x.bottom
## NULL
## 
## $axis.line.y
## NULL
## 
## $axis.line.y.left
## NULL
## 
## $axis.line.y.right
## NULL
## 
## $axis.line.theta
## NULL
## 
## $axis.line.r
## NULL
## 
## $legend.background
## $fill
## NULL
## 
## $colour
## [1] NA
## 
## $linewidth
## NULL
## 
## $linetype
## NULL
## 
## $inherit.blank
## [1] TRUE
## 
## attr(,"class")
## [1] "element_rect" "element"     
## 
## $legend.margin
## [1] 8points 8points 8points 8points
## 
## $legend.spacing
## [1] 16points
## 
## $legend.spacing.x
## NULL
## 
## $legend.spacing.y
## NULL
## 
## $legend.key
## NULL
## 
## $legend.key.size
## [1] 1.2lines
## 
## $legend.key.height
## NULL
## 
## $legend.key.width
## NULL
## 
## $legend.key.spacing
## [1] 8points
## 
## $legend.key.spacing.x
## NULL
## 
## $legend.key.spacing.y
## NULL
## 
## $legend.frame
## NULL
## 
## $legend.ticks
## NULL
## 
## $legend.ticks.length
## [1] 0.2 *
## 
## $legend.axis.line
## NULL
## 
## $legend.text
## $family
## NULL
## 
## $face
## NULL
## 
## $colour
## NULL
## 
## $size
## [1] 0.8 *
## 
## $hjust
## NULL
## 
## $vjust
## NULL
## 
## $angle
## NULL
## 
## $lineheight
## NULL
## 
## $margin
## NULL
## 
## $debug
## NULL
## 
## $inherit.blank
## [1] TRUE
## 
## attr(,"class")
## [1] "element_text" "element"     
## 
## $legend.text.position
## NULL
## 
## $legend.title
## $family
## NULL
## 
## $face
## [1] "bold"
## 
## $colour
## [1] "black"
## 
## $size
## [1] 14
## 
## $hjust
## [1] 0
## 
## $vjust
## NULL
## 
## $angle
## NULL
## 
## $lineheight
## NULL
## 
## $margin
## NULL
## 
## $debug
## NULL
## 
## $inherit.blank
## [1] FALSE
## 
## attr(,"class")
## [1] "element_text" "element"     
## 
## $legend.title.position
## NULL
## 
## $legend.position
## [1] "right"
## 
## $legend.position.inside
## NULL
## 
## $legend.direction
## NULL
## 
## $legend.byrow
## NULL
## 
## $legend.justification
## [1] "center"
## 
## $legend.justification.top
## NULL
## 
## $legend.justification.bottom
## NULL
## 
## $legend.justification.left
## NULL
## 
## $legend.justification.right
## NULL
## 
## $legend.justification.inside
## NULL
## 
## $legend.location
## NULL
## 
## $legend.box
## NULL
## 
## $legend.box.just
## NULL
## 
## $legend.box.margin
## [1] 0cm 0cm 0cm 0cm
## 
## $legend.box.background
## list()
## attr(,"class")
## [1] "element_blank" "element"      
## 
## $legend.box.spacing
## [1] 16points
## 
## $panel.background
## $fill
## [1] "grey92"
## 
## $colour
## [1] NA
## 
## $linewidth
## NULL
## 
## $linetype
## NULL
## 
## $inherit.blank
## [1] TRUE
## 
## attr(,"class")
## [1] "element_rect" "element"     
## 
## $panel.border
## list()
## attr(,"class")
## [1] "element_blank" "element"      
## 
## $panel.spacing
## [1] 8points
## 
## $panel.spacing.x
## NULL
## 
## $panel.spacing.y
## NULL
## 
## $panel.grid
## $colour
## [1] "white"
## 
## $linewidth
## NULL
## 
## $linetype
## NULL
## 
## $lineend
## NULL
## 
## $arrow
## [1] FALSE
## 
## $inherit.blank
## [1] TRUE
## 
## attr(,"class")
## [1] "element_line" "element"     
## 
## $panel.grid.major
## NULL
## 
## $panel.grid.minor
## $colour
## NULL
## 
## $linewidth
## [1] 0.5 *
## 
## $linetype
## NULL
## 
## $lineend
## NULL
## 
## $arrow
## [1] FALSE
## 
## $inherit.blank
## [1] TRUE
## 
## attr(,"class")
## [1] "element_line" "element"     
## 
## $panel.grid.major.x
## NULL
## 
## $panel.grid.major.y
## list()
## attr(,"class")
## [1] "element_blank" "element"      
## 
## $panel.grid.minor.x
## NULL
## 
## $panel.grid.minor.y
## list()
## attr(,"class")
## [1] "element_blank" "element"      
## 
## $panel.ontop
## [1] FALSE
## 
## $plot.background
## $fill
## NULL
## 
## $colour
## [1] "white"
## 
## $linewidth
## NULL
## 
## $linetype
## NULL
## 
## $inherit.blank
## [1] TRUE
## 
## attr(,"class")
## [1] "element_rect" "element"     
## 
## $plot.title
## $family
## NULL
## 
## $face
## NULL
## 
## $colour
## NULL
## 
## $size
## [1] 1.2 *
## 
## $hjust
## [1] 0.5
## 
## $vjust
## [1] 1
## 
## $angle
## NULL
## 
## $lineheight
## NULL
## 
## $margin
## [1] 0points 0points 8points 0points
## 
## $debug
## NULL
## 
## $inherit.blank
## [1] FALSE
## 
## attr(,"class")
## [1] "element_text" "element"     
## 
## $plot.title.position
## [1] "panel"
## 
## $plot.subtitle
## $family
## NULL
## 
## $face
## NULL
## 
## $colour
## NULL
## 
## $size
## NULL
## 
## $hjust
## [1] 0.5
## 
## $vjust
## [1] 1
## 
## $angle
## NULL
## 
## $lineheight
## NULL
## 
## $margin
## [1] 0points 0points 8points 0points
## 
## $debug
## NULL
## 
## $inherit.blank
## [1] FALSE
## 
## attr(,"class")
## [1] "element_text" "element"     
## 
## $plot.caption
## $family
## NULL
## 
## $face
## NULL
## 
## $colour
## NULL
## 
## $size
## [1] 0.8 *
## 
## $hjust
## [1] 1
## 
## $vjust
## [1] 1
## 
## $angle
## NULL
## 
## $lineheight
## NULL
## 
## $margin
## [1] 8points 0points 0points 0points
## 
## $debug
## NULL
## 
## $inherit.blank
## [1] TRUE
## 
## attr(,"class")
## [1] "element_text" "element"     
## 
## $plot.caption.position
## [1] "panel"
## 
## $plot.tag
## $family
## NULL
## 
## $face
## NULL
## 
## $colour
## NULL
## 
## $size
## [1] 1.2 *
## 
## $hjust
## [1] 0.5
## 
## $vjust
## [1] 0.5
## 
## $angle
## NULL
## 
## $lineheight
## NULL
## 
## $margin
## NULL
## 
## $debug
## NULL
## 
## $inherit.blank
## [1] TRUE
## 
## attr(,"class")
## [1] "element_text" "element"     
## 
## $plot.tag.position
## [1] "topleft"
## 
## $plot.tag.location
## NULL
## 
## $plot.margin
## [1] 8points 8points 8points 8points
## 
## $strip.background
## $fill
## [1] "grey85"
## 
## $colour
## [1] NA
## 
## $linewidth
## NULL
## 
## $linetype
## NULL
## 
## $inherit.blank
## [1] TRUE
## 
## attr(,"class")
## [1] "element_rect" "element"     
## 
## $strip.background.x
## NULL
## 
## $strip.background.y
## NULL
## 
## $strip.clip
## [1] "inherit"
## 
## $strip.placement
## [1] "inside"
## 
## $strip.text
## $family
## NULL
## 
## $face
## NULL
## 
## $colour
## [1] "grey10"
## 
## $size
## [1] 0.8 *
## 
## $hjust
## NULL
## 
## $vjust
## NULL
## 
## $angle
## NULL
## 
## $lineheight
## NULL
## 
## $margin
## [1] 6.4points 6.4points 6.4points 6.4points
## 
## $debug
## NULL
## 
## $inherit.blank
## [1] TRUE
## 
## attr(,"class")
## [1] "element_text" "element"     
## 
## $strip.text.x
## NULL
## 
## $strip.text.x.bottom
## NULL
## 
## $strip.text.x.top
## NULL
## 
## $strip.text.y
## $family
## NULL
## 
## $face
## NULL
## 
## $colour
## NULL
## 
## $size
## NULL
## 
## $hjust
## NULL
## 
## $vjust
## NULL
## 
## $angle
## [1] -90
## 
## $lineheight
## NULL
## 
## $margin
## NULL
## 
## $debug
## NULL
## 
## $inherit.blank
## [1] TRUE
## 
## attr(,"class")
## [1] "element_text" "element"     
## 
## $strip.text.y.left
## $family
## NULL
## 
## $face
## NULL
## 
## $colour
## NULL
## 
## $size
## NULL
## 
## $hjust
## NULL
## 
## $vjust
## NULL
## 
## $angle
## [1] 90
## 
## $lineheight
## NULL
## 
## $margin
## NULL
## 
## $debug
## NULL
## 
## $inherit.blank
## [1] TRUE
## 
## attr(,"class")
## [1] "element_text" "element"     
## 
## $strip.text.y.right
## NULL
## 
## $strip.switch.pad.grid
## [1] 4points
## 
## $strip.switch.pad.wrap
## [1] 4points
## 
## attr(,"class")
## [1] "theme" "gg"   
## attr(,"complete")
## [1] TRUE
## attr(,"validate")
## [1] TRUE
## 
## $coordinates
## <ggproto object: Class CoordCartesian, Coord, gg>
##     aspect: function
##     backtransform_range: function
##     clip: on
##     default: TRUE
##     distance: function
##     draw_panel: function
##     expand: TRUE
##     is_free: function
##     is_linear: function
##     labels: function
##     limits: list
##     modify_scales: function
##     range: function
##     render_axis_h: function
##     render_axis_v: function
##     render_bg: function
##     render_fg: function
##     reverse: none
##     setup_data: function
##     setup_layout: function
##     setup_panel_guides: function
##     setup_panel_params: function
##     setup_params: function
##     train_panel_guides: function
##     transform: function
##     super:  <ggproto object: Class CoordCartesian, Coord, gg>
## 
## $facet
## <ggproto object: Class FacetNull, Facet, gg>
##     attach_axes: function
##     attach_strips: function
##     compute_layout: function
##     draw_back: function
##     draw_front: function
##     draw_labels: function
##     draw_panel_content: function
##     draw_panels: function
##     finish_data: function
##     format_strip_labels: function
##     init_gtable: function
##     init_scales: function
##     map_data: function
##     params: list
##     set_panel_size: function
##     setup_data: function
##     setup_panel_params: function
##     setup_params: function
##     shrink: TRUE
##     train_scales: function
##     vars: function
##     super:  <ggproto object: Class FacetNull, Facet, gg>
## 
## $plot_env
## <environment: R_GlobalEnv>
## 
## $layout
## <ggproto object: Class Layout, gg>
##     coord: NULL
##     coord_params: list
##     facet: NULL
##     facet_params: list
##     finish_data: function
##     get_scales: function
##     layout: NULL
##     map_position: function
##     panel_params: NULL
##     panel_scales_x: NULL
##     panel_scales_y: NULL
##     render: function
##     render_labels: function
##     reset_scales: function
##     resolve_label: function
##     setup: function
##     setup_panel_guides: function
##     setup_panel_params: function
##     train_position: function
##     super:  <ggproto object: Class Layout, gg>
## 
## $labels
## $labels$y
## [1] "fMRI Image Intensities (f and f')"
## 
## $labels$x
## [1] "Time"
## 
## $labels$title
## [1] "Original fMRI Time-series f(t)=sin(t) and \n Reconstructed f'(t)=ILT(F)=ILT(discrete LT(f))"
## 
## $labels$subtitle
## "F" ~ "=" ~ "discrete LT(sine)"
## 
## $labels$colour
## [1] "colour"
## 
## 
## attr(,"class")
## [1] "gg"     "ggplot"

3 Kimesurface transform and inverse Kimesurface transform

In this part, we still apply the Kimesurface transform on our sine function, and then check whether the inverse Kimesurface transform can convert it back to our original form of sine. Kimesurface transform mainly does a Laplace Transform and then applies a height and surface transformation to have a better view of the plot.

3.1 Kimesurface transform of sine function

Below, we apply the Kimesurface transform on the sine function, and make the plot of the 2D function using the magnitude of the complex value as y.

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
sample_save[[3]]

Also, you can try to apply the Kimesurface transformation on our fMRI data for a brain. Each voxel of the brain contains a set of time series data that can be analyzed using our transform. However, due to the number of cores limited for parallel computing in the vignette, we did not run this chuck. You can try it if you are interested.

# 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
sample_save[[4]]

3.2 Inverse Kimesurface Transform

After the Kimesurface transformation, we apply the inverse Kimesurface transformation, and see that we can get a curve that captures the most trend of the sine function.

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~"]"))
sample_save[[5]]
## $data
##     time_points              variable         value
## 1    0.00100000 Smooth Reconstruction  2.407143e-01
## 2    0.03609601 Smooth Reconstruction  2.434831e-01
## 3    0.07119201 Smooth Reconstruction  2.462513e-01
## 4    0.10628802 Smooth Reconstruction  2.490181e-01
## 5    0.14138403 Smooth Reconstruction  2.517820e-01
## 6    0.17648004 Smooth Reconstruction  2.545411e-01
## 7    0.21157604 Smooth Reconstruction  2.572931e-01
## 8    0.24667205 Smooth Reconstruction  2.600349e-01
## 9    0.28176806 Smooth Reconstruction  2.627631e-01
## 10   0.31686407 Smooth Reconstruction  2.654735e-01
## 11   0.35196007 Smooth Reconstruction  2.681616e-01
## 12   0.38705608 Smooth Reconstruction  2.708221e-01
## 13   0.42215209 Smooth Reconstruction  2.734493e-01
## 14   0.45724809 Smooth Reconstruction  2.760366e-01
## 15   0.49234410 Smooth Reconstruction  2.785770e-01
## 16   0.52744011 Smooth Reconstruction  2.810627e-01
## 17   0.56253612 Smooth Reconstruction  2.834853e-01
## 18   0.59763212 Smooth Reconstruction  2.858357e-01
## 19   0.63272813 Smooth Reconstruction  2.881043e-01
## 20   0.66782414 Smooth Reconstruction  2.902803e-01
## 21   0.70292015 Smooth Reconstruction  2.923529e-01
## 22   0.73801615 Smooth Reconstruction  2.943098e-01
## 23   0.77311216 Smooth Reconstruction  2.961387e-01
## 24   0.80820817 Smooth Reconstruction  2.978258e-01
## 25   0.84330418 Smooth Reconstruction  2.993573e-01
## 26   0.87840018 Smooth Reconstruction  3.007181e-01
## 27   0.91349619 Smooth Reconstruction  3.018929e-01
## 28   0.94859220 Smooth Reconstruction  3.028656e-01
## 29   0.98368820 Smooth Reconstruction  3.036194e-01
## 30   1.01878421 Smooth Reconstruction  3.041368e-01
## 31   1.05388022 Smooth Reconstruction  3.043998e-01
## 32   1.08897623 Smooth Reconstruction  3.043896e-01
## 33   1.12407223 Smooth Reconstruction  3.040868e-01
## 34   1.15916824 Smooth Reconstruction  3.034711e-01
## 35   1.19426425 Smooth Reconstruction  3.025220e-01
## 36   1.22936026 Smooth Reconstruction  3.012179e-01
## 37   1.26445626 Smooth Reconstruction  2.995366e-01
## 38   1.29955227 Smooth Reconstruction  2.974555e-01
## 39   1.33464828 Smooth Reconstruction  2.949512e-01
## 40   1.36974428 Smooth Reconstruction  2.919995e-01
## 41   1.40484029 Smooth Reconstruction  2.885758e-01
## 42   1.43993630 Smooth Reconstruction  2.846549e-01
## 43   1.47503231 Smooth Reconstruction  2.802109e-01
## 44   1.51012831 Smooth Reconstruction  2.752174e-01
## 45   1.54522432 Smooth Reconstruction  2.696475e-01
## 46   1.58032033 Smooth Reconstruction  2.634736e-01
## 47   1.61541634 Smooth Reconstruction  2.566677e-01
## 48   1.65051234 Smooth Reconstruction  2.492023e-01
## 49   1.68560835 Smooth Reconstruction  2.410499e-01
## 50   1.72070436 Smooth Reconstruction  2.321858e-01
## 51   1.75580037 Smooth Reconstruction  2.225862e-01
## 52   1.79089637 Smooth Reconstruction  2.122296e-01
## 53   1.82599238 Smooth Reconstruction  2.010955e-01
## 54   1.86108839 Smooth Reconstruction  1.891662e-01
## 55   1.89618439 Smooth Reconstruction  1.764249e-01
## 56   1.93128040 Smooth Reconstruction  1.628576e-01
## 57   1.96637641 Smooth Reconstruction  1.484517e-01
## 58   2.00147242 Smooth Reconstruction  1.331971e-01
## 59   2.03656842 Smooth Reconstruction  1.170856e-01
## 60   2.07166443 Smooth Reconstruction  1.001116e-01
## 61   2.10676044 Smooth Reconstruction  8.227138e-02
## 62   2.14185645 Smooth Reconstruction  6.356425e-02
## 63   2.17695245 Smooth Reconstruction  4.399136e-02
## 64   2.21204846 Smooth Reconstruction  2.355736e-02
## 65   2.24714447 Smooth Reconstruction  2.268738e-03
## 66   2.28224047 Smooth Reconstruction -1.986416e-02
## 67   2.31733648 Smooth Reconstruction -4.282901e-02
## 68   2.35243249 Smooth Reconstruction -6.660937e-02
## 69   2.38752850 Smooth Reconstruction -9.118661e-02
## 70   2.42262450 Smooth Reconstruction -1.165374e-01
## 71   2.45772051 Smooth Reconstruction -1.426367e-01
## 72   2.49281652 Smooth Reconstruction -1.694571e-01
## 73   2.52791253 Smooth Reconstruction -1.969701e-01
## 74   2.56300853 Smooth Reconstruction -2.251454e-01
## 75   2.59810454 Smooth Reconstruction -2.539520e-01
## 76   2.63320055 Smooth Reconstruction -2.833560e-01
## 77   2.66829656 Smooth Reconstruction -3.133227e-01
## 78   2.70339256 Smooth Reconstruction -3.438143e-01
## 79   2.73848857 Smooth Reconstruction -3.747916e-01
## 80   2.77358458 Smooth Reconstruction -4.062124e-01
## 81   2.80868058 Smooth Reconstruction -4.380325e-01
## 82   2.84377659 Smooth Reconstruction -4.702041e-01
## 83   2.87887260 Smooth Reconstruction -5.026775e-01
## 84   2.91396861 Smooth Reconstruction -5.353987e-01
## 85   2.94906461 Smooth Reconstruction -5.683117e-01
## 86   2.98416062 Smooth Reconstruction -6.013558e-01
## 87   3.01925663 Smooth Reconstruction -6.344677e-01
## 88   3.05435264 Smooth Reconstruction -6.675791e-01
## 89   3.08944864 Smooth Reconstruction -7.006190e-01
## 90   3.12454465 Smooth Reconstruction -7.335109e-01
## 91   3.15964066 Smooth Reconstruction -7.661753e-01
## 92   3.19473666 Smooth Reconstruction -7.985260e-01
## 93   3.22983267 Smooth Reconstruction -8.304741e-01
## 94   3.26492868 Smooth Reconstruction -8.619272e-01
## 95   3.30002469 Smooth Reconstruction -8.927932e-01
## 96   3.33512069 Smooth Reconstruction -9.229853e-01
## 97   3.37021670 Smooth Reconstruction -9.524191e-01
## 98   3.40531271 Smooth Reconstruction -9.810143e-01
## 99   3.44040872 Smooth Reconstruction -1.008692e+00
## 100  3.47550472 Smooth Reconstruction -1.035379e+00
## 101  3.51060073 Smooth Reconstruction -1.061001e+00
## 102  3.54569674 Smooth Reconstruction -1.085490e+00
## 103  3.58079274 Smooth Reconstruction -1.108777e+00
## 104  3.61588875 Smooth Reconstruction -1.130798e+00
## 105  3.65098476 Smooth Reconstruction -1.151490e+00
## 106  3.68608077 Smooth Reconstruction -1.170793e+00
## 107  3.72117677 Smooth Reconstruction -1.188646e+00
## 108  3.75627278 Smooth Reconstruction -1.204993e+00
## 109  3.79136879 Smooth Reconstruction -1.219778e+00
## 110  3.82646480 Smooth Reconstruction -1.232948e+00
## 111  3.86156080 Smooth Reconstruction -1.244450e+00
## 112  3.89665681 Smooth Reconstruction -1.254234e+00
## 113  3.93175282 Smooth Reconstruction -1.262249e+00
## 114  3.96684883 Smooth Reconstruction -1.268448e+00
## 115  4.00194483 Smooth Reconstruction -1.272783e+00
## 116  4.03704084 Smooth Reconstruction -1.275210e+00
## 117  4.07213685 Smooth Reconstruction -1.275683e+00
## 118  4.10723285 Smooth Reconstruction -1.274159e+00
## 119  4.14232886 Smooth Reconstruction -1.270593e+00
## 120  4.17742487 Smooth Reconstruction -1.264943e+00
## 121  4.21252088 Smooth Reconstruction -1.257164e+00
## 122  4.24761688 Smooth Reconstruction -1.247214e+00
## 123  4.28271289 Smooth Reconstruction -1.235050e+00
## 124  4.31780890 Smooth Reconstruction -1.220630e+00
## 125  4.35290491 Smooth Reconstruction -1.203913e+00
## 126  4.38800091 Smooth Reconstruction -1.184856e+00
## 127  4.42309692 Smooth Reconstruction -1.163421e+00
## 128  4.45819293 Smooth Reconstruction -1.139567e+00
## 129  4.49328893 Smooth Reconstruction -1.113255e+00
## 130  4.52838494 Smooth Reconstruction -1.084448e+00
## 131  4.56348095 Smooth Reconstruction -1.053110e+00
## 132  4.59857696 Smooth Reconstruction -1.019204e+00
## 133  4.63367296 Smooth Reconstruction -9.826972e-01
## 134  4.66876897 Smooth Reconstruction -9.435580e-01
## 135  4.70386498 Smooth Reconstruction -9.017557e-01
## 136  4.73896099 Smooth Reconstruction -8.572627e-01
## 137  4.77405699 Smooth Reconstruction -8.100530e-01
## 138  4.80915300 Smooth Reconstruction -7.601040e-01
## 139  4.84424901 Smooth Reconstruction -7.073949e-01
## 140  4.87934502 Smooth Reconstruction -6.519095e-01
## 141  4.91444102 Smooth Reconstruction -5.936340e-01
## 142  4.94953703 Smooth Reconstruction -5.325606e-01
## 143  4.98463304 Smooth Reconstruction -4.686845e-01
## 144  5.01972904 Smooth Reconstruction -4.020077e-01
## 145  5.05482505 Smooth Reconstruction -3.325356e-01
## 146  5.08992106 Smooth Reconstruction -2.602816e-01
## 147  5.12501707 Smooth Reconstruction -1.852628e-01
## 148  5.16011307 Smooth Reconstruction -1.075052e-01
## 149  5.19520908 Smooth Reconstruction -2.703960e-02
## 150  5.23030509 Smooth Reconstruction  5.609364e-02
## 151  5.26540110 Smooth Reconstruction  1.418487e-01
## 152  5.30049710 Smooth Reconstruction  2.301689e-01
## 153  5.33559311 Smooth Reconstruction  3.209915e-01
## 154  5.37068912 Smooth Reconstruction  4.142415e-01
## 155  5.40578512 Smooth Reconstruction  5.098374e-01
## 156  5.44088113 Smooth Reconstruction  6.076838e-01
## 157  5.47597714 Smooth Reconstruction  7.076785e-01
## 158  5.51107315 Smooth Reconstruction  8.097034e-01
## 159  5.54616915 Smooth Reconstruction  9.136330e-01
## 160  5.58126516 Smooth Reconstruction  1.019326e+00
## 161  5.61636117 Smooth Reconstruction  1.126630e+00
## 162  5.65145718 Smooth Reconstruction  1.235376e+00
## 163  5.68655318 Smooth Reconstruction  1.345388e+00
## 164  5.72164919 Smooth Reconstruction  1.456505e+00
## 165  5.75674520 Smooth Reconstruction  1.568570e+00
## 166  5.79184120 Smooth Reconstruction  1.681448e+00
## 167  5.82693721 Smooth Reconstruction  1.795014e+00
## 168  5.86203322 Smooth Reconstruction  1.909158e+00
## 169  5.89712923 Smooth Reconstruction  2.023780e+00
## 170  5.93222523 Smooth Reconstruction  2.138794e+00
## 171  5.96732124 Smooth Reconstruction  2.254121e+00
## 172  6.00241725 Smooth Reconstruction  2.369695e+00
## 173  6.03751326 Smooth Reconstruction  2.485460e+00
## 174  6.07260926 Smooth Reconstruction  2.601367e+00
## 175  6.10770527 Smooth Reconstruction  2.717376e+00
## 176  6.14280128 Smooth Reconstruction  2.833456e+00
## 177  6.17789729 Smooth Reconstruction  2.949580e+00
## 178  6.21299329 Smooth Reconstruction  3.065731e+00
## 179  6.24808930 Smooth Reconstruction  3.181894e+00
## 180  6.28318531 Smooth Reconstruction  3.298062e+00
## 181  0.00100000    Raw Reconstruction  1.009695e-01
## 182  0.03609601    Raw Reconstruction  1.009695e-01
## 183  0.07119201    Raw Reconstruction  1.009695e-01
## 184  0.10628802    Raw Reconstruction  1.009695e-01
## 185  0.14138403    Raw Reconstruction  1.009695e-01
## 186  0.17648004    Raw Reconstruction  1.009695e-01
## 187  0.21157604    Raw Reconstruction  1.009695e-01
## 188  0.24667205    Raw Reconstruction  1.009695e-01
## 189  0.28176806    Raw Reconstruction  1.009695e-01
## 190  0.31686407    Raw Reconstruction  1.009695e-01
## 191  0.35196007    Raw Reconstruction  1.009695e-01
## 192  0.38705608    Raw Reconstruction  1.009695e-01
## 193  0.42215209    Raw Reconstruction  1.009695e-01
## 194  0.45724809    Raw Reconstruction  1.009695e-01
## 195  0.49234410    Raw Reconstruction  1.009695e-01
## 196  0.52744011    Raw Reconstruction  1.009695e-01
## 197  0.56253612    Raw Reconstruction  1.009695e-01
## 198  0.59763212    Raw Reconstruction  1.009695e-01
## 199  0.63272813    Raw Reconstruction  1.009695e-01
## 200  0.66782414    Raw Reconstruction  1.009695e-01
## 201  0.70292015    Raw Reconstruction  1.009695e-01
## 202  0.73801615    Raw Reconstruction  1.009695e-01
## 203  0.77311216    Raw Reconstruction  1.009695e-01
## 204  0.80820817    Raw Reconstruction  1.164078e-01
## 205  0.84330418    Raw Reconstruction  1.164078e-01
## 206  0.87840018    Raw Reconstruction  1.164078e-01
## 207  0.91349619    Raw Reconstruction  1.164078e-01
## 208  0.94859220    Raw Reconstruction  1.164078e-01
## 209  0.98368820    Raw Reconstruction  1.164078e-01
## 210  1.01878421    Raw Reconstruction  1.164078e-01
## 211  1.05388022    Raw Reconstruction  1.164078e-01
## 212  1.08897623    Raw Reconstruction  1.164078e-01
## 213  1.12407223    Raw Reconstruction  1.164078e-01
## 214  1.15916824    Raw Reconstruction  1.164078e-01
## 215  1.19426425    Raw Reconstruction  1.164078e-01
## 216  1.22936026    Raw Reconstruction  1.164078e-01
## 217  1.26445626    Raw Reconstruction  1.164078e-01
## 218  1.29955227    Raw Reconstruction  1.164078e-01
## 219  1.33464828    Raw Reconstruction  1.164078e-01
## 220  1.36974428    Raw Reconstruction  1.164078e-01
## 221  1.40484029    Raw Reconstruction  1.164078e-01
## 222  1.43993630    Raw Reconstruction  1.164078e-01
## 223  1.47503231    Raw Reconstruction  1.164078e-01
## 224  1.51012831    Raw Reconstruction  1.164078e-01
## 225  1.54522432    Raw Reconstruction  1.164078e-01
## 226  1.58032033    Raw Reconstruction  1.164078e-01
## 227  1.61541634    Raw Reconstruction  3.416311e-01
## 228  1.65051234    Raw Reconstruction  3.416311e-01
## 229  1.68560835    Raw Reconstruction  3.416311e-01
## 230  1.72070436    Raw Reconstruction  3.416311e-01
## 231  1.75580037    Raw Reconstruction  3.416311e-01
## 232  1.79089637    Raw Reconstruction  3.416311e-01
## 233  1.82599238    Raw Reconstruction  3.416311e-01
## 234  1.86108839    Raw Reconstruction  3.416311e-01
## 235  1.89618439    Raw Reconstruction  3.416311e-01
## 236  1.93128040    Raw Reconstruction  3.416311e-01
## 237  1.96637641    Raw Reconstruction  3.416311e-01
## 238  2.00147242    Raw Reconstruction  3.416311e-01
## 239  2.03656842    Raw Reconstruction  3.416311e-01
## 240  2.07166443    Raw Reconstruction  3.416311e-01
## 241  2.10676044    Raw Reconstruction  3.416311e-01
## 242  2.14185645    Raw Reconstruction  3.416311e-01
## 243  2.17695245    Raw Reconstruction  3.416311e-01
## 244  2.21204846    Raw Reconstruction  3.416311e-01
## 245  2.24714447    Raw Reconstruction  3.416311e-01
## 246  2.28224047    Raw Reconstruction  3.416311e-01
## 247  2.31733648    Raw Reconstruction  3.416311e-01
## 248  2.35243249    Raw Reconstruction  3.416311e-01
## 249  2.38752850    Raw Reconstruction  3.416311e-01
## 250  2.42262450    Raw Reconstruction  5.638170e-02
## 251  2.45772051    Raw Reconstruction  5.638170e-02
## 252  2.49281652    Raw Reconstruction  5.638170e-02
## 253  2.52791253    Raw Reconstruction  5.638170e-02
## 254  2.56300853    Raw Reconstruction  5.638170e-02
## 255  2.59810454    Raw Reconstruction  5.638170e-02
## 256  2.63320055    Raw Reconstruction  5.638170e-02
## 257  2.66829656    Raw Reconstruction  5.638170e-02
## 258  2.70339256    Raw Reconstruction  5.638170e-02
## 259  2.73848857    Raw Reconstruction  5.638170e-02
## 260  2.77358458    Raw Reconstruction  5.638170e-02
## 261  2.80868058    Raw Reconstruction  5.638170e-02
## 262  2.84377659    Raw Reconstruction  5.638170e-02
## 263  2.87887260    Raw Reconstruction  5.638170e-02
## 264  2.91396861    Raw Reconstruction  5.638170e-02
## 265  2.94906461    Raw Reconstruction  5.638170e-02
## 266  2.98416062    Raw Reconstruction  5.638170e-02
## 267  3.01925663    Raw Reconstruction  5.638170e-02
## 268  3.05435264    Raw Reconstruction  5.638170e-02
## 269  3.08944864    Raw Reconstruction  5.638170e-02
## 270  3.12454465    Raw Reconstruction  5.638170e-02
## 271  3.15964066    Raw Reconstruction  5.638170e-02
## 272  3.19473666    Raw Reconstruction  5.638170e-02
## 273  3.22983267    Raw Reconstruction -9.457916e-01
## 274  3.26492868    Raw Reconstruction -9.457916e-01
## 275  3.30002469    Raw Reconstruction -9.457916e-01
## 276  3.33512069    Raw Reconstruction -9.457916e-01
## 277  3.37021670    Raw Reconstruction -9.457916e-01
## 278  3.40531271    Raw Reconstruction -9.457916e-01
## 279  3.44040872    Raw Reconstruction -9.457916e-01
## 280  3.47550472    Raw Reconstruction -9.457916e-01
## 281  3.51060073    Raw Reconstruction -9.457916e-01
## 282  3.54569674    Raw Reconstruction -9.457916e-01
## 283  3.58079274    Raw Reconstruction -9.457916e-01
## 284  3.61588875    Raw Reconstruction -9.457916e-01
## 285  3.65098476    Raw Reconstruction -9.457916e-01
## 286  3.68608077    Raw Reconstruction -9.457916e-01
## 287  3.72117677    Raw Reconstruction -9.457916e-01
## 288  3.75627278    Raw Reconstruction -9.457916e-01
## 289  3.79136879    Raw Reconstruction -9.457916e-01
## 290  3.82646480    Raw Reconstruction -9.457916e-01
## 291  3.86156080    Raw Reconstruction -9.457916e-01
## 292  3.89665681    Raw Reconstruction -9.457916e-01
## 293  3.93175282    Raw Reconstruction -9.457916e-01
## 294  3.96684883    Raw Reconstruction -9.457916e-01
## 295  4.00194483    Raw Reconstruction -9.457916e-01
## 296  4.03704084    Raw Reconstruction -8.380988e-01
## 297  4.07213685    Raw Reconstruction -8.380988e-01
## 298  4.10723285    Raw Reconstruction -8.380988e-01
## 299  4.14232886    Raw Reconstruction -8.380988e-01
## 300  4.17742487    Raw Reconstruction -8.380988e-01
## 301  4.21252088    Raw Reconstruction -8.380988e-01
## 302  4.24761688    Raw Reconstruction -8.380988e-01
## 303  4.28271289    Raw Reconstruction -8.380988e-01
## 304  4.31780890    Raw Reconstruction -8.380988e-01
## 305  4.35290491    Raw Reconstruction -8.380988e-01
## 306  4.38800091    Raw Reconstruction -8.380988e-01
## 307  4.42309692    Raw Reconstruction -8.380988e-01
## 308  4.45819293    Raw Reconstruction -8.380988e-01
## 309  4.49328893    Raw Reconstruction -8.380988e-01
## 310  4.52838494    Raw Reconstruction -8.380988e-01
## 311  4.56348095    Raw Reconstruction -8.380988e-01
## 312  4.59857696    Raw Reconstruction -8.380988e-01
## 313  4.63367296    Raw Reconstruction -8.380988e-01
## 314  4.66876897    Raw Reconstruction -8.380988e-01
## 315  4.70386498    Raw Reconstruction -8.380988e-01
## 316  4.73896099    Raw Reconstruction -8.380988e-01
## 317  4.77405699    Raw Reconstruction -8.380988e-01
## 318  4.80915300    Raw Reconstruction -8.380988e-01
## 319  4.84424901    Raw Reconstruction -9.077026e-01
## 320  4.87934502    Raw Reconstruction -9.077026e-01
## 321  4.91444102    Raw Reconstruction -9.077026e-01
## 322  4.94953703    Raw Reconstruction -9.077026e-01
## 323  4.98463304    Raw Reconstruction -9.077026e-01
## 324  5.01972904    Raw Reconstruction -9.077026e-01
## 325  5.05482505    Raw Reconstruction -9.077026e-01
## 326  5.08992106    Raw Reconstruction -9.077026e-01
## 327  5.12501707    Raw Reconstruction -9.077026e-01
## 328  5.16011307    Raw Reconstruction -9.077026e-01
## 329  5.19520908    Raw Reconstruction -9.077026e-01
## 330  5.23030509    Raw Reconstruction -9.077026e-01
## 331  5.26540110    Raw Reconstruction -9.077026e-01
## 332  5.30049710    Raw Reconstruction -9.077026e-01
## 333  5.33559311    Raw Reconstruction -9.077026e-01
## 334  5.37068912    Raw Reconstruction -9.077026e-01
## 335  5.40578512    Raw Reconstruction -9.077026e-01
## 336  5.44088113    Raw Reconstruction -9.077026e-01
## 337  5.47597714    Raw Reconstruction -9.077026e-01
## 338  5.51107315    Raw Reconstruction -9.077026e-01
## 339  5.54616915    Raw Reconstruction -9.077026e-01
## 340  5.58126516    Raw Reconstruction -9.077026e-01
## 341  5.61636117    Raw Reconstruction -9.077026e-01
## 342  5.65145718    Raw Reconstruction  2.513298e+00
## 343  5.68655318    Raw Reconstruction  2.513298e+00
## 344  5.72164919    Raw Reconstruction  2.513298e+00
## 345  5.75674520    Raw Reconstruction  2.513298e+00
## 346  5.79184120    Raw Reconstruction  2.513298e+00
## 347  5.82693721    Raw Reconstruction  2.513298e+00
## 348  5.86203322    Raw Reconstruction  2.513298e+00
## 349  5.89712923    Raw Reconstruction  2.513298e+00
## 350  5.93222523    Raw Reconstruction  2.513298e+00
## 351  5.96732124    Raw Reconstruction  2.513298e+00
## 352  6.00241725    Raw Reconstruction  2.513298e+00
## 353  6.03751326    Raw Reconstruction  2.513298e+00
## 354  6.07260926    Raw Reconstruction  2.513298e+00
## 355  6.10770527    Raw Reconstruction  2.513298e+00
## 356  6.14280128    Raw Reconstruction  2.513298e+00
## 357  6.17789729    Raw Reconstruction  2.513298e+00
## 358  6.21299329    Raw Reconstruction  2.513298e+00
## 359  6.24808930    Raw Reconstruction  2.513298e+00
## 360  6.28318531    Raw Reconstruction  2.513298e+00
## 361  0.00100000          Original Sin  1.410285e-03
## 362  0.03609601          Original Sin  5.102850e-02
## 363  0.07119201          Original Sin  1.005839e-01
## 364  0.10628802          Original Sin  1.500154e-01
## 365  0.14138403          Original Sin  1.992621e-01
## 366  0.17648004          Original Sin  2.482634e-01
## 367  0.21157604          Original Sin  2.969589e-01
## 368  0.24667205          Original Sin  3.452887e-01
## 369  0.28176806          Original Sin  3.931932e-01
## 370  0.31686407          Original Sin  4.406135e-01
## 371  0.35196007          Original Sin  4.874911e-01
## 372  0.38705608          Original Sin  5.337683e-01
## 373  0.42215209          Original Sin  5.793881e-01
## 374  0.45724809          Original Sin  6.242943e-01
## 375  0.49234410          Original Sin  6.684317e-01
## 376  0.52744011          Original Sin  7.117458e-01
## 377  0.56253612          Original Sin  7.541833e-01
## 378  0.59763212          Original Sin  7.956919e-01
## 379  0.63272813          Original Sin  8.362206e-01
## 380  0.66782414          Original Sin  8.757193e-01
## 381  0.70292015          Original Sin  9.141395e-01
## 382  0.73801615          Original Sin  9.514339e-01
## 383  0.77311216          Original Sin  9.875565e-01
## 384  0.80820817          Original Sin  1.022463e+00
## 385  0.84330418          Original Sin  1.056110e+00
## 386  0.87840018          Original Sin  1.088456e+00
## 387  0.91349619          Original Sin  1.119462e+00
## 388  0.94859220          Original Sin  1.149089e+00
## 389  0.98368820          Original Sin  1.177301e+00
## 390  1.01878421          Original Sin  1.204062e+00
## 391  1.05388022          Original Sin  1.229341e+00
## 392  1.08897623          Original Sin  1.253106e+00
## 393  1.12407223          Original Sin  1.275328e+00
## 394  1.15916824          Original Sin  1.295978e+00
## 395  1.19426425          Original Sin  1.315033e+00
## 396  1.22936026          Original Sin  1.332468e+00
## 397  1.26445626          Original Sin  1.348262e+00
## 398  1.29955227          Original Sin  1.362395e+00
## 399  1.33464828          Original Sin  1.374851e+00
## 400  1.36974428          Original Sin  1.385613e+00
## 401  1.40484029          Original Sin  1.394669e+00
## 402  1.43993630          Original Sin  1.402007e+00
## 403  1.47503231          Original Sin  1.407618e+00
## 404  1.51012831          Original Sin  1.411496e+00
## 405  1.54522432          Original Sin  1.413635e+00
## 406  1.58032033          Original Sin  1.414033e+00
## 407  1.61541634          Original Sin  1.412690e+00
## 408  1.65051234          Original Sin  1.409607e+00
## 409  1.68560835          Original Sin  1.404787e+00
## 410  1.72070436          Original Sin  1.398238e+00
## 411  1.75580037          Original Sin  1.389966e+00
## 412  1.79089637          Original Sin  1.379983e+00
## 413  1.82599238          Original Sin  1.368300e+00
## 414  1.86108839          Original Sin  1.354932e+00
## 415  1.89618439          Original Sin  1.339895e+00
## 416  1.93128040          Original Sin  1.323208e+00
## 417  1.96637641          Original Sin  1.304891e+00
## 418  2.00147242          Original Sin  1.284967e+00
## 419  2.03656842          Original Sin  1.263460e+00
## 420  2.07166443          Original Sin  1.240398e+00
## 421  2.10676044          Original Sin  1.215807e+00
## 422  2.14185645          Original Sin  1.189720e+00
## 423  2.17695245          Original Sin  1.162167e+00
## 424  2.21204846          Original Sin  1.133182e+00
## 425  2.24714447          Original Sin  1.102802e+00
## 426  2.28224047          Original Sin  1.071064e+00
## 427  2.31733648          Original Sin  1.038007e+00
## 428  2.35243249          Original Sin  1.003671e+00
## 429  2.38752850          Original Sin  9.680994e-01
## 430  2.42262450          Original Sin  9.313353e-01
## 431  2.45772051          Original Sin  8.934241e-01
## 432  2.49281652          Original Sin  8.544125e-01
## 433  2.52791253          Original Sin  8.143487e-01
## 434  2.56300853          Original Sin  7.732819e-01
## 435  2.59810454          Original Sin  7.312627e-01
## 436  2.63320055          Original Sin  6.883429e-01
## 437  2.66829656          Original Sin  6.445753e-01
## 438  2.70339256          Original Sin  6.000138e-01
## 439  2.73848857          Original Sin  5.547134e-01
## 440  2.77358458          Original Sin  5.087298e-01
## 441  2.80868058          Original Sin  4.621196e-01
## 442  2.84377659          Original Sin  4.149403e-01
## 443  2.87887260          Original Sin  3.672499e-01
## 444  2.91396861          Original Sin  3.191072e-01
## 445  2.94906461          Original Sin  2.705715e-01
## 446  2.98416062          Original Sin  2.217025e-01
## 447  3.01925663          Original Sin  1.725605e-01
## 448  3.05435264          Original Sin  1.232060e-01
## 449  3.08944864          Original Sin  7.369967e-02
## 450  3.12454465          Original Sin  2.410262e-02
## 451  3.15964066          Original Sin -2.552413e-02
## 452  3.19473666          Original Sin -7.511945e-02
## 453  3.22983267          Original Sin -1.246223e-01
## 454  3.26492868          Original Sin -1.739716e-01
## 455  3.30002469          Original Sin -2.231066e-01
## 456  3.33512069          Original Sin -2.719669e-01
## 457  3.37021670          Original Sin -3.204923e-01
## 458  3.40531271          Original Sin -3.686229e-01
## 459  3.44040872          Original Sin -4.162995e-01
## 460  3.47550472          Original Sin -4.634635e-01
## 461  3.51060073          Original Sin -5.100566e-01
## 462  3.54569674          Original Sin -5.560215e-01
## 463  3.58079274          Original Sin -6.013017e-01
## 464  3.61588875          Original Sin -6.458412e-01
## 465  3.65098476          Original Sin -6.895854e-01
## 466  3.68608077          Original Sin -7.324803e-01
## 467  3.72117677          Original Sin -7.744731e-01
## 468  3.75627278          Original Sin -8.155120e-01
## 469  3.79136879          Original Sin -8.555465e-01
## 470  3.82646480          Original Sin -8.945274e-01
## 471  3.86156080          Original Sin -9.324065e-01
## 472  3.89665681          Original Sin -9.691373e-01
## 473  3.93175282          Original Sin -1.004675e+00
## 474  3.96684883          Original Sin -1.038974e+00
## 475  4.00194483          Original Sin -1.071995e+00
## 476  4.03704084          Original Sin -1.103695e+00
## 477  4.07213685          Original Sin -1.134035e+00
## 478  4.10723285          Original Sin -1.162979e+00
## 479  4.14232886          Original Sin -1.190491e+00
## 480  4.17742487          Original Sin -1.216536e+00
## 481  4.21252088          Original Sin -1.241084e+00
## 482  4.24761688          Original Sin -1.264102e+00
## 483  4.28271289          Original Sin -1.285564e+00
## 484  4.31780890          Original Sin -1.305443e+00
## 485  4.35290491          Original Sin -1.323713e+00
## 486  4.38800091          Original Sin -1.340354e+00
## 487  4.42309692          Original Sin -1.355343e+00
## 488  4.45819293          Original Sin -1.368664e+00
## 489  4.49328893          Original Sin -1.380299e+00
## 490  4.52838494          Original Sin -1.390233e+00
## 491  4.56348095          Original Sin -1.398456e+00
## 492  4.59857696          Original Sin -1.404956e+00
## 493  4.63367296          Original Sin -1.409726e+00
## 494  4.66876897          Original Sin -1.412760e+00
## 495  4.70386498          Original Sin -1.414054e+00
## 496  4.73896099          Original Sin -1.413606e+00
## 497  4.77405699          Original Sin -1.411417e+00
## 498  4.80915300          Original Sin -1.407490e+00
## 499  4.84424901          Original Sin -1.401829e+00
## 500  4.87934502          Original Sin -1.394442e+00
## 501  4.91444102          Original Sin -1.385338e+00
## 502  4.94953703          Original Sin -1.374527e+00
## 503  4.98463304          Original Sin -1.362023e+00
## 504  5.01972904          Original Sin -1.347842e+00
## 505  5.05482505          Original Sin -1.332001e+00
## 506  5.08992106          Original Sin -1.314520e+00
## 507  5.12501707          Original Sin -1.295419e+00
## 508  5.16011307          Original Sin -1.274724e+00
## 509  5.19520908          Original Sin -1.252458e+00
## 510  5.23030509          Original Sin -1.228649e+00
## 511  5.26540110          Original Sin -1.203328e+00
## 512  5.30049710          Original Sin -1.176524e+00
## 513  5.33559311          Original Sin -1.148272e+00
## 514  5.37068912          Original Sin -1.118605e+00
## 515  5.40578512          Original Sin -1.087560e+00
## 516  5.44088113          Original Sin -1.055176e+00
## 517  5.47597714          Original Sin -1.021493e+00
## 518  5.51107315          Original Sin -9.865515e-01
## 519  5.54616915          Original Sin -9.503949e-01
## 520  5.58126516          Original Sin -9.130678e-01
## 521  5.61636117          Original Sin -8.746162e-01
## 522  5.65145718          Original Sin -8.350874e-01
## 523  5.68655318          Original Sin -7.945301e-01
## 524  5.72164919          Original Sin -7.529943e-01
## 525  5.75674520          Original Sin -7.105311e-01
## 526  5.79184120          Original Sin -6.671928e-01
## 527  5.82693721          Original Sin -6.230328e-01
## 528  5.86203322          Original Sin -5.781055e-01
## 529  5.89712923          Original Sin -5.324662e-01
## 530  5.93222523          Original Sin -4.861711e-01
## 531  5.96732124          Original Sin -4.392772e-01
## 532  6.00241725          Original Sin -3.918423e-01
## 533  6.03751326          Original Sin -3.439249e-01
## 534  6.07260926          Original Sin -2.955838e-01
## 535  6.10770527          Original Sin -2.468787e-01
## 536  6.14280128          Original Sin -1.978696e-01
## 537  6.17789729          Original Sin -1.486168e-01
## 538  6.21299329          Original Sin -9.918093e-02
## 539  6.24808930          Original Sin -4.962293e-02
## 540  6.28318531          Original Sin -3.816146e-06
## 
## $layers
## $layers[[1]]
## geom_line: na.rm = FALSE, orientation = NA
## stat_identity: na.rm = FALSE
## position_identity 
## 
## 
## $scales
## <ggproto object: Class ScalesList, gg>
##     add: function
##     add_defaults: function
##     add_missing: function
##     backtransform_df: function
##     clone: function
##     find: function
##     get_scales: function
##     has_scale: function
##     input: function
##     map_df: function
##     n: function
##     non_position_scales: function
##     scales: list
##     set_palettes: function
##     train_df: function
##     transform_df: function
##     super:  <ggproto object: Class ScalesList, gg>
## 
## $guides
## <Guides[0] ggproto object>
## 
## <empty>
## 
## $mapping
## $x
## <quosure>
## expr: ^time_points
## env:  global
## 
## $y
## <quosure>
## expr: ^value
## env:  global
## 
## $colour
## <quosure>
## expr: ^variable
## env:  global
## 
## attr(,"class")
## [1] "uneval"
## 
## $theme
## $theme$legend.position
## [1] "top"
## 
## attr(,"complete")
## [1] FALSE
## attr(,"validate")
## [1] TRUE
## 
## $coordinates
## <ggproto object: Class CoordCartesian, Coord, gg>
##     aspect: function
##     backtransform_range: function
##     clip: on
##     default: TRUE
##     distance: function
##     draw_panel: function
##     expand: TRUE
##     is_free: function
##     is_linear: function
##     labels: function
##     limits: list
##     modify_scales: function
##     range: function
##     render_axis_h: function
##     render_axis_v: function
##     render_bg: function
##     render_fg: function
##     reverse: none
##     setup_data: function
##     setup_layout: function
##     setup_panel_guides: function
##     setup_panel_params: function
##     setup_params: function
##     train_panel_guides: function
##     transform: function
##     super:  <ggproto object: Class CoordCartesian, Coord, gg>
## 
## $facet
## <ggproto object: Class FacetNull, Facet, gg>
##     attach_axes: function
##     attach_strips: function
##     compute_layout: function
##     draw_back: function
##     draw_front: function
##     draw_labels: function
##     draw_panel_content: function
##     draw_panels: function
##     finish_data: function
##     format_strip_labels: function
##     init_gtable: function
##     init_scales: function
##     map_data: function
##     params: list
##     set_panel_size: function
##     setup_data: function
##     setup_panel_params: function
##     setup_params: function
##     shrink: TRUE
##     train_scales: function
##     vars: function
##     super:  <ggproto object: Class FacetNull, Facet, gg>
## 
## $plot_env
## <environment: R_GlobalEnv>
## 
## $layout
## <ggproto object: Class Layout, gg>
##     coord: NULL
##     coord_params: list
##     facet: NULL
##     facet_params: list
##     finish_data: function
##     get_scales: function
##     layout: NULL
##     map_position: function
##     panel_params: NULL
##     panel_scales_x: NULL
##     panel_scales_y: NULL
##     render: function
##     render_labels: function
##     reset_scales: function
##     resolve_label: function
##     setup: function
##     setup_panel_guides: function
##     setup_panel_params: function
##     train_position: function
##     super:  <ggproto object: Class Layout, gg>
## 
## $labels
## $labels$title
## "Comparison between" ~ "f(t)=Smooth(Sin)(t)" ~ "and Smooth(ILT(LT(Sin)))(t); Range [" ~ 
##     0 ~ ":" ~ 2 * pi ~ "]"
## 
## $labels$x
## [1] "Time"
## 
## $labels$y
## [1] "Function Intensity"
## 
## $labels$colour
## [1] "variable"
## 
## 
## attr(,"class")
## [1] "gg"     "ggplot"