scverse / scverse/squidpy

Invalid RGBA argument when use sq.pl.co_occurrence

Open
#855 1 comment 0 reactions 1 assignee View on GitHub

@giovp is already working on this.

Since Jul 23, 2024.

plot :hibiscus:
Dominant language
Python
Stars
598
Forks
121
Avg merge
3d 11h
Merged PRs (30d)
3

Description

When I used squidpy to draw Co-occurrence figure:

sq.gr.spatial_neighbors(adata)
sq.gr.nhood_enrichment(adata, cluster_key="Level1_Filt")
sq.pl.nhood_enrichment(adata, cluster_key="Level1_Filt",palette = 'tab20')
sq.gr.co_occurrence(adata, cluster_key="Level1_Filt")
sq.pl.co_occurrence(
adata,
cluster_key="Level1_Filt",
clusters="B",
figsize=(8, 4),
)

I got this error:

ValueError Traceback (most recent call last)
Cell In[115], line 1
----> 1 sq.pl.co_occurrence(
2 adata,
3 cluster_key="Level1_Filt",
4 clusters="B",
5 figsize=(8, 4),
6 )

File /squidpy/lib/python3.10/site-packages/squidpy/pl/_graph.py:365, in co_occurrence(adata, cluster_key, palette, clusters, figsize, dpi, save, legend_kwargs, **kwargs)
362 clusters = _assert_non_empty_sequence(clusters, name="clusters")
363 clusters = sorted(_get_valid_values(clusters, categories))
--> 365 palette = _get_palette(adata, cluster_key=cluster_key, categories=categories, palette=palette)
367 fig, axs = plt.subplots(
368 1,
369 len(clusters),
(...)
372 constrained_layout=True,
373 )
374 axs = np.ravel(axs) # make into iterable

File /squidpy/lib/python3.10/site-packages/squidpy/pl/_color_utils.py:50, in _get_palette(adata, cluster_key, categories, palette, alpha)
45 if len(palette) != len(categories):
46 raise ValueError(
47 f"Expected palette to be of length {len(categories)}, found {len(palette)}. "
48 + f"Removing the colors in adata.uns with adata.uns.pop('{cluster_key}_colors') may help."
49 )
---> 50 return {cat: to_hex(to_rgba(col)[:3] + (alpha,), keep_alpha=True) for cat, col in zip(categories, palette)}
51 except KeyError as e:
52 logg.error(f"Unable to fetch palette, reason: {e}. Using None.")

File /squidpy/lib/python3.10/site-packages/squidpy/pl/_color_utils.py:50, in (.0)
45 if len(palette) != len(categories):
46 raise ValueError(
47 f"Expected palette to be of length {len(categories)}, found {len(palette)}. "
48 + f"Removing the colors in adata.uns with adata.uns.pop('{cluster_key}_colors') may help."
49 )
---> 50 return {cat: to_hex(to_rgba(col)[:3] + (alpha,), keep_alpha=True) for cat, col in zip(categories, palette)}
51 except KeyError as e:
52 logg.error(f"Unable to fetch palette, reason: {e}. Using None.")

File/squidpy/lib/python3.10/site-packages/matplotlib/colors.py:299, in to_rgba(c, alpha)
297 rgba = None
298 if rgba is None: # Suppress exception chaining of cache lookup failure.
--> 299 rgba = _to_rgba_no_colorcycle(c, alpha)
300 try:
301 _colors_full_map.cache[c, alpha] = rgba

File /squidpy/lib/python3.10/site-packages/matplotlib/colors.py:374, in _to_rgba_no_colorcycle(c, alpha)
370 raise ValueError(
371 f"Invalid string grayscale value {orig_c!r}. "
372 f"Value must be within 0-1 range")
373 return c, c, c, alpha if alpha is not None else 1.
--> 374 raise ValueError(f"Invalid RGBA argument: {orig_c!r}")
375 # turn 2-D array into 1-D array
376 if isinstance(c, np.ndarray):

ValueError: Invalid RGBA argument: 'B'

How can I solve this problem?

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.