├── .circleci └── config.yml ├── .codespellrc ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── config.yml │ ├── new_content.md │ └── task.md ├── PULL_REQUEST_TEMPLATE.md ├── TEST_FAIL_TEMPLATE.md ├── labeler.yml ├── missing_translations.md └── workflows │ ├── actionlint.yml │ ├── auto_author_assign.yml │ ├── build_and_deploy.yml │ ├── build_docs.yml │ ├── build_trigger.yml │ ├── circleci.yml │ ├── codespell.yml │ ├── edit_pr_description.yml │ ├── labeler.yml │ ├── linkcheck.yml │ ├── pr_dependencies.yml │ └── remove_ready_to_merge.yml ├── .gitignore ├── .pre-commit-config.yaml ├── EULA.md ├── LICENSE ├── Makefile ├── README.md └── docs ├── _scripts ├── _table_maker.py ├── prep_docs.py ├── update_event_docs.py ├── update_preference_docs.py └── update_ui_sections_docs.py ├── _static ├── announcement.html ├── custom.css ├── favicon │ ├── logo-noborder-180.png │ ├── logo-silhouette-192.png │ └── logo-silhouette-dark-light.svg ├── images │ ├── 2D-button.png │ ├── 3D-button.png │ ├── 3D_paths.png │ ├── 3d_interaction.ai │ ├── 3d_interaction_click_line.png │ ├── 3d_interaction_coordianates.png │ ├── 3d_interaction_ray_intersection.png │ ├── IPython.png │ ├── LLSM.png │ ├── LLSM.webm │ ├── Viewer-with-arrows.png │ ├── add_points.png │ ├── add_vectors_image.png │ ├── annotated_bbox.png │ ├── blending.png │ ├── brain_surface.png │ ├── brain_surface.webm │ ├── bundle_02.png │ ├── bundle_04.png │ ├── bundle_06.png │ ├── bundle_07.png │ ├── bundle_09.png │ ├── bundle_10.png │ ├── bundle_11.png │ ├── bundle_13.png │ ├── bundle_17.png │ ├── bundle_18.png │ ├── bundle_19.png │ ├── bundle_20.png │ ├── bundle_21.png │ ├── bundle_22.png │ ├── bundle_24.png │ ├── bundle_28.png │ ├── bundle_29.png │ ├── bundle_30.png │ ├── bundle_31.png │ ├── bundle_32.png │ ├── bundle_33.png │ ├── bundle_34.png │ ├── bundle_35.png │ ├── bundle_dev_warning.png │ ├── bundle_open.png │ ├── bundle_open_anyway.png │ ├── bundle_security_privacy.png │ ├── button-right-click-indicator.png │ ├── chunked-format.png │ ├── circleci-link.png │ ├── command-palette.png │ ├── command-palette.webm │ ├── console.png │ ├── context_type_hint.png │ ├── contrast_limits.png │ ├── contrast_limits.webm │ ├── coverage_report.png │ ├── dask1.png │ ├── dask1.webm │ ├── dask2.png │ ├── dask2.webm │ ├── dask_repr.png │ ├── delete_label.png │ ├── delete_label.webm │ ├── dims_roll_lock_widget.png │ ├── doc-ci-1.png │ ├── doc-ci-2.png │ ├── doc-ci-3.png │ ├── draw_component.png │ ├── draw_component.webm │ ├── edit_token_permissions.png │ ├── editing_points.png │ ├── editing_points.webm │ ├── editing_shapes.png │ ├── editing_shapes.webm │ ├── example-1320.png │ ├── fine_grained_token.png │ ├── grid-widget.png │ ├── handedness.png │ ├── labels-layer-eraser.png │ ├── launch_ipython.png │ ├── launch_jupyter.png │ ├── launch_script.png │ ├── layerlist.png │ ├── lines_not_run_highlighted_in_red.png │ ├── logo.png │ ├── main-menu-file-sub-menu-preferences.png │ ├── main-menu-file.png │ ├── main-menu-help.png │ ├── main-menu-plugins.png │ ├── main-menu-view.png │ ├── main-menu-window.png │ ├── manual_label.png │ ├── manual_label.webm │ ├── merge_labels.png │ ├── merge_labels.webm │ ├── mitosis.png │ ├── mitosis.webm │ ├── nD_labels.png │ ├── nD_shapes.png │ ├── nD_shapes.webm │ ├── nD_vectors.png │ ├── nD_vectors.webm │ ├── napari-logo-3-with-guides.png │ ├── napari-logo-3.png │ ├── napari-logo-old-new.png │ ├── napari_plugins_1st_napari_get_reader.png │ ├── napari_plugins_2nd_reader_function.png │ ├── napari_plugins_3rd_pytest_passed.png │ ├── napari_plugins_4th_test_get_reader_returns_callable-failed.png │ ├── napari_plugins_5th_tests_passed.png │ ├── ndisplay.png │ ├── octree.png │ ├── paging-chunks.png │ ├── pan-zoom-tool.png │ ├── pathology.png │ ├── pathology.webm │ ├── plugin-install-dialog.png │ ├── plugin-manager.png │ ├── plugin-menu.png │ ├── point-adding-tool.png │ ├── point-deleting-tool.png │ ├── point-selecting-tool.png │ ├── point_annotator_demo.png │ ├── point_annotator_demo.webm │ ├── points_save_dialog.png │ ├── rendering.png │ ├── rotated-image.png │ ├── scaling.png │ ├── scaling.webm │ ├── screenshot-add-image.png │ ├── second_coverage_report.png │ ├── secrets_section.png │ ├── segmentation_bbox.png │ ├── segmentation_labels.png │ ├── shape-add-ellipses.png │ ├── shape-add-lasso.png │ ├── shape-add-lines.png │ ├── shape-add-path.png │ ├── shape-add-polygons.png │ ├── shape-add-polyline.png │ ├── shape-add-rectangles.png │ ├── shape-delete-shape.png │ ├── shape-move-to-back.png │ ├── shape-move-to-front.png │ ├── shape-select-shape.png │ ├── shape-vertex-insert.png │ ├── shape-vertices-select.png │ ├── shape_resizing.png │ ├── shape_resizing.webm │ ├── shape_vertex_delete.png │ ├── shape_vertex_editing.png │ ├── shape_vertex_editing.webm │ ├── smFISH.png │ ├── smFISH.webm │ ├── split_label.png │ ├── split_label.webm │ ├── test_coverage_htmlcov_directory.png │ ├── tests.png │ ├── token_permission_form.png │ ├── token_permission_selection.png │ ├── tracks_3d_t.png │ ├── tracks_3d_t.webm │ ├── tracks_btrack.png │ ├── tracks_color_by.png │ ├── tracks_color_by.webm │ ├── tracks_isbi.png │ ├── tracks_isbi.webm │ ├── tracks_simple_demo.png │ ├── tracks_simple_demo.webm │ ├── tracks_tail_length.png │ ├── tracks_tail_length.webm │ ├── tracks_tail_width.png │ ├── tracks_tail_width.webm │ ├── transform-icon.svg │ ├── transform-tool.png │ ├── triangle-edge.png │ ├── triangle-edge.webm │ ├── tribolium.jpg │ ├── tribolium.webm │ ├── update_token_permissions.png │ ├── viewer-buttons.png │ ├── viewer-pan-zoom.jpg │ ├── viewer-pan-zoom.webm │ ├── viewer_layout.jpg │ ├── vs_code_debug.png │ ├── windows_bundle_command_terminal.png │ ├── windows_bundle_installer_finish.png │ ├── windows_bundle_installer_progress.png │ ├── windows_bundle_installer_start.png │ └── windows_launch_napari.png ├── opengraph_image.png └── version_switcher.json ├── _templates ├── autosummary │ ├── class.rst │ └── module.rst ├── details_polygon_path_tool.md ├── navbar-project.html ├── sbt-sidebar-footer.html ├── sidebar-link-items.html └── sidebar-nav-bs.html ├── _toc.yml ├── api ├── event_loop.rst ├── index.md ├── misc.rst ├── modules.rst └── view_layer.rst ├── community ├── code_of_conduct.md ├── code_of_conduct_reporting.md ├── governance.md ├── index.md ├── licensing.md ├── meeting_schedule.md ├── mission_and_values.md ├── resources.md ├── team.md └── working_groups.md ├── conf.py ├── data └── 1BNA.obj.gz ├── developers ├── architecture │ ├── app_model.md │ ├── dir_organization.md │ ├── index.md │ ├── magicgui_type_reg.md │ ├── napari_models.md │ └── ui_sections │ │ └── index.md ├── contributing │ ├── dev_install.md │ ├── documentation │ │ ├── docs_deployment.md │ │ ├── docs_template.md │ │ └── index.md │ ├── index.md │ ├── performance │ │ ├── benchmarks.md │ │ ├── index.md │ │ └── profiling.md │ ├── testing.md │ └── translations.md ├── coredev │ ├── core_dev_guide.md │ ├── maintenance.md │ ├── packaging.md │ └── release.md ├── images │ └── execution_graph.png └── index.md ├── further-resources ├── glossary.md ├── napari-workshops.md └── sample_data.md ├── gallery.md ├── guides ├── 3D_interactivity.md ├── contexts_expressions.md ├── event_loop.md ├── events_reference.md ├── handedness.md ├── index.md ├── layers.md ├── performance.md ├── rendering.md ├── threading.md └── triangulation.md ├── howtos ├── docker.md ├── extending │ ├── connecting_events.md │ ├── index.md │ └── magicgui.md ├── headless.md ├── index.md ├── layers │ ├── image.md │ ├── index.md │ ├── labels.md │ ├── points.md │ ├── shapes.md │ ├── surface.md │ ├── tracks.md │ └── vectors.md ├── napari_imageJ.md ├── perfmon.md └── themes.md ├── images ├── Bluesky_Logo.svg ├── image_sc_logo.png └── mastodon_logo.svg ├── index.md ├── naps ├── 0-nap-process.md ├── 1-institutional-funding-partners.md ├── 2-conda-based-packaging.md ├── 3-spaces.md ├── 4-async-slicing.md ├── 5-new-logo.md ├── 6-contributable-menus.md ├── 7-key-binding-dispatch.md ├── 8-telemetry.md ├── 9-multiple-canvases.md ├── _static │ ├── kb-example-graph.png │ ├── multicanvas-napari-architecture-today.png │ ├── multicanvas-napari-architecture-tomorrow.png │ ├── nap-flowchart.png │ ├── nap6-menu-example.png │ └── napari-many-plugins.png ├── index.md └── template.md ├── plugins ├── advanced_topics │ ├── adapted_plugin_guide.md │ ├── images │ │ ├── adapted_plugin_with_tag.png │ │ └── npe1_plugin_no_tag.png │ ├── index.md │ ├── npe1.md │ └── npe2_migration_guide.md ├── building_a_plugin │ ├── _layer_data_guide.md │ ├── best_practices.md │ ├── debug_plugins.md │ ├── first_plugin.md │ ├── guides.md │ └── index.md ├── index.md ├── start_using_plugins │ └── finding_and_installing_plugins.md ├── technical_references │ ├── contributions.md │ ├── index.md │ └── manifest.md ├── testing_and_publishing │ ├── deploy.md │ ├── index.md │ └── test.md ├── testing_workshop_docs │ ├── 1-pythons-assert-keyword.md │ ├── 2-pytest-testing-frameworks.md │ ├── 3-readers-and-fixtures.md │ ├── 4-test-coverage.md │ ├── index.md │ └── testing-resources.md └── virtual_environment_docs │ ├── 1-virtual-environments.md │ ├── 2-deploying-your-plugin.md │ ├── 3-version-management.md │ ├── 4-developer-tools.md │ ├── 5-survey.md │ └── index.md ├── release ├── index.md ├── release_0_1_0.md ├── release_0_1_3.md ├── release_0_1_5.md ├── release_0_2_0.md ├── release_0_2_1.md ├── release_0_2_10.md ├── release_0_2_11.md ├── release_0_2_12.md ├── release_0_2_3.md ├── release_0_2_4.md ├── release_0_2_5.md ├── release_0_2_6.md ├── release_0_2_7.md ├── release_0_2_8.md ├── release_0_2_9.md ├── release_0_3_0.md ├── release_0_3_1.md ├── release_0_3_2.md ├── release_0_3_3.md ├── release_0_3_4.md ├── release_0_3_5.md ├── release_0_3_6.md ├── release_0_3_7.md ├── release_0_3_8.md ├── release_0_4_0.md ├── release_0_4_1.md ├── release_0_4_10.md ├── release_0_4_11.md ├── release_0_4_12.md ├── release_0_4_13.md ├── release_0_4_14.md ├── release_0_4_15.md ├── release_0_4_16.md ├── release_0_4_17.md ├── release_0_4_18.md ├── release_0_4_19.md ├── release_0_4_2.md ├── release_0_4_3.md ├── release_0_4_4.md ├── release_0_4_5.md ├── release_0_4_6.md ├── release_0_4_7.md ├── release_0_4_8.md ├── release_0_4_9.md ├── release_0_5_0.md ├── release_0_5_1.md ├── release_0_5_2.md ├── release_0_5_3.md ├── release_0_5_4.md ├── release_0_5_5.md ├── release_0_5_6.md ├── release_0_6_0.md └── release_0_6_1.md ├── roadmaps ├── 0_3.md ├── 0_3_retrospective.md ├── 0_4.md └── index.md ├── troubleshooting.md ├── tutorials ├── annotation │ ├── annotate_points.md │ └── index.md ├── fundamentals │ ├── getting_started.md │ ├── installation.md │ ├── installation_bundle_conda.md │ ├── quick_start.md │ └── viewer.md ├── index.md ├── processing │ ├── dask.md │ └── index.md ├── segmentation │ ├── annotate_segmentation.md │ └── index.md ├── start_index.md └── tracking │ ├── cell_tracking.md │ └── index.md └── usage.md /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | # Python CircleCI 2.1 configuration file 2 | # 3 | # As much as possible, this file should be kept in sync with: 4 | # https://github.com/napari/napari/blob/main/.circleci/config.yaml 5 | # 6 | # Check for more details: https://circleci.com/docs/2.1/configuration-reference 7 | version: 2.1 8 | 9 | # Orbs are reusable packages of CircleCI configuration that you may share across projects. 10 | # See: https://circleci.com/docs/2.1/orb-intro/ 11 | orbs: 12 | python: circleci/python@3.0.0 13 | 14 | # parameterize the make target used for build, passed in from build_trigger.yml action 15 | parameters: 16 | make_target: 17 | type: string 18 | default: "slimfast" 19 | 20 | jobs: 21 | build-docs: 22 | docker: 23 | - image: cimg/python:3.10.17 24 | steps: 25 | - checkout: 26 | path: docs 27 | - run: 28 | name: Clone main repo into a subdirectory 29 | command: git clone git@github.com:napari/napari.git napari 30 | - run: 31 | name: Install qt libs + xvfb 32 | command: sudo apt-get update && sudo apt-get install -y xvfb libegl1 libdbus-1-3 libxkbcommon-x11-0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xinerama0 libxcb-xinput0 libxcb-xfixes0 x11-utils 33 | - run: 34 | name: Setup virtual environment 35 | command: | 36 | uv venv 37 | . .venv/bin/activate 38 | - run: 39 | name: Install napari-dev 40 | command: | 41 | . .venv/bin/activate 42 | uv pip install -e "napari/[pyqt5,docs]" 43 | environment: 44 | PIP_CONSTRAINT: napari/resources/constraints/constraints_py3.10_docs.txt 45 | - run: 46 | name: Build docs 47 | command: | 48 | . .venv/bin/activate 49 | cd docs 50 | xvfb-run --auto-servernum make << pipeline.parameters.make_target >> 51 | environment: 52 | PIP_CONSTRAINT: ../napari/resources/constraints/constraints_py3.10_docs.txt 53 | - store_artifacts: 54 | path: docs/docs/_build/html/ 55 | - persist_to_workspace: 56 | root: . 57 | paths: 58 | - docs/docs/_build/html/ 59 | workflows: 60 | build-docs: 61 | jobs: 62 | - build-docs 63 | -------------------------------------------------------------------------------- /.codespellrc: -------------------------------------------------------------------------------- 1 | [codespell] 2 | # Ref: https://github.com/codespell-project/codespell#using-a-config-file 3 | skip = .git*,*.svg,*.css,.codespellrc,*.ai 4 | check-hidden = true 5 | # lines with é -- non-English; names 6 | ignore-regex = (.*[àéç].*|\b(Tung|Tru|Ganes)\b) 7 | ignore-words-list = nd,ontop,recuse 8 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: "\U0001F41B Bug Report" 3 | about: Report typos, innacuracies or errors to help us improve the napari documentation 4 | title: '' 5 | labels: bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | ## 🐛 Bug 11 | 12 | 13 | 14 | 15 | 16 | 17 | ## Environment 18 | 19 | - Please copy and paste the information at napari info option in help menubar here: 20 | 21 | - Any other relevant information: 22 | 23 | ## Additional context 24 | 25 | 26 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | # Ref: https://help.github.com/en/github/building-a-strong-community/configuring-issue-templates-for-your-repository#configuring-the-template-chooser 2 | blank_issues_enabled: true # default 3 | contact_links: 4 | - name: 👩🏽‍💻 main napari repository 5 | url: https://github.com/napari/napari 6 | about: | 7 | If your issue requires a docstring update, or changes to the examples gallery, please check the main napari repo. 8 | - name: ✨ napari-sphinx-theme 9 | url: https://github.com/napari/napari-sphinx-theme 10 | about: | 11 | If your issue is about the napari.org website design or functionality, please check the napari-sphinx-theme repo. 12 | - name: 🤷💻 napari forum 13 | url: https://forum.image.sc/tag/napari 14 | about: | 15 | Please ask general "how do I ... ?" questions over at image.sc 16 | - name: '💬 napari @ zulip' 17 | url: https://napari.zulipchat.com/ 18 | about: Chat with devs 19 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/new_content.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: "\U0001F4DA New content request" 3 | about: Suggest new content pages to be added to the napari documentation 4 | title: '' 5 | labels: content 6 | assignees: '' 7 | 8 | --- 9 | 10 | ## 📚 New content request 11 | 12 | 13 | 14 | ### Outline 15 | 16 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/task.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: "\U0001F9F0 Task" 3 | about: Submit a proposal/request for improvements to workflows, documentation build or deployment. 4 | title: '' 5 | labels: task 6 | assignees: '' 7 | 8 | --- 9 | ## 🧰 Task 10 | 11 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | # References and relevant issues 2 | 6 | 7 | # Description 8 | 12 | 13 | 15 | 16 | 31 | 32 | 38 | -------------------------------------------------------------------------------- /.github/TEST_FAIL_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "{{ env.TITLE }}" 3 | labels: [bug] 4 | --- 5 | The {{ workflow }} workflow failed on {{ date | date("YYYY-MM-DD HH:mm") }} UTC 6 | 7 | The most recent failing test was on {{ env.PLATFORM }} py{{ env.PYTHON }} {{ env.BACKEND }} 8 | with commit: {{ sha }} 9 | 10 | Full run: https://github.com/{{ payload.repository.full_name }}/actions/runs/{{ env.RUN_ID }} 11 | 12 | (This post will be updated if another test fails, as long as this issue remains open.) -------------------------------------------------------------------------------- /.github/labeler.yml: -------------------------------------------------------------------------------- 1 | # See: .github/workflows/labeler.yml and https://github.com/marketplace/actions/labeler 2 | documentation: 3 | - changed-files: 4 | - any-glob-to-any-file: 'docs/**' 5 | 6 | maintenance: 7 | - changed-files: 8 | - any-glob-to-any-file: ['.circleci/*', '.github/**/*'] 9 | -------------------------------------------------------------------------------- /.github/missing_translations.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: [Automatic issue] Missing `_.trans()`. 3 | labels: "good first issue" 4 | --- 5 | 6 | It looks like one of our test cron detected missing translations. 7 | You can see the latest output [here](https://github.com/napari/napari/actions/workflows/test_translations.yml). 8 | There are likely new strings to either ignore, or to internationalise. 9 | 10 | You can also Update the cron script to update this issue with better information as well. 11 | 12 | Note that this issue will be automatically updated if kept open, or a new one will be created when necessary, if no open 13 | issue is found and new `_.trans` call are missing. 14 | 15 | -------------------------------------------------------------------------------- /.github/workflows/actionlint.yml: -------------------------------------------------------------------------------- 1 | name: Actionlint 2 | 3 | on: 4 | pull_request: 5 | paths: 6 | - '.github/**' 7 | 8 | jobs: 9 | actionlint: 10 | name: Action lint 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@v4 14 | - name: Check workflow files 15 | run: | 16 | bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash) 17 | ./actionlint -color -ignore SC2129 18 | shell: bash 19 | -------------------------------------------------------------------------------- /.github/workflows/auto_author_assign.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/marketplace/actions/auto-author-assign 2 | name: 'Auto Author Assign' 3 | 4 | on: 5 | pull_request_target: 6 | types: [opened, reopened] 7 | 8 | permissions: 9 | pull-requests: write 10 | 11 | jobs: 12 | assign-author: 13 | runs-on: ubuntu-latest 14 | steps: 15 | - uses: toshimaru/auto-author-assign@v1.3.4 16 | -------------------------------------------------------------------------------- /.github/workflows/build_docs.yml: -------------------------------------------------------------------------------- 1 | # As much as possible, this file should be kept in sync with 2 | # https://github.com/napari/docs/blob/main/.github/workflows/build_and_deploy_docs.yml 3 | name: Build PR Docs 4 | 5 | on: 6 | pull_request: 7 | branches: 8 | - main 9 | workflow_dispatch: 10 | inputs: 11 | make_target: 12 | description: "Enter make target: html html-noplot docs slimfast slimgallery" 13 | type: string 14 | default: 'slimfast' 15 | workflow_call: 16 | inputs: 17 | make_target: 18 | description: "Enter make target: html html-noplot docs slimfast slimgallery" 19 | type: string 20 | default: 'slimfast' 21 | 22 | concurrency: 23 | group: ${{ github.workflow }}-${{ github.ref }} 24 | cancel-in-progress: true 25 | 26 | jobs: 27 | build-and-upload: 28 | name: Build & Upload Artifact 29 | runs-on: ubuntu-latest 30 | steps: 31 | - name: Clone docs repo 32 | uses: actions/checkout@v4 33 | with: 34 | # Check out to '/home/runner/work/docs/docs/docs' 35 | path: docs 36 | 37 | - name: Clone main repo 38 | uses: actions/checkout@v4 39 | with: 40 | # Check out to '/home/runner/work/docs/docs/napari' 41 | path: napari 42 | repository: napari/napari 43 | # fetch history ensure napari version metadata is read properly 44 | fetch-depth: 0 45 | 46 | - uses: actions/setup-python@v5 47 | with: 48 | python-version: "3.10" 49 | cache-dependency-path: | 50 | napari/pyproject.toml 51 | 52 | - uses: tlambert03/setup-qt-libs@v1 53 | 54 | - name: Install Dependencies 55 | run: | 56 | python -m pip install --upgrade pip 57 | python -m pip install "napari/[pyqt5, docs]" 58 | env: 59 | PIP_CONSTRAINT: ${{ github.workspace }}/napari/resources/constraints/constraints_py3.10_docs.txt 60 | 61 | - name: Check napari can be imported 62 | run: | 63 | python -c 'import napari; print(napari.__version__)' 64 | python -c 'import napari.layers; print(napari.layers.__doc__)' 65 | 66 | - name: Build Docs 67 | uses: aganders3/headless-gui@v2 68 | env: 69 | GOOGLE_CALENDAR_ID: ${{ secrets.GOOGLE_CALENDAR_ID }} 70 | GOOGLE_CALENDAR_API_KEY: ${{ secrets.GOOGLE_CALENDAR_API_KEY }} 71 | PIP_CONSTRAINT: ${{ github.workspace }}/napari/resources/constraints/constraints_py3.10_docs.txt 72 | with: 73 | run: make -C docs ${{ github.event_name == 'pull_request' && 'slimfast' || inputs.make_target }} 74 | # skipping setup stops the action from running the default (tiling) window manager 75 | # the window manager is not necessary for docs builds at this time and it was causing 76 | # problems with screenshots (https://github.com/napari/docs/issues/285) 77 | linux-setup: "echo 'skip setup'" 78 | linux-teardown: "echo 'skip teardown'" 79 | 80 | - name: Upload artifact 81 | id: upload 82 | if: always() 83 | uses: actions/upload-artifact@v4 84 | with: 85 | name: docs 86 | path: docs/docs/_build/html 87 | -------------------------------------------------------------------------------- /.github/workflows/circleci.yml: -------------------------------------------------------------------------------- 1 | # To enable this workflow on a fork, comment out: 2 | # 3 | # if: github.repository == 'napari/docs' 4 | 5 | name: CircleCI artifact redirector 6 | 7 | on: [status] 8 | jobs: 9 | circleci_artifacts_redirector_job: 10 | runs-on: ubuntu-latest 11 | if: "github.event.context == 'ci/circleci: build-docs'" 12 | permissions: 13 | statuses: write 14 | name: Run CircleCI artifacts redirector 15 | # if: github.repository == 'napari/docs' 16 | steps: 17 | - name: GitHub Action step 18 | uses: larsoner/circleci-artifacts-redirector-action@master 19 | with: 20 | repo-token: ${{ secrets.GITHUB_TOKEN }} 21 | api-token: ${{ secrets.CIRCLECI_TOKEN }} 22 | artifact-path: 0/docs/docs/_build/html/index.html 23 | circleci-jobs: build-docs 24 | job-title: Check the rendered docs here! 25 | -------------------------------------------------------------------------------- /.github/workflows/codespell.yml: -------------------------------------------------------------------------------- 1 | # Codespell configuration is within .codespellrc 2 | --- 3 | name: Codespell 4 | 5 | on: 6 | push: 7 | branches: [main] 8 | pull_request: 9 | branches: [main] 10 | 11 | permissions: 12 | contents: read 13 | 14 | jobs: 15 | codespell: 16 | name: Check for spelling errors 17 | runs-on: ubuntu-latest 18 | 19 | steps: 20 | - name: Checkout 21 | uses: actions/checkout@v4 22 | - name: Annotate locations with typos 23 | uses: codespell-project/codespell-problem-matcher@v1 24 | - name: Codespell 25 | uses: codespell-project/actions-codespell@v2 26 | -------------------------------------------------------------------------------- /.github/workflows/edit_pr_description.yml: -------------------------------------------------------------------------------- 1 | name: Remove html In PR description 2 | on: 3 | # see https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_target 4 | pull_request_target: 5 | types: 6 | - opened 7 | - synchronize 8 | - reopened 9 | - edited 10 | permissions: 11 | pull-requests: write 12 | 13 | jobs: 14 | remove_comment: 15 | name: Remove html comments. 16 | uses: napari/napari/.github/workflows/edit_pr_description.yml@main -------------------------------------------------------------------------------- /.github/workflows/labeler.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/marketplace/actions/labeler 2 | name: "Pull Request Labeler" 3 | on: 4 | - pull_request_target 5 | 6 | jobs: 7 | triage: 8 | permissions: 9 | contents: read 10 | pull-requests: write 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/labeler@v5 14 | with: 15 | repo-token: "${{ secrets.GITHUB_TOKEN }}" 16 | -------------------------------------------------------------------------------- /.github/workflows/linkcheck.yml: -------------------------------------------------------------------------------- 1 | name: External links checker 2 | 3 | on: 4 | repository_dispatch: 5 | workflow_dispatch: # can also be triggered manually 6 | schedule: 7 | - cron: "0 0 * * *" # every sunday at midnight 8 | 9 | jobs: 10 | link-check: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@v4 14 | 15 | - name: Clone docs repo 16 | uses: actions/checkout@v4 17 | with: 18 | # place in '/home/runner/work/docs/docs/docs' 19 | path: docs # place in a named directory 20 | 21 | - name: Clone main repo 22 | uses: actions/checkout@v4 23 | with: 24 | # place in '/home/runner/work/docs/docs/napari' 25 | path: napari # place in a named directory 26 | repository: napari/napari 27 | # ensure version metadata is proper 28 | fetch-depth: 0 29 | 30 | - uses: actions/setup-python@v5 31 | with: 32 | python-version: "3.10" 33 | cache-dependency-path: | 34 | napari/pyproject.toml 35 | docs/requirements.txt 36 | 37 | - uses: tlambert03/setup-qt-libs@v1 38 | 39 | - name: Install Dependencies 40 | run: | 41 | python -m pip install --upgrade pip 42 | python -m pip install "napari/[pyqt5, docs]" 43 | env: 44 | PIP_CONSTRAINT: ${{ github.workspace }}/napari/resources/constraints/constraints_py3.10_docs.txt 45 | 46 | - name: Run link checker 47 | uses: aganders3/headless-gui@v2 48 | env: 49 | PIP_CONSTRAINT: ${{ github.workspace }}/napari/resources/constraints/constraints_py3.10_docs.txt 50 | with: 51 | # Runs in '/home/runner/work/docs/docs/docs' 52 | # Built HTML pages in '/home/runner/work/docs/docs/docs/docs/_build/html' 53 | run: | 54 | make -C docs linkcheck-files 55 | # skipping setup stops the action from running the default (tiling) window manager 56 | # the window manager is not necessary for docs builds at this time and it was causing 57 | # problems with screenshots (https://github.com/napari/docs/issues/285) 58 | linux-setup: "echo 'skip setup'" 59 | linux-teardown: "echo 'skip teardown'" 60 | 61 | - name: Create issue from file 62 | if: ${{ failure() }} 63 | uses: peter-evans/create-issue-from-file@v4 64 | with: 65 | title: Link Checker Report 66 | content-filepath: ./docs/docs/_build/html/output.txt 67 | labels: maintenance, task 68 | -------------------------------------------------------------------------------- /.github/workflows/pr_dependencies.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/marketplace/actions/pr-dependency-check 2 | name: "PR Dependency Check" 3 | on: 4 | pull_request: 5 | issue_comment: 6 | types: [ created ] 7 | 8 | jobs: 9 | check_dependencies: 10 | runs-on: ubuntu-latest 11 | if: (github.event.issue.pull_request != '' && contains(github.event.comment.body, 'merge')) || github.event_name == 'pull_request' 12 | name: Check Dependencies 13 | steps: 14 | - uses: gregsdennis/dependencies-action@main 15 | env: 16 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 17 | -------------------------------------------------------------------------------- /.github/workflows/remove_ready_to_merge.yml: -------------------------------------------------------------------------------- 1 | name: Remove "ready to merge" label 2 | 3 | on: 4 | pull_request_target: 5 | types: [closed] 6 | workflow_call: 7 | 8 | 9 | permissions: 10 | pull-requests: write 11 | 12 | jobs: 13 | remove_label: 14 | name: Remove ready to merge label 15 | uses: napari/napari/.github/workflows/remove_ready_to_merge.yml@main -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | *.egg-info/ 24 | .installed.cfg 25 | *.egg 26 | MANIFEST 27 | .dmypy.json 28 | 29 | # PyInstaller 30 | # Usually these files are written by a python script from a template 31 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 32 | *.manifest 33 | *.spec 34 | 35 | # Installer logs 36 | pip-log.txt 37 | pip-delete-this-directory.txt 38 | pip-wheel-metadata/ 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .coverage 44 | .coverage.* 45 | .cache 46 | nosetests.xml 47 | coverage.xml 48 | *.cover 49 | .hypothesis/ 50 | .pytest_cache/ 51 | 52 | # Translations 53 | *.mo 54 | *.pot 55 | 56 | # Django stuff: 57 | *.log 58 | local_settings.py 59 | db.sqlite3 60 | 61 | # Flask stuff: 62 | instance/ 63 | .webassets-cache 64 | 65 | # Scrapy stuff: 66 | .scrapy 67 | 68 | # PyBuilder 69 | target/ 70 | 71 | # Jupyter Notebook 72 | .ipynb_checkpoints 73 | 74 | # pyenv 75 | .python-version 76 | 77 | # celery beat schedule file 78 | celerybeat-schedule 79 | 80 | # SageMath parsed files 81 | *.sage.py 82 | 83 | # Environments 84 | .env 85 | .venv 86 | env/ 87 | venv/ 88 | ENV/ 89 | env.bak/ 90 | venv.bak/ 91 | 92 | # Spyder project settings 93 | .spyderproject 94 | .spyproject 95 | 96 | # Rope project settings 97 | .ropeproject 98 | 99 | # mkdocs documentation 100 | /site 101 | 102 | # mypy 103 | .mypy_cache/ 104 | 105 | # Pycharm files 106 | .idea 107 | 108 | # Liclipse 109 | .project 110 | .pydevproject 111 | .settings/ 112 | 113 | # OS stuff 114 | .DS_store 115 | 116 | # Benchmarking results 117 | .asv/ 118 | 119 | # VSCode 120 | .vscode/ 121 | 122 | # these will get autogenerated 123 | _qt_resources*.py 124 | res.qrc 125 | # ignore all generated themed svgs 126 | napari/resources/themes 127 | 128 | # briefcase 129 | macOS/ 130 | linux/ 131 | windows/ 132 | 133 | napari/_version.py 134 | 135 | napari/settings/napari.schema.json 136 | 137 | # built in setup.py 138 | napari/view_layers.pyi 139 | napari/components/viewer_model.pyi 140 | 141 | # Sphinx documentation 142 | docs/_build 143 | docs/_tags/ 144 | docs/api/napari* 145 | docs/gallery/ 146 | docs/guides/preferences.md 147 | docs/guides/_layer_events.md 148 | docs/guides/_layerlist_events.md 149 | docs/developers/architecture/ui_sections/* 150 | !docs/developers/architecture/ui_sections/index.md 151 | docs/guides/_viewer_events.md 152 | docs/images/_autogenerated/ 153 | docs/jupyter_execute/ 154 | docs/sg_execution_times.rst 155 | 156 | # come from npe2 docs 157 | docs/plugins/_npe2_*.md 158 | npe2/ 159 | 160 | # autogenerated fallback videos 161 | docs/_static/images/*.mp4 -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | repos: 2 | - repo: https://github.com/pre-commit/pre-commit-hooks 3 | rev: v4.4.0 4 | hooks: 5 | - id: trailing-whitespace 6 | 7 | - repo: https://github.com/codespell-project/codespell 8 | # Configuration for codespell is in .codespellrc 9 | rev: v2.4.0 10 | hooks: 11 | - id: codespell 12 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | BSD 3-Clause License 2 | 3 | Copyright (c) 2018, Napari 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | * Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 12 | * Redistributions in binary form must reproduce the above copyright notice, 13 | this list of conditions and the following disclaimer in the documentation 14 | and/or other materials provided with the distribution. 15 | 16 | * Neither the name of the copyright holder nor the names of its 17 | contributors may be used to endorse or promote products derived from 18 | this software without specific prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 23 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 24 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 26 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 27 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 28 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | -------------------------------------------------------------------------------- /docs/_scripts/_table_maker.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | STYLES = { 4 | "double": { 5 | "TOP": ("╔", "╤", "╗", "═"), 6 | "MID": ("╟", "┼", "╢", "─"), 7 | "BOT": ("╚", "╧", "╝", "═"), 8 | "V": ("║", "│"), 9 | }, 10 | "heavy": { 11 | "TOP": ("┏", "┯", "┓", "━"), 12 | "MID": ("┠", "┼", "┨", "─"), 13 | "BOT": ("┗", "┷", "┛", "━"), 14 | "V": ("┃", "│"), 15 | }, 16 | "light": { 17 | "TOP": ("┌", "┬", "┐", "─"), 18 | "MID": ("├", "┼", "┤", "─"), 19 | "BOT": ("└", "┴", "┘", "─"), 20 | "V": ("│", "│"), 21 | }, 22 | "markdown": { 23 | "TOP": (" ", " ", " ", " "), 24 | "MID": ("|", "|", "|", "-"), 25 | "BOT": (" ", " ", " ", " "), 26 | "V": ("|", "|"), 27 | }, 28 | } 29 | 30 | 31 | def table_repr( 32 | data, 33 | padding=2, 34 | ncols=None, 35 | header=None, 36 | cell_width=None, 37 | divide_rows=True, 38 | style="markdown", 39 | ): 40 | """Pretty string repr of a 2D table.""" 41 | try: 42 | nrows = len(data) 43 | except TypeError: 44 | raise TypeError("data must be a collection") 45 | if not nrows: 46 | return "" 47 | 48 | try: 49 | ncols = ncols or len(data[0]) 50 | except TypeError: 51 | raise TypeError("data must be a collection") 52 | except IndexError: 53 | raise IndexError("data must be a 2D collection of collections") 54 | 55 | _widths = list(data) 56 | if header: 57 | _widths.append(list(header)) 58 | _widths = np.array([[len(str(item)) for item in row] for row in _widths]) 59 | cell_widths = _widths.max(0).tolist() 60 | 61 | _style = STYLES[style] 62 | TOP, MID, BOT, V = _style["TOP"], _style["MID"], _style["BOT"], _style["V"] 63 | 64 | pad = " " * padding 65 | cell_templates = [ 66 | (pad + "{{:{0}}}" + pad).format(max(cw, 5)) for cw in cell_widths 67 | ] 68 | row_template = V[0] + V[1].join(cell_templates) + V[0] 69 | 70 | def _border(left, sep, right, line): 71 | _cells = [len(ct.format("")) * line for ct in cell_templates] 72 | return left + sep.join(_cells) + right 73 | 74 | body = [_border(*TOP)] 75 | 76 | if header: 77 | body.append(row_template.format(*header)) 78 | body.append(_border(*MID)) 79 | 80 | for i, row in enumerate(data): 81 | body.append(row_template.format(*row)) 82 | if divide_rows and i < nrows - 1: 83 | body.append(_border(*MID)) 84 | 85 | body.append(_border(*BOT)) 86 | return "\n".join(body) 87 | -------------------------------------------------------------------------------- /docs/_scripts/prep_docs.py: -------------------------------------------------------------------------------- 1 | """ALL pre-rendering and pre-preparation of docs should occur in this file. 2 | 3 | Note: make no assumptions about the working directory 4 | from which this script will be called. 5 | """ 6 | import sys 7 | from pathlib import Path 8 | from importlib.metadata import version 9 | 10 | from packaging.version import parse 11 | 12 | DOCS = Path(__file__).parent.parent.absolute() 13 | NPE = DOCS.parent.absolute() / 'npe2' 14 | 15 | def prep_npe2(): 16 | # some plugin docs live in npe2 for testing purposes 17 | if NPE.exists(): 18 | return 19 | from subprocess import check_call 20 | 21 | npe2_version = version("npe2") 22 | 23 | check_call(f"rm -rf {NPE}".split()) 24 | check_call(f"git clone https://github.com/napari/npe2 {NPE}".split()) 25 | if not parse(npe2_version).is_devrelease: 26 | check_call(f"git -c advice.detachedHead=false checkout tags/v{npe2_version}".split(), cwd=NPE) 27 | check_call([sys.executable, f"{NPE}/_docs/render.py", DOCS / 'plugins']) 28 | check_call(f"rm -rf {NPE}".split()) 29 | 30 | 31 | def main(stubs=False): 32 | if stubs: 33 | #prep_npe2() 34 | # Generate stub files for plugin docs 35 | plugin_docs = { 36 | "plugins/_npe2_sample_data_guide.md": "(sample-data-contribution-guide)=\n", 37 | "plugins/_npe2_readers_guide.md": "(readers-contribution-guide)=\n", 38 | "plugins/_npe2_widgets_guide.md": "(widgets-contribution-guide)=\n", 39 | "plugins/_npe2_manifest.md": "# Manifest Reference\n", 40 | "plugins/_npe2_writers_guide.md": "(writers-contribution-guide)=\n", 41 | "plugins/_npe2_contributions.md": "# Contributions Reference\n(contributions-themes)=\n(contributions-commands)=\n(contributions-widgets)=\n(contributions-readers)=\n(contributions-writers)=\n(contributions-sample-data)=\n(layer-type-constraints)=\n", 42 | } 43 | for doc, target in plugin_docs.items(): 44 | file_path = DOCS / doc 45 | if not file_path.exists(): # Avoid overwriting existing files 46 | file_path.write_text( 47 | f"{target}This is a stub. The real file is autogenerated in a full build.", 48 | encoding="utf-8", 49 | ) 50 | # Generate stub files from the other scripts 51 | __import__('update_preference_docs').main(stubs=True) 52 | __import__('update_event_docs').main(stubs=True) 53 | __import__('update_ui_sections_docs').main(stubs=True) 54 | else: 55 | prep_npe2() 56 | __import__('update_preference_docs').main() 57 | __import__('update_event_docs').main() 58 | __import__('update_ui_sections_docs').main() 59 | 60 | 61 | if __name__ == "__main__": 62 | import argparse 63 | 64 | parser = argparse.ArgumentParser(description="Prepare documentation files.") 65 | parser.add_argument( 66 | "--stubs", 67 | action="store_true", 68 | help="Generate stubs versions of the documentation files.", 69 | ) 70 | args = parser.parse_args() 71 | 72 | main(stubs=args.stubs) 73 | -------------------------------------------------------------------------------- /docs/_static/announcement.html: -------------------------------------------------------------------------------- 1 | 7 | 10 | -------------------------------------------------------------------------------- /docs/_static/custom.css: -------------------------------------------------------------------------------- 1 | /* 2 | Sphinx-Gallery has compatible CSS to fix default sphinx themes 3 | Tested for Sphinx 1.3.1 for all themes: default, alabaster, sphinxdoc, 4 | scrolls, agogo, traditional, nature, haiku, pyramid 5 | Tested for Read the Docs theme 0.1.7 */ 6 | 7 | div.sphx-glr-download a { 8 | background-color: rgb(255, 255, 255) !important; 9 | background-image: linear-gradient(to bottom, rgb(255, 255, 255), #ffffff) !important; 10 | border-radius: 4px; 11 | border: 1px solid #ffffff !important; 12 | color: #000; 13 | display: inline-block; 14 | font-weight: bold; 15 | padding: 1ex; 16 | text-align: center; 17 | } 18 | 19 | div.sphx-glr-download a:hover { 20 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 21 | 0 1px 5px rgba(0, 0, 0, 0.25); 22 | text-decoration: none; 23 | background-image: none; 24 | background-color: #ffffff !important; 25 | } 26 | 27 | /* Workaround for https: //github.com/napari/docs/pull/423#issuecomment-2141165872 */ 28 | .bd-content .sd-tab-set>label { 29 | background-color: var(--napari-gray); 30 | color: #222832; 31 | } 32 | 33 | /* Version warning banner color */ 34 | #bd-header-version-warning { 35 | background-color: color-mix(in srgb, var(--pst-color-secondary-bg), transparent 30%); 36 | } 37 | 38 | #bd-header-version-warning .pst-button-link-to-stable-version { 39 | background-color: color-mix(in srgb, var(--pst-color-secondary-bg), transparent 0%); 40 | border-color: var(--pst-color-secondary-bg); 41 | color: #222832; 42 | font-weight: 700; 43 | } 44 | 45 | #bd-header-version-warning .pst-button-link-to-stable-version:hover { 46 | background-color: var(--pst-color-secondary-bg); 47 | border-color: var(--pst-color-secondary-bg); 48 | color: #222832; 49 | font-weight: 700; 50 | } -------------------------------------------------------------------------------- /docs/_static/favicon/logo-noborder-180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/favicon/logo-noborder-180.png -------------------------------------------------------------------------------- /docs/_static/favicon/logo-silhouette-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/favicon/logo-silhouette-192.png -------------------------------------------------------------------------------- /docs/_static/favicon/logo-silhouette-dark-light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 14 | 24 | 25 | 28 | 29 | -------------------------------------------------------------------------------- /docs/_static/images/2D-button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/2D-button.png -------------------------------------------------------------------------------- /docs/_static/images/3D-button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/3D-button.png -------------------------------------------------------------------------------- /docs/_static/images/3D_paths.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/3D_paths.png -------------------------------------------------------------------------------- /docs/_static/images/3d_interaction.ai: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/3d_interaction.ai -------------------------------------------------------------------------------- /docs/_static/images/3d_interaction_click_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/3d_interaction_click_line.png -------------------------------------------------------------------------------- /docs/_static/images/3d_interaction_coordianates.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/3d_interaction_coordianates.png -------------------------------------------------------------------------------- /docs/_static/images/3d_interaction_ray_intersection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/3d_interaction_ray_intersection.png -------------------------------------------------------------------------------- /docs/_static/images/IPython.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/IPython.png -------------------------------------------------------------------------------- /docs/_static/images/LLSM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/LLSM.png -------------------------------------------------------------------------------- /docs/_static/images/LLSM.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/LLSM.webm -------------------------------------------------------------------------------- /docs/_static/images/Viewer-with-arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/Viewer-with-arrows.png -------------------------------------------------------------------------------- /docs/_static/images/add_points.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/add_points.png -------------------------------------------------------------------------------- /docs/_static/images/add_vectors_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/add_vectors_image.png -------------------------------------------------------------------------------- /docs/_static/images/annotated_bbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/annotated_bbox.png -------------------------------------------------------------------------------- /docs/_static/images/blending.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/blending.png -------------------------------------------------------------------------------- /docs/_static/images/brain_surface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/brain_surface.png -------------------------------------------------------------------------------- /docs/_static/images/brain_surface.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/brain_surface.webm -------------------------------------------------------------------------------- /docs/_static/images/bundle_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/bundle_02.png -------------------------------------------------------------------------------- /docs/_static/images/bundle_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/bundle_04.png -------------------------------------------------------------------------------- /docs/_static/images/bundle_06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/bundle_06.png -------------------------------------------------------------------------------- /docs/_static/images/bundle_07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/bundle_07.png -------------------------------------------------------------------------------- /docs/_static/images/bundle_09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/bundle_09.png -------------------------------------------------------------------------------- /docs/_static/images/bundle_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/bundle_10.png -------------------------------------------------------------------------------- /docs/_static/images/bundle_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/bundle_11.png -------------------------------------------------------------------------------- /docs/_static/images/bundle_13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/bundle_13.png -------------------------------------------------------------------------------- /docs/_static/images/bundle_17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/bundle_17.png -------------------------------------------------------------------------------- /docs/_static/images/bundle_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/bundle_18.png -------------------------------------------------------------------------------- /docs/_static/images/bundle_19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/bundle_19.png -------------------------------------------------------------------------------- /docs/_static/images/bundle_20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/bundle_20.png -------------------------------------------------------------------------------- /docs/_static/images/bundle_21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/bundle_21.png -------------------------------------------------------------------------------- /docs/_static/images/bundle_22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/bundle_22.png -------------------------------------------------------------------------------- /docs/_static/images/bundle_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/bundle_24.png -------------------------------------------------------------------------------- /docs/_static/images/bundle_28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/bundle_28.png -------------------------------------------------------------------------------- /docs/_static/images/bundle_29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/bundle_29.png -------------------------------------------------------------------------------- /docs/_static/images/bundle_30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/bundle_30.png -------------------------------------------------------------------------------- /docs/_static/images/bundle_31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/bundle_31.png -------------------------------------------------------------------------------- /docs/_static/images/bundle_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/bundle_32.png -------------------------------------------------------------------------------- /docs/_static/images/bundle_33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/bundle_33.png -------------------------------------------------------------------------------- /docs/_static/images/bundle_34.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/bundle_34.png -------------------------------------------------------------------------------- /docs/_static/images/bundle_35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/bundle_35.png -------------------------------------------------------------------------------- /docs/_static/images/bundle_dev_warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/bundle_dev_warning.png -------------------------------------------------------------------------------- /docs/_static/images/bundle_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/bundle_open.png -------------------------------------------------------------------------------- /docs/_static/images/bundle_open_anyway.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/bundle_open_anyway.png -------------------------------------------------------------------------------- /docs/_static/images/bundle_security_privacy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/bundle_security_privacy.png -------------------------------------------------------------------------------- /docs/_static/images/button-right-click-indicator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/button-right-click-indicator.png -------------------------------------------------------------------------------- /docs/_static/images/chunked-format.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/chunked-format.png -------------------------------------------------------------------------------- /docs/_static/images/circleci-link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/circleci-link.png -------------------------------------------------------------------------------- /docs/_static/images/command-palette.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/command-palette.png -------------------------------------------------------------------------------- /docs/_static/images/command-palette.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/command-palette.webm -------------------------------------------------------------------------------- /docs/_static/images/console.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/console.png -------------------------------------------------------------------------------- /docs/_static/images/context_type_hint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/context_type_hint.png -------------------------------------------------------------------------------- /docs/_static/images/contrast_limits.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/contrast_limits.png -------------------------------------------------------------------------------- /docs/_static/images/contrast_limits.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/contrast_limits.webm -------------------------------------------------------------------------------- /docs/_static/images/coverage_report.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/coverage_report.png -------------------------------------------------------------------------------- /docs/_static/images/dask1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/dask1.png -------------------------------------------------------------------------------- /docs/_static/images/dask1.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/dask1.webm -------------------------------------------------------------------------------- /docs/_static/images/dask2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/dask2.png -------------------------------------------------------------------------------- /docs/_static/images/dask2.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/dask2.webm -------------------------------------------------------------------------------- /docs/_static/images/dask_repr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/dask_repr.png -------------------------------------------------------------------------------- /docs/_static/images/delete_label.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/delete_label.png -------------------------------------------------------------------------------- /docs/_static/images/delete_label.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/delete_label.webm -------------------------------------------------------------------------------- /docs/_static/images/dims_roll_lock_widget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/dims_roll_lock_widget.png -------------------------------------------------------------------------------- /docs/_static/images/doc-ci-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/doc-ci-1.png -------------------------------------------------------------------------------- /docs/_static/images/doc-ci-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/doc-ci-2.png -------------------------------------------------------------------------------- /docs/_static/images/doc-ci-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/doc-ci-3.png -------------------------------------------------------------------------------- /docs/_static/images/draw_component.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/draw_component.png -------------------------------------------------------------------------------- /docs/_static/images/draw_component.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/draw_component.webm -------------------------------------------------------------------------------- /docs/_static/images/edit_token_permissions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/edit_token_permissions.png -------------------------------------------------------------------------------- /docs/_static/images/editing_points.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/editing_points.png -------------------------------------------------------------------------------- /docs/_static/images/editing_points.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/editing_points.webm -------------------------------------------------------------------------------- /docs/_static/images/editing_shapes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/editing_shapes.png -------------------------------------------------------------------------------- /docs/_static/images/editing_shapes.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/editing_shapes.webm -------------------------------------------------------------------------------- /docs/_static/images/example-1320.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/example-1320.png -------------------------------------------------------------------------------- /docs/_static/images/fine_grained_token.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/fine_grained_token.png -------------------------------------------------------------------------------- /docs/_static/images/grid-widget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/grid-widget.png -------------------------------------------------------------------------------- /docs/_static/images/handedness.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/handedness.png -------------------------------------------------------------------------------- /docs/_static/images/labels-layer-eraser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/labels-layer-eraser.png -------------------------------------------------------------------------------- /docs/_static/images/launch_ipython.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/launch_ipython.png -------------------------------------------------------------------------------- /docs/_static/images/launch_jupyter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/launch_jupyter.png -------------------------------------------------------------------------------- /docs/_static/images/launch_script.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/launch_script.png -------------------------------------------------------------------------------- /docs/_static/images/layerlist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/layerlist.png -------------------------------------------------------------------------------- /docs/_static/images/lines_not_run_highlighted_in_red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/lines_not_run_highlighted_in_red.png -------------------------------------------------------------------------------- /docs/_static/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/logo.png -------------------------------------------------------------------------------- /docs/_static/images/main-menu-file-sub-menu-preferences.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/main-menu-file-sub-menu-preferences.png -------------------------------------------------------------------------------- /docs/_static/images/main-menu-file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/main-menu-file.png -------------------------------------------------------------------------------- /docs/_static/images/main-menu-help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/main-menu-help.png -------------------------------------------------------------------------------- /docs/_static/images/main-menu-plugins.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/main-menu-plugins.png -------------------------------------------------------------------------------- /docs/_static/images/main-menu-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/main-menu-view.png -------------------------------------------------------------------------------- /docs/_static/images/main-menu-window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/main-menu-window.png -------------------------------------------------------------------------------- /docs/_static/images/manual_label.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/manual_label.png -------------------------------------------------------------------------------- /docs/_static/images/manual_label.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/manual_label.webm -------------------------------------------------------------------------------- /docs/_static/images/merge_labels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/merge_labels.png -------------------------------------------------------------------------------- /docs/_static/images/merge_labels.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/merge_labels.webm -------------------------------------------------------------------------------- /docs/_static/images/mitosis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/mitosis.png -------------------------------------------------------------------------------- /docs/_static/images/mitosis.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/mitosis.webm -------------------------------------------------------------------------------- /docs/_static/images/nD_labels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/nD_labels.png -------------------------------------------------------------------------------- /docs/_static/images/nD_shapes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/nD_shapes.png -------------------------------------------------------------------------------- /docs/_static/images/nD_shapes.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/nD_shapes.webm -------------------------------------------------------------------------------- /docs/_static/images/nD_vectors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/nD_vectors.png -------------------------------------------------------------------------------- /docs/_static/images/nD_vectors.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/nD_vectors.webm -------------------------------------------------------------------------------- /docs/_static/images/napari-logo-3-with-guides.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/napari-logo-3-with-guides.png -------------------------------------------------------------------------------- /docs/_static/images/napari-logo-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/napari-logo-3.png -------------------------------------------------------------------------------- /docs/_static/images/napari-logo-old-new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/napari-logo-old-new.png -------------------------------------------------------------------------------- /docs/_static/images/napari_plugins_1st_napari_get_reader.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/napari_plugins_1st_napari_get_reader.png -------------------------------------------------------------------------------- /docs/_static/images/napari_plugins_2nd_reader_function.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/napari_plugins_2nd_reader_function.png -------------------------------------------------------------------------------- /docs/_static/images/napari_plugins_3rd_pytest_passed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/napari_plugins_3rd_pytest_passed.png -------------------------------------------------------------------------------- /docs/_static/images/napari_plugins_4th_test_get_reader_returns_callable-failed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/napari_plugins_4th_test_get_reader_returns_callable-failed.png -------------------------------------------------------------------------------- /docs/_static/images/napari_plugins_5th_tests_passed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/napari_plugins_5th_tests_passed.png -------------------------------------------------------------------------------- /docs/_static/images/ndisplay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/ndisplay.png -------------------------------------------------------------------------------- /docs/_static/images/octree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/octree.png -------------------------------------------------------------------------------- /docs/_static/images/paging-chunks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/paging-chunks.png -------------------------------------------------------------------------------- /docs/_static/images/pan-zoom-tool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/pan-zoom-tool.png -------------------------------------------------------------------------------- /docs/_static/images/pathology.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/pathology.png -------------------------------------------------------------------------------- /docs/_static/images/pathology.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/pathology.webm -------------------------------------------------------------------------------- /docs/_static/images/plugin-install-dialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/plugin-install-dialog.png -------------------------------------------------------------------------------- /docs/_static/images/plugin-manager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/plugin-manager.png -------------------------------------------------------------------------------- /docs/_static/images/plugin-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/plugin-menu.png -------------------------------------------------------------------------------- /docs/_static/images/point-adding-tool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/point-adding-tool.png -------------------------------------------------------------------------------- /docs/_static/images/point-deleting-tool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/point-deleting-tool.png -------------------------------------------------------------------------------- /docs/_static/images/point-selecting-tool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/point-selecting-tool.png -------------------------------------------------------------------------------- /docs/_static/images/point_annotator_demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/point_annotator_demo.png -------------------------------------------------------------------------------- /docs/_static/images/point_annotator_demo.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/point_annotator_demo.webm -------------------------------------------------------------------------------- /docs/_static/images/points_save_dialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/points_save_dialog.png -------------------------------------------------------------------------------- /docs/_static/images/rendering.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/rendering.png -------------------------------------------------------------------------------- /docs/_static/images/rotated-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/rotated-image.png -------------------------------------------------------------------------------- /docs/_static/images/scaling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/scaling.png -------------------------------------------------------------------------------- /docs/_static/images/scaling.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/scaling.webm -------------------------------------------------------------------------------- /docs/_static/images/screenshot-add-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/screenshot-add-image.png -------------------------------------------------------------------------------- /docs/_static/images/second_coverage_report.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/second_coverage_report.png -------------------------------------------------------------------------------- /docs/_static/images/secrets_section.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/secrets_section.png -------------------------------------------------------------------------------- /docs/_static/images/segmentation_bbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/segmentation_bbox.png -------------------------------------------------------------------------------- /docs/_static/images/segmentation_labels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/segmentation_labels.png -------------------------------------------------------------------------------- /docs/_static/images/shape-add-ellipses.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/shape-add-ellipses.png -------------------------------------------------------------------------------- /docs/_static/images/shape-add-lasso.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/shape-add-lasso.png -------------------------------------------------------------------------------- /docs/_static/images/shape-add-lines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/shape-add-lines.png -------------------------------------------------------------------------------- /docs/_static/images/shape-add-path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/shape-add-path.png -------------------------------------------------------------------------------- /docs/_static/images/shape-add-polygons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/shape-add-polygons.png -------------------------------------------------------------------------------- /docs/_static/images/shape-add-polyline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/shape-add-polyline.png -------------------------------------------------------------------------------- /docs/_static/images/shape-add-rectangles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/shape-add-rectangles.png -------------------------------------------------------------------------------- /docs/_static/images/shape-delete-shape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/shape-delete-shape.png -------------------------------------------------------------------------------- /docs/_static/images/shape-move-to-back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/shape-move-to-back.png -------------------------------------------------------------------------------- /docs/_static/images/shape-move-to-front.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/shape-move-to-front.png -------------------------------------------------------------------------------- /docs/_static/images/shape-select-shape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/shape-select-shape.png -------------------------------------------------------------------------------- /docs/_static/images/shape-vertex-insert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/shape-vertex-insert.png -------------------------------------------------------------------------------- /docs/_static/images/shape-vertices-select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/shape-vertices-select.png -------------------------------------------------------------------------------- /docs/_static/images/shape_resizing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/shape_resizing.png -------------------------------------------------------------------------------- /docs/_static/images/shape_resizing.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/shape_resizing.webm -------------------------------------------------------------------------------- /docs/_static/images/shape_vertex_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/shape_vertex_delete.png -------------------------------------------------------------------------------- /docs/_static/images/shape_vertex_editing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/shape_vertex_editing.png -------------------------------------------------------------------------------- /docs/_static/images/shape_vertex_editing.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/shape_vertex_editing.webm -------------------------------------------------------------------------------- /docs/_static/images/smFISH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/smFISH.png -------------------------------------------------------------------------------- /docs/_static/images/smFISH.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/smFISH.webm -------------------------------------------------------------------------------- /docs/_static/images/split_label.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/split_label.png -------------------------------------------------------------------------------- /docs/_static/images/split_label.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/split_label.webm -------------------------------------------------------------------------------- /docs/_static/images/test_coverage_htmlcov_directory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/test_coverage_htmlcov_directory.png -------------------------------------------------------------------------------- /docs/_static/images/tests.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/tests.png -------------------------------------------------------------------------------- /docs/_static/images/token_permission_form.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/token_permission_form.png -------------------------------------------------------------------------------- /docs/_static/images/token_permission_selection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/token_permission_selection.png -------------------------------------------------------------------------------- /docs/_static/images/tracks_3d_t.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/tracks_3d_t.png -------------------------------------------------------------------------------- /docs/_static/images/tracks_3d_t.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/tracks_3d_t.webm -------------------------------------------------------------------------------- /docs/_static/images/tracks_btrack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/tracks_btrack.png -------------------------------------------------------------------------------- /docs/_static/images/tracks_color_by.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/tracks_color_by.png -------------------------------------------------------------------------------- /docs/_static/images/tracks_color_by.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/tracks_color_by.webm -------------------------------------------------------------------------------- /docs/_static/images/tracks_isbi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/tracks_isbi.png -------------------------------------------------------------------------------- /docs/_static/images/tracks_isbi.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/tracks_isbi.webm -------------------------------------------------------------------------------- /docs/_static/images/tracks_simple_demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/tracks_simple_demo.png -------------------------------------------------------------------------------- /docs/_static/images/tracks_simple_demo.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/tracks_simple_demo.webm -------------------------------------------------------------------------------- /docs/_static/images/tracks_tail_length.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/tracks_tail_length.png -------------------------------------------------------------------------------- /docs/_static/images/tracks_tail_length.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/tracks_tail_length.webm -------------------------------------------------------------------------------- /docs/_static/images/tracks_tail_width.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/tracks_tail_width.png -------------------------------------------------------------------------------- /docs/_static/images/tracks_tail_width.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/tracks_tail_width.webm -------------------------------------------------------------------------------- /docs/_static/images/transform-icon.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /docs/_static/images/transform-tool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/transform-tool.png -------------------------------------------------------------------------------- /docs/_static/images/triangle-edge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/triangle-edge.png -------------------------------------------------------------------------------- /docs/_static/images/triangle-edge.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/triangle-edge.webm -------------------------------------------------------------------------------- /docs/_static/images/tribolium.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/tribolium.jpg -------------------------------------------------------------------------------- /docs/_static/images/tribolium.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/tribolium.webm -------------------------------------------------------------------------------- /docs/_static/images/update_token_permissions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/update_token_permissions.png -------------------------------------------------------------------------------- /docs/_static/images/viewer-buttons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/viewer-buttons.png -------------------------------------------------------------------------------- /docs/_static/images/viewer-pan-zoom.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/viewer-pan-zoom.jpg -------------------------------------------------------------------------------- /docs/_static/images/viewer-pan-zoom.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/viewer-pan-zoom.webm -------------------------------------------------------------------------------- /docs/_static/images/viewer_layout.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/viewer_layout.jpg -------------------------------------------------------------------------------- /docs/_static/images/vs_code_debug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/vs_code_debug.png -------------------------------------------------------------------------------- /docs/_static/images/windows_bundle_command_terminal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/windows_bundle_command_terminal.png -------------------------------------------------------------------------------- /docs/_static/images/windows_bundle_installer_finish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/windows_bundle_installer_finish.png -------------------------------------------------------------------------------- /docs/_static/images/windows_bundle_installer_progress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/windows_bundle_installer_progress.png -------------------------------------------------------------------------------- /docs/_static/images/windows_bundle_installer_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/windows_bundle_installer_start.png -------------------------------------------------------------------------------- /docs/_static/images/windows_launch_napari.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/images/windows_launch_napari.png -------------------------------------------------------------------------------- /docs/_static/opengraph_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/_static/opengraph_image.png -------------------------------------------------------------------------------- /docs/_static/version_switcher.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "latest", 4 | "version": "dev", 5 | "url": "https://napari.org/dev/" 6 | }, 7 | { 8 | "name": "stable (0.6.1)", 9 | "version": "0.6.1", 10 | "preferred": true, 11 | "url": "https://napari.org/stable/" 12 | }, 13 | { 14 | "name": "0.6.0", 15 | "version": "0.6.0", 16 | "url": "https://napari.org/0.6.0/" 17 | }, 18 | { 19 | "name": "0.5.6", 20 | "version": "0.5.6", 21 | "url": "https://napari.org/0.5.6/" 22 | }, 23 | { 24 | "name": "0.5.5", 25 | "version": "0.5.5", 26 | "url": "https://napari.org/0.5.5/" 27 | }, 28 | { 29 | "name": "0.5.4", 30 | "version": "0.5.4", 31 | "url": "https://napari.org/0.5.4/" 32 | }, 33 | { 34 | "name": "0.5.3", 35 | "version": "0.5.3", 36 | "url": "https://napari.org/0.5.3/" 37 | }, 38 | { 39 | "name": "0.5.2", 40 | "version": "0.5.2", 41 | "url": "https://napari.org/0.5.2/" 42 | }, 43 | { 44 | "name": "0.5.1", 45 | "version": "0.5.1", 46 | "url": "https://napari.org/0.5.1/" 47 | }, 48 | { 49 | "name": "0.5.0", 50 | "version": "0.5.0", 51 | "url": "https://napari.org/0.5.0/" 52 | }, 53 | { 54 | "name": "0.4.19", 55 | "version": "0.4.19", 56 | "url": "https://napari.org/0.4.19/" 57 | }, 58 | { 59 | "name": "0.4.18", 60 | "version": "0.4.18", 61 | "url": "https://napari.org/0.4.18/" 62 | }, 63 | { 64 | "name": "0.4.17", 65 | "version": "0.4.17", 66 | "url": "https://napari.org/0.4.17/" 67 | }, 68 | { 69 | "name": "0.4.16", 70 | "version": "0.4.16", 71 | "url": "https://napari.org/0.4.16/" 72 | }, 73 | { 74 | "name": "0.4.15", 75 | "version": "0.4.15", 76 | "url": "https://napari.org/0.4.15/" 77 | } 78 | ] 79 | -------------------------------------------------------------------------------- /docs/_templates/autosummary/class.rst: -------------------------------------------------------------------------------- 1 | {{ fullname | escape | underline}} 2 | 3 | .. currentmodule:: {{ module }} 4 | 5 | .. autoclass:: {{ objname }} 6 | :members: 7 | :show-inheritance: 8 | {#- These classes inherit docstrings from the raw qt source, which generates rst syntax errors when building the docs #} 9 | {% if objname not in ["progress", "cancelable_progress"] -%} 10 | :inherited-members: 11 | {%- endif %} 12 | 13 | {% block methods %} 14 | 15 | {% if methods %} 16 | .. rubric:: {{ _('Methods') }} 17 | 18 | .. autosummary:: 19 | {% for item in methods %} 20 | {% if not item.startswith('_') %} 21 | ~{{ name }}.{{ item }} 22 | {% endif %} 23 | {%- endfor %} 24 | {% endif %} 25 | {% endblock %} 26 | 27 | {% block attributes %} 28 | {% if attributes %} 29 | .. rubric:: {{ _('Attributes') }} 30 | 31 | .. autosummary:: 32 | {% for item in attributes %} 33 | {{ item|get_attributes(name, module) }} 34 | {%- endfor %} 35 | {% endif %} 36 | {% endblock %} 37 | 38 | .. rubric:: {{ _('Details') }} 39 | -------------------------------------------------------------------------------- /docs/_templates/autosummary/module.rst: -------------------------------------------------------------------------------- 1 | {{ fullname | escape | underline}} 2 | 3 | .. automodule:: {{ fullname }} 4 | 5 | {% block attributes %} 6 | {% if attributes %} 7 | .. rubric:: Module Attributes 8 | 9 | {% for item in attributes %} 10 | .. autoattribute:: {{ fullname }}.{{ item }} 11 | {%- endfor %} 12 | {% endif %} 13 | {% endblock %} 14 | 15 | {% block classes %} 16 | {% if classes %} 17 | .. rubric:: {{ _('Classes') }} 18 | 19 | .. autosummary:: 20 | :nosignatures: 21 | :toctree: 22 | {% for item in classes %} 23 | {{ item }} 24 | {%- endfor %} 25 | {% endif %} 26 | {% endblock %} 27 | 28 | {% block functions %} 29 | {% if functions %} 30 | .. rubric:: {{ _('Functions') }} 31 | 32 | {% for item in functions %} 33 | .. autofunction:: {{ item }} 34 | {%- endfor %} 35 | {% endif %} 36 | {% endblock %} 37 | 38 | {% block exceptions %} 39 | {% if exceptions %} 40 | .. rubric:: {{ _('Exceptions') }} 41 | 42 | .. autosummary:: 43 | :nosignatures: 44 | :toctree: 45 | {% for item in exceptions %} 46 | {{ item }} 47 | {%- endfor %} 48 | {% endif %} 49 | {% endblock %} 50 | -------------------------------------------------------------------------------- /docs/_templates/details_polygon_path_tool.md: -------------------------------------------------------------------------------- 1 | The sequence of events to draw a polygon or path are almost the same 2 | when using either the mouse or a tablet. 3 | 4 | Drawing with mouse 5 | 6 | 1. Click mouse (left-click) to begin drawing. 7 | 2. Move mouse -- without holding down the mouse button -- to draw the path. 8 | 3. Click mouse (left-click) or press `Esc` to end drawing the path or polygon. 9 | In case of drawing a polygon the polygon will be automatically completed. 10 | 11 | 12 | Drawing with tablet 13 | 14 | The polygon lasso and the path tool can also be used to draw `Polygons` or `Paths` 15 | using a tablet. In this case, drawing the polygon or path is started by touching 16 | the tablet screen with the tablet stylus and drawing will continue for as long 17 | as the pencil is moved while touching the tablet screen. Note that similar behavior 18 | is also available when using a macOS trackpad, using three-finger drag mode. 19 | 20 | Adding of vertices while drawing 21 | 22 | For both mouse and tablet mode, vertices are added only if the vertex to be added 23 | is at a certain number of screen pixels away from the previous vertex. This value 24 | can be adjusted in the settings in napari by going to `File` -> `Preferences` (or 25 | `control + shift + p`), then in the menu on the left-clicking on `Experimental` 26 | and then adjusting the value of `Minimum distance threshold of shapes lasso tool`. 27 | The default is 10 and can be any integer higher than 0 and lower than 50. As with 28 | the polygon creation tool, drawing the shape can also be finished by pressing the 29 | `Esc` key. 30 | 31 | Reducing the number of vertices 32 | 33 | After finishing drawing a polygon or path, an implementation of the 34 | [Ramer–Douglas–Peucker algorithm](https://en.wikipedia.org/wiki/Ramer–Douglas–Peucker_algorithm) 35 | is applied to reduce the number of vertices that make up the geometry. In case of the 36 | path the structure is preserved while in case of a polygon the contour is preserved. 37 | The aggressiveness with which the algorithm reduces the number of vertices is determined 38 | by an `epsilon` parameter, which is a perpendicular distance threshold. Any vertices 39 | beyond the threshold will be preserved, so if `epsilon` is set to `0`, no vertices 40 | will be removed. With increasing values of `epsilon`, more and more vertices will 41 | be removed. The value of `epsilon` can be set in napari by going to `File` -> 42 | `Preferences` (or `control + shift + p`), then in the menu on the left-clicking 43 | on `Experimental` and then adjusting the value of `RDP epsilon`. The default value 44 | is 0.5 and cannot be set lower than 0. -------------------------------------------------------------------------------- /docs/_templates/navbar-project.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | napari 4 | 5 | -------------------------------------------------------------------------------- /docs/_templates/sbt-sidebar-footer.html: -------------------------------------------------------------------------------- 1 | {% if theme_navbar_footer_text %}{% set theme_extra_navbar=theme_navbar_footer_text %}{% endif %} 2 | {% if theme_extra_navbar %} 3 | 6 | {% endif %} -------------------------------------------------------------------------------- /docs/_templates/sidebar-link-items.html: -------------------------------------------------------------------------------- 1 | 26 | -------------------------------------------------------------------------------- /docs/_templates/sidebar-nav-bs.html: -------------------------------------------------------------------------------- 1 | {# Displays the TOC-subtree for pages nested under the currently active top-level TOCtree element. #} 2 | 43 | -------------------------------------------------------------------------------- /docs/api/event_loop.rst: -------------------------------------------------------------------------------- 1 | Starting the Event Loop 2 | ----------------------- 3 | 4 | .. autosummary:: 5 | 6 | napari.run 7 | -------------------------------------------------------------------------------- /docs/api/index.md: -------------------------------------------------------------------------------- 1 | (api)= 2 | # API Reference 3 | 4 | Information on specific functions, classes, and methods. 5 | 6 | ```{tableofcontents} 7 | ``` -------------------------------------------------------------------------------- /docs/api/misc.rst: -------------------------------------------------------------------------------- 1 | Misc 2 | ---- 3 | 4 | .. autosummary:: 5 | 6 | napari.save_layers 7 | napari.sys_info 8 | -------------------------------------------------------------------------------- /docs/api/modules.rst: -------------------------------------------------------------------------------- 1 | Modules 2 | ------- 3 | 4 | .. rubric:: Primary 5 | 6 | For the average user's workflows. 7 | 8 | .. autosummary:: 9 | :toctree: 10 | 11 | napari.layers 12 | napari.view_layers 13 | napari.types 14 | napari.utils 15 | napari.window 16 | napari.utils.transforms 17 | 18 | .. rubric:: Advanced 19 | 20 | For those wishing to add custom functionality to their project. 21 | 22 | .. autosummary:: 23 | :toctree: 24 | 25 | napari.plugins 26 | napari.components 27 | napari.qt 28 | napari.qt.threading 29 | napari.utils.events 30 | napari.utils.notifications 31 | napari.utils.perf 32 | 33 | .. autosummary:: 34 | :toctree: 35 | 36 | napari 37 | -------------------------------------------------------------------------------- /docs/api/view_layer.rst: -------------------------------------------------------------------------------- 1 | Viewing a Layer 2 | --------------- 3 | 4 | .. autosummary:: 5 | napari.view_image 6 | napari.view_labels 7 | napari.view_path 8 | napari.view_points 9 | napari.view_shapes 10 | napari.view_surface 11 | napari.view_tracks 12 | napari.view_vectors 13 | 14 | .. autosummary:: napari.Viewer 15 | -------------------------------------------------------------------------------- /docs/community/index.md: -------------------------------------------------------------------------------- 1 | (community)= 2 | # Community 3 | 4 | There are several different ways to be a part of the napari community. From 5 | being a code or documentation contributor, to creating educational content or 6 | examples, you are welcome to help develop and improve napari. 7 | 8 | ## Questions 9 | 10 | To ask questions and interact with the team, you can join our 11 | [zulip chat](https://napari.zulipchat.com/login/) or participate in our 12 | [meetings](meeting-schedule). 13 | 14 | To ask general questions about napari usage to the community, including plugins, 15 | you can visit ![forum image.sc logo](../images/image_sc_logo.png) [forum.image.sc/tag/napari](https://forum.image.sc/tag/napari) 16 | 17 | ## News and updates 18 | 19 | To get the latest news from the napari team, follow us on: 20 | 21 | * ![mastodon logo](../images/mastodon_logo.svg) mastodon [@napari@fosstodon.org](https://fosstodon.org/@napari) 22 | * ![bluesky logo](../images/Bluesky_Logo.svg) BlueSky [@napari.org](https://bsky.app/profile/napari.org) 23 | 24 | ## Contributing and Bug reporting 25 | 26 | The napari development happens in the napari GitHub repository [github.com/napari/napari](https://github.com/napari/napari). 27 | If you spot a bug, please check our [issues list](https://github.com/napari/napari/issues) . If you 28 | do not find a matching report, please open a new issue. 29 | 30 | If you are interested in contributing, check out our 31 | [contributing guide](napari-contributing). 32 | 33 | ## Blog 34 | To read announcements, learn more about who is using napari and see what our 35 | community has to say, check out our blog, the 36 | [Island Dispatch](https://napari.org/island-dispatch). 37 | -------------------------------------------------------------------------------- /docs/community/licensing.md: -------------------------------------------------------------------------------- 1 | # Licensing 2 | 3 | napari is distributed under the BSD-3-Clause license, a copy of which is available 4 | [here](https://github.com/napari/napari/blob/latest/LICENSE). 5 | 6 | ```{include} ../../LICENSE 7 | :literal: true 8 | ``` 9 | 10 | ```{include} ../../EULA.md 11 | ``` 12 | -------------------------------------------------------------------------------- /docs/community/meeting_schedule.md: -------------------------------------------------------------------------------- 1 | (meeting-schedule)= 2 | 3 | # Meeting schedule 4 | 5 | We hold regular meetings, the timings of which are available on our [public calendar](https://calendar.google.com/calendar/embed?src=c_35r93ec6vtp8smhm7dv5uot0v4%40group.calendar.google.com). 6 | 7 | If you are using napari or interested in how napari could be used in your work, please join one of our regular community meetings. If you're interested in diving deep on particular topic you could join the closest working group meeting. We currently have four working groups 'Bundled Application', 'Plugins', 'Architecture', and 'Documentation' that meet on a semi-regular candence. You can learn more about our working groups and community meetings in the corresponding discussion streams on the [napari Zulip](https://napari.zulipchat.com/login/). 8 | 9 |
10 | 11 |
12 | 13 | 24 | 25 | 26 | 27 | 77 | -------------------------------------------------------------------------------- /docs/community/resources.md: -------------------------------------------------------------------------------- 1 | # Community resources 2 | 3 | ## napari logo 4 | 5 | Below are several versions of the napari logo that you can use in your docs or presentations. 6 | 7 | 8 | 9 | 15 | 21 | 27 | 33 | 34 |
10 | 11 | napari logo 12 | Download .png 13 | 14 | 16 | 17 | napari logo with no border 18 | Download .png 19 | 20 | 22 | 23 | napari logo, silhouette only 24 | Download .png 25 | 26 | 28 | 29 | napari logo, silhouette only, svg format 30 | Download .svg 31 | 32 |
35 | -------------------------------------------------------------------------------- /docs/data/1BNA.obj.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/data/1BNA.obj.gz -------------------------------------------------------------------------------- /docs/developers/architecture/index.md: -------------------------------------------------------------------------------- 1 | (architecture-index)= 2 | 3 | # napari architecture guide 4 | 5 | These pages provide a guide to the napari software architecture 6 | and is aimed at contributors who would like a better understanding of the napari 7 | code base. For advanced napari usage documentation, see [](explanations). 8 | 9 | - [](napari-directory-organization): Guide to the napari directory organization. 10 | - [](ui-sections): Explains how napari GUI sections map to the napari source code 11 | directory organization. 12 | - [](napari-model-event): Explains napari python models and how they are 13 | connected to Qt classes and Vispy classes. 14 | - [](app-model): Explains the napari application model, a declarative schema for 15 | keeping track of commands, menus and keybindings of the napari GUI. 16 | - [](magicgui_type_registration): Explains how `magicgui` widgets declared by users 17 | or plugins are automatically created, inputs updated and outputs added to the 18 | `Viewer` for registered `napari` types. -------------------------------------------------------------------------------- /docs/developers/architecture/ui_sections/index.md: -------------------------------------------------------------------------------- 1 | (ui-sections)= 2 | 3 | # UI sections 4 | 5 | Here you can find some diagrams and information related with the different 6 | sections that conform the application graphical interface. You will find for each section a diagram describing 7 | the dependencies between modules and a directory tree showing where those modules are located. 8 | 9 | - [Application menu](./application_menus_ui) 10 | - [Application status bar](./application_status_bar_ui) 11 | - [Layers controls](./layers_controls_ui) 12 | - [Layers list](./layers_list_ui) 13 | - [Viewer](./viewer_ui) 14 | - [Console](./console_ui) 15 | - [Dialogs](./dialogs_ui) 16 | 17 | Also, a plugin to inspect how specific UI elements/widgets are defined 18 | over the napari source code is available: [napari-ui-tracer](https://github.com/dalthviz/napari-ui-tracer) 19 | -------------------------------------------------------------------------------- /docs/developers/contributing/performance/index.md: -------------------------------------------------------------------------------- 1 | (performance)= 2 | # Performance 3 | 4 | Information on profiling and benchmarking. 5 | 6 | ```{tableofcontents} 7 | ``` 8 | -------------------------------------------------------------------------------- /docs/developers/images/execution_graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/developers/images/execution_graph.png -------------------------------------------------------------------------------- /docs/developers/index.md: -------------------------------------------------------------------------------- 1 | (contributing-index)= 2 | # Contributing 3 | 4 | We welcome your contributions! Here you will find resources to help you contribute 5 | to napari. 6 | 7 | napari has a [Code of Conduct](napari-coc) that should be honored by everyone who participates in the `napari` community. 8 | 9 | - [](contact): how to contact us. 10 | - [](roadmaps): convey the general direction for napari development and possible work plans 11 | - [napari Workshop](https://napari.org/napari-workshop-template/home.html): create and deploy your own napari workshop materials 12 | 13 | - **Contributor guides**: resources for contributors: 14 | - [Contributing guide](napari-contributing) 15 | - [Development installation](dev-installation) 16 | - [Testing](napari-testing) 17 | - [Translations](napari-translations) 18 | - [Performance](performance) 19 | - [Profiling](napari-profiling) 20 | - [Benchmarks](napari-benchmarks) 21 | - [Contributing documentation](contributing-docs) 22 | - [](architecture-index) 23 | 24 | - **Core developer guides**: resources for core developers, including information for 25 | onboarding new core developers: 26 | - [Core Developer guide](core-dev-guide) 27 | - [Maintenance](napari-maintenance) 28 | - [Release guide](napari-release) 29 | - [Deploying documentation](docs-deployment) 30 | - [Packaging](napari-packaging) 31 | 32 | (contact)= 33 | 34 | ## Contact 35 | 36 | There are a number of ways to contact the napari community: 37 | 38 | - [zulip](https://napari.zulipchat.com/): the zulip napari community chat channel. 39 | - [GitHub issue](https://github.com/napari/napari/issues): feel free to open an 40 | issue in our GitHub repository. Issues and pull-requests are written in [Markdown](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/about-writing-and-formatting-on-github). You can find a comprehensive guide [here](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax) 41 | - [Image.sc forum](https://forum.image.sc/tag/napari): napari is a community partner 42 | on the Image.sc forum. All usage support requests should be posted on the forum with 43 | the tag "napari". 44 | -------------------------------------------------------------------------------- /docs/gallery.md: -------------------------------------------------------------------------------- 1 | (gallery)= 2 | # Examples 3 | 4 | Examples of napari usage. 5 | 6 | All examples in this gallery can be downloaded as Python scripts or Jupyter 7 | notebooks to be executed locally. Check out [](launch-jupyter) for more details 8 | on using napari in Jupyter notebooks. 9 | 10 | ```{note} 11 | 12 | If you want to submit a new example to this gallery, check out our 13 | [contribution guide](add-examples)! 14 | ``` 15 | 16 | ```{toctree} 17 | :maxdepth: 1 18 | 19 | _tags/tagsindex 20 | ``` 21 | 22 | ```{eval-rst} 23 | .. include:: gallery/index.rst 24 | :start-after: :orphan: 25 | :end-before: .. toctree:: 26 | ``` 27 | -------------------------------------------------------------------------------- /docs/guides/events_reference.md: -------------------------------------------------------------------------------- 1 | (events-reference)= 2 | # Events reference 3 | 4 | The following tables contain events that you may connect to. For example, to have a specific function called whenever the users 5 | changes the number of dimensions displayed in the viewer (e.g. 6 | from 2D to 3D), you can use `.connect(your_callback)`: 7 | 8 | ```python 9 | from napari.utils.events import Event 10 | from napari import Viewer 11 | 12 | def my_callback(event: Event): 13 | print("The number of dims shown is now:", event.value) 14 | 15 | viewer = Viewer() 16 | viewer.dims.events.ndim.connect(my_callback) 17 | ``` 18 | 19 | ## Viewer events 20 | 21 | 22 | ```{include} _viewer_events.md 23 | ``` 24 | 25 | ## LayerList events 26 | 27 | ```{include} _layerlist_events.md 28 | ``` 29 | 30 | ## Layer events 31 | 32 | Events listed for the base class `Layer` are present on all layer types. 33 | 34 | ```{include} _layer_events.md 35 | ``` 36 | -------------------------------------------------------------------------------- /docs/guides/index.md: -------------------------------------------------------------------------------- 1 | (explanations)= 2 | # In-depth explanations 3 | 4 | ```{note} 5 | These pages describe advanced usage and how napari works internally. If you are 6 | just getting started, check out our [tutorials](tutorials) or 7 | [how-to guides](how-tos) instead. 8 | ``` 9 | 10 | ## Advanced usage 11 | 12 | If you use napari to view and interact with the results of long-running 13 | computations, and would like to avoid having the viewer become unresponsive 14 | while you wait for a computation to finish, you may benefit from reading about 15 | {ref}`multithreading-in-napari`. 16 | 17 | If you are interested in using napari to explore 3D objects, see {ref}`3d-interactivity`. 18 | 19 | To understand how napari produces a 2- or 3-dimensional render in the canvas 20 | from layers’ n-dimensional array-like data, check out the {ref}`dedicated guide on rendering in napari `. 21 | 22 | To understand how to test and measure performance in napari, see {ref}`napari-performance`. 23 | 24 | ## Architecture documents 25 | 26 | See {ref}`napari-preferences` for the list of preferences that can be set via 27 | the preferences dialog. 28 | 29 | If you are writing a plugin manifest, or are interested in contributing to 30 | napari, you can also read about the concept of {ref}`context-expressions`. 31 | 32 | For a full list of events you may connect to, see {ref}`events-reference`. 33 | -------------------------------------------------------------------------------- /docs/howtos/extending/index.md: -------------------------------------------------------------------------------- 1 | (extending-napari)= 2 | # Extending napari 3 | 4 | There are a number of ways to extend your usage of the napari application: 5 | 6 | * [**Adding widgets**](creating-widgets): adding a widget (new GUI interaction element) 7 | to your napari application 8 | * **Connecting callbacks**: customize the behavior of napari by connecting an action 9 | (function) to an event via the [event loop](intro-to-event-loop): 10 | - [**Key press**](connect-key-event): perform an action based on a keyboard shortcut 11 | - [**Mouse event**](connect-mouse-event): perform an action based on a mouse event 12 | - [**Layer/viewer event**](connect-napari-event): perform an action when a layer or 13 | napari viewer state changes 14 | 15 | None of the above require you to create a [plugin](plugins-index) but you can 16 | turn your napari 'extension' into a plugin, which could be shared with the 17 | community. 18 | -------------------------------------------------------------------------------- /docs/howtos/headless.md: -------------------------------------------------------------------------------- 1 | (napari-headless)= 2 | 3 | # Running napari headlessly 4 | 5 | Running napari headlessly (without opening a napari GUI interface) may be 6 | desired for some users, for example to run batch analysis via a CLI. 7 | 8 | Headless mode can be achieved by not showing the viewer: 9 | 10 | ```python 11 | viewer = napari.Viewer(show=False) 12 | # or directly creating a ViewerModel instance 13 | viewer_model = napari.components.ViewerModel() 14 | ``` 15 | 16 | Currently, using `napari.Viewer(show=False)` will *not* prevent 17 | Qt from being imported. This can crash the napari application as on creation 18 | of QApplication, if Qt cannot connect to display it will abort the application. 19 | One way around this is to ensure that QtPy or any of the Qt backends are not 20 | installed. Another option is to set the environment variable: 21 | `QT_QPA_PLATFORM=offscreen` in the environment. This tells Qt backend that 22 | rendering should be done offscreen. 23 | 24 | Alternatively, any of the lower level napari components such as `LayerList` and 25 | `Layer` could be directly used, which would not start a napari viewer. 26 | -------------------------------------------------------------------------------- /docs/howtos/index.md: -------------------------------------------------------------------------------- 1 | (how-tos)= 2 | # How-to guides 3 | 4 | These guides show you how to complete tasks with napari. They assume you have 5 | already installed **napari**, know how to launch the viewer, and are familiar 6 | with its layout. For help with installation see our 7 | [installation tutorial](napari-installation). For help 8 | getting started with the viewer see our 9 | [How to launch napari guide](launch). For 10 | help understanding the organisation of the viewer, including things like the 11 | layers list, the layer properties widgets, the layer control panels, and the 12 | dimension sliders see our [napari viewer](viewer-tutorial) 13 | tutorial. 14 | 15 | - [Using layers](using-layers): Learn about how to use the layers currently 16 | supported by napari. 17 | - [Extending napari](extending-napari): Learn how to extend napari by adding widgets 18 | and connecting callbacks. 19 | - [napari + ImageJ how-to guide](napari-imagej): Learn about how to use napari 20 | - [napari in Docker](napari-docker): Learn about using napari in docker. 21 | - [Performance monitoring](napari-perfmon): Learn about how to monitor napari 22 | performance and diagnose potential problems. 23 | - [napari headless](napari-headless): Tips on how to run napari headlessly. 24 | - [Themes](napari-themes): Changing appearance of the napari GUI with your own theme 25 | and sharing your theme via a plugin. 26 | -------------------------------------------------------------------------------- /docs/howtos/layers/index.md: -------------------------------------------------------------------------------- 1 | (using-layers)= 2 | # Using layers 3 | 4 | [Layers](napari.layers) are the viewable objects that can be added to a viewer. 5 | To learn about how to use the layers currently supported by napari, check the 6 | following how-to guides: 7 | 8 | ```{tableofcontents} 9 | ``` 10 | 11 | Each of these guides has a section on how to manipulate the layers using the GUI 12 | controls and a section on how to manipulate them programmatically. 13 | 14 | For a high-level overview of the napari Layers, see 15 | [Layers at a glance](layers-glance). -------------------------------------------------------------------------------- /docs/howtos/themes.md: -------------------------------------------------------------------------------- 1 | (napari-themes)= 2 | 3 | # Creating and testing themes 4 | 5 | A theme is a set of colors used throughout napari. See, for example, the 6 | builtin themes in `napari/utils/theme.py`. To make a new theme, create a new 7 | `dict` with the same keys as one of the existing themes, and 8 | replace the values with your new colors. For example 9 | 10 | ```python 11 | from napari.utils.theme import get_theme, register_theme 12 | 13 | 14 | blue_theme = get_theme('dark') 15 | blue_theme.update( 16 | background='rgb(28, 31, 48)', 17 | foreground='rgb(45, 52, 71)', 18 | primary='rgb(80, 88, 108)', 19 | current='rgb(184, 112, 0)', 20 | ) 21 | 22 | register_theme('blue', blue_theme) 23 | ``` 24 | 25 | 26 | To test out the theme, use the 27 | `qt_theme_sample.py` file from the command line as follows: 28 | 29 | ```sh 30 | python -m napari._qt.widgets.qt_theme_sample 31 | ``` 32 | *note*: you may specify a theme with one additional argument on the command line: 33 | ```sh 34 | python -m napari._qt.widgets.qt_theme_sample dark 35 | ``` 36 | (providing no arguments will show all themes in `theme.py`) 37 | 38 | ## Sharing your theme via a plugin 39 | 40 | You can also share your theme with the community via a [plugin](plugins-index) 41 | by adding a [theme contribution](contributions-themes). See the 42 | [plugin](plugins-index) documentation for details on creating a plugin. 43 | -------------------------------------------------------------------------------- /docs/images/Bluesky_Logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /docs/images/image_sc_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/images/image_sc_logo.png -------------------------------------------------------------------------------- /docs/images/mastodon_logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /docs/naps/_static/kb-example-graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/naps/_static/kb-example-graph.png -------------------------------------------------------------------------------- /docs/naps/_static/multicanvas-napari-architecture-today.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/naps/_static/multicanvas-napari-architecture-today.png -------------------------------------------------------------------------------- /docs/naps/_static/multicanvas-napari-architecture-tomorrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/naps/_static/multicanvas-napari-architecture-tomorrow.png -------------------------------------------------------------------------------- /docs/naps/_static/nap-flowchart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/naps/_static/nap-flowchart.png -------------------------------------------------------------------------------- /docs/naps/_static/nap6-menu-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/naps/_static/nap6-menu-example.png -------------------------------------------------------------------------------- /docs/naps/_static/napari-many-plugins.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/naps/_static/napari-many-plugins.png -------------------------------------------------------------------------------- /docs/naps/index.md: -------------------------------------------------------------------------------- 1 | (nap_list)= 2 | # napari Advancement Proposals (NAPs) 3 | 4 | NAPs document any major changes or proposals to the napari project. 5 | 6 | ## List of NAPs 7 | 8 | ```{tableofcontents} 9 | ``` 10 | 11 | ```{toctree} 12 | --- 13 | hidden: 14 | --- 15 | template 16 | ``` 17 | -------------------------------------------------------------------------------- /docs/naps/template.md: -------------------------------------------------------------------------------- 1 | :orphan: 2 | 3 | (nap-template)= 4 | 5 | # NAP-X — Template and Instructions 6 | 7 | ```{eval-rst} 8 | :Author: 9 | :Created: 10 | :Resolution: (required for Accepted | Rejected | Withdrawn) 11 | :Resolved: 12 | :Status: 13 | :Type: 14 | :Version effective: (for accepted NAPs) 15 | ``` 16 | 17 | ## Abstract 18 | 19 | The abstract should be a short description of what the NAP will achieve. 20 | 21 | ## Motivation and Scope 22 | 23 | This section describes the need for the proposed change. It should describe 24 | the existing problem, who it affects, what it is trying to solve, and why. 25 | This section should explicitly address the scope of and key requirements 26 | for the proposed change. 27 | 28 | ## Detailed Description 29 | 30 | This section should provide a detailed description of the proposed change. It 31 | should include examples of how the new functionality would be used, intended 32 | use-cases, and pseudocode illustrating its use. 33 | 34 | ## Related Work 35 | 36 | This section should list relevant and/or similar technologies, possibly in 37 | other libraries. It does not need to be comprehensive, just list the major 38 | examples of prior and relevant art. 39 | 40 | ## Implementation 41 | 42 | This section lists the major steps required to implement the NAP. Where 43 | possible, it should be noted where one step is dependent on another, and which 44 | steps may be optionally omitted. Where it makes sense, each step should 45 | include a link to related pull requests as the implementation progresses. 46 | 47 | Any pull requests or development branches containing work on this NAP 48 | should be linked to from here. (A NAP does not need to be implemented in a 49 | single pull request if it makes sense to implement it in discrete phases). 50 | 51 | If a new NAP document is created, it should be added to the documentation Table 52 | of Contents as an item on `napari/docs/_toc.yml`. 53 | 54 | ## Backward Compatibility 55 | 56 | This section describes the ways in which the NAP affects backward 57 | compatibility, including both breakages and decisions that better support 58 | backward compatibility. 59 | 60 | ## Future Work 61 | 62 | This section describes work that is out of scope for the NAP, but that the 63 | NAP might suggest, or that the NAP author envisions as potential future 64 | expansion of the work or related work. 65 | 66 | ## Alternatives 67 | 68 | If there were any alternative solutions to solving the same problem, they 69 | should be discussed here, along with a justification for the chosen 70 | approach. 71 | 72 | ## Discussion 73 | 74 | This section may just be a bullet list including links to any discussions 75 | regarding the NAP, but could also contain additional comments about that 76 | discussion: 77 | 78 | - This includes links to discussion forum threads or relevant GitHub discussions. 79 | 80 | ## References and Footnotes 81 | 82 | All NAPs should be declared as dedicated to the public domain with the CC0 83 | license [^id3], as in `Copyright`, below, with attribution encouraged with 84 | CC0+BY [^id4]. 85 | 86 | [^id3]: CC0 1.0 Universal (CC0 1.0) Public Domain Dedication, 87 | 88 | 89 | [^id4]: 90 | 91 | ## Copyright 92 | 93 | This document is dedicated to the public domain with the Creative Commons CC0 94 | license [^id3]. Attribution to this source is encouraged where appropriate, as per 95 | CC0+BY [^id4]. 96 | -------------------------------------------------------------------------------- /docs/plugins/advanced_topics/images/adapted_plugin_with_tag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/plugins/advanced_topics/images/adapted_plugin_with_tag.png -------------------------------------------------------------------------------- /docs/plugins/advanced_topics/images/npe1_plugin_no_tag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/napari/docs/f2fd6b2548d7ffe833581c37d835bb240672d31c/docs/plugins/advanced_topics/images/npe1_plugin_no_tag.png -------------------------------------------------------------------------------- /docs/plugins/advanced_topics/index.md: -------------------------------------------------------------------------------- 1 | # Advanced Topics 2 | 3 | ```{warning} 4 | In napari 0.6.0 we have made some changes to napari's default behaviour when validating legacy "npe1" plugins. 5 | You may see a warning when starting `napari` if you have legacy "npe1" plugins installed. 6 | You can learn more about this change in the [Changes to the plugin engine in 0.6.0](adapted-plugin-guide) document. 7 | ``` 8 | 9 | Some plugin developers may find more **in-depth, technical information** helpful. This section describes topics, such as: 10 | - specifications for napari's plugin ecosystem using the plugin engine `npe2`. 11 | - migration to `npe2` from the deprecated napari plugin engine v1. 12 | 13 | ## npe2: napari plugin engine v2 14 | 15 | ::::{grid} 16 | :::{grid-item-card} npe2 manifest reference 17 | :link: plugin-manifest 18 | :link-type: ref 19 | 20 | A reference for the `npe2` manifest file, which is used to define the plugin and its contributions. 21 | 22 | ::: 23 | 24 | :::{grid-item-card} `npe2` contributions reference 25 | :link: contributions-ref 26 | :link-type: ref 27 | 28 | A technical specification for how plugins can contribute additional functionality and features to napari. 29 | 30 | ::: 31 | :::: 32 | 33 | ## Deprecated: napari plugin engine v1 34 | 35 | :::{important} 36 | New plugins should use the `npe2` standard. 37 | We encourage first generation plugin authors to migrate their plugin to the `npe2` standard. 38 | ::: 39 | 40 | ::::{grid} 41 | :::{grid-item-card} Napari plugin engine v1 reference 42 | :link: napari-plugin-engine 43 | :link-type: ref 44 | 45 | These documents provide background on the first generation plugin system which is now deprecated. 46 | 47 | ::: 48 | 49 | :::{grid-item-card} Migration guide to `npe2` 50 | :link: npe2-migration-guide 51 | :link-type: ref 52 | Have a plugin written for the first generation plugin system? This guide will help you migrate to the `npe2` plugin system. 53 | 54 | ::: 55 | 56 | :::: -------------------------------------------------------------------------------- /docs/plugins/building_a_plugin/guides.md: -------------------------------------------------------------------------------- 1 | (plugin-contribution-guides)= 2 | # Plugin contributions 3 | 4 | This page provides guides on many of the plugin contribution patterns. 5 | Each provides a general overview of the purpose of the contribution and 6 | an example implementation. For details on the type and meaning of each 7 | field in a specific contribution, See the 8 | [contributions reference](contributions-ref) 9 | 10 | (plugin-readers-guide)= 11 | ```{include} ../_npe2_readers_guide.md 12 | ``` 13 | ---------------- 14 | 15 | ```{include} ../_npe2_writers_guide.md 16 | ``` 17 | ---------------- 18 | 19 | ```{include} ../_npe2_widgets_guide.md 20 | ``` 21 | ---------------- 22 | 23 | ```{include} ../_npe2_sample_data_guide.md 24 | ``` 25 | ---------------- 26 | 27 | ```{include} _layer_data_guide.md 28 | ``` 29 | -------------------------------------------------------------------------------- /docs/plugins/building_a_plugin/index.md: -------------------------------------------------------------------------------- 1 | (how-to-build-a-plugin)= 2 | # Building a plugin 3 | 4 | Plugins allow developers to customize and extend napari. This includes 5 | 6 | - Adding file format support with [readers] and [writers] 7 | - Adding custom [widgets] and user interface elements 8 | - Providing [sample data][sample_data] 9 | - Changing the look of napari with a color [theme] 10 | 11 | ::::{grid} 12 | :::{grid-item-card} Your first plugin 13 | :link: your-first-plugin 14 | :link-type: ref 15 | If you're just getting started with napari plugins, try our tutorial to build your first plugin! 16 | 17 | ::: 18 | 19 | :::{grid-item-card} Plugin functionality 20 | :link: plugin-contribution-guides 21 | :link-type: ref 22 | 23 | New pieces of functionality are termed contributions. To understand what plugins can add to napari, see the plugin contributions guide. 24 | 25 | ::: 26 | :::: 27 | 28 | ::::{grid} 29 | :::{grid-item-card} Best practices 30 | :link: best-practices 31 | :link-type: ref 32 | 33 | There are a few best practices to keep in mind when building a plugin. See the best practices guide for details. 34 | 35 | ::: 36 | 37 | :::{grid-item-card} Testing and publishing 38 | :link: plugin-test-deploy 39 | :link-type: ref 40 | 41 | Testing your plugin is an important step before publishing. Once your plugin is ready, you can publish it to PyPI, conda-forge and the napari-hub. See the testing and publishing guide for details. 42 | ::: 43 | :::: 44 | 45 | ```{admonition} Introducing npe2 46 | :class: important 47 | 48 | We introduced a new plugin engine [`npe2`][npe2] in December 2021. 49 | 50 | Unless otherwise stated, most of the documentation herein pertains 51 | to the new npe2 format (which uses a static `napari.yaml` manifest) 52 | 53 | Plugins targeting the first generation `napari-plugin-engine` 54 | (using `@napari_hook_implementation` decorators, see [npe1]) will 55 | continue to work for at least the first half of 2022, but we 56 | recommend migrating to `npe2`. See the 57 | [migration guide](npe2-migration-guide) for details. 58 | ``` 59 | 60 | [npe1]: https://github.com/napari/napari-plugin-engine 61 | [npe2]: https://github.com/napari/npe2 62 | [readers]: contributions-readers 63 | [writers]: contributions-writers 64 | [widgets]: contributions-widgets 65 | [sample_data]: contributions-sample-data 66 | [theme]: contributions-themes -------------------------------------------------------------------------------- /docs/plugins/index.md: -------------------------------------------------------------------------------- 1 | (plugins-index)= 2 | 3 | # Plugins 4 | 5 | ```{warning} 6 | In napari 0.6.0 we have made some changes to napari's default behaviour when validating legacy "npe1" plugins. 7 | You may see a warning when starting `napari` if you have legacy "npe1" plugins installed. 8 | You can learn more about this change in the [Changes to the plugin engine in 0.6.0](adapted-plugin-guide) document. 9 | ``` 10 | 11 | Plugins extend napari's functionality, allowing for customization and sharing with the community. 12 | While you can use scripts and widgets to extend napari, plugins provide great flexibility. 13 | Existing plugins extend napari to add: 14 | 15 | - support for import and export of image and related data types. 16 | - support for working with specialized data formats. 17 | - domain specific features, including microscopy, climate, geoscience, and more. 18 | 19 | Share and discover napari plugins on [napari hub](https://napari-hub.org), 20 | [PyPI](https://pypi.org/search/?q=napari), or [conda-forge](https://conda-forge.org/packages/). 21 | Interested in creating a plugin? A [napari-plugin-template](https://github.com/napari/napari-plugin-template), 22 | a [copier](https://copier.readthedocs.io/en/stable/) template, bootstraps authoring 23 | [npe](https://github.com/napari/npe2)-based napari plugins. 24 | 25 | ## Plugin users 26 | 27 | Check out the user focused guides for finding, installing, and using napari plugins. 28 | 29 | ::::{grid} 2 30 | :::{grid-item-card} Finding and installing plugins 31 | :link: find-and-install-plugins 32 | :link-type: ref 33 | 34 | How to find and install plugins using the napari plugin manager. 35 | ::: 36 | 37 | :::{grid-item-card} napari hub 38 | :link: https://napari-hub.org 39 | :link-type: url 40 | 41 | Head over to the napari hub to search for plugins that suit your needs. 42 | ::: 43 | :::: 44 | 45 | ## Plugin developers 46 | 47 | Check out our plugin developer guides to start creating your own napari plugins. 48 | 49 | ::::{grid} 2 50 | :::{grid-item-card} Building a plugin 51 | :link: how-to-build-a-plugin 52 | :link-type: ref 53 | In depth guides to build a plugin for napari. 54 | 55 | ::: 56 | 57 | :::{grid-item-card} Best practices 58 | :link: best-practices 59 | :link-type: ref 60 | 61 | Set of important best practices to have in mind when building a plugin. 62 | ::: 63 | :::: 64 | 65 | ::::{grid} 2 66 | :::{grid-item-card} Testing and publishing 67 | :link: plugin-test-deploy 68 | :link-type: ref 69 | 70 | How to test your plugin works and how to publish it, 71 | along with some tips for making your plugin easy to find. 72 | ::: 73 | 74 | :::{grid-item-card} Virtual environments and useful tools 75 | :link: virtual-environments-and-useful-tools 76 | :link-type: ref 77 | 78 | Workshop on virtual environments and useful tools for plugin development. 79 | ::: 80 | 81 | :::: 82 | 83 | ::::{grid} 84 | :::{grid-item-card} Technical references 85 | :link: plugin-technical-references 86 | :link-type: ref 87 | 88 | Technical references for the plugin system and the plugin API 89 | and guides to convert from first generation plugins to npe2. 90 | ::: 91 | :::: 92 | ::::: 93 | 94 | ## Looking for help? 95 | 96 | If you have questions, try asking on the [zulip chat][napari_zulip]. 97 | Submit issues to the [napari github repository][napari_issues]. 98 | 99 | [napari_issues]: https://github.com/napari/napari/issues/new/choose 100 | [napari_zulip]: https://napari.zulipchat.com/ 101 | -------------------------------------------------------------------------------- /docs/plugins/technical_references/contributions.md: -------------------------------------------------------------------------------- 1 | (contributions-ref)= 2 | 3 | ```{include} ../_npe2_contributions.md 4 | ``` 5 | -------------------------------------------------------------------------------- /docs/plugins/technical_references/index.md: -------------------------------------------------------------------------------- 1 | (plugin-technical-references)= 2 | # Technical references 3 | 4 | Technical references for the plugin system and the plugin API. 5 | These references can be useful for plugin developers who want to understand the plugin system in more detail. 6 | 7 | ::::{grid} 8 | :::{grid-item-card} Manifest reference 9 | :link: plugin-manifest 10 | :link-type: ref 11 | 12 | A reference for the manifest file, which is used to define the plugin and its contributions. 13 | 14 | ::: 15 | 16 | :::{grid-item-card} Contributions reference 17 | :link: contributions-ref 18 | :link-type: ref 19 | 20 | A reference for exactly what can be contributed by a plugin. 21 | 22 | ::: 23 | :::: 24 | -------------------------------------------------------------------------------- /docs/plugins/technical_references/manifest.md: -------------------------------------------------------------------------------- 1 | (plugin-manifest)= 2 | 3 | ```{include} ../_npe2_manifest.md 4 | ``` 5 | -------------------------------------------------------------------------------- /docs/plugins/testing_and_publishing/deploy.md: -------------------------------------------------------------------------------- 1 | (plugin-deploy)= 2 | # Publish your plugin 3 | 4 | ## Preparing for release 5 | 6 | To help users find your plugin, make sure to use the `Framework :: napari` 7 | [classifier] in your package's core metadata. (If you used the napari plugin 8 | template, this has already been done for you.) 9 | 10 | Once your package is listed on [PyPI] (and includes the `Framework :: napari` 11 | [classifier]), it will also be visible on the [napari 12 | hub](https://napari-hub.org/). To ensure you are providing the relevant metadata and 13 | description for your plugin, see the following documentation in the [napari hub 14 | wiki](https://github.com/chanzuckerberg/napari-hub/wiki/Plugin-Developer's-Guide-to-the-napari-hub): 15 | 16 | - [Customizing your plugin’s 17 | listing](https://github.com/chanzuckerberg/napari-hub/wiki/Customizing-your-plugin's-listing) 18 | - [Writing the perfect description for your 19 | plugin](https://github.com/chanzuckerberg/napari-hub/wiki/Writing-the-Perfect-Description-for-your-Plugin) 20 | 21 | ```{admonition} The hub 22 | For more about the napari hub, see the [napari hub About 23 | page](https://www.napari-hub.org/about). To learn more about the hub’s 24 | development process, see the [napari hub GitHub’s 25 | Wiki](https://github.com/chanzuckerberg/napari-hub/wiki). 26 | 27 | If you want your plugin to be available on PyPI, but not visible on the napari 28 | hub, add a `visibility` flag to your plugin manifest. For more details, see the 29 | [manifest reference](plugin-manifest) and napari hub [customization 30 | guide][hub-guide-custom-viz]. 31 | ``` 32 | 33 | ## Deployment 34 | 35 | When you are ready to share your plugin, [upload the Python package to 36 | PyPI][pypi-upload] after which it will be installable using `python -m pip install 37 | `, or (assuming you added the `Framework :: napari` classifier) 38 | in the builtin plugin installer dialog. 39 | 40 | If you used the {ref}`napari-plugin-template`, you can also 41 | [setup automated deployments][autodeploy] on GitHub for every tagged commit. 42 | 43 | ```{admonition} conda-forge 44 | :class: attention 45 | 46 | You can also deploy your plugin to conda-forge. Check out [deploying to conda-forge](deploying-to-conda-forge) for more 47 | details on how to do that. 48 | ``` 49 | 50 | The [napari-plugin-manager](https://napari.org/napari-plugin-manager/) can be used to install plugins deployed to both 51 | PyPI and conda-forge. 52 | 53 | When you are ready for users, announce your plugin on the [Image.sc 54 | forum](https://forum.image.sc/tag/napari). 55 | 56 | 57 | [classifier]: https://pypi.org/classifiers/ 58 | [pypi]: https://pypi.org/ 59 | [pypi-upload]: https://packaging.python.org/en/latest/tutorials/packaging-projects/#uploading-the-distribution-archives 60 | [hubguide]: https://github.com/chanzuckerberg/napari-hub/blob/main/docs/customizing-plugin-listing.md 61 | [hub-guide-custom-viz]: https://github.com/chanzuckerberg/napari-hub/wiki/Customizing-your-plugin's-listing#visibility 62 | [autodeploy]: https://github.com/napari/napari-plugin-template#set-up-automatic-deployments 63 | -------------------------------------------------------------------------------- /docs/plugins/testing_and_publishing/index.md: -------------------------------------------------------------------------------- 1 | (plugin-test-deploy)= 2 | # Testing and publishing 3 | 4 | Testing your plugin is an important step to ensure that it works as expected and to avoid breaking changes in the future. 5 | Once your plugin is tested and ready to go, you can publish it to any combination of PyPI, conda-forge, and the napari-hub. 6 | 7 | ::::{grid} 8 | :::{grid-item-card} Testing guidelines 9 | :link: plugin-test 10 | :link-type: ref 11 | 12 | Some tips and tricks for effectively testing your plugin. 13 | 14 | ::: 15 | 16 | :::{grid-item-card} Publishing your plugin 17 | :link: plugin-deploy 18 | :link-type: ref 19 | 20 | The steps to publish your plugin to PyPI, conda-forge, and the napari-hub. 21 | ::: 22 | :::: 23 | 24 | ::::{grid} 25 | :::{grid-item-card} Workshop on testing plugins 26 | :link: in-depth-guide-to-plugin-testing 27 | :link-type: ref 28 | 29 | A full workshop on testing plugins, including a video and written lessons. 30 | 31 | ::: 32 | :::: -------------------------------------------------------------------------------- /docs/plugins/testing_and_publishing/test.md: -------------------------------------------------------------------------------- 1 | (plugin-test)= 2 | # Testing guidelines 3 | 4 | (plugin-testing-tips)= 5 | ## Tips for testing napari plugins 6 | 7 | Testing is a big topic! If you are completely new to writing tests in Python, 8 | consider reading this post on [Getting Started With Testing in 9 | Python](https://realpython.com/python-testing/) 10 | 11 | We recommend using 12 | [pytest](https://docs.pytest.org/en/6.2.x/getting-started.html) for testing your 13 | plugin. Aim for [100% test coverage](best-practices-test-coverage)! 14 | 15 | ### The `make_napari_viewer_proxy` fixture 16 | 17 | Testing a napari `Viewer` requires some setup and teardown each time. We have 18 | created a [pytest fixture](https://docs.pytest.org/en/6.2.x/fixture.html) called 19 | `make_napari_viewer_proxy` that you can use (this requires that you have napari 20 | installed in your environment). 21 | 22 | To use a fixture in pytest, you simply include the name of the fixture in the 23 | test parameters (oddly enough, you don't need to import it!). For example, to 24 | create a napari viewer for testing: 25 | 26 | ```py 27 | def test_something_with_a_viewer(make_napari_viewer_proxy): 28 | viewer = make_napari_viewer_proxy() 29 | ... # carry on with your test 30 | ``` 31 | 32 | If you embed the viewer in your own application and need to access private attributes, 33 | you can use the `make_napari_viewer` fixture. 34 | 35 | (plugin-testing-prefer-unit-test)= 36 | 37 | ### Prefer smaller unit tests when possible 38 | 39 | The most common issue people run into when designing tests for napari plugins is 40 | that they try to test everything as a full "integration test", starting from the 41 | napari event or action that would trigger their plugin to do something. For 42 | example, let's say you have a dock widget that connects a mouse callback to the 43 | viewer: 44 | 45 | ```py 46 | class MyWidget: 47 | def __init__(self, viewer: 'napari.Viewer'): 48 | self._viewer = viewer 49 | 50 | @viewer.mouse_move_callbacks.append 51 | def _on_mouse_move(viewer, event): 52 | if 'Shift' in event.modifiers: 53 | ... 54 | 55 | @napari_hook_implementation 56 | def napari_experimental_provide_dock_widget(): 57 | return MyWidget 58 | ``` 59 | 60 | You might think that you need to somehow simulate a mouse movement in napari in 61 | order to test this, but you don't! Just *trust* that napari will call this 62 | function with a `Viewer` and an `Event` when a mouse move has been made, and 63 | otherwise leave `napari` out of it. 64 | 65 | Instead, focus on "unit testing" your code: just call the function directly with 66 | objects that emulate, or "mock" the objects that your function expects to 67 | receive from napari. You may also need to slightly reorganize your code. Let's 68 | modify the above widget to make it easier to test: 69 | 70 | ```py 71 | class MyWidget: 72 | def __init__(self, viewer: 'napari.Viewer'): 73 | self._viewer = viewer 74 | # connecting to a method rather than a local function 75 | # makes it easier to test 76 | viewer.mouse_move_callbacks.append(self._on_mouse_move) 77 | 78 | def _on_mouse_move(self, viewer, event): 79 | if 'Shift' in event.modifiers: 80 | ... 81 | ``` 82 | 83 | To test this, we can often just instantiate the widget with our own viewer, and 84 | then call the methods directly. As for the `event` object, notice that all we 85 | care about in this plugin is that it has a `modifiers` attribute that may or may 86 | not contain the string `"Shift"`. So let's just fake it! 87 | 88 | ```py 89 | class FakeEvent: 90 | modifiers = {'Shift'} 91 | 92 | def test_mouse_callback(make_napari_viewer): 93 | viewer = make_napari_viewer() 94 | wdg = MyWidget(viewer) 95 | wdg._on_mouse_move(viewer, FakeEvent()) 96 | # assert that what you expect to happen actually happened! 97 | ``` 98 | -------------------------------------------------------------------------------- /docs/plugins/testing_workshop_docs/index.md: -------------------------------------------------------------------------------- 1 | (in-depth-guide-to-plugin-testing)= 2 | # In-depth guide to plugin testing 3 | 4 | This is the frontpage for the tutorial developed from the [January 2022 workshop on testing](https://youtu.be/IsHYnI8Tbfw?list=PLilvrWT8aLuYID3YZ7KddS5ky2SaH4DKK). This tutorial will be more meaningful to you if you are familiar with the Python programming language and napari software. These lessons summarize the information in the video and should stand on their own. The lessons are listed here with the timings on the video next to each: 5 | * 1: [Python’s assert keyword](plugin-testing-workshop-assert) - starts at minute [5:23](https://youtu.be/IsHYnI8Tbfw?list=PLilvrWT8aLuYID3YZ7KddS5ky2SaH4DKK&t=333). 6 | * 2: [Pytest testing framework](plugin-testing-workshop-pytest) - starts at minute [9:21](https://youtu.be/IsHYnI8Tbfw?list=PLilvrWT8aLuYID3YZ7KddS5ky2SaH4DKK&t=561). 7 | * 3: [Readers and fixtures](plugin-testing-workshop-reader-fixtures) - starts at minute [15:42](https://youtu.be/IsHYnI8Tbfw?list=PLilvrWT8aLuYID3YZ7KddS5ky2SaH4DKK&t=942). 8 | * 4: [Test coverage](plugin-testing-workshop-coverage) - starts at minute [28:26](https://youtu.be/IsHYnI8Tbfw?list=PLilvrWT8aLuYID3YZ7KddS5ky2SaH4DKK&t=1706). 9 | * Resource links: [Testing resources](plugin-testing-resources) -------------------------------------------------------------------------------- /docs/plugins/testing_workshop_docs/testing-resources.md: -------------------------------------------------------------------------------- 1 | (plugin-testing-resources)= 2 | 3 | # Testing resources 4 | 5 | These resources may be helpful in developing tests: 6 | * [Today’s plugin](https://github.com/DragaDoncila/plugin-tests) - Plugin Tests 7 | 8 | * [pytest](https://docs.pytest.org/en/6.2.x/) - pytest is a mature full-featured Python testing tool that helps you write better programs. 9 | 10 | * [qtbot](https://pytest-qt.readthedocs.io/en/latest/reference.html#module-pytestqt.qtbot) - `class pytestqt.qtbot.QtBot`: Instances of this class are responsible for sending events to Qt objects (usually widgets), simulating user input. 11 | Important: Instances of this class should be accessed only by using a qtbot fixture, never instantiated directly. 12 | 13 | * [pytest-cov](https://pytest-cov.readthedocs.io/en/latest/) - This plugin produces coverage reports. Compared to just using coverage run this plugin provides some extras. 14 | 15 | * [codecov](https://about.codecov.io/) - As long as your code has tests and your coverage tool can output coverage results you can use Codecov. 16 | 17 | * [GitHub workflow docs](https://docs.github.com/en/actions/writing-workflows/quickstart) - You need only a GitHub repository to create and run a GitHub Actions workflow. 18 | 19 | * [Slides from workshop presentation](https://docs.google.com/presentation/d/1RFja0o6cZ8lAalAve8heuJ-Lrb4nOSUnfdpOSEhqqNo) - These are the actual slides that were used during the testing workshop. 20 | -------------------------------------------------------------------------------- /docs/plugins/virtual_environment_docs/3-version-management.md: -------------------------------------------------------------------------------- 1 | # Version management 2 | 3 | This guide covers the methods of updating your version string everywhere. 4 | 5 | ## This guide covers: 6 | * [Using git tags](#using-git-tags) 7 | * [Using a local script to edit files](#using-a-local-script-to-edit-files) 8 | * [Manually](#manually) 9 | 10 | Your goal is to make sure that you bump your version string everywhere it may appear, in unison, prior to publishing your package. A version number can be in `init.py`, `setup.cfg`, etc. 11 | 12 | In increasing order of work, but decreasing order of magic, the methods of bumping your version string are listed below. 13 | 14 | ## Using git tags: 15 | You can use [setuptools_scm](https://github.com/pypa/setuptools_scm) to automatically generate version numbers for your package based on tagged commits. 16 | 17 | ```console 18 | # configure in pyproject.toml, then… 19 | $ git tag -a v0.1.0 -m v0.1.0 20 | ``` 21 | 22 | The next time you run `python -m build`, either locally or in GitHub actions, your package version will be based on the latest git tag. 23 | 24 | ## Using a local script to edit files: 25 | One tool for doing this is [bump2version](https://github.com/c4urself/bump2version). For example: 26 | ```console 27 | $ pip install bump2version 28 | # configure all the places you use your version, then, to update: 29 | $ bump2version --current-version 0.5.1 minor 30 | ``` 31 | 32 | ## Manually 33 | Updating the version number manually involves going through everywhere your version is declared and changing the version number before building your distribution. This is ***not*** recommended, you *will* eventually make mistakes and have mismatched version/metadata somewhere. In some cases this will lead to your build process failing, but it can fail silently too. 34 | 35 | ## Tips: 36 | * The "best" versioning and deployment workflow is the one you will actually use! 37 | * Get comfortable with at least one workflow for versioning and deploying your package *otherwise, you won't do it.* 38 | 39 | The next topic in this series is [Developer tools](./4-developer-tools.md). 40 | 41 | ## Other topics in this series: 42 | 43 | * [Virtual environments](./1-virtual-environments) 44 | * [Deploying your plugin](./2-deploying-your-plugin.md) 45 | * [Developer tools](./4-developer-tools.md) 46 | * [Survey](./5-survey.md) 47 | -------------------------------------------------------------------------------- /docs/plugins/virtual_environment_docs/4-developer-tools.md: -------------------------------------------------------------------------------- 1 | # Developer tools 2 | 3 | This guide explains the different types of tools that can help you develop and test your code. 4 | 5 | ## This guide covers: 6 | * [General tools](#general-tools) 7 | - [Linting tools](#linting-tools) 8 | - [Formatting tools](#formatting-tools) 9 | - [Pre-commit tools](#pre-commit-tools) 10 | * [napari plugin-specific tools](#napari-plugin-specific-tools) 11 | 12 | ## General tools 13 | All of these are *optional*. 14 | Many are very helpful, but they do take a little time to learn. The more time you spend coding, the greater the return-on-investment for using them. It's a personal decision on whether the time saved by using these outweighs the time required to understand the tools. 15 | 16 | ### Linting tools 17 | These _check_ your code. 18 | * [ruff](https://github.com/astral-sh/ruff) - checks various code style conventions, unused variables, line spacings, etc… 19 | * [mypy](https://github.com/python/mypy) 20 | - Static type checker: enforces proper usage of types. 21 | - Super useful once you get the hang of it, but definitely an intermediate-advanced tool. 22 | - Along with high test coverage, probably the best time-saver and project robustness tool. 23 | 24 | ### Formatting tools 25 | These _auto-modify_ your code. 26 | * [ruff-formatter](https://docs.astral.sh/ruff/formatter/) 27 | Forces code to follow specific style, indentations, etc... 28 | 29 | ### Pre-commit tools 30 | * [pre-commit](https://pre-commit.com/), runs all your checks each time you run git commit, preventing bad code from ever getting checked in. 31 | ```console 32 | $ pip install pre-commit 33 | # install the pre-commit "hook" 34 | $ pre-commit install 35 | # then configure in .pre-commit-config.yaml 36 | # (optionally) Run hooks on demand 37 | $ pre-commit run --all-files 38 | ``` 39 | 40 | * [pre-commit-ci](https://pre-commit.ci/) 41 | - Runs all your pre-commit hooks on CI (Continuous Integration). 42 | - Useful even if contributors don't install and run your pre-commit hooks locally before they open a PR. 43 | 44 | ## Napari plugin-specific tools 45 | 46 | * [Static plugin checks](https://github.com/tlambert03/napari-plugin-checks) 47 | - This is a *pre-commit hook*. It is intended to be added to your 48 | `.pre-commit-config.yaml` file. 49 | - It *statically* (without importing) checks various best practices about your plugin: 50 | ```yaml 51 | repo: https://github.com/tlambert03/napari-plugin-action 52 | rev: v0.2.0 53 | hooks: id: napari-plugin-checks 54 | ``` 55 | 56 | * [Plugin check GitHub action](https://github.com/tlambert03/napari-plugin-action) (work in progress) 57 | - It is intended to be added to your GitHub workflow. 58 | - It (currently) checks that your plugin is installable, and performs a few sanity checks about Qt backends and dock widgets. 59 | ```yaml 60 | uses: tlambert03/napari-plugin-action@main 61 | with: package_name: 62 | ``` 63 | 64 | The next topic in this series is the [Survey/Q&A](./5-survey.md). 65 | 66 | ## Other topics in this series: 67 | * [Virtual environments](./1-virtual-environments) 68 | * [Deploying your plugin](./2-deploying-your-plugin.md) 69 | * [Version management](./3-version-management.md) 70 | * [Survey/Q&A](./5-survey.md) 71 | -------------------------------------------------------------------------------- /docs/plugins/virtual_environment_docs/index.md: -------------------------------------------------------------------------------- 1 | (virtual-environments-and-useful-tools)= 2 | # Tools and tips when building napari plugins or: firehose of stuff I wish I knew earlier 3 | 4 | These guides will be more valuable if you are familiar with the Python programming language and the napari software. They are taken from the [January 2022 Testing workshop](https://www.youtube.com/watch?v=IsHYnI8Tbfw&list=PLilvrWT8aLuYID3YZ7KddS5ky2SaH4DKK) video. These guides stand on their own and are summaries of the information in the video. They are listed here in the order they were presented but they do not necessarily build on each other. 5 | 6 | * 1: [Virtual environments](./1-virtual-environments) Starts at about minute 49:08. 7 | * 2: [Deploying your plugin](./2-deploying-your-plugin.md) Starts at about minute 54:00. 8 | * 3: [Version management](./3-version-management.md) Starts at about timestamp 1:01:00. 9 | * 4: [Developer tools](./4-developer-tools.md) Starts at about timestamp 1:04:12. 10 | * 5: [Survey/Q&A](./5-survey.md) Starts at about timestamp 1:15:27. 11 | -------------------------------------------------------------------------------- /docs/release/index.md: -------------------------------------------------------------------------------- 1 | # Release notes 2 | 3 | Release notes for napari versions. 4 | -------------------------------------------------------------------------------- /docs/release/release_0_1_3.md: -------------------------------------------------------------------------------- 1 | # napari 0.1.3 2 | 3 | We're happy to announce the release of napari 0.1.3! napari is a fast, 4 | interactive, multi-dimensional image viewer for Python. It's designed for 5 | browsing, annotating, and analyzing large multi-dimensional images. It's built 6 | on top of Qt (for the GUI), vispy (for performant GPU-based rendering), and the 7 | scientific Python stack (numpy, scipy). 8 | 9 | For more information, examples, and documentation, please visit our website: 10 | https://github.com/napari/napari 11 | 12 | ## New Features 13 | 14 | - Support for volumetric rendering of images 15 | 16 | ## Pull Requests 17 | 18 | - Tutorials (#395) 19 | - fix import in cli (#403) 20 | - 3D volume viewer - volume layer (#405) 21 | - remove vispy backport (#406) 22 | - Fix axis shape one (#409) 23 | - Xarray example (#410) 24 | - fix clim setter (#411) 25 | - switch to pyside2 (#412) 26 | - fix delete markers (#413) 27 | - [FIX] paint color indicator update when shuffle color (#416) 28 | - QT returns a warning instead of an error (#418) 29 | - Fix Crash with stacked binary tiffs. (#422) 30 | - cleanup shape classes (#423) 31 | - move tutorials to napari-tutorials repo (#425) 32 | - fix vispy 0.6.0 colormap bug (#426) 33 | - fix points keypress (#427) 34 | - minimal vispy 0.6 colormap fix (#430) 35 | - Fix dims sliders (#431) 36 | - add `_vispy` init (#433) 37 | - Expose args for blending, visible, opacity (#434) 38 | - more dims fixes (#435) 39 | - fix screenshot (#437) 40 | - fix dims mixing (#438) 41 | 42 | ## 6 authors added to this release (alphabetical) 43 | 44 | - [Ahmet Can Solak](https://github.com/napari/napari/commits?author=AhmetCanSolak) - @AhmetCanSolak 45 | - [Alexandre de Siqueira](https://github.com/napari/napari/commits?author=alexdesiqueira) - @alexdesiqueira 46 | - [Mars Huang](https://github.com/napari/napari/commits?author=marshuang80) - @marshuang80 47 | - [Matthias Bussonnier](https://github.com/napari/napari/commits?author=Carreau) - @Carreau 48 | - [Nicholas Sofroniew](https://github.com/napari/napari/commits?author=sofroniewn) - @sofroniewn 49 | - [Pranathi Vemuri](https://github.com/napari/napari/commits?author=pranathivemuri) - @pranathivemuri 50 | 51 | ## 4 reviewers added to this release (alphabetical) 52 | 53 | - [Juan Nunez-Iglesias](https://github.com/napari/napari/commits?author=jni) - @jni 54 | - [Kira Evans](https://github.com/napari/napari/commits?author=kne42) - @kne42 55 | - [Nicholas Sofroniew](https://github.com/napari/napari/commits?author=sofroniewn) - @sofroniewn 56 | - [Pranathi Vemuri](https://github.com/napari/napari/commits?author=pranathivemuri) - @pranathivemuri 57 | -------------------------------------------------------------------------------- /docs/release/release_0_1_5.md: -------------------------------------------------------------------------------- 1 | # napari 0.1.5 2 | 3 | We're happy to announce the release of napari 0.1.5! napari is a fast, 4 | interactive, multi-dimensional image viewer for Python. It's designed for 5 | browsing, annotating, and analyzing large multi-dimensional images. It's built 6 | on top of Qt (for the GUI), vispy (for performant GPU-based rendering), and the 7 | scientific Python stack (numpy, scipy). 8 | 9 | For more information, examples, and documentation, please visit our website: 10 | https://github.com/napari/napari 11 | 12 | ## New Features 13 | 14 | - Support for swappable dimensions 15 | - Support for 3D rendering for more layer types 16 | 17 | ## Pull Requests 18 | 19 | - Expose args for blending, visible, opacity (#434) 20 | - test `add_*` signatures and improve docstring testing (#439) 21 | - add qt console (#443) 22 | - adapt existing keybindings to use new system (#444) 23 | - fix aspect ratio (#446) 24 | - Swappable dimensions (#451) 25 | - use `__init_subclass__` in keymap mixin to create empty class keymap (#452) 26 | - use pytest-qt (#453) 27 | - use codecov (#455) 28 | - expose scaling factor for volume (#463) 29 | - fix size policy on layers list (#466) 30 | - Allow out of range float images (#468) 31 | - add viewer keybindings (#472) 32 | - fix windows ci build (#479) 33 | - fix OSX CI (#482) 34 | - remove vispy backport (#483) 35 | - clean up black pre-commit hook & exclusion pattern (#484) 36 | - remove vispy code from layer models (#485) 37 | - host docs (#486) 38 | - Fix keybindings (#487) 39 | - layer views (#488) 40 | - Include requirements/default.txt in sdist (#491) 41 | - Integrate 3D rendering with layers (#493) 42 | - revert "layer views (#488)" (#494) 43 | - support more image dtypes (#498) 44 | - rename clim (#499) 45 | - fix cursor position (#501) 46 | - don't ignore errors in events (#505) 47 | - fix contributing guidelines (#506) 48 | - create release guide (#508) 49 | - fix node ordering (#509) 50 | - fix call signature to work with keyword-only arguments (#510) 51 | - prevent selected label from being reduced below 0 (#512) 52 | 53 | ## 4 authors added to this release (alphabetical) 54 | 55 | - [Christoph Gohlke](https://github.com/napari/napari/commits?author=cgohlke) - @cgohlke 56 | - [Juan Nunez-Iglesias](https://github.com/napari/napari/commits?author=jni) - @jni 57 | - [Kira Evans](https://github.com/napari/napari/commits?author=kne42) - @kne42 58 | - [Nicholas Sofroniew](https://github.com/napari/napari/commits?author=sofroniewn) - @sofroniewn 59 | 60 | ## 5 reviewers added to this release (alphabetical) 61 | 62 | - [Ahmet Can Solak](https://github.com/napari/napari/commits?author=AhmetCanSolak) - @AhmetCanSolak 63 | - [Juan Nunez-Iglesias](https://github.com/napari/napari/commits?author=jni) - @jni 64 | - [Kira Evans](https://github.com/napari/napari/commits?author=kne42) - @kne42 65 | - [Loic Royer](https://github.com/napari/napari/commits?author=royerloic) - @royerloic 66 | - [Nicholas Sofroniew](https://github.com/napari/napari/commits?author=sofroniewn) - @sofroniewn 67 | -------------------------------------------------------------------------------- /docs/release/release_0_2_1.md: -------------------------------------------------------------------------------- 1 | # napari 0.2.1 2 | 3 | We're happy to announce the release of napari 0.2.1! napari is a fast, 4 | interactive, multi-dimensional image viewer for Python. It's designed for 5 | browsing, annotating, and analyzing large multi-dimensional images. It's built 6 | on top of Qt (for the GUI), vispy (for performant GPU-based rendering), and the 7 | scientific Python stack (numpy, scipy). 8 | 9 | For more information, examples, and documentation, please visit our website: 10 | https://github.com/napari/napari 11 | 12 | ## New Features 13 | 14 | - added a code of conduct (#374) 15 | - added grid mode that allows for looking at layers side by side (#565) 16 | - added the ability to bind custom mouse functions (#544) 17 | - added a benchmarking suite (#573, #577) 18 | - added help menu with about dialog and keybindings dialog (#580, #583, #591) 19 | 20 | ## Improvements 21 | 22 | - improved performance of the thumbnail generation for points layers (#564) 23 | - more comprehensive testing of keybindings functionality (#583) 24 | - now use square brackets to indicate auto-incremented names (#589) 25 | - unify file IO and add dask lazy loading of folders (#590) 26 | 27 | ## API Changes 28 | 29 | - added the ability to pass viewer keyword arguments to our `view_*` methods (#584) 30 | - Allow add_points() to be called without an argument to create empty points layer (#594) 31 | 32 | ## Bug Fixes 33 | 34 | - fixed some pyramid data types (#585) 35 | - fix points updating (#571) 36 | - stop vispy error catching (#551) 37 | 38 | ## 4 authors added to this release (alphabetical) 39 | 40 | - [Ahmet Can Solak](https://github.com/napari/napari/commits?author=AhmetCanSolak) - @AhmetCanSolak 41 | - [Juan Nunez-Iglesias](https://github.com/napari/napari/commits?author=jni) - @jni 42 | - [Kira Evans](https://github.com/napari/napari/commits?author=kne42) - @kne42 43 | - [Nicholas Sofroniew](https://github.com/napari/napari/commits?author=sofroniewn) - @sofroniewn 44 | 45 | ## 4 reviewers added to this release (alphabetical) 46 | 47 | - [Ahmet Can Solak](https://github.com/napari/napari/commits?author=AhmetCanSolak) - @AhmetCanSolak 48 | - [Juan Nunez-Iglesias](https://github.com/napari/napari/commits?author=jni) - @jni 49 | - [Kira Evans](https://github.com/napari/napari/commits?author=kne42) - @kne42 50 | - [Nicholas Sofroniew](https://github.com/napari/napari/commits?author=sofroniewn) - @sofroniewn 51 | -------------------------------------------------------------------------------- /docs/release/release_0_2_10.md: -------------------------------------------------------------------------------- 1 | # napari 0.2.10 2 | 3 | We're happy to announce the release of napari 0.2.10! napari is a fast, 4 | interactive, multi-dimensional image viewer for Python. It's designed for 5 | browsing, annotating, and analyzing large multi-dimensional images. It's built 6 | on top of Qt (for the GUI), vispy (for performant GPU-based rendering), and the 7 | scientific Python stack (numpy, scipy). 8 | 9 | This is a bug fix release to address issues that snuck through in 0.2.9. 10 | 11 | For more information, examples, and documentation, please visit our website: 12 | https://github.com/napari/napari 13 | 14 | ## Bug Fixes 15 | 16 | - remove calls to QPoint.toTuple which is invalid in PyQt5 (#866) 17 | - fix aspect ratio press (#871) 18 | - fix None label (#872) 19 | - drop zarr and numcodecs dependency (#873) 20 | 21 | ## 2 authors added to this release (alphabetical) 22 | 23 | - [Kira Evans](https://github.com/napari/napari/commits?author=kne42) - @kne42 24 | - [Nicholas Sofroniew](https://github.com/napari/napari/commits?author=sofroniewn) - @sofroniewn 25 | 26 | ## 2 reviewers added to this release (alphabetical) 27 | 28 | - [Juan Nunez-Iglesias](https://github.com/napari/napari/commits?author=jni) - @jni 29 | - [Talley Lambert](https://github.com/napari/napari/commits?author=tlambert03) - @tlambert03 30 | -------------------------------------------------------------------------------- /docs/release/release_0_2_11.md: -------------------------------------------------------------------------------- 1 | # napari 0.2.11 2 | 3 | We're happy to announce the release of napari 0.2.11! napari is a fast, 4 | interactive, multi-dimensional image viewer for Python. It's designed for 5 | browsing, annotating, and analyzing large multi-dimensional images. It's built 6 | on top of Qt (for the GUI), vispy (for performant GPU-based rendering), and the 7 | scientific Python stack (numpy, scipy). 8 | 9 | For more information, examples, and documentation, please visit our website: 10 | https://github.com/napari/napari 11 | 12 | ## Highlights 13 | 14 | - Point face color and edge color are now settable as a property in a columnar 15 | data table, mapped using a colormap (continuous values) or a color cycle 16 | (categorical values). See `this example 17 | `_ 18 | for syntax details. 19 | - Python 3.8 is now supported. 20 | 21 | ## Improvements 22 | 23 | - Represent color as Nx4 array in Points (#782) 24 | - Qt/Vispy connection & lambda refactor (#859) 25 | - Improve slider step precision based on data range (#884) 26 | - Allow Points display properties to be set by point properties (#895) 27 | - Refactor `add_*` methods (#897) 28 | - Add `_add_layer_data` method and tests (#909) 29 | 30 | ## Bug Fixes 31 | 32 | - Fix clim popup position in floating widgets (#869) 33 | - Fix points selection (#902) 34 | - Move benchmarks under napari directory but not distributed (#913) 35 | - Patch py3.8 on windows (#915) 36 | - Fix nD Shapes.to_labels (#920) 37 | - Fix singleton dims (#923) 38 | 39 | ## Support 40 | 41 | - Add PyQt5 tests to Linux and OSX CI (#867) 42 | - Change autodevdoc script to use new git reference (#876) 43 | - Fix invalid instructions in setup.py (#877) 44 | - Bump tests to python 3.8, general tests fix (#878) 45 | - Clean up setup.py (#880) 46 | - Fix osx py3.6 tests (#916) 47 | - Add Python 3.8 to PyPI tags (#917) 48 | - Relocate existing tests for appropriate discoverability. (#918) 49 | - Import scipy stats to prevent strange bug in tests (#927) 50 | 51 | ## 7 authors added to this release (alphabetical) 52 | 53 | - [Hagai Har-Gil](https://github.com/napari/napari/commits?author=HagaiHargil) - @HagaiHargil 54 | - [Kevin Yamauchi](https://github.com/napari/napari/commits?author=kevinyamauchi) - @kevinyamauchi 55 | - [Kira Evans](https://github.com/napari/napari/commits?author=kne42) - @kne42 56 | - [Nicholas Sofroniew](https://github.com/napari/napari/commits?author=sofroniewn) - @sofroniewn 57 | - [Reece Dunham](https://github.com/napari/napari/commits?author=RDIL) - @RDIL 58 | - [Talley Lambert](https://github.com/napari/napari/commits?author=tlambert03) - @tlambert03 59 | - [Tony Tung](https://github.com/napari/napari/commits?author=ttung) - @ttung 60 | 61 | ## 8 reviewers added to this release (alphabetical) 62 | 63 | - [Hagai Har-Gil](https://github.com/napari/napari/commits?author=HagaiHargil) - @HagaiHargil 64 | - [Juan Nunez-Iglesias](https://github.com/napari/napari/commits?author=jni) - @jni 65 | - [Kevin Yamauchi](https://github.com/napari/napari/commits?author=kevinyamauchi) - @kevinyamauchi 66 | - [Kira Evans](https://github.com/napari/napari/commits?author=kne42) - @kne42 67 | - [Nicholas Sofroniew](https://github.com/napari/napari/commits?author=sofroniewn) - @sofroniewn 68 | - [Reece Dunham](https://github.com/napari/napari/commits?author=RDIL) - @RDIL 69 | - [Talley Lambert](https://github.com/napari/napari/commits?author=tlambert03) - @tlambert03 70 | - [Tony Tung](https://github.com/napari/napari/commits?author=ttung) - @ttung 71 | -------------------------------------------------------------------------------- /docs/release/release_0_2_3.md: -------------------------------------------------------------------------------- 1 | # napari 0.2.3 2 | 3 | We're happy to announce the release of napari 0.2.3! napari is a fast, 4 | interactive, multi-dimensional image viewer for Python. It's designed for 5 | browsing, annotating, and analyzing large multi-dimensional images. It's built 6 | on top of Qt (for the GUI), vispy (for performant GPU-based rendering), and the 7 | scientific Python stack (numpy, scipy). 8 | 9 | For more information, examples, and documentation, please visit our website: 10 | https://github.com/napari/napari 11 | 12 | ## New Features 13 | 14 | - add loading from paths for images (#601) 15 | 16 | ## Improvements 17 | 18 | - Add the turbo colormap (#599) 19 | - Move markdown files to docs folder (#602) 20 | - Standardize usage of cmaps and add cmap tests (#622) 21 | 22 | ## Bug Fixes 23 | 24 | - Add numpydoc to default dependencies (#598) 25 | - fix dimensions change when no layers (#603) 26 | - fix bracket highlighting (#606) 27 | - fix for data overwriting during 3D rendering of float32 array (#613) 28 | - fix `io.magic_imread()` in `__main__.py` (#626) 29 | - Include LICENSE file in source distribution (#628) 30 | 31 | ## 5 authors added to this release (alphabetical) 32 | 33 | - [Hector](https://github.com/napari/napari/commits?author=hectormz) - @hectormz 34 | - [Juan Nunez-Iglesias](https://github.com/napari/napari/commits?author=jni) - @jni 35 | - [Nicholas Sofroniew](https://github.com/napari/napari/commits?author=sofroniewn) - @sofroniewn 36 | - [Talley Lambert](https://github.com/napari/napari/commits?author=tlambert03) - @tlambert03 37 | - [Will Connell](https://github.com/napari/napari/commits?author=wconnell) - @wconnell 38 | 39 | ## 4 reviewers added to this release (alphabetical) 40 | 41 | - [Ahmet Can Solak](https://github.com/napari/napari/commits?author=AhmetCanSolak) - @AhmetCanSolak 42 | - [Juan Nunez-Iglesias](https://github.com/napari/napari/commits?author=jni) - @jni 43 | - [Nicholas Sofroniew](https://github.com/napari/napari/commits?author=sofroniewn) - @sofroniewn 44 | - [Talley Lambert](https://github.com/napari/napari/commits?author=tlambert03) - @tlambert03 45 | -------------------------------------------------------------------------------- /docs/release/release_0_2_4.md: -------------------------------------------------------------------------------- 1 | # napari 0.2.4 2 | 3 | We're happy to announce the release of napari 0.2.4! napari is a fast, 4 | interactive, multi-dimensional image viewer for Python. It's designed for 5 | browsing, annotating, and analyzing large multi-dimensional images. It's built 6 | on top of Qt (for the GUI), vispy (for performant GPU-based rendering), and the 7 | scientific Python stack (numpy, scipy). 8 | 9 | For more information, examples, and documentation, please visit our website: 10 | https://github.com/napari/napari 11 | 12 | ## New Features 13 | 14 | - Add gamma slider (#610) 15 | 16 | ## Improvements 17 | 18 | - Make `_on_data_change` only get called once when ndisplay changes (#629) 19 | - fix undefined variables, remove unused imports (#633) 20 | - Raise informative warning when no Qt loop is detected (#642) 21 | 22 | ## Bug Fixes 23 | 24 | - gui_qt: Ipython command is `%gui qt` in docs (#636) 25 | - Calculate minimum thumbnail side length so they are never zero width (#643) 26 | 27 | ## Deprecations 28 | 29 | - napari.Viewer.add_multichannel was removed. Use `napari.Viewer.add_image(..., 30 | channel_axis=num)` (#619) 31 | 32 | ## 4 authors added to this release (alphabetical) 33 | 34 | - [Juan Nunez-Iglesias](https://github.com/napari/napari/commits?author=jni) - @jni 35 | - [Nicholas Sofroniew](https://github.com/napari/napari/commits?author=sofroniewn) - @sofroniewn 36 | - [Simon Li](https://github.com/napari/napari/commits?author=manics) - @manics 37 | - [Talley Lambert](https://github.com/napari/napari/commits?author=tlambert03) - @tlambert03 38 | 39 | ## 4 reviewers added to this release (alphabetical) 40 | 41 | - [Ahmet Can Solak](https://github.com/napari/napari/commits?author=AhmetCanSolak) - @AhmetCanSolak 42 | - [Juan Nunez-Iglesias](https://github.com/napari/napari/commits?author=jni) - @jni 43 | - [Loic Royer](https://github.com/napari/napari/commits?author=royerloic) - @royerloic 44 | - [Nicholas Sofroniew](https://github.com/napari/napari/commits?author=sofroniewn) - @sofroniewn 45 | -------------------------------------------------------------------------------- /docs/release/release_0_2_5.md: -------------------------------------------------------------------------------- 1 | # napari 0.2.5 2 | 3 | We're happy to announce the release of napari 0.2.5! napari is a fast, 4 | interactive, multi-dimensional image viewer for Python. It's designed for 5 | browsing, annotating, and analyzing large multi-dimensional images. It's built 6 | on top of Qt (for the GUI), vispy (for performant GPU-based rendering), and the 7 | scientific Python stack (numpy, scipy). 8 | 9 | For more information, examples, and documentation, please visit our website: 10 | https://github.com/napari/napari 11 | 12 | ## New Features 13 | 14 | - Basic "play" functionality (animate a dimension) (#607) 15 | 16 | ## Improvements 17 | 18 | - Add linter pre-commit hook (#638) 19 | - Modify dims QScrollbar with scroll-to-click behavior (#664) 20 | 21 | ## Bug Fixes 22 | 23 | - Fix np.pad() usage (#649) 24 | - Bump vispy, remove unnecessary data.copy() (#657) 25 | - Update Cirrus OSX image and patch windows builds (#658) 26 | - Avoid numcodecs 0.6.4 for now (#666) 27 | 28 | ## 4 authors added to this release (alphabetical) 29 | 30 | - [Juan Nunez-Iglesias](https://github.com/napari/napari/commits?author=jni) - @jni 31 | - [Kevin Yamauchi](https://github.com/napari/napari/commits?author=kevinyamauchi) - @kevinyamauchi 32 | - [Nicholas Sofroniew](https://github.com/napari/napari/commits?author=sofroniewn) - @sofroniewn 33 | - [Talley Lambert](https://github.com/napari/napari/commits?author=tlambert03) - @tlambert03 34 | 35 | ## 5 reviewers added to this release (alphabetical) 36 | 37 | - [Ahmet Can Solak](https://github.com/napari/napari/commits?author=AhmetCanSolak) - @AhmetCanSolak 38 | - [Bill Little](https://github.com/napari/napari/commits?author=bjlittle) - @bjlittle 39 | - [Juan Nunez-Iglesias](https://github.com/napari/napari/commits?author=jni) - @jni 40 | - [Nicholas Sofroniew](https://github.com/napari/napari/commits?author=sofroniewn) - @sofroniewn 41 | - [Talley Lambert](https://github.com/napari/napari/commits?author=tlambert03) - @tlambert03 42 | -------------------------------------------------------------------------------- /docs/release/release_0_2_6.md: -------------------------------------------------------------------------------- 1 | # napari 0.2.6 2 | 3 | We're happy to announce the release of napari 0.2.6! napari is a fast, 4 | interactive, multi-dimensional image viewer for Python. It's designed for 5 | browsing, annotating, and analyzing large multi-dimensional images. It's built 6 | on top of Qt (for the GUI), vispy (for performant GPU-based rendering), and the 7 | scientific Python stack (numpy, scipy). 8 | 9 | For more information, examples, and documentation, please visit our website: 10 | https://github.com/napari/napari 11 | 12 | ## New Features 13 | 14 | - label axes with strings (#644) 15 | - interactive scripting with `viewer.update`(#650) 16 | - add dock widget support (#695) 17 | - dockable console (#714) 18 | 19 | ## Improvements 20 | 21 | - improve release guide (#668) 22 | - add logo to repo (#674) 23 | - improve labels painting speed (#684) 24 | - add example showing mouse drag callbacks (#690) 25 | - add main window option to screenshots (#722) 26 | 27 | ## Bug Fixes 28 | 29 | - allow all animation thread tests to be +/- 1 frame (#670) 30 | - document qt not qt5 (#677) 31 | - fix init of `_position` (#680) 32 | - fix 3d display surface (#682) 33 | - set arcballCamera fov default (#683) 34 | - cleaning for interactive scripting (#688) 35 | - change no. of pixels calculation from 32 to 64-bit (#692) 36 | - support multichannel dask array (#701) 37 | - Don't calc_data_range on uint8 data (#705) 38 | - allows Path in io.magic_imread (#709) 39 | - handles empty chosen files and folder (#715) 40 | - relax `play_api` (#717) 41 | - raise main window when showing (#721) 42 | - fix vertical scrollbars (#728) 43 | - revert "change no. of pixels calculation from 32 to 64-bit" (#738) 44 | - remove vispy backport with 0.6.3, fix segfault in #576 (#739) 45 | - improve pyramid guessing (#740) 46 | 47 | ## 7 authors added to this release (alphabetical) 48 | 49 | - [Ahmet Can Solak](https://github.com/napari/napari/commits?author=AhmetCanSolak) - @AhmetCanSolak 50 | - [Guillaume Gay](https://github.com/napari/napari/commits?author=glyg) - @glyg 51 | - [Hagai Har-Gil](https://github.com/napari/napari/commits?author=HagaiHargil) - @HagaiHargil 52 | - [Heath Patterson](https://github.com/napari/napari/commits?author=NHPatterson) - @NHPatterson 53 | - [Juan Nunez-Iglesias](https://github.com/napari/napari/commits?author=jni) - @jni 54 | - [Nicholas Sofroniew](https://github.com/napari/napari/commits?author=sofroniewn) - @sofroniewn 55 | - [Talley Lambert](https://github.com/napari/napari/commits?author=tlambert03) - @tlambert03 56 | 57 | ## 5 reviewers added to this release (alphabetical) 58 | 59 | - [Ahmet Can Solak](https://github.com/napari/napari/commits?author=AhmetCanSolak) - @AhmetCanSolak 60 | - [Hagai Har-Gil](https://github.com/napari/napari/commits?author=HagaiHargil) - @HagaiHargil 61 | - [Juan Nunez-Iglesias](https://github.com/napari/napari/commits?author=jni) - @jni 62 | - [Nicholas Sofroniew](https://github.com/napari/napari/commits?author=sofroniewn) - @sofroniewn 63 | - [Talley Lambert](https://github.com/napari/napari/commits?author=tlambert03) - @tlambert03 64 | -------------------------------------------------------------------------------- /docs/release/release_0_2_8.md: -------------------------------------------------------------------------------- 1 | # napari 0.2.8 2 | 3 | We're happy to announce the release of napari 0.2.8! napari is a fast, 4 | interactive, multi-dimensional image viewer for Python. It's designed for 5 | browsing, annotating, and analyzing large multi-dimensional images. It's built 6 | on top of Qt (for the GUI), vispy (for performant GPU-based rendering), and the 7 | scientific Python stack (numpy, scipy). 8 | 9 | For more information, examples, and documentation, please visit our website: 10 | https://github.com/napari/napari 11 | 12 | ## New Features 13 | 14 | - Add `napari --info` and `--citation` to CLI (#814) 15 | 16 | ## Bug Fixes 17 | 18 | - Fix broken links in CODE_OF_CONDUCT.md (#815) 19 | - Modify visibility changed slot to only update if object visible (#822) 20 | - Fix broken link in CONTRIBUTING.md (#824) 21 | - Make compatible with numpy 1.18 (#827) 22 | 23 | ## 5 authors added to this release (alphabetical) 24 | 25 | - [Genevieve Buckley](https://github.com/napari/napari/commits?author=GenevieveBuckley) - @GenevieveBuckley 26 | - [Nicholas Sofroniew](https://github.com/napari/napari/commits?author=sofroniewn) - @sofroniewn 27 | - [Russell Anderson](https://github.com/napari/napari/commits?author=rpanderson) - @rpanderson 28 | - [Talley Lambert](https://github.com/napari/napari/commits?author=tlambert03) - @tlambert03 29 | - [Tony Tung](https://github.com/napari/napari/commits?author=ttung) - @ttung 30 | 31 | ## 3 reviewers added to this release (alphabetical) 32 | 33 | - [Juan Nunez-Iglesias](https://github.com/napari/napari/commits?author=jni) - @jni 34 | - [Nicholas Sofroniew](https://github.com/napari/napari/commits?author=sofroniewn) - @sofroniewn 35 | - [Talley Lambert](https://github.com/napari/napari/commits?author=tlambert03) - @tlambert03 36 | -------------------------------------------------------------------------------- /docs/release/release_0_2_9.md: -------------------------------------------------------------------------------- 1 | # napari 0.2.9 2 | 3 | We're happy to announce the release of napari 0.2.9! napari is a fast, 4 | interactive, multi-dimensional image viewer for Python. It's designed for 5 | browsing, annotating, and analyzing large multi-dimensional images. It's built 6 | on top of Qt (for the GUI), vispy (for performant GPU-based rendering), and the 7 | scientific Python stack (numpy, scipy). 8 | 9 | For more information, examples, and documentation, please visit our website: 10 | https://github.com/napari/napari 11 | 12 | ## Highlights 13 | 14 | - better support for surface timeseries (#831) 15 | - contrast limits slider popup on right click (#837) 16 | - better isosurface rendering with colormaps (#840) 17 | - attenuated MIP mode for better 3D rendering (#846) 18 | 19 | ## New Features 20 | 21 | - convert layer properties to dictionary (#686) 22 | - better support for surface timeseries (#831) 23 | - make `contrast_limits_range` public and climSlider popup on right click (#837) 24 | - attenuated MIP mode for better 3D rendering (#846) 25 | 26 | ## Improvements 27 | 28 | - bump numpydoc dependency to 0_9_2 for faster startup (#830) 29 | - better isosurface rendering with colormaps (#840) 30 | - add nearest interpolation mode to volume rendering for better labels support (#841) 31 | - refactor RangeSlider to accept data range and values. (#844) 32 | - in bindings logic, check if generator, not generator function (#853) 33 | 34 | ## Bug Fixes 35 | 36 | - fix fullscreen crash for test_viewer (#849) 37 | - fix RangeSlider.rangeChange emit type bug (#856) 38 | 39 | ## API Changes 40 | 41 | - `edge_color` and `face_color` now refer to colors of all points and shapes 42 | in layer, `current_edge_color` and `current_face_color` now refer to the 43 | colors currently selected in the GUI (#686) 44 | 45 | ## 5 authors added to this release (alphabetical) 46 | 47 | - [Juan Nunez-Iglesias](https://github.com/napari/napari/commits?author=jni) - @jni 48 | - [Kira Evans](https://github.com/napari/napari/commits?author=kne42) - @kne42 49 | - [Nicholas Sofroniew](https://github.com/napari/napari/commits?author=sofroniewn) - @sofroniewn 50 | - [Talley Lambert](https://github.com/napari/napari/commits?author=tlambert03) - @tlambert03 51 | - [Tony Tung](https://github.com/napari/napari/commits?author=ttung) - @ttung 52 | 53 | ## 4 reviewers added to this release (alphabetical) 54 | 55 | - [Juan Nunez-Iglesias](https://github.com/napari/napari/commits?author=jni) - @jni 56 | - [Nicholas Sofroniew](https://github.com/napari/napari/commits?author=sofroniewn) - @sofroniewn 57 | - [Talley Lambert](https://github.com/napari/napari/commits?author=tlambert03) - @tlambert03 58 | - [Tony Tung](https://github.com/napari/napari/commits?author=ttung) - @ttung 59 | -------------------------------------------------------------------------------- /docs/release/release_0_3_1.md: -------------------------------------------------------------------------------- 1 | # napari 0.3.1 2 | 3 | We're happy to announce the release of napari 0.3.1! 4 | napari is a fast, interactive, multi-dimensional image viewer for Python. 5 | It's designed for browsing, annotating, and analyzing large multi-dimensional 6 | images. It's built on top of Qt (for the GUI), vispy (for performant GPU-based 7 | rendering), and the scientific Python stack (numpy, scipy). 8 | 9 | This is a bug fix release to address issues that snuck through into 0.3.0. 10 | 11 | For more information, examples, and documentation, please visit our website: 12 | https://github.com/napari/napari 13 | 14 | 15 | ## Improvements 16 | - CLI accepts --plugin or any add_* kwargs (#1220) 17 | - Specify viewer.open(plugins='builtins') for all tests (#1222) 18 | - Unify user/plugin kwargs. Use filename for layer name (#1232) 19 | 20 | ## Bug Fixes 21 | - rework dask cache (#1206) 22 | - Use grayscale when n_channels=1 (#1217) 23 | - Better error on magic_imread with no files (#1218) 24 | - Improve plugin error messages, bump napari-plugin-engine (#1219) 25 | - make skimage data fixtures compatible with 0.17.0 (#1223) 26 | - Better icon-building strategy (#1229) 27 | - Unpin Jupyter client, issue seems to have resolved (#1240) 28 | - Don't try to get an event.key name if there is no event.key (#1241) 29 | - Update guess_multiscale to deal with strange inputs (#1244) 30 | 31 | 32 | ## Support 33 | - Don't build wheels with releases (#1215) 34 | - Update github issues templates with links to image.sc and zulip (#1234) 35 | - add new performance doc in new "explanations" directory (#1239) 36 | 37 | 38 | ## 3 authors added to this release (alphabetical) 39 | 40 | - [Juan Nunez-Iglesias](https://github.com/napari/napari/commits?author=jni) - @jni 41 | - [Philip Winston](https://github.com/napari/napari/commits?author=pwinston) - @pwinston 42 | - [Talley Lambert](https://github.com/napari/napari/commits?author=tlambert03) - @tlambert03 43 | 44 | 45 | ## 5 reviewers added to this release (alphabetical) 46 | 47 | - [Juan Nunez-Iglesias](https://github.com/napari/napari/commits?author=jni) - @jni 48 | - [Kevin Yamauchi](https://github.com/napari/napari/commits?author=kevinyamauchi) - @kevinyamauchi 49 | - [Nicholas Sofroniew](https://github.com/napari/napari/commits?author=sofroniewn) - @sofroniewn 50 | - [Philip Winston](https://github.com/napari/napari/commits?author=pwinston) - @pwinston 51 | - [Talley Lambert](https://github.com/napari/napari/commits?author=tlambert03) - @tlambert03 52 | -------------------------------------------------------------------------------- /docs/release/release_0_3_3.md: -------------------------------------------------------------------------------- 1 | # napari 0.3.3 2 | 3 | We're happy to announce the release of napari 0.3.3! 4 | napari is a fast, interactive, multi-dimensional image viewer for Python. 5 | It's designed for browsing, annotating, and analyzing large multi-dimensional 6 | images. It's built on top of Qt (for the GUI), vispy (for performant GPU-based 7 | rendering), and the scientific Python stack (numpy, scipy). 8 | 9 | 10 | This is a small bug fix PR that pins our Qt version at < 5.15.0, due to 11 | incompatibilities with their latest release until we fix them. See #1312 for 12 | discussion and the latest progress. 13 | 14 | For more information, examples, and documentation, please visit our website: 15 | https://github.com/napari/napari 16 | 17 | ## New Features 18 | - Adding properties attribute to Labels layers (#1281) 19 | - Add eraser button and functionality to Labels layer (#1288) 20 | 21 | ## Improvements 22 | - Shapes colors refactor (#1248) 23 | - Allow drag filling of labels (#1299) 24 | - Make Qt window public (#1306) 25 | 26 | ## Bug Fixes 27 | - Exit context before return on `_repr_png` (#1298) 28 | 29 | ## Build Tools 30 | - Pin PySide2 and PyQt5 at <5.15 (#1316) 31 | 32 | 33 | ## 4 authors added to this release (alphabetical) 34 | 35 | - [Draga Doncila](https://github.com/napari/napari/commits?author=DragaDoncila) - @DragaDoncila 36 | - [Kevin Yamauchi](https://github.com/napari/napari/commits?author=kevinyamauchi) - @kevinyamauchi 37 | - [Talley Lambert](https://github.com/napari/napari/commits?author=tlambert03) - @tlambert03 38 | - [Ziyang Liu](https://github.com/napari/napari/commits?author=ziyangczi) - @ziyangczi 39 | 40 | 41 | ## 4 reviewers added to this release (alphabetical) 42 | 43 | - [Draga Doncila](https://github.com/napari/napari/commits?author=DragaDoncila) - @DragaDoncila 44 | - [Juan Nunez-Iglesias](https://github.com/napari/napari/commits?author=jni) - @jni 45 | - [Nicholas Sofroniew](https://github.com/napari/napari/commits?author=sofroniewn) - @sofroniewn 46 | - [Talley Lambert](https://github.com/napari/napari/commits?author=tlambert03) - @tlambert03 47 | -------------------------------------------------------------------------------- /docs/release/release_0_3_4.md: -------------------------------------------------------------------------------- 1 | # napari 0.3.4 2 | 3 | We're happy to announce the release of napari 0.3.4! 4 | napari is a fast, interactive, multi-dimensional image viewer for Python. 5 | It's designed for browsing, annotating, and analyzing large multi-dimensional 6 | images. It's built on top of Qt (for the GUI), vispy (for performant GPU-based 7 | rendering), and the scientific Python stack (numpy, scipy). 8 | 9 | This is a short release that refactors our installation process to allow more 10 | flexibility around which Qt python bindings users install (PySide2, PyQt5). 11 | Starting with this release, running `pip install napari` will *no longer* 12 | install a GUI backend by default. For a complete installation with a GUI 13 | backend, users are now encouraged to use `pip install napari[all]`, which 14 | will install the default backend (currently PyQt5). To explicitly select 15 | a backend, users may run either `pip install napari[pyqt5]` or 16 | `pip install napari[pyside2]`. 17 | 18 | For more information, examples, and documentation, please visit our website: 19 | https://github.com/napari/napari 20 | 21 | ## Build Tools 22 | 23 | - Add check-manifest to CI and release workflow (#1318) 24 | - Packaging and setup.py refactor (#1324) 25 | 26 | ## 1 author added to this release (alphabetical) 27 | 28 | - [Talley Lambert](https://github.com/napari/napari/commits?author=tlambert03) - @tlambert03 29 | 30 | ## 5 reviewers added to this release (alphabetical) 31 | 32 | - [Juan Nunez-Iglesias](https://github.com/napari/napari/commits?author=jni) - @jni 33 | - [Kevin Yamauchi](https://github.com/napari/napari/commits?author=kevinyamauchi) - @kevinyamauchi 34 | - [Kira Evans](https://github.com/napari/napari/commits?author=kne42) - @kne42 35 | - [Nicholas Sofroniew](https://github.com/napari/napari/commits?author=sofroniewn) - @sofroniewn 36 | - [Talley Lambert](https://github.com/napari/napari/commits?author=tlambert03) - @tlambert03 37 | -------------------------------------------------------------------------------- /docs/release/release_0_3_5.md: -------------------------------------------------------------------------------- 1 | # napari 0.3.5 2 | 3 | We're happy to announce the release of napari 0.3.5! 4 | napari is a fast, interactive, multi-dimensional image viewer for Python. 5 | It's designed for browsing, annotating, and analyzing large multi-dimensional 6 | images. It's built on top of Qt (for the GUI), vispy (for performant GPU-based 7 | rendering), and the scientific Python stack (numpy, scipy). 8 | 9 | 10 | For more information, examples, and documentation, please visit our website: 11 | https://github.com/napari/napari 12 | 13 | ## Highlights 14 | This release contains a number of bug fixes on various platforms. For those 15 | interested in napari performance, we have added a new performance monitoring 16 | mode, that can be activated by the `NAPARI_PERFMON` environment variable, see 17 | (#1262) for details. We have also added a page in the explanations section of 18 | our docs on napari's [rendering](https://napari.org/stable/guides/rendering.html) 19 | including plans for the future. 20 | 21 | 22 | ## New Features 23 | - Allow using of custom color dictionary in labels layer (#1339 and #1362) 24 | - Allow Shapes face and edge colors to be mapped to properties (#1342) 25 | - Add performance monitoring widget (#1262) 26 | 27 | 28 | ## Improvements 29 | - Factor out ImageSlice and ImageView from Image (#1343) 30 | 31 | ## Bug Fixes 32 | - Fix warning for python 3.8 (#1335) 33 | - Fix range slider position (#1344) 34 | - Fix Linux and Windows key hold detection (#1350) 35 | - Fix crash when selecting all points (#1358) 36 | - Fix deleting layers changing dims (#1359) 37 | - Revert "remove scipy.stats import (#1250)" (#1371) 38 | 39 | 40 | ## Build Tools and Support 41 | - Remove broken link from BENCHMARKS.md (#1236) 42 | - New documentation on rendering (#1328) 43 | - Remove incorrect dashes in cirrus push_docs task (#1330) 44 | - Use correct pyqt version in tests (#1331) 45 | - Fix docs version, reformat, and add explanations (#1368) 46 | 47 | 48 | ## 8 authors added to this release (alphabetical) 49 | 50 | - [Genevieve Buckley](https://github.com/napari/napari/commits?author=GenevieveBuckley) - @GenevieveBuckley 51 | - [Grzegorz Bokota](https://github.com/napari/napari/commits?author=Czaki) - @Czaki 52 | - [Juan Nunez-Iglesias](https://github.com/napari/napari/commits?author=jni) - @jni 53 | - [Kevin Yamauchi](https://github.com/napari/napari/commits?author=kevinyamauchi) - @kevinyamauchi 54 | - [Nicholas Sofroniew](https://github.com/napari/napari/commits?author=sofroniewn) - @sofroniewn 55 | - [Philip Winston](https://github.com/napari/napari/commits?author=pwinston) - @pwinston 56 | - [Talley Lambert](https://github.com/napari/napari/commits?author=tlambert03) - @tlambert03 57 | - [Ziyang Liu](https://github.com/napari/napari/commits?author=ziyangczi) - @ziyangczi 58 | 59 | 60 | ## 8 reviewers added to this release (alphabetical) 61 | 62 | - [Davis Bennett](https://github.com/napari/napari/commits?author=d-v-b) - @d-v-b 63 | - [Juan Nunez-Iglesias](https://github.com/napari/napari/commits?author=jni) - @jni 64 | - [Kevin Yamauchi](https://github.com/napari/napari/commits?author=kevinyamauchi) - @kevinyamauchi 65 | - [Kira Evans](https://github.com/napari/napari/commits?author=kne42) - @kne42 66 | - [Nicholas Sofroniew](https://github.com/napari/napari/commits?author=sofroniewn) - @sofroniewn 67 | - [Philip Winston](https://github.com/napari/napari/commits?author=pwinston) - @pwinston 68 | - [Talley Lambert](https://github.com/napari/napari/commits?author=tlambert03) - @tlambert03 69 | - [Ziyang Liu](https://github.com/napari/napari/commits?author=ziyangczi) - @ziyangczi 70 | -------------------------------------------------------------------------------- /docs/release/release_0_3_8.md: -------------------------------------------------------------------------------- 1 | # napari 0.3.8 2 | 3 | We're happy to announce the release of napari 0.3.8! 4 | napari is a fast, interactive, multi-dimensional image viewer for Python. 5 | It's designed for browsing, annotating, and analyzing large multi-dimensional 6 | images. It's built on top of Qt (for the GUI), vispy (for performant GPU-based 7 | rendering), and the scientific Python stack (numpy, scipy). 8 | 9 | For more information, examples, and documentation, please visit our website: 10 | https://napari.org 11 | 12 | 13 | ## Highlights 14 | This release is mainly a bug fix release, with a number of small improvements 15 | including around our contrast limits updates (#1622) and points coloring (#1641) 16 | and (#1643). This will also be our last release supporting Python3.6. 17 | 18 | 19 | ## Improvements 20 | - Async-2.5: Vispy Changes (#1607) 21 | - Increase screenshot performance (#1615) 22 | - Speed up points selection and selection display (#1648) 23 | 24 | ## Bug Fixes 25 | - Remove silence overwrite during screenshot (#1567) 26 | - Fix usage nan_to_num to work with numpy 1.16 (#1613) 27 | - Update colortransform when building texture (#1622) 28 | - Fix points layer coloring (#1623) 29 | - Fix painting by creating a new slice every time (#1641) 30 | - Fix new color point off (#1643) 31 | - Prevent bundle fail when name is not napari (#1647) 32 | 33 | 34 | ## Build Tools and Docs 35 | - Add test matrix entry to test minimum requirements (#1617) 36 | - Change bundle deps approach (#1619) 37 | - Use pyside2-rcc if pyrcc5 fail (#1626) 38 | - Big update of rendering explanation doc (#1632) 39 | - Do not ship bundle.py in source distribution (#1633) 40 | - Remove Python version requirement for pre-commit (#1645) 41 | - Add github retry action to try and fix flaky app bundling (#1649) 42 | 43 | 44 | ## 6 authors added to this release (alphabetical) 45 | 46 | - [Genevieve Buckley](https://github.com/napari/napari/commits?author=GenevieveBuckley) - @GenevieveBuckley 47 | - [Grzegorz Bokota](https://github.com/napari/napari/commits?author=Czaki) - @Czaki 48 | - [Juan Nunez-Iglesias](https://github.com/napari/napari/commits?author=jni) - @jni 49 | - [Kira Evans](https://github.com/napari/napari/commits?author=kne42) - @kne42 50 | - [Matthias Wagner](https://github.com/napari/napari/commits?author=matthias-us) - @matthias-us 51 | - [Philip Winston](https://github.com/napari/napari/commits?author=pwinston) - @pwinston 52 | - [Talley Lambert](https://github.com/napari/napari/commits?author=tlambert03) - @tlambert03 53 | - [Ziyang Liu](https://github.com/napari/napari/commits?author=ziyangczi) - @ziyangczi 54 | 55 | 56 | ## 5 reviewers added to this release (alphabetical) 57 | 58 | - [Grzegorz Bokota](https://github.com/napari/napari/commits?author=Czaki) - @Czaki 59 | - [Juan Nunez-Iglesias](https://github.com/napari/napari/commits?author=jni) - @jni 60 | - [Kevin Yamauchi](https://github.com/napari/napari/commits?author=kevinyamauchi) - @kevinyamauchi 61 | - [Nicholas Sofroniew](https://github.com/napari/napari/commits?author=sofroniewn) - @sofroniewn 62 | - [Talley Lambert](https://github.com/napari/napari/commits?author=tlambert03) - @tlambert03 63 | -------------------------------------------------------------------------------- /docs/release/release_0_4_10.md: -------------------------------------------------------------------------------- 1 | # napari 0.4.10 2 | 3 | We're happy to announce the release of napari 0.4.10! 4 | napari is a fast, interactive, multi-dimensional image viewer for Python. 5 | It's designed for browsing, annotating, and analyzing large multi-dimensional 6 | images. It's built on top of Qt (for the GUI), vispy (for performant GPU-based 7 | rendering), and the scientific Python stack (numpy, scipy). 8 | 9 | 10 | For more information, examples, and documentation, please visit our website: 11 | https://github.com/napari/napari 12 | 13 | ## Highlights 14 | This is a fairly small release, that follows on quickly from 0.4.9 to fix a regression in 15 | our ability to save layer data (fixed in #2876). It also contains some improvements to our 16 | progress bars (in #2654) and how we compose affine and scale/translate transforms on the 17 | layers (in #2855). 18 | 19 | 20 | ## Improvements 21 | - Add nesting support for progress bars (#2654) 22 | - Auto generate documentation for preferences (#2672) 23 | - Add support for setting the settings configuration path via CLI and import (#2760) 24 | - Minimal changes to support affine composition (#2855) 25 | - Add ActionManager tests (#2868) 26 | - Include the message in notification REPR. (#2874) 27 | - Make `EventedModel` compatible with `dask.Delayed` objects (#2879) 28 | - Add more shortcuts to settings (#2882) 29 | 30 | 31 | ## Bug Fixes 32 | - Typo in action_manager.py (#2869) 33 | - Tifffile compress' kwargs deprecated. Update to compression. (#2872) 34 | - Fix save and update tests (#2876) 35 | - Fix not saving values in settings when loaded from env variables (#2877) 36 | - Fix ipython + visible console results in AttributeError (#2881) 37 | - Fix for too-late magicgui type registration #2891 38 | 39 | ## API Changes 40 | - In #2855 we have now changed the composition behavior of the affine kwarg and the individual 41 | scale, translate, rotate, and shear kwargs on the layers. Before this release if affine was passed 42 | the others would be ignored. Now they will be composed as `affine * (rotate * shear * scale + translate)`. 43 | 44 | 45 | ## Build Tools 46 | - Call import-linter only in CI (#2878) 47 | 48 | 49 | ## 8 authors added to this release (alphabetical) 50 | 51 | - [alisterburt](https://github.com/napari/napari/commits?author=alisterburt) - @alisterburt 52 | - [Andy Sweet](https://github.com/napari/napari/commits?author=andy-sweet) - @andy-sweet 53 | - [Draga Doncila Pop](https://github.com/napari/napari/commits?author=DragaDoncila) - @DragaDoncila 54 | - [Gonzalo Peña-Castellanos](https://github.com/napari/napari/commits?author=goanpeca) - @goanpeca 55 | - [Grzegorz Bokota](https://github.com/napari/napari/commits?author=Czaki) - @Czaki 56 | - [Matthias Bussonnier](https://github.com/napari/napari/commits?author=Carreau) - @Carreau 57 | - [Pam](https://github.com/napari/napari/commits?author=ppwadhwa) - @ppwadhwa 58 | - [Talley Lambert](https://github.com/napari/napari/commits?author=tlambert03) - @tlambert03 59 | 60 | 61 | ## 10 reviewers added to this release (alphabetical) 62 | 63 | - [alisterburt](https://github.com/napari/napari/commits?author=alisterburt) - @alisterburt 64 | - [Andy Sweet](https://github.com/napari/napari/commits?author=andy-sweet) - @andy-sweet 65 | - [Draga Doncila Pop](https://github.com/napari/napari/commits?author=DragaDoncila) - @DragaDoncila 66 | - [Gonzalo Peña-Castellanos](https://github.com/napari/napari/commits?author=goanpeca) - @goanpeca 67 | - [Grzegorz Bokota](https://github.com/napari/napari/commits?author=Czaki) - @Czaki 68 | - [Juan Nunez-Iglesias](https://github.com/napari/napari/commits?author=jni) - @jni 69 | - [Matthias Bussonnier](https://github.com/napari/napari/commits?author=Carreau) - @Carreau 70 | - [Nicholas Sofroniew](https://github.com/napari/napari/commits?author=sofroniewn) - @sofroniewn 71 | - [Pam](https://github.com/napari/napari/commits?author=ppwadhwa) - @ppwadhwa 72 | - [Talley Lambert](https://github.com/napari/napari/commits?author=tlambert03) - @tlambert03 73 | -------------------------------------------------------------------------------- /docs/release/release_0_4_2.md: -------------------------------------------------------------------------------- 1 | # napari 0.4.2 2 | 3 | We're happy to announce the release of napari 0.4.2! 4 | napari is a fast, interactive, multi-dimensional image viewer for Python. 5 | It's designed for browsing, annotating, and analyzing large multi-dimensional 6 | images. It's built on top of Qt (for the GUI), vispy (for performant GPU-based 7 | rendering), and the scientific Python stack (numpy, scipy). 8 | 9 | 10 | For more information, examples, and documentation, please visit our website: 11 | https://github.com/napari/napari 12 | 13 | ## Highlights 14 | 15 | This is an emergency patch release to fix a regression in `0.4.1` that broke 16 | magicgui generated dockwidgets which accepted layers as input (#1962). The 17 | release also contains a number of other bug fixes and improvements, notably 18 | a fix to a performance regression when adding many layers that came in the 19 | `0.3.6` release (#1945), and the beginning of adopting evented dataclasses 20 | for our model files, which will result in a dramatic simplification of that 21 | part of the codebase. 22 | 23 | ## Improvements 24 | - async-28: Misc Cleanup (#1900) 25 | - async-29: Shared Memory Server (#1909) 26 | - Use evented dataclass for axes (#1910) 27 | - Use evented dataclass for scalebar (#1911) 28 | - Use evented dataclass for cursor (#1912) 29 | - Use evented dataclass for grid (#1913) 30 | - Use evented dataclass for camera (#1914) 31 | - Use evented dataclass for colormap (#1916) 32 | - Remove add layers mixin (#1921) 33 | 34 | ## Bug Fixes 35 | - Fix performance issues 1 - adding layers (#1945) 36 | - Fix track labels lookup (#1946) 37 | - Update sliders when change scale of layer (#1951) 38 | - Fix evented dataclass for python 3.9 (#1958) 39 | - Refine TypedMutableSequence.__getitem__ error type, add magicgui tests (#1962) 40 | 41 | ## API Changes 42 | - ``Viewer.camera.ndisplay`` has been dropped. Instead, use 43 | ``Viewer.dims.ndisplay``. (#1914) 44 | 45 | ## Deprecations 46 | - All existing deprecations have been bumped by one release (#1963) 47 | 48 | ## Build Tools and Docs 49 | - Fix checks for running under cProfile and yappi (#1924) 50 | - Fix missing vispy.ext.six (#1930) 51 | - Replace calls to layer.shape in tests (#1938) 52 | - Add pims to bundle (#1939) 53 | - Register sync_only pytest mark to fix warning (#1941) 54 | - Don't run app bundling in forked repos (#1953) 55 | - Add tests for #1895 (#1961) 56 | 57 | 58 | ## 8 authors added to this release (alphabetical) 59 | 60 | - [Alan R Lowe](https://github.com/napari/napari/commits?author=quantumjot) - @quantumjot 61 | - [Draga Doncila Pop](https://github.com/napari/napari/commits?author=DragaDoncila) - @DragaDoncila 62 | - [Genevieve Buckley](https://github.com/napari/napari/commits?author=GenevieveBuckley) - @GenevieveBuckley 63 | - [Grzegorz Bokota](https://github.com/napari/napari/commits?author=Czaki) - @Czaki 64 | - [kir0ul](https://github.com/napari/napari/commits?author=kir0ul) - @kir0ul 65 | - [Lorenzo Gaifas](https://github.com/napari/napari/commits?author=brisvag) - @brisvag 66 | - [Nicholas Sofroniew](https://github.com/napari/napari/commits?author=sofroniewn) - @sofroniewn 67 | - [Philip Winston](https://github.com/napari/napari/commits?author=pwinston) - @pwinston 68 | - [Talley Lambert](https://github.com/napari/napari/commits?author=tlambert03) - @tlambert03 69 | 70 | 71 | ## 5 reviewers added to this release (alphabetical) 72 | 73 | - [Grzegorz Bokota](https://github.com/napari/napari/commits?author=Czaki) - @Czaki 74 | - [Juan Nunez-Iglesias](https://github.com/napari/napari/commits?author=jni) - @jni 75 | - [Nicholas Sofroniew](https://github.com/napari/napari/commits?author=sofroniewn) - @sofroniewn 76 | - [Philip Winston](https://github.com/napari/napari/commits?author=pwinston) - @pwinston 77 | - [Talley Lambert](https://github.com/napari/napari/commits?author=tlambert03) - @tlambert03 78 | 79 | -------------------------------------------------------------------------------- /docs/roadmaps/index.md: -------------------------------------------------------------------------------- 1 | (roadmaps)= 2 | 3 | # Roadmaps 4 | 5 | The [**napari global roadmap**](https://github.com/orgs/napari/projects/24/views/2?pane=info) is hosted on a Github Project board. This roadmap captures the current priorities of the napari core developer team. It is revisited every six months. 6 | 7 | ## For contributors 8 | 9 | If a particular roadmap item is important to you and you want to help make it happen sooner, please [chat with us](https://napari.zulipchat.com/)! You can help by [contributing code or documentation](https://napari.org/dev/developers/index.html) 10 | 11 | ## For funders 12 | 13 | If you have the resources and you are interested in bringing one or more of our roadmap items to life, you can write to us at [napari-steering-council@googlegroups.com](mailto:napari-steering-council@googlegroups.com) and donate on our [NumFOCUS page](https://numfocus.org/donate-to-napari). For a limited time, CZI will kindly [match donations up to a total of $100,000 USD](https://chanzuckerberg.com/science/programs-resources/imaging/napari/seeding-sustainability-for-the-napari-project/). 14 | 15 | ### Past Roadmaps 16 | 17 | - [](0_4.md) 18 | - [](0_3_retrospective.md) 19 | - [](0_3.md) 20 | -------------------------------------------------------------------------------- /docs/tutorials/annotation/index.md: -------------------------------------------------------------------------------- 1 | (annotation)= 2 | # Annotation 3 | 4 | This section contains tutorials showing how to annotate images and videos using the napari points, labels, or shapes layers. 5 | 6 | * [Annotating videos with napari](annotate_points) 7 | -------------------------------------------------------------------------------- /docs/tutorials/index.md: -------------------------------------------------------------------------------- 1 | (tutorials)= 2 | # napari tutorials 3 | 4 | These tutorials will help you explore the main usage modes and methods of 5 | napari, and target people who want to use napari. If you are also interested 6 | in contributing to napari then please check out [the Community page](community). 7 | 8 | ::::{grid} 9 | :::{grid-item-card} Annotation 10 | :link: annotation 11 | :link-type: ref 12 | 13 | How to annotate images and videos using the napari points, labels, or shapes layers 14 | ::: 15 | 16 | :::{grid-item-card} Processing 17 | :link: processing 18 | :link-type: ref 19 | 20 | Data processing with napari 21 | ::: 22 | :::: 23 | 24 | ::::{grid} 25 | :::{grid-item-card} Segmentation 26 | :link: segmentation 27 | :link-type: ref 28 | 29 | Segmentation labeling with napari 30 | ::: 31 | 32 | :::{grid-item-card} Tracking 33 | :link: tracking 34 | :link-type: ref 35 | 36 | How to work with object tracking data and how to format it for display as a napari tracks layer. 37 | ::: 38 | :::: 39 | 40 | ## Improving the tutorials 41 | 42 | Our tutorials are hosted on [the napari Github repository](https://github.com/napari/napari). 43 | As you make your way through the tutorials, if you spot any errors or areas that 44 | can be improved, please raise an issue on the repository or make a pull 45 | request! We love it when our community helps make them better for everyone! 46 | To see how to modify documentation pages, please see our 47 | [documentation contributing guide](contributing-docs). -------------------------------------------------------------------------------- /docs/tutorials/processing/index.md: -------------------------------------------------------------------------------- 1 | (processing)= 2 | # Processing 3 | 4 | This section contains tutorials for data processing. 5 | 6 | * [Using Dask and napari to process & view large datasets](dask-napari) 7 | -------------------------------------------------------------------------------- /docs/tutorials/segmentation/index.md: -------------------------------------------------------------------------------- 1 | (segmentation)= 2 | # Segmentation 3 | 4 | This section contains tutorials for segmentation [labeling](layers-labels). 5 | 6 | * [Annotating segmentation with text and bounding boxes](annotate_segmentation) 7 | -------------------------------------------------------------------------------- /docs/tutorials/start_index.md: -------------------------------------------------------------------------------- 1 | (getting-started)= 2 | 3 | # Getting started 4 | 5 | The following documents will give you an overview of how to install and use 6 | napari. For more detailed use-cases, check out the [napari tutorials](tutorials) 7 | or [How-to guides](how-tos). 8 | 9 | ::::{grid} 10 | :::{grid-item-card} Quick start 11 | :link: napari-quick-start 12 | :link-type: ref 13 | 14 | A quick glance of what napari does aimed at first-timers. 15 | ::: 16 | :::: 17 | 18 | ::::{grid} 19 | :::{grid-item-card} How to install napari 20 | :link: napari-installation 21 | :link-type: ref 22 | 23 | How to do a clean install of napari and launch the viewer. 24 | ::: 25 | 26 | :::{grid-item-card} How to launch napari 27 | :link: launch 28 | :link-type: ref 29 | 30 | This tutorial will teach you all the different ways to launch napari. 31 | ::: 32 | :::: 33 | 34 | ::::{grid} 35 | :::{grid-item-card} Viewer tutorial 36 | :link: viewer-tutorial 37 | :link-type: ref 38 | 39 | This tutorial will teach you about the napari viewer, including how to use its graphical user interface (GUI) 40 | and how the data within it is organized. 41 | ::: 42 | 43 | :::{grid-item-card} Layers at a glance 44 | :link: layers-glance 45 | :link-type: ref 46 | 47 | An overview of the napari *Layers*, the basic viewable objects that can be displayed on the canvas. 48 | ::: 49 | :::: -------------------------------------------------------------------------------- /docs/tutorials/tracking/index.md: -------------------------------------------------------------------------------- 1 | (tracking)= 2 | # Tracking 3 | 4 | This section contains tutorials showing how to work with object tracking data and how to format it for display as a napari tracks layer. 5 | 6 | * [Single cell tracking with napari](cell_tracking) 7 | -------------------------------------------------------------------------------- /docs/usage.md: -------------------------------------------------------------------------------- 1 | (usage)= 2 | 3 | # Usage 4 | 5 | napari leverages the power of Python to enable fast and interactive browsing, 6 | annotation and analysis of large multi-dimensional images. 7 | 8 | ::::{grid} 9 | :::{grid-item-card} napari quick start 10 | :link: napari-quick-start 11 | :link-type: ref 12 | 13 | If you are new to napari, check out the **napari quickstart tutorial**. 14 | ::: 15 | 16 | :::{grid-item-card} Tutorials 17 | :link: tutorials 18 | :link-type: ref 19 | 20 | The tutorials are meant to help you understand how to use 21 | napari, as well as learn about its features and use cases. 22 | ::: 23 | :::: 24 | 25 | ::::{grid} 26 | :::{grid-item-card} Using layers 27 | :link: using-layers 28 | :link-type: ref 29 | 30 | **Layers** are the viewable objects that can be added to a viewer. 31 | Check these guides on how to use the layers currently supported by napari. 32 | ::: 33 | 34 | :::{grid-item-card} How-to guides 35 | :link: how-tos 36 | :link-type: ref 37 | 38 | Guides on completing specific tasks with napari. 39 | :::: 40 | 41 | ::::{grid} 42 | :::{grid-item-card} In-depth explanations 43 | :link: explanations 44 | :link-type: ref 45 | 46 | These guides are aimed at those looking for best practices and more 47 | information on how napari works internally. 48 | ::: 49 | 50 | :::{grid-item-card} Gallery 51 | :link: gallery 52 | :link-type: ref 53 | 54 | Examples of napari usage, to be downloaded as Python scripts or Jupyter notebooks. 55 | ::: 56 | 57 | :::{grid-item-card} napari workshops 58 | :link: workshops 59 | :link-type: ref 60 | 61 | A list of information and materials for workshops given about napari. 62 | ::: 63 | :::: 64 | --------------------------------------------------------------------------------