ecFlow's documentation is now on readthedocs!

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 74 Next »

There are several ways of defining the suite definition. See Definition creation strategies.
This tutorial will give examples for both the plain text and Python methods.
      

Text Method

Create a file called test.def , using your favourite text editor, with the following contents

test.def
# Definition of the suite test
suite test
   edit ECF_HOME "$HOME/course"  # replace '$HOME' with the path to your home directory
   task t1
endsuite

 

This file contains the suite definition of a suite called test.
This suite contains a single task called t1.
Let us go through the lines one by one:
  1. This line is a comment line. Any characters between the # and the end of line are ignored
  2. This line defines a new suite by the name of test.
  3. Here we define a ecFlow variable called ECF_HOME.
    This variable defines the directory where all the unix files that will be used by the suite test will reside.
    For the rest of the course all file names will be given relative to this directory.
    Be sure to replace $HOME with the path to your home directory
  4. This defines a task named t1
  5. The endsuite finishes the definition of the suite test
         

pyflow Method

pyflow is a pure python module on top of ecflow native API ;it is proposed to facilitate suites definitions. It is not yet provided in default standard location. It can be used, adding this one line to the definition script.

import pyflow
import sys; sys.path.append("/home/ma/emos/def/pyflow")

Enter the following python code into a file i.e. test.py :

#!/usr/bin/env python2.7
import os
from pyflow import (Suite, Family, Task, Variable)
   
print "Creating suite definition"   
with Suite("test" ) as suite: 
 ECF_HOME = os.path.join(os.getenv("HOME"),  "course") # python vriable
V
ariable("ECF_HOME", ECF_HOME) # suite variable T ask("t1")
print suite.ecflow_definition()

Then run as a python script:

Python Method

Enter the following python code into a file i.e. test.py :

#!/usr/bin/env python2.7
import os
import ecflow 
   
print "Creating suite definition"   
defs = ecflow.Defs()
suite = defs.add_suite("test")
suite.add_variable("ECF_HOME", os.path.join(os.getenv("HOME"),  "course"))
suite.add_task("t1")
print defs

 

Then run as a python script:

 

python test.py

You should see the text "Creating suite definition" and then your definition as your output.

 

All the following python examples should be run in the same way.

Emos Method

Using the python module ecf.py leads to similar syntax  :

#!/usr/bin/env python2.7
import os
import
sys
sys.path.append('/home/ma/emos/def/o/def')
from
ecf import * print "Creating suite definition" defs = Defs().add( Suite("test").add( Variable("ECF_HOME", os.path.join(os.getenv("HOME"),  "course")),
T
ask("t1"),
)
)
print defs

What to do

  1. Initially try both plain text and python examples. Later examples are only in python.
  2. Type in the suite definition file.
      
  • No labels