Improve usability and consistency

This is a wrapper issue for a several connected issues that would improve usability.

Solve issues (probably in that order):

  • #121 (closed) create a helper class Dynamic.
  • #149 (closed) Split class Outputs and move to input_outputs
  • #118 (closed) Simplify YAML configuration files.
  • #60 (closed) reading YAML returns a class Configuration
  • #61 (closed) Each mode has their own function for start (single_mode(), parametric_mode() etc.).
  • Update documentation
  • Add tests
  • Update examples

Example for calibration mode for this refactoring:

cfg = load('calibration.yaml')
 
# cfg is now an instance of a general loaded Configuration class not a dict
# YAML is simplified as in issue #118, this means:
# cfg has properties calibration, ccd_detector, pipeline instead of keys simulation,...

calibration = cfg.calibration

# calibration is instance of Calibration
# It also contains the class Outputs

#RELEVANT FOR USERS:
cfg = load('calibration.yaml')
calibration = cfg.calibration

detector = cfg.detector
pipeline = cfg.pipeline
processor = Processor(detector, pipeline)

calibration_mode(processor, calibration)

Same for single, parametric, dynamic

Edited by Matej Arko