Coder Social home page Coder Social logo

dive-backend's Introduction

DIVE Backend

The Data Integration and Visualization Engine (DIVE) is a platform for semi-automatically generating web-based, interactive visualizations of structured data sets. Data visualization is a useful method for understanding complex phenomena, communicating information, and informing inquiry. However, available tools for data visualization are difficult to learn and use, require a priori knowledge of what visualizations to create. See dive.media.mit.edu for more information.

Development setup involves the following steps:

  1. Installing system dependencies
  2. Setting up postgres
  3. Setting up rabbitMQ
  4. Starting and entering virtual environment
  5. Installing python dependencies
  6. Migrating database
  7. Starting celery worker
  8. Starting server

Install System Dependencies (Linux / apt)

$ sudo apt-get update && sudo apt-get install -y postgresql git python2.7 python-pip build-essential python-dev libpq-dev libssl-dev libffi-dev liblapack-dev gfortran libxml2-dev libxslt1-dev rabbitmq-server

Install System Dependencies (Mac / brew)

Install Homebrew if you don't already have it. Then, run the following code:

$ brew install postgres
$ brew install rabbitmq

OR Install postgres.app

Install postgres.app by following the instructions here: (http://postgresapp.com/).

Download and open the app to start postgres.

Setup postgres

Make sure that you have a postgres server instance running:

postgres -D /usr/local/pgsql/data >logfile 2>&1 &
sudo -u postgres -i

Create the dive database by running:

$ createuser admin -P
$ createdb dive -O admin

Start RabbitMQ AMQP Server

  1. Add rabbitmq-server executable to path (add PATH=$PATH:/usr/local/sbin to ~/.bash_profile or ~/.profile)

  2. Run the server as a background process sudo rabbitmq-server -detached

  3. Create a RabbitMQ user and virtual host:

$ sudo rabbitmqctl add_user admin password
$ sudo rabbitmqctl add_vhost dive
$ sudo rabbitmqctl set_permissions -p dive admin ".*" ".*" ".*"

Install and Enter Virtual Python Environment

  1. Installation: See this fine tutorial.
  2. Starting virtual env: source venv/bin/activate.

Install Python Dependencies

Within a virtual environment, install dependencies in requirements.txt. But due to a dependency issue in numexpr, we need to install numpy first.

$ pip install -U numpy && pip install -r requirements.txt

Start Celery Worker

  1. Start celery worker: ./run_worker.sh
  2. Start celery monitor (flower): celery -A base.core flower

Database Migrations

Follow the docs. The first time, run the migration script.

python migrate.py db init

Then, review and edit the migration script. Finally, each time models are changed, run the following:

$ python migrate.py db migrate
$ python migrate.py db upgrade

Run API

  1. To run development Flask server, run python run_server.py.
  2. To run production Gunicorn server, run ./run_server.sh.

Deployment

  1. Set environment variable before running any command:
$ source production_env

Building Docker Images

conda env export > environment.yml
conda env create -f environment.yml

conda list -e > conda-requirements.txt
conda create --name dive --file conda-requirements.txt

dive-backend's People

Contributors

gurum avatar juliaguo avatar kevinzenghu avatar psehong avatar szwang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dive-backend's Issues

Missing dependencies

To name a few: pandas, flask, yaml, flask_compress, flask_cors, flask_login, flask_sqlalchemy etc.

Maybe this was never tried to be installed into a newly installed virtual machine like mine? I used an 18.04 LTS Ubuntu Server, completely fresh VM. If you need a more full list, I am happy to provide it, but then I would like you to promise that you'll merge it in :)

Website's registration broken

Both Firefox and Chrome complain about CORS and registration does not succeed. I have all blocking/adblocks/privacy badger/etc. turned off. Here is the Chrome console output:

register:1 Failed to decode downloaded font: https://d33wubrfki0l68.cloudfront.net/a571dd4a0c7e19690e66cf444b06be148f0f5ebb/b5b4a/assets/fonts/segoe-ui/segoeuisl.ttf
register:1 OTS parsing error: OS/2: Failed to parse table
register:1 Access to fetch at 'https://dive-api.media.mit.edu/auth/v1/anonymous_user' from origin 'https://dive.media.mit.edu' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
dive-api.media.mit.edu/auth/v1/anonymous_user:1 Failed to load resource: net::ERR_FAILED
register:1 Uncaught (in promise) TypeError: Failed to fetch
register:1 Access to fetch at 'https://dive-api.media.mit.edu/auth/v1/register' from origin 'https://dive.media.mit.edu' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
dive-api.media.mit.edu/auth/v1/register:1 Failed to load resource: net::ERR_FAILED
bundle.js:1 Registration failed TypeError: Failed to fetch
register:1 Failed to decode downloaded font: https://d33wubrfki0l68.cloudfront.net/a571dd4a0c7e19690e66cf444b06be148f0f5ebb/b5b4a/assets/fonts/segoe-ui/segoeuisl.ttf
register:1 OTS parsing error: OS/2: Failed to parse table

unable to buld docker

Downloading https://files.pythonhosted.org/packages/7c/ef/79873517838910e8f1bd5610ab3de380a3886675103072727266eec91bbc/dbf-0.94.003.tar.gz (79kB)
ERROR: Command errored out with exit status 1:
command: /usr/local/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-9f0aorln/dbf/setup.py'"'"'; file='"'"'/tmp/pip-install-9f0aorln/dbf/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' egg_info --egg-base pip-egg-info
cwd: /tmp/pip-install-9f0aorln/dbf/
Complete output (8 lines):
Traceback (most recent call last):
File "", line 1, in
File "/tmp/pip-install-9f0aorln/dbf/setup.py", line 4, in
import dbf
File "/tmp/pip-install-9f0aorln/dbf/dbf.py", line 339
print args
^
SyntaxError: Missing parentheses in call to 'print'
----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
The command '/bin/sh -c pip install -r requirements.txt' returned a non-zero code: 1

Docker?

Is there a Docker image? Thanks.

Delete & CORS

When I delete a project, that project is deleted from the front end, but it reappears when I re-enter or reload the page.

SEC7120: [CORS] The origin 'https://dive.media.mit.edu' did not find 'https://dive.media.mit.edu' in the Access-Control-Allow-Origin response header for cross-origin resource at 'https://dive-api.media.mit.edu/projects/v1/projects/1643'.

HTTP500: SERVER ERROR - The server encountered an unexpected condition that prevented it from fulfilling the request. (Fetch) DELETE - https://dive-api.media.mit.edu/projects/v1/projects/1643

Is DIVE project active ??

I see not much movement in git repo for DIVE since June 2018.
Is the project in "Active" state ?

Also, how much data DIVE can handle for regression or correlation ??

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.