9 Cell Filtering

9.1 Threshold-based cell filtering

Filter out low-quality cells based on the QC metrics inspected in the previous chapters. The thresholds applied are:

  • percent.mt < 30 — remove cells with high mitochondrial content indicative of damage
  • nFeature_ATAC > 1000 — remove cells with very few accessible peaks (poor ATAC library)
  • nFeature_ATAC < 50000 — remove potential doublets with inflated peak counts
  • TSS.enrichment > 1 — retain only cells with meaningful enrichment at regulatory elements
  • nucleosome_signal < 2 — remove cells with a high proportion of nucleosomal fragments

Doublets and unassigned cells from the SNP demultiplexing are also removed.

combined <- subset(combined,
  subset =
    percent.mt        < 30    &
    nFeature_ATAC     > 1000  &
    nFeature_ATAC     < 50000 &
    TSS.enrichment    > 1     &
    nucleosome_signal < 2
)

# remove doublets and unassigned cells from demultiplexing
combined <- combined[, !combined$donor_id %in% c('doublet', 'unassigned', 'NA',NA)]

table(combined@meta.data$donor_id, useNA = "always")
#> 
#> donor0 donor1   <NA> 
#>   2498   2000      0
table(combined@meta.data$sample_donor,useNA = "always")
#> 
#> Sample_B_donor0 Sample_B_donor1 Sample_C_donor0 
#>             576             703            1413 
#> Sample_C_donor1 Sample_D_donor0 Sample_D_donor1 
#>             391             509             906 
#>            <NA> 
#>               0

9.2 Save merged object

SaveSeuratRds(combined, "data/seurat_object_donor_assigned.rds")