Git Product home page Git Product logo

icml's Introduction

Submission is the Flask application that managed submissions for the 2016 Bird Audio Detection challenge. It is wrapped in a Docker container, largely inspired by (https://github.com/tiangolo/uwsgi-nginx-flask-docker), including an nginx and an uwsgi servers managed by supervisord.

The main features include:

  • Basic user management (register/login/logout)
  • Admin panel to manage admin users and competitions
  • Automatic score computation from uploaded submission files
  • Score visualisation with Google Charts

Submission is aimed at being improved by the community to offer a free and generic Kaggle-like challenge platform. Any contribution is welcome!

INSTALLATION

1 - Clone the repository

$ git clone https://github.com/julj/icml.git
$ cd icml

2 - Create the db backup volume to be mounted

$ mkdir db_backup

3 - Run postgres container and mount database to host volume

$ docker run \
    --name icml_db \
    -v $(pwd)/db_backup:/var/lib/postgresql/data/pgdata \
    -e POSTGRES_USER=myuser \
    -e POSTGRES_PASSWORD=mypassword \
    -e POSTGRES_DB=icml_db \
    -e PGDATA=/var/lib/postgresql/data/pgdata \
    -d postgres

4 - Build flask app

$ docker build -t icml .

5 - Run flask app and link to database container

$ docker run --name icml --link icml_db:icml_db -p 5455:80 -v $(pwd)/app:/app -d icml

6 - Initialize db and migrate (https://flask-migrate.readthedocs.io/en/latest/)

$ docker exec icml python /app/manage.py db init
$ docker exec icml python /app/manage.py db migrate
$ docker exec icml python /app/manage.py db upgrade

7 - Enjoy

Now the app is available at http://example.com:5455

8 - More stuff in case you want to modify the app

Logs

The logs of the app (nginx, uwsgi, Flask errors...) can be seen with docker logs <icmlcontainerid>

where <icmlcontainerid> can be seen with

docker ps

Migrations

If you change the models, make sure to run the migrations, which are managed by Flask-Migrate.

Supervisord

After any change, restart uwsgi:

docker exec icml supervisorctl restart uwsgi

ADMINISTRATION

The administration panel can be found at http://<yourdomain>:5455/admin.

1 - Login using the default admin user

email: [email protected] password: changeme

2 - VERY IMPORTANT: change the admin password

This can be done by editing the admin user data in http://<yourdomain>:5455/admin/user/.

3 - Create a competition

Competitions can be created from http://<yourdomain>:5455/admin/competition/. For each competition a ground truth must be uploaded, in the format:

<id>,<detection probability>

where <id> is the identifier of the test instance and <detection probability> is self-explanatory (usually 0 or 1 for the ground truth).

Example:

$ cat groundtruth.csv
0,0 
1,0 
2,1 
3,0 
...

4 - Scores

User scores can be seen graphically at http://<yourdomain>:5455/scores.

Submissions ca be seen in the administration panel at http://<yourdomain>:5455/admin/submission/.

The submission files are stored in the path specified in config.py.

LICENSE

Submission is under MIT license.

Contact

Julien Ricard Hervé Glotin [email protected]

icml's People

Contributors

julj avatar danstowell avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.