Skip to main content

An stand alone, light-weight web server for building, sharing graphs in created in ipython. Let ipython do what it focus, let this do what everyone needs for building a interactive, collaborated and real-time streaming dashboards.

Project description

build status Documentation Status coverage PyPI Version Downloads

*Inspired by `IPython <http://ipython.org/>`__, built with love*

IPython-Dashboard

A stand alone, light-weight web server for building, sharing graphs created in IPython. Build for data science, data analysis guys. Aiming at building an interactive visualization, collaborated dashboard, and real-time streaming graph.

Usage

  • Install prerequisite

    • install the latest stable IPython-Dashboard: pip install ipython-dashboard --upgrade

    • install redis 2.6+ : install guide

    • [option, if you need run sql]install mysql : brew install mysql or apt-get install mysql

    • install IPython-Dashboard requirements [unneeded sometimes]:

      • cd ~/your python package path/IPython-Dashboard

      • pip install -r requirements.txt

  • [``option``, if you need run sql]Config mysql

    • start mysql server : mysql.server start

    • login in mysql using root : mysql -u root

    • create a user and grant privileges;

      • take a look at current database user

        mysql> SELECT User,Host FROM mysql.user;
        +------+-----------+
        | User | Host      |
        +------+-----------+
        | root | 127.0.0.1 |
        | root | ::1       |
        |      | localhost |
        | root | localhost |
        |      | mac007    |
        | root | mac007    |
        +------+-----------+
        6 rows in set (0.00 sec)
      • create a user for IPython-Dashboard

      mysql> create user 'ipd'@'localhost' identified by 'thanks';
      Query OK, 0 rows affected (0.00 sec)
      
      mysql> grant all privileges on *.* to ipd@localhost;
      Query OK, 0 rows affected (0.00 sec)
      
      mysql> SELECT User,Host FROM mysql.user;
      +------+-----------+
      | User | Host      |
      +------+-----------+
      | root | 127.0.0.1 |
      | root | ::1       |
      |      | localhost |
      | ipd  | localhost |
      | root | localhost |
      |      | mac007    |
      | root | mac007    |
      +------+-----------+
      7 rows in set (0.00 sec)
      
      mysql> flush privileges;
      Query OK, 0 rows affected (0.00 sec)
    • create tables;

      nosetests -s dashboard.tests.testCreateData:test_create_mysql_data
  • Create logging path

    • create a folder to store log files. I put it under mnt currently: /mnt/ipython-dashboard/logs

    • make sure the log folder is write-able, using chmod and ls -l to confirm.

      chenshan@mac007:/mnt/ipython-dashboard$ls -l
      total 0
      drwxrwxrwx  9 root  wheel  306 Dec 15 22:09 logs
  • Config IPython-Dashboard server : ``IPython-Dashboard/dashboard/config.py``

    • app_host='ip_address:port'

  • Start redis and IPython-Dashboard server

    chenshan@mac007:~/Desktop/github/IPython-Dashboard$redis-server &
    
    chenshan@mac007:~/Desktop/github/IPython-Dashboard$dash-server --help
    usage: dash-server [-h] [-H HOST] [-p PORT] [-d DEBUG]
    
    Start your IPython-Dashboard server ...
    
    optional arguments:
      -h, --help            show this help message and exit
      -H HOST, --host HOST  server host, default localhost
      -p PORT, --port PORT  server port, default 9090
      -d DEBUG, --debug DEBUG
                            server port, default true
    
    chenshan@mac007:~/Desktop/github/IPython-Dashboard$dash-server
    Namespace(debug=True, host='0.0.0.0', port=9090)
     * Running on http://0.0.0.0:9090/
     * Restarting with reloader
    Namespace(debug=True, host='0.0.0.0', port=9090)
  • Do your exploring

Goal

  • support raw html visualization

  • support python object visualization

  • Editable

  • Real-time fresh when rendering a variable python object

  • Can be shared, both public and private [ need password ]

  • In the notebook, can share an object to a dashboard [ that’s visualize that object in that dashboard ]

Use Case

  • exploring in notebook, share/send the result/summary to people, without the details.

  • share some data in a private notebook.

  • disappointed with the complicated code when drawing a graceful/staic graph using matplotlib/seaborn/mpld3 etc.

  • want an interactive graph, allow people to zoom in/out, resize, get hover tips, change graph type easily.

  • want a real-time graph.

  • want an collaborated graph/dashboard.

wise-choice

wise-choice

Screenshot and Demo

screenshot

screenshot

screenshot

screenshot

screenshot

screenshot

screenshot

screenshot

Run tests

just run sudo nosetests --with-coverage --cover-package=dashboard under this repo

taotao@mac007:~/Desktop/github/IPython-Dashboard$sudo nosetests --with-coverage --cover-package=dashboard
Password:
../Users/chenshan/Desktop/github/IPython-Dashboard/dashboard/tests/testCreateData.py:69: Warning: Can't create database 'IPD_data'; database exists
  conn.cursor().execute('CREATE DATABASE IF NOT EXISTS {};'.format(config.sql_db))
/Users/chenshan/Desktop/github/IPython-Dashboard/dashboard/server/utils.py:135: Warning: Unknown table 'ipd_data.businesses'
  cursor.execute(sql)
/Library/Python/2.7/site-packages/pandas/io/sql.py:599: FutureWarning: The 'mysql' flavor with DBAPI connection is deprecated and will be removed in future versions. MySQL will be further supported with SQLAlchemy engines.
  warnings.warn(_MYSQL_WARNING, FutureWarning)
...
Name                                    Stmts   Miss  Cover   Missing
---------------------------------------------------------------------
dashboard.py                               13      0   100%
dashboard/client.py                         1      0   100%
dashboard/client/sender.py                 11      3    73%   26-27, 33
dashboard/conf.py                           0      0   100%
dashboard/conf/config.py                   29      0   100%
dashboard/server.py                         0      0   100%
dashboard/server/resources.py               0      0   100%
dashboard/server/resources/dash.py         35     10    71%   36, 55-56, 67-69, 86-89
dashboard/server/resources/home.py         40     12    70%   25, 28-30, 83-91
dashboard/server/resources/sql.py          27     11    59%   30, 52-75
dashboard/server/resources/status.py        8      1    88%   19
dashboard/server/resources/storage.py      13      5    62%   26-28, 43-47
dashboard/server/utils.py                  79     18    77%   20-24, 78-80, 82-83, 86, 96, 99-100, 126-127, 140-142
dashboard/server/views.py                  21      1    95%   16
---------------------------------------------------------------------
TOTAL                                     277     61    78%
----------------------------------------------------------------------
Ran 5 tests in 9.885s

OK
taotao@mac007:~/Desktop/github/IPython-Dashboard$

Change Log

  • future

    • front side, databricks style

    • pep 8, code clean up & restructure

    • hover tips

    • edit modal can be resized

    • Share one graph

    • Share one dashboard

    • Presentation mode

    • footer

    • unified message display center

    • SQL Editor

    • login management

    • unified logger and exception report

    • server side log

    • client side log

    • support python3

    • create examples

    • render sql in dashboard

    • chart optimize

  • *V 0.1.6 : optimize-chart [ current develop version ]*

    • Dashboard

      • re-structure code, follow pep8 style

      • create 1 example

      • optimize chart

    • SQL Editor

      • optimize page

      • render sql result as graph

  • *V 0.1.5 : sql-server-log [ current stable version ]*

    • Dashboard

      • create 1 example

      • server side log

      • support x-axis as date format

      • research on real-time updated dataframe

    • SQL Editor

      • sql server develop : render sql result as table view

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

IPython-Dashboard-0.1.5.tar.gz (1.3 MB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page