Visual-Flow Programming Extension For Jupyter Notebooks
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Orchestra Visual Flow Programming

Orchestra VFP is a plugin for Python3 Jupyter Notebooks that enables data scientists and others less familiar with the Python Data Science toolchain to powerfully leverage the full range of data munging and (eventaully) machine learning tasks supported by Python itself.

Users more deeply familiar with Python code can use a hybrid workflow that "exports" python variables directly to the notebook in which Orchestra definitions are created.

Even as Orchestra offers greatly increased accessibility for data manipulation tasks, it does not force any compromises on those who wish to use the full power of Python.

Run Via Docker

  • cd into the directory where you've cloned this repo
  • docker build . -t orchestrajupyter
  • docker run -p 8888:8888 orchestrajupyter
  • You'll see a link printed to the command line like: http://localhost:8888/?token=f716322e4001692d4b6bb346b8e8d23b3af1db58780af32f
  • Click and go! (But be aware that this is just a "demo" environment -- your files will not be persisted after the container stops!)


Assuming you already have Jupyter and Python3 Installed, just run these commands:

jupyter nbextension install
jupyter nbextension install
jupyter nbextension enable orchestra

Expect to see this output:

# Downloading: -> /var/folders/sc/ps6q4zys24x3s4p711n8ltbw0000gp/T/tmps1m0cvrj/orchestra.js
# Copying: /var/folders/sc/ps6q4zys24x3s4p711n8ltbw0000gp/T/tmps1m0cvrj/orchestra.js -> /usr/local/share/jupyter/nbextensions/orchestra.js
# Enabling notebook extension orchestra...
#      - Validating: OK

And you're done! The next time you load a Jupyter Notebook, you'll have this icon available: image

Click it, and you're off to the races.


Environment Setup

  • The dev environment is very similar to the "production" environment, except you're using un-optimized versions of the code. To get started, clone this repo to a location of your choice (here, I assume your home directory), and install its "main" module as a Jupyter extension:
cd /path/to/containing/folder
git clone
jupyter nbextension install /path/to/containing/folder/orchestra-jupyter --symlink
jupyter nbextension enable orchestra-jupyter/main
  • Note that you cannot run both development and built copies of Orchestra side by side. So if you previously installed Orchestra via the instructions above, you'll need to:
jupyter nbextension disable orchestra
  • Otherwise, you'll see this in your JavaScript console when starting Jupyter:
Uncaught SyntaxError: Identifier 'requireConfigFunction' has already been declared
    at orchestra.js?v=20171221222403:1

Building the JavaScript

  • You will only need to build the JavaScript if you want to submit your code back to the main repo. To do so, you'll need a few npm dependencies:
npm install -g grunt-cli
cd /path/to/orchestra
npm install

# To build everything:

# To build only Orchestra (not its third-party dependencies):
grunt buildOrchestra

# To build only third-party libraries (not Orchestra code):
grunt buildLibraries


License: CC BY-NC 4.0

Orchestra Visual Flow Programming is Copyright 2017 Phil Seaton.

Please note the license for Orchestra before you use or modify it. Orchestra is Licensed under the Creative Commons Attribution-NonCommercial 4.0 International License. Orchestra is free to use for non-commercial projects only, and modifications using Orchestra source may not be sold under any circumstances. Commercial licenses of Orchestra can be purchased for a reasonable fee, and may be offered in exchange for contribution to the Orchestra project. Please visit for more information.

Orchestra makes use of several third-party libraries, all of which are open-source projects under the MIT License or similarly permissive open-source licenses that do not restrict usage or modification:

The following are also dependencies, but are included already in Jupyter: JQuery, Bootstrap, RequireJS