---
# System prepended metadata

title: Clim-recal analysis pipeline flowchart

---

```mermaid

graph TB

subgraph Legend
    data_external[(external data)]
    data_fileshare[path to fileshare]
    script_r([R script])
    script_py([Python script])
    script_bash([Bash script])
    var[parameter]:::var
end

data_hads[(HADS)]
data_cpm[(UKCP2.2)]
data_shape_uk[("shapefile UK regions (incl London)")]
data_shape_gl[(shapefile Glasgow)]
data_shape_ma[(shapefile Manchester)]

script_load([ceda_ftp_download.py])

data_hads_raw[RAW/HadsUKgrid/../*.nc]
data_cpm_raw[RAW/UKCP2.2/../*.nc]
data_hads --> script_load
data_cpm --> script_load
script_load --> data_hads_raw
script_load --> data_cpm_raw


subgraph Preprocessing 1
    
    script_resampling([resampling_hads.py])
    script_reproject([reproject_all.sh])  
    
    data_hads_res[Processed/HadsUKgrid/../*.nc]
    data_cpm_rep[Reprojected/UKCP2.2/../*.tiff]

    
    script_resampling --> data_hads_res
    script_reproject --> data_cpm_rep
end

subgraph Cropping

    script_crop_city([Cropping_Rasters_to_three_cities.R])
    
    data_cropped[Cropped/three.cities/..]
    data_gl[../glasgow]
    data_ma[../manchester]
    data_lon[../london]
    data_shapefile_cities[shapefiles/three.cities]
    
    script_crop_city --> data_cropped
    script_crop_city --> data_shapefile_cities
    data_cropped --> data_gl
    data_cropped --> data_ma
    data_cropped --> data_lon
    
end

subgraph Preprocessing 2
    data_outdir[Cropped/three.cities/preprocessed/..]

    script_preproc([preprocess_data.py])
    
    data_out_train[../simh..]
    data_out_validate[../simp..]
    data_out_groundtruth_h[../obsh..]
    data_out_groundtruth_p[../obsp..]
    
    script_preproc --> data_outdir

    data_outdir --> data_out_train
    data_outdir --> data_out_validate
    data_outdir --> data_out_groundtruth


    subgraph inner_py[Execute Python pipeline]
        
        script_BC_wrapper[three_cities_debiasing.sh]
        param1["metric (eg tasmax)"]:::var
        param2["runs (eg 05)"]:::var
        param3["BC method (eg quantile_mapping)"]:::var
        param4[city]:::var

        script_BC_wrapper --> param1
        param1 --> param2
        param2 --> param3
        param3 --> param4
        param4 -- for loop --> script_preproc

        %% Looping connections
        param4 -.-> param3
        param3 -.-> param2
        param2 -.-> param1
    end
    
    subgraph inner_r[Execute R pipeline]
    
        script_crop_uk([Data_processing_todf.R])
        script_df_uk([Processing.data.for.LCAT.R])
        param1_r["metric (eg tasmax)"]:::var
        param2_r["runs (eg 05)"]:::var
        param3_r["segment"]:::var
        
        fn_bc([apply_qmapQuant_to_crpd_df_fn.R])
        data_interim_hads[Interim/HadsUK/Data_as_df/...]
        data_interim_cpm[Interim/CPM/Data_as_df/...]
        
        script_crop_uk -- cpm_read_crop_df_write --> data_interim_cpm
        script_crop_uk -- hads19802010_read_crop_df_write --> data_interim_hads
        data_interim_cpm --> script_df_uk
        data_interim_hads --> script_df_uk

        script_df_uk-->fn_bc
        
               
        script_df_uk--> param1_r
        param1_r --> param2_r
        param2_r --> param3_r
        param2_r -- apply_bias_correction_to_cropped_df --> fn_bc
        param3_r -- cropdf_further_apply_bc_to_cropped_df --> fn_bc
        
    end
end

subgraph assessment
    script_asses[tbc]
    data_out_groundtruth_p --> script_asses
end

subgraph Debiasing
    script_bc_py([run_cmethods.py])
    script_bc_r[[fitQmapQUANT.R]]

    
    data_out_py[Debiased/three.cities.cropped]
    data_out_r[Debiased/R/QuantileMapping/resultsL*]
    data_out_py --> script_asses
    data_out_r --> script_asses
    
    data_out_train --> script_bc_py
    data_out_train --> script_bc_py
    data_out_groundtruth --> script_bc_py
    
    script_bc_py-->data_out_py
    script_bc_r-->data_out_r
end

%% between block connections
%% input preproc 1
data_hads_raw --> script_resampling
data_cpm_raw --> script_reproject
%% input cropping
data_cpm_rep --> script_crop_city
    
data_hads_res --> script_crop_uk
data_hads_res --> script_crop_city
data_shape_uk --> script_crop_city
data_shape_ma --> script_crop_city
data_shape_gl --> script_crop_city

%% input preproc2
data_cpm_rep --> script_crop_uk
data_shape_uk --> script_crop_uk
data_gl --> script_preproc
data_ma --> script_preproc
data_lon --> script_preproc
%% input debiasing
fn_bc --> script_bc_r
data_gl --> script_bc_r
data_ma --> script_bc_r
data_lon --> script_bc_r
param4 -- for loop --> script_bc_py


%% class styles
classDef python fill:#4CAF50;
classDef r fill:#FF5722;
classDef bash fill:#f9f
classDef var fill:none,stroke:#0f0;
classDef dashed stroke-dasharray: 5 5; 

class script_crop_city,script_crop_uk,script_bc_r,script_r,script_df_uk,function_bc,function_crop_bc,fn_crop_cpm,fn_crop_hads,fn_bc r;
class script_load,script_resampling,script_preproc,script_bc_py,script_py python;
class script_reproject,script_BC_wrapper,script_bash bash;
class inner_py dashed;
class inner_r dashed;
```
