Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Scanpy doesn't identify markers in marker genes dict but does as a string #3468

Open
1 of 3 tasks
jcshuy opened this issue Feb 17, 2025 · 0 comments
Open
1 of 3 tasks
Labels
Triage 🩺 This issue needs to be triaged by a maintainer

Comments

@jcshuy
Copy link

jcshuy commented Feb 17, 2025

Please make sure these conditions are met

  • I have checked that this issue has not already been reported.
  • I have confirmed this bug exists on the latest version of scanpy.
  • (optional) I have confirmed this bug exists on the main branch of scanpy.

What happened?

I apologize if this was already reported, I looked through the other issues but I believe I did not see another that asked this same issue.

I am running a POC for using scanpy based workflow over Seurat with larger analyses. I ran the tutorial and then attempted to use my own data. When inputting marker genes in a dict (formatted similarly to marker_genes in the tutorial), the program returns the following error:

KeyError: "Could not find keys '['gene_of_interest']' in columns of `adata.obs` or in adata.var_names."

Where 'gene_of_interest' is some but not all marker genes (I currently don't know what would cause some genes to generate this error and others not have this error).
However, running the command:

sc.pl.dotplot(adata, "gene_of_interest", groupby="[resoluion]", standard_scale="var")

Generates a dotplot where we see the gene does indeed show up in the dataset in certain clusters. This occurs in genes with both low-to-no expression in clusters, as well as high expression in clusters.

Minimal code sample

# Using the data from tutorial:
marker_genes = {
	"Test": ["PDGFRB"]
}
sc.pl.dotplot(adata, marker_genes, groupby="leiden_res_0.50", standard_scale="var")
# KeyError: "Could not find keys '['PDFGRB']' in columns of `adata.obs` or in adata.var_names."

# Workaround:
sc.pl.dotplot(adata, "PDGFRB", groupby="leiden_res_0.50", standard_scale="var")
# Generates correct dotplot showing substancial expression in cluster 9

Error output

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
Cell In[24], [line 2](vscode-notebook-cell:?execution_count=24&line=2)
      [1](vscode-notebook-cell:?execution_count=24&line=1) # sc.pl.dotplot(adata, marker_genes, groupby="leiden_res_0.02", standard_scale="var")
----> [2](vscode-notebook-cell:?execution_count=24&line=2) sc.pl.dotplot(adata, marker_genes, groupby="leiden_res_0.50", standard_scale="var")
      [3](vscode-notebook-cell:?execution_count=24&line=3) # sc.pl.dotplot(adata, "PDGFRB", groupby="leiden_res_0.50", standard_scale="var")

File ~/miniconda3/envs/singlecell/lib/python3.11/site-packages/legacy_api_wrap/__init__.py:82, in legacy_api.<locals>.wrapper.<locals>.fn_compatible(*args_all, **kw)
     [79](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/legacy_api_wrap/__init__.py:79) @wraps(fn)
     [80](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/legacy_api_wrap/__init__.py:80) def fn_compatible(*args_all: P.args, **kw: P.kwargs) -> R:
     [81](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/legacy_api_wrap/__init__.py:81)     if len(args_all) <= n_positional:
---> [82](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/legacy_api_wrap/__init__.py:82)         return fn(*args_all, **kw)
     [84](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/legacy_api_wrap/__init__.py:84)     args_pos: P.args
     [85](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/legacy_api_wrap/__init__.py:85)     args_pos, args_rest = args_all[:n_positional], args_all[n_positional:]

File ~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:991, in dotplot(adata, var_names, groupby, use_raw, log, num_categories, categories_order, expression_cutoff, mean_only_expressed, standard_scale, title, colorbar_title, size_title, figsize, dendrogram, gene_symbols, var_group_positions, var_group_labels, var_group_rotation, layer, swap_axes, dot_color_df, show, save, ax, return_fig, vmin, vmax, vcenter, norm, cmap, dot_max, dot_min, smallest_dot, **kwds)
    [987](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:987) # backwards compatibility: previous version of dotplot used `color_map`
    [988](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:988) # instead of `cmap`
    [989](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:989) cmap = kwds.pop("color_map", cmap)
--> [991](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:991) dp = DotPlot(
    [992](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:992)     adata,
    [993](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:993)     var_names,
    [994](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:994)     groupby,
    [995](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:995)     use_raw=use_raw,
    [996](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:996)     log=log,
    [997](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:997)     num_categories=num_categories,
    [998](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:998)     categories_order=categories_order,
    [999](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:999)     expression_cutoff=expression_cutoff,
   [1000](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:1000)     mean_only_expressed=mean_only_expressed,
   [1001](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:1001)     standard_scale=standard_scale,
   [1002](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:1002)     title=title,
   [1003](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:1003)     figsize=figsize,
   [1004](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:1004)     gene_symbols=gene_symbols,
   [1005](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:1005)     var_group_positions=var_group_positions,
   [1006](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:1006)     var_group_labels=var_group_labels,
   [1007](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:1007)     var_group_rotation=var_group_rotation,
   [1008](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:1008)     layer=layer,
   [1009](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:1009)     dot_color_df=dot_color_df,
   [1010](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:1010)     ax=ax,
   [1011](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:1011)     vmin=vmin,
   [1012](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:1012)     vmax=vmax,
   [1013](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:1013)     vcenter=vcenter,
   [1014](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:1014)     norm=norm,
   [1015](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:1015)     **kwds,
   [1016](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:1016) )
   [1018](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:1018) if dendrogram:
   [1019](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:1019)     dp.add_dendrogram(dendrogram_key=_dk(dendrogram))

File ~/miniconda3/envs/singlecell/lib/python3.11/site-packages/legacy_api_wrap/__init__.py:82, in legacy_api.<locals>.wrapper.<locals>.fn_compatible(*args_all, **kw)
     [79](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/legacy_api_wrap/__init__.py:79) @wraps(fn)
     [80](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/legacy_api_wrap/__init__.py:80) def fn_compatible(*args_all: P.args, **kw: P.kwargs) -> R:
     [81](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/legacy_api_wrap/__init__.py:81)     if len(args_all) <= n_positional:
---> [82](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/legacy_api_wrap/__init__.py:82)         return fn(*args_all, **kw)
     [84](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/legacy_api_wrap/__init__.py:84)     args_pos: P.args
     [85](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/legacy_api_wrap/__init__.py:85)     args_pos, args_rest = args_all[:n_positional], args_all[n_positional:]

File ~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:168, in DotPlot.__init__(self, adata, var_names, groupby, use_raw, log, num_categories, categories_order, title, figsize, gene_symbols, var_group_positions, var_group_labels, var_group_rotation, layer, expression_cutoff, mean_only_expressed, standard_scale, dot_color_df, dot_size_df, ax, vmin, vmax, vcenter, norm, **kwds)
    [116](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:116) @old_positionals(
    [117](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:117)     "use_raw",
    [118](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:118)     "log",
   (...)
    [166](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:166)     **kwds,
    [167](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:167) ) -> None:
--> [168](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:168)     BasePlot.__init__(
    [169](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:169)         self,
    [170](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:170)         adata,
    [171](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:171)         var_names,
    [172](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:172)         groupby,
    [173](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:173)         use_raw=use_raw,
    [174](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:174)         log=log,
    [175](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:175)         num_categories=num_categories,
    [176](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:176)         categories_order=categories_order,
    [177](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:177)         title=title,
    [178](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:178)         figsize=figsize,
    [179](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:179)         gene_symbols=gene_symbols,
    [180](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:180)         var_group_positions=var_group_positions,
    [181](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:181)         var_group_labels=var_group_labels,
    [182](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:182)         var_group_rotation=var_group_rotation,
    [183](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:183)         layer=layer,
    [184](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:184)         ax=ax,
    [185](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:185)         vmin=vmin,
    [186](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:186)         vmax=vmax,
    [187](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:187)         vcenter=vcenter,
    [188](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:188)         norm=norm,
    [189](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:189)         **kwds,
    [190](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:190)     )
    [192](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:192)     # for if category defined by groupby (if any) compute for each var_name
    [193](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:193)     # 1. the fraction of cells in the category having a value >expression_cutoff
    [194](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:194)     # 2. the mean value over the category
    [195](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:195) 
    [196](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:196)     # 1. compute fraction of cells having value > expression_cutoff
    [197](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:197)     # transform obs_tidy into boolean matrix using the expression_cutoff
    [198](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_dotplot.py:198)     obs_bool = self.obs_tidy > expression_cutoff

File ~/miniconda3/envs/singlecell/lib/python3.11/site-packages/legacy_api_wrap/__init__.py:82, in legacy_api.<locals>.wrapper.<locals>.fn_compatible(*args_all, **kw)
     [79](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/legacy_api_wrap/__init__.py:79) @wraps(fn)
     [80](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/legacy_api_wrap/__init__.py:80) def fn_compatible(*args_all: P.args, **kw: P.kwargs) -> R:
     [81](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/legacy_api_wrap/__init__.py:81)     if len(args_all) <= n_positional:
---> [82](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/legacy_api_wrap/__init__.py:82)         return fn(*args_all, **kw)
     [84](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/legacy_api_wrap/__init__.py:84)     args_pos: P.args
     [85](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/legacy_api_wrap/__init__.py:85)     args_pos, args_rest = args_all[:n_positional], args_all[n_positional:]

File ~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_baseplot_class.py:144, in BasePlot.__init__(self, adata, var_names, groupby, use_raw, log, num_categories, categories_order, title, figsize, gene_symbols, var_group_positions, var_group_labels, var_group_rotation, layer, ax, vmin, vmax, vcenter, norm, **kwds)
    [138](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_baseplot_class.py:138) self.has_var_groups = (
    [139](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_baseplot_class.py:139)     var_group_positions is not None and len(var_group_positions) > 0
    [140](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_baseplot_class.py:140) )
    [142](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_baseplot_class.py:142) self._update_var_groups()
--> [144](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_baseplot_class.py:144) self.categories, self.obs_tidy = _prepare_dataframe(
    [145](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_baseplot_class.py:145)     adata,
    [146](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_baseplot_class.py:146)     self.var_names,
    [147](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_baseplot_class.py:147)     groupby,
    [148](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_baseplot_class.py:148)     use_raw=use_raw,
    [149](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_baseplot_class.py:149)     log=log,
    [150](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_baseplot_class.py:150)     num_categories=num_categories,
    [151](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_baseplot_class.py:151)     layer=layer,
    [152](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_baseplot_class.py:152)     gene_symbols=gene_symbols,
    [153](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_baseplot_class.py:153) )
    [154](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_baseplot_class.py:154) if len(self.categories) > self.MAX_NUM_CATEGORIES:
    [155](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_baseplot_class.py:155)     warn(
    [156](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_baseplot_class.py:156)         f"Over {self.MAX_NUM_CATEGORIES} categories found. "
    [157](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_baseplot_class.py:157)         "Plot would be very large."
    [158](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_baseplot_class.py:158)     )

File ~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_anndata.py:2073, in _prepare_dataframe(adata, var_names, groupby, use_raw, log, num_categories, layer, gene_symbols)
   [2071](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_anndata.py:2071)     groupby.remove(groupby_index)
   [2072](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_anndata.py:2072) keys = list(groupby) + list(np.unique(var_names))
-> [2073](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_anndata.py:2073) obs_tidy = get.obs_df(
   [2074](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_anndata.py:2074)     adata, keys=keys, layer=layer, use_raw=use_raw, gene_symbols=gene_symbols
   [2075](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_anndata.py:2075) )
   [2076](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_anndata.py:2076) assert np.all(np.array(keys) == np.array(obs_tidy.columns))
   [2078](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_anndata.py:2078) if groupby_index is not None:
   [2079](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/plotting/_anndata.py:2079)     # reset index to treat all columns the same way.

File ~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/get/get.py:292, in obs_df(adata, keys, obsm_keys, layer, gene_symbols, use_raw)
    [289](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/get/get.py:289)     var = adata.var
    [290](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/get/get.py:290) alias_index = pd.Index(var[gene_symbols]) if gene_symbols is not None else None
--> [292](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/get/get.py:292) obs_cols, var_idx_keys, var_symbols = _check_indices(
    [293](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/get/get.py:293)     adata.obs,
    [294](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/get/get.py:294)     var.index,
    [295](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/get/get.py:295)     dim="obs",
    [296](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/get/get.py:296)     keys=keys,
    [297](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/get/get.py:297)     alias_index=alias_index,
    [298](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/get/get.py:298)     use_raw=use_raw,
    [299](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/get/get.py:299) )
    [301](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/get/get.py:301) # Make df
    [302](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/get/get.py:302) df = pd.DataFrame(index=adata.obs_names)

File ~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/get/get.py:183, in _check_indices(dim_df, alt_index, dim, keys, alias_index, use_raw)
    [181](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/get/get.py:181)         not_found.append(key)
    [182](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/get/get.py:182) if len(not_found) > 0:
--> [183](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/get/get.py:183)     raise KeyError(
    [184](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/get/get.py:184)         f"Could not find keys '{not_found}' in columns of `adata.{dim}` or in"
    [185](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/get/get.py:185)         f" {alt_repr}.{alt_search_repr}."
    [186](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/get/get.py:186)     )
    [188](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/~/miniconda3/envs/singlecell/lib/python3.11/site-packages/scanpy/get/get.py:188) return col_keys, index_keys, index_aliases

KeyError: "Could not find keys '['PDFGRB']' in columns of `adata.obs` or in adata.var_names."

Versions

-----
anndata     0.11.3
scanpy      1.10.4
-----
CoreFoundation              NA
Foundation                  NA
PIL                         11.1.0
PyObjCTools                 NA
anyio                       NA
appnope                     0.1.4
arrow                       1.3.0
asttokens                   NA
attr                        25.1.0
attrs                       25.1.0
babel                       2.17.0
backports                   NA
brotli                      1.1.0
certifi                     2024.12.14
cffi                        1.17.1
charset_normalizer          3.4.1
cloudpickle                 3.1.1
colorama                    0.4.6
comm                        0.2.2
cycler                      0.12.0
cython_runtime              NA
cytoolz                     1.0.1
dask                        2023.4.1
dateutil                    2.9.0.post0
debugpy                     1.8.12
decorator                   5.1.1
defusedxml                  0.7.1
dill                        0.3.9
executing                   2.1.0
fastjsonschema              NA
fqdn                        NA
h5py                        3.12.1
idna                        3.10
igraph                      0.11.8
ipykernel                   6.29.5
ipywidgets                  8.1.5
isoduration                 NA
jaraco                      NA
jedi                        0.19.2
jinja2                      3.1.5
joblib                      1.4.2
json5                       0.10.0
jsonpointer                 3.0.0
jsonschema                  4.23.0
jsonschema_specifications   NA
jupyter_events              0.12.0
jupyter_server              2.15.0
jupyterlab_server           2.27.3
kiwisolver                  1.4.5
lazy_loader                 0.4
legacy_api_wrap             NA
leidenalg                   0.10.2
llvmlite                    0.43.0
louvain                     0.8.2
lz4                         4.3.3
markupsafe                  3.0.2
matplotlib                  3.8.0
matplotlib_inline           0.1.7
more_itertools              10.3.0
mpl_toolkits                NA
natsort                     8.4.0
nbformat                    5.10.4
numba                       0.60.0
numexpr                     2.10.2
numpy                       1.23.5
objc                        11.0
overrides                   NA
packaging                   24.2
pandas                      2.2.3
parso                       0.8.4
patsy                       1.0.1
pickleshare                 0.7.5
pkg_resources               NA
platformdirs                4.3.6
pooch                       v1.8.2
prometheus_client           NA
prompt_toolkit              3.0.50
psutil                      6.1.1
pure_eval                   0.2.3
pyarrow                     18.1.0
pycparser                   2.22
pydev_ipython               NA
pydevconsole                NA
pydevd                      3.2.3
pydevd_file_utils           NA
pydevd_plugins              NA
pydevd_tracing              NA
pygments                    2.19.1
pynndescent                 0.5.13
pyparsing                   3.1.1
pythonjsonlogger            NA
pytz                        2024.1
referencing                 NA
requests                    2.32.3
rfc3339_validator           0.1.4
rfc3986_validator           0.1.1
rpds                        NA
scipy                       1.15.1
seaborn                     0.13.2
send2trash                  NA
session_info                1.0.0
six                         1.17.0
skimage                     0.25.0
sklearn                     1.6.1
sniffio                     1.3.1
socks                       1.7.1
sparse                      0.15.5
stack_data                  0.6.3
statsmodels                 0.14.4
tblib                       3.0.0
texttable                   1.7.0
threadpoolctl               3.5.0
tlz                         1.0.1
toolz                       1.0.0
torch                       2.5.1.post7
torchgen                    NA
tornado                     6.4.2
tqdm                        4.67.1
traitlets                   5.14.3
typing_extensions           NA
umap                        0.5.7
uri_template                NA
urllib3                     2.3.0
vscode                      NA
wcwidth                     0.2.13
webcolors                   NA
websocket                   1.8.0
yaml                        6.0.2
zipp                        NA
zmq                         26.2.1
zoneinfo                    NA
zstandard                   0.23.0
-----
IPython             8.32.0
jupyter_client      8.6.3
jupyter_core        5.7.2
jupyterlab          4.3.5
notebook            7.3.2
-----
Python 3.11.11 | packaged by conda-forge | (main, Dec  5 2024, 14:21:42) [Clang 18.1.8 ]
macOS-15.3-arm64-arm-64bit
-----
Session information updated at 2025-02-17 11:25
[/Users/jcshuy/miniconda3/envs/singlecell/lib/python3.11/site-packages/session_info/main.py:213](https://file+.vscode-resource.vscode-cdn.net/Users/jcshuy/miniconda3/envs/singlecell/lib/python3.11/site-packages/session_info/main.py:213): UserWarning: The '__version__' attribute is deprecated and will be removed in MarkupSafe 3.1. Use feature detection, or `importlib.metadata.version("markupsafe")`, instead.
  mod_version = _find_version(mod.__version__)
@jcshuy jcshuy added the Triage 🩺 This issue needs to be triaged by a maintainer label Feb 17, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Triage 🩺 This issue needs to be triaged by a maintainer
Projects
None yet
Development

No branches or pull requests

1 participant