from typing import Optional, Union
from anndata import AnnData
import pandas as pd
import numpy as np
import stlearn
from pathlib import Path
from natsort import natsorted
[docs]def add_loupe_clusters(
adata: AnnData,
loupe_path: Union[Path, str],
key_add: str = "multiplex",
copy: bool = False,
) -> Optional[AnnData]:
"""\
Adding label transfered from Seurat
Parameters
----------
adata
Annotated data matrix.
annotation_path
Path of the output of label transfer result by Seurat
use_label
Choosing cluster type.
threshold
Quantile threshold of label
copy
Return a copy instead of writing to adata.
Returns
-------
Depending on `copy`, returns or updates `adata` with the following fields.
**[cluster method name]_anno** : `adata.obs` field
The annotation of cluster results.
"""
label = pd.read_csv(loupe_path)
adata.obs[key_add] = pd.Categorical(
values=np.array(label[key_add]).astype("U"),
categories=natsorted(label[key_add].unique().astype("U")),
)