{"id":31065784,"url":"https://github.com/henriqueslab/nanopyx","last_synced_at":"2025-09-15T16:57:19.515Z","repository":{"id":65703813,"uuid":"505388398","full_name":"HenriquesLab/NanoPyx","owner":"HenriquesLab","description":"Nanoscopy library for Python (NanoPyx, the successor to NanoJ) - focused on light microscopy and super-resolution imaging","archived":false,"fork":false,"pushed_at":"2025-09-11T13:21:56.000Z","size":207729,"stargazers_count":85,"open_issues_count":6,"forks_count":11,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-09-11T13:25:25.874Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc-by-4.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HenriquesLab.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","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":"2022-06-20T10:08:28.000Z","updated_at":"2025-09-11T13:21:12.000Z","dependencies_parsed_at":"2023-10-16T19:23:23.939Z","dependency_job_id":"1b7a1d99-90fb-4950-a553-d1e45863103d","html_url":"https://github.com/HenriquesLab/NanoPyx","commit_stats":null,"previous_names":[],"tags_count":45,"template":false,"template_full_name":null,"purl":"pkg:github/HenriquesLab/NanoPyx","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HenriquesLab%2FNanoPyx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HenriquesLab%2FNanoPyx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HenriquesLab%2FNanoPyx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HenriquesLab%2FNanoPyx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HenriquesLab","download_url":"https://codeload.github.com/HenriquesLab/NanoPyx/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HenriquesLab%2FNanoPyx/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275289704,"owners_count":25438494,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-15T02:00:09.272Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2025-09-15T16:57:16.922Z","updated_at":"2025-09-15T16:57:19.503Z","avatar_url":"https://github.com/HenriquesLab.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NanoPyx\n\n\u003cimg src=\"https://github.com/HenriquesLab/NanoPyx/blob/main/.github/logo.png\" align=\"right\" width=\"230\"/\u003e\n\n[![PyPI](https://img.shields.io/pypi/v/nanopyx.svg?color=green)](https://pypi.org/project/nanopyx)\n[![Python Version](https://img.shields.io/pypi/pyversions/nanopyx.svg?color=green)](https://python.org)\n[![Downloads](https://img.shields.io/pypi/dm/nanopyx)](https://pypi.org/project/nanopyx)\n[![Docs](https://img.shields.io/badge/documentation-link-blueviolet)](https://henriqueslab.github.io/NanoPyx)\n[![License](https://img.shields.io/github/license/HenriquesLab/NanoPyx?color=Green)](https://github.com/HenriquesLab/NanoPyx/blob/main/LICENSE.txt)\n[![Tests](https://github.com/HenriquesLab/NanoPyx/actions/workflows/nanopyx_oncall_mechanic.yml/badge.svg)](https://github.com/HenriquesLab/NanoPyx/actions/workflows/nanopyx_oncall_mechanic.yml)\n[![Coverage](https://img.shields.io/codecov/c/github/HenriquesLab/NanoPyx.svg?branch=main)](https://img.shields.io/codecov/c/github/HenriquesLab/NanoPyx?branch=main)\n[![Contributors](https://img.shields.io/github/contributors-anon/HenriquesLab/NanoPyx)](https://github.com/HenriquesLab/NanoPyx/graphs/contributors)\n[![GitHub stars](https://img.shields.io/github/stars/HenriquesLab/NanoPyx?style=social)](https://github.com/HenriquesLab/NanoPyx/)\n[![GitHub forks](https://img.shields.io/github/forks/HenriquesLab/NanoPyx?style=social)](https://github.com/HenriquesLab/NanoPyx/)\n[![DOI](https://img.shields.io/badge/Publication-Nat._Methods-purple)](https://doi.org/10.1038/s41592-024-02562-6)\n\nNanoscopy Python library (NanoPyx, the successor to NanoJ) - focused on light microscopy and super-resolution imaging\n\nWARNING: Currently stable and working for Python 3.9 to 3.12. For Python 3.13, it is possible to use it if you build numpy\u003c2 from source but it is not officially supported (Yet!)\n\n---\n\n## What is the NanoPyx 🔬 Library?\n\nNanoPyx is a library specialized in the analysis of light microscopy and super-resolution data.\nIt is a successor to [NanoJ](https://github.com/HenriquesLab/NanoJ-Core), which is a Java library for the analysis of super-resolution microscopy data.\n\nNanoPyx focuses on performance, by using the [Liquid Engine](https://github.com/HenriquesLab/LiquidEngine) at its core. It implements methods for the bioimage analysis field, with a special emphasis on those developed by the [Henriques Laboratory](https://henriqueslab.github.io/).\nIt will be distributed as a Python Library and also as [Codeless Jupyter Notebooks](https://github.com/HenriquesLab/NanoPyx#codeless-jupyter-notebooks-available), that can be run locally or on Google Colab, and as a [napari plugin](https://github.com/HenriquesLab/napari-NanoPyx).\n\nYou can read more about NanoPyx in our [publication].\n\nCurrently it implements the following approaches:\n- A reimplementation of the NanoJ image registration, SRRF and Super Resolution metrics\n- eSRRF\n- Non-local means denoising\n- More to come soon™\n\nif you found this work useful, please cite: [publication]\n\n## Short Video Tutorials\n| What is NanoPyx? | How to use NanoPyx in Google Colab? |\n|:-:|:-:|\n| [![](https://user-images.githubusercontent.com/7071808/259985020-b629a570-f131-4666-aadb-ba62ac7dbea2.png)](https://youtu.be/iAdgusBAU0Q) | [![](https://user-images.githubusercontent.com/7071808/259985779-4403d895-76a8-4050-bfd7-9317516a8f3e.png)](https://youtu.be/KD0RzolFnd4) |\n\n| How to use NanoPyx locally? | How to implement your own Liquid Engine? |\n|:-:|:-:|\n| [![](https://github.com/HenriquesLab/NanoPyx/blob/main/.github/tutorial1.png?raw=true)](https://youtu.be/Dx2lHoRB044?si=SQPbLavoMdQyCV9X) | [![](https://github.com/HenriquesLab/NanoPyx/blob/main/.github/liquidengine.png?raw=true)](https://youtu.be/gRGEjdT8opY?si=hbyQooANFz9Feasc) |\n\n| How to Create a Python Package with the Liquid Engine? | How to Build your Liquid Engine Class in 1 minute |\n|:-:|:-:|\n| [![](https://github.com/HenriquesLab/NanoPyx/blob/main/.github/lecookiecutter.png?raw=true)](https://youtu.be/s2SY6IlsWQI?si=KhhLEwYflwNq_2Zp) | [![](https://github.com/HenriquesLab/NanoPyx/blob/main/.github/buildleoneminute.png?raw=true)](https://youtu.be/QQsXrZ_jFa8?si=v_UxKjksC8jyXu8K) |\n\n|  How to Benchmark your Implementations with the Liquid Engine in 1 minute  |  |\n|:-:|:-:|\n| [![](https://github.com/HenriquesLab/NanoPyx/blob/main/.github/benchmarkle.png?raw=true)](https://youtu.be/9hF7nLtFzoo?si=7sphbtSOi4TAdqcw) | [![]()]() |\n\n\n\n## Codeless jupyter notebooks available:\n\n| Category | Method | Last test | Notebook | Colab Link |\n| --- | --- | --- | --- | --- |\n| Denoising | Non-local Means |  ✅ by ADB (25/01/24) | [![Jupyter Notebook](https://img.shields.io/badge/jupyter-blue.svg?style=flat\u0026logo=jupyter\u0026logoColor=white)](https://github.com/HenriquesLab/NanoPyx/blob/main/notebooks/NonLocalMeansDenoising.ipynb) | [![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://githubtocolab.com/HenriquesLab/NanoPyx/blob/main/notebooks/NonLocalMeansDenoising.ipynb) |\n| Registration | Channel Registration |  ✅ by BMS (18/04/24) | [![Jupyter Notebook](https://img.shields.io/badge/jupyter-blue.svg?style=flat\u0026logo=jupyter\u0026logoColor=white)](https://github.com/HenriquesLab/NanoPyx/blob/main/notebooks/ChannelRegistration.ipynb) | [![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://githubtocolab.com/HenriquesLab/NanoPyx/blob/main/notebooks/ChannelRegistration.ipynb) |\n| Registration | Drift Correction | ✅ by BMS (18/04/24) | [![Jupyter Notebook](https://img.shields.io/badge/jupyter-blue.svg?style=flat\u0026logo=jupyter\u0026logoColor=white)](https://github.com/HenriquesLab/NanoPyx/blob/main/notebooks/DriftCorrection.ipynb) | [![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://githubtocolab.com/HenriquesLab/NanoPyx/blob/main/notebooks/DriftCorrection.ipynb) |\n| Quality Control | Image fidelity and resolution metrics | ✅ by ADB (25/01/24) | [![Jupyter Notebook](https://img.shields.io/badge/jupyter-blue.svg?style=flat\u0026logo=jupyter\u0026logoColor=white)](https://github.com/HenriquesLab/NanoPyx/blob/main/notebooks/SRMetrics.ipynb) | [![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://githubtocolab.com/HenriquesLab/NanoPyx/blob/main/notebooks/SRMetrics.ipynb) |\n| Super-resolution | SRRF | ✅ by ADB (25/01/24) | [![Jupyter Notebook](https://img.shields.io/badge/jupyter-blue.svg?style=flat\u0026logo=jupyter\u0026logoColor=white)](https://github.com/HenriquesLab/NanoPyx/blob/main/notebooks/SRRFandQC.ipynb) | [![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://githubtocolab.com/HenriquesLab/NanoPyx/blob/main/notebooks/SRRFandQC.ipynb) |\n| Super-resolution | eSRRF | ✅ by BMS (25/01/24) | [![Jupyter Notebook](https://img.shields.io/badge/jupyter-blue.svg?style=flat\u0026logo=jupyter\u0026logoColor=white)](https://github.com/HenriquesLab/NanoPyx/blob/main/notebooks/eSRRFandQC.ipynb) | [![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://githubtocolab.com/HenriquesLab/NanoPyx/blob/main/notebooks/eSRRFandQC.ipynb) |\n| Tutorial | Notebook with Example Dataset | ✅ by ADB (25/01/24) | [![Jupyter Notebook](https://img.shields.io/badge/jupyter-blue.svg?style=fflat\u0026logo=jupyter\u0026logoColor=white)](https://github.com/HenriquesLab/NanoPyx/blob/main/notebooks/ExampleDataSRRFandQC.ipynb) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://githubtocolab.com/HenriquesLab/NanoPyx/blob/main/notebooks/ExampleDataSRRFandQC.ipynb) |\n\n\n## Workshop Notebooks\n\n| Event | Contents | Notebook | Colab Link | Solutions |\n| --- | --- | --- | --- | --- |\n| [I2K 2024](https://events.humantechnopole.it/event/1/overview) | NanoPyx and Liquid Engine basic usage | [![Jupyter Notebook](https://img.shields.io/badge/jupyter-blue.svg?style=fflat\u0026logo=jupyter\u0026logoColor=white)](https://github.com/HenriquesLab/NanoPyx/blob/main/notebooks/workshops/I2K24.ipynb) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://githubtocolab.com/HenriquesLab/NanoPyx/blob/main/notebooks/workshops/I2K24.ipynb) | [![Jupyter Notebook](https://img.shields.io/badge/jupyter-blue.svg?style=fflat\u0026logo=jupyter\u0026logoColor=white)](https://github.com/HenriquesLab/NanoPyx/blob/main/notebooks/workshops/solutions/I2K24.ipynb) |  \n\n\n## napari plugin\n\nNanoPyx is also available as a [napari plugin](https://github.com/HenriquesLab/napari-nanopyx), which can be installed via pip:\n\n```\npip install napari-nanopyx\n```\n\n## Installation\n\n`NanoPyx` is compatible and tested with Python 3.9, 3.10, 3.11 and 3.12 in MacOS, Windows and Linux. Installation time depends on your hardware and internet connection, but should take around 5 minutes.\n\nYou can install `NanoPyx` via [pip]:\n\n```shell\npip install nanopyx\n```\n\nIf you want to install with support for Jupyter notebooks:\n\n```shell\npip install nanopyx[jupyter]\n```\n\nor if you want to install with all optional dependencies:\n\n```shell\npip install nanopyx[all]\n```\n\nif you want access to the cupy implementation of 2D convolution you need to install the package version corresponding to your local CUDA installation. Please check the official documentation of cupy for further details. As an example if you wanted to install cupy for CUDA v12.X\n\n```shell\npip install cupy-cuda12x\n```\n\nTo install latest development version:\n\n```shell\npip install git+https://github.com/HenriquesLab/NanoPyx.git\n```\n\n### Notes for Mac users\n\nIf you wish to compile the NanoPyx library from source, you will need to install the following dependencies:\n\n- Homebrew from \u003chttps://brew.sh/\u003e\n- gcc, llvm and libomp from Homebrew through the command:\n\n```shell\nbrew install gcc llvm libomp\n```\n\n## Run in jupyterlab within a docker container\n\n```shell\ndocker run --name nanopyx1 -p 8888:8888 henriqueslab/nanopyx:latest\n```\n\n## Usage\n\nDepending on your preferences and coding proficiency you might be using NanoPyx differently. \n\n- If you are using Jupyter Notebooks or Google Colab notebooks check out our video tutorial [here](https://youtu.be/KD0RzolFnd4) and [here](https://www.youtube.com/watch?v=Dx2lHoRB044)\n- If you are using our [napari plugin](https://github.com/HenriquesLab/NanoPyx#napari-plugin) check out the official [napari tutorial](https://napari.org/stable/tutorials/index.html) and stay tuned for more!\n- If you prefer to use the Python library and take full advantage of the Liquid Engine flexibility check out our [wiki](https://github.com/HenriquesLab/NanoPyx/wiki), our [cookiecutter](https://github.com/HenriquesLab/LiquidEngineCookieCutter) and our video tutorials [here](https://youtu.be/gRGEjdT8opY?si=o0ovP5B-235BM0hu) and [here](https://youtu.be/s2SY6IlsWQI?si=5goo0ZQ1Ynyz3yTF).\n- Liquid engine template files for a simple example:\n    - Simple Liquid Engine templates [here](https://github.com/HenriquesLab/NanoPyx/blob/main/src/nanopyx/core/templates/_le_template_simple.pyx) and [here](https://github.com/HenriquesLab/NanoPyx/blob/main/src/nanopyx/core/templates/_le_template_simple_.py)\n    - Fully fledged Liquid Engine templates [here](https://github.com/HenriquesLab/NanoPyx/blob/main/src/nanopyx/core/templates/_le_template_advanced.pyx) and [here](https://github.com/HenriquesLab/NanoPyx/blob/main/src/nanopyx/core/templates/_le_template_advanced.cl)\n\n## Wiki\n\nIf you want more in depth instructions on how to use nanopyx and its Liquid Engine please refer to our [wiki](https://github.com/HenriquesLab/NanoPyx/wiki). In the wiki you can find step by step tutorials describing how each methods works and how to implement your own Liquid Engine methods.\n\n## Contributing\n\nContributions are very welcome.\nPlease read our [Contribution Guidelines](https://github.com/HenriquesLab/NanoPyx/blob/main/CONTRIBUTING.md) to know how to proceed.\n\n## License\n\nDistributed under the terms of the [CC-By v4.0] license,\n\"NanoPyx\" is free and open source software\n\n## Issues\n\nIf you encounter any problems, please [file an issue] along with a detailed description.\n\n[CC-By v4.0]: https://creativecommons.org/licenses/by/4.0/\n[file an issue]: https://github.com/HenriquesLab/NanoPyx/issues\n[pip]: https://pypi.org/project/pip/\n[publication]: https://doi.org/10.1038/s41592-024-02562-6\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhenriqueslab%2Fnanopyx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhenriqueslab%2Fnanopyx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhenriqueslab%2Fnanopyx/lists"}