diff --git a/scanpy_scripts/lib/_pca.py b/scanpy_scripts/lib/_pca.py index 28efc80f..eb58b459 100644 --- a/scanpy_scripts/lib/_pca.py +++ b/scanpy_scripts/lib/_pca.py @@ -4,6 +4,7 @@ import logging import scanpy as sc +import math from ..obj_utils import write_embedding @@ -12,6 +13,10 @@ def pca(adata, key_added=None, export_embedding=None, **kwargs): Wrapper function for sc.pp.pca, for supporting named slot """ + # Check the number of components (n_comps) less than floor(number of genes)/2 + if 'n_comps' in kwargs and kwargs['n_comps'] is not None: + kwargs['n_comps'] = min(math.floor(adata.n_vars/2) -1, kwargs['n_comps']) + # omit "svd_solver" to let scanpy choose automatically if "svd_solver" in kwargs and kwargs["svd_solver"] == "auto": del kwargs["svd_solver"]