Metadata-Version: 2.3
Name: cellestial
Version: 0.4.0
Summary: 
License: Apache-2.0
Author: Zaf4
Author-email: zafermolbio@gmail.com
Requires-Python: >=3.10,<4.0
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
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-Dist: anndata (>=0.11.0,<0.12.0)
Requires-Dist: cairosvg (>=2.7.1,<3.0.0)
Requires-Dist: lets-plot (>=4.5.1,<5.0.0)
Requires-Dist: polars (==1.12.0)
Requires-Dist: pyarrow (>=18.0.0,<19.0.0)
Requires-Dist: scanpy[leiden] (>=1.10.4,<2.0.0)
Description-Content-Type: text/markdown

<p align="center">
    <img src="https://github.com/datavil/cellestial/blob/master/assets/cellestial_logo.png?raw=true" alt="Cellestial Logo" width="250">
</p>

[![GitHub](https://img.shields.io/badge/GitHub-100000?style=flat&logo=github&logoColor=white)](https://github.com/DataVil/Cellestial) [![PyPI](https://img.shields.io/pypi/v/cellestial?color=blue)](https://https://datavil.github.io/cellestial/examples/overall.htmlpypi.org/project/cellestial/)

To see the example Figures visit [Cellestial Webpage](https://datavil.github.io/cellestial/).

# Cellestial

An Interactive and Highly Customizable __Single-Cell__ & __Spatial__ Plotting Tool over a ggplot-like API.

Name Encuplates: Space (of Spatial), Scatters of Stars, and of course Cells.

## Installation

```bash
pip install cellestial
```

<img src="./assets/overall.png" alt="multipanel" width="600">

## Usage

```python
import cellestial as cl
```

### Interactive tooltips of individual data points
```python
umap = cl.umap(data, size=1, axis_type="arrow")
umap
```
<img src="./assets/tooltips.png" alt="tooltips" width="500">

and tooltips can be extended with other features..

### Zooming and Paning Options
```python
umap = cl.umap(data, size=1, axis_type="arrow", interactive=True)
```

<img src="./assets/interactive.gif" width="500" />


### Plots are exteremly customizable

```python
umap + scale_color_hue() + ggsize(500,400)
```
<img src="./assets/customized.png" alt="Customized" width="400">


### Multi plots are distinct functions

Instead of singular function names (`umap`), multi-grid plots requires the plural (`umaps`),providing predictability which guarentees the reproducibility.

Which are valid for all `dimensional` subsets (`expression`,`pca`,`umap`, `tsne`).

```python
cl.umaps(
    data,
    keys=["leiden", "HBD", "NEAT1", "IGKC"],
    ncol=2,
    size=1,
    color_high="red",
) + ggsize(900, 600)
```
<img src="./assets/multi_umap.png" alt="multi" width="700">
