{"id":34704475,"url":"https://github.com/navis-org/navis","last_synced_at":"2025-12-24T23:00:55.899Z","repository":{"id":37436662,"uuid":"168142416","full_name":"navis-org/navis","owner":"navis-org","description":"Python library for analysis of neuroanatomical data.","archived":false,"fork":false,"pushed_at":"2025-11-28T14:46:38.000Z","size":308994,"stargazers_count":108,"open_issues_count":46,"forks_count":34,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-11-30T20:55:35.419Z","etag":null,"topics":["3d","anatomy","blender","connectome","flywire","hemibrain","meshes","morphometric","nblast","neuprint","neuroanatomy","neurons","neuroscience","python","segmentation","skeletons","swc","transform","visualization","volumes"],"latest_commit_sha":null,"homepage":"https://navis-org.github.io/navis/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/navis-org.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-01-29T11:19:00.000Z","updated_at":"2025-11-28T14:46:35.000Z","dependencies_parsed_at":"2023-02-16T21:31:37.073Z","dependency_job_id":"628aae97-c5b0-4645-9cb3-8177b7a37c0b","html_url":"https://github.com/navis-org/navis","commit_stats":{"total_commits":1746,"total_committers":14,"mean_commits":"124.71428571428571","dds":"0.17697594501718217","last_synced_commit":"4225c0d4af6cbcfde7a774dc19b2513618dc7323"},"previous_names":[],"tags_count":31,"template":false,"template_full_name":null,"purl":"pkg:github/navis-org/navis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/navis-org%2Fnavis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/navis-org%2Fnavis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/navis-org%2Fnavis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/navis-org%2Fnavis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/navis-org","download_url":"https://codeload.github.com/navis-org/navis/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/navis-org%2Fnavis/sbom","scorecard":{"id":676622,"data":{"date":"2025-08-11","repo":{"name":"github.com/navis-org/navis","commit":"4f7973f9ee360b08e1005574b2bf9d18e33a32b6"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.7,"checks":[{"name":"Maintained","score":10,"reason":"19 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 1/27 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":9,"reason":"binaries present in source code","details":["Warn: binary detected: navis/transforms/jars/transform-helpers-0.0.1-shaded.jar:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: topLevel 'contents' permission set to 'write': .github/workflows/build-docs.yml:4","Warn: no topLevel permission defined: .github/workflows/publish-to-pypi.yml:1","Warn: no topLevel permission defined: .github/workflows/test-install.yml:1","Warn: no topLevel permission defined: .github/workflows/test-package.yml:1","Warn: no topLevel permission defined: .github/workflows/test-tutorials.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/publish-to-pypi.yml:9"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":0,"reason":"20 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2024-4 / GHSA-2mqj-m65w-jghx","Warn: Project is vulnerable to: PYSEC-2023-165 / GHSA-cwvm-v4w8-q58c","Warn: Project is vulnerable to: PYSEC-2022-42992 / GHSA-hcpj-qp55-gfph","Warn: Project is vulnerable to: PYSEC-2023-137 / GHSA-pr76-5cm5-w9cj","Warn: Project is vulnerable to: PYSEC-2023-161 / GHSA-wfm5-v35h-vwf4","Warn: Project is vulnerable to: PYSEC-2021-856 / GHSA-5545-2q6w-2gh6","Warn: Project is vulnerable to: GHSA-6p56-wp2h-9hxr","Warn: Project is vulnerable to: PYSEC-2019-108 / GHSA-9fq2-x9r6-wfmf","Warn: Project is vulnerable to: PYSEC-2021-857 / GHSA-f7c7-j99h-c22f","Warn: Project is vulnerable to: GHSA-fpfv-jqm9-f5jm","Warn: Project is vulnerable to: PYSEC-2020-73","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: PYSEC-2023-74 / GHSA-j8r2-6x86-q33q","Warn: Project is vulnerable to: PYSEC-2023-102","Warn: Project is vulnerable to: PYSEC-2023-114","Warn: Project is vulnerable to: PYSEC-2025-49 / GHSA-5rjg-fvgr-3xxf","Warn: Project is vulnerable to: GHSA-cx63-2mw6-8hw5","Warn: Project is vulnerable to: GHSA-g7vv-2v7x-gj9p","Warn: Project is vulnerable to: PYSEC-2022-43017 / GHSA-qwmp-2cf2-g9g6"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 6 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-docs.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/navis-org/navis/build-docs.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-docs.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/navis-org/navis/build-docs.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build-docs.yml:47: update your workflow using https://app.stepsecurity.io/secureworkflow/navis-org/navis/build-docs.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish-to-pypi.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/navis-org/navis/publish-to-pypi.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish-to-pypi.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/navis-org/navis/publish-to-pypi.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish-to-pypi.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/navis-org/navis/publish-to-pypi.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test-install.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/navis-org/navis/test-install.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-install.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/navis-org/navis/test-install.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-install.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/navis-org/navis/test-install.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test-package.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/navis-org/navis/test-package.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-package.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/navis-org/navis/test-package.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-package.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/navis-org/navis/test-package.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test-package.yml:57: update your workflow using https://app.stepsecurity.io/secureworkflow/navis-org/navis/test-package.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test-tutorials.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/navis-org/navis/test-tutorials.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-tutorials.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/navis-org/navis/test-tutorials.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-tutorials.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/navis-org/navis/test-tutorials.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test-tutorials.yml:44: update your workflow using https://app.stepsecurity.io/secureworkflow/navis-org/navis/test-tutorials.yml/master?enable=pin","Warn: pipCommand not pinned by hash: binder/postBuild:4","Warn: pipCommand not pinned by hash: binder/postBuild:7","Warn: pipCommand not pinned by hash: .github/workflows/build-docs.yml:34","Warn: pipCommand not pinned by hash: .github/workflows/build-docs.yml:35","Warn: pipCommand not pinned by hash: .github/workflows/build-docs.yml:36","Warn: pipCommand not pinned by hash: .github/workflows/publish-to-pypi.yml:20","Warn: pipCommand not pinned by hash: .github/workflows/test-install.yml:43","Warn: pipCommand not pinned by hash: .github/workflows/test-install.yml:46","Warn: pipCommand not pinned by hash: .github/workflows/test-package.yml:42","Warn: pipCommand not pinned by hash: .github/workflows/test-package.yml:43","Warn: pipCommand not pinned by hash: .github/workflows/test-package.yml:44","Warn: pipCommand not pinned by hash: .github/workflows/test-package.yml:45","Warn: pipCommand not pinned by hash: .github/workflows/test-package.yml:46","Warn: pipCommand not pinned by hash: .github/workflows/test-package.yml:47","Warn: pipCommand not pinned by hash: .github/workflows/test-package.yml:50","Warn: pipCommand not pinned by hash: .github/workflows/test-tutorials.yml:31","Warn: pipCommand not pinned by hash: .github/workflows/test-tutorials.yml:32","Warn: pipCommand not pinned by hash: .github/workflows/test-tutorials.yml:33","Info:   0 out of  10 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   7 third-party GitHubAction dependencies pinned","Info:   0 out of  18 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}}]},"last_synced_at":"2025-08-21T21:42:12.965Z","repository_id":37436662,"created_at":"2025-08-21T21:42:12.965Z","updated_at":"2025-08-21T21:42:12.965Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28012084,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-24T02:00:07.193Z","response_time":83,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3d","anatomy","blender","connectome","flywire","hemibrain","meshes","morphometric","nblast","neuprint","neuroanatomy","neurons","neuroscience","python","segmentation","skeletons","swc","transform","visualization","volumes"],"created_at":"2025-12-24T23:00:47.411Z","updated_at":"2025-12-24T23:00:55.882Z","avatar_url":"https://github.com/navis-org.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Docs](https://github.com/navis-org/navis/actions/workflows/build-docs.yml/badge.svg)](https://github.com/navis-org/navis/actions/workflows/build-docs.yml) [![Tests](https://github.com/navis-org/navis/actions/workflows/test-package.yml/badge.svg)](https://github.com/navis-org/navis/actions/workflows/test-package.yml) [![Test tutorials](https://github.com/navis-org/navis/actions/workflows/test-tutorials.yml/badge.svg)](https://github.com/navis-org/navis/actions/workflows/test-tutorials.yml) [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/navis-org/navis/blob/master/examples/colab.ipynb) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.8191725.svg)](https://zenodo.org/doi/10.5281/zenodo.4699382) [![Downloads](https://pepy.tech/badge/navis)](https://pepy.tech/project/navis)\n\n\u003cimg src=\"https://github.com/navis-org/navis/raw/master/docs/_static/logo_new.png\" height=\"150\"\u003e\n\nNAVis is a Python 3 library for **N**euron **A**nalysis and **Vis**ualization.\n\n## Documentation\nVisit our documentation [here](https://navis-org.github.io/navis/ \"NAVis Documentation\")!\n\n## Features\n* **polyglot**: work with and convert between neuron skeletons, meshes, dotprops and images\n* **visualize**: 2D (matplotlib) and 3D (octarine, vispy, plotly or k3d) plots\n* **process**: skeletonization, meshing, smoothing, repair, downsampling, etc.\n* **morphometrics**: Strahler analysis, cable length, volume, tortuosity and more\n* **similarity**: compare \u0026 cluster by morphology (e.g. NBLAST, persistence or form factor) or connectivity metrics\n* **transform**: move data between template brains (built-in support for HDF5, CMTK, Elastix and landmark-based transforms)\n* **interface**: load neurons directly from [neuPrint](https://neuprint.janelia.org), [neuromorpho.org](http://neuromorpho.org) and other remote data repositories\n* **model** neurons and networks using the *NEURON* simulator\n* **render**: use Blender 3D for high quality [visualizations](https://youtu.be/wl3sFG7WQJc)\n* **R** neuron libraries: interfaces with [nat](https://github.com/jefferis/nat), [rcatmaid](https://github.com/jefferis/rcatmaid), [elmr](https://github.com/jefferis/elmr) and more\n* **import-export**: read/write SWCs, neuroglancer's [\"*precomputed*\"](https://github.com/google/neuroglancer/tree/master/src/datasource/precomputed) format, NMX/NML, NRRD, mesh-files and more\n* **fast**: uses functions compiled in Rust under-the-hood (see [fastcore](https://github.com/schlegelp/fastcore-rs))\n* **scalable**: out-of-the-box support for multiprocessing\n* **extensible**: build your own package on top of navis - see [pymaid](https://pymaid.readthedocs.io/en/latest/) for example\n\n## Getting started\nSee the [documentation](http://navis.readthedocs.io/ \"NAVis ReadTheDocs\") for detailed installation instructions, tutorials and examples. For the impatient:\n\n```sh\npip3 install \"navis[all]\"\n```\n\nwhich includes all optional extras providing features and/or performance improvements. If you encounter issues, you may want\nto try a minimal installation and install optional dependencies as needed. Please see the\n[Install Instructions](https://navis-org.github.io/navis/installation/) for a detailed explanation.\n\n![movie](https://user-images.githubusercontent.com/7161148/114312307-28a72700-9aea-11eb-89a6-ee1d72bfa730.mov)\n\n## Questions?\nQuestions on how to use `navis` are best placed in [discussions](https://github.com/navis-org/navis/discussions). Same goes for cool projects or analyses you made using `navis` -\nwe'd love to hear from you!\n\n## Changelog\n\nA summary of changes can be found\n[here](https://navis.readthedocs.io/en/latest/source/whats_new.html).\n\n## NAVis \u0026 friends\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://github.com/navis-org/navis/blob/master/docs/_static/navis_ecosystem.png?raw=true\" width=\"700\"\u003e\n\u003c/p\u003e\n\nNAVis comes with batteries included but is also highly extensible. Some\nlibraries built on top of NAVis:\n* [flybrains](https://github.com/navis-org/navis-flybrains) provides templates and transforms for *Drosophila* brains to use with navis\n* [pymaid](https://pymaid.readthedocs.io/en/latest/) pulls and pushes data from/to CATMAID servers\n* [fafbseg](https://fafbseg-py.readthedocs.io/en/latest/index.html) contains tools to work with auto-segmented data for the FAFB EM dataset including FlyWire\n\n## Who uses NAVis?\nNAVis has been used in a range of neurobiological publications. See [here](publications.md) for a list.\n\nWe have implemented various published algorithms and methods:\n\n1. NBLAST: Comparison of neurons based on morphology [(Costa et al., 2016)](https://www.cell.com/neuron/fulltext/S0896-6273(16)30265-3?_returnURL=https%3A%2F%2Flinkinghub.elsevier.com%2Fretrieve%2Fpii%2FS0896627316302653%3Fshowall%3Dtrue)\n2. Vertex Similarity: Comparison of neurons based on connectivity [(Jarrell et al., 2012)](http://science.sciencemag.org/content/337/6093/437.long)\n3. Comparison of neurons based on synapse distribution\n[(Schlegel et al., 2016)](https://elifesciences.org/content/5/e16799)\n4. Synapse flow centrality for axon-dendrite splits [(Schneider-Mizell et al., 2016)](https://elifesciences.org/articles/12059)\n\nWorking on your own cool new method? Consider adding it to NAVis!\n\n## Citing NAVis\nWe'd love to know if you found NAVis useful for your research! You can help us\nspread the word by citing the DOI provided by Zenodo [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.8191725.svg)](https://zenodo.org/doi/10.5281/zenodo.4699382)\n\n## License\nThis code is under [GNU GPL V3](LICENSE).\n\n## Acknowledgments\nNAVis is inspired by and inherits much of its design from the excellent\n[natverse](http://natverse.org) R packages by\n[Greg Jefferis](https://github.com/jefferis), [Alex Bates](https://github.com/alexanderbates),\n[James Manton](https://github.com/ajdm) and others.\n\n## Contributing\nWant to contribute? Great, here is how!\n\n#### Report bugs or request features\nOpen an [issue](https://github.com/navis-org/navis/issues). For bug reports\nplease make sure to include some code/data with a minimum example for us to\nreproduce the bug.\n\n#### Contribute code\nWe're always happy for people to contribute code - be it a small bug fix, a\nnew feature or improved documentation.\n\nHere's how you'd do it in a nutshell:\n\n1. Fork this repository\n2. `git clone` it to your local machine\n3. Install the full development dependencies with `pip install -r requirements.txt`\n4. Install the package in editable mode with `pip install -e \".[all]\"`\n5. Create, `git add`, `git commit`, `git push`, and pull request your changes.\n\nRun the tests locally with `pytest -v`.\n\nDocstrings should use the [numpydoc](https://numpydoc.readthedocs.io/en/latest/format.html) format,\nand make sure you include any relevant links and citations.\nUnit tests should be [doctests](https://docs.python.org/3/library/doctest.html)\nand/or use [pytest](https://docs.pytest.org/en/stable/) in the `./tests` directory.\n\nDoctests have access to the `tmp_dir: pathlib.Path` variable,\nwhich should be used if any files need to be written.\n\nFeel free to get in touch either through an [issue](https://github.com/navis-org/navis/issues)\nor [discussion](https://github.com/navis-org/navis/discussions) if you need\npointers or input on how to implement an idea.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnavis-org%2Fnavis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnavis-org%2Fnavis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnavis-org%2Fnavis/lists"}