The Glue reads in the parameter files, builds needed C modules and runs modules in the right order. It is very flexible because many requirements for the glue may be changing in the future.
The glue.ini file contains information about each module, which modules to run and what to do. So let's have a look at a module section:
[Survey_Strategy] name = Survey Strategy directory = Survey_Strategy/survey_strategy_0 param = param_survey_strategy.ini command = ipython survey_strategy_random.py profile = true [Signal_To_Noise] name = Signal_To_Noise directory = Signal_to_noise/ston_coles_master/ston_coles param = param.ini command = ./simgary8B
This module has an identifier, a name, a directory, a param file, a command and a make command. Only the name, the directory and the commands are mandatory. The information is used as follows:
- Identifier ([Survey_Strategy]): This is a unique Identifier for each module. It's used in the run section described below.
- Name (name = Survey Strategy): This is the name displayed in the output of the glue.
- directory (Survey_Strategy/survey_strategy_0): The directory of the modules that contains the module data
- param (param = param.ini): The param is optional, it's a param.ini file that is fed into the data bank before the pipeline runs
- command (command = ipython survey_strategy_random.py): The command to run the module
- make (not present here, e.g. "make = make"): This is optional, it compiles the module before the pipeline runs
- profile (profile = true): lets this module run in profiling mode. It will create a profile.Identifier.log which can be read by kcachegrind
The run section determines which modules are to be run by the pipeline. Only the param files of the modules that are included in this list are fed into the data bank. There can be an infinite number of modules in the list, the form is moduleN = Module_Identifier
[run] module1 = Convert module2 = Targeting module3 = Survey_Strategy module4 = Fiber_Allocation module5 = Throughput module6 = Signal_To_Noise
The same as the run section for modules that need to be compiled.
[make] module1 = Signal_To_Noise
In the data_bank section are the files defined that are merged into the data bank before the pipeline runs. The files with a higher number overwrite the files with a lower number. All the files are supposed to be in the data_dir from the options section below.
[data_bank] datafile1 = parameters.h5 datafile2 = catalog.h5
The base dir is the directory where the modules are located. If a relative path is used, it is relative to the directory of the glue. Make and run can be 0 or 1. It determines if the make or the run commands are executed or not.
The data bank is the data bank, located in the data_dir. The data dir is where the data is.
[options] base_dir = ../ make = 0 run = 1 data_dir = ../../data/ data_bank = data_bank.h5