Power analysis for CyTOF experiments

Introduction

Mass Spectrometry (or CyTOF) is a single cell technology. It measures up to 50 protein markers on a single cell. The markers are antibodies labeled with stable isotopes and they might be markers of cell types or phenotypes.

CyTOF might be used to determine if there is any differences in cell abundances (type markers) or cell phenotypes (state markers) between two experimental conditions. In this package, we are proposing a tool to predict the power of a differential state test analysis.

Two packages are available on Bioconductor to perform differential state test analyses: CytoGLMM (Seiler 2020) and diffcyt (Weber 2019). These models are available in this package and their results, the adjusted p-value per marker, are used to compute the power an experiment.

Simulate in-silico data

In-silico CyTOF data are simulated using the following data generation process. We assumed two conditions for which one condition is the baseline (i.e. a control condition where no marker is different from the other) and the other condition contains some signals (i.e. at least one marker is differentially expressed). The parameters are defined as follow:

  • the number of donors: the design of the data is paired, so the number of samples will be calculated accordingly, i.e. twice the number of donors;
  • the subject effect: it defines how much the donors are different from each others;
  • the number of cells per samples;
  • the total number of markers tested in the experiment;
  • the fold change of each differentially expressed marker: it represents how much different the marker is expected to be in comparison to the control condition. The mean of these markers will be multiplied by in the condition containing the differentially expressed markers;
  • the distribution parameters for each marker: see details below.

The cell value’s mean of each marker is drawn from a Gamma distribution: μ0, ij ∼ Γ(k, θ) where i the donor, j the marker, k the shape and θ the scale. These two last parameters are defined using the parameters provided by the user:

  • cell value mean μ0 in the control condition: with μ0 = k ⋅ θ > 0;
  • subject effect S: $S = \sqrt{k \cdot \theta^{2}}$.

The cell value mean of the differentially expressed marker(s) is then multiplied by the fold change defined earlier: μ1, ij = μ0, ij ⋅ ρj.

The cell values are drawn using a Negative Binomial:

  • for non-differentially expressed markers: Xij ∼ NB(μ0, ij, σ)
  • for differentially expressed markers: Xij ∼ NB(μ1, ij, σ)

Some of these parameters might need to be estimated using previous data or publicly available datasets. For instance, the dispersion and mean parameters of the negative binomial distribution might be estimated using fitdistr from the MASS package for each marker.

Power computation

The power is computed for the differentially expressed marker(s) (i.e. fold change different from 1). It is based on the adjusted p-values reported by the models: counting how many times the null hypothesis is correctly rejected. It is also important to note that the power returned by these computations uses the threshold of α = 0.05 as a significance level.

Shiny app

The shiny app is divided into two tabs: (1) the precomputed dataset tab: the power was pre-computed for multiple combinations of parameters and the user is able to search this grid of parameters; (2) the personalized dataset tab: the data and the power is computed on request based on the parameters chosen by the user.

Precomputed dataset

This panel allows the user to search a grid of parameters that have been pre-computed. The value “NA” displays a power curve for the different values of this parameter.

The available parameters that the user can choose from are the following:

  • The number of donors;
  • The subject effect;
  • The number of cells per sample;
  • The total number of markers;
  • The marker’s Fold Change (FC): 1.1, 1.2, 1.3, 1.5, 1.8, 2, 3;
  • The mean of the Negative Binomial for the marker that is considered;
  • The dispersion of the Negative Binomial for the marker that is considered;
  • Models to run: CytoGLMM - GLMM; diffcyt - limma with fixed effect; diffcyt - limma with random effect; diffcyt - lme4.

Personalized dataset

This panel allows the user to compute the power for a chosen set of parameters. The data are generated on request and it takes some time to get the results, especially if the user would like to perform a high number of simulations with a high number of cells.

The available parameters that the user can choose from are the following:

  • The number of donors: at least 3 donors;
  • The subject effect that must be different from 0;
  • The number of cells per sample (minimum 10 cells);
  • The total number of markers (minimum 3 markers);
  • For each marker: the fold change, the mean and the dispersion have to be specified in the matrix;
  • Model to run: CytoGLMM - GLMM; diffcyt - limma with fixed effect; diffcyt - limma with random effect; diffcyt - lme4;
  • The number of simulations: we recommend at least 10 simulations.

Run the app

The shiny app is run locally by calling the following function:

library(CyTOFpower)
CyTOFpower()

Session information

sessionInfo()
#> R version 4.4.2 (2024-10-31)
#> Platform: x86_64-pc-linux-gnu
#> Running under: Ubuntu 24.04.1 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=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       
#> 
#> time zone: Etc/UTC
#> tzcode source: system (glibc)
#> 
#> attached base packages:
#> [1] stats     graphics  grDevices utils     datasets  methods   base     
#> 
#> other attached packages:
#> [1] BiocStyle_2.35.0
#> 
#> loaded via a namespace (and not attached):
#>  [1] digest_0.6.37       R6_2.5.1            fastmap_1.2.0      
#>  [4] xfun_0.49           maketools_1.3.1     cachem_1.1.0       
#>  [7] knitr_1.49          htmltools_0.5.8.1   rmarkdown_2.29     
#> [10] buildtools_1.0.0    lifecycle_1.0.4     cli_3.6.3          
#> [13] sass_0.4.9          jquerylib_0.1.4     compiler_4.4.2     
#> [16] sys_3.4.3           tools_4.4.2         evaluate_1.0.1     
#> [19] bslib_0.8.0         yaml_2.3.10         BiocManager_1.30.25
#> [22] jsonlite_1.8.9      rlang_1.1.4

References

Seiler, Ferreira, C. 2020. “CytoGLMM: Conditional Differential Analysis for Flow and Mass Cytometry Experiments.” BMC Bioinformatics.
Weber, Nowicka, L. M. 2019. “Diffcyt: Differential Discovery in High-Dimensional Cytometry via High-Resolution Clustering.” Communication Biology.