Source code for generate_array_config

#!/usr/bin/python3
"""
    Generate sim_telarray configuration files for a given array.

    The applications generates the sim_telarray configuration files for a given array, site,
    and model_version using the model parameters stored in the database.

    To change model parameters, clone the model parameters repository and apply the changes.
    Forward the path to the repository to the application using the ``--db_simulation_model_url``
    argument.

    Command line arguments
    ----------------------
    site : str
        Site name (e.g., North, South).
    array_layout_name : str
        Name of the layout array (e.g., test_layout, alpha, 4mst, etc.).
    array_element_list : list
        List of array elements (e.g., telescopes) to plot (e.g., ``LSTN-01 LSTN-02 MSTN``).

    Example
    -------
    North - 5.0.0:

    .. code-block:: console

        simtools-generate-array-config --site North --array_layout_name alpha --model_version 5.0.0

    The output is saved in simtools-output/test/model.
"""

import logging
from pathlib import Path

import simtools.utils.general as gen
from simtools.configuration import configurator
from simtools.model.array_model import ArrayModel


def _parse(label, description):
    """
    Parse command line configuration.

    Parameters
    ----------
    label : str
        Label describing the application.
    description : str
        Description of the application.

    Returns
    -------
    CommandLineParser
        Command line parser object.
    """
    config = configurator.Configurator(label=label, description=description)
    return config.initialize(db_config=True, simulation_model=["site", "layout"])


[docs] def main(): """Generate sim_telarray configuration files for a given array.""" args_dict, db_config = _parse( label=Path(__file__).stem, description=("Generate sim_telarray configuration files for a given array."), ) logger = logging.getLogger("simtools") logger.setLevel(gen.get_log_level_from_user(args_dict["log_level"])) array_model = ArrayModel( label=args_dict["label"], model_version=args_dict["model_version"], mongo_db_config=db_config, site=args_dict.get("site"), layout_name=args_dict.get("array_layout_name"), array_elements=args_dict.get("array_elements"), ) array_model.print_telescope_list() array_model.export_all_simtel_config_files()
if __name__ == "__main__": main()