Metadata-Version: 2.4
Name: exprmat
Version: 0.2.78
Classifier: Programming Language :: Rust
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Requires-Dist: leidenalg
Requires-Dist: anndata>=0.8.0
Requires-Dist: multiprocess
Requires-Dist: macs3>=3.0,<3.1
Requires-Dist: natsort
Requires-Dist: numpy
Requires-Dist: pandas>=2.0
Requires-Dist: polars>=1.0,<2.0
Requires-Dist: pooch>=1.6.0,<2.0.0
Requires-Dist: igraph>=0.10.3
Requires-Dist: pyarrow
Requires-Dist: pyfaidx>=0.7.0,<0.8.0
Requires-Dist: rustworkx
Requires-Dist: scipy>=1.11,<2.0.0
Requires-Dist: scikit-learn>=1.1,<2.0.0
Requires-Dist: tqdm>=4.62
Requires-Dist: typeguard>=4.0
Requires-Dist: umap-learn>=0.5.0
Requires-Dist: scvi-tools>=1.3.0
Requires-Dist: scanpy
Requires-Dist: mudata
Requires-Dist: matplotlib
Requires-Dist: seaborn
Requires-Dist: torch>=2.0
Requires-Dist: annoy
Requires-Dist: scikit-image
Requires-Dist: scikit-misc
Requires-Dist: bbknn
Requires-Dist: scanorama
Requires-Dist: harmonypy>=0.2.0
Requires-Dist: pymde
Requires-Dist: datashader
Requires-Dist: fa2-modified
Requires-Dist: pynndescent
Requires-Dist: gseapy
Requires-Dist: metacells
Requires-Dist: sh
Requires-Dist: networkx
Requires-Dist: palantir
Requires-Dist: adjusttext
Requires-Dist: h5py
Requires-Dist: cytoolz
Requires-Dist: frozendict
Requires-Dist: dask
Requires-Dist: boltons
Requires-Dist: multiprocessing-on-dill
Requires-Dist: pysam
Requires-Dist: hdbscan
Requires-Dist: graphtools
Requires-Dist: bincsync>=0.4.0
Requires-Dist: pybigwig
Requires-Dist: spatialdata
Requires-Dist: loompy
Requires-Dist: zarr<3
Requires-Dist: scikit-image
Requires-Dist: spatial-image
Requires-Dist: multiscale-spatial-image
Requires-Dist: tangram-sc
Requires-Dist: shapely>=2.0.0
Requires-Dist: pyogrio>=0.7.2
Requires-Dist: pyproj>=3.3.0
Requires-Dist: geopandas
Requires-Dist: packaging
Requires-Dist: lightmotif
Requires-Dist: pymemesuite
Requires-Dist: formulaic>=1.0.2
Requires-Dist: formulaic-contrasts>=0.2.0
Requires-Dist: cython
Requires-Dist: pyfastx
Requires-Dist: genomicranges
Requires-Dist: rustworkx
Requires-Dist: xgboost
Requires-Dist: simpleppt
Requires-Dist: elpigraph-python
Requires-Dist: dask-expr>=2.0
Requires-Dist: einops==0.8.1
Requires-Dist: lxml
Requires-Dist: arviz>=0.23
Requires-Dist: pyvips
Requires-Dist: openslide-python
Requires-Dist: tissuumaps<4
Requires-Dist: opencv-python
Requires-Dist: marsilea
Requires-Dist: qnorm
Requires-Dist: torch-geometric
Requires-Dist: cudf-cu12==25.8.* ; extra == 'cuda12'
Requires-Dist: dask-cudf-cu12==25.8.* ; extra == 'cuda12'
Requires-Dist: cuml-cu12==25.8.* ; extra == 'cuda12'
Requires-Dist: cugraph-cu12==25.8.* ; extra == 'cuda12'
Requires-Dist: nx-cugraph-cu12==25.8.* ; extra == 'cuda12'
Requires-Dist: cuxfilter-cu12==25.8.* ; extra == 'cuda12'
Requires-Dist: cucim-cu12==25.8.* ; extra == 'cuda12'
Requires-Dist: pylibraft-cu12==25.8.* ; extra == 'cuda12'
Requires-Dist: raft-dask-cu12==25.8.* ; extra == 'cuda12'
Requires-Dist: cuvs-cu12==25.8.* ; extra == 'cuda12'
Requires-Dist: nx-cugraph-cu12==25.8.* ; extra == 'cuda12'
Requires-Dist: cupy-cuda12x ; extra == 'cuda12'
Requires-Dist: rapids-singlecell ; extra == 'cuda12'
Requires-Dist: cudf-cu13==25.10.* ; extra == 'cuda13'
Requires-Dist: cuml-cu13==25.10.* ; extra == 'cuda13'
Requires-Dist: cugraph-cu13==25.10.* ; extra == 'cuda13'
Requires-Dist: cuvs-cu13==25.10.* ; extra == 'cuda13'
Requires-Dist: cupy-cuda13x ; extra == 'cuda13'
Requires-Dist: rapids-singlecell ; extra == 'cuda13'
Requires-Dist: sphinx ; extra == 'dev'
Requires-Dist: twine ; extra == 'dev'
Requires-Dist: ipykernel ; extra == 'dev'
Requires-Dist: ipytree ; extra == 'dev'
Requires-Dist: uv ; extra == 'dev'
Provides-Extra: cuda12
Provides-Extra: cuda13
Provides-Extra: dev
License-File: license
Summary: exprmat: Routines for expression matrices
Author-email: Zheng Yang <xornent@outlook.com>
Requires-Python: >=3.10, <3.14
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Repository, https://github.com/yang-z-03/exprmat


# exprmat

![wheels](https://img.shields.io/pypi/wheel/exprmat)
![version](https://img.shields.io/pypi/v/exprmat)

exprmat (short for **expr**ession **mat**rix) is a routine package for manipulation 
of sparse expression matrices. It provides a ***structured***, ***introspective***
mudular interface for man and machine.

You may refer to these places:

* [Source code repository](https://github.com/yang-z-03/exprmat)
* [Releases in PyPI](https://pypi.org/project/exprmat)
* [Documentation](https://exprmat.readthedocs.io/en/latest)

### Database installation

The package `exprmat` do not come with its reference database. You need to setup
the database and configure the package to find it properly, or else most of the
features from the package will fail.

This package ships with a tool to fetch database distribution on Alibaba Cloud
object storage service. You will first need to register an account and request
a key-secret pair to authenticate your identity, before starting out to download
specified version of the database distribution using the tool `bsync-fetch` 
installed alongside the `exprmat` package.

```
usage: bsync-fetch [-h] --id ID --secret SECRET 
                        --bucket BUCKET [--endpoint ENDPOINT] --version VERSION

fetch from remote bucket.

options:
  -h, --help           show this help message and exit
  --id ID              The requester access id.
  --secret SECRET      The requester access secret.
  --bucket BUCKET      The name of the bucket.
  --endpoint ENDPOINT  The domain names that other services can use to access OSS.
  --version VERSION    The version to fetch from remote.
```

Suppose you are installing the database version `0.1.50` to `~/database`.

```bash
# enter the intended path of installation
cd ~/database

# download the version 0.1.50 of database distribution
# you must download the same version of the database with the package. the database
# and package content are published strictly synchronically.
bsync-fetch --id <your-id> --secret <your-api-secret> \
            --bucket exprmat-data --endpoint oss-cn-wuhan-lr.aliyuncs.com \
            --version 0.1.50
```

The authentication tokens passed to `--id` and `--secret` is provided by the
Alibaba Cloud service (See the [Documentation](https://help.aliyun.com/zh/ram/user-guide/create-an-accesskey-pair)
for details)

### Licensing

The original part of the source code is licensed under GNU GPLv3.
The database download tool bsync-fetch (developed as a dependency package for
exprmat, in python package `bincsync`) is only allowed for internal use and not
for re-distribution.

```
exprmat - Routines to manipulate expression matrices
Copyright (C) 2025 - 2026 Zheng Yang <xornent@outlook.com>

exprmat is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions. 
You should have received a copy of the GNU General Public License
version 3 along with this program. If not, see <http://www.gnu.org/licenses/>.

The GNU General Public License does not permit incorporating 
your program into proprietary programs.
```

I acknowledge the following author(s) for modifying and integrating their work
in the form of source code to this package.

- **scanpy**, BSD 3-Clause, Copyright (c) 2017 F. Alexander Wolf, P. Angerer, Theis Lab
- **snapatac2**, MIT, Copyright (c) 2022-2024 Kai Zhang
- **sc3s**, GNU GPLv3, Copyright (c) Quah, F.X. and Hemberg, M. and contributors.
- **cnmf**, MIT, Copyright (c) 2019 Dylan Kotliar
- **infercnvpy**, BSD 3-Clause, Copyright (c) 2022, Gregor Sturm
- **tape**, GNU GPLv3, Copyright (c) The contributors.
- **metaq**, MIT, Copyright (c) 2024 XLearning Group
- **scenicplus**, Academic Non-commercial Software License Agreement, Copyright (c) The contributors.
- **lianapy**, BSD 3-Clause, Copyright (c) 2025, Daniel Dimitrov
- **idr**, GNU GPLv2, Copyright (c) The contributors
- **omicverse**, GNU GPLv3, Copyright (c) 2024 112 Lab
- **pydiffmap**, MIT, Copyright (c) 2018 Ralf Banisch, Erik Henning Thiede, Zofia Trstanova
- **scfates**, BSD 3-Clause, Copyright (c) 2020, Louis Faure
- **cytotrace2**, Stanford Non-commercial Software License Agreement, Copyright (c) The contributors.
- **scvelo**, BSD 3-Clause, Copyright (c) 2018, Theis Lab
- **pydeseq2**, MIT, Copyright (c) 2022 Owkin
- **decoupler**, GNU GPLv3, Copyright (c) The contributors.
- **scvitools**, BSD 3-Clause, Copyright (c) 2026, Yosef Lab, Weizmann Institute of Science
- **spacec**, Academic Software License Agreement, Copyright (c) The contributors.
- **squidpy**, BSD 3-Clause, Copyright (c) 2021, Theis Lab
- **sctransformpy**, GNU GPLv3, Copyright (c) David DeTomaso
- **magic**, GNU GPLv2, Copyright (c) The contributors.
- **scrublet**, MIT, Copyright (c) 2018 Samuel Wolock
- **py8rds**, MIT, Copyright (c) 2024 Cellular Genetics Informatics
- **nimfa**, New BSD, Copyright (c) 2016 The Nimfa developers.
- **cellnest**, GNU GPLv3, Copyright (c) The contributors.
- **tangram**, BSD 3-Clause, Copyright (c) 2020, Broad Institute All rights reserved.
- **deepst**, MIT, Copyright (c) 2022 spatial-Transcriptomics
- **spagcn**, MIT, Copyright (c) 2020 JianHu
- **spatialde**, MIT, Copyright (c) 2018 Teichmann Group
- **omnipathdb**, See source licenses and permissions.
