run_rank_genes() : Only works if groupby column is of type categorie.
If the given column is of type str you will get this error message:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
Cell In [10], line 1
----> 1 tl.run_rank_genes(adata, groupby="cluster_mouse")
File /mnt/workspace/rwiegan/conda_envs/sctoolbox/lib/python3.10/site-packages/sctoolbox/utils/decorator.py:73, in log_anndata.<locals>.wrapper(*args, **kwargs)
70 run_n = len(adata.uns["sctoolbox"]["log"][funcname]) + 1
71 adata.uns["sctoolbox"]["log"][funcname][f"run_{run_n}"] = d
---> 73 return func(*args, **kwargs)
.......
File /mnt/workspace/rwiegan/conda_envs/sctoolbox/lib/python3.10/site-packages/pandas/core/arrays/categorical.py:2858, in CategoricalAccessor._validate(data)
2855 @staticmethod
2856 def _validate(data):
2857 if not is_categorical_dtype(data.dtype):
-> 2858 raise AttributeError("Can only use .cat accessor with a 'category' dtype")
AttributeError: Can only use .cat accessor with a 'category' dtype
An easy fix would be to check for the column type and cast as categorie if its not.
if adata.obs[groupby].dtype.name != "category":
adata.obs[groupby] = adata.obs[groupby].astype("category")
Edited by Rene Wiegandt