Source code for stereoAlign.alignment.mnn_alignment

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

from stereoAlign.utils import check_sanity, split_batches


[docs]def mnn_alignment(adata: AnnData, batch_key, hvg=None, **kwargs): """MNN wrapper function (``mnnpy`` implementation) Based on `mnnpy package <https://github.com/chriscainx/mnnpy>`_ .. note: ``mnnpy`` might break with newer versions of ``numpy`` and ``pandas`` :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 """ try: import mnnpy except ImportError: raise ImportError("\nplease install mnnpy:\n\n\tpip install mnnpy") check_sanity(adata, batch_key, hvg) split, categories = split_batches(adata, batch_key, return_categories=True) corrected, _, _ = mnnpy.mnn_correct( *split, var_subset=hvg, batch_key=batch_key, batch_categories=categories, index_unique=None, **kwargs, ) return corrected