Makeflow | JX Tutorial | JX Quick Reference | JX Full Reference
Workflow{ # Required elements: "rules" : [ # Array of rules goes here. ], # Optional elements: "define" : { "temp" : 32.5, }, "environment" : { "PATH" : "/usr/local/bin:/bin", }, "categories" : { "simulation" : { "resources" : { ... }, "environment" : { ... }, "allocation" : "auto" | "max" | "error" } } } |
Rules{ # Required elements "command" : "simulation.py calib.dat >output.txt", "inputs" : [ "simulation.py", "calib.dat" ], "outputs" : [ "output.txt" ], # Optional elements "local_job" : true | false, "resources" : { "cores":4, "memory":8, "disk":16, "wall-time":3600 }, "environment" : { ... } "category" : "simulation", "allocation" : "first" | "max" | "error" } | ||||
Values"string" 42 3.14159 true | false [ 1, 2, 3 ] { "temp" : 32.5, "name" : "fred" }
| Operators
a["b"] func(x)
* % /
+ -
== != < <= > >=
not
and
or
expr for x in [1,2,3]
| Functionsformat( "str: %s int: %d float: %f", "hello", 42, 3.14159 ) join( array, delim ) range( start, stop, step ) ceil( value ) floor( value ) basename( path ) dirname( path ) escape( string )
| Examples# Generate an array of 100 files named "output.1.txt", etc... [ "output."+x+".txt" for x in range(1,100) ] # Generate one string containing those 100 file names. join( [ "output."+x+".txt" for x in range(1,100) ], " ") # Generate five jobs that produce output files alpha.txt, beta.txt, ... { "command" : "simulate.py > "name+".txt", "outputs" : [ name+".txt" ], "inputs" : "simulate.py", } for name in [ "alpha", "beta", "gamma", "delta", "epsilon" ] |