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

KeyError #170

Open
Inbarpl opened this issue Feb 5, 2024 · 1 comment
Open

KeyError #170

Inbarpl opened this issue Feb 5, 2024 · 1 comment

Comments

@Inbarpl
Copy link

Inbarpl commented Feb 5, 2024

Hi again,
Sorry but I'm not good with python
Trying to generate visualization according to T3 with my input data
but I keep getting this Error
I'v tried altering celltype_key value but could no understand what is the problem here
Thank you very much in advance
Inbar:

kpy.plot_cpdb(
adata = adata,
cell_type1 = "0|15|11",
cell_type2 = "2",
means = cpdb_results['means'],
pvals = cpdb_results['relevant_interactions'],
celltype_key = "cell_labels",
genes = ["TGFB2", "CSF1R", "COL1A2"],
figsize = (11,4),
title = "Interactions_V1_V2",
max_size = 5,
highlight_size = 0.75,
degs_analysis = True,
standard_scale = True,
interaction_scores = cpdb_results['interaction_scores'],
scale_alpha_by_interaction_scores=True,
)

KeyError Traceback (most recent call last)
File ~/A/projects_new/Michal_S_cellphoneDB/miniconda3/envs/cpdbv5/lib/python3.8/site-packages/pandas/core/indexes/base.py:3653, in Index.get_loc(self, key)
3652 try:
-> 3653 return self._engine.get_loc(casted_key)
3654 except KeyError as err:

File ~/A/projects_new/Michal_S_cellphoneDB/miniconda3/envs/cpdbv5/lib/python3.8/site-packages/pandas/_libs/index.pyx:147, in pandas._libs.index.IndexEngine.get_loc()

File ~/A/projects_new/Michal_S_cellphoneDB/miniconda3/envs/cpdbv5/lib/python3.8/site-packages/pandas/_libs/index.pyx:176, in pandas._libs.index.IndexEngine.get_loc()

File pandas/_libs/hashtable_class_helper.pxi:7080, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas/_libs/hashtable_class_helper.pxi:7088, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'cell_labels'

The above exception was the direct cause of the following exception:

KeyError Traceback (most recent call last)
Cell In[30], line 1
----> 1 kpy.plot_cpdb(
2 adata = adata,
3 cell_type1 = "0|15|11",
4 cell_type2 = "2",
5 means = cpdb_results['means'],
6 pvals = cpdb_results['relevant_interactions'],
7 celltype_key = "cell_labels",
8 genes = ["TGFB2", "CSF1R", "COL1A2"],
9 figsize = (11,4),
10 title = "Interactions_V1_V2",
11 max_size = 5,
12 highlight_size = 0.75,
13 degs_analysis = True,
14 standard_scale = True,
15 interaction_scores = cpdb_results['interaction_scores'],
16 scale_alpha_by_interaction_scores=True,
17 )

File ~/A/projects_new/Michal_S_cellphoneDB/miniconda3/envs/cpdbv5/lib/python3.8/site-packages/ktplotspy/plot/plot_cpdb.py:230, in plot_cpdb(adata, cell_type1, cell_type2, means, pvals, celltype_key, interaction_scores, cellsign, degs_analysis, splitby_key, alpha, keep_significant_only, genes, gene_family, custom_gene_family, standard_scale, cluster_rows, cmap_name, max_size, max_highlight_size, default_style, highlight_col, highlight_size, special_character_regex_pattern, exclude_interactions, title, return_table, figsize, min_interaction_score, scale_alpha_by_interaction_scores, scale_alpha_by_cellsign, filter_by_cellsign, keep_id_cp_interaction)
228 else:
229 query = [i for i in means_mat.interacting_pair if re.search("|".join(genes), i)]
--> 230 metadata = ensure_categorical(meta=metadata, key=celltype_key)
231 # prepare regex query for celltypes
232 if splitby_key is not None:

File ~/A/projects_new/Michal_S_cellphoneDB/miniconda3/envs/cpdbv5/lib/python3.8/site-packages/ktplotspy/utils/support.py:111, in ensure_categorical(meta, key)
96 def ensure_categorical(meta: pd.DataFrame, key: str) -> pd.DataFrame:
97 """Enforce categorical columns.
98
99 Parameters
(...)
109 Table with formatted column.
110 """
--> 111 if not is_categorical(meta[key]):
112 meta[key] = meta[key].astype("category")
113 return meta

File ~/A/projects_new/Michal_S_cellphoneDB/miniconda3/envs/cpdbv5/lib/python3.8/site-packages/pandas/core/frame.py:3761, in DataFrame.getitem(self, key)
3759 if self.columns.nlevels > 1:
3760 return self._getitem_multilevel(key)
-> 3761 indexer = self.columns.get_loc(key)
3762 if is_integer(indexer):
3763 indexer = [indexer]

File ~/A/projects_new/Michal_S_cellphoneDB/miniconda3/envs/cpdbv5/lib/python3.8/site-packages/pandas/core/indexes/base.py:3655, in Index.get_loc(self, key)
3653 return self._engine.get_loc(casted_key)
3654 except KeyError as err:
-> 3655 raise KeyError(key) from err
3656 except TypeError:
3657 # If we have a listlike key, _check_indexing_error will raise
3658 # InvalidIndexError. Otherwise we fall through and re-raise
3659 # the TypeError.
3660 self._check_indexing_error(key)

KeyError: 'cell_labels'

@datasome
Copy link
Collaborator

datasome commented Feb 6, 2024

Hi Inbarpl,

ktplotspy is an external package to CellphoneDB - if what I'm about to write below doesn't help, you may want to raise an issue on https://github.com/zktuong/ktplotspy instead.

However, from what I see in line 230 of https://github.com/zktuong/ktplotspy/blob/master/ktplotspy/plot/plot_cpdb.py, it looks as if you may not have the column 'cell_labels' in your adata.obs - do you?
See also https://ktplotspy.readthedocs.io/en/latest/notebooks/tutorial.html on the use of plot_cpdb function - if that helps.

Best,

Robert.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants