get_rank_genes_tables: Catch error if no marker gene is found for group
Due to the filtering it can happen that no genes are found for some groups when running run_rank_genes
.
get_rank_genes does not account for that and throws a KeyError.
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
Cell In[14], line 14
11 _ = pl.rank_genes_plot(adata, key="rank_genes_groups_filtered", n_genes=15,
12 save=f"marker_genes_dotplot_{clust_col}.pdf")
13 # Write marker genes to table
---> 14 marker_tables = tools.get_rank_genes_tables(adata, out_group_fractions=True,
15 key="rank_genes_groups_filtered",
16 save_excel=f"rank_genes_{clust_col}.xlsx")
File /mnt/workspace2/rwiegan/conda_envs/sctoolbox/lib/python3.10/site-packages/sctoolbox/utils/decorator.py:75, in log_anndata.<locals>.wrapper(*args, **kwargs)
72 run_n = len(adata.uns["sctoolbox"]["log"][funcname]) + 1
73 adata.uns["sctoolbox"]["log"][funcname][f"run_{run_n}"] = d
---> 75 return func(*args, **kwargs)
File <@beartype(sctoolbox.tools.marker_genes.get_rank_genes_tables) at 0x7fabf65a1a20>:136, in get_rank_genes_tables(__beartype_func, __beartype_conf, __beartype_get_violation, __beartype_object_94742319277040, __beartype_getrandbits, __beartype_object_140379197551872, *args, **kwargs)
File /mnt/workspace2/rwiegan/conda_envs/sctoolbox/lib/python3.10/site-packages/sctoolbox/tools/marker_genes.py:434, in get_rank_genes_tables(adata, key, n_genes, out_group_fractions, var_columns, save_excel)
431 expressed.columns = ["names", "n_expr"]
433 group_tables[group] = group_tables[group].merge(expressed, left_on="names", right_on="names", how="left")
--> 434 group_tables[group][group + "_fraction"] = group_tables[group]["n_expr"] / n_cells_dict[group]
436 # Fraction of cells for individual groups
437 if out_group_fractions is True:
KeyError: '1'