Last updated: 2024-01-31

Checks: 6 1

Knit directory: SuperCellCyto-analysis/

This reproducible R Markdown analysis was created with workflowr (version 1.7.0). The Checks tab describes the reproducibility checks that were applied when the results were created. The Past versions tab lists the development history.

The R Markdown file has unstaged changes. To know which version of the R Markdown file created these results, you’ll want to first commit it to the Git repo. If you’re still working on the analysis, you can ignore this warning. When you’re finished, you can run wflow_publish to commit the R Markdown file and build the HTML.

Great job! The global environment was empty. Objects defined in the global environment can affect the analysis in your R Markdown file in unknown ways. For reproduciblity it’s best to always run the code in an empty environment.

The command set.seed(42) was run prior to running the code in the R Markdown file. Setting a seed ensures that any results that rely on randomness, e.g. subsampling or permutations, are reproducible.

Great job! Recording the operating system, R version, and package versions is critical for reproducibility.

Nice! There were no cached chunks for this analysis, so you can be confident that you successfully produced the results during this run.

Great job! Using relative paths to the files within your workflowr project makes it easier to run your code on other machines.

Great! You are using Git for version control. Tracking code development and connecting the code version to the results is critical for reproducibility.

The results in this page were generated with repository version 264aa64. See the Past versions tab to see a history of the changes made to the R Markdown and HTML files.

Note that you need to be careful to ensure that all relevant files for the analysis have been committed to Git prior to generating the results (you can use wflow_publish or wflow_git_commit). workflowr only checks the R Markdown file, but you know if there are other scripts or data files that it depends on. Below is the status of the Git repository when the results were generated:

Ignored files:
    Ignored:    .DS_Store
    Ignored:    .Rhistory
    Ignored:    .Rproj.user/
    Ignored:    analysis/.DS_Store
    Ignored:    code/.DS_Store
    Ignored:    code/b_cell_identification/.DS_Store
    Ignored:    code/b_cell_identification/runtime_benchmark/.DS_Store
    Ignored:    code/batch_correction/.DS_Store
    Ignored:    code/batch_correction/runtime_benchmark/.DS_Store
    Ignored:    code/explore_supercell_purity_clustering/.DS_Store
    Ignored:    code/explore_supercell_purity_clustering/functions/.DS_Store
    Ignored:    code/explore_supercell_purity_clustering/louvain_all_cells/.DS_Store
    Ignored:    code/explore_supercell_purity_clustering/louvain_all_cells/levine_32dim/.DS_Store
    Ignored:    code/label_transfer/.DS_Store
    Ignored:    code/label_transfer/.Rhistory
    Ignored:    data/.DS_Store
    Ignored:    data/bodenmiller_cytof/
    Ignored:    data/explore_supercell_purity_clustering/
    Ignored:    data/haas_bm/
    Ignored:    data/oetjen_bm_dataset/
    Ignored:    data/trussart_cytofruv/
    Ignored:    output/.DS_Store
    Ignored:    output/bodenmiller_cytof/
    Ignored:    output/explore_supercell_purity_clustering/
    Ignored:    output/label_transfer/
    Ignored:    output/oetjen_b_cell_panel/
    Ignored:    output/trussart_cytofruv/

Untracked files:
    Untracked:  code/b_cell_identification/additional_code/
    Untracked:  code/batch_correction/additional_code/
    Untracked:  code/explore_supercell_purity_clustering/additional_code/
    Untracked:  code/label_transfer/additional_code/

Unstaged changes:
    Modified:   SuperCellCyto-analysis.Rproj
    Modified:   analysis/b_cells_identification.Rmd
    Modified:   analysis/batch_correction.Rmd
    Modified:   analysis/explore_supercell_purity_clustering.Rmd
    Modified:   analysis/index.Rmd

Note that any generated files, e.g. HTML, png, CSS, etc., are not included in this status report because it is ok for generated content to have uncommitted changes.

These are the previous versions of the repository in which changes were made to the R Markdown (analysis/index.Rmd) and HTML (docs/index.html) files. If you’ve configured a remote Git repository (see ?wflow_git_remote), click on the hyperlinks in the table below to view the files as they were in that past version.

File Version Author Date Message
html 98e46e0 Givanna Putri 2023-08-15 Build site.
html a55c3ba Givanna Putri 2023-07-28 Build site.
html 366514e Givanna Putri 2023-07-28 Build site.
Rmd 402358b Givanna Putri 2023-07-28 wflow_publish(c("analysis/*Rmd"))
Rmd aeae8b0 Givanna Putri 2023-07-28 Start workflowr project.


The rapid advancements in cytometry technologies have enabled the quantification of up to 50 proteins across millions of cells at a single-cell resolution. The analysis of cytometry data necessitates the use of computational tools for tasks such as data integration, clustering, and dimensionality reduction. While numerous computational methods exist in the cytometry and single-cell RNA sequencing (scRNAseq) fields, many are hindered by extensive run times when processing large cytometry data containing millions of cells. Existing solutions, such as random subsampling, often prove inadequate as they risk excluding small, rare cell subsets. To address this, we propose a practical strategy that builds on the SuperCell framework from the scRNAseq field. The supercell concept involves grouping single cells with highly similar transcriptomic profiles, and has been shown to be an effective unit of analysis for scRNAseq data. We show that for cytometry datasets, there is no loss of information by grouping cells into supercells. Further, we demonstrate the effectiveness of our approach by conducting a series of downstream analyses on six publicly available cytometry datasets at the supercell level, and successfully replicating previous findings performed at the single cell level. We present a computationally efficient solution for transferring cell type labels from single-cell multiomics data which combines RNA with protein measurements, to a cytometry dataset, allowing for more precise cell type annotations. Our SuperCellCyto R package and the associated analysis workflows are available on our GitHub repositories ( and


Givanna H. Putri1, George Howitt2, Felix Marsh-Wakefield3, Thomas Ashhurst4, Belinda Phipson1

1 The Walter and Eliza Hall Institute of Medical Research, Parkville, VIC, Australia

2 Peter MacCallum Cancer Centre and The Sir Peter MacCallum Department of Oncology, The University of Melbourne, Parkville, VIC, Australia

3 Centenary Institute of Cancer Medicine and Cell Biology, Sydney, NSW, Australia

4 Sydney Cytometry Core Research Facility and School of Medical Sciences, The University of Sydney, Sydney, NSW, Australia


31st Jan 2023: Extra analyses were done to address reviewers’ comments. Code used to perform the extra analyses are available on the code directory of this website’s Github repository.

Extra analyses done and corresponding codes:

  1. For Supercells Preserve Biological Heterogeneity and Facilitate Efficient Cell Type Identification. Codes are stored in code/explore_supercell_purity_clustering/additional_code.
    • count_cell_type_per_supercell.R: counted how many cell types were captured per supercell and illustrated that as bar chart.
    • draw_purity_table.R: stratify the purity scores and compute how many supercells obtained purity of 1, 0.9-1, 0.5-0.9, <0.5.
    • plot_supercell_size_distribution.R: illustrate the number of cells captured per supercell.
    • randomly_group_cells.R: randomly group cells into groups which total number matches the number of supercells generated, and calculate base purity score.
  2. For Supercells Combined with Clustering Can Identify Rare B Cell Subsets. Codes are stored in code/b_cell_identification/additional_code.
    • analyse_subsampled_data.R: randomly subsampled over 400k cells, clustered them, and attempted to identify the B cell subsets.
  3. For Mitigating Batch Effects in the Integration of Multi-Batch Cytometry Data at the Supercell Level. Codes are stored in code/batch_correction/additional_code.
    • calculate_scib_metrics_for_submission.ipynb: python notebook for computing biological signal preservation metrics in scib package.
    • cluster_supercells.R: cluster the supercells before and after batch correction. Needed for computing the biological signal preservation metrics.
    • create_h5ad_files.ipynb: convert the output of the clustered supercelsl to h5ad file. Needed for computing the biological signal preservation metrics.
    • plot_metrics.R: plot the heatmap to illustrate the scores for biological signal preservation metrics.
  4. For Efficient Cell Type Label Transfer Between CITEseq and Cytometry Data. Codes are stored in code/label_transfer/additional_code.
    • calculate_weighted_accuracy.ipynb: python notebook to compute weighted accuracy.
    • check_subsets.R: plotting the UMAP of the CITEseq annotations (original and mapped).
    • confusion_matrix.R: for drawing confusion matrices.
    • draw_umap.R: draw UMAP for the outcome of the label transfer.
    • plot_accuracies.R: plot charts for the accuracy scores.

R version 4.2.3 (2023-03-15)
Platform: aarch64-apple-darwin20 (64-bit)
Running under: macOS 14.0

Matrix products: default
BLAS:   /Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/lib/libRlapack.dylib

[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] workflowr_1.7.0

loaded via a namespace (and not attached):
 [1] Rcpp_1.0.10      compiler_4.2.3   pillar_1.8.1     bslib_0.4.2     
 [5] later_1.3.0      git2r_0.31.0     jquerylib_0.1.4  tools_4.2.3     
 [9] getPass_0.2-2    digest_0.6.31    jsonlite_1.8.4   evaluate_0.20   
[13] lifecycle_1.0.3  tibble_3.1.8     pkgconfig_2.0.3  rlang_1.0.6     
[17] cli_3.6.1        rstudioapi_0.14  yaml_2.3.7       xfun_0.39       
[21] fastmap_1.1.0    httr_1.4.4       stringr_1.5.0    knitr_1.42      
[25] fs_1.6.1         vctrs_0.5.2      sass_0.4.5       rprojroot_2.0.3 
[29] glue_1.6.2       R6_2.5.1         processx_3.8.0   fansi_1.0.4     
[33] rmarkdown_2.20   callr_3.7.3      magrittr_2.0.3   whisker_0.4.1   
[37] ps_1.7.2         promises_1.2.0.1 htmltools_0.5.4  httpuv_1.6.9    
[41] utf8_1.2.3       stringi_1.7.12   cachem_1.0.6