Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
5482874
Move parameter file generation to corresponding processes, expose par…
Felix-Kummer Apr 21, 2025
855081d
Added meta maps
Felix-Kummer May 18, 2025
cf686bd
Fix version reporting for FORCE modules
Felix-Kummer May 19, 2025
b2b6966
Parameterization for DEM
Felix-Kummer May 20, 2025
7568941
Parameterize data cubes and corrections in preprocessing
Felix-Kummer May 20, 2025
7b6bebe
Small indent fix
Felix-Kummer May 20, 2025
95047cb
Small update to the preprocessing output docs
Felix-Kummer May 20, 2025
6bb5191
Parameterize WVDB
Felix-Kummer May 20, 2025
7169462
Parameterization and new optional input for AOD
Felix-Kummer May 21, 2025
6a398cb
fix prettier
Felix-Kummer May 21, 2025
a84796c
Parameterization for Coregistration
Felix-Kummer May 22, 2025
668d5fb
Align optional inputs with nf-core standard
Felix-Kummer May 22, 2025
d1172eb
Finished parameterization for preprocessing
Felix-Kummer May 22, 2025
2761ddf
Restructure higher-level module inputs
Felix-Kummer May 23, 2025
9dce233
Parameterization for higher-level masks
Felix-Kummer May 23, 2025
cf7856f
Parameterization for higher level output options
Felix-Kummer May 23, 2025
f90dd25
Parameterization for processing extend and timeframe in higher-level …
Felix-Kummer May 23, 2025
f26a9cd
Parameterization for spectral mixture analysis
Felix-Kummer May 23, 2025
34aa2b9
Parameterization for interpolation in higher-level processing
Felix-Kummer May 23, 2025
eff7955
Update snapshots
Felix-Kummer May 23, 2025
ca534e6
Improve output docs with corresponding FORCE parameters
Felix-Kummer May 23, 2025
6161960
Output docs for folding outputs in higher-level processing
Felix-Kummer May 23, 2025
06b0296
Parameterization for polar metrics
Felix-Kummer May 23, 2025
04a7013
Add missing parameter to higher-level bash script
Felix-Kummer May 23, 2025
51b1b98
Adjustments to sensors_level2 parameter
Felix-Kummer May 25, 2025
81ecbd7
Move return_tss parameter to task.ext.args
Felix-Kummer May 25, 2025
589116e
Updated test name in snapshot
Felix-Kummer May 25, 2025
e4b99cc
fix save_tsa parameter
Felix-Kummer May 25, 2025
77cd55f
Reset FORCE parameter values to default
Felix-Kummer May 26, 2025
0267eaf
Add lists of disabled FORCE parameters
Felix-Kummer May 26, 2025
a73c8e5
Alignment fix
Felix-Kummer May 26, 2025
0385c6e
Add AOI as input to the preprocessing process
Felix-Kummer May 26, 2025
bd1c6c6
Remove SMA from default indexes
Felix-Kummer May 26, 2025
e4fb791
Change default timeframe to exclude no data
Felix-Kummer May 26, 2025
2e63876
Documentation improvements
Felix-Kummer May 27, 2025
c0ff4f7
Merge branch 'nf-core:dev' into dev
Felix-Kummer May 27, 2025
ab57474
Add missing 'def' keyword to variable declarations in higher-level pr…
Felix-Kummer May 27, 2025
d8e1333
Update Changelog
Felix-Kummer May 27, 2025
ac19be0
Fix a typo in usage docs
Felix-Kummer Jun 2, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 17 additions & 6 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,35 @@
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## v1.0.0 - [2025-01-17]

First release of `nf-core/rangeland`.
This work is a continuation, and nf-core port, of the [original version of this pipeline](https://github.com/CRC-FONDA/FORCE2NXF-Rangeland).
# v1.1.0dev - [date]

### `Added`

- [26](https://github.com/nf-core/rangeland/pull/26) Meta maps
- [26](https://github.com/nf-core/rangeland/pull/26) Parameterization for preprocessing and higher-level processing

### `Changed`

- [24](https://github.com/nf-core/rangeland/pull/24) Update to FORCE version 3.8.01
- [25](https://github.com/nf-core/rangeland/pull/25) Template update for nf-core/tools v3.2.1
- [26](https://github.com/nf-core/rangeland/pull/26) Preparation for FORCE nf-core modules

### `Fixed`

### `Dependencies`

### `Deprecated`

## v1.1.0dev - [date]
- [26](https://github.com/nf-core/rangeland/pull/26) Parameter file processes

## v1.0.0 - [2025-01-17]

First release of `nf-core/rangeland`.
This work is a continuation, and nf-core port, of the [original version of this pipeline](https://github.com/CRC-FONDA/FORCE2NXF-Rangeland).

### `Added`

- [24](https://github.com/nf-core/rangeland/pull/24) Update to FORCE version 3.8.01
### `Changed`

### `Fixed`

Expand Down
47 changes: 30 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,16 @@

## Introduction

**nf-core/rangeland** is a geographical best-practice analysis pipeline for remotely sensed imagery.
**nf-core/rangeland** is a best-practice Earth Observation analysis pipeline for remotely sensed imagery.
The pipeline processes satellite imagery alongside auxiliary data in multiple steps to arrive at a set of trend files related to land-cover changes. The main pipeline steps are:

1. Read satellite imagery, digital elevation model (dem), endmember definition, water vapor database (wvdb), datacube definition and area of interest definition (aoi)
1. Read satellite imagery, datacube definition, area of interest definition (aoi) and optional inputs such as digital elevation model (dem), endmember definition and water vapor database (wvdb)
2. Generate allow list and analysis mask to determine which pixels from the satellite data can be used
3. Preprocess data to obtain atmospherically corrected images alongside quality assurance information (aka. level 2 analysis read data)
4. Merge spatially and temporally overlapping preprocessed data
5. Classify pixels by applying linear spectral unmixing
6. Time series analyses to obtain trends in vegetation dynamics to derive level 3 data
7. Create mosaic and pyramid visualizations of the results
8. Version reporting with MultiQC ([`MultiQC`](http://multiqc.info/))
4. Merge preprocessed data based on spatially and temporally overlap
5. Time series analyses to obtain trends in vegetation dynamics to derive level 3 data
6. Create mosaic and pyramid visualizations of the results
7. Version reporting with MultiQC ([`MultiQC`](http://multiqc.info/))

<p align="center">
<img title="nf-core/rangeland diagram" src="docs/images/rangeland_diagram.png" width=95%>
Expand All @@ -40,23 +39,37 @@ The pipeline processes satellite imagery alongside auxiliary data in multiple st
> [!NOTE]
> If you are new to Nextflow and nf-core, please refer to [this page](https://nf-co.re/docs/usage/installation) on how to set-up Nextflow. Make sure to [test your setup](https://nf-co.re/docs/usage/introduction#how-to-run-a-pipeline) with `-profile test` before running the workflow on actual data.

To run, satellite imagery, water vapor data, a digital elevation model, endmember definitions, a datacube specification, and a area-of-interest specification are required as input data.
To run, satellite imagery, datacube specification, and a area-of-interest specification are required as input.
It is highly recommended to also provide data water vapor data, a digital elevation model and a endmember definition.
Please refer to the [usage documentation](https://nf-co.re/rangeland/usage) for details on the input structure.

Now, you can run the pipeline using:

```bash
nextflow run nf-core/rangeland \
-profile <docker/singularity/.../institute> \
--input <SATELLITE IMAGES> \
--dem <DIGITAL ELEVATION MODEL> \
--wvdb <WATER VAPOR DATA> \
--data_cube <DATA CUBE> \
--aoi <AREA OF INTEREST> \
--endmember <ENDMEMBER SPECIFICATION> \
--outdir <OUTDIR>
-profile <docker/singularity/.../institute> \
--input <SATELLITE IMAGES> \
--data_cube <DATA CUBE> \
--aoi <AREA OF INTEREST> \
--outdir <OUTDIR>
```

The following parameters should be added for optimal results:

```bash
--dem <DIGITAL ELEVATION MODEL> \
--wvdb <WATER VAPOR DATA> \
--endmember <ENDMEMBER SPECIFICATION>
```

To enable spectral unmixing, and use the endmember file, the `--indexes` parameters should contain `SMA`, e.g.:

```bash
--indexes "SMA NDVI BLUE GREEN RED NIR SWIR1 SWIR2"
```

See the [usage documentation](./docs/usage.md#higher-level-processing-indexes) for more details on indexes.

> [!WARNING]
> Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_; see [docs](https://nf-co.re/docs/usage/getting_started/configuration#custom-configuration-files).

Expand All @@ -83,7 +96,7 @@ nf-core alignment started on the [nf-core branch of the original repository](htt
We thank the following people for their extensive assistance in the development of this pipeline:

- [Fabian Lehmann](https://github.com/Lehmann-Fabian)
- [Katarzyna Ewa Lewinska](https://github.com/kelewinska).
- [Katarzyna Ewa Lewinska](https://github.com/kelewinska)

## Acknowledgements

Expand Down
48 changes: 22 additions & 26 deletions conf/modules.config
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ process {
}

withName: "FORCE_PREPROCESS" {
publishDir = [
publishDir = [
[
path: { "${params.outdir}/preprocess/${task.tag}/logs" },
mode: params.publish_dir_mode,
Expand All @@ -51,35 +51,40 @@ process {
pattern: 'level2_ard/**/*',
saveAs: { params.save_ard ? it : null },
enabled: params.publish_dir_enabled
],
[
path: { "${params.outdir}/preprocess/${task.tag}/param_files" },
mode: params.publish_dir_mode,
pattern: '*.prm',
enabled: params.publish_dir_enabled
]
]
}


withName: "HIGHER_LEVEL_CONFIG" {
publishDir = [
path: { "${params.outdir}/higher-level/${task.tag}/param_files" },
mode: params.publish_dir_mode,
pattern: '*.prm',
enabled: params.publish_dir_enabled
]
}

withName: "FORCE_HIGHER_LEVEL" {
publishDir = [
path: { "${params.outdir}/higher-level/${task.tag}" },
mode: params.publish_dir_mode,
pattern: 'trend/*.tif',
saveAs: { params.save_ard ? "trend_files/${it.tokenize('/')[-1]}" : null },
enabled: params.publish_dir_enabled
[
path: { "${params.outdir}/higher-level/${task.tag}" },
mode: params.publish_dir_mode,
pattern: 'trend/*.tif',
saveAs: { params.save_tsa ? "trend_files/${it.tokenize('/')[-1]}" : null },
enabled: params.publish_dir_enabled
],
[
path: { "${params.outdir}/higher-level/${task.tag}/param_files" },
mode: params.publish_dir_mode,
pattern: '*.prm',
enabled: params.publish_dir_enabled
]

]
}

withName: "FORCE_PYRAMID" {
stageInMode = 'copy'
publishDir = [
path: { "${params.outdir}/trend/pyramid/" },
saveAs: { "${it.substring(12,it.indexOf("."))}/trend/${it.substring(0,11)}/$it" },
saveAs: { "${meta.product}/trend/${task.tag}/$it" },
pattern: '*.tif*',
mode: params.publish_dir_mode,
enabled: params.publish_dir_enabled
Expand Down Expand Up @@ -107,15 +112,6 @@ process {
]
}

withName: "PREPROCESS_CONFIG" {
publishDir = [
path: { "${params.outdir}/preprocess/${task.tag}/param_files" },
mode: params.publish_dir_mode,
pattern: '*.prm',
enabled: params.publish_dir_enabled
]
}

withName: 'MULTIQC' {
ext.args = params.multiqc_title ? "--title \"$params.multiqc_title\"" : ''
publishDir = [
Expand Down
21 changes: 21 additions & 0 deletions conf/test.config
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,31 @@ params {

// enable mosaic visualization
mosaic_visualization = true

// indexes for higher-level processing
indexes = "SMA NDVI BLUE GREEN RED NIR SWIR1 SWIR2"

}

process {
withName: "UNTAR_*" {
ext.args2 = "--strip-components=0"
}

// Disable OVV preprocessing output
withName: "FORCE_PREPROCESS" {
ext.args = { [ "OUTPUT_OVV":"FALSE" ] }
}

// Enable RBF interpolation, define required polarmetrics (and their outputs)
withName: "FORCE_HIGHER_LEVEL" {
ext.args = { [
"INTERPOLATE": "RBF",
"INT_DAY" : 16,
"POL" : "VPS VBL VSA",
"OUTPUT_POL" : "TRUE",
"OUTPUT_TRO" : "TRUE",
"OUTPUT_CAO" : "TRUE"
] }
}
}
31 changes: 27 additions & 4 deletions conf/test_full.config
Original file line number Diff line number Diff line change
Expand Up @@ -28,18 +28,41 @@ params {
start_date = '1986-01-01'
end_date = '1989-12-31'

// sensor level for higher-level processing
sensors_level2 = 'LND04 LND05'

// Enable time series stack output
return_tss = true

// Enable mosaic visualization
mosaic_visualization = true

// Enable higher-level publishing
save_tsa = true

// indexes for higher-level processing
indexes = "SMA NDVI BLUE GREEN RED NIR SWIR1 SWIR2"

}

process {
// This is required because of the internal structure of the input tarballs
withName: "UNTAR_*" {
ext.args2 = "--strip-components=1"
ext.args2 = "--strip-components=1"
}

// Enable time series stack output, enable RBF interpolation, define required polarmetrics (and their outputs)
withName: "FORCE_HIGHER_LEVEL" {
ext.args = { [
"OUTPUT_TSS" : "TRUE",
"INTERPOLATE": "RBF",
"INT_DAY" : 16,
"POL" : "VPS VBL VSA",
"OUTPUT_POL" : "TRUE",
"OUTPUT_TRO" : "TRUE",
"OUTPUT_CAO" : "TRUE"
] }
}

// Disable OVV preprocessing output
withName: "FORCE_PREPROCESS" {
ext.args = { [ "OUTPUT_OVV":"FALSE" ] }
}
}
Binary file modified docs/images/rangeland_diagram.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 1 addition & 2 deletions docs/images/rangeland_diagram.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading