suppressPackageStartupMessages(
  {
    library(flowStats)
    library(ggcyto)
    library(ggridges)    
    library(gridExtra)
  }
)
gs <- load_gs("~/remote/fh_fast/lyoplate_out/gated_data/manual/gslist-tcell/D54tFo7RPl/")
gs <- gs[c(1,4,9)]
plot(gs)

getNodes(gs)
##  [1] "root"                                        
##  [2] "/LYM"                                        
##  [3] "/LYM/singlets/not dead"                      
##  [4] "/LYM/singlets/not dead/CD3"                  
##  [5] "/LYM/singlets/not dead/CD3/4+ 8-"            
##  [6] "/LYM/singlets/not dead/CD3/4+ 8-/CCR7- 45RA+"
##  [7] "/LYM/singlets/not dead/CD3/4+ 8-/CCR7+ 45RA+"
##  [8] "/LYM/singlets/not dead/CD3/4+ 8-/CCR7+ 45RA-"
##  [9] "/LYM/singlets/not dead/CD3/4+ 8-/CCR7- 45RA-"
## [10] "/LYM/singlets/not dead/CD3/4+ 8-/38- DR+"    
## [11] "/LYM/singlets/not dead/CD3/4+ 8-/38+ DR+"    
## [12] "/LYM/singlets/not dead/CD3/4+ 8-/38+ DR-"    
## [13] "/LYM/singlets/not dead/CD3/4+ 8-/38- DR-"    
## [14] "/LYM/singlets/not dead/CD3/4- 8+"            
## [15] "/LYM/singlets/not dead/CD3/4- 8+/CCR7- 45RA+"
## [16] "/LYM/singlets/not dead/CD3/4- 8+/CCR7+ 45RA+"
## [17] "/LYM/singlets/not dead/CD3/4- 8+/CCR7+ 45RA-"
## [18] "/LYM/singlets/not dead/CD3/4- 8+/CCR7- 45RA-"
## [19] "/LYM/singlets/not dead/CD3/4- 8+/38- DR+"    
## [20] "/LYM/singlets/not dead/CD3/4- 8+/38+ DR+"    
## [21] "/LYM/singlets/not dead/CD3/4- 8+/38+ DR-"    
## [22] "/LYM/singlets/not dead/CD3/4- 8+/38- DR-"    
## [23] "/LYM/singlets/not dead/CD3/DNT"              
## [24] "/LYM/singlets/not dead/CD3/DPT"
pop_to_norm <- "CD3"
dim <- "CD3"

check cd3 dimension of target populatiion

p1 <- autoplot(getData(gs, pop_to_norm), dim) + geom_density_ridges(aes(y = name)) + facet_null() 
p1
## Picking joint bandwidth of 18.4

normalize gs to align the peak

reference_sample <- sampleNames(gs)[1]
gs_norm <- normalize(gs
                     , target = reference_sample
                     , populations = pop_to_norm
                     , dims = dim
                     , minCountThreshold = 100
                     , nPeaks = list('CD3' = 1)
                     , chunksize = 10
                     , bwFac = 2
)
## cloning the gatingSet...
## Normalize CD3
## 
Estimating landmarks for channel CD3 ...
## Registering curves for parameter CD3 ...
## normalizing sample 1
## normalizing sample 2
## normalizing sample 3
## done!

check results

p2 <- autoplot(getData(gs_norm, pop_to_norm), dim) + geom_density_ridges(aes(y = name)) + facet_null() 
p2
## Picking joint bandwidth of 18.2

normalize the underline flow data directly

cs <- getData(gs, pop_to_norm)
# make a deep copy to avoid changing original data since cs  is a reference
cs_norm <- realize_view(cs)
cs_get_h5_file_path(cs) != cs_get_h5_file_path(cs_norm)
## [1] TRUE

align cs_norm

invisible(warpSet(cs_norm
                     , target = reference_sample
                     , stains = dim
                     , peakNr = 1
                     , chunksize = 10
                     , bwFac = 2
                    )
          )
## 
Estimating landmarks for channel CD3 ...
## Registering curves for parameter CD3 ...
## normalizing sample 1
## normalizing sample 2
## normalizing sample 3
p1 <- autoplot(cs, "CD3") + geom_density_ridges(aes(y = name)) + facet_null() 
p2 <- autoplot(cs_norm, "CD3") + geom_density_ridges(aes(y = name)) + facet_null() 
grid.arrange(as.ggplot(p1), as.ggplot(p2))
## Picking joint bandwidth of 18.4
## Picking joint bandwidth of 18.4