New feature: DamageDetective now checks entire clusters for evidence of damage before simulating artificial damage. Clusters are flagged as damaged if their top differentially expressed genes are predominantly mitochondrial. This suggests a lack of true biological signal, a hallmark of heavily damaged cell populations.
Damage score assignment: As a result, cells are now assigned a damage score of 1 if they belong to a cluster identified as likely damaged. Cells not flagged in this way continue to receive a score based on proximity to simulated damaged cells in PC space.
.perturb_cells() function with a C++ implementation to preserve transcript-level sampling while significantly improving runtime. Core functionality remains the same, with the exception of C++-based indexing (0-based vs. 1-based in R).DamageDetective package has been released and is available for