Sc.tl.leiden restrict_to issue

I am trying to re-cluster a subset of cells from my dataset.

sc.tl.leiden(adata_clean, restrict_to = ('pheno_leiden', ['1']), resolution = 1,  neighbors_key= "neighbors_30", key_added = "leiden_test")

gives ValueError: ‘1’ is not a valid category for ‘pheno_leiden’.

adata_clean.obs['pheno_leiden'].value_counts()

gives

How is 1 not a valid category? I don’t understand

Are the values of pheno_leiden integers? E.g. (adata_clean.obs["pheno_leiden"] == 1).any()?

They are expected to be categorical strings, but this error would occur if they were integers.

Yes, this is the problem. I guess I don’t understand why they are integers.
The code I’m running to generate pheno_leiden is

sc.external.tl.phenograph(adata_T, clustering_algo='leiden', k=30, jaccard=True, 
                          primary_metric='euclidean', resolution_parameter=1, seed=seed)

Restrict_to doesn’t work with integers so do I need to convert pheno_leiden to categorical strings in order to run it?

I guess I don’t understand why they are integers.

Sometimes (or often) this is what clustering algorithms return.

Restrict_to doesn’t work with integers so do I need to convert pheno_leiden to categorical strings in order to run it?

Yup.

We can probably make scanpy throw a more helpful error here in the future, since that was fairly opaque.