This is a test version of Biostars. For the public version, visit https://www.biostars.org.
Empty kernel in SEACells model

I am following this tutorial for implementing SEACells and MC2 algorithms.

I run this code :

 adata = sc.read_h5ad('myData.h5ad')

raw_ad = sc.AnnData(adata.X)
raw_ad.obs_names, raw_ad.var_names = adata.obs_names, adata.var_names
adata.raw = raw_ad

# process data with SCANPY
# note that we don't scale the data matrix before PCA. this is how
# they do it in the SEACells tutorial so we do it that way here.
sc.pp.normalize_per_cell(adata)
sc.pp.log1p(adata)
sc.pp.highly_variable_genes(adata, n_top_genes=1500)
sc.tl.pca(adata, n_comps=50, use_highly_variable=True)

##################################################################################
# Running SEACells
##################################################################################

# they recommend one metacell for every 75 real cells
n_SEACells = int(np.floor(adata.obs.shape[0] / 75))

build_kernel_on = 'X_pca' # key in ad.obsm to use for computing metacells
                          # This would be replaced by 'X_svd' for ATAC data

## Additional parameters
n_waypoint_eigs = 10 # Number of eigenvalues to consider when initializing metacells
waypoint_proportion = 0.9 # Proportion of metacells to initialize using waypoint analysis,
                        # the remainder of cells are selected by greedy selection

# set up the model
model = SEACells.core.SEACells(adata,
                  build_kernel_on=build_kernel_on,
                  n_SEACells=n_SEACells,
                  n_waypoint_eigs=n_waypoint_eigs,
                  convergence_epsilon = 1e-5)

But model.K , the kernel, is empty. So, when I run the next line of code model.initialize_archetypes() this is what I get:

    236 """Initialize SEACells using fast greedy adaptive CSSP
    237 
    238 From https://arxiv.org/pdf/1312.6838.pdf
   (...)
    241 :return: B - (array) n_datapoints x n_SEACells matrix with initial SEACell definitions
    242 """
    244 K = self.K
--> 245 n = K.shape[0]
    247 if n_mcs is None:
    248     k = self.k

AttributeError: 'NoneType' object has no attribute 'shape'

How do I fix this? I did some testing, I checked if the PCA data is there, and it seems just fine :

if 'X_pca' in adata.obsm:
    print("PCA data is available.")
    print(adata.obsm['X_pca'].shape)
else:
    print("PCA data is missing.")


PCA data is available.
(258424, 50)
single-cell scanpy seacells python anndata

0 answers

No answers yet.

Log in to answer this question.