sc.tl.dendrogram doesn't use var_names
@flying-sheep is already working on this.
Since Aug 8, 2024.
- Dominant language
- Python
- Stars
- 2.6k
- Forks
- 779
- Avg merge
- 1d 4h
- Merged PRs (30d)
- 27
Description
- 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 master branch of scanpy.
Latest on pip at least scanpy-1.6.0
I'm using the sc.pl.dendrogram multiple times different lists of genes on my dataset (incrementing number of highly variable genes basically). The outputted dendrogram is alway the same (I guess it's taking into account all the genes because it's using something like 32go of ram....)
Minimal code sample (that we can copy&paste without having any data)
hvegene_sets = [sc.pp.highly_variable_genes(adata, inplace=False, subset=False, n_top_genes=nhvg)["highly_variable"] for nhvg in [500,1000,2000, 3000,4000, 5000]]
then
[sum(hvgene) for hvgene in hvegene_sets]
outputs:
[499, 1000, 1999, 2999, 4000, 4999] (so i have my different genesets)
then
dendro1 = sc.tl.dendrogram(adata,
var_names=adata.var_names[hvegene_sets[1]].values,
optimal_ordering=True,
cor_method="spearman", linkage_method="complete", inplace=False,
groupby="Annotation")
dendro2 = sc.tl.dendrogram(adata,
var_names=adata.var_names[hvegene_sets[5]].values,
optimal_ordering=True,
cor_method="spearman", linkage_method="complete", inplace=False,
groupby="Annotation")
[dendro1[key] ==dendro2[key] for key in dendro1.keys()]
outputs:
[array([[ True, True, True, True],
[ True, True, True, True],
[ True, True, True, True],
[ True, True, True, True],
[ True, True, True, True],
[ True, True, True, True],
[ True, True, True, True],
[ True, True, True, True],
[ True, True, True, True],
[ True, True, True, True],
[ True, True, True, True],
[ True, True, True, True],
[ True, True, True, True],
[ True, True, True, True],
[ True, True, True, True],
[ True, True, True, True],
[ True, True, True, True],
[ True, True, True, True],
[ True, True, True, True]]),
True,
True,
True,
True,
True,
True,
True,
array([[ True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True],
[ True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True],
[ True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True],
[ True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True],
[ True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True],
[ True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True],
[ True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True],
[ True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True],
[ True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True],
[ True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True],
[ True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True],
[ True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True],
[ True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True],
[ True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True],
[ True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True],
[ True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True],
[ True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True],
[ True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True],
[ True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True],
[ True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True]])]
At first I was creating all dendrograms in a list comprehension and it did the same.
I also directly inputted a list of my own and I obtained the same result....
I guess dendrogram don't detect the genes.
When running functions such as
## Testing with creating the dendro manually
def do_corr_mat(adata, var_names, groupby, method = "spearman") :
categories, obs_tidy = _prepare_dataframe(adata, var_names=var_names, groupby=groupby)
mean_df = obs_tidy.groupby(level=0).mean()
return mean_df.T.corr(method=method)
def do_dendro(corr_matrix, method="ward") :
z_var = linkage(corr_matrix, method=linkage)
return dendrogram(z_var, labels=mean_df.index)
Everything works fine !
Thanks by advance,
C
Versions
1.6.0
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.