Metadata-Version: 2.4
Name: DOTools_py
Version: 0.0.4
Summary: Convenient functions to streamline sc/snRNAseq data analysis workflow
Project-URL: Documentation, https://DOTools_py.readthedocs.io/
Project-URL: Homepage, https://github.com/davidrm-bio/DOTools_py
Project-URL: Source, https://github.com/davidrm-bio/DOTools_py
Author: David Rodriguez Morales, Mariano Ruz Jurado, David John
Maintainer-email: David Rodriguez Morales <rodriguezmorales@med.uni-frankfurt.de>
License: MIT License
        
        Copyright (c) 2025, David Rodriguez Morales
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
License-File: LICENSE
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.10
Requires-Dist: adjusttext
Requires-Dist: anndata>=0.9.2
Requires-Dist: appdirs
Requires-Dist: bbknn
Requires-Dist: celltypist
Requires-Dist: doubletdetection>=4.3
Requires-Dist: fast-array-utils[accel,sparse]>=1.2.1; python_version >= '3.11'
Requires-Dist: fastexcel
Requires-Dist: gseapy<1.1.11
Requires-Dist: harmony-pytorch
Requires-Dist: harmonypy
Requires-Dist: jupyter
Requires-Dist: numba
Requires-Dist: numpy>=1.26.4
Requires-Dist: pandas>=2.2.3
Requires-Dist: polars>=1.30
Requires-Dist: pydeseq2
Requires-Dist: requests
Requires-Dist: rich<14
Requires-Dist: scanorama
Requires-Dist: scanpro
Requires-Dist: scanpy
Requires-Dist: scib
Requires-Dist: scikit-image
Requires-Dist: scipy
Requires-Dist: scvi-tools>=1.3
Requires-Dist: session-info2
Requires-Dist: tqdm
Provides-Extra: dev
Requires-Dist: pre-commit; extra == 'dev'
Requires-Dist: twine>=4.0.2; extra == 'dev'
Provides-Extra: doc
Requires-Dist: bbknn; extra == 'doc'
Requires-Dist: celltypist; extra == 'doc'
Requires-Dist: docutils!=0.18.*,!=0.19.*,>=0.8; extra == 'doc'
Requires-Dist: doubletdetection; extra == 'doc'
Requires-Dist: gseapy; extra == 'doc'
Requires-Dist: ipykernel; extra == 'doc'
Requires-Dist: ipython; extra == 'doc'
Requires-Dist: jupyter; extra == 'doc'
Requires-Dist: matplotlib; extra == 'doc'
Requires-Dist: myst-nb>=1.1; extra == 'doc'
Requires-Dist: pandas; extra == 'doc'
Requires-Dist: polars; extra == 'doc'
Requires-Dist: pydeseq2; extra == 'doc'
Requires-Dist: scanpydoc; extra == 'doc'
Requires-Dist: scib; extra == 'doc'
Requires-Dist: scipy; extra == 'doc'
Requires-Dist: scvi-tools; extra == 'doc'
Requires-Dist: seaborn; extra == 'doc'
Requires-Dist: setuptools; extra == 'doc'
Requires-Dist: spatialdata; extra == 'doc'
Requires-Dist: sphinx-autodoc-typehints; extra == 'doc'
Requires-Dist: sphinx-book-theme>=1; extra == 'doc'
Requires-Dist: sphinx-copybutton; extra == 'doc'
Requires-Dist: sphinx-design; extra == 'doc'
Requires-Dist: sphinx-tabs; extra == 'doc'
Requires-Dist: sphinx>=8.1; extra == 'doc'
Requires-Dist: sphinxcontrib-bibtex>=1; extra == 'doc'
Requires-Dist: sphinxext-opengraph; extra == 'doc'
Requires-Dist: tqdm; extra == 'doc'
Provides-Extra: test
Requires-Dist: adjusttext; extra == 'test'
Requires-Dist: anndata; extra == 'test'
Requires-Dist: appdirs; extra == 'test'
Requires-Dist: bbknn; extra == 'test'
Requires-Dist: celltypist; extra == 'test'
Requires-Dist: coverage; extra == 'test'
Requires-Dist: doubletdetection; extra == 'test'
Requires-Dist: fastexcel; extra == 'test'
Requires-Dist: gseapy; extra == 'test'
Requires-Dist: ipython; extra == 'test'
Requires-Dist: matplotlib; extra == 'test'
Requires-Dist: numba; extra == 'test'
Requires-Dist: numpy; extra == 'test'
Requires-Dist: pandas; extra == 'test'
Requires-Dist: polars; extra == 'test'
Requires-Dist: pyarrow; extra == 'test'
Requires-Dist: pytest; extra == 'test'
Requires-Dist: rich<14; extra == 'test'
Requires-Dist: scanpy; extra == 'test'
Requires-Dist: scipy; extra == 'test'
Requires-Dist: scvi-tools; extra == 'test'
Requires-Dist: seaborn; extra == 'test'
Requires-Dist: tqdm; extra == 'test'
Requires-Dist: zarr; extra == 'test'
Description-Content-Type: text/markdown

# DOTools_py
<img src="https://github.com/davidrm-bio/DOTools_py/blob/8b7e9988713cc4867443b22c1688b4ae85966ae3/docs/figures/LogoDoTools.png?raw=1" align="right" width="210" class="no-scaled-link"/>

[![Tests][badge-tests]][tests]
[![Documentation][badge-docs]][documentation]
[![Coverage][badge-coverage]][codecoverage]
[![Issues][badge-issues]][issue tracker]
[![Stars][badge-stars]](https://github.com/davidrm-bio/DOTools_py/stargazers)
[![PyPI][badge-pypi]][pypi]
[![PyPI Downloads](https://static.pepy.tech/personalized-badge/dotools-py?period=monthly&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=monthly+downloads)](https://pepy.tech/projects/dotools-py)

[badge-tests]: https://img.shields.io/github/actions/workflow/status/davidrm-bio/DOTools_py/test.yaml?branch=main
[badge-docs]:  https://img.shields.io/readthedocs/DOTools_py/stable
[badge-issues]: https://img.shields.io/github/issues/davidrm-bio/DOTools_py
[badge-stars]: https://img.shields.io/github/stars/davidrm-bio/DOTools_py?style=flat&logo=github&color=yellow
[badge-coverage]: https://codecov.io/gh/davidrm-bio/DOTools_py/branch/main/graph/badge.svg
[badge-pypi]: https://img.shields.io/pypi/v/DOTools_py.svg


Convenient and user-friendly package to streamline common workflows in single-cell RNA sequencing data analysis using
the scverse ecosystem. It provides high-level wrappers and visualization functions to help efficiently preprocess,
analyze, and interpret single-cell data.

## Getting started

Please refer to the [documentation](https://dotools-py.readthedocs.io/en/stable/index.html),
in particular, the [API documentation](https://dotools-py.readthedocs.io/en/stable/api/index.html).

## Installation

You need to have Python 3.10 or newer installed on your system. We recommend creating
a dedicated [conda](https://www.anaconda.com/docs/getting-started/miniconda/main) environment.

```bash
conda create -n scrna_py11 python=3.11 -y
conda activate scrna_py11
pip install uv
```

There are several alternative options to install DOTools_py:

1. Install the latest release of `DOTools_py` from [PyPI](https://pypi.org/project/DOTools-py/):
```bash
uv pip install dotools-py
```

2. Install the latest development version:
```bash
uv pip install git+https://github.com/davidrm-bio/DOTools_py.git@main
```

Finally, to use this environment in jupyter notebook, add jupyter kernel for this environment:

```bash
python -m ipykernel install --user --name=scrna_py11 --display-name=scrna_py11
```

## Requirements

This package has been tested on macOS, Linux and Windows System. For a standard dataset (e.g., 6 samples with 10k cells each)
we suggest 16GB of RAM and at least 5 CPUs.

Some methods are run through R and require additional dependencies
including: `Seurat`, `MAST`, `scDblFinder`, `zellkonverter`, `data.table` and `optparse`.

```R
if (!require("BiocManager", quietly = TRUE))
    install.packages("BiocManager")

install.packages("optparse", Ncpus=8)
install.packages('remotes', Ncpus=8)
install.packages('data.table', Ncpus = 8)
remotes::install_github("satijalab/seurat", "seurat5", quiet = TRUE)  # Seurat
BiocManager::install("MAST")
BiocManager::install("scDblFinder")
BiocManager::install("zellkonverter")
BiocManager::install('glmGamPoi')
```

For old CPU architectures there can be problems with [polars](https://docs.pola.rs/) making the kernel die
when importing the package. In this case run

```bash
pip install --no-cache polars-lts-cpu
```

## R version

We also have an R implementation of the  [DOTools](https://github.com/MarianoRuzJurado/DOtools). This can be
installed from Bioconductor:

```R
if (!requireNamespace("BiocManager", quietly=TRUE)) {
    install.packages("BiocManager")
}
BiocManager::install("DOtools")
devtools::install_github("MarianoRuzJurado/DOtools")
```

The developmental version can be downloaded using `devtools`:

```R
devtools::install_github("MarianoRuzJurado/DOtools", ref="devel")
```

## Release notes

See the [changelog][].

## Contact
Raising up an issue in this GitHub repository might be the fastest way of submitting suggestions and bugs.
Alternatively you can write to my email: [rodriguezmorales@med.uni-frankfurt.de](mailto:rodriguezmorales@med.uni-frankfurt.de).

## Citation

 > Ruz Jurado, Mariano, David Rodriguez Morales, Lukas Zanders, Elijah Genetzakis, Stefanie Dimmeler, and David John. 2026.
 > “DoTools: A Cross Platform Framework to Streamline Common Single Cell Workflows.” Bioinformatics Advances: vbag098.
 > https://doi.org/10.1093/bioadv/vbag098

[uv]: https://github.com/astral-sh/uv
[scverse discourse]: https://discourse.scverse.org/
[issue tracker]: https://github.com/davidrm-bio/DOTools_py/issues
[tests]: https://github.com/davidrm-bio/DOTools_py/actions/workflows/test.yaml
[documentation]: https://dotools-py.readthedocs.io/en/stable/
[changelog]: https://dotools-py.readthedocs.io/en/latest/changelog.html
[api documentation]: https://dotools-py.readthedocs.io/en/latest/api.html
[pypi]: https://pypi.org/project/DOTools-py/
[codecoverage]: https://codecov.io/gh/davidrm-bio/DOTools_py
[down]: https://pepy.tech/project/dotools-py
