pertpy currently has a very nice implementation of mixscape for binary classification of perturbed vs non-perturbed cells. However, the Satija lab has since published mixscale (Jiang, Dalgarno et al., Nature Cell Biology 2025), which extends this to a continuous perturbation efficiency score per cell rather than a binary KO/NP classification.
mixscale is particularly relevant for CRISPRi screens where cells have a gradient of responses rather than clean KOs. The binary classification in mixscape can misclassify weakly perturbed cells as "non-perturbed" in this scenario.
mixscale is currently only available as an R package, meaning scverse users have no access to it. The existing mxscape implementation in pertpy already calculates perturbation signatures, which is the shared first step. mixscale primarily differs in the scoring/classification step (a scalar projection onto the perturbation vector instead of GMM-based binary classification)
The continuous scores also enable weighted differential expression testing, which Jiang et al show improves statistical power and replication rates over standard unweighted tests.
Having both mixscape and mixscale in pertpy would give users a complete toolkit for QC of both CRISPR-KO and CRISPRi/CRISPRa screens, where continuous scoring is more appropriate.
Key features to consider:
- Continuous perturbation scoring: scalar projection of each cell's perturbation signature onto the estimated perturbation direction vector
- Weighted DE testing: using Mixscale scores as regression weights (wmvReg) to improve power
- Decomposition analysis: multiCCA-based grouping of correlated perturbations into programs
- Program signature extraction: PCA-based permutation test to extract shared gene signatures
At minimum, (1) would already be a significant addition, as it could be integrated into existing pertpy workflows and combined with the Distance/DistanceTest modules for downstream analysis.
pertpy currently has a very nice implementation of mixscape for binary classification of perturbed vs non-perturbed cells. However, the Satija lab has since published mixscale (Jiang, Dalgarno et al., Nature Cell Biology 2025), which extends this to a continuous perturbation efficiency score per cell rather than a binary KO/NP classification.
mixscale is particularly relevant for CRISPRi screens where cells have a gradient of responses rather than clean KOs. The binary classification in mixscape can misclassify weakly perturbed cells as "non-perturbed" in this scenario.
mixscale is currently only available as an R package, meaning scverse users have no access to it. The existing mxscape implementation in pertpy already calculates perturbation signatures, which is the shared first step. mixscale primarily differs in the scoring/classification step (a scalar projection onto the perturbation vector instead of GMM-based binary classification)
The continuous scores also enable weighted differential expression testing, which Jiang et al show improves statistical power and replication rates over standard unweighted tests.
Having both mixscape and mixscale in pertpy would give users a complete toolkit for QC of both CRISPR-KO and CRISPRi/CRISPRa screens, where continuous scoring is more appropriate.
Key features to consider:
At minimum, (1) would already be a significant addition, as it could be integrated into existing pertpy workflows and combined with the Distance/DistanceTest modules for downstream analysis.