MedTagger is a collaborative framework for annotating medical datasets.
Main goal of this project was to design and develop software environment, which helps in aggregation and labeling huge datasets of medical scans, powered by idea of crowdsourcing. Platform also provides mechanism for label validation, thus making produced datasets of labels more reliable for the future use.
MedTagger is still under heavy development, so please keep in mind that many things may change or new versions may not be fully backward compatible. Contact with us directly in case you want to use our work :)
Documentation for the MedTagger can be found here.
Our technology stack
- User Interface uses TypeScript 2.7+ with Angular 6 and Material Design style,
- REST API and WebSockets for communication with Backend,
- Backend written in Python 3.7,
- Flask with Flask-RESTPlus as a REST API framework,
- Celery workers using RabbitMQ for communication,
- PostgreSQL as a storage for metadata,
- Cassandra as a storage for images,
- Docker containers for production setup,
- Traefik as a reverse proxy and load balancer for Docker containers,
- Vagrant for development environment,
- Travis for Continuous Integration.
MedTagger consists of two main parts:
frontend- User Interface application written in TypeScript & Angular (more),
backend- system's architecture and API written in Python (more).
To set up MedTagger locally you can use Vagrant virtual machine:
$ vagrant up
Then follow up with our documentation. Default development account is:
MedTagger can be set up easily with Docker-Compose:
$ docker-compose up
More about setting up environment with Docker-Compose can be found here.
Data Analysis with Jupyter Notebook
Together with Docker-Compose setup, you can use Jupyter Notebook server to easily analyse collected annotations. Here you can find some examples that shows how to do so.
More information about setting up local Jupyter Notebook session can be found here.
Below screenshots show how MedTagger looks like: