Numina Pipeline Concepts¶
Instrument¶
Observing Modes¶
Each Instrument has a list of predefined types of observations that can be carried out with it. Each Observing Mode is defined by:
The configuration of the Telescope
The configuration of the Instrument
The type of processing required by the images obtained durinf the observation
Some of the observing modes of a Instrument are Scientific, that is, modes devoted to obtain data to perform scientific analysis. Other modes are devoted to Calibration; these modes produce data required to correct the scientific images from the effects of the Instrument, the Telescope and the atmosphere.
Recipes¶
A recipe is a method to process the images obtained in a particular observing mode. Recipes in general require (as inputs) the list of raw images obtained during the observation. Recipes can require other inputs (calibrations), and those inputs can be the outputs of other recipes.
Images obtained in a particular mode are processed by one recipe.
digraph G { rankdir=LR; subgraph cluster_0 { style=filled; color=lightgrey; node [style=filled,color=white]; edge[style=invis] a0 -> a1 -> a2 -> a3; #label = "Observing\nModes"; } subgraph cluster_1 { node [style=filled]; edge[style=invis] b0 -> b1 -> b2 -> b3; #label = "Recipes"; } a0 -> b0 [rank=same]; a1 -> b1 [rank=same]; a2 -> b2 [rank=same]; a3 -> b3 [rank=same]; a0 [label="Mode 1"]; a1 [label="Mode 2"]; a2 [label="..."]; a3 [label="Mode N"]; b0 [label="Recipe 1"]; b1 [label="Recipe 2"]; b2 [label="..."]; b3 [label="Recipe N"]; }Pipelines¶
A pipeline represents a particular mapping between the observing modes and the reduction algorithms that process each mode. Each instrument has at least one pipeline called default. It may have other pipelines for specific purposes.
digraph G { subgraph cluster_0 { style=filled; color=lightgrey; node [style=filled,color=white]; edge[style=invis] a0 -> a1 -> a2 -> a3; label = "Observing\nModes"; } subgraph cluster_1 { node [style=filled]; edge[style=invis] b0 -> b1 -> b2 -> b3; label = "pipeline: \"default\""; color=blue } subgraph cluster_2 { node [style=filled]; edge[style=invis] b11 -> b12 -> b13 -> b14; label = "pipeline: \"test\""; color=blue } a0 -> b0; a1 -> b1; a2 -> b2; a3 -> b3; a0 -> b11; a1 -> b12; a2 -> b13; a3 -> b14; a0 [label="Mode 1"]; a1 [label="Mode 2"]; a2 [label="..."]; a3 [label="Mode N"]; b0 [label="Recipe 1"]; b1 [label="Recipe 2"]; b2 [label="..."]; b3 [label="Recipe N"]; b11 [label="Recipe 11"]; b12 [label="Recipe 12"]; b13 [label="..."]; b14 [label="Recipe M"]; }Products, Requirements and Data Types¶
A recipe announces its required inputs as Requirement
and its outputs as
Result
.
Both Results and Requirements have a name and a type. Types can be plain Python types or defined by the developer.
Format of the input files¶
The default format of the input and output files is YAML, a data serialization language.
Format of the Observation Result file¶
This file contains the result of an observation. It represents an
ObservationResult
object.
The contents of the object are serialized as a dictionary with the following keys:
- id: not required, integer, defaults to 1
Unique identifier of the observing block
- instrument: required, string
Name of the instrument, as it appears in the instrument file (see below)
- mode: required, string
Name of the observing mode
- children: not required, list of integers, defaults to empty list
Identifications of nested observing blocks
- frames: required, list of file names
List of raw images
id: 21
instrument: EMIR
mode: nb_image
children: []
frames:
- r0121.fits
- r0122.fits
- r0123.fits
- r0124.fits
- r0125.fits
- r0126.fits
- r0127.fits
- r0128.fits
- r0129.fits
- r0130.fits
- r0131.fits
- r0132.fits
Format of the requirement file (version 1)¶
version: 1
products:
EMIR:
- {id: 1, content: 'file1.fits', type: 'MasterFlat', tags: {'filter': 'J'}, ob: 200}
- {id: 4, content: 'file4.fits', type: 'MasterBias', tags: {'readmode': 'cds'}, ob: 400}
MEGARA:
- {id: 1, content: 'file1.fits', type: 'MasterFlat', tags: {'vph': 'LR1'}, ob: 1200}
- {id: 2, content: 'file2.yml', type: 'TraceMap', tags: {'vph': 'LR2', 'readmode': 'fast'}, ob: 1203}
requirements:
EMIR:
default:
TEST6:
pinhole_nominal_positions: [ [0, 1], [0 , 1]]
box_half_size: 5
TEST9:
median_filter_size: 5
MEGARA:
default:
mos_image: {}
Format of the requirement file¶
Warning
This section documents a deprecated format
Deprecated since version 0.14.0.
This file contains configuration parameters for the recipes that are not related to the particular instrument used.
The contents of the file are serialized as a dictionary with the following keys:
- requirements: required, dictionary
A dictionary of parameter names and values.
- logger: optional, dictionary
A dictionary used to configure the custom file logger
requirements:
master_bias: master_bias-1.fits
master_bpm: bpm.fits
master_dark: master_dark-1.fits
master_intensity_ff: master_flat.fits
nonlinearity: [1.0, 0.0]
subpixelization: 4
window:
- [800, 1500]
- [800, 1500]
logger:
logfile: processing.log
format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
enabled: true