Source code for stereoAlign.alignment.scanorama_alignment

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 8/24/23 9:45 AM
# @Author  : zhangchao
# @File    : _scanorama_alignment.py
# @Email   : zhangchao5@genomics.cn
from anndata import AnnData

from stereoAlign.utils import check_sanity, split_batches, merge_adata


[docs]def scanorama_alignment(adata: AnnData, batch_key, hvg=None, **kwargs): """Scanorama wrapper function Based on `scanorama <https://github.com/brianhie/scanorama>`_ :param adata: preprocessed ``anndata`` object :param batch_key: batch key in ``adata.obs`` :param hvg: list of highly variables to subset to. If ``None``, the full dataset will be used :return: ``anndata`` object containing the corrected feature matrix as well as an embedding representation of the corrected data """ try: import scanorama except ImportError: raise ImportError("\nplease install scanorama:\n\n\tpip install scanorama") check_sanity(adata, batch_key, hvg) split, categories = split_batches(adata.copy(), batch_key, return_categories=True) corrected = scanorama.correct_scanpy(split, return_dimred=True, **kwargs) corrected = merge_adata( *corrected, batch_key=batch_key, batch_categories=categories, index_unique=None ) corrected.obsm["aligned_scanorama"] = corrected.obsm["X_scanorama"] return corrected