Code overview#
The code is organised in a modular way, with different packages and projects that are connected together to form the pipeline.
The ACM pipeline is composed of four main components:
The
sunbirdpackageThe
acmpackageThe bridges between the packages and the projects
The projects
The sunbird package#
The sunbird package contains the more abstract components of the pipeline, such as the inference, the emulator, etc.
The acm package#
The acm package contains the code that is called in the projects, and that is used to run the pipeline:
See also
The halo population is handled by acm.hod classes.
The statistics are computed trough the acm.estimators module.
The emulator, from sunbird, is optimized with optuna trough the acm.model module.
Note
The data storage is handled by the acm.data module trough the acm.observables classes if the conventions are followed, otherwise the methods to read the data need to be provided.
The bridges#
Bridges are code snippets and components that are defined in the acm package, but have to be redefined or extended in the projects.
Examples of bridges are the acm.observables classes that have to be extended in the projects to define the statistics. In those classes, the user can define (or override) the data reading functions (see acm.data.io_tools), the data paths (see data), or the project coordinates.
See also
More information on the bridges can be found in the Bridges section.
The projects#
Projects are where the pipeline is actually run. They contain the scripts, the computations, etc. Each project has its own structure, but some tools (the bridges) and some guidelines are provided to help the user to build a project that is compatible with other projects in the pipeline. This allows for easy sharing of the data and models between users, and for easy testing of the pipeline. However, the user is free to design their projects as they see fit, as the code allows for an easy modularity and adaptability.
See also
Guidelines for project organisation can be found in the Projects section.
Project dependant
These boxes are here to note the things that depend on the project and need to be adapted, especially if guidelines are followed.