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.5.3.1, 0.6.0, 0.6.1, 0.6.2, 0.7.0
Dependencies base (>=4.0 && <5.0), bytestring, data-default-class, lens (>=4.0), mtl, optparse-applicative, shelly, split, template-haskell, text, th-lift, unordered-containers (>=0.2), yaml [details]
License MIT
Copyright (c) 2015 Kai Zhang
Author Kai Zhang
Maintainer kai@kzhang.org
Category Control
Source repo head: git clone https://github.com/kaizhang/SciFlow.git
Uploaded by kaizhang at 2015-12-08T21:49:05Z
Distributions NixOS:0.7.0
Downloads 7045 total (10 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs not available [build log]
Last success reported on 2015-12-08 [all 3 reports]

Modules

  • Scientific
    • Scientific.Workflow
      • Scientific.Workflow.Builder
        • Scientific.Workflow.Builder.TH
      • Scientific.Workflow.Main
      • Scientific.Workflow.Serialization
        • Scientific.Workflow.Serialization.Show
        • Scientific.Workflow.Serialization.Yaml
      • Scientific.Workflow.Types
      • Scientific.Workflow.Utils

Flags

NameDescriptionDefaultType
debug

Enable debug support

DisabledAutomatic

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainer's Corner

For package maintainers and hackage trustees