Source code for stlearn.adds.add_labels

from typing import Optional, Union
from anndata import AnnData
from pathlib import Path
import os
import pandas as pd
import numpy as np
from natsort import natsorted


[docs]def labels( adata: AnnData, label_filepath: str = None, index_col: int = 0, use_label: str = None, sep: str = "\t", copy: bool = False, ) -> Optional[AnnData]: """\ Add label transfer results into AnnData object Parameters ---------- adata: AnnData The data object to add L-R info into label_filepath: str The path to the label transfer results file use_label: str Where to store the label_transfer results, defaults to 'predictions' in adata.obs & 'label_transfer' in adata.uns. sep: str Separator of the csv file copy: bool Copy flag indicating copy or direct edit Returns ------- adata: AnnData The data object that L-R added into """ labels = pd.read_csv(label_filepath, index_col=index_col, sep=sep) uns_key = "label_transfer" if type(use_label) == type(None) else use_label adata.uns[uns_key] = labels.drop(["predicted.id", "prediction.score.max"], axis=1) key_add = "predictions" if type(use_label) == type(None) else use_label key_source = "predicted.id" adata.obs[key_add] = pd.Categorical( values=np.array(labels[key_source]).astype("U"), categories=natsorted(labels[key_source].unique().astype("U")), ) print(f"label transfer results added to adata.uns['{uns_key}']") print(f"predicted label added to adata.obs['{key_add}'].") return adata if copy else None