Skip to main content

Workflow Engine

Project description

Requires Python 3.5. See http://nlesc.github.io/noodles/ for more information.

Installation

Install the following in a virtualenv:

pip install .

To enable Xenon for remote execution, Java must be installed, and Xenon can be installed with

pip install '.[xenon]'

If Java cannot be found (needed by Xenon), run

export JAVA_HOME="/usr/lib/jvm/default-java"  # or similar...

in your shell initialization script (like ~/.bashrc).

To enable the TinyDB based job database, run

pip install '.[prov]'

This is needed if you want to interrupt a running workflow and resume where you left of, or to reuse results over multiple runs.

To run unit tests, run

pip install '.[test]'
nosetests test

Some tests depend on the optional modules being installed. Those are skipped if if imports fail. If you want to test everything, make sure you have NumPy installed as well.

The prototype

The prototype is very simple. It should support the definition of function objects that are manageable in the workflow engine and give output of the workflow as a graph. The only dependency of this prototype should be the graph plotting library: pygraphviz. To keep the interface clean, we avoid the use of Fireworks specific functionality at this point. The abstract concepts in this context are: workflow, node, link.

Developers interface

Questions:

  • What does a developer adding functionality to the workflow engine need to know?

  • How do we specify the surrounding context of functions in terms of types and monadic context?

User interface

The user should have it easy. From the spirit of wishful programming, we may give here some examples of how the user would use the workflow engine.

Prototype example

The developer has prepared some nice functions for the user:

@schedule
def f(a, b):
    return a+b

@schedule
def g(a, b):
    return a-b

@schedule
def h(a, b):
    return a*b

The user then uses these in a workflow:

u = f(5, 4)
v = g(u, 3)
w = g(u, 2)
x = h(v, w)

draw_graph("graph-example1.svg", x)

Resulting in the graph:

examples/callgraph.png?raw=true

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

noodles-0.2.1.tar.gz (49.6 kB view details)

Uploaded Source

Built Distributions

noodles-0.2.1-py3.5.egg (169.6 kB view details)

Uploaded Source

noodles-0.2.1-py3-none-any.whl (69.5 kB view details)

Uploaded Python 3

File details

Details for the file noodles-0.2.1.tar.gz.

File metadata

  • Download URL: noodles-0.2.1.tar.gz
  • Upload date:
  • Size: 49.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for noodles-0.2.1.tar.gz
Algorithm Hash digest
SHA256 71f25d7e6129f5eaf5a85488f8cc5bfc9d0da8d0d06225f10466b8778a516fa5
MD5 5997c9ab8b63787c2a5a3e7a8e1e2ff6
BLAKE2b-256 df975ea2ae990cbe20137b161e4d87090ae61dfbe7c89a5f8b5f44c9a6b69a6f

See more details on using hashes here.

File details

Details for the file noodles-0.2.1-py3.5.egg.

File metadata

  • Download URL: noodles-0.2.1-py3.5.egg
  • Upload date:
  • Size: 169.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for noodles-0.2.1-py3.5.egg
Algorithm Hash digest
SHA256 90687c3d9115d11b1d0f0f87e997564420aa9c195ed50024734de541946cabba
MD5 275c6c523d084897c347a64ac71ed645
BLAKE2b-256 a30a86f5631d3b613a5aa0586a3e7bb9d194a9d11c00d7c44e4e810a9537898a

See more details on using hashes here.

File details

Details for the file noodles-0.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for noodles-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a5a7f76583c456114340a4093ff2947f8612e8e5483194671c306f7b47c8cc06
MD5 6eaa301f7b6cc43b8590568c73a3364d
BLAKE2b-256 94ca63ce923cad48a512f40fc7c4e80a22c6e1113b707dee4516681fdd6f2f9a

See more details on using hashes here.

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