Quick Start: An Introduction to wompwomp

library(wompwomp)

set.seed(43)

We create a toy data frame that maps tissues (BRAIN, STOMACH, HEART, T CELL, B CELL) to clustering (1-4)

df <- data.frame(
    tissue = c(
        "BRAIN", "BRAIN", "BRAIN",
        "STOMACH", "STOMACH", "STOMACH", "STOMACH", "STOMACH", "STOMACH",
        "HEART", "HEART", "HEART", "HEART", "HEART", "HEART", "HEART",
        "T CELL", "T CELL",
        "B CELL", "B CELL", "B CELL", "B CELL", "B CELL", "B CELL", "B CELL", "B CELL", "B CELL"
    ),
    cluster = c(
        1, 1, 2,
        1, 2, 2, 2, 2, 2,
        1, 3, 3, 3, 3, 3, 3,
        4, 4,
        4, 4, 4, 4, 4, 4, 4, 4, 4
    )
)
graphing_columns <- c("tissue", "cluster")

# write.csv(df, file = "vignette_intro_df_ungrouped.csv", row.names = FALSE, quote = FALSE)
print(df)
##     tissue cluster
## 1    BRAIN       1
## 2    BRAIN       1
## 3    BRAIN       2
## 4  STOMACH       1
## 5  STOMACH       2
## 6  STOMACH       2
## 7  STOMACH       2
## 8  STOMACH       2
## 9  STOMACH       2
## 10   HEART       1
## 11   HEART       3
## 12   HEART       3
## 13   HEART       3
## 14   HEART       3
## 15   HEART       3
## 16   HEART       3
## 17  T CELL       4
## 18  T CELL       4
## 19  B CELL       4
## 20  B CELL       4
## 21  B CELL       4
## 22  B CELL       4
## 23  B CELL       4
## 24  B CELL       4
## 25  B CELL       4
## 26  B CELL       4
## 27  B CELL       4

Group by tissue and cluster, counting the values in a new column value

clus_df_gather <- prep_for_lodes(df, cols = graphing_columns)

# write.csv(clus_df_gather, file = "vignette_intro_df_grouped.csv", row.names = FALSE, quote = FALSE)
print(clus_df_gather)
## # A tibble: 8 × 3
##   tissue  cluster value
##   <chr>   <chr>   <int>
## 1 B CELL  4           9
## 2 BRAIN   1           2
## 3 BRAIN   2           1
## 4 HEART   1           1
## 5 HEART   3           6
## 6 STOMACH 1           1
## 7 STOMACH 2           5
## 8 T CELL  4           2
clus_df_gather_tsp <- sort_to_uncross(clus_df_gather, cols = graphing_columns, wt = "value", method = "tsp")
## Warning: Using an external vector in selections was deprecated in tidyselect 1.1.0.
## ℹ Please use `all_of()` or `any_of()` instead.
##   # Was:
##   data %>% select(graphing_columns)
## 
##   # Now:
##   data %>% select(all_of(graphing_columns))
## 
## See <https://tidyselect.r-lib.org/reference/faq-external-vector.html>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
print(clus_df_gather_tsp)
## # A tibble: 8 × 3
##   tissue  cluster value
##   <fct>   <fct>   <int>
## 1 B CELL  4           9
## 2 BRAIN   1           2
## 3 BRAIN   2           1
## 4 HEART   1           1
## 5 HEART   3           6
## 6 STOMACH 1           1
## 7 STOMACH 2           5
## 8 T CELL  4           2
# clus_df_gather_tsp <- clus_df_gather_tsp
stratum_to_color_mapping <- get_lode_clusters(clus_df_gather_tsp, cols = graphing_columns, wt = "value", method = "advanced")
print(stratum_to_color_mapping)
## $cluster
## $cluster$`4`
## [1] 1
## 
## $cluster$`1`
## [1] 2
## 
## $cluster$`2`
## [1] 4
## 
## $cluster$`3`
## [1] 3
## 
## 
## $tissue
## $tissue$`B CELL`
## [1] 1
## 
## $tissue$BRAIN
## [1] 2
## 
## $tissue$HEART
## [1] 3
## 
## $tissue$STOMACH
## [1] 4
## 
## $tissue$`T CELL`
## [1] 1
# jsonlite::toJSON(stratum_to_color_mapping, pretty = TRUE, auto_unbox = TRUE)
crossing_edges_out <- compute_crossing_objective(clus_df_gather_tsp, cols = graphing_columns, wt = "value")
print(crossing_edges_out$output_objective)
## [1] 1
sessionInfo()
## R version 4.5.1 (2025-06-13)
## Platform: aarch64-apple-darwin20
## Running under: macOS Ventura 13.5.2
## 
## Matrix products: default
## BLAS:   /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/lib/libRblas.0.dylib 
## LAPACK: /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/lib/libRlapack.dylib;  LAPACK version 3.12.1
## 
## locale:
## [1] C/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
## 
## time zone: America/Los_Angeles
## tzcode source: internal
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] wompwomp_0.99.0   ggalluvial_0.12.5 ggplot2_4.0.0     dplyr_1.1.4      
## 
## loaded via a namespace (and not attached):
##  [1] gtable_0.3.6       jsonlite_2.0.0     crayon_1.5.3       compiler_4.5.1    
##  [5] tidyselect_1.2.1   stringr_1.5.2      tidyr_1.3.1        jquerylib_0.1.4   
##  [9] scales_1.4.0       yaml_2.3.10        fastmap_1.2.0      R6_2.6.1          
## [13] labeling_0.4.3     generics_0.1.4     igraph_2.2.1       knitr_1.50        
## [17] iterators_1.0.14   tibble_3.3.0       bslib_0.9.0        pillar_1.11.1     
## [21] RColorBrewer_1.1-3 rlang_1.1.6        utf8_1.2.6         stringi_1.8.7     
## [25] cachem_1.1.0       xfun_0.54          sass_0.4.10        S7_0.2.0          
## [29] TSP_1.2-5          cli_3.6.5          withr_3.0.2        magrittr_2.0.4    
## [33] foreach_1.5.2      digest_0.6.37      grid_4.5.1         lifecycle_1.0.4   
## [37] vctrs_0.6.5        evaluate_1.0.5     glue_1.8.0         farver_2.1.2      
## [41] codetools_0.2-20   rmarkdown_2.30     purrr_1.1.0        tools_4.5.1       
## [45] pkgconfig_2.0.3    htmltools_0.5.8.1