SciFlow-0.6.2: src/Scientific/Workflow.hs
{-|
Module : Scientific.Workflow
Description : Building type safe scientific workflows
Copyright : (c) 2015-2017 Kai Zhang
License : MIT
Maintainer : kai@kzhang.org
Stability : experimental
Portability : POSIX
SciFlow is a DSL for building scientific workflows. Workflows built with SciFlow
can be run either on desktop computers or in grid computing environments that
support DRMAA.
Features:
1. Easy to use and safe: Provide a simple and flexible way to design type safe
computational pipelines in Haskell.
2. Automatic Checkpointing: The states of intermediate steps are automatically
logged, allowing easy restart upon failures.
3. Parallelism and grid computing support.
Example:
> import Control.Lens ((.=))
> import Scientific.Workflow
>
> f :: Int -> Int
> f = (+1)
>
> defaultMain $ do
> nodeS "step0" [| return . const [1..10] :: () -> WorkflowConfig () [Int] |] $ return ()
> nodeP' 2 "step1" 'f $ note .= "run in parallel with batch size 2"
> nodeP' 4 "step2" 'f $ note .= "run in parallel with batch size 4"
> node' "step3" [| \(x, y) -> x ++ y |] $ return ()
>
> ["step0"] ~> "step1"
> ["step0"] ~> "step2"
> ["step1", "step2"] ~> "step3"
-}
module Scientific.Workflow
( defaultMain
, mainWith
, defaultMainOpts
, MainOpts(..)
, Builder
, namespace
, node
, node'
, nodeS
, nodeP
, nodeP'
, nodePS
, nodeSharedP
, nodeSharedP'
, nodeSharedPS
, link
, (~>)
, path
, label
, note
, submitToRemote
, remoteParam
, ContextData(..)
, WorkflowConfig
, Workflow(..)
) where
import Scientific.Workflow.Internal.Builder
import Scientific.Workflow.Internal.Builder.Types
import Scientific.Workflow.Main
import Scientific.Workflow.Types