Horizontal Navigation Bar |
---|
Button Group |
---|
Button Hyperlink |
---|
title | Previous |
---|
type | standard |
---|
url | https://softwareconfluence.ecmwf.int/wiki/display/ECFLOW/Getting+Started |
---|
|
Button Hyperlink |
---|
title | Up |
---|
type | standard |
---|
url | https://softwareconfluence.ecmwf.int/wiki/display/ECFLOW/Tutorial |
---|
|
Button Hyperlink |
---|
title | Next |
---|
type | standard |
---|
url | https://softwareconfluence.ecmwf.int/wiki/display/ECFLOW/Understanding+Includes |
---|
|
|
|
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
The python method is recommended unless you are planning a simple suite.
Create a file called test.def , using your favourite text editor, with the following contents
Code Block |
---|
title | $HOME/course/test.def |
---|
linenumbers | true |
---|
|
# 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 suite contains a single
task called
t1.
Let us go through the lines one by one:
- This line is a comment line. Any characters between the # and the end of line are ignored
- This line defines a new suite by the name of test.
- 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 - This defines a task named t1
- The endsuite finishes the definition of the suite test
Python Method
Enter the following python code into a file i.e. test.py :
Code Block |
---|
language | py |
---|
title | $HOME/course/test.py |
---|
|
import os
from ecflow import Defs,Suite,Task,Edit
print("Creating suite definition")
home = os.path.join(os.getenv("HOME"), "course")
defs = Defs(
Suite('test',
Edit(ECF_HOME=home),
Task('t1')))
print(defs) |
Then run as a python script: There are a few ways to run different python versions.
Code Block |
---|
language | bash |
---|
title | Run as python2 |
---|
|
# python 2 is the default
module load python
python test.py |
Code Block |
---|
python3 test.py |
Alternatively
Code Block |
---|
language | bash |
---|
title | Run as python3 |
---|
|
module load python3
python3 test.py |
Depending on which version you want to run, add the following as the first line in
test.pypy
#!/usr/bin/env python2.7
.... |
Code Block |
---|
language | py |
---|
title | test.py | |
#!/usr/bin/env python3
... |
Code Block |
---|
chmod +x test.py
./test.py # this uses shebang, see below, searches for specified python variant in $PATH |
You should see the text "Creating suite definition" and then your definition as your output.
...
- Initially try both plain text and python examples. Later examples are only in python.
- Type in the suite definition file.
Choose python invocation. i.e.
python test.py | python3 python3 test.py | ./test.py.
Horizontal Navigation Bar |
---|
Button Group |
---|
Button Hyperlink |
---|
title | Previous |
---|
type | standard |
---|
url | https://softwareconfluence.ecmwf.int/wiki/display/ECFLOW/Getting+Started |
---|
|
Button Hyperlink |
---|
title | Up |
---|
type | standard |
---|
url | https://softwareconfluence.ecmwf.int/wiki/display/ECFLOW/Tutorial |
---|
|
Button Hyperlink |
---|
title | Next |
---|
type | standard |
---|
url | https://softwareconfluence.ecmwf.int/wiki/display/ECFLOW/Understanding+Includes |
---|
|
|
|
...