{-| 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