outputbundle JSON files ======================= inputs.json ----------- This file contains a dictionary mapping input names (e.g. ``t2m``, ``u``, ``v``) to usage statistics for each input:: { "t2m": { "used_by": ["rh2m"] "computation": [ [1000000000, "processing step description"], ] } } .. note:: This may be changed to contain a single ``inputs`` entry containing the actual dictionary Usage statistics are a dictionary containing: * ``used_by``: list of recipe names that used this input to generate products * ``computation``: list of pairs ``(int, str)`` with each computation step and the time in nanoseconds that it took to compute log.json -------- This file contains the processing log:: { "entries": [ { "ts": 1703171046.9032948, "level": 20, "msg": "emro.shp resolved as /media/arkimaps/recipes/static/emro.shp", "name": "postprocess" }, { "ts": 1703171047.2248235, "level": 10, "msg": "flavour emro_web: recipe cp12h uses inputs: {'cpdec12h'}", "name": "arkimaps.flavours" }, … } It contains a single key ``entry`` which maps to a list of log entries. Each log entry is a dictionary with 4 keys: * ``ts: float``: timestamp in seconds * ``level: int``: log level * ``msg: str``: log message * ``name: str``: logger name products.json ------------- This file contains metadata for each product in the output bundle. At the top level it contains 3 keys: * ``flavour``: details about the flavour used in product generation * ``recipes``: details about all recipes that generated products * ``products``: details about all products generated flavour ~~~~~~~ Information about the flavour used to generate products. It contains: * ``name``: flavour name * ``defined_in``: filename of the ``.yaml`` file that defines the flavour Example:: "flavour": { "name": "emro_tiles", "defined_in": "flavours/tiles.yaml", }, recipes ~~~~~~~ Dictionary of information indexed by recipe name: * ``reftimes``: dictionary, indexed by reference time, with statistics for products produced by a recipe at a given reference time. It contains: * ``inputs``: names of inputs used * ``steps``: dictionary mapping each step name to the number of products produced for that step * ``render_stats``: dictionary with rendering statistics. At the moment it only contains: * ``time_ts``: time spent rendering all the steps for this reference time * ``legend_info``: ``add_contour`` step parameters used to generate products for this recipe. This information can be used to render a legend for all the products generated by this recipe Example:: "rh2m": { "reftimes": { "2023-12-19 14:00:00": { "inputs": ["rh2m"], "steps": {"0h": 1}, "render_stats": { "time_ns": 911183162 } }, "2023-12-19 00:00:00": { "inputs": ["rh2m"], "steps": {"0h": 1}, "render_stats": { "time_ns": 1093373956 } }, … }, "legend_info": { "contour_shade": true, "contour_shade_method": "area_fill", … } } products ~~~~~~~~ Dictionary of product information, indexed by the path of each product in the output bundle: * ``recipe``: recipe name * ``reftime``: product reference time * ``step``: product step * ``georef``: (optional) dictionary with georeferencing information for this product: * ``projection``: currently, always ``"EPSG"`` * ``epsg``: EPSG number for the projection used * ``bbox``: 4-tuple of floats defining a bounding box, with minimum longitude, minimum latitude and maximum longitude maximum latitude. Example:: "2023-12-19T14:00:00/rh2m_emro_web/rh2m+000.png": { "recipe": "rh2m", "reftime": "2023-12-19 14:00:00", "step": "0h", "georef": { "projection": "EPSG", "epsg": 3857, "bbox": [ 9.19514626509458, 43.714193665380236, 12.828319549646094, 45.14257501046363 ] } }, "2023-12-19T00:00:00/rh2m_emro_web/rh2m+000.png": { "recipe": "rh2m", "reftime": "2023-12-19 00:00:00", "step": "0h", "georef": { "projection": "EPSG", "epsg": 3857, "bbox": [ 9.19514626509458, 43.714193665380236, 12.828319549646094, 45.14257501046363 ] } },