{
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "https://raw.githubusercontent.com/nf-core/rangeland/master/nextflow_schema.json",
    "title": "nf-core/rangeland pipeline parameters",
    "description": "Long-term vegetation trend analysis pipeline for rangeland systems using satellite imagery.",
    "type": "object",
    "$defs": {
        "input_output_options": {
            "title": "Input/output options",
            "type": "object",
            "fa_icon": "fas fa-terminal",
            "description": "Define where the pipeline should find input data and save output data.",
            "required": ["input", "dem", "wvdb", "data_cube", "aoi", "endmember", "outdir"],
            "properties": {
                "input": {
                    "type": "string",
                    "fa_icon": "fas fa-satellite",
                    "exists": true,
                    "help_text": "Set this to the root directory of all satellite imagery. Directory structure should match format of data downloaded with '$ force-level1-csd\n' For concrete directory structure see [usage documentation](https://nf-co.re/rangeland/docs/usage).\n\nAlternatively, a tarball can be supplied. The same directory structure needs to be in place in that tarball.",
                    "description": "Root directory or tarball of all satellite imagery.",
                    "mimetype": "image/tiff, application/x-tar",
                    "format": "path"
                },
                "dem": {
                    "type": "string",
                    "help_text": "Path to directory containing a subdirectory with tile-wise digital elevation files (`.tif`) and a virtual dataset file (`.vrt` file) comprising all tile-wise files from the subdirectory. See [usage documentation](https://nf-co.re/rangeland/docs/usage) for details regarding the required structure.\n\nAlternatively, a tarball can be supplied. The same directory structure needs to be in place in that tarball.\n\nAlternatively, a tarball can be supplied. The same directory structure needs to be in place in that tarball.",
                    "fa_icon": "fas fa-mountain",
                    "exists": true,
                    "description": "Digital elevation model.",
                    "format": "path"
                },
                "wvdb": {
                    "type": "string",
                    "fa_icon": "fas fa-burn",
                    "exists": true,
                    "description": "Water vapor dataset.",
                    "help_text": "Directory containing a number text files describing global water vapor data at different timestamps, and a coordinate order (`.coo`-)file containing the reference system of the water vapor data. See [usage documentation](https://nf-co.re/rangeland/docs/usage) for details regarding the required structure.\n\nAlternatively, a tarball can be supplied. The same directory structure needs to be in place in that tarball.",
                    "format": "path"
                },
                "data_cube": {
                    "type": "string",
                    "description": "Datacube definition.",
                    "fa_icon": "fas fa-cube",
                    "exists": true,
                    "help_text": "A single `.prj` file describing the projection and reference grid of the generated datacube.",
                    "pattern": "^\\S+\\.prj$",
                    "format": "file-path"
                },
                "aoi": {
                    "type": "string",
                    "fa_icon": "fas fa-chart-area",
                    "exists": true,
                    "description": "Area of interest.",
                    "help_text": "A single vector file specifying the spatial extend of the targeted area.",
                    "pattern": "^\\S+\\.(gpkg|shp)$",
                    "format": "file-path"
                },
                "endmember": {
                    "type": "string",
                    "fa_icon": "fas fa-chart-line",
                    "exists": true,
                    "description": "Endmember definition.",
                    "help_text": "A single text file specifying where rows correspond to satellite bands and columns correspond to endmembers. Values correspond to reflectance values and are separated by spaces.",
                    "pattern": "^\\S+\\.txt$",
                    "format": "file-path",
                    "mimetype": "text/plain"
                },
                "outdir": {
                    "type": "string",
                    "format": "directory-path",
                    "description": "The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure.",
                    "fa_icon": "fas fa-folder-open",
                    "exists": true
                },
                "email": {
                    "type": "string",
                    "description": "Email address for completion summary.",
                    "fa_icon": "fas fa-envelope",
                    "help_text": "Set this parameter to your e-mail address to get a summary e-mail with details of the run sent to you when the workflow exits. If set in your user config file (`~/.nextflow/config`) then you don't need to specify this on the command line for every run.",
                    "pattern": "^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$"
                },
                "multiqc_title": {
                    "type": "string",
                    "description": "MultiQC report title. Printed as page header, used for filename if not otherwise specified.",
                    "fa_icon": "fas fa-file-signature"
                }
            }
        },
        "remote_sensing_image_options": {
            "title": "Remote sensing image options",
            "type": "object",
            "description": "Definition of satellite image parameters.",
            "default": "",
            "help_text": "These parameters are used to tell pipeline tools which data is expected, how this data has to be incorporated, and which parts of the imagery can be excluded (e.g. due to temporal mismatch). These parameters should be closely aligned with the provided input data.",
            "properties": {
                "sensors_level2": {
                    "type": "string",
                    "default": "LND04 LND05 LND07",
                    "fa_icon": "fas fa-satellite",
                    "description": "Satellites for which data should be incorporated into higher level processing.",
                    "help_text": "String containing space-separated indicators of satellites in FORCE level 2 format. Common options:\n\"LND04\":       6-band Landsat 4 TM, \n\"LND05\":       6-band Landsat 5 TM, \n\"LND07\":       6-band Landsat 7 ETM+,\n\"LND08/09\": 6-band Landsat 8-9 OLI, \n\"SEN2A\":      10-band Sentinel-2A, \n\"SEN2B\":      10-band Sentinel-2B,\nall options [here](https://force-eo.readthedocs.io/en/latest/components/higher-level/tsa/param.html) \n",
                    "pattern": "^((LND04|LND05|LND07|LND08|LND09|SEN2A|SEN2B|sen2a|sen2b|S1AIA|S1BIA|S1AID|S1BID|MOD01|MOD02|LNDLG|SEN2L|SEN2H|R-G-B|VVVHP|MODIS)(\\s|$))+$"
                },
                "start_date": {
                    "type": "string",
                    "default": "1984-01-01",
                    "fa_icon": "far fa-calendar-alt",
                    "description": "First day of interest.",
                    "help_text": "String with format: \"YYYY-MM-DD\".",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                    "format": "date"
                },
                "end_date": {
                    "type": "string",
                    "default": "2006-12-31",
                    "fa_icon": "far fa-calendar-alt",
                    "description": "Last day of interest.",
                    "help_text": "String with format: \"YYYY-MM-DD\".",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                    "format": "date"
                },
                "resolution": {
                    "type": "integer",
                    "default": 30,
                    "fa_icon": "fas fa-expand-arrows-alt",
                    "description": "Spatial resolution applied in analyses.",
                    "minimum": 1
                }
            },
            "fa_icon": "fas fa-satellite"
        },
        "higher_level_processing_modification": {
            "title": "Higher level processing modification",
            "type": "object",
            "default": "",
            "properties": {
                "indexes": {
                    "type": "string",
                    "default": "NDVI BLUE GREEN RED NIR SWIR1 SWIR2",
                    "help_text": "Space-separated list of indexes and bands that should be considered in time series analyses. They are indicated by using their established abbreviations. The full list of available indexes is available at [https://force-eo.readthedocs.io/en/latest/components/higher-level/tsa/param.html](https://force-eo.readthedocs.io/en/latest/components/higher-level/tsa/param.html) under the 'INDEX' parameter. Spectral unmixing is a special index and always activated.",
                    "description": "Select which bands and indexes should be considered in time series analyses.",
                    "fa_icon": "fas fa-satellite",
                    "pattern": "((BLUE|GREEN|RED|NIR|SWIR1|SWIR2|RE1|RE2|RE3|BNIR|NDVI|EVI|NBR|NDTI|ARVI|SAVI|SARVI|TC-BRIGHT|TC-GREEN|TC-WET|TC-DI|NDBI|NDWI|MNDWI|NDMI|NDSI|SMA|kNDVI|NDRE1|NDRE2|CIre|NDVIre1|NDVIre2|NDVIre3|NDVIre1n|NDVIre2n|NDVIre3n|MSRre|MSRren,CCI)(\\s|$))+"
                },
                "return_tss": {
                    "type": "boolean",
                    "description": "Should the full time series stack be returned.",
                    "help_text": "This parameter enables or disables the output of the time series stack for each tile and band/index. Here, each band shows the values of a single date.",
                    "fa_icon": "fas fa-layer-group"
                }
            },
            "description": "Modify higher level processing behaviour.",
            "help_text": "These parameters can be used to modify the behaviour of the time series analyses process in higher level processing.",
            "fa_icon": "fas fa-microchip"
        },
        "visualization": {
            "title": "Visualization",
            "type": "object",
            "description": "Enable or disable visualizations.",
            "default": "",
            "properties": {
                "mosaic_visualization": {
                    "type": "boolean",
                    "default": true,
                    "description": "Whether mosaic visualization should be returned.",
                    "fa_icon": "fas fa-image"
                },
                "pyramid_visualization": {
                    "type": "boolean",
                    "default": true,
                    "description": "Whether pyramid visualization should be returned.",
                    "fa_icon": "far fa-image"
                }
            },
            "fa_icon": "fas fa-images"
        },
        "workflow_configuration": {
            "title": "Workflow configuration",
            "type": "object",
            "description": "Parameters that configure workflow behavior not directly related to FORCE,",
            "default": "",
            "properties": {
                "save_ard": {
                    "type": "boolean",
                    "fa_icon": "fas fa-database",
                    "description": "Whether analysis ready data should be published to the output directory.",
                    "help_text": "By default, the results of preprocessing (aka. analyses ready data or level-2 data) are not published. Setting this parameter to `true` enforces that these files are published to the output directory."
                },
                "save_tsa": {
                    "type": "boolean",
                    "fa_icon": "fas fa-database",
                    "description": "Whether the results of time series analyses should be published to the output directory.",
                    "help_text": "By default, the results of higher level processing (aka. level-3 data) are not published. Setting this parameter to `true` enforces that these files are published to the output directory."
                },
                "group_size": {
                    "type": "integer",
                    "default": 100,
                    "description": "Batch size of tiles considered for merging.",
                    "help_text": "Controls trade-off between parallelism and I/O load.\nHigher group_size -> More tiles merged in one process, less I/O load.\nLower group_size -> Less tiles merged in one process, more I/O load. ",
                    "fa_icon": "fas fa-layer-group"
                },
                "publish_dir_enabled": {
                    "type": "boolean",
                    "default": true,
                    "description": "Publish pipeline outputs.",
                    "help_text": "Set to `false` to prevent *all* modules from publishing their results.",
                    "fa_icon": "fas fa-database"
                }
            },
            "help_text": "You can savely use the defaults.",
            "fa_icon": "fas fa-project-diagram"
        },
        "institutional_config_options": {
            "title": "Institutional config options",
            "type": "object",
            "fa_icon": "fas fa-university",
            "description": "Parameters used to describe centralised config profiles. These should not be edited.",
            "help_text": "The centralised nf-core configuration profiles use a handful of pipeline parameters to describe themselves. This information is then printed to the Nextflow log when you run a pipeline. You should not need to change these values when you run a pipeline.",
            "properties": {
                "custom_config_version": {
                    "type": "string",
                    "description": "Git commit id for Institutional configs.",
                    "default": "master",
                    "hidden": true,
                    "fa_icon": "fas fa-users-cog"
                },
                "custom_config_base": {
                    "type": "string",
                    "description": "Base directory for Institutional configs.",
                    "default": "https://raw.githubusercontent.com/nf-core/configs/master",
                    "hidden": true,
                    "help_text": "If you're running offline, Nextflow will not be able to fetch the institutional config files from the internet. If you don't need them, then this is not a problem. If you do need them, you should download the files from the repo and tell Nextflow where to find them with this parameter.",
                    "fa_icon": "fas fa-users-cog"
                },
                "config_profile_name": {
                    "type": "string",
                    "description": "Institutional config name.",
                    "hidden": true,
                    "fa_icon": "fas fa-users-cog"
                },
                "config_profile_description": {
                    "type": "string",
                    "description": "Institutional config description.",
                    "hidden": true,
                    "fa_icon": "fas fa-users-cog"
                },
                "config_profile_contact": {
                    "type": "string",
                    "description": "Institutional config contact information.",
                    "hidden": true,
                    "fa_icon": "fas fa-users-cog"
                },
                "config_profile_url": {
                    "type": "string",
                    "description": "Institutional config URL link.",
                    "hidden": true,
                    "fa_icon": "fas fa-users-cog"
                }
            }
        },
        "generic_options": {
            "title": "Generic options",
            "type": "object",
            "fa_icon": "fas fa-file-import",
            "description": "Less common options for the pipeline, typically set in a config file.",
            "help_text": "These options are common to all nf-core pipelines and allow you to customise some of the core preferences for how the pipeline runs.\n\nTypically these options would be set in a Nextflow config file loaded for all pipeline runs, such as `~/.nextflow/config`.",
            "properties": {
                "version": {
                    "type": "boolean",
                    "description": "Display version and exit.",
                    "fa_icon": "fas fa-question-circle",
                    "hidden": true
                },
                "publish_dir_mode": {
                    "type": "string",
                    "default": "copy",
                    "description": "Method used to save pipeline results to output directory.",
                    "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.",
                    "fa_icon": "fas fa-copy",
                    "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"],
                    "hidden": true
                },
                "email_on_fail": {
                    "type": "string",
                    "description": "Email address for completion summary, only when pipeline fails.",
                    "fa_icon": "fas fa-exclamation-triangle",
                    "pattern": "^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$",
                    "help_text": "An email address to send a summary email to when the pipeline is completed - ONLY sent if the pipeline does not exit successfully.",
                    "hidden": true
                },
                "plaintext_email": {
                    "type": "boolean",
                    "description": "Send plain-text email instead of HTML.",
                    "fa_icon": "fas fa-remove-format",
                    "hidden": true
                },
                "max_multiqc_email_size": {
                    "type": "string",
                    "description": "File size limit when attaching MultiQC reports to summary emails.",
                    "pattern": "^\\d+(\\.\\d+)?\\.?\\s*(K|M|G|T)?B$",
                    "default": "25.MB",
                    "fa_icon": "fas fa-file-upload",
                    "hidden": true
                },
                "monochrome_logs": {
                    "type": "boolean",
                    "description": "Do not use coloured log outputs.",
                    "fa_icon": "fas fa-palette",
                    "hidden": true
                },
                "hook_url": {
                    "type": "string",
                    "description": "Incoming hook URL for messaging service",
                    "fa_icon": "fas fa-people-group",
                    "help_text": "Incoming hook URL for messaging service. Currently, MS Teams and Slack are supported.",
                    "hidden": true
                },
                "multiqc_config": {
                    "type": "string",
                    "format": "file-path",
                    "description": "Custom config file to supply to MultiQC.",
                    "fa_icon": "fas fa-cog",
                    "hidden": true
                },
                "multiqc_logo": {
                    "type": "string",
                    "description": "Custom logo file to supply to MultiQC. File name must also be set in the MultiQC config file",
                    "fa_icon": "fas fa-image",
                    "hidden": true
                },
                "multiqc_methods_description": {
                    "type": "string",
                    "description": "Custom MultiQC yaml file containing HTML including a methods description.",
                    "fa_icon": "fas fa-cog"
                },
                "validate_params": {
                    "type": "boolean",
                    "description": "Boolean whether to validate parameters against the schema at runtime",
                    "default": true,
                    "fa_icon": "fas fa-check-square",
                    "hidden": true
                },
                "pipelines_testdata_base_path": {
                    "type": "string",
                    "fa_icon": "far fa-check-circle",
                    "description": "Base URL or local path to location of pipeline test dataset files",
                    "default": "https://raw.githubusercontent.com/nf-core/test-datasets/",
                    "hidden": true
                },
                "trace_report_suffix": {
                    "type": "string",
                    "fa_icon": "far calendar",
                    "description": "Suffix to add to the trace report filename. Default is the date and time in the format yyyy-MM-dd_HH-mm-ss.",
                    "hidden": true
                }
            }
        }
    },
    "allOf": [
        {
            "$ref": "#/$defs/input_output_options"
        },
        {
            "$ref": "#/$defs/remote_sensing_image_options"
        },
        {
            "$ref": "#/$defs/higher_level_processing_modification"
        },
        {
            "$ref": "#/$defs/visualization"
        },
        {
            "$ref": "#/$defs/workflow_configuration"
        },
        {
            "$ref": "#/$defs/institutional_config_options"
        },
        {
            "$ref": "#/$defs/generic_options"
        }
    ]
}
