From 793cf11437e377e1f90aa78b30dbd6633c701d16 Mon Sep 17 00:00:00 2001 From: thomaszwagerman Date: Wed, 23 Oct 2024 11:28:56 +0100 Subject: [PATCH 01/10] adding pipeline and paper articles --- .Rbuildignore | 1 + vignettes/articles/butterfly_in_pipeline.Rmd | 76 ++++++++++++++++++++ vignettes/articles/butterfly_paper.Rmd | 39 ++++++++++ 3 files changed, 116 insertions(+) create mode 100644 vignettes/articles/butterfly_in_pipeline.Rmd create mode 100644 vignettes/articles/butterfly_paper.Rmd diff --git a/.Rbuildignore b/.Rbuildignore index 408d91c..6dc3ef7 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -10,3 +10,4 @@ ^codemeta\.json$ ^doc$ ^Meta$ +^vignettes/articles$ diff --git a/vignettes/articles/butterfly_in_pipeline.Rmd b/vignettes/articles/butterfly_in_pipeline.Rmd new file mode 100644 index 0000000..ea6a073 --- /dev/null +++ b/vignettes/articles/butterfly_in_pipeline.Rmd @@ -0,0 +1,76 @@ +--- +title: 'Using butterfly in a data processing pipeline' +tags: + - R + - quality assurance + - timeseries + - ERA5 +authors: + - name: Thomas Zwagerman + orcid: 0000-0000-0000-0000 + affiliation: 1 +affiliations: + - name: British Antarctic Survey, UK + index: 1 +date: 23 October 2024 +--- + +```{r, include = FALSE} +knitr::opts_chunk$set( + collapse = TRUE, + comment = "#>" +) +``` + +```{r setup} +library(butterfly) +``` + + +In this article, we provide a simplified demonstration of butterfly being used in a data processing pipeline. + + +At the British Antarctic Survey (BAS), we developed this package to deal with a very specific issue. + +Quality assurance in continually updating and continually published ERA5-derived data. + +At BAS, we frequently use ERA5 (Hersbach et al. 2023) as an input to climate models. + +IceNet a sea ice prediction system based on deep learning (Andersson et al. 2021) + +ERA5-derived data. + +## The issue with ERA5 and ERA5-Interim +This package was originally developed to deal with [ERA5](https://cds.climate.copernicus.eu/datasets/reanalysis-era5-single-levels?tab=documentation)'s initial release data, ERA5T. ERA5T data for a month is overwritten with the final ERA5 data two months after the month in question. + +Usually ERA5 and ERA5T are identical, but occasionally an issue with input data can (for example for [09/21 - 12/21](https://confluence.ecmwf.int/display/CKB/ERA5T+issue+in+snow+depth), and [07/24](https://forum.ecmwf.int/t/final-validated-era5-product-to-differ-from-era5t-in-july-2024/6685)) force a recalculation, meaning previously published data differs from the final product. + +In most cases, this is not an issue. For static data publications which are a snapshot in time, such as data associated with a specific paper, as in "Forecasts, neural networks, and results from the paper: 'Seasonal Arctic sea ice forecasting with probabilistic deep learning'" [Andersson & Hosking (2021)](https://data.bas.ac.uk/full-record.php?id=GB/NERC/BAS/PDC/01526) or time period as in "Downscaled ERA5 monthly precipitation data using Multi-Fidelity Gaussian Processes between 1980 and 2012 for the Upper Beas and Sutlej Basins, Himalaya" [Tazi (2023)](https://data.bas.ac.uk/full-record.php?id=GB/NERC/BAS/PDC/01769), this is not an issue. These datasets clearly describe a version and time period of ERA5 from which the data were derived, and will not be amended or updated in the future, even if ERA5 is recalculated. + +In our case however we want to continually append ERA5-derived datasets **and** continually publish them. This would be useful when functioning as a data source for an environmental digital twin (Blair & Hendrys, 2023), or simply as input data into an environmental forecasting model which itself is frequently running. + +Continually appending **and** publishing will require strict quality assurance. If a published dataset is only appended a DOI can be minted for it.  However, if the previously published data change, this will then invalidate the DOI.  For example, if you developed your code to find a better measure (more accurate, more precise) of the low pressure region, and wanted to reanalyse the previous data and republish. + +One such ERA5-derived dataset which we (will hopefully soon!) publish at BAS is the Amundsen Sea Low Index (ASLI). + +## What is the Amundsen Sea Low Index + +The Amundsen Seas Low (ASL) is a highly dynamic and mobile climatological low pressure system located in the Pacific sector of the Southern Ocean. In this sector, variability in sea-level pressure is greater than anywhere in the Southern Hemisphere, making it challenging to isolate local fluctuations in the ASL from larger-scale shifts in atmospheric pressure. The position and strength of the ASL are crucial for understanding regional change over West Antarctica (Hosking et al. 2016). + +## Demonstration of Butterfly in a data processing pipeline + +You can inspect the full source code of this pipeline in the repository [asli-pipeline](https://github.com/antarctica/asli-pipeline). + +## Citations + +Andersson, T., & Hosking, J. (2021). Forecasts, neural networks, and results from the paper: 'Seasonal Arctic sea ice forecasting with probabilistic deep learning' (Version 1.0) [Data set]. NERC EDS UK Polar Data Centre. + +Andersson, T.R., Hosking, J.S., Pérez-Ortiz, M. *et al.* Seasonal Arctic sea ice forecasting with probabilistic deep learning. *Nat Commun* **12**, 5124 (2021). + +Blair, Gordon S., and Peter A. Henrys. 2023. “The Role of Data Science in Environmental Digital Twins: In Praise of the Arrows.” Environmetrics 34 (January): Not available. https://doi.org/10.1002/env.2789. + +Hersbach, H., Bell, B., Berrisford, P., Biavati, G., Horányi, A., Muñoz Sabater, J., Nicolas, J., Peubey, C., Radu, R., Rozum, I., Schepers, D., Simmons, A., Soci, C., Dee, D., Thépaut, J-N. (2023): ERA5 hourly data on single levels from 1940 to present. Copernicus Climate Change Service (C3S) Climate Data Store (CDS), DOI: 10.24381/cds.adbb2d47 + +Hosking, J. S., A. Orr, T. J. Bracegirdle, and J. Turner (2016), Future circulation changes off West Antarctica: Sensitivity of the Amundsen Sea Low to projected anthropogenic forcing, Geophys. Res. Lett., 43, 367–376, . + +Tazi, K. (2023). Downscaled ERA5 monthly precipitation data using Multi-Fidelity Gaussian Processes between 1980 and 2012 for the Upper Beas and Sutlej Basins, Himalayas (Version 1.0) [Data set]. NERC EDS UK Polar Data Centre. diff --git a/vignettes/articles/butterfly_paper.Rmd b/vignettes/articles/butterfly_paper.Rmd new file mode 100644 index 0000000..870ad69 --- /dev/null +++ b/vignettes/articles/butterfly_paper.Rmd @@ -0,0 +1,39 @@ +--- +title: 'butterfly: An R package for the quality assurance of continually updating timeseries' +tags: + - R + - quality assurance + - timeseries + - ERA5 +authors: + - name: Thomas Zwagerman + orcid: 0000-0000-0000-0000 + equal-contrib: true + affiliation: 1 +affiliations: + - name: British Antarctic Survey, UK + index: 1 +date: 23 October 2024 +bibliography: paper.bib +--- + +```{r, include = FALSE} +knitr::opts_chunk$set( + collapse = TRUE, + comment = "#>" +) +``` + +```{r setup} +library(butterfly) +``` + +# Summary + +# Statement of Need + +# Citations + +# Acknowledgements + +# References From bf7271cab6be68fd319bd8e82ca42750c8c5dc64 Mon Sep 17 00:00:00 2001 From: thomaszwagerman Date: Wed, 23 Oct 2024 11:30:08 +0100 Subject: [PATCH 02/10] move rationale from pipeline guidance to paper statement of need --- vignettes/articles/butterfly_in_pipeline.Rmd | 29 +-------------- vignettes/articles/butterfly_paper.Rmd | 38 ++++++++++++++++++++ 2 files changed, 39 insertions(+), 28 deletions(-) diff --git a/vignettes/articles/butterfly_in_pipeline.Rmd b/vignettes/articles/butterfly_in_pipeline.Rmd index ea6a073..245afe9 100644 --- a/vignettes/articles/butterfly_in_pipeline.Rmd +++ b/vignettes/articles/butterfly_in_pipeline.Rmd @@ -30,34 +30,7 @@ library(butterfly) In this article, we provide a simplified demonstration of butterfly being used in a data processing pipeline. -At the British Antarctic Survey (BAS), we developed this package to deal with a very specific issue. - -Quality assurance in continually updating and continually published ERA5-derived data. - -At BAS, we frequently use ERA5 (Hersbach et al. 2023) as an input to climate models. - -IceNet a sea ice prediction system based on deep learning (Andersson et al. 2021) - -ERA5-derived data. - -## The issue with ERA5 and ERA5-Interim -This package was originally developed to deal with [ERA5](https://cds.climate.copernicus.eu/datasets/reanalysis-era5-single-levels?tab=documentation)'s initial release data, ERA5T. ERA5T data for a month is overwritten with the final ERA5 data two months after the month in question. - -Usually ERA5 and ERA5T are identical, but occasionally an issue with input data can (for example for [09/21 - 12/21](https://confluence.ecmwf.int/display/CKB/ERA5T+issue+in+snow+depth), and [07/24](https://forum.ecmwf.int/t/final-validated-era5-product-to-differ-from-era5t-in-july-2024/6685)) force a recalculation, meaning previously published data differs from the final product. - -In most cases, this is not an issue. For static data publications which are a snapshot in time, such as data associated with a specific paper, as in "Forecasts, neural networks, and results from the paper: 'Seasonal Arctic sea ice forecasting with probabilistic deep learning'" [Andersson & Hosking (2021)](https://data.bas.ac.uk/full-record.php?id=GB/NERC/BAS/PDC/01526) or time period as in "Downscaled ERA5 monthly precipitation data using Multi-Fidelity Gaussian Processes between 1980 and 2012 for the Upper Beas and Sutlej Basins, Himalaya" [Tazi (2023)](https://data.bas.ac.uk/full-record.php?id=GB/NERC/BAS/PDC/01769), this is not an issue. These datasets clearly describe a version and time period of ERA5 from which the data were derived, and will not be amended or updated in the future, even if ERA5 is recalculated. - -In our case however we want to continually append ERA5-derived datasets **and** continually publish them. This would be useful when functioning as a data source for an environmental digital twin (Blair & Hendrys, 2023), or simply as input data into an environmental forecasting model which itself is frequently running. - -Continually appending **and** publishing will require strict quality assurance. If a published dataset is only appended a DOI can be minted for it.  However, if the previously published data change, this will then invalidate the DOI.  For example, if you developed your code to find a better measure (more accurate, more precise) of the low pressure region, and wanted to reanalyse the previous data and republish. - -One such ERA5-derived dataset which we (will hopefully soon!) publish at BAS is the Amundsen Sea Low Index (ASLI). - -## What is the Amundsen Sea Low Index - -The Amundsen Seas Low (ASL) is a highly dynamic and mobile climatological low pressure system located in the Pacific sector of the Southern Ocean. In this sector, variability in sea-level pressure is greater than anywhere in the Southern Hemisphere, making it challenging to isolate local fluctuations in the ASL from larger-scale shifts in atmospheric pressure. The position and strength of the ASL are crucial for understanding regional change over West Antarctica (Hosking et al. 2016). - -## Demonstration of Butterfly in a data processing pipeline +# Demonstration of Butterfly in a data processing pipeline You can inspect the full source code of this pipeline in the repository [asli-pipeline](https://github.com/antarctica/asli-pipeline). diff --git a/vignettes/articles/butterfly_paper.Rmd b/vignettes/articles/butterfly_paper.Rmd index 870ad69..2a276ec 100644 --- a/vignettes/articles/butterfly_paper.Rmd +++ b/vignettes/articles/butterfly_paper.Rmd @@ -31,9 +31,47 @@ library(butterfly) # Summary # Statement of Need +At the British Antarctic Survey (BAS), we developed this package to deal with a very specific issue. + +Quality assurance in continually updating and continually published ERA5-derived data. + +At BAS, we frequently use ERA5 (Hersbach et al. 2023) as an input to climate models. + +IceNet a sea ice prediction system based on deep learning (Andersson et al. 2021) + +ERA5-derived data. + +## The issue with ERA5 and ERA5-Interim +This package was originally developed to deal with [ERA5](https://cds.climate.copernicus.eu/datasets/reanalysis-era5-single-levels?tab=documentation)'s initial release data, ERA5T. ERA5T data for a month is overwritten with the final ERA5 data two months after the month in question. + +Usually ERA5 and ERA5T are identical, but occasionally an issue with input data can (for example for [09/21 - 12/21](https://confluence.ecmwf.int/display/CKB/ERA5T+issue+in+snow+depth), and [07/24](https://forum.ecmwf.int/t/final-validated-era5-product-to-differ-from-era5t-in-july-2024/6685)) force a recalculation, meaning previously published data differs from the final product. + +In most cases, this is not an issue. For static data publications which are a snapshot in time, such as data associated with a specific paper, as in "Forecasts, neural networks, and results from the paper: 'Seasonal Arctic sea ice forecasting with probabilistic deep learning'" [Andersson & Hosking (2021)](https://data.bas.ac.uk/full-record.php?id=GB/NERC/BAS/PDC/01526) or time period as in "Downscaled ERA5 monthly precipitation data using Multi-Fidelity Gaussian Processes between 1980 and 2012 for the Upper Beas and Sutlej Basins, Himalaya" [Tazi (2023)](https://data.bas.ac.uk/full-record.php?id=GB/NERC/BAS/PDC/01769), this is not an issue. These datasets clearly describe a version and time period of ERA5 from which the data were derived, and will not be amended or updated in the future, even if ERA5 is recalculated. + +In our case however we want to continually append ERA5-derived datasets **and** continually publish them. This would be useful when functioning as a data source for an environmental digital twin (Blair & Hendrys, 2023), or simply as input data into an environmental forecasting model which itself is frequently running. + +Continually appending **and** publishing will require strict quality assurance. If a published dataset is only appended a DOI can be minted for it.  However, if the previously published data change, this will then invalidate the DOI.  For example, if you developed your code to find a better measure (more accurate, more precise) of the low pressure region, and wanted to reanalyse the previous data and republish. + +One such ERA5-derived dataset which we (will hopefully soon!) publish at BAS is the Amundsen Sea Low Index (ASLI). + +## What is the Amundsen Sea Low Index + +The Amundsen Seas Low (ASL) is a highly dynamic and mobile climatological low pressure system located in the Pacific sector of the Southern Ocean. In this sector, variability in sea-level pressure is greater than anywhere in the Southern Hemisphere, making it challenging to isolate local fluctuations in the ASL from larger-scale shifts in atmospheric pressure. The position and strength of the ASL are crucial for understanding regional change over West Antarctica (Hosking et al. 2016). # Citations # Acknowledgements # References + +Andersson, T., & Hosking, J. (2021). Forecasts, neural networks, and results from the paper: 'Seasonal Arctic sea ice forecasting with probabilistic deep learning' (Version 1.0) [Data set]. NERC EDS UK Polar Data Centre. + +Andersson, T.R., Hosking, J.S., Pérez-Ortiz, M. *et al.* Seasonal Arctic sea ice forecasting with probabilistic deep learning. *Nat Commun* **12**, 5124 (2021). + +Blair, Gordon S., and Peter A. Henrys. 2023. “The Role of Data Science in Environmental Digital Twins: In Praise of the Arrows.” Environmetrics 34 (January): Not available. https://doi.org/10.1002/env.2789. + +Hersbach, H., Bell, B., Berrisford, P., Biavati, G., Horányi, A., Muñoz Sabater, J., Nicolas, J., Peubey, C., Radu, R., Rozum, I., Schepers, D., Simmons, A., Soci, C., Dee, D., Thépaut, J-N. (2023): ERA5 hourly data on single levels from 1940 to present. Copernicus Climate Change Service (C3S) Climate Data Store (CDS), DOI: 10.24381/cds.adbb2d47 + +Hosking, J. S., A. Orr, T. J. Bracegirdle, and J. Turner (2016), Future circulation changes off West Antarctica: Sensitivity of the Amundsen Sea Low to projected anthropogenic forcing, Geophys. Res. Lett., 43, 367–376, . + +Tazi, K. (2023). Downscaled ERA5 monthly precipitation data using Multi-Fidelity Gaussian Processes between 1980 and 2012 for the Upper Beas and Sutlej Basins, Himalayas (Version 1.0) [Data set]. NERC EDS UK Polar Data Centre. From 0a8c49579d9240b3023aeecfd24662f6122d222f Mon Sep 17 00:00:00 2001 From: thomaszwagerman Date: Wed, 23 Oct 2024 12:33:26 +0100 Subject: [PATCH 03/10] first draft of pipeline article --- vignettes/articles/butterfly_in_pipeline.Rmd | 224 ++++++++++++++++++- 1 file changed, 212 insertions(+), 12 deletions(-) diff --git a/vignettes/articles/butterfly_in_pipeline.Rmd b/vignettes/articles/butterfly_in_pipeline.Rmd index 245afe9..2c8e426 100644 --- a/vignettes/articles/butterfly_in_pipeline.Rmd +++ b/vignettes/articles/butterfly_in_pipeline.Rmd @@ -22,28 +22,228 @@ knitr::opts_chunk$set( ) ``` -```{r setup} -library(butterfly) +This article is a **simplified** demonstration of a real data processing pipeline we implemented at the British Antarctic Survey called asli-pipeline. You can inspect the full source code of this pipeline in the repository: [asli-pipeline repository](https://github.com/antarctica/asli-pipeline). + +## Pipeline functionality overview + +Consider a classic input/output (I/O) data processing pipeline where we read in data from an external source, perform some sort of calculation to it, and transfer the output to a different location. In our case, we run this pipeline on a monthly basis. + +**simple diagram** here. + +Let's fill in this diagram with the specifics of our example at BAS: + +**simple diagram with BAS** here. + +For the Amundsen Sea Low Index (ASLI) dataset, we read in ERA5-msl, perform some calculations using the `asli` python package, and move our results to the Polar Data Centre (PDC). + +However, as explained in ... the problem with using ERA5, is that it is subject to recalculation should an error be discovered. Any change in previous data, which has already been submitted to the PDC, would invalidate our DOI. + +Therefore, we want to impose some checks on our data, which abort data transfer should such a change be discovered. + +**simple diagram with stop here** + +... and this is where butterfly comes in. + +## A simplified pipeline + +### Configuration + +Let's have a look at some actual scripts now. We try to separate our data, code and configuration when writing a pipeline. Firstly let's look at our configuration, which is stored in an ENVS file: + +```bash +## +## Directories +# Should not need editing, but you can do so if you wish +# Location that pipeline is stored, referenced by most scripts +export PIPELINE_DIRECTORY=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) + +# Set input and output directories for downloaded files (DATA_DIR) +# And calculation results (OUTPUT_DIR) +export DATA_DIR=${DATA_DIR:-${PIPELINE_DIRECTORY}/data/ERA5/monthly} +export OUTPUT_DIR=${OUTPUT_DIR:-${PIPELINE_DIRECTORY}/output} + +# Specify virtual environment so it does not need to be called prior to running +export ASLI_VENV=${ASLI_VENV:-${PIPELINE_DIRECTORY}/asli_env/bin/activate} + +# Setting rsync location, where we will eventually move our data should there +# Be no errors +export RSYNC_LOCATION="" + +# Set dates and current year for iteration purposes +export CURRENT_DATE="`date --utc +"%Y_%m_%d"`" +export CURRENT_YEAR="`date --utc +"%Y"`" + +## Data querying parameters +# ERA5 Downloading parameters, we are only selecting the current year, for the +# sake of computational efficiency +export START_YEAR=2024 +export END_YEAR=${CURRENT_YEAR} +export DATA_ARGS_ERA5="-s ${START_YEAR} -n ${CURRENT_YEAR}" + +# FILE_IDENTIFIER will what the output filename is called +# ie asli_calculation_$FILE_IDENTIFIER.csv +# Depending on how you are organising your files, you might want this +# To be the CURRENT_YEAR, CURRENT_DATE or another unique ID +export FILE_IDENTIFIER=${CURRENT_YEAR} ``` +As for our data, this live in a dedicated folder called `DATA_DIR`. Let's move on to the code. + + +### Running the pipeline with shell scripts +Now that we have set our configuration, let's inspect the shell script which actually runs our pipeline, `run_asli_pipeline.sh`. -In this article, we provide a simplified demonstration of butterfly being used in a data processing pipeline. +```bash +#!/bin/bash +set -e +# Read in config file +source ENVS -# Demonstration of Butterfly in a data processing pipeline +# Activate virtual environment +source ${ASLI_VENV} -You can inspect the full source code of this pipeline in the repository [asli-pipeline](https://github.com/antarctica/asli-pipeline). +# Put all relevant directories in a list +DIR_LIST=($DATA_DIR $OUTPUT_DIR) -## Citations +# Create them if they do not exist +for dir in ${DIR_LIST[@]}; +do + if [ ! -d $dir ]; then + mkdir -p $dir + echo "Created $dir" + fi +done +``` +The above concerns setting up our pipeline with input and output directories, as well as fetching all environmental variables. + +Next is the calculation step, using the functionality from the `asli` package: -Andersson, T., & Hosking, J. (2021). Forecasts, neural networks, and results from the paper: 'Seasonal Arctic sea ice forecasting with probabilistic deep learning' (Version 1.0) [Data set]. NERC EDS UK Polar Data Centre. +```bash +# Fetch land sea mask, automatically writes in data directory +# Everything is pre-set in asli functions, no arguments needed for our purpose +asli_data_lsm -Andersson, T.R., Hosking, J.S., Pérez-Ortiz, M. *et al.* Seasonal Arctic sea ice forecasting with probabilistic deep learning. *Nat Commun* **12**, 5124 (2021). +# Downloading latest ERA5 data, provide information to the user +echo "Requesting with the following arguments: $DATA_ARGS_ERA5". +asli_data_era5 $DATA_ARGS_ERA5 + +# Run calculation, specifying output location +asli_calc $DATA_DIR/era5_mean_sea_level_pressure_monthly_*.nc -o $OUTPUT_DIR/asli_calculation_$FILE_IDENTIFIER.csv +``` + +Lovely, we now have our calculations ready in `$OUTPUT_DIR`, to rsync to a location given to us by the PDC. To do so for the first time, we will run: + +```bash +rsync $OUTPUT_DIR/*.csv $RSYNC_LOCATION +echo "Writing to $RSYNC_LOCATION." +``` +Let's pretend this was our first submission to the PDC. For any subsequent submission, we will want to use `butterfly` to compare our new results with the file we have just submitted to the `$RSYNC_LOCATION`, to make sure previous values have not changed. -Blair, Gordon S., and Peter A. Henrys. 2023. “The Role of Data Science in Environmental Digital Twins: In Praise of the Arrows.” Environmetrics 34 (January): Not available. https://doi.org/10.1002/env.2789. +### Incorporate R and `butterfly` into a shell-scripted pipeline -Hersbach, H., Bell, B., Berrisford, P., Biavati, G., Horányi, A., Muñoz Sabater, J., Nicolas, J., Peubey, C., Radu, R., Rozum, I., Schepers, D., Simmons, A., Soci, C., Dee, D., Thépaut, J-N. (2023): ERA5 hourly data on single levels from 1940 to present. Copernicus Climate Change Service (C3S) Climate Data Store (CDS), DOI: 10.24381/cds.adbb2d47 +We are going to implement this in an R script called `quality_control.R`, but we will have to provide it with our new calculations and the calculations we did previously and transferred to `$RSYNC_LOCATION`, like: -Hosking, J. S., A. Orr, T. J. Bracegirdle, and J. Turner (2016), Future circulation changes off West Antarctica: Sensitivity of the Amundsen Sea Low to projected anthropogenic forcing, Geophys. Res. Lett., 43, 367–376, . +```bash +Rscript quality_control.R "$OUTPUT_DIR/asli_calculation_$FILE_IDENTIFIER.csv" "$RSYNC_LOCATION/asli_calculation_$FILE_IDENTIFIER.csv" +``` +Here, `$OUTPUT_DIR/asli_calculation_$FILE_IDENTIFIER.csv` is our most recent calculation, in `quality_control.R` this will be referred to as `args[1]`. The previous calculation, `$RSYNC_LOCATION/asli_calculation_$FILE_IDENTIFIER.csv`, will be `args[2]`. + +Let's have a look at `quality_control.R` now. We started off with making this script executable by the shell, provide the user with some instructions on how to use the script, and by obtaining the arguments it was given in `args`. + +```R +#!/usr/bin/env Rscript +# Usage: Rscript 02_quality_control.R +# Obtain passed arguments +args = commandArgs(trailingOnly=TRUE) +``` + +Next, we will test if those arguments were actually provided, and if so we read in our files: + +```R +# Test if there is two arguments: the output and previous file +if (length(args)!=2) { + stop("Please provide the output file, and the file it is being compared to", call.=FALSE) +} else { + +# We are skipping 29 lines, because our file contains metadata at the top of the csv. + current_output <- readr::read_csv( + args[1], + skip = 29, + show_col_types = FALSE + ) + + existing_file <- readr::read_csv( + args[2], + skip = 29, + show_col_types = FALSE + ) +} +``` + +Great! Now that the files have been read in, we can start our quality assurance using `butterfly`. + +In this case, we will use `butterfly::loupe()` to give us our report, and return either TRUE (previous data has not changed, we are happy to proceed) or FALSE (a change in previous data has been detected, and we should abort data transfer). + +```R +# Use butterfly to check there are no changes to past data +qa_outcome <- butterfly::loupe( + current_output, + existing_file, + datetime_variable = "time" +) + +if (!isTRUE(qa_outcome)) { + stop( + "Previous values do not match. Stopping data transfer." + ) +} +``` + +The last check, `if (!isTRUE(qa_outcome))` will only trigger and stop the entire pipeline if a change has been detected. + +### The whole game + +We've inspected every bit of functionality in our pipeline, which can be summarised as: + 1. Reading in data, calculating asli values, and putting results in an output folder. + 2. Running quality assurance checks on results in the output folder, and comparing against those in the rsync location. + 3. Transferring results from the output folder to the rsync location, if quality assurance checks have passed. + +A sensible way of organising distinct steps in a pipeline, is to move different components of functionality into their own script. In our case we will have: `01_run_asli_calculations.sh`, `02_quality_control.R` and finally `03_export_file_to_pdc.sh`. + +Finally, let's update `run_asli_pipeline.sh` to make it easier to read. + +```bash +#!/bin/bash +set -e + +# Read in config file +source ENVS + +# Activate virtual environment +source ${ASLI_VENV} + +# Put all relevant directories in a list +DIR_LIST=($DATA_DIR $OUTPUT_DIR) + +# Create them if they do not exist +for dir in ${DIR_LIST[@]}; +do + if [ ! -d $dir ]; then + mkdir -p $dir + echo "Created $dir" + fi +done + +# Run calculations, writes an output file in $OUTPUT_DIR +bash 01_run_asli_calculations.sh + +# Check whether our new data has any changes from previously submitted data +Rscript 02_quality_control.R "$OUTPUT_DIR/asli_calculation_$FILE_IDENTIFIER.csv" "$RSYNC_LOCATION/asli_calculation_$FILE_IDENTIFIER.csv" + +# If successfuly, export our data to the PDC +bash 03_export_file_to_pdc.sh +``` +And there we are! Importantly, `02_quality_control.R` should be run before `03_export_file_to_pdc.sh`. Any failure in `02_quality_control.R` will prevent our data from reaching its destination. -Tazi, K. (2023). Downscaled ERA5 monthly precipitation data using Multi-Fidelity Gaussian Processes between 1980 and 2012 for the Upper Beas and Sutlej Basins, Himalayas (Version 1.0) [Data set]. NERC EDS UK Polar Data Centre. +Because `cli::cat_*()` warnings are used in `butterfly`, these should print to the shell automatically and allow you to diagnose where differences might have occurred. `cli::cat_abort()` will automatically stop a pipeline. From 679f181c02f8a7044583b61e716efd21b6b7be59 Mon Sep 17 00:00:00 2001 From: thomaszwagerman Date: Wed, 23 Oct 2024 12:54:03 +0100 Subject: [PATCH 04/10] rendering new article and pkgdown site --- vignettes/articles/butterfly_in_pipeline.Rmd | 41 ++++++++++++++------ vignettes/articles/butterfly_paper.Rmd | 5 +-- vignettes/butterfly.Rmd | 2 +- 3 files changed, 32 insertions(+), 16 deletions(-) diff --git a/vignettes/articles/butterfly_in_pipeline.Rmd b/vignettes/articles/butterfly_in_pipeline.Rmd index 2c8e426..d29e8aa 100644 --- a/vignettes/articles/butterfly_in_pipeline.Rmd +++ b/vignettes/articles/butterfly_in_pipeline.Rmd @@ -34,7 +34,7 @@ Let's fill in this diagram with the specifics of our example at BAS: **simple diagram with BAS** here. -For the Amundsen Sea Low Index (ASLI) dataset, we read in ERA5-msl, perform some calculations using the `asli` python package, and move our results to the Polar Data Centre (PDC). +For the Amundsen Sea Low Index (ASLI) dataset, we read in ERA5-msl, perform some calculations using the `asli` python package, and move our results to the [UK Polar Data Centre (PDC)](https://www.bas.ac.uk/data/uk-pdc/). However, as explained in ... the problem with using ERA5, is that it is subject to recalculation should an error be discovered. Any change in previous data, which has already been submitted to the PDC, would invalidate our DOI. @@ -46,12 +46,21 @@ Therefore, we want to impose some checks on our data, which abort data transfer ## A simplified pipeline +We try to separate our data, configuration and code when writing a pipeline. + +### Data + +Input data is downloaded from the [Climate Data Store API]() and stored in a dedicated input folder. Any subsequent calculation results are then stored in an output folder. + +Results for publication are then moved to a different location, provided to us by the PDC. + +All of these locations are defined in the configuration + ### Configuration -Let's have a look at some actual scripts now. We try to separate our data, code and configuration when writing a pipeline. Firstly let's look at our configuration, which is stored in an ENVS file: +Let's have a look at some actual scripts now. We try to separate our data, configuration and code when writing a pipeline. Firstly let's look at our configuration, which is stored in an `ENVS` file: ```bash -## ## Directories # Should not need editing, but you can do so if you wish # Location that pipeline is stored, referenced by most scripts @@ -87,10 +96,8 @@ export DATA_ARGS_ERA5="-s ${START_YEAR} -n ${CURRENT_YEAR}" export FILE_IDENTIFIER=${CURRENT_YEAR} ``` -As for our data, this live in a dedicated folder called `DATA_DIR`. Let's move on to the code. - +### Code -### Running the pipeline with shell scripts Now that we have set our configuration, let's inspect the shell script which actually runs our pipeline, `run_asli_pipeline.sh`. ```bash @@ -115,6 +122,7 @@ do fi done ``` + The above concerns setting up our pipeline with input and output directories, as well as fetching all environmental variables. Next is the calculation step, using the functionality from the `asli` package: @@ -138,16 +146,19 @@ Lovely, we now have our calculations ready in `$OUTPUT_DIR`, to rsync to a locat rsync $OUTPUT_DIR/*.csv $RSYNC_LOCATION echo "Writing to $RSYNC_LOCATION." ``` + Let's pretend this was our first submission to the PDC. For any subsequent submission, we will want to use `butterfly` to compare our new results with the file we have just submitted to the `$RSYNC_LOCATION`, to make sure previous values have not changed. -### Incorporate R and `butterfly` into a shell-scripted pipeline +#### Incorporate R and `butterfly` into a shell-scripted pipeline We are going to implement this in an R script called `quality_control.R`, but we will have to provide it with our new calculations and the calculations we did previously and transferred to `$RSYNC_LOCATION`, like: ```bash Rscript quality_control.R "$OUTPUT_DIR/asli_calculation_$FILE_IDENTIFIER.csv" "$RSYNC_LOCATION/asli_calculation_$FILE_IDENTIFIER.csv" ``` -Here, `$OUTPUT_DIR/asli_calculation_$FILE_IDENTIFIER.csv` is our most recent calculation, in `quality_control.R` this will be referred to as `args[1]`. The previous calculation, `$RSYNC_LOCATION/asli_calculation_$FILE_IDENTIFIER.csv`, will be `args[2]`. + +Here, `$OUTPUT_DIR/asli_calculation_$FILE_IDENTIFIER.csv` is our most recent calculation, in `quality_control.R` this will be referred to as `args[1]`. +The previous calculation, `$RSYNC_LOCATION/asli_calculation_$FILE_IDENTIFIER.csv`, will be `args[2]`. Let's have a look at `quality_control.R` now. We started off with making this script executable by the shell, provide the user with some instructions on how to use the script, and by obtaining the arguments it was given in `args`. @@ -202,14 +213,19 @@ if (!isTRUE(qa_outcome)) { The last check, `if (!isTRUE(qa_outcome))` will only trigger and stop the entire pipeline if a change has been detected. -### The whole game +## The whole game We've inspected every bit of functionality in our pipeline, which can be summarised as: + 1. Reading in data, calculating asli values, and putting results in an output folder. 2. Running quality assurance checks on results in the output folder, and comparing against those in the rsync location. 3. Transferring results from the output folder to the rsync location, if quality assurance checks have passed. -A sensible way of organising distinct steps in a pipeline, is to move different components of functionality into their own script. In our case we will have: `01_run_asli_calculations.sh`, `02_quality_control.R` and finally `03_export_file_to_pdc.sh`. +A sensible way of organising distinct steps in a pipeline, is to move different components of functionality into their own script. In our case we will have: + + 1. `01_run_asli_calculations.sh` + 2. `02_quality_control.R` + 3. `03_export_file_to_pdc.sh`. Finally, let's update `run_asli_pipeline.sh` to make it easier to read. @@ -244,6 +260,9 @@ Rscript 02_quality_control.R "$OUTPUT_DIR/asli_calculation_$FILE_IDENTIFIER.csv" # If successfuly, export our data to the PDC bash 03_export_file_to_pdc.sh ``` -And there we are! Importantly, `02_quality_control.R` should be run before `03_export_file_to_pdc.sh`. Any failure in `02_quality_control.R` will prevent our data from reaching its destination. +And there we are! Importantly, `02_quality_control.R` should be run before `03_export_file_to_pdc.sh`. Because `cli::cat_*()` warnings are used in `butterfly`, these should print to the shell automatically and allow you to diagnose where differences might have occurred. `cli::cat_abort()` will automatically stop a pipeline. + +Therefore, any failure in `02_quality_control.R` will prevent our data from reaching its destination. + diff --git a/vignettes/articles/butterfly_paper.Rmd b/vignettes/articles/butterfly_paper.Rmd index 2a276ec..a561c81 100644 --- a/vignettes/articles/butterfly_paper.Rmd +++ b/vignettes/articles/butterfly_paper.Rmd @@ -14,7 +14,6 @@ affiliations: - name: British Antarctic Survey, UK index: 1 date: 23 October 2024 -bibliography: paper.bib --- ```{r, include = FALSE} @@ -24,9 +23,7 @@ knitr::opts_chunk$set( ) ``` -```{r setup} -library(butterfly) -``` +#> left out bibliography: paper.bib from yaml # Summary diff --git a/vignettes/butterfly.Rmd b/vignettes/butterfly.Rmd index 3e802b7..2625d19 100644 --- a/vignettes/butterfly.Rmd +++ b/vignettes/butterfly.Rmd @@ -121,7 +121,7 @@ This dataset is entirely fictional, and merely included to aid demonstrating but ## A note on controlling verbosity - +Although verbosity is mostly the purpose if this package, **should** you wish to silence messages and warnings, you can do so with `options(rlib_message_verbosity = "quiet")` and options `(rlib_warning_verbosity = "quiet")`. ## Incorporating in data pipeline From d0335025b6c474e8f3ac8dd64d19586d7d2d8e1d Mon Sep 17 00:00:00 2001 From: thomaszwagerman Date: Wed, 23 Oct 2024 14:22:21 +0100 Subject: [PATCH 05/10] adding diagrams to article --- vignettes/articles/butterfly_in_pipeline.Rmd | 31 +++++++++--------- vignettes/articles/img/bas_example.png | Bin 0 -> 22656 bytes .../articles/img/full_pipeline_example.png | Bin 0 -> 75090 bytes vignettes/articles/img/simple_diagram.png | Bin 0 -> 12237 bytes 4 files changed, 15 insertions(+), 16 deletions(-) create mode 100644 vignettes/articles/img/bas_example.png create mode 100644 vignettes/articles/img/full_pipeline_example.png create mode 100644 vignettes/articles/img/simple_diagram.png diff --git a/vignettes/articles/butterfly_in_pipeline.Rmd b/vignettes/articles/butterfly_in_pipeline.Rmd index d29e8aa..f9e6937 100644 --- a/vignettes/articles/butterfly_in_pipeline.Rmd +++ b/vignettes/articles/butterfly_in_pipeline.Rmd @@ -1,18 +1,5 @@ --- title: 'Using butterfly in a data processing pipeline' -tags: - - R - - quality assurance - - timeseries - - ERA5 -authors: - - name: Thomas Zwagerman - orcid: 0000-0000-0000-0000 - affiliation: 1 -affiliations: - - name: British Antarctic Survey, UK - index: 1 -date: 23 October 2024 --- ```{r, include = FALSE} @@ -22,17 +9,27 @@ knitr::opts_chunk$set( ) ``` + + This article is a **simplified** demonstration of a real data processing pipeline we implemented at the British Antarctic Survey called asli-pipeline. You can inspect the full source code of this pipeline in the repository: [asli-pipeline repository](https://github.com/antarctica/asli-pipeline). ## Pipeline functionality overview Consider a classic input/output (I/O) data processing pipeline where we read in data from an external source, perform some sort of calculation to it, and transfer the output to a different location. In our case, we run this pipeline on a monthly basis. -**simple diagram** here. +```{r simple_example, out.width = '100%', fig.align='center', echo = FALSE, fig.cap="A simple diagram showing the steps in a generic data processing pipeline."} +knitr::include_graphics("img/simple_diagram.png") +``` Let's fill in this diagram with the specifics of our example at BAS: -**simple diagram with BAS** here. +```{r bas_example, out.width = '100%', fig.align='center', echo = FALSE, fig.cap="A diagram showing the steps in our British Antarctic Survey data processing pipeline to calculate and publish the Amundsen Sea Low Index dataset."} +knitr::include_graphics("img/bas_example.png") +``` For the Amundsen Sea Low Index (ASLI) dataset, we read in ERA5-msl, perform some calculations using the `asli` python package, and move our results to the [UK Polar Data Centre (PDC)](https://www.bas.ac.uk/data/uk-pdc/). @@ -40,7 +37,9 @@ However, as explained in ... the problem with using ERA5, is that it is subject Therefore, we want to impose some checks on our data, which abort data transfer should such a change be discovered. -**simple diagram with stop here** +```{r full_example, out.width = '100%', fig.align='center', echo = FALSE, fig.cap="A diagram showing the steps in our British Antarctic Survey data processing pipeline to calculate and publish the Amundsen Sea Low Index dataset, while using butterfly to check for unexpected changes in our results."} +knitr::include_graphics("img/full_pipeline_example.png") +``` ... and this is where butterfly comes in. diff --git a/vignettes/articles/img/bas_example.png b/vignettes/articles/img/bas_example.png new file mode 100644 index 0000000000000000000000000000000000000000..bb6b6f92184cd1c344233a696828bf27d4fb5d62 GIT binary patch literal 22656 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 MZ3ASD=IyBe0(;G?rvLx| literal 0 HcmV?d00001 diff --git a/vignettes/articles/img/full_pipeline_example.png b/vignettes/articles/img/full_pipeline_example.png new file mode 100644 index 0000000000000000000000000000000000000000..c5a829e83a66056c2f2ff80d525fa5e639285d36 GIT binary patch literal 75090 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 literal 0 HcmV?d00001 diff --git a/vignettes/articles/img/simple_diagram.png b/vignettes/articles/img/simple_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..fb0b3fcf140fbfa9a0d91c2c6ef08fecb6df5c56 GIT binary patch literal 12237 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 literal 0 HcmV?d00001 From 88f70ec1b816bcb7d56042f5bfc18aed9d909614 Mon Sep 17 00:00:00 2001 From: thomaszwagerman Date: Wed, 23 Oct 2024 16:18:20 +0100 Subject: [PATCH 06/10] breaking up in chapters, adding next steps --- vignettes/articles/butterfly_in_pipeline.Rmd | 161 ++++++++++++++---- vignettes/articles/img/pipe_dream_diagram.png | Bin 0 -> 130329 bytes 2 files changed, 124 insertions(+), 37 deletions(-) create mode 100644 vignettes/articles/img/pipe_dream_diagram.png diff --git a/vignettes/articles/butterfly_in_pipeline.Rmd b/vignettes/articles/butterfly_in_pipeline.Rmd index f9e6937..0d730d0 100644 --- a/vignettes/articles/butterfly_in_pipeline.Rmd +++ b/vignettes/articles/butterfly_in_pipeline.Rmd @@ -11,53 +11,121 @@ knitr::opts_chunk$set( -This article is a **simplified** demonstration of a real data processing pipeline we implemented at the British Antarctic Survey called asli-pipeline. You can inspect the full source code of this pipeline in the repository: [asli-pipeline repository](https://github.com/antarctica/asli-pipeline). +This article is a **simplified** demonstration of a real data processing pipeline we implemented at the British Antarctic Survey called asli-pipeline. You can inspect the full source code of this pipeline in the repository: [asli-pipeline repository](https://github.com/antarctica/asli-pipeline) (Zwagerman & Wilby). -## Pipeline functionality overview +This package was originally developed to deal with [ERA5](https://cds.climate.copernicus.eu/datasets/reanalysis-era5-single-levels?tab=documentation)'s initial release data, **ERA5T**. ERA5T data for a month is overwritten with the final ERA5 data two months after the month in question. -Consider a classic input/output (I/O) data processing pipeline where we read in data from an external source, perform some sort of calculation to it, and transfer the output to a different location. In our case, we run this pipeline on a monthly basis. +Usually ERA5 and ERA5T are identical, but occasionally an issue with input data can (for example for [09/21 - 12/21](https://confluence.ecmwf.int/display/CKB/ERA5T+issue+in+snow+depth), and [07/24](https://forum.ecmwf.int/t/final-validated-era5-product-to-differ-from-era5t-in-july-2024/6685)) force a recalculation, meaning previously published data differs from the final product. + +In a pipeline that generates ERA5-derived data, and continually updates and **publishes** this data, we therefore need to robustly ensure that previous ERA5 data changing does not affect our published outputs. + +## Pipeline overview + +Consider a classic input/output (I/O) data processing pipeline where we read in data from an external source, perform some sort of calculation to it, and transfer the output to a different location. ```{r simple_example, out.width = '100%', fig.align='center', echo = FALSE, fig.cap="A simple diagram showing the steps in a generic data processing pipeline."} knitr::include_graphics("img/simple_diagram.png") ``` -Let's fill in this diagram with the specifics of our example at BAS: +We use a pipeline to calculate the **'Amundsen Sea Low Index'**, or ASLI. The Amundsen Seas Low (ASL) is a highly dynamic and mobile climatological low pressure system located in the Pacific sector of the Southern Ocean. If you are interested in ASLI, and why these values are significant for environmental forecasting, please refer to [Hosking et al. (2016)](https://doi.org/10.1002/2015GL067143). + +In our case, we run this pipeline on a monthly basis: ```{r bas_example, out.width = '100%', fig.align='center', echo = FALSE, fig.cap="A diagram showing the steps in our British Antarctic Survey data processing pipeline to calculate and publish the Amundsen Sea Low Index dataset."} knitr::include_graphics("img/bas_example.png") ``` -For the Amundsen Sea Low Index (ASLI) dataset, we read in ERA5-msl, perform some calculations using the `asli` python package, and move our results to the [UK Polar Data Centre (PDC)](https://www.bas.ac.uk/data/uk-pdc/). +To generate the ASLI dataset, we read in ERA5 mean sea level pressure, perform some calculations using the `asli` [python package](https://github.com/davidwilby/amundsen-sea-low-index) (Hosking & Wilby), and move our results to the [UK Polar Data Centre (PDC)](https://www.bas.ac.uk/data/uk-pdc/), where our dataset will be published and minted with a **Digital Object Identifier (DOI)**. Our aim is to update this dataset on a monthly basis, either appending new rows to it, or re-writing the dataset entirely. + +But remember, any change in previous ERA5 data, will also change the results of all our previous ASLI calculations. + +If this happened and we: + + * _overwrite our dataset_, we would be **changing values** in an already-published dataset. + * _append our existing dataset_, anyone attempting to **reproduce** our methods would get different results. -However, as explained in ... the problem with using ERA5, is that it is subject to recalculation should an error be discovered. Any change in previous data, which has already been submitted to the PDC, would invalidate our DOI. +Either way, this would invalidate our DOI and force republication. -Therefore, we want to impose some checks on our data, which abort data transfer should such a change be discovered. +Keeping up-to-date with the [Climate Data Store's Forum](https://forum.ecmwf.int/c/announcements/5) to monitor changes would be a time-consuming task, and not a reliable way to detect changes. + +## Quality assurance using `butterfly` in a pipeline + +To maintain the integrity of our published dataset, we need to impose robust checks to ensure our new results match our published data, where we expect it to. ```{r full_example, out.width = '100%', fig.align='center', echo = FALSE, fig.cap="A diagram showing the steps in our British Antarctic Survey data processing pipeline to calculate and publish the Amundsen Sea Low Index dataset, while using butterfly to check for unexpected changes in our results."} knitr::include_graphics("img/full_pipeline_example.png") ``` -... and this is where butterfly comes in. - -## A simplified pipeline +... and this is where `butterfly` comes in. -We try to separate our data, configuration and code when writing a pipeline. +When developing a pipeline, we separate our **data**, **configuration** and **code**. ### Data -Input data is downloaded from the [Climate Data Store API]() and stored in a dedicated input folder. Any subsequent calculation results are then stored in an output folder. +For the purpose of this article, details of the dataset itself are not important. But for reference, below is a subset of the ASLI dataset: + +```{r asli_dataset, echo = FALSE} +# A note for maintainers: +# Currently, to run and built this section of the article, access to asli object store is required. +# How to obtain access is described in the asli-pipeline repository. + +# When this dataset is published on the PDC, this section will be rewritten to read data directly from there. +s3_config <- ini::read.ini( + "~/.s3cfg" +) + +# Get s3 body +s3 <- paws::s3( + credentials = list( + creds = list( + access_key_id = s3_config$default$access_key, + secret_access_key = s3_config$default$secret_key + ) + ), + endpoint = paste0( + "https://", s3_config$default$host_base + ) +) + +s3_bucket <- s3$get_object( + # Removing s3:// pre-fix, as paws adds this itself + Bucket = "asli", + Key = "asli_calculation_2024.csv" +) + +existing_file <- s3_bucket$Body |> + rawToChar() |> + readr::read_csv( + skip = 29, + show_col_types = FALSE + ) + +kableExtra::kbl( + existing_file[(nrow(existing_file) - 3):nrow(existing_file) - 1,] +) +``` + +In the subsequent month we run the pipeline again, and a row is added, because a new month of ERA5 data has since been released. -Results for publication are then moved to a different location, provided to us by the PDC. +As you can see, all data for previous months are also included in the data: -All of these locations are defined in the configuration +```{r subsequent_month, echo=FALSE} +knitr::kable( + existing_file[(nrow(existing_file) - 4):nrow(existing_file),] +) |> + kableExtra::row_spec(5, background = "#4ba371") + +``` + +This is what will be submitted to the PDC. ### Configuration -Let's have a look at some actual scripts now. We try to separate our data, configuration and code when writing a pipeline. Firstly let's look at our configuration, which is stored in an `ENVS` file: +Firstly let's look at our configuration, which is stored in an `ENVS` file. This determines the locations of our input data, our output data and where we will eventually publish our data, among other useful parameters: ```bash ## Directories @@ -164,6 +232,7 @@ Let's have a look at `quality_control.R` now. We started off with making this sc ```R #!/usr/bin/env Rscript # Usage: Rscript 02_quality_control.R + # Obtain passed arguments args = commandArgs(trailingOnly=TRUE) ``` @@ -173,21 +242,19 @@ Next, we will test if those arguments were actually provided, and if so we read ```R # Test if there is two arguments: the output and previous file if (length(args)!=2) { - stop("Please provide the output file, and the file it is being compared to", call.=FALSE) + stop( + "Please provide the output file, and the file it is being compared to", call.=FALSE + ) } else { -# We are skipping 29 lines, because our file contains metadata at the top of the csv. - current_output <- readr::read_csv( - args[1], - skip = 29, - show_col_types = FALSE - ) +current_output <- readr::read_csv( + args[1] +) + +existing_file <- readr::read_csv( + args[2] +) - existing_file <- readr::read_csv( - args[2], - skip = 29, - show_col_types = FALSE - ) } ``` @@ -205,7 +272,7 @@ qa_outcome <- butterfly::loupe( if (!isTRUE(qa_outcome)) { stop( - "Previous values do not match. Stopping data transfer." + "Previous values do not match. Stopping data transfer." ) } ``` @@ -216,15 +283,15 @@ The last check, `if (!isTRUE(qa_outcome))` will only trigger and stop the entire We've inspected every bit of functionality in our pipeline, which can be summarised as: - 1. Reading in data, calculating asli values, and putting results in an output folder. - 2. Running quality assurance checks on results in the output folder, and comparing against those in the rsync location. - 3. Transferring results from the output folder to the rsync location, if quality assurance checks have passed. - +1. Reading in data, calculating asli values, and putting results in an output folder. +2. Running quality assurance checks on results in the output folder, and comparing against those in the rsync location. +3. Transferring results from the output folder to the rsync location, if quality assurance checks have passed. + A sensible way of organising distinct steps in a pipeline, is to move different components of functionality into their own script. In our case we will have: - - 1. `01_run_asli_calculations.sh` - 2. `02_quality_control.R` - 3. `03_export_file_to_pdc.sh`. + +1. `01_run_asli_calculations.sh` +2. `02_quality_control.R` +3. `03_export_file_to_pdc.sh`. Finally, let's update `run_asli_pipeline.sh` to make it easier to read. @@ -265,3 +332,23 @@ Because `cli::cat_*()` warnings are used in `butterfly`, these should print to t Therefore, any failure in `02_quality_control.R` will prevent our data from reaching its destination. +## So what's next? + +So, `butterfly` did its job, detected changes and stopped data transfer... _now what?_ + +Currently, it is set up to warn the user, who can intervene in the process manually. The next step would be to make the published data static, as we are now no longer appending it. We then supersede it with out new data, and restart the process. + +A future aim would be however, to do this automatically: + +```{r pipe_dream, out.width = '100%', fig.align='center', echo = FALSE, fig.cap="A diagram showing next steps in an automated data processing and publishing pipeline, incorporating automated archival and supserceding."} +knitr::include_graphics("img/pipe_dream_diagram.png") +``` + +This is a lot more complex to handle however, especially considering currently DOIs are minted manually, regardless of data state. Perhaps some form of human intervention will always be required, but one can dream! + +## References +Hosking, J. S., A. Orr, T. J. Bracegirdle, and J. Turner (2016), Future circulation changes off West Antarctica: Sensitivity of the Amundsen Sea Low to projected anthropogenic forcing, Geophys. Res. Lett., 43, 367–376, . + +Hosking, J. S., & Wilby, D. asli [Computer software]. https://github.com/scotthosking/amundsen-sea-low-index + +Zwagerman, T., & Wilby, D. asli-pipeline [Computer software]. https://github.com/antarctica/boost-eds-pipeline diff --git a/vignettes/articles/img/pipe_dream_diagram.png b/vignettes/articles/img/pipe_dream_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..9c710b5ff8be8b50266dcdc47425974ef8791d3c GIT binary patch literal 130329 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≷ive{f(!>mc3*!P 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 Date: Wed, 23 Oct 2024 16:20:19 +0100 Subject: [PATCH 07/10] remove paper rmd continues in paper branch --- vignettes/articles/butterfly_paper.Rmd | 74 -------------------------- 1 file changed, 74 deletions(-) delete mode 100644 vignettes/articles/butterfly_paper.Rmd diff --git a/vignettes/articles/butterfly_paper.Rmd b/vignettes/articles/butterfly_paper.Rmd deleted file mode 100644 index a561c81..0000000 --- a/vignettes/articles/butterfly_paper.Rmd +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: 'butterfly: An R package for the quality assurance of continually updating timeseries' -tags: - - R - - quality assurance - - timeseries - - ERA5 -authors: - - name: Thomas Zwagerman - orcid: 0000-0000-0000-0000 - equal-contrib: true - affiliation: 1 -affiliations: - - name: British Antarctic Survey, UK - index: 1 -date: 23 October 2024 ---- - -```{r, include = FALSE} -knitr::opts_chunk$set( - collapse = TRUE, - comment = "#>" -) -``` - -#> left out bibliography: paper.bib from yaml - -# Summary - -# Statement of Need -At the British Antarctic Survey (BAS), we developed this package to deal with a very specific issue. - -Quality assurance in continually updating and continually published ERA5-derived data. - -At BAS, we frequently use ERA5 (Hersbach et al. 2023) as an input to climate models. - -IceNet a sea ice prediction system based on deep learning (Andersson et al. 2021) - -ERA5-derived data. - -## The issue with ERA5 and ERA5-Interim -This package was originally developed to deal with [ERA5](https://cds.climate.copernicus.eu/datasets/reanalysis-era5-single-levels?tab=documentation)'s initial release data, ERA5T. ERA5T data for a month is overwritten with the final ERA5 data two months after the month in question. - -Usually ERA5 and ERA5T are identical, but occasionally an issue with input data can (for example for [09/21 - 12/21](https://confluence.ecmwf.int/display/CKB/ERA5T+issue+in+snow+depth), and [07/24](https://forum.ecmwf.int/t/final-validated-era5-product-to-differ-from-era5t-in-july-2024/6685)) force a recalculation, meaning previously published data differs from the final product. - -In most cases, this is not an issue. For static data publications which are a snapshot in time, such as data associated with a specific paper, as in "Forecasts, neural networks, and results from the paper: 'Seasonal Arctic sea ice forecasting with probabilistic deep learning'" [Andersson & Hosking (2021)](https://data.bas.ac.uk/full-record.php?id=GB/NERC/BAS/PDC/01526) or time period as in "Downscaled ERA5 monthly precipitation data using Multi-Fidelity Gaussian Processes between 1980 and 2012 for the Upper Beas and Sutlej Basins, Himalaya" [Tazi (2023)](https://data.bas.ac.uk/full-record.php?id=GB/NERC/BAS/PDC/01769), this is not an issue. These datasets clearly describe a version and time period of ERA5 from which the data were derived, and will not be amended or updated in the future, even if ERA5 is recalculated. - -In our case however we want to continually append ERA5-derived datasets **and** continually publish them. This would be useful when functioning as a data source for an environmental digital twin (Blair & Hendrys, 2023), or simply as input data into an environmental forecasting model which itself is frequently running. - -Continually appending **and** publishing will require strict quality assurance. If a published dataset is only appended a DOI can be minted for it.  However, if the previously published data change, this will then invalidate the DOI.  For example, if you developed your code to find a better measure (more accurate, more precise) of the low pressure region, and wanted to reanalyse the previous data and republish. - -One such ERA5-derived dataset which we (will hopefully soon!) publish at BAS is the Amundsen Sea Low Index (ASLI). - -## What is the Amundsen Sea Low Index - -The Amundsen Seas Low (ASL) is a highly dynamic and mobile climatological low pressure system located in the Pacific sector of the Southern Ocean. In this sector, variability in sea-level pressure is greater than anywhere in the Southern Hemisphere, making it challenging to isolate local fluctuations in the ASL from larger-scale shifts in atmospheric pressure. The position and strength of the ASL are crucial for understanding regional change over West Antarctica (Hosking et al. 2016). - -# Citations - -# Acknowledgements - -# References - -Andersson, T., & Hosking, J. (2021). Forecasts, neural networks, and results from the paper: 'Seasonal Arctic sea ice forecasting with probabilistic deep learning' (Version 1.0) [Data set]. NERC EDS UK Polar Data Centre. - -Andersson, T.R., Hosking, J.S., Pérez-Ortiz, M. *et al.* Seasonal Arctic sea ice forecasting with probabilistic deep learning. *Nat Commun* **12**, 5124 (2021). - -Blair, Gordon S., and Peter A. Henrys. 2023. “The Role of Data Science in Environmental Digital Twins: In Praise of the Arrows.” Environmetrics 34 (January): Not available. https://doi.org/10.1002/env.2789. - -Hersbach, H., Bell, B., Berrisford, P., Biavati, G., Horányi, A., Muñoz Sabater, J., Nicolas, J., Peubey, C., Radu, R., Rozum, I., Schepers, D., Simmons, A., Soci, C., Dee, D., Thépaut, J-N. (2023): ERA5 hourly data on single levels from 1940 to present. Copernicus Climate Change Service (C3S) Climate Data Store (CDS), DOI: 10.24381/cds.adbb2d47 - -Hosking, J. S., A. Orr, T. J. Bracegirdle, and J. Turner (2016), Future circulation changes off West Antarctica: Sensitivity of the Amundsen Sea Low to projected anthropogenic forcing, Geophys. Res. Lett., 43, 367–376, . - -Tazi, K. (2023). Downscaled ERA5 monthly precipitation data using Multi-Fidelity Gaussian Processes between 1980 and 2012 for the Upper Beas and Sutlej Basins, Himalayas (Version 1.0) [Data set]. NERC EDS UK Polar Data Centre. From fd49980f8736102a484b9ad742ebda7468a2b575 Mon Sep 17 00:00:00 2001 From: thomaszwagerman Date: Wed, 23 Oct 2024 16:30:23 +0100 Subject: [PATCH 08/10] replace s3 with github csv --- vignettes/articles/butterfly_in_pipeline.Rmd | 33 ++------------------ 1 file changed, 2 insertions(+), 31 deletions(-) diff --git a/vignettes/articles/butterfly_in_pipeline.Rmd b/vignettes/articles/butterfly_in_pipeline.Rmd index 0d730d0..f60e92b 100644 --- a/vignettes/articles/butterfly_in_pipeline.Rmd +++ b/vignettes/articles/butterfly_in_pipeline.Rmd @@ -69,37 +69,8 @@ When developing a pipeline, we separate our **data**, **configuration** and **co For the purpose of this article, details of the dataset itself are not important. But for reference, below is a subset of the ASLI dataset: ```{r asli_dataset, echo = FALSE} -# A note for maintainers: -# Currently, to run and built this section of the article, access to asli object store is required. -# How to obtain access is described in the asli-pipeline repository. - -# When this dataset is published on the PDC, this section will be rewritten to read data directly from there. -s3_config <- ini::read.ini( - "~/.s3cfg" -) - -# Get s3 body -s3 <- paws::s3( - credentials = list( - creds = list( - access_key_id = s3_config$default$access_key, - secret_access_key = s3_config$default$secret_key - ) - ), - endpoint = paste0( - "https://", s3_config$default$host_base - ) -) - -s3_bucket <- s3$get_object( - # Removing s3:// pre-fix, as paws adds this itself - Bucket = "asli", - Key = "asli_calculation_2024.csv" -) - -existing_file <- s3_bucket$Body |> - rawToChar() |> - readr::read_csv( +existing_file <- readr::read_csv( + "https://raw.githubusercontent.com/scotthosking/amundsen-sea-low-index/master/asli_era5_v3-latest.csv", skip = 29, show_col_types = FALSE ) From 5d77b62d9ad9ac34b7bb2b79317d4bd80a4cc018 Mon Sep 17 00:00:00 2001 From: thomaszwagerman Date: Wed, 23 Oct 2024 16:36:40 +0100 Subject: [PATCH 09/10] remove use of readr package --- vignettes/articles/butterfly_in_pipeline.Rmd | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/vignettes/articles/butterfly_in_pipeline.Rmd b/vignettes/articles/butterfly_in_pipeline.Rmd index f60e92b..8552eb0 100644 --- a/vignettes/articles/butterfly_in_pipeline.Rmd +++ b/vignettes/articles/butterfly_in_pipeline.Rmd @@ -69,10 +69,9 @@ When developing a pipeline, we separate our **data**, **configuration** and **co For the purpose of this article, details of the dataset itself are not important. But for reference, below is a subset of the ASLI dataset: ```{r asli_dataset, echo = FALSE} -existing_file <- readr::read_csv( +existing_file <- read.csv( "https://raw.githubusercontent.com/scotthosking/amundsen-sea-low-index/master/asli_era5_v3-latest.csv", - skip = 29, - show_col_types = FALSE + skip = 29 ) kableExtra::kbl( From c130a902fca0ddb73710126bca63bb9e0ec8e3f5 Mon Sep 17 00:00:00 2001 From: thomaszwagerman Date: Wed, 23 Oct 2024 16:41:47 +0100 Subject: [PATCH 10/10] remove use of kableExtra --- vignettes/articles/butterfly_in_pipeline.Rmd | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/vignettes/articles/butterfly_in_pipeline.Rmd b/vignettes/articles/butterfly_in_pipeline.Rmd index 8552eb0..5615fe5 100644 --- a/vignettes/articles/butterfly_in_pipeline.Rmd +++ b/vignettes/articles/butterfly_in_pipeline.Rmd @@ -74,7 +74,7 @@ existing_file <- read.csv( skip = 29 ) -kableExtra::kbl( +knitr::kable( existing_file[(nrow(existing_file) - 3):nrow(existing_file) - 1,] ) ``` @@ -86,9 +86,7 @@ As you can see, all data for previous months are also included in the data: ```{r subsequent_month, echo=FALSE} knitr::kable( existing_file[(nrow(existing_file) - 4):nrow(existing_file),] -) |> - kableExtra::row_spec(5, background = "#4ba371") - +) ``` This is what will be submitted to the PDC.