Metadata-Version: 2.1
Name: vitessce
Version: 3.0.1
Summary: Jupyter widget facilitating interactive visualization of spatial single-cell data with Vitessce
Home-page: https://github.com/vitessce/vitessce-python
Author: Gehlenborg Lab
Author-email: 
Keywords: ipython,jupyter,widgets
Classifier: Development Status :: 4 - Beta
Classifier: Framework :: IPython
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Multimedia :: Graphics
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: zarr (>=2.5.0)
Requires-Dist: numcodecs (>=0.5.7)
Requires-Dist: scipy (>=1.2.1)
Requires-Dist: negspy (>=0.2.24)
Requires-Dist: pandas (>=1.1.2)
Requires-Dist: black (>=21.11b1)
Requires-Dist: numpy (>=1.21.2)
Requires-Dist: anndata (<0.9,>=0.7.8)
Requires-Dist: ome-zarr (==0.2.1)
Requires-Dist: tifffile (>=2020.10.1)
Provides-Extra: all
Requires-Dist: jupyter-server-proxy (>=1.5.2) ; extra == 'all'
Requires-Dist: anywidget (==0.1.0) ; extra == 'all'
Requires-Dist: uvicorn (>=0.17.0) ; extra == 'all'
Requires-Dist: ujson (>=4.0.1) ; extra == 'all'
Requires-Dist: starlette (==0.14.0) ; extra == 'all'
Requires-Dist: generate-tiff-offsets (>=0.1.7) ; extra == 'all'
Requires-Dist: aiofiles (>=0.6.0) ; extra == 'all'
Provides-Extra: building
Requires-Dist: build (==0.1.0) ; extra == 'building'
Provides-Extra: dev
Requires-Dist: build (==0.1.0) ; extra == 'dev'
Requires-Dist: pytest (>=6.2.4) ; extra == 'dev'
Requires-Dist: loompy (>=3.0.6) ; extra == 'dev'
Requires-Dist: coverage (>=6.3.2) ; extra == 'dev'
Requires-Dist: flake8 (==3.8.4) ; extra == 'dev'
Requires-Dist: sphinx (==4.2.0) ; extra == 'dev'
Requires-Dist: sphinx-rtd-theme (==1.0.0) ; extra == 'dev'
Requires-Dist: nbsphinx (==0.8.8) ; extra == 'dev'
Requires-Dist: nbclean (==0.3.2) ; extra == 'dev'
Requires-Dist: sqlalchemy (==1.3.24) ; extra == 'dev'
Requires-Dist: nbconvert (==5.6.1) ; extra == 'dev'
Requires-Dist: jinja2 (==3.0.3) ; extra == 'dev'
Requires-Dist: jupyter-server-proxy (>=1.5.2) ; extra == 'dev'
Requires-Dist: anywidget (==0.1.0) ; extra == 'dev'
Requires-Dist: uvicorn (>=0.17.0) ; extra == 'dev'
Requires-Dist: ujson (>=4.0.1) ; extra == 'dev'
Requires-Dist: starlette (==0.14.0) ; extra == 'dev'
Requires-Dist: generate-tiff-offsets (>=0.1.7) ; extra == 'dev'
Requires-Dist: aiofiles (>=0.6.0) ; extra == 'dev'
Provides-Extra: docs
Requires-Dist: sphinx (==4.2.0) ; extra == 'docs'
Requires-Dist: sphinx-rtd-theme (==1.0.0) ; extra == 'docs'
Requires-Dist: nbsphinx (==0.8.8) ; extra == 'docs'
Requires-Dist: nbclean (==0.3.2) ; extra == 'docs'
Requires-Dist: sqlalchemy (==1.3.24) ; extra == 'docs'
Requires-Dist: nbconvert (==5.6.1) ; extra == 'docs'
Requires-Dist: jinja2 (==3.0.3) ; extra == 'docs'
Provides-Extra: linting
Requires-Dist: flake8 (==3.8.4) ; extra == 'linting'
Provides-Extra: notebook
Requires-Dist: anywidget (==0.1.0) ; extra == 'notebook'
Requires-Dist: uvicorn (>=0.17.0) ; extra == 'notebook'
Requires-Dist: ujson (>=4.0.1) ; extra == 'notebook'
Requires-Dist: starlette (==0.14.0) ; extra == 'notebook'
Requires-Dist: generate-tiff-offsets (>=0.1.7) ; extra == 'notebook'
Requires-Dist: aiofiles (>=0.6.0) ; extra == 'notebook'
Provides-Extra: proxy
Requires-Dist: jupyter-server-proxy (>=1.5.2) ; extra == 'proxy'
Provides-Extra: testing
Requires-Dist: pytest (>=6.2.4) ; extra == 'testing'
Requires-Dist: loompy (>=3.0.6) ; extra == 'testing'
Requires-Dist: coverage (>=6.3.2) ; extra == 'testing'

# vitessce-python

[![PyPI](https://img.shields.io/pypi/v/vitessce)](https://pypi.org/project/vitessce)
[![docs](https://img.shields.io/badge/docs-📖-57B4E9.svg)](https://vitessce.github.io/vitessce-python/)

[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/vitessce/vitessce-python/main?filepath=docs/notebooks/widget_pbmc.ipynb)
[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/vitessce/vitessce-python/blob/main/docs/notebooks/widget_on_colab.ipynb)


Python API and Jupyter widget facilitating interactive visualization of spatial single-cell data with [Vitessce](https://github.com/vitessce/vitessce).


## Installation

To install with pip:

    $ pip install vitessce[all]

## Getting started

Explore our [example notebooks](./docs/notebooks/).
These contain demos of different use cases and integrations with single-cell data analysis packages.


## Development

For a development installation (requires NodeJS and NPM),

    $ git clone https://github.com/vitessce/vitessce-python.git
    $ cd vitessce-python
    $ conda env create -f environment.yml
    $ conda activate vitessce-python-dev
    $ pip install -e ".[dev]"

### Conda environments

In this repository, there are multiple conda environments for different purposes:

- `vitessce-python-dev` (defined in [environment.yml](./environment.yml)) is used for the development of the `vitessce` package itself
- `vitessce-python-notebooks` (defined in [docs/notebooks/environment.yml](./docs/notebooks/environment.yml)) is used for running the example notebooks in the `docs/notebooks/` directory (see [`docs/notebooks/README.md`](./docs/notebooks#readme) for more information)
- `vitessce-python-binder` (defined in [binder/environment.yml](./binder/environment.yml)) is the environment used by Binder upon opening notebooks from this repository

## Linting and testing

```sh
flake8
pytest
```

### Formatting

One file:

```sh
autopep8 --in-place --aggressive ./path/to/file.py
```

All `.py` files:

```sh
find . -name '*.py' -exec autopep8 --in-place --aggressive '{}' \;
```


## Documentation

```sh
make html
```


## Deployment

To deploy a new version, increment the version of the Python package in [`setup.py`](./setup.py).

Then, when you push or merge the code with the incremented versions to `main`, the GitHub Action `deploy.yml` workflow will build and push the package to PyPI.


## Resources

- [ipywidget docs: Building a Custom Widget](https://ipywidgets.readthedocs.io/en/stable/examples/Widget%20Custom.html)
- [ipywidget docs: Low Level Widget Tutorial](https://ipywidgets.readthedocs.io/en/latest/examples/Widget%20Low%20Level.html)
- [ipywidget example: ipyleaflet](https://github.com/jupyter-widgets/ipyleaflet)
- [ipywidget example (with React): ipymaterialui](https://github.com/maartenbreddels/ipymaterialui)
- [ipywidget example (with React): higlass-python](https://github.com/higlass/higlass-python)
- [ipywidget cookiecutter](https://github.com/jupyter-widgets/widget-cookiecutter)
- [Sphinx: Getting Started](https://www.sphinx-doc.org/en/master/usage/quickstart.html)
- [Read the Docs Sphinx Theme](https://github.com/readthedocs/sphinx_rtd_theme)
- [jupyter server proxy](https://jupyter-server-proxy.readthedocs.io/en/latest/arbitrary-ports-hosts.html)

## Getting/Offering Help

If you have a specific bug or feature request, please feel free to open an [issue](https://github.com/vitessce/vitessce-python/issues/new).  Otherwise our [discussions](https://github.com/vitessce/vitessce-python/discussions) section is a great place to get help or offer it.  If you aren't sure if something is a bug or not, don't have all the reproduction steps, or just have a general question, feel free to open a discussion post.
