import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
adata = sc.datasets.visium_sge(sample_id="V1_Human_Lymph_Node")
adata.var_names_make_unique()
adata.var["mt"] = adata.var_names.str.startswith("MT-")
sc.pp.calculate_qc_metrics(adata, qc_vars=["mt"], inplace=True)
sc.tl.rank_genes_groups(adata, "clusters", method="t-test")
sc.pl.rank_genes_groups_heatmap(adata, groups="5", n_genes=10, groupby="clusters")
The results are as follows:
finished: added to `.uns['rank_genes_groups']`
'names', sorted np.recarray to be indexed by group ids
'scores', sorted np.recarray to be indexed by group ids
'logfoldchanges', sorted np.recarray to be indexed by group ids
'pvals', sorted np.recarray to be indexed by group ids
'pvals_adj', sorted np.recarray to be indexed by group ids (0:00:02)
WARNING: dendrogram data not found (using key=dendrogram_clusters). Running `sc.tl.dendrogram` with default parameters. For fine tuning it is recommended to run `sc.tl.dendrogram` independently.
using 'X_pca' with n_pcs = 50
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-19-a44c51f396af> in <module>
2 # genes across clusters.
3 sc.tl.rank_genes_groups(adata, "clusters", method="t-test")
----> 4 sc.pl.rank_genes_groups_heatmap(adata, groups="5", n_genes=10, groupby="clusters")
~/.pyenv/versions/3.6.9/lib/python3.6/site-packages/scanpy/plotting/_tools/__init__.py in rank_genes_groups_heatmap(adata, groups, n_genes, groupby, key, show, save, **kwds)
454 show=show,
455 save=save,
--> 456 **kwds,
457 )
458
~/.pyenv/versions/3.6.9/lib/python3.6/site-packages/scanpy/plotting/_tools/__init__.py in _rank_genes_groups_plot(adata, plot_type, groups, n_genes, groupby, key, show, save, **kwds)
392 from .._anndata import heatmap
393 heatmap(adata, gene_names, groupby, var_group_labels=group_names,
--> 394 var_group_positions=group_positions, show=show, save=save, **kwds)
395
396 elif plot_type == 'stacked_violin':
~/.pyenv/versions/3.6.9/lib/python3.6/site-packages/scanpy/plotting/_anndata.py in heatmap(adata, var_names, groupby, use_raw, log, num_categories, dendrogram, gene_symbols, var_group_positions, var_group_labels, var_group_rotation, layer, standard_scale, swap_axes, show_gene_labels, show, save, figsize, **kwds)
1454 var_names=var_names,
1455 var_group_labels=var_group_labels,
-> 1456 var_group_positions=var_group_positions,
1457 )
1458
~/.pyenv/versions/3.6.9/lib/python3.6/site-packages/scanpy/plotting/_anndata.py in _reorder_categories_after_dendrogram(adata, groupby, dendrogram, var_names, var_group_labels, var_group_positions)
3109 """
3110
-> 3111 key = _get_dendrogram_key(adata, dendrogram, groupby)
3112
3113 dendro_info = adata.uns[key]
~/.pyenv/versions/3.6.9/lib/python3.6/site-packages/scanpy/plotting/_anndata.py in _get_dendrogram_key(adata, dendrogram_key, groupby)
3195 "tuning it is recommended to run `sc.tl.dendrogram` independently."
3196 )
-> 3197 dendrogram(adata, groupby, key_added=dendrogram_key)
3198
3199 if 'dendrogram_info' not in adata.uns[dendrogram_key]:
~/.pyenv/versions/3.6.9/lib/python3.6/site-packages/scanpy/tools/_dendrogram.py in dendrogram(adata, groupby, n_pcs, use_rep, var_names, use_raw, cor_method, linkage_method, optimal_ordering, key_added, inplace)
130 corr_matrix, method=linkage_method, optimal_ordering=optimal_ordering
131 )
--> 132 dendro_info = sch.dendrogram(z_var, labels=categories, no_plot=True)
133
134 # order of groupby categories
~/.pyenv/versions/3.6.9/lib/python3.6/site-packages/scipy/cluster/hierarchy.py in dendrogram(Z, p, truncate_mode, color_threshold, get_leaves, orientation, labels, count_sort, distance_sort, show_leaf_counts, no_plot, no_labels, leaf_font_size, leaf_rotation, leaf_label_func, show_contracted, link_color_func, ax, above_threshold_color)
3275 "'bottom', or 'right'")
3276
-> 3277 if labels and Z.shape[0] + 1 != len(labels):
3278 raise ValueError("Dimensions of Z and labels must be consistent.")
3279
~/.pyenv/versions/3.6.9/lib/python3.6/site-packages/pandas/core/indexes/base.py in __nonzero__(self)
2229 raise ValueError("The truth value of a {0} is ambiguous. "
2230 "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
-> 2231 .format(self.__class__.__name__))
2232
2233 __bool__ = __nonzero__
ValueError: The truth value of a Index is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
The following issue occurs when running the function sc.pl.rank_gene_groups_heatmap (as in the spatial transcriptomics tutorial found at https://scanpy-tutorials.readthedocs.io/en/latest/spatial/basic-analysis.html#Cluster-marker-genes), under "Cluster marker genes".
The results are as follows:
VERSIONS: scanpy==1.5.1 anndata==0.7.3 umap==0.4.6 numpy==1.16.4 scipy==1.5.0 pandas==0.24.2 scikit-learn==0.21.2 statsmodels==0.10.0 python-igraph==0.8.2 leidenalg==0.8.1 Python version: 3.6.9