{"name":"napari-animation","display_name":"napari-animation","visibility":"public","icon":"","categories":[],"schema_version":"0.2.0","on_activate":null,"on_deactivate":null,"contributions":{"commands":[{"id":"napari-animation.make_animation_widget","title":"Make animation widget","python_name":"napari_animation:AnimationWidget","short_title":null,"category":null,"icon":null,"enablement":null}],"readers":null,"writers":null,"widgets":[{"command":"napari-animation.make_animation_widget","display_name":"wizard","autogenerate":false}],"sample_data":null,"themes":null,"menus":{},"submenus":null,"keybindings":null,"configuration":[]},"package_metadata":{"metadata_version":"2.1","name":"napari-animation","version":"0.0.8","dynamic":null,"platform":null,"supported_platform":null,"summary":"A plugin for making animations in napari","description":"# napari-animation\n\n[![License](https://img.shields.io/pypi/l/napari-animation.svg?color=green)](https://github.com/napari/napari-animation/raw/main/LICENSE)\n[![PyPI](https://img.shields.io/pypi/v/napari-animation.svg?color=green)](https://pypi.org/project/napari-animation)\n[![Python Version](https://img.shields.io/pypi/pyversions/napari-animation.svg?color=green)](https://python.org)\n[![tests](https://github.com/napari/napari-animation/actions/workflows/test_and_deploy.yml/badge.svg)](https://github.com/napari/napari-animation/actions)\n[![codecov](https://codecov.io/gh/napari/napari-animation/branch/main/graph/badge.svg)](https://codecov.io/gh/napari/napari-animation)\n\n**napari-animation** is a plugin for making animations in [napari](https://napari.org).\n\n

\n \n

\n\n----------------------------------\n\n[Merlin Lange](https://twitter.com/Merlin_Lange) used *napari-animation* to create one of [Nature's best science images for September 2022](https://www.nature.com/immersive/d41586-022-03051-6/index.html)\n\n----------------------------------\n\nThis plugin is built on [`naparimovie`](https://github.com/guiwitz/naparimovie) from [@guiwitz](https://github.com/guiwitz). `naparimovie` was submitted to napari in [PR#851](https://github.com/napari/napari/pull/780) before napari plugin infrastructure existed.\n\n----------------------------------\n\n## Overview\n\n**napari-animation** provides a framework for the creation of animations in napari. The plugin contains:\n\n- an easy to use GUI for creating animations interactively;\n- a Python package for the programmatic creation of animations.\n\nThis plugin remains under development and contributions are very welcome, please open an issue to discuss potential improvements.\n\nYou can read the documentation at [https://napari.org/napari-animation](https://napari.org/napari-animation)\n\n## Installation\n\n### PyPI\n`napari-animation` is available through the Python package index and can be installed using `pip`.\n\n```sh\npip install napari-animation\n```\n\n```{warning}\n`napari-animation` uses `ffmpeg` to export animations. If you are using a macOS arm64 computer (Apple Silicon e.g. M1, M2 processor)\nthe PyPI package does not include the needed binary for your platform. You will need to install `ffmpeg` using\n`conda` from the [conda-forge channel](https://conda-forge.org/docs/#what-is-conda-forge) (`conda install -c conda-forge ffmpeg`)\nor using [`homebrew`](https://brew.sh) (`brew install ffmpeg`).\n```\n\n### Conda\n`napari-animation` is also available for install using `conda` through the [conda-forge channel](https://conda-forge.org/docs/#what-is-conda-forge).\n\n```sh\nconda install -c conda-forge napari-animation\n```\n\n### Local\nYou can clone this repository and install locally with\n\n pip install -e .\n\n### Interactive use\n**napari-animation** can be used interactively.\n\nAn animation is created by capturing [keyframes](https://en.wikipedia.org/wiki/Key_frame) containing the current viewer state.\n\n

\n \n

\n\nTo activate the GUI, select **napari-animation: wizard** from the *plugins menu*\n\n

\n \n

\n\n### Scripting\n\n**napari-animation** can also be run programatically, allowing for reproducible, scripted creation of animations.\n\n```python\nfrom napari_animation import Animation\n\nanimation = Animation(viewer)\n\nviewer.dims.ndisplay = 3\nviewer.camera.angles = (0.0, 0.0, 90.0)\nanimation.capture_keyframe()\nviewer.camera.zoom = 2.4\nanimation.capture_keyframe()\nviewer.camera.angles = (-7.0, 15.7, 62.4)\nanimation.capture_keyframe(steps=60)\nviewer.camera.angles = (2.0, -24.4, -36.7)\nanimation.capture_keyframe(steps=60)\nviewer.reset_view()\nviewer.camera.angles = (0.0, 0.0, 90.0)\nanimation.capture_keyframe()\nanimation.animate('demo.mov', canvas_only=False)\n```\n\n## Examples\n\nExamples can be found in our [Examples gallery](https://napari.org/napari-animation/gallery), generated from [our example scripts](https://github.com/napari/napari-animation/tree/main/examples). Simple examples for both interactive and headless\nuse of the plugin follow.\n\n## Contributing\n\nContributions are very welcome and a detailed contributing guide is coming soon.\nIn the meantime, clone this repository and install it in editable mode using `pip`:\n\n```\npip install -e .\n```\nWe recommend using a virtual environment, for example `conda`.\n\n\n```{important}\nEnsure you have a suitable Qt backend for napari! We recommend `PyQt5`.\nFor more information, see the napari [Qt backend installation guide](https://napari.org/stable/tutorials/fundamentals/installation.html#choosing-a-different-qt-backend)\n```\n\nTo set up your development installation, clone this repository, navigate to the clone folder, and install napari-animation in editable mode using `pip`.\n\n```sh\nconda create -n nap-anim python=3.10\nconda activate nap-anim\npip install -e \".[dev]\" PyQt5\n\n```\n\nTests are run with `pytest`.\nYou can make sure your `[dev]` installation is working properly by running\n`pytest .` from within the repository.\n\n```{note}\nWe use [`pre-commit`](https://pre-commit.com) to sort imports and lint with\n[`ruff`](https://github.com/astral-sh/ruff) and format code with\n[`black`](https://github.com/psf/black) automatically prior to each commit.\nTo minmize test errors when submitting pull requests, please install `pre-commit`\nin your environment as follows:\n\n`pre-commit install`\n```\n\n## Documentation\n\nThe documentation is available at [https://napari.org/napari-animation](https://napari.org/napari-animation)\n\nThe documentation for napari-animation is built with [Sphinx](https://www.spinx-doc.org) and the [napari Sphinx Theme](https://github.com/napari/napari-sphinx-theme).\n\n### Building docs locally\n\nAfter installing the documentation dependencies with\n\n```sh\npip install \".[doc]\"\n```\n\nyou can see a local version of the documentation by running\n\n```sh\nmake docs\n```\n\nOpen up the `docs/_build/index.html` file in your browser, and you'll see the home page of the docs being displayed.\n\n### Deploying docs\n\nThe napari-animation documentation is automatically built and deployed to the website\nwhenever the main branch is updated, or a new release is tagged.\nThis is controlled by the [deploy_docs.yml](https://github.com/napari/napari-animation/blob/main/.github/workflows/deploy_docs.yml) github actions script.\n\nYou can also manually trigger a documenation re-build and deployment [from the github actions tab](https://github.com/napari/napari-animation/actions/workflows/deploy_docs.yml).\n\n## License\n\nDistributed under the terms of the [BSD-3 license](http://opensource.org/licenses/BSD-3-Clause),\n`napari-animation` is free and open source software.\n\n## Issues\n\nIf you encounter any problems, please [file an issue](https://github.com/napari/napari-animation/issues) along with a detailed description.\n\n[Cookiecutter]: https://github.com/audreyr/cookiecutter\n[@napari]: https://github.com/napari\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/sofroniewn/napari-animation/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","description_content_type":"text/markdown","keywords":null,"home_page":"https://github.com/napari/napari-animation","download_url":"https://github.com/napari/napari-animation","author":"Nicholas Sofroniew, Alister Burt, Guillaume Witz, Faris Abouakil, Talley Lambert","author_email":null,"maintainer":null,"maintainer_email":null,"license":"BSD 3-Clause","classifier":["Development Status :: 3 - Alpha","Intended Audience :: Science/Research","Topic :: Scientific/Engineering","Topic :: Scientific/Engineering :: Visualization","Framework :: napari","Programming Language :: Python","Programming Language :: Python :: 3","Programming Language :: Python :: 3.8","Programming Language :: Python :: 3.9","Programming Language :: Python :: 3.10","Operating System :: OS Independent","License :: OSI Approved :: BSD License"],"requires_dist":["imageio","imageio-ffmpeg","napari >=0.4.19rc5","npe2","numpy","qtpy","scipy","tqdm >=4.56.0","superqt","pre-commit ; extra == 'dev'","black ; extra == 'dev'","ruff ; extra == 'dev'","check-manifest ; extra == 'dev'","pytest ; extra == 'dev'","pytest-cov ; extra == 'dev'","pytest-qt ; extra == 'dev'","lxml-html-clean ; extra == 'dev'","sphinx >6 ; extra == 'dev'","sphinx-autobuild ; extra == 'dev'","sphinx-external-toc ; extra == 'dev'","sphinx-copybutton ; extra == 'dev'","sphinx-gallery ; extra == 'dev'","sphinx-favicon ; extra == 'dev'","sphinxcontrib-video ; extra == 'dev'","matplotlib ; extra == 'dev'","myst-nb ; extra == 'dev'","napari-sphinx-theme >=0.3.0 ; extra == 'dev'","sphinx >6 ; extra == 'doc'","sphinx-autobuild ; extra == 'doc'","sphinx-external-toc ; extra == 'doc'","sphinx-copybutton ; extra == 'doc'","sphinx-gallery ; extra == 'doc'","sphinx-favicon ; extra == 'doc'","sphinxcontrib-video ; extra == 'doc'","matplotlib ; extra == 'doc'","myst-nb ; extra == 'doc'","napari-sphinx-theme >=0.3.0 ; extra == 'doc'","pytest ; extra == 'testing'","pytest-cov ; extra == 'testing'","pytest-qt ; extra == 'testing'","lxml-html-clean ; extra == 'testing'"],"requires_python":">=3.8","requires_external":null,"project_url":null,"provides_extra":["dev","doc","testing"],"provides_dist":null,"obsoletes_dist":null},"npe1_shim":false}