Skip to content

Differential Expression

Differential expression (DE) analysis identifies proteins whose abundance changes significantly between experimental conditions. mokume provides three statistical methods, each with distinct strengths.

Overview

Method Model Key Feature Needs Peptide Counts Optional Dep
LimROTS Reproducibility-optimized t-statistic Bootstrap-tuned smoothing No No
DEqMS Empirical Bayes with peptide-count weighting Variance stabilization by spectrum count Yes No
proDA Probabilistic dropout model Dropout-aware likelihood No No

Choosing a Method

graph TD
    A[Start] --> B{Quantification<br/>method?}
    B -->|DirectLFQ| C{Priority?}
    B -->|MaxLFQ / others| D[LimROTS<br/>best AUC, zero FP]
    C -->|Max discovery| E[DEqMS<br/>highest TP, highest F1]
    C -->|Max precision| F[proDA<br/>lowest FP]
    C -->|Balanced| E

--de-method auto

When set to auto (the default), mokume selects DEqMS for DirectLFQ quantification and LimROTS for all other methods. You can always override this with --de-method.

LimROTS

Reproducibility-Optimized Test Statistic (Suomi et al., 2017) uses bootstrapped resampling to find the optimal balance between fold-change and variance in a moderated t-statistic.

$$t_{\text{ROTS}} = \frac{\bar{x}_A - \bar{x}_B}{\alpha_1 + \alpha_2 \cdot s}$$

where $\alpha_1$ and $\alpha_2$ are optimized via bootstrap to maximize reproducibility across resampled datasets.

Strengths:

  • Best overall ranking (highest AUC) on both quantification methods
  • Zero or very low false positives — suitable for confirmatory studies
  • No external dependencies; fully self-contained

Weaknesses:

  • Lower sensitivity than DEqMS — may miss real differential proteins
  • Computationally more expensive due to bootstrap iterations
from mokume.analysis import DifferentialExpression

de = DifferentialExpression(
    method="limrots",
    fdr_method="bh",
    fdr_threshold=0.05,
    log2fc_threshold=0.5,
)

DEqMS

DEqMS (Zhu et al., 2020) extends the limma empirical Bayes framework by weighting variance estimates with peptide/spectrum counts. Proteins quantified from more peptides get tighter variance estimates, boosting statistical power.

$$s^2_{\text{posterior}} = \frac{d_0 s^2_0 + d_i s^2_i}{d_0 + d_i}$$

where $d_0$ and $s^2_0$ are prior degrees of freedom and variance estimated via LOESS regression on peptide counts, and $d_i$, $s^2_i$ are per-protein residual degrees of freedom and variance.

Strengths:

  • Highest sensitivity and F1 score — finds the most true positives
  • Leverages peptide count information for better power
  • Particularly effective with DirectLFQ, which preserves peptide-level detail

Weaknesses:

  • Higher false positive rate than LimROTS or proDA
  • Requires peptide count information (automatically provided by the pipeline)
  • LOESS variance fitting can be unstable on small datasets, falling back to constant variance
from mokume.analysis import DifferentialExpression

de = DifferentialExpression(
    method="deqms",
    peptide_counts=peptide_counts,  # dict: protein -> count
    fdr_method="bh",
    fdr_threshold=0.05,
    log2fc_threshold=0.5,
)

proDA

proDA (Ahlmann-Eltze & Anders, 2020) uses a probabilistic dropout model that treats missing values as informative — proteins below the detection limit are more likely to be missing. This is modeled as a sigmoid dropout curve per sample.

$$P(\text{observed} \mid \mu) = \text{sigmoid}\left(\frac{\mu - \rho}{\zeta}\right)$$

where $\rho$ and $\zeta$ are per-sample dropout midpoint and width parameters estimated from the data.

Strengths:

  • Lowest false positive rate — highest precision
  • Handles missing values probabilistically instead of ignoring or imputing them
  • No external dependencies

Weaknesses:

  • Lowest AUC — weaker overall ranking of proteins
  • More conservative, especially on low fold-change contrasts
  • Dropout model adds computational overhead and may over-regularize on clean datasets with few missing values
from mokume.analysis import DifferentialExpression

de = DifferentialExpression(
    method="proda",
    fdr_method="bh",
    fdr_threshold=0.05,
    log2fc_threshold=0.5,
)

When to use proDA

proDA is most valuable when your protein matrix has >30% missing values and you suspect missingness is abundance-dependent (MNAR). On clean matrices with few missing values, LimROTS or DEqMS will typically outperform.

FDR Correction

All methods produce raw p-values that are corrected for multiple testing. mokume supports two correction methods:

Method Description When to Use
bh Benjamini-Hochberg Default; robust and widely accepted
ihw Independent Hypothesis Weighting When a meaningful covariate exists (e.g., base mean expression)

Info

IHW requires a suitable covariate to improve power over BH. If no covariate is available, mokume falls back to BH automatically.

Benchmark Reference

The following results are from the PXD001819 UPS1 spike-in benchmark (48 UPS1 proteins spiked into yeast lysate, 3 contrasts at FC = 10×, 5×, 2.5×). Values are aggregated across all contrasts. Thresholds: FDR < 0.05, |log2FC| > 1.0.

MaxLFQ (806 proteins)

Method AUC TP FP FN F1
LimROTS+BH 0.992 57 0 12 0.905
DEqMS+BH 0.985 61 1 8 0.933
proDA+BH 0.972 54 0 15 0.878

DirectLFQ (1149 proteins)

Method AUC TP FP FN F1
LimROTS+BH 0.980 75 4 32 0.808
DEqMS+BH 0.969 89 12 18 0.860
proDA+BH 0.956 80 3 27 0.843

Benchmark limitations

These results are from a single spike-in dataset. Performance may vary with different organisms, sample complexity, missing value rates, and experimental designs. Always validate DE results with orthogonal methods.

Practical Guidance

Scenario Recommended Rationale
Exploratory / biomarker discovery DEqMS Maximizes true positives; FP can be filtered by downstream validation
Confirmatory / clinical validation LimROTS Minimizes false positives; every reported hit is reliable
High missing-value matrix (>30%) proDA Dropout model handles MNAR missingness
Don't know / general use auto DEqMS for DirectLFQ, LimROTS for others