Source code for stlearn.adds.add_lr

from typing import Optional, Union
from anndata import AnnData
from pathlib import Path
import os
import pandas as pd


[docs]def lr( adata: AnnData, db_filepath: str = None, sep: str = "\t", source: str = "connectomedb", copy: bool = False, ) -> Optional[AnnData]: """Add significant Ligand-Receptor pairs into AnnData object Parameters ---------- adata: AnnData The data object to add L-R info into db_filepath: str The path to the CPDB results file sep: str Separator of the CPDB results file source: str Source of LR database (default: connectomedb, can also support 'cellphonedb') copy: bool Copy flag indicating copy or direct edit Returns ------- adata: AnnData The data object that L-R added into """ if source == "cellphonedb": cpdb = pd.read_csv(db_filepath, sep=sep) adata.uns["cpdb"] = cpdb lr = cpdb["interacting_pair"].to_list() lr2 = [i for i in lr if "complex" not in i] lr3 = [i for i in lr2 if " " not in i] lr4 = [i for i in lr3 if i.count("_") == 1] adata.uns["lr"] = lr4 print("cpdb results added to adata.uns['cpdb']") print("Added ligand receptor pairs to adata.uns['lr'].") elif source == "connectomedb": ctdb = pd.read_csv(db_filepath, sep=sep, quotechar='"', encoding="latin1") adata.uns["lr"] = ( ctdb["Ligand gene symbol"] + "_" + ctdb["Receptor gene symbol"] ).values.tolist() print("connectomedb results added to adata.uns['ctdb']") print("Added ligand receptor pairs to adata.uns['lr'].") return adata if copy else None