{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/GRID4EARTH/healpix-convert/main/convert-settings.schema.json", "$defs": { "BilinearResamplerSettings": { "description": "Settings for resampling data onto HEALPix using bilinear (k=4) interpolation.", "properties": { "init_params": { "additionalProperties": true, "description": "Parameters passed to the resampler constructor.", "title": "Init Params", "type": "object" }, "resample_params": { "additionalProperties": { "anyOf": [ { "additionalProperties": true, "type": "object" }, {} ] }, "description": "Parameters passed to the resampler's `resample()` method.\n\nParameter values may be given either like:\n- a common value used for all arrays (data variables) in the group\n- a value for each array in the group (dictionary where keys are\n variable names)", "title": "Resample Params", "type": "object" }, "name": { "const": "bilinear", "default": "bilinear", "title": "Name", "type": "string" } }, "title": "BilinearResamplerSettings", "type": "object" }, "CFConfiguration": { "additionalProperties": false, "description": "Configuration of the CF conventions.", "properties": { "healpix_grid_mapping": { "default": true, "description": "If True, emit the CF HEALPix grid mapping (CF 1.13+) in each HEALPix group.", "title": "Healpix Grid Mapping", "type": "boolean" } }, "title": "CFConfiguration", "type": "object" }, "CFConventionSelector": { "additionalProperties": false, "description": "Select the CF conventions.\n\nSee https://cfconventions.org", "properties": { "name": { "const": "cf", "default": "cf", "title": "Name", "type": "string" }, "version": { "default": "1.13", "description": "Version of the CF conventions followed by the output dataset.\n\nMust be :py:obj:`CF_MIN_VERSION` or newer (the default).", "title": "Version", "type": "string" }, "configuration": { "$ref": "#/$defs/CFConfiguration" } }, "title": "CFConventionSelector", "type": "object" }, "CellPointResamplerSettings": { "description": "Settings for resampling data as HEALPix \"cell-points\" (i.e., cells with maximum\nrefinement level 29).", "properties": { "init_params": { "additionalProperties": true, "description": "Parameters passed to the resampler constructor.", "title": "Init Params", "type": "object" }, "resample_params": { "additionalProperties": { "anyOf": [ { "additionalProperties": true, "type": "object" }, {} ] }, "description": "Parameters passed to the resampler's `resample()` method.\n\nParameter values may be given either like:\n- a common value used for all arrays (data variables) in the group\n- a value for each array in the group (dictionary where keys are\n variable names)", "title": "Resample Params", "type": "object" }, "name": { "const": "cell-point", "default": "cell-point", "title": "Name", "type": "string" } }, "title": "CellPointResamplerSettings", "type": "object" }, "CodecSettings": { "description": "Settings for a single Zarr codec.\n\nThis class follows Zarr's codec (extension) metadata model.", "properties": { "name": { "title": "Name", "type": "string" }, "configuration": { "additionalProperties": true, "title": "Configuration", "type": "object" } }, "required": [ "name", "configuration" ], "title": "CodecSettings", "type": "object" }, "ConsolidateMetadataSettings": { "additionalProperties": false, "description": "Settings for the consolidated Zarr metadata written in the output dataset.\n\nConsolidating the metadata of a Zarr group copies the metadata of all its\ndescendants into its own metadata document, so that a reader opens the whole\nhierarchy below it with a single read instead of one read per node. It is\nwritten by the last stage of the conversion (see\n:py:func:`~healpix_convert.finalize_healpix_dataset`), since such a copy is\nstale as soon as a node is written next to it.\n\nThe settings below select the groups it is written for: the root group (the\nwhole output dataset) and, by default, every group a reader is expected to\nopen on its own, i.e., a group converted to HEALPix, a multiscale group and\na derived level group of a pyramid. The consolidated metadata of the root\ngroup may describe much more than what such a reader needs.", "properties": { "root_group": { "default": true, "description": "If True (the default), consolidate all the metadata of the output\ndataset in its root group.", "title": "Root Group", "type": "boolean" }, "healpix_groups": { "default": true, "description": "If True (the default), consolidate the metadata of each group converted\nto HEALPix.", "title": "Healpix Groups", "type": "boolean" }, "multiscale_groups": { "default": true, "description": "If True (the default), consolidate the metadata of each multiscale\ngroup, i.e., of all the levels it holds.", "title": "Multiscale Groups", "type": "boolean" }, "derived_level_groups": { "default": true, "description": "If True (the default), consolidate the metadata of each group holding a\nderived level of a pyramid.", "title": "Derived Level Groups", "type": "boolean" }, "groups": { "description": "Paths of other groups of the output dataset to consolidate the metadata\nof (none by default).\n\nThe paths are those of the output dataset, not of the input dataset(s); the\npath of the root group is ``\"/\"``. A group that the output dataset does not\nhold is reported when the staging cache is created and then skipped.", "items": { "type": "string" }, "title": "Groups", "type": "array" } }, "title": "ConsolidateMetadataSettings", "type": "object" }, "ConventionConfiguration": { "additionalProperties": false, "description": "Base class for the configuration (options) of a convention.\n\nConventions that define no option are configured by this class, which\naccepts none.", "properties": {}, "title": "ConventionConfiguration", "type": "object" }, "DGGSConventionSelector": { "additionalProperties": false, "description": "Select the DGGS Zarr convention.\n\nSee https://github.com/zarr-conventions/dggs", "properties": { "name": { "const": "dggs", "default": "dggs", "title": "Name", "type": "string" }, "version": { "description": "Version of the convention followed by the output dataset.", "title": "Version", "type": "string" }, "configuration": { "$ref": "#/$defs/ConventionConfiguration", "description": "Options of the convention." } }, "title": "DGGSConventionSelector", "type": "object" }, "ExtraDimensionSettings": { "description": "How the input datasets of a group are aligned along one of their\nnon-spatial dimensions, e.g. the ``detector`` dimension of the Sentinel-2\n``conditions/geometry`` group, whose labels differ from one tile to the\nnext.\n\nThe dimension needs a coordinate variable in every input dataset: its\nlabels are what the inputs are aligned on.", "properties": { "join": { "description": "How the labels of the input datasets are combined:\n\n- ``\"outer\"``: the union of their labels;\n- ``\"inner\"``: the labels they all have;\n- ``\"exact\"``: they must all have the same labels (error otherwise);\n- ``\"reindex\"``: the fixed :py:attr:`labels`, the same for every\n conversion; an input label not in that list is an error.\n\nWhere an input has no value for a label of the output, its values are\nmissing (NaN), which turns an integer variable into a floating point one.", "enum": [ "outer", "inner", "exact", "reindex" ], "title": "Join", "type": "string" }, "labels": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "items": { "type": "integer" }, "type": "array" }, { "items": { "type": "number" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "Labels of the dimension in the output (``join=\"reindex\"`` only), e.g. the\ndetectors of an instrument.", "title": "Labels" } }, "required": [ "join" ], "title": "ExtraDimensionSettings", "type": "object" }, "Healpix": { "description": "HEALPix grid.\n\nCompliant with the DGGS Zarr convention.", "properties": { "name": { "const": "healpix", "default": "healpix", "title": "Name", "type": "string" }, "refinement_level": { "anyOf": [ { "maximum": 29, "minimum": 0, "type": "integer" }, { "type": "null" } ], "description": "HEALPix refinement level (must be defined for \"nested\" and \"ring\" indexing schemes).", "title": "Refinement Level" }, "indexing_scheme": { "default": "nested", "description": "HEALPix indexing scheme.", "enum": [ "nested", "ring", "zuniq" ], "title": "Indexing Scheme", "type": "string" }, "ellipsoid": { "$ref": "#/$defs/WGS84Ellipsoid", "description": "Reference system of the DGGS (if not given, a sphere is assumed)." }, "spatial_dimension": { "default": "cells", "description": "Name of the spatial dimension", "title": "Spatial Dimension", "type": "string" }, "coordinate": { "default": "cell_ids", "description": "Points to the array containing the cell ids (optional for homogeneous full-earth coverage).", "title": "Coordinate", "type": "string" }, "compression": { "default": "none", "description": "Cell id compression method.", "enum": [ "none", "compacted", "ranges" ], "title": "Compression", "type": "string" } }, "required": [ "refinement_level" ], "title": "Healpix", "type": "object" }, "HealpixDenseChunkSettings": { "description": "Chunk output data along the HEALPix cell dimension according to\nHEALPix cells given at a parent, \"coarse\" refinement level (dense version).\n\nEach of those \"chunk\" cells are densely populated with adjacent children\nHEALPix cells all at the same \"fine\" refinement level.\n\nChunk size is thus fixed and is given by the following formula:\n\n.. math:: 4^{(\\Delta - \\delta)}\n\nwhere :math:`\\Delta` is the parent level (output chunks) and :math:`\\delta` is\nthe child level (output data values).\n\nThis chunking strategy works only with the \"nested\" HEALPIX cell indexing scheme.", "properties": { "method": { "const": "healpix_cell_dense", "default": "healpix_cell_dense", "title": "Method", "type": "string" }, "healpix": { "$ref": "#/$defs/Healpix" }, "chunk_buffer_width": { "default": 60.0, "title": "Chunk Buffer Width", "type": "number" } }, "required": [ "healpix" ], "title": "HealpixDenseChunkSettings", "type": "object" }, "HealpixGroupSettings": { "description": "Settings for converting a single Zarr group onto HEALPix.", "properties": { "healpix": { "$ref": "#/$defs/Healpix", "description": "Output HEALPix grid settings." }, "chunk": { "description": "Settings for chunking data along the HEALPix cell dimension.", "discriminator": { "mapping": { "healpix_cell_dense": "#/$defs/HealpixDenseChunkSettings", "healpix_cell_sparse": "#/$defs/HealpixSparseChunkSettings", "no_chunk": "#/$defs/NoChunkSettings" }, "propertyName": "method" }, "oneOf": [ { "$ref": "#/$defs/NoChunkSettings" }, { "$ref": "#/$defs/HealpixDenseChunkSettings" }, { "$ref": "#/$defs/HealpixSparseChunkSettings" } ], "title": "Chunk" }, "resampler": { "description": "Resampling method name and settings.", "discriminator": { "mapping": { "bilinear": "#/$defs/BilinearResamplerSettings", "cell-point": "#/$defs/CellPointResamplerSettings", "k-nearest": "#/$defs/KNearestNeighborsResamplerSettings", "nearest": "#/$defs/NearestResamplerSettings", "psf": "#/$defs/PSFResamplerSettings" }, "propertyName": "name" }, "oneOf": [ { "$ref": "#/$defs/KNearestNeighborsResamplerSettings" }, { "$ref": "#/$defs/NearestResamplerSettings" }, { "$ref": "#/$defs/BilinearResamplerSettings" }, { "$ref": "#/$defs/PSFResamplerSettings" }, { "$ref": "#/$defs/CellPointResamplerSettings" } ], "title": "Resampler" }, "metadata": { "$ref": "#/$defs/InputMetadataSettings", "description": "Settings for the metadata read from the input dataset(s) and propagated\nto the output group." }, "healpix_coordinate_codecs": { "anyOf": [ { "items": { "$ref": "#/$defs/CodecSettings" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "Zarr codecs of the HEALPix cell ids coordinate (zarr's defaults if None).\n\nThe cell ids of a chunk are sorted, and one contiguous range with\n``healpix_cell_dense`` chunks, which zstd alone keeps at about one byte per\ncell. A delta filter before the compressor brings them to almost nothing,\ne.g. ``[{\"name\": \"numcodecs.delta\", \"configuration\": {\"dtype\": \" settings), when the group is converted from several\ninput datasets.\n\nThe input datasets must otherwise agree on every non-spatial dimension\n(same size and, where there is a coordinate, same labels): a dimension\nalong which they differ and that has no entry here is an error.", "title": "Extra Dimensions", "type": "object" }, "codecs": { "anyOf": [ { "items": { "$ref": "#/$defs/CodecSettings" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "Zarr codecs of the group's resampled data variables (other arrays use\nzarr's defaults).\n\nEach codec is looked up by name in zarr's codec registry, so the package\nthat provides it must be installed where the settings are created, e.g.\n``healpix-compress`` for ``hcc-sentinel2-pyramid``.", "title": "Codecs" }, "output_dtype": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Data type of the group's resampled data variables, e.g.\n``\"float16\"`` or ``\"float32\"``.\n\nIf None, the variables are written as ``float64`` with the ``\"bilinear\"``\nand ``\"psf\"`` resamplers, and with the data type of the input variables\nwith the other resamplers (note: data type is coerced after resampling,\njust before writing data). The derived levels of a pyramid have the data\ntype of the converted level they are aggregated from.", "title": "Output Dtype" } }, "required": [ "healpix", "chunk", "resampler" ], "title": "HealpixGroupSettings", "type": "object" }, "HealpixSparseChunkSettings": { "description": "Chunk output data along the HEALPix cell dimension according to\nHEALPix cells given at a parent, \"coarse\" refinement level (sparse version).\n\nEach of those \"chunk\" cells are populated with sparsely distributed children\nHEALPix cells given at a \"fine\" refinement level.\n\nChunk size is user defined. There's no strict constraint on the minimum\nsize, which should be large enough such that a parent \"chunk\" cell can\ncontain all output data values (children cells). If all children cells are\nat the same refinement level, the maximum size is given by the following\nformula:\n\n.. math:: 4^{(\\Delta - \\delta)}\n\nwhere :math:`\\Delta` is the parent level (output chunks) and :math:`\\delta` is\nthe child level (output data values).\n\nThis chunking strategy works only with the \"nested\" HEALPIX cell indexing scheme.", "properties": { "method": { "const": "healpix_cell_sparse", "default": "healpix_cell_sparse", "title": "Method", "type": "string" }, "healpix": { "$ref": "#/$defs/Healpix" }, "chunk_size": { "title": "Chunk Size", "type": "integer" } }, "required": [ "healpix", "chunk_size" ], "title": "HealpixSparseChunkSettings", "type": "object" }, "InputMetadataSettings": { "additionalProperties": false, "description": "Settings for the metadata read from the input dataset(s).", "properties": { "exclude_attrs": { "description": "Names of the input dataset attributes that must not be propagated to the output.\n\nEach item is either the exact name of an attribute or a regular expression\nmatched against the whole attribute name (e.g., ``\"history.*\"`` excludes both\n``\"history\"`` and ``\"history_of_appended_files\"``).", "items": { "type": "string" }, "title": "Exclude Attrs", "type": "array" }, "override_attrs": { "additionalProperties": { "additionalProperties": true, "type": "object" }, "description": "Attributes set on the output variables, overriding the input ones.\n\nEach key is either the exact name of a variable or a regular expression\nmatched against the whole name (e.g., ``\"b0[1-9]|b8a\"``), and each value the\nattributes set on the matching variables.\n\nAn override wins over ``exclude_attrs``, and the last of several matching\npatterns wins. The attributes written by healpix-convert itself\n(``grid_mapping``, ``coordinates``) keep precedence.", "title": "Override Attrs", "type": "object" } }, "title": "InputMetadataSettings", "type": "object" }, "KNearestNeighborsResamplerSettings": { "description": "Settings for resampling data onto HEALPix using k-nearest neighbor interpolation.", "properties": { "init_params": { "additionalProperties": true, "description": "Parameters passed to the resampler constructor.", "title": "Init Params", "type": "object" }, "resample_params": { "additionalProperties": { "anyOf": [ { "additionalProperties": true, "type": "object" }, {} ] }, "description": "Parameters passed to the resampler's `resample()` method.\n\nParameter values may be given either like:\n- a common value used for all arrays (data variables) in the group\n- a value for each array in the group (dictionary where keys are\n variable names)", "title": "Resample Params", "type": "object" }, "name": { "const": "k-nearest", "default": "k-nearest", "title": "Name", "type": "string" } }, "title": "KNearestNeighborsResamplerSettings", "type": "object" }, "MetadataSettings": { "additionalProperties": false, "description": "Settings for the metadata written in the output Zarr dataset.", "properties": { "zarr_conventions": { "description": "Conventions followed by the output Zarr dataset.\n\nEach item is either a convention name (e.g., ``\"dggs\"``) or a mapping with\na ``name`` and, optionally, a ``version`` and a ``configuration``\n(see :py:obj:`~healpix_convert.settings.conventions.ConventionSelector`).", "items": { "discriminator": { "mapping": { "cf": "#/$defs/CFConventionSelector", "dggs": "#/$defs/DGGSConventionSelector", "multiscales": "#/$defs/MultiscalesConventionSelector" }, "propertyName": "name" }, "oneOf": [ { "$ref": "#/$defs/DGGSConventionSelector" }, { "$ref": "#/$defs/MultiscalesConventionSelector" }, { "$ref": "#/$defs/CFConventionSelector" } ] }, "title": "Zarr Conventions", "type": "array" }, "stac": { "$ref": "#/$defs/STACSettings", "description": "Settings for the STAC metadata written in the root group of the output\ndataset (see :py:class:`~healpix_convert.settings.stac.STACSettings`)." }, "consolidate": { "$ref": "#/$defs/ConsolidateMetadataSettings", "description": "Settings for the consolidated Zarr metadata of the output dataset, i.e.,\nwhich of its groups it is written for (see\n:py:class:`ConsolidateMetadataSettings`)." } }, "title": "MetadataSettings", "type": "object" }, "MultiscaleSettings": { "description": "Settings for a multiscale Zarr groups.", "properties": { "groups": { "description": "List of all multiscale groups in input dataset(s).\n\nEach Zarr group must contain children groups with defined\nHEALPix conversion settings.\n\nThe metadata that will be added to the corresponding ouput group\nis compliant with the \"multiscales\" Zarr convention.", "items": { "format": "path", "type": "string" }, "title": "Groups", "type": "array" }, "add_healpix_positioning": { "default": false, "description": "If True, add HEALPix grid settings as absolute positioning\ninformation in each multiscale layout entry.\n\nFalse by default: it repeats the whole grid of a level in every entry of\nthat level, which one entry per array (see :py:attr:`asset_type`) makes\nparticularly verbose. The HEALPix grid info of a level can be read from the\nattributes of its group (easily accessible if metadata is consolidated for\nthe multiscale group), and the refinement level corresponds to the name of\na level group.", "title": "Add Healpix Positioning", "type": "boolean" }, "asset_type": { "default": "auto", "description": "What a layout item of the multiscales metadata refers to:\n\n- \"group\": one item per level, its asset the path of the level group. A\n pyramid whose derived levels cannot be described that way is rejected,\n i.e. one whose derived level holds variables aggregated from different\n native levels.\n- \"array\": one item per array of a level, its asset the path of the array\n (e.g. \"7/band1\"), which describes what every array is aggregated\n from.\n- \"auto\" (default): \"group\" when every level can be described by a single\n item, \"array\" otherwise.", "enum": [ "group", "array", "auto" ], "title": "Asset Type", "type": "string" }, "pyramid_groups": { "additionalProperties": { "$ref": "#/$defs/PyramidSettings" }, "description": "Settings of the pyramids derived for (some of) the multiscale groups.\n\nEach key must also be present in :py:attr:`groups`. The pyramids are\ngenerated by :py:func:`~healpix_convert.generate_pyramids`, after data\nconversion.", "propertyNames": { "format": "path" }, "title": "Pyramid Groups", "type": "object" } }, "title": "MultiscaleSettings", "type": "object" }, "MultiscalesConventionSelector": { "additionalProperties": false, "description": "Select the Multiscales Zarr convention.\n\nSee https://github.com/zarr-conventions/multiscales", "properties": { "name": { "const": "multiscales", "default": "multiscales", "title": "Name", "type": "string" }, "version": { "description": "Version of the convention followed by the output dataset.", "title": "Version", "type": "string" }, "configuration": { "$ref": "#/$defs/ConventionConfiguration", "description": "Options of the convention." } }, "title": "MultiscalesConventionSelector", "type": "object" }, "NearestResamplerSettings": { "description": "Settings for resampling data onto HEALPix using nearest neighbor (k=1) interpolation.", "properties": { "init_params": { "additionalProperties": true, "description": "Parameters passed to the resampler constructor.", "title": "Init Params", "type": "object" }, "resample_params": { "additionalProperties": { "anyOf": [ { "additionalProperties": true, "type": "object" }, {} ] }, "description": "Parameters passed to the resampler's `resample()` method.\n\nParameter values may be given either like:\n- a common value used for all arrays (data variables) in the group\n- a value for each array in the group (dictionary where keys are\n variable names)", "title": "Resample Params", "type": "object" }, "name": { "const": "nearest", "default": "nearest", "title": "Name", "type": "string" } }, "title": "NearestResamplerSettings", "type": "object" }, "NoChunkSettings": { "description": "Do not chunk output data along the HEALPix cell dimension.", "properties": { "method": { "const": "no_chunk", "default": "no_chunk", "title": "Method", "type": "string" } }, "title": "NoChunkSettings", "type": "object" }, "PSFResamplerSettings": { "description": "Settings for resampling data onto HEALPix using PSF interpolation.", "properties": { "init_params": { "additionalProperties": true, "description": "Parameters passed to the resampler constructor.", "title": "Init Params", "type": "object" }, "resample_params": { "additionalProperties": { "anyOf": [ { "additionalProperties": true, "type": "object" }, {} ] }, "description": "Parameters passed to the resampler's `resample()` method.\n\nParameter values may be given either like:\n- a common value used for all arrays (data variables) in the group\n- a value for each array in the group (dictionary where keys are\n variable names)", "title": "Resample Params", "type": "object" }, "name": { "const": "psf", "default": "psf", "title": "Name", "type": "string" } }, "title": "PSFResamplerSettings", "type": "object" }, "PyramidSettings": { "description": "Settings for generating a pyramid of coarser HEALPix refinement levels\nin a multiscale group.\n\nThe derived levels given by :py:attr:`derived_levels` are aggregated from\nthe levels converted from the input data (the native levels of the\nmultiscale group).\n\nThe derived levels are written in the multiscale group, next to the native\nlevels or in a child group of its own (see :py:attr:`subgroup_name`).\n\nEvery child group of the multiscale group must be converted with the\n``healpix_cell_dense`` chunk method: the cells of such a chunk are all the\nchildren of one HEALPix cell, which is what lets the derived levels be\naggregated by position (see\n:py:func:`~healpix_convert.generate_pyramids`).", "properties": { "derived_levels": { "description": "HEALPix refinement levels to derive, e.g. ``[18, 16]``.\n\nEach of them must be coarser than the finest native level of the multiscale\ngroup and must not be one of its native levels (which are converted from\nthe input data).", "items": { "maximum": 29, "minimum": 0, "type": "integer" }, "minItems": 1, "title": "Derived Levels", "type": "array" }, "subgroup_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Name of a new group, direct child of the multiscale group, where the\nderived levels are written, e.g. \"pyramids\"::\n\n reflectance (multiscale group)\n \u251c\u2500\u2500 20 (native level)\n \u251c\u2500\u2500 19 (native level)\n \u251c\u2500\u2500 17 (native level)\n \u2514\u2500\u2500 pyramids\n \u251c\u2500\u2500 18 (derived level)\n \u2514\u2500\u2500 16 (derived level)\n\nIf None (default), the derived levels are written next to the native\nlevels, as direct children of the multiscale group::\n\n reflectance (multiscale group)\n \u251c\u2500\u2500 20 (native level)\n \u251c\u2500\u2500 19 (native level)\n \u251c\u2500\u2500 18 (derived level)\n \u251c\u2500\u2500 17 (native level)\n \u2514\u2500\u2500 16 (derived level)\n\nEither way the multiscale group holds every level of the pyramid, and its\nmultiscales metadata describes them all.", "title": "Subgroup Name" }, "reduce": { "default": "mean", "description": "How the values of the children cells are aggregated.\n\nMissing (NaN) values are skipped. The mean does not suit categorical data\n(masks, classifications): aggregate those with \"mode\", the most frequent\nvalue of the cells of a block (the smallest of them in case of a tie).", "enum": [ "mean", "min", "max", "sum", "mode" ], "title": "Reduce", "type": "string" }, "codecs": { "anyOf": [ { "items": { "$ref": "#/$defs/CodecSettings" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "Zarr codecs of the aggregated data variables of every derived level\n(Zarr's defaults if None), e.g. a serializer that codes the cells of one\nHEALPix cell per chunk, which the chunks of the derived levels are.\n\nAs for the ``codecs`` group setting, each codec is looked up by name in\nZarr's codec registry where the settings are created. The converted levels\nkeep the codecs they were written with.", "title": "Codecs" }, "coarsen_from": { "default": "nearest", "description": "Which native level a variable converted at several levels is aggregated\nfrom: the nearest level at or finer than the derived level (default),\ni.e., the copies resampled by the data provider are kept and reused, or\nalways its finest native level, i.e., those copies are ignored.", "enum": [ "nearest", "finest" ], "title": "Coarsen From", "type": "string" } }, "required": [ "derived_levels" ], "title": "PyramidSettings", "type": "object" }, "STACSettings": { "additionalProperties": false, "description": "Settings for the STAC metadata (``stac_discovery``) written in the root\ngroup of the output dataset.", "properties": { "include_conversion_settings": { "default": true, "description": "If True (the default), the conversion settings are recorded in the output\nas the ``processing:expression`` STAC property.\n\nSet it to False to leave them out, e.g., because they are large or because\nthey name internal paths that should not be published. The rest of the\nprovenance (``processing:datetime``, ``processing:software``,\n``processing:lineage``) is written either way.", "title": "Include Conversion Settings", "type": "boolean" }, "merge_properties": { "default": "pick_first", "description": "How the STAC properties of several input datasets are merged.\n\n``\"join_inner\"`` keeps the properties every input has with the same value,\ni.e., what they agree on: a ``datetime`` that differs across the inputs\ndoes not describe the output either.\n\nWith a single input dataset both strategies are equivalent.", "enum": [ "pick_first", "join_inner" ], "title": "Merge Properties", "type": "string" }, "merge_extensions": { "default": "pick_first", "description": "How the STAC extensions of several input datasets are merged.\n\n``\"join_outer\"`` lists every extension any input declares, which is what\nkeeps the output item from dropping a namespace its properties still use.", "enum": [ "pick_first", "join_inner", "join_outer" ], "title": "Merge Extensions", "type": "string" }, "merge_links": { "default": "pick_first", "description": "How the STAC links of several input datasets are merged.\n\nLinks have no identifier, so they are merged whole: two links are the same\none when they are equal. ``\"join_inner\"`` keeps the links every input has\nand ``\"join_outer\"`` every link any input has, in the order they first\nappear.", "enum": [ "pick_first", "join_inner", "join_outer" ], "title": "Merge Links", "type": "string" }, "merge_assets": { "default": "pick_first", "description": "How the STAC assets of several input datasets are merged.\n\nMerged like the properties, by asset key. The result is then filtered by\n``exclude_assets``, which drops every input asset by default.", "enum": [ "pick_first", "join_inner" ], "title": "Merge Assets", "type": "string" }, "exclude_properties": { "description": "Names of the input STAC properties that must not be propagated to the output.\n\nEach item is either the exact name of a property or a regular expression\nmatched against the whole property name (e.g., ``\"internal:.*\"`` excludes\nevery property of an ``internal`` namespace).\n\nThe properties written by healpix-convert itself (``processing:*``) keep\nprecedence.", "items": { "type": "string" }, "title": "Exclude Properties", "type": "array" }, "override_properties": { "additionalProperties": true, "description": "STAC properties set in the output, overriding the propagated ones.\n\nAn override wins over ``exclude_properties``. The properties written by\nhealpix-convert itself (``processing:*``) keep precedence.", "title": "Override Properties", "type": "object" }, "exclude_extensions": { "description": "Input STAC extensions that must not be listed in the output.\n\nEach item is either the exact URL of an extension schema or a regular\nexpression matched against the whole URL (e.g.,\n``\"https://stac-extensions.github.io/projection/.*\"`` excludes any version\nof the projection extension).\n\nThe STAC processing extension, listed by healpix-convert itself, keeps\nprecedence.", "items": { "type": "string" }, "title": "Exclude Extensions", "type": "array" }, "override_extensions": { "description": "URLs of the STAC extension schemas listed in the output, in addition to\nthe propagated ones.\n\nAn override wins over ``exclude_extensions``.", "items": { "type": "string" }, "title": "Override Extensions", "type": "array" }, "exclude_links": { "description": "Input STAC links that must not be propagated to the output.\n\nLinks have no identifier, so each item is matched against the whole ``rel``\nof a link: either an exact relation type (e.g., ``\"via\"``) or a regular\nexpression (e.g., ``\"self|parent|root\"``).\n\nThe ``derived_from`` links written by healpix-convert itself keep\nprecedence.", "items": { "type": "string" }, "title": "Exclude Links", "type": "array" }, "override_links": { "description": "STAC links written in the output, in addition to the propagated ones.\n\nEach item is a whole link object (``rel``, ``href``, and whatever else the\nlink carries). An override wins over ``exclude_links``.", "items": { "additionalProperties": true, "type": "object" }, "title": "Override Links", "type": "array" }, "exclude_assets": { "default": [ ".*" ], "description": "Keys of the input STAC assets that must not be propagated to the output.\n\nEach item is either the exact key of an asset or a regular expression\nmatched against the whole key (e.g., ``\"thumbnail.*\"``).\n\nEvery input asset is excluded by default: the assets of the input point at\nthe input files, which the output does not hold, so propagating them would\nhave the output item advertise files that are not its own. Set this to an\nempty list to keep them, or describe the output's own files with\n``override_assets``.", "items": { "type": "string" }, "title": "Exclude Assets", "type": "array" }, "override_assets": { "additionalProperties": { "additionalProperties": true, "type": "object" }, "description": "STAC assets set in the output, overriding the propagated ones.\n\nEach key is the key of an asset and each value the whole asset object\n(``href``, ``type``, ``roles``, etc.). An override wins over\n``exclude_assets``.", "title": "Override Assets", "type": "object" } }, "title": "STACSettings", "type": "object" }, "WGS84Ellipsoid": { "description": "Singleton model defining the WGS84 ellipsoid.\n\nCompliant with the DGGS Zarr convention.", "properties": { "name": { "const": "WGS84", "default": "WGS84", "title": "Name", "type": "string" } }, "title": "WGS84Ellipsoid", "type": "object" } }, "description": "General settings for converting input Zarr dataset(s) onto HEALPix.", "properties": { "exclude_groups": { "description": "Groups to exclude from the conversion (won't be included in output).", "items": { "format": "path", "type": "string" }, "title": "Exclude Groups", "type": "array" }, "metadata": { "$ref": "#/$defs/MetadataSettings", "description": "Settings for the metadata (conventions) written in the output dataset." }, "multiscale_settings": { "$ref": "#/$defs/MultiscaleSettings", "description": "Settings for multiscale Zarr groups." }, "group_settings": { "additionalProperties": { "$ref": "#/$defs/HealpixGroupSettings" }, "description": "Conversion settings per group in the input Zarr dataset(s).", "propertyNames": { "format": "path" }, "title": "Group Settings", "type": "object" } }, "required": [ "group_settings" ], "title": "ConvertSettings", "type": "object" }