# Gallery of mascarade-generaded masks

### Loading necessary libraries

    library(mascarade)
    library(data.table)
    library(ggplot2)
    library(colorrepel)

### PBMC-3K UMAP

    example <- readRDS(url("https://alserglab.wustl.edu/files/mascarade/examples/pbmc3k_umap.rds"))

    data <- data.table(example$dims,
                       cluster=example$clusters)

    maskTable <- generateMask(dims=example$dims,
                              clusters=example$clusters)

    ggplot(data, aes(x=UMAP_1, y=UMAP_2)) +
        geom_point(aes(color=cluster)) +
        geom_path(data=maskTable, aes(group=group)) +
        coord_fixed() +
        theme_classic()

With labels:

    ggplot(data, aes(x=UMAP_1, y=UMAP_2)) +
        geom_point(aes(color=cluster)) +
        fancyMask(maskTable, ratio=1, linewidth = 0) +
        theme_classic() + theme(legend.position = "none")

### PBMC-3K t-SNE

    example <- readRDS(url("https://alserglab.wustl.edu/files/mascarade/examples/pbmc3k_tsne.rds"))

    data <- data.table(example$dims,
                       cluster=example$clusters)

    maskTable <- generateMask(dims=example$dims,
                              clusters=example$clusters)

    ggplot(data, aes(x=tSNE_1, y=tSNE_2)) +
        geom_point(aes(color=cluster)) +
        geom_path(data=maskTable, aes(group=group)) +
        coord_fixed() +
        theme_classic()

With labels:

    ggplot(data, aes(x=tSNE_1, y=tSNE_2)) +
        geom_point(aes(color=cluster)) +
        fancyMask(maskTable, ratio=1, linewidth = 0) +
        theme_classic() + theme(legend.position = "none")

### Aya

    example <- readRDS(url("https://alserglab.wustl.edu/files/mascarade/examples/aya.rds"))

    data <- data.table(example$dims,
                       cluster=example$clusters)

    maskTable <- generateMask(dims=example$dims,
                              clusters=example$clusters)

    ggplot(data, aes(x=UMAP_1, y=UMAP_2)) +
        geom_point(aes(color=cluster), size=0.5) +
        scale_color_repel() +
        geom_path(data=maskTable, aes(group=group)) +
        coord_fixed() +
        theme_classic()

### Chia-Jung

    example <- readRDS(url("https://alserglab.wustl.edu/files/mascarade/examples/chiajung1.rds"))

    data <- data.table(example$dims,
                       cluster=example$clusters)

    maskTable <- generateMask(dims=example$dims,
                              clusters=example$clusters)

    ggplot(data, aes(x=UMAP_1, y=UMAP_2)) +
        geom_point(aes(color=cluster), size=0.1) +
        scale_color_repel() +
        geom_path(data=maskTable, aes(group=group)) +
        coord_fixed() +
        theme_classic()

    example <- readRDS(url("https://alserglab.wustl.edu/files/mascarade/examples/chiajung2.rds"))

    data <- data.table(example$dims,
                       cluster=example$clusters)

    maskTable <- generateMask(dims=example$dims,
                              clusters=example$clusters)

    ggplot(data, aes(x=UMAP_1, y=UMAP_2)) +
        geom_point(aes(color=cluster)) +
        scale_color_repel() +
        geom_path(data=maskTable, aes(group=group)) +
        coord_fixed() +
        theme_classic()

### Vladimir Shitov

Really hard case, so playing with parameters a bit to make more space.

    example <- readRDS(url("https://alserglab.wustl.edu/files/mascarade/examples/vshitov.rds"))

    data <- data.table(example$dims,
                       cluster=example$clusters)

    maskTable <- generateMask(dims=example$dims,
                              clusters=example$clusters)

    ggplot(data, aes(x=UMAP1, y=UMAP2)) +
        geom_point(aes(color=cluster), size=0.1) +
        scale_color_repel() +
        fancyMask(maskTable,
                  con.type = "line", # ledges clutter the image visually here
                  ratio=1,
                  linewidth = 0,
                  limits.expand = c(0.2, 0.1), # more space to the left and right of the plot
                  label.buffer = unit(1, "mm"), # smaller buffer zone around clusters
                  label.width = unit(25, "mm"), # wrap long lines
                  label.margin = margin(1, 1, 1, 1, "pt"), # tighter label margins
                  label.fontsize = 10) +
        theme_classic() + theme(legend.position = "none")

### Session info

    sessionInfo()

    ## R version 4.6.1 (2026-06-24)
    ## Platform: x86_64-pc-linux-gnu
    ## Running under: Ubuntu 24.04.4 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.26.so;  LAPACK version 3.12.0
    ##
    ## locale:
    ##  [1] LC_CTYPE=C.UTF-8       LC_NUMERIC=C           LC_TIME=C.UTF-8
    ##  [4] LC_COLLATE=C           LC_MONETARY=C.UTF-8    LC_MESSAGES=C.UTF-8
    ##  [7] LC_PAPER=C.UTF-8       LC_NAME=C              LC_ADDRESS=C
    ## [10] LC_TELEPHONE=C         LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C
    ##
    ## time zone: UTC
    ## tzcode source: system (glibc)
    ##
    ## attached base packages:
    ## [1] stats     graphics  grDevices utils     datasets  methods   base
    ##
    ## other attached packages:
    ## [1] colorrepel_0.5.0  ggplot2_4.0.3     data.table_1.18.4 mascarade_0.4.3
    ##
    ## loaded via a namespace (and not attached):
    ##  [1] dqrng_0.4.1            sass_0.4.10            generics_0.1.4
    ##  [4] spatstat.explore_3.8-2 gtools_3.9.5           polylabelr_1.0.0
    ##  [7] tensor_1.5.1           distances_0.1.13       spatstat.data_3.1-9
    ## [10] lattice_0.22-9         digest_0.6.39          magrittr_2.0.5
    ## [13] spatstat.utils_3.2-4   evaluate_1.0.5         grid_4.6.1
    ## [16] RColorBrewer_1.1-3     fastmap_1.2.0          jsonlite_2.0.0
    ## [19] Matrix_1.7-5           spatstat.sparse_3.2-0  purrr_1.2.2
    ## [22] scales_1.4.0           tweenr_2.0.3           jquerylib_0.1.4
    ## [25] abind_1.4-8            cli_3.6.6              rlang_1.3.0
    ## [28] polyclip_1.10-7        withr_3.0.3            cachem_1.1.0
    ## [31] yaml_2.3.12            otel_0.2.0             spatstat.univar_3.2-0
    ## [34] tools_4.6.1            deldir_2.0-4           dplyr_1.2.1
    ## [37] spatstat.geom_3.8-2    vctrs_0.7.3            R6_2.6.1
    ## [40] matrixStats_1.5.0      lifecycle_1.0.5        MASS_7.3-65
    ## [43] pkgconfig_2.0.3        pillar_1.11.1          bslib_0.11.0
    ## [46] gtable_0.3.6           glue_1.8.1             Rcpp_1.1.2
    ## [49] systemfonts_1.3.2      ggforce_0.5.0          xfun_0.60
    ## [52] tibble_3.3.1           tidyselect_1.2.1       knitr_1.51
    ## [55] goftest_1.2-3          farver_2.1.2           htmltools_0.5.9
    ## [58] spatstat.random_3.5-1  nlme_3.1-169           labeling_0.4.3
    ## [61] rmarkdown_2.31         compiler_4.6.1         S7_0.2.2