{"id":34090710,"url":"https://github.com/saeyslab/harpy","last_synced_at":"2026-03-16T00:51:29.015Z","repository":{"id":243857184,"uuid":"763481288","full_name":"saeyslab/harpy","owner":"saeyslab","description":"Single-cell spatial omics analysis that makes you happy!","archived":false,"fork":false,"pushed_at":"2026-02-24T19:11:32.000Z","size":851950,"stargazers_count":52,"open_issues_count":16,"forks_count":6,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-02-24T23:43:33.891Z","etag":null,"topics":["analysis-framework","bioinformatics","hpc","machine-learning","microscopy","napari-plugin","spatial"],"latest_commit_sha":null,"homepage":"https://harpy.readthedocs.io/en/latest/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/saeyslab.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"docs/contributing.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-02-26T11:30:00.000Z","updated_at":"2026-02-10T08:34:55.000Z","dependencies_parsed_at":"2024-09-18T09:14:00.443Z","dependency_job_id":"6137910e-07c8-4926-be60-940c87191a6e","html_url":"https://github.com/saeyslab/harpy","commit_stats":null,"previous_names":["saeyslab/harpy"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/saeyslab/harpy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saeyslab%2Fharpy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saeyslab%2Fharpy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saeyslab%2Fharpy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saeyslab%2Fharpy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/saeyslab","download_url":"https://codeload.github.com/saeyslab/harpy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saeyslab%2Fharpy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29860109,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-26T08:51:08.701Z","status":"ssl_error","status_checked_at":"2026-02-26T08:50:19.607Z","response_time":89,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["analysis-framework","bioinformatics","hpc","machine-learning","microscopy","napari-plugin","spatial"],"created_at":"2025-12-14T14:24:02.691Z","updated_at":"2026-02-26T13:01:37.904Z","avatar_url":"https://github.com/saeyslab.png","language":"Python","readme":"\u003c!-- These badges won't work while the GitHub repo is private:\n[![License BSD-3](https://img.shields.io/pypi/l/harpy.svg?color=green)](https://github.com/saeyslab/harpy/raw/main/LICENSE)\n[![Python Version](https://img.shields.io/pypi/pyversions/harpy-analysis.svg?color=green)](https://python.org)\n[![codecov](https://codecov.io/gh/saeyslab/harpy/graph/badge.svg?token=7UXMDWVYFZ)](https://codecov.io/gh/saeyslab/harpy)\n[![napari hub](https://img.shields.io/endpoint?url=https://api.napari-hub.org/shields/harpy)](https://napari-hub.org/plugins/harpy)\n--\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./docs/_static/img/logo.png\" alt=\"Harpy logo\" width=\"200\" /\u003e\n  \u003ch2\u003eSingle-cell spatial omics analysis that makes you happy.\u003c/h2\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[![PyPI](https://img.shields.io/pypi/v/harpy-analysis.svg)](https://pypi.org/project/harpy-analysis)\n[![Downloads](https://static.pepy.tech/badge/harpy-analysis)](https://pepy.tech/project/harpy-analysis)\n[![Build Status](https://github.com/saeyslab/harpy/actions/workflows/build.yaml/badge.svg)](https://github.com/saeyslab/harpy/actions/)\n[![documentation badge](https://readthedocs.org/projects/harpy/badge/?version=latest)](https://harpy.readthedocs.io/en/latest/)\n[![Test Status](https://github.com/saeyslab/harpy/actions/workflows/run_tests.yml/badge.svg)](https://github.com/saeyslab/harpy/actions/)\n[![codecov](https://codecov.io/gh/saeyslab/harpy/branch/main/graph/badge.svg)](https://codecov.io/gh/saeyslab/harpy)\n[![License](https://img.shields.io/badge/license-Academic%20Non--commercial-blue)](./LICENSE)\n![GitHub repo size](https://img.shields.io/github/repo-size/saeyslab/harpy)\n[![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv)\n[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)\n\n\u003c/div\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://harpy.readthedocs.io/en/latest/\"\u003eDocumentation\u003c/a\u003e\n  ·\n  \u003ca href=\"https://harpy.readthedocs.io/en/latest/quickstart.html\"\u003eQuick Start\u003c/a\u003e\n  ·\n  \u003ca href=\"https://harpy.readthedocs.io/en/latest/tutorials/index.html\"\u003eTutorials\u003c/a\u003e\n  ·\n  \u003ca href=\"https://github.com/vibspatial/harpy_vitessce\"\u003eHarpy Vitessce\u003c/a\u003e\n\u003c/p\u003e\n\n\u003e 💫 **If you find Harpy useful, please give us a [⭐](https://github.com/saeyslab/harpy)!** It helps others discover the project and supports continued development.\n\n## Why Harpy?\n\n- **Multi-platform support** for spatial transcriptomics and proteomics data.\n- **Interoperable outputs** built on [SpatialData](https://github.com/scverse/spatialdata).\n- **Scales to (very) large images**: tiled workflows with [Dask](https://www.dask.org/); optional GPU acceleration with [CuPy](https://cupy.dev/) and [PyTorch](https://pytorch.org/).\n- **End-to-end workflows** for segmentation, feature extraction, clustering, and spatial analysis.\n\n## Installation\n\n**Recommended** for end-users (Python `\u003e=3.11`).\n\n```bash\nuv venv --python=3.12  # set python version\nsource .venv/bin/activate  # activate the virtual environment\nuv pip install \"harpy-analysis[extra]\"  # use uv to pip install dependencies\npython -c 'import harpy; print(harpy.__version__)'  # check if the package is installed\n```\n\n**Only for developers.** Clone this repository locally, install the `.[dev]` instead of the `[extra]` dependencies and read the contribution guide.\n\n```bash\n# Clone repository from GitHub\nuv venv --python=3.12  # set python version\nsource .venv/bin/activate  # activate the virtual environment\nuv pip install -e '.[dev]'  # editable install with dev tooling\npython -c 'import harpy; print(harpy.__version__)'  # check if the package is installed\n# make changes\npython -m pytest  # run the tests\n```\n\nCheckout the docs for [installation instructions](https://github.com/saeyslab/harpy/blob/main/docs/installation.md) using [conda](https://github.com/conda/conda).\n\n## Quickstart\n\nSee the short, runnable [guide](./docs/quickstart.md).\n\n## 🧭 Tutorials and Guides\n\nExplore how to use Harpy for segmentation, shallow and deep feature extraction, clustering, and spatial analysis of gigapixel-scale multiplexed data with these step-by-step notebooks:\n\n- **🚀 Basic Usage of Harpy**\n\n  Learn how to read in data, perform **tiled segmentation** using [**Cellpose**](https://github.com/MouseLand/cellpose) and [**Dask-CUDA**](https://docs.rapids.ai/api/dask-cuda/stable/), extract features, and carry out clustering. 👉 [Tutorial](./docs/tutorials/general/Harpy_feature_calculation.ipynb)\n\n- **🔧 Technology-specific advice**\n\n  Learn which technologies Harpy supports. 👉 [Notebook](./docs/tutorials/general/techno_specific.ipynb)\n\n- **🧩 Pixel and Cell Clustering**\n\n  Learn how to perform unsupervised pixel- and cell-level clustering using `Harpy` together with [**FlowSOM**](https://github.com/saeyslab/FlowSOM_Python). 👉 [Tutorial](./docs/tutorials/general/FlowSOM_for_pixel_and_cell_clustering.ipynb)\n\n- **✂️ Cell Segmentation**\n\n  Explore segmentation workflows in `Harpy` using different tools:\n  - With [**Instanseg**](https://github.com/instanseg/instanseg) 👉 [Tutorial](./docs/tutorials/general/Harpy_instanseg.ipynb)\n\n  - With [**Cellpose**](https://github.com/MouseLand/cellpose) 👉 [Tutorial](./docs/tutorials/general/Harpy_feature_calculation.ipynb)\n\n  💡 Want us to add support for another segmentation method?\n  👉 [Open an issue](https://github.com/saeyslab/harpy/issues) and let us know!\n\n- **🧪 Single-cell representations from highly multiplexed images and downstream use with [PyTorch](https://pytorch.org/)**\n\n  Learn how single-cell representations can be generated from highly multiplexed images. These representations can then be used downstream to train classifiers in PyTorch. 👉 [Tutorial](./docs/tutorials/general/generate_single_cell_representations.ipynb)\n\n- **🧠 Deep Feature Extraction**\n\n  Discover how `Harpy` enables fast, scalable extraction of deep, cell-level features from multiplex imaging data with the [**KRONOS**](https://github.com/mahmoodlab/KRONOS) foundation model for proteomics. 👉 [Tutorial](./docs/tutorials/general/Featurize_with_kronos.ipynb)\n\n  💡 Want us to add support for another deep feature extraction method?\n  👉 [Open an issue](https://github.com/saeyslab/harpy/issues) and let us know!\n\n- **🔬 Shallow Feature Extraction**\n\n  Learn to extract shallow features—such as **mean**, **median**, and **standard deviation** of intensities—from multiplex imaging data with `Harpy`. 👉 [Tutorial](./docs/tutorials/advanced/Harpy_aggregate_rasters.ipynb)\n\n- **🧬 Spatial Transcriptomics**\n\n  Learn how to analyze spatial transcriptomics data with `Harpy`. For detailed information, refer to the [**SPArrOW documentation**](https://sparrow-pipeline.readthedocs.io/en/latest).\n\n  👉 [Tutorial (Mouse Liver, Resolve Molecular Cartography)](./docs/tutorials/advanced/Harpy_transcriptomics.ipynb)\n\n  👉 [Tutorial (Human Ovarian Cancer, Xenium 10x Genomics)](./docs/tutorials/advanced/Harpy_transcriptomics_xenium.ipynb)\n\n---\n\n- **🌐 Multiple samples and coordinate systems**\n\n  Learn how to work with multiple samples, intrinsic and micron coordinates. 👉 [Tutorial](./docs/tutorials/advanced/coordinate_systems.ipynb)\n\n---\n\n- **📐 Rasterize and vectorize labels and shapes**\n\n  Learn how to convert a segmentation mask (array) into its vectorized form, and segmentation boundaries (polygons) into their rasterized equivalents. This conversion is useful, for example, when integrating annotations (e.g., from [QuPath](https://qupath.github.io/)) into downstream spatial omics analysis.👉 [Tutorial](./docs/tutorials/advanced/Rasterize_and_vectorize.ipynb)\n\n---\n\n📚 For a complete list of tutorials, visit the [**Harpy documentation**](https://harpy.readthedocs.io/en/latest/tutorials).\n\n## Computational benchmark\n\nExplore the benchmark performance of **Harpy** on a large MACSima tonsil proteomics dataset. 👉 [Results](./docs/tutorials/general/benchmark.ipynb)\n\n## Usage\n\n[Learn](https://github.com/saeyslab/harpy/blob/main/docs/usage.md) how `Harpy` can be integrated into your workflow.\n\n## Contributing\n\nSee [here](https://github.com/saeyslab/harpy/blob/main/docs/contributing.md) for info on how to contribute to Harpy.\n\n## References\n\n- https://github.com/ashleve/lightning-hydra-template\n\n## License\n\nCheck the [license](https://github.com/saeyslab/harpy/blob/main/LICENSE). Harpy is free for academic usage.\nFor commercial usage, please contact Saeyslab.\n\n## Issues\n\nIf you encounter any problems, please [file an issue] along with a detailed description.\n\n[Cookiecutter]: https://github.com/audreyr/cookiecutter\n[BSD-3]: http://opensource.org/licenses/BSD-3-Clause\n[cookiecutter-napari-plugin]: https://github.com/napari/cookiecutter-napari-plugin\n[file an issue]: https://github.com/saeyslab/harpy/issues\n[napari]: https://github.com/napari/napari\n[tox]: https://tox.readthedocs.io/en/latest/\n[pip]: https://pypi.org/project/pip/\n[PyPI]: https://pypi.org/\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaeyslab%2Fharpy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsaeyslab%2Fharpy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaeyslab%2Fharpy/lists"}