I am working with a rice single-cell multi-omics dataset (scRNA-seq and scATAC-seq) (link_paper: https://doi.org/10.1038/s41586-025-09251-0)
The dataset features are
Cells Total_Genes Total_Peaks Cell types
115395 37960 82219 32
Since the complete dataset is bigger in size, I am planning to work with tissues. The tissue-wise data characteristics are:
Dataset Tissue Modality Cells Sparsity Total_features Groups
Full Bud RNA 8858 0.9642 37960 8
Full Bud ATAC 8858 0.9714 82219 8
Full Flag RNA 4394 0.9754 37960 5
Full Flag ATAC 4394 0.9457 82219 5
Full leaf RNA 13771 0.9743 37960 6
Full leaf ATAC 13771 0.9778 82219 6
Full Root RNA 31108 0.9576 37960 9
Full Root ATAC 31108 0.9844 82219 9
Full SAM RNA 13791 0.9634 37960 7
Full SAM ATAC 13791 0.9827 82219 7
Full Seed RNA 6276 0.9831 37960 5
Full Seed ATAC 6276 0.9747 82219 5
Full SP RNA 17457 0.9696 37960 10
Full SP ATAC 17457 0.9738 82219 10
Full ST RNA 19740 0.9713 37960 6
Full ST ATAC 19740 0.9777 82219 6
Is anyone help me to filter the features of genes, peaks, and cell numbers into minimum values (probably 3000-6000 genes, 6000-18000 peaks, and <20000 cells)? Can I go with highly variable features of genes and peaks?
With this feature extracted dataset, I will go for further downstream analysis. So, this feature extraction step is very necessary and also, I cannot go with bigger size dataset due to computational complexity of many models and hardware limitations.
Thanks in advance.
1 answer
HVGs are fine for the RNA side. 3000 is a normal choice, Seurat defaults to 2000.
For ATAC I wouldn't use variable features though. Peak counts are close to binary, so mean and variance are tightly coupled and "highly variable" doesn't mean what it means for expression. The usual approach there is frequency-based -- keep peaks accessible in at least some fraction of cells, which in Signac is FindTopFeatures(min.cutoff = 'q5') or similar. Worth knowing that the standard LSI workflow (RunTFIDF then FindTopFeatures then RunSVD) already downweights ubiquitous peaks, so plenty of people don't do aggressive peak selection at all.
For cells, sample stratified by cell type rather than at random. You have 32 types across the full data and some of them will be rare, so uniform downsampling will quietly delete them. A fixed number per type with a floor tends to work better than proportional sampling if the rare populations matter to you.
One thing to be careful about: use the selected features for dimensionality reduction and clustering, but don't carry the subset into differential expression or marker identification. Testing only genes you picked for being variable is a selection bias and it inflates what comes out the other end.
Also worth checking whether you need to cut this hard at all. Per tissue, 8858 cells x 37960 genes at 96% sparsity is a fairly small sparse matrix. If something is blowing up your memory it's often an operation quietly densifying the matrix rather than the data size itself -- worth profiling before you throw away features.
Log in to answer this question.