Miscellaneous Functionality¶
Ganga provides quite a lot of additional functionality to help with job management. Below are the main ones:
Job Templates¶
If there is a version of a job that you use a lot, it can be beneficial to store this as a job template and then
you can easily retrieve and then only alter a few parameters of. To create a template you do exactly what you would
do for a normal job except you create a JobTemplate
object instead of a Job
object:
j = JobTemplate()
j.name = 'LsExeLocal'
j.application.exe = 'ls'
j.backend = Local()
To view the templates
available, just do:
templates
You can then create a job from this template by doing:
j = Job(templates[0], name = 'JobFromTemplate')
j.submit()
Job Trees¶
As you submit more jobs of different types, it can become quite difficult to keep track of them. Ganga supports a directory tree like structure for jobs so you can easily keep track of which jobs are associated with different calibrations, analyses, etc. Jobs are stored by id and can be thought of as soft links to the main Ganga Job Repository.
# show the current job tree (empty to start with)
jobtree
# make some dirs and subdirs
jobtree.mkdir('test_old')
jobtree.mkdir('test')
jobtree.mkdir('prod')
jobtree.mkdir('/test/jan')
jobtree.mkdir('/prod/full')
# have a look at the tree
jobtree.printtree()
# remove a dir
jobtree.rm('test_old')
# create some jobs and add them
jobtree.cd('/test/jan')
jobtree.add( Job() )
jobtree.cd('/prod/full')
jobtree.add(Job())
jobtree.add(Job())
# look at the tree again
jobtree.printtree()
# submit the some jobs
jobtree.getjobs().submit()