WormTensorInstall WormTensor package from CRAN or GitHub in
advance and then type the code below in the R console window.
library(WormTensor)worm_download is a function to retrieve data from
figshare for a total of 28 animals (24 normal and 4 noisy). If there is
no argument, mSBD distance matrices (including 24 normal animals) will
be downloaded.
object <- worm_download()as_worm_tensor is a function to generate a
WormTensor object from distance matrices. A
WormTensor object S4 class is used by
worm_membership, worm_clustering,
worm_evaluate, and worm_visualize.
object <- as_worm_tensor(object$Ds)worm_membership is a function to generate a membership
tensor from a WormTensor object with distance matrices. Set
the assumed number of clusters to k(>=2).
object <- worm_membership(object, k=6)worm_clustering is a function to generate a clustering
result from a WormTensor object with a membership
tensor.
object <- worm_clustering(object)worm_evaluate is a function to generate an evaluation
result from a WormTensor object with a
worm_clustering result.
object <- worm_evaluate(object)is a function to visualizeworm_clusteringandworm_evaluate`
results.object <- worm_visualize(object)Figure1a : Silhouette plots
Figure1b : Dimensional reduction Plots colored by cluster
Figure1c : Dimensional reduction Plots colored by no. of identified cells
Figure1d : ARI with a merge result and each animal(with MCMI)
The above functions can also be run by connecting them with R’s native pipe.
worm_download()$Ds |>
    as_worm_tensor() |>
        worm_membership(k=6) |>
            worm_clustering() |>
                worm_evaluate() |>
                    worm_visualize() -> objectIf you have a label for the cells, you can use it for external evaluation.
# Sample Labels
worm_download()$Ds |>
    as_worm_tensor() |>
        worm_membership(k=6) |>
            worm_clustering() -> object
labels <- list(
    label1 = sample(3, length(object@clustering), replace=TRUE),
    label2 = sample(4, length(object@clustering), replace=TRUE),
    label3 = sample(5, length(object@clustering), replace=TRUE))
# WormTensor (with Labels)
worm_download()$Ds |>
    as_worm_tensor() |>
        worm_membership(k=6) |>
            worm_clustering() |>
                worm_evaluate(labels) |>
                    worm_visualize() -> object_labelsFigure2a : Silhouette plots
Figure2b : Dimensional reduction Plots colored by cluster
Figure2c : Dimensional reduction Plots colored by no. of identified cells
Figure2d : ARI with a merge result and each animal(with MCMI)
Figure2e : Dimensional reduction Plots colored by label
Figure2f : Consistency of labels and cluster members
worm_distance helps you analyze your time-series data
matrices with WormTensor. worm_distance is a
function to convert time-series data matrices into distance matrices.
The distance matrices can be used for analysis by
WormTensor.
# Toy data (data of 3 animals)
n_cell_x <- 13
n_cell_y <- 24
n_cell_z <- 29
n_cells <- 30
n_time_frames <- 100
# animal_x : 13 cells, 100 time frames
animal_x <- matrix(runif(n_cell_x*n_time_frames),
    nrow=n_cell_x, ncol=n_time_frames)
rownames(animal_x) <- sample(seq(n_cells), n_cell_x)
colnames(animal_x) <- seq(n_time_frames)
# animal_y : 24 cells, 100 time frames
animal_y <- matrix(runif(n_cell_y*n_time_frames),
    nrow=n_cell_y, ncol=n_time_frames)
rownames(animal_y) <- sample(seq(n_cells), n_cell_y)
colnames(animal_y) <- seq(n_time_frames)
# animal_z : 29 cells, 100 time frames
animal_z <- matrix(runif(n_cell_z*n_time_frames),
    nrow=n_cell_z, ncol=n_time_frames)
rownames(animal_z) <- sample(seq(n_cells), n_cell_z)
colnames(animal_z) <- seq(n_time_frames)
# Input list for worm_distnce
X <- list(animal_x=animal_x,
    animal_y=animal_y,
    animal_z=animal_z)
# Pipe Operation
# tsne.perplexity must be adjusted for data size
worm_distance(X, "mSBD") |>
    as_worm_tensor() |>
        worm_membership(k=6) |>
            worm_clustering() |>
                worm_evaluate() |>
                    worm_visualize(tsne.perplexity=5) -> object#> R Under development (unstable) (2022-07-07 r82559)
#> Platform: x86_64-pc-linux-gnu (64-bit)
#> Running under: Ubuntu 22.04 LTS
#> 
#> Matrix products: default
#> BLAS:   /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3
#> LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so
#> 
#> locale:
#>  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
#>  [3] LC_TIME=en_US.UTF-8        LC_COLLATE=C              
#>  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
#>  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
#>  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
#> [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
#> 
#> attached base packages:
#> [1] stats     graphics  grDevices utils     datasets  methods   base     
#> 
#> other attached packages:
#> [1] WormTensor_0.1.2
#> 
#> loaded via a namespace (and not attached):
#>  [1] ade4_1.7-19        tidyselect_1.1.2   viridisLite_0.4.0  farver_2.1.1      
#>  [5] dplyr_1.0.9        fastmap_1.1.0      promises_1.2.0.1   shinyjs_2.1.0     
#>  [9] digest_0.6.29      mime_0.12          lifecycle_1.0.1    factoextra_1.0.7  
#> [13] cluster_2.1.3      ellipsis_0.3.2     magrittr_2.0.3     compiler_4.3.0    
#> [17] rlang_1.0.3        sass_0.4.1         tools_4.3.0        utf8_1.2.2        
#> [21] yaml_2.3.5         knitr_1.39         ggsignif_0.6.3     labeling_0.4.2    
#> [25] plyr_1.8.7         abind_1.4-5        R2HTML_2.3.3       Rtsne_0.16        
#> [29] purrr_0.3.4        grid_4.3.0         stats4_4.3.0       fansi_1.0.3       
#> [33] ggpubr_0.4.0       xtable_1.8-4       e1071_1.7-11       colorspace_2.0-3  
#> [37] aricode_1.0.0      ggplot2_3.3.6      scales_1.2.0       iterators_1.0.14  
#> [41] MASS_7.3-57.1      cli_3.3.0          rmarkdown_2.14     crayon_1.5.1      
#> [45] generics_0.1.3     RcppParallel_5.1.5 rstudioapi_0.13    RSpectra_0.16-1   
#> [49] reshape2_1.4.4     usedist_0.4.0      proxy_0.4-27       stringr_1.4.0     
#> [53] splines_4.3.0      modeltools_0.2-23  parallel_4.3.0     clValid_0.7       
#> [57] vctrs_0.4.1        Matrix_1.4-1       carData_3.0-5      jsonlite_1.8.0    
#> [61] car_3.1-0          ggrepel_0.9.1      rstatix_0.7.0      clue_0.3-61       
#> [65] foreach_1.5.2      jquerylib_0.1.4    tidyr_1.2.0        glue_1.6.2        
#> [69] dtw_1.22-3         codetools_0.2-18   cowplot_1.1.1      flexclust_1.4-1   
#> [73] uwot_0.1.11        stringi_1.7.6      gtable_0.3.0       rTensor_1.4.8     
#> [77] later_1.3.0        munsell_0.5.0      tibble_3.1.7       pillar_1.7.0      
#> [81] htmltools_0.5.2    clusterSim_0.50-1  R6_2.5.1           evaluate_0.15     
#> [85] shiny_1.7.1        lattice_0.20-45    backports_1.4.1    dtwclust_5.5.10   
#> [89] broom_1.0.0        httpuv_1.6.5       bslib_0.3.1        class_7.3-20.1    
#> [93] Rcpp_1.0.8.3       nlme_3.1-158       mgcv_1.8-40        xfun_0.31         
#> [97] pkgconfig_2.0.3