SciFlow: Scientific workflow management system

[ control, library, mit ] [ Propose Tags ]

SciFlow is to help programmers design complex workflows with ease.

Feature includes:

  1. Use "labeled" arrows to connect individual steps and cache computational results.

  2. Use monad and template haskell to automate the process of building DAGs.

Here is a trivial example. Since we use template haskell, we need to divide this small program into two files.

-- File 1: MyModule.hs

module MyModule where

import Control.Arrow
import Scientific.Workflow

input :: Actor () Int
input = arr $ const 10

plus1 :: Actor Int Int
plus1 = arr (+1)

mul2 :: Actor Int Int
mul2 = arr (*2)

combine :: Actor (Int, Int) Int
combine = arr $ \(a,b) -> a + b

-- builder monad
builder :: Builder ()
builder = do
node "id000" "input" "this is input"
node "id001" "plus1" "add 1 to the input"
node "id002" "mul2" "double the input"
node "id003" "combine" "combine two input"

"id000" ~> "id001"
"id000" ~> "id002"
link2 ("id001", "id002") "id003"

-- File 2: main.hs

import Scientific.Workflow
import MyModule
import Data.Default

-- assemble workflow using template haskell
$(mkWorkflow "myWorkflow" builder)

main = do result <- runWorkflow myWorkflow def
          print result
Versions [faq] 0.1.0, 0.2.0, 0.3.0, 0.4.0, 0.4.1, 0.5.0, 0.5.1,, 0.6.0, 0.6.1, 0.6.2, 0.7.0
Dependencies base (>=4.0 && <5.0), bytestring, data-default-class, mtl, shelly, template-haskell, text, unordered-containers (>=0.2), yaml [details]
License MIT
Copyright (c) 2015 Kai Zhang
Author Kai Zhang
Revised Revision 2 made by kaizhang at 2015-04-16T18:30:44Z
Category Control
Source repo head: git clone
Uploaded by kaizhang at 2015-04-16T17:55:39Z
Distributions NixOS:0.7.0
Downloads 7042 total (9 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs available [build log]
Last success reported on 2015-04-18 [all 1 reports]




Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

For package maintainers and hackage trustees