Ipyannotator

Ipyannotator: the infinitely hackable annotation framework - Published in JOSS (2022)

https://github.com/palaimon/ipyannotator

Science Score: 93.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 4 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

annotation-tool annotations hacktoberfest ipycanvas ipywidgets labeling labeling-tool nbdev voila

Keywords from Contributors

mesh

Scientific Fields

Sociology Social Sciences - 38% confidence
Last synced: 4 months ago · JSON representation

Repository

the infinitely hackable annotation framework

Basic Info
Statistics
  • Stars: 36
  • Watchers: 4
  • Forks: 7
  • Open Issues: 13
  • Releases: 9
Topics
annotation-tool annotations hacktoberfest ipycanvas ipywidgets labeling labeling-tool nbdev voila
Created about 5 years ago · Last pushed almost 3 years ago
Metadata Files
Readme Changelog Contributing License Zenodo

README.md

Ipyannotator - the infinitely hackable annotation framework

CI-Badge DOI

Ipyannotator is a flexible annotation system. Developed to allow users to hack its features by extending and customizing it.

The large variety of annotation tasks, data formats and data visualizations is a challenging when dealing with multiple domains of supervised machine learning (ML). The existent tooling is often not flexible enough which imposes limitations to the user. By providing a framework where users can use, customize and create their own annotation tooling this projects aims to solve this problem.

The library contains some pre-defined annotators that can be used out of the box, but it also can be extend and customized according to the users needs. Check our tutorials for a quickly understanding of it's usage and check our API for quick reference.

This library has been written in the literate programming style popularized for jupyter notebooks by nbdev. In addition to our online documentation the jupyter notebooks located at nbs/ allow an interactive exploration of the inner workings of Ipyannotator.

We hope this repository helps you to explore how annotation UI's can be quickly built using only python code and leveraging many awesome libraries (ipywidgets, voila, ipycanvas, etc.) from the jupyter Eco-system.

At https://palaimon.io we have used the concepts underlying Ipyannotator internally for various projects and this is our attempt to contribute back to the OSS community some of the benefits we have had using OOS software.

Please star, fork and open issues!

Please let us know if you find this repository useful. Your feedback will help us to turn this proof of concept into a comprehensive library.

Citation

If you make use of this software for your work we would appreciate it if you would cite the paper from the Journal of Open Source Software:

bibtex @article{Epifânio2022, title = {Ipyannotator: the infinitely hackable annotation framework}, author = {Ítalo Epifânio and Oleksandr Pysarenko and Immanuel Bayer}, journal = {Journal of Open Source Software}, publisher = {The Open Journal}, volume = {7}, number = {76}, pages = {4480}, year = {2022} }

Install

Ipyannotator is available on Pypi and can be installed using:

pip install ipyannotator

Running ipyannotator

Ipyannotator provides a simple API that provides the ability to explore, create and improve annotation datasets by using a pair of input/outputs. All pair of input/output are listed on Ipyannotator's docs. Check Ipyannotator tutorials for a quickly demonstration of the library.

Run ipyannotator tests

To run Ipyannotator's tests:

  1. Install poetry
  2. Create the test environment with poetry install
  3. Activate the poetry environment using poetry shell
  4. Run tests by executing nbdev_test_nbs

Run ipyannotator as stand-alone web app using voila

Ipyannotator can be executed as a web app using the voila library. The following sections describe how to run using poetry and pip.

Using poetry

On your terminal:

shell cd {project_root} poetry install --no-dev

Any jupyter notebook with ipyannotator can be executed as an standalone web application. An example of voila usage it's available in the current repository and can be executed as it follow:

shell poetry run voila nbs/09_voila_example.ipynb --enable_nbextensions=True

Using pip

The installation and execution process can also be done using pip.

```shell cd {project_root}

pip install . pip install voila

voila nbs/09voilaexample.ipynb --enable_nbextensions=True ```

Jupyter lab trouble shooting

For clean (re)install make sure to have all the lab extencions active:

jupyter lab clean to remove the staging and static directories from the lab

ipywidgets:

jupyter labextension install @jupyter-widgets/jupyterlab-manager

ipycanvas:

jupyter labextension install @jupyter-widgets/jupyterlab-manager ipycanvas

ipyevents:

jupyter labextension install @jupyter-widgets/jupyterlab-manager ipyevents

nbdime:

nbdime extensions --enable [--sys-prefix/--user/--system]

viola:

jupyter labextension install @jupyter-voila/jupyterlab-preview

How to contribute

Check out CONTRIBUTING.md and since ipyannotator is build using nbdev reading the nbdev tutorial and related docs will be very helpful.

Additional resources

jupytercon 2020

Acknowledgements

The authors acknowledge the financial support by the Federal Ministry for Digital and Transport of Germany under the program mFUND (project number 19F2160A).

Copyright

Copyright 2022 onwards, Palaimon GmbH. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this project's files except in compliance with the License. A copy of the License is provided in the LICENSE file in this repository.

Owner

  • Name: Palaimon
  • Login: palaimon
  • Kind: organization
  • Email: opensource@palaimon.io
  • Location: Berlin, Germany

Transfer of cutting-edge ml / ai research to specialized industry solutions

JOSS Publication

Ipyannotator: the infinitely hackable annotation framework
Published
August 24, 2022
Volume 7, Issue 76, Page 4480
Authors
Ítalo Epifânio
Palaimon GmbH
Oleksandr Pysarenko
Palaimon GmbH
Immanuel Bayer
Palaimon GmbH
Editor
Daniel S. Katz ORCID
Tags
Python Jupyter Notebook Annotator Annotations

GitHub Events

Total
  • Watch event: 1
Last Year
  • Watch event: 1

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 45
  • Total Committers: 5
  • Avg Commits per committer: 9.0
  • Development Distribution Score (DDS): 0.689
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
ibayer m****b@i****o 14
Immanuel Bayer g****t@i****u 12
Ítalo Epifânio i****s@g****m 9
dependabot[bot] 4****] 8
Alex Joz y****e@g****m 2
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 13
  • Total pull requests: 49
  • Average time to close issues: 29 days
  • Average time to close pull requests: 15 days
  • Total issue authors: 4
  • Total pull request authors: 9
  • Average comments per issue: 0.92
  • Average comments per pull request: 0.65
  • Merged pull requests: 29
  • Bot issues: 0
  • Bot pull requests: 21
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • ibayer (5)
  • matthewfeickert (4)
  • itepifanio (3)
  • csadorf (1)
Pull Request Authors
  • dependabot[bot] (21)
  • itepifanio (16)
  • AlexJoz (4)
  • EnriqueMoran (2)
  • danielskatz (2)
  • daviddavo (1)
  • TrellixVulnTeam (1)
  • csadorf (1)
  • ibayer (1)
Top Labels
Issue Labels
good first issue (5) hacktoberfest (3)
Pull Request Labels
dependencies (21)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 24 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 1
  • Total versions: 12
  • Total maintainers: 1
pypi.org: ipyannotator

The infinitely hackable annotation framework

  • Versions: 12
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 24 Last month
Rankings
Dependent packages count: 10.1%
Stargazers count: 11.2%
Forks count: 12.6%
Dependent repos count: 21.6%
Average: 23.4%
Downloads: 61.5%
Maintainers (1)
Last synced: 4 months ago

Dependencies

.github/workflows/docs_pages.yaml actions
  • JamesIves/github-pages-deploy-action v4.4.0 composite
  • abatilo/actions-poetry v2.1.6 composite
  • actions/checkout v3 composite
  • actions/setup-python v4.1.0 composite
.github/workflows/release.yaml actions
  • abatilo/actions-poetry v2.1.6 composite
  • actions/checkout v3 composite
  • actions/setup-python v4.1.0 composite
Dockerfile docker
  • ubuntu 20.04 build
poetry.lock pypi
  • 173 dependencies
pyproject.toml pypi
  • RISE >=5.6 develop
  • Sphinx >=4.4.0 develop
  • autopep8 >=1.6.0 develop
  • cryptography >=3.4.8 develop
  • flake8 >=4.0.1 develop
  • ipytest >=0.12.0 develop
  • jupyter-client =6.1.12 develop
  • jupyterlab ^3.1.12 develop
  • mypy >=0.931 develop
  • myst-nb >=0.13.2 develop
  • nbdev 1.* develop
  • nbdime >=2.0.0 develop
  • nbqa >=1.2.3 develop
  • nbstripout >=0.3.9 develop
  • pydata-sphinx-theme >=0.8.0 develop
  • pylint >=2.12.2 develop
  • twine >=3.2.0 develop
  • wheel >=0.36.2 develop
  • PyPubSub 4.0.*
  • ipycanvas >=0.10.2
  • ipyevents >=0.8.0
  • ipykernel >=5.3.4
  • ipython >=8.0.1
  • ipywidgets >=7.6.0
  • matplotlib >=3.4.3
  • pandas >=1.2.0
  • pooch 1.5.*
  • pydantic 1.8.*
  • python >=3.8
  • scikit-image >=0.19.3
  • tqdm >=4.64
  • traitlets >=5.1.1
  • voila >=0.3.1
setup.py pypi