Last updated: 2021-11-12

Checks: 7 0

Knit directory: emlr_obs_v_XXX/

This reproducible R Markdown analysis was created with workflowr (version 1.6.2). The Checks tab describes the reproducibility checks that were applied when the results were created. The Past versions tab lists the development history.


Great! Since the R Markdown file has been committed to the Git repository, you know the exact version of the code that produced these results.

Great job! The global environment was empty. Objects defined in the global environment can affect the analysis in your R Markdown file in unknown ways. For reproduciblity it’s best to always run the code in an empty environment.

The command set.seed(20200707) was run prior to running the code in the R Markdown file. Setting a seed ensures that any results that rely on randomness, e.g. subsampling or permutations, are reproducible.

Great job! Recording the operating system, R version, and package versions is critical for reproducibility.

Nice! There were no cached chunks for this analysis, so you can be confident that you successfully produced the results during this run.

Great job! Using relative paths to the files within your workflowr project makes it easier to run your code on other machines.

Great! You are using Git for version control. Tracking code development and connecting the code version to the results is critical for reproducibility.

The results in this page were generated with repository version 13a030c. See the Past versions tab to see a history of the changes made to the R Markdown and HTML files.

Note that you need to be careful to ensure that all relevant files for the analysis have been committed to Git prior to generating the results (you can use wflow_publish or wflow_git_commit). workflowr only checks the R Markdown file, but you know if there are other scripts or data files that it depends on. Below is the status of the Git repository when the results were generated:


Ignored files:
    Ignored:    .Rhistory
    Ignored:    .Rproj.user/

Note that any generated files, e.g. HTML, png, CSS, etc., are not included in this status report because it is ok for generated content to have uncommitted changes.


These are the previous versions of the repository in which changes were made to the R Markdown (analysis/tracers_GLODAPv2_2021.Rmd) and HTML (docs/tracers_GLODAPv2_2021.html) files. If you’ve configured a remote Git repository (see ?wflow_git_remote), click on the hyperlinks in the table below to view the files as they were in that past version.

File Version Author Date Message
Rmd 13a030c jens-daniel-mueller 2021-11-12 add zonal mean section of gridded dcant per CFC
html 20e7603 jens-daniel-mueller 2021-11-12 Build site.
Rmd 6b9a242 jens-daniel-mueller 2021-11-12 add zonal mean section of gridded dcant and CFC
html 654ab1b jens-daniel-mueller 2021-11-12 Build site.
Rmd b0cf2af jens-daniel-mueller 2021-11-12 add pseudo-log transformation and zonal mean mapping function
html 950d8e7 jens-daniel-mueller 2021-11-12 Build site.
Rmd 2127c9d jens-daniel-mueller 2021-11-12 add pseudo-log transformation and zonal mean mapping function
html 98d9e33 jens-daniel-mueller 2021-11-11 Build site.
html 38cad1d jens-daniel-mueller 2021-11-11 Build site.
Rmd 2b7d6d5 jens-daniel-mueller 2021-11-11 update plot correlation of dCant to cfc12 data
html 4e4c0b7 jens-daniel-mueller 2021-11-11 Build site.
Rmd e12c27c jens-daniel-mueller 2021-11-11 plot correlation of dCant to cfc12 data
html 07ccee8 jens-daniel-mueller 2021-11-11 Build site.
Rmd 4e79444 jens-daniel-mueller 2021-11-11 read gridded cfc12 data
html d3cb92d jens-daniel-mueller 2021-11-08 Build site.
html 3879a6d jens-daniel-mueller 2021-11-08 Build site.
html dfdb778 jens-daniel-mueller 2021-11-04 Build site.
Rmd f88f11c jens-daniel-mueller 2021-11-04 zonal mean section plots modified
html e3faf2f jens-daniel-mueller 2021-11-04 Build site.
Rmd f8331c3 jens-daniel-mueller 2021-11-04 zonal mean section plots modified
html 1d4c657 jens-daniel-mueller 2021-11-04 Build site.
Rmd e3b9785 jens-daniel-mueller 2021-11-04 zonal mean section plots modified
html 0e032dc jens-daniel-mueller 2021-11-04 Build site.
Rmd 5ca91b7 jens-daniel-mueller 2021-11-04 rerun standard
html abcd28f jens-daniel-mueller 2021-11-02 Build site.
html 290c8fc jens-daniel-mueller 2021-11-02 Build site.
html e02acc9 jens-daniel-mueller 2021-11-01 Build site.
html ceea35b jens-daniel-mueller 2021-11-01 Build site.
Rmd a4179fc jens-daniel-mueller 2021-11-01 zonal mean section plots
html 58da811 jens-daniel-mueller 2021-11-01 Build site.
html 2781a97 jens-daniel-mueller 2021-10-29 Build site.
html 973192c jens-daniel-mueller 2021-10-28 Build site.
Rmd 0b14406 jens-daniel-mueller 2021-10-28 added tracer plots and test without O2 data

1 Version ID

The results displayed on this site correspond to the Version_ID:

params$Version_ID
[1] "v_XXX"

2 Read files

Main data source for this project is the preprocessed version of GLODAPv2:

params_local$GLODAPv2_version
[1] "2021"
GLODAP <-
  read_csv(
    paste0(
      path_preprocessing,
      "GLODAPv2.",
      params_local$GLODAPv2_version,
      "_preprocessed_tracer.csv"),
    guess_max = 1e5
  )
pCFC_12_3d <-
  read_csv(paste(path_preprocessing,
                  "K04_pCFC_12_3d.csv", sep = ""))
dcant_3d <-
  read_csv(paste(path_version_data,
                 "dcant_3d.csv",
                 sep = ""))
tref <-
  read_csv(paste(path_version_data,
                 "tref.csv",
                 sep = ""))

3 Data preparation

3.1 Filter eras

# create labels for era
era_labels <- bind_cols(
  start = params_local$era_start,
  end = params_local$era_end)

era_labels <- era_labels %>% 
  mutate(start = if_else(start == -Inf, max(GLODAP$year), start),
         end = if_else(end == Inf, max(GLODAP$year), end),
         era = as.factor(paste(start, end, sep = "-")))

# filter GLODAP data within eras
GLODAP <- expand_grid(
  GLODAP,
  era_labels
)

# select data within each era
GLODAP <- GLODAP %>% 
  filter(year >= start & year <= end)

GLODAP <- GLODAP %>% 
  select(-c(start, end))

3.2 Spatial boundaries

3.2.1 Basin mask

The basin mask from the World Ocean Atlas was used. For details consult the data base subsection for WOA18 data.

Please note that some GLODAP observations were made outside the WOA18 basin mask (i.e. in marginal seas) and will be removed for further analysis.

# use only data inside basinmask
GLODAP <- inner_join(GLODAP, basinmask)

3.3 Flags and NA

Only rows (samples) for which all relevant parameters are available were selected, ie NA’s were removed.

According to Olsen et al (2020), flags within the merged master file identify:

  • f:

    • 2: Acceptable
    • 0: Interpolated (nutrients/oxygen) or calculated (CO[2] variables)
    • 9: Data not used (so, only NA data should have this flag)
  • qc:

    • 1: Adjusted or unadjusted data
    • 0: Data appear of good quality but have not been subjected to full secondary QC
    • data with poor or uncertain quality are excluded.

Following flagging criteria were taken into account:

  • flag_f: 2, 9, 0
  • flag_qc: 1, 0

The cleaning process was performed successively and the maps below represent the data coverage at various cleaning levels.

Summary statistics were calculated during cleaning process.

3.3.1 NA

GLODAP_NA <- GLODAP %>%
  select(lon, lat, era, pcfc11, pcfc12, pcfc113, pccl4, psf6) %>%
  pivot_longer(pcfc11:psf6,
               names_to = "parameter",
               values_to = "value") %>%
  mutate(NA_flag = if_else(is.na(value), "NA", "available"),
         parameter = fct_inorder(as.factor(parameter)))

GLODAP_NA_stats <- GLODAP_NA %>% 
  count(era, parameter, NA_flag)

GLODAP_NA <- GLODAP_NA %>% 
  count(lat, lon, era, parameter, NA_flag)

3.3.1.1 Maps

GLODAP_NA %>%
  group_split(NA_flag) %>%
  # head(1) %>%
  map(
    ~ map +
      geom_raster(data = .x,
                  aes(lon, lat, fill = n)) +
      scale_fill_viridis_c(
        option = "magma",
        direction = -1,
        trans = "log10"
      ) +
      theme(legend.position = "bottom",
            axis.text = element_blank(),
            axis.ticks = element_blank()) +
      labs(title = paste("Flag:", unique(.x$NA_flag))) +
      facet_grid(parameter ~ era)
      
  )
[[1]]

Version Author Date
654ab1b jens-daniel-mueller 2021-11-12
07ccee8 jens-daniel-mueller 2021-11-11
973192c jens-daniel-mueller 2021-10-28

[[2]]

Version Author Date
654ab1b jens-daniel-mueller 2021-11-12
07ccee8 jens-daniel-mueller 2021-11-11
973192c jens-daniel-mueller 2021-10-28
rm(GLODAP_NA)  

3.3.1.2 Stats

GLODAP_NA_stats %>% 
  ggplot(aes(parameter, n, fill = NA_flag)) +
  coord_flip() +
  scale_x_discrete(limits = rev) +
  geom_col() +
  facet_grid(era~.) +
  scale_fill_brewer(palette = "Dark2")

Version Author Date
07ccee8 jens-daniel-mueller 2021-11-11
973192c jens-daniel-mueller 2021-10-28
rm(GLODAP_NA_stats)

3.3.2 f flag

GLODAP_f_flags <- GLODAP %>% 
  select(lon, lat, era, ends_with("f")) %>% 
  pivot_longer(cfc11f:sf6f,
               names_to = "parameter",
               values_to = "value") %>% 
  mutate(parameter = fct_inorder(as.factor(parameter)))

GLODAP_f_flags_stats <- GLODAP_f_flags %>% 
  count(era, parameter, value)

GLODAP_f_flags <- GLODAP_f_flags %>% 
  count(lat, lon, era, parameter, value)

3.3.2.1 Maps

GLODAP_f_flags %>%
  group_split(value) %>%
  # head(1) %>%
  map(
    ~ map +
      geom_raster(data = .x,
                  aes(lon, lat, fill = n)) +
      scale_fill_viridis_c(
        option = "magma",
        direction = -1,
        trans = "log10"
      ) +
      theme(legend.position = "bottom",
            axis.text = element_blank(),
            axis.ticks = element_blank()) +
      labs(title = paste("f flag:", unique(.x$value))) +
      facet_grid(parameter ~ era)
      
  )
[[1]]

Version Author Date
654ab1b jens-daniel-mueller 2021-11-12
973192c jens-daniel-mueller 2021-10-28

[[2]]

Version Author Date
654ab1b jens-daniel-mueller 2021-11-12
973192c jens-daniel-mueller 2021-10-28
rm(GLODAP_f_flags)

3.3.2.2 Stats

GLODAP_f_flags_stats %>% 
  mutate(value = as.factor(value)) %>% 
  ggplot(aes(parameter, n, fill = value)) +
  coord_flip() +
  scale_x_discrete(limits = rev) +
  geom_col() +
  facet_grid(era~.) +
  scale_fill_brewer(palette = "Dark2")

Version Author Date
973192c jens-daniel-mueller 2021-10-28
rm(GLODAP_f_flags_stats)

3.3.3 qc flag

GLODAP_qc_flags <- GLODAP %>% 
  select(lon, lat, era, ends_with("qc")) %>% 
  pivot_longer(cfc11qc:ccl4qc,
               names_to = "parameter",
               values_to = "value") %>% 
  mutate(parameter = fct_inorder(as.factor(parameter))) %>% 
  count(lat, lon, era, parameter, value)

GLODAP_qc_flags_stats <- GLODAP_qc_flags %>% 
  count(era, parameter, value)

GLODAP_qc_flags <- GLODAP_qc_flags %>% 
  count(lat, lon, era, parameter, value)

3.3.3.1 Maps

GLODAP_qc_flags %>%
  group_split(value) %>%
  # head(1) %>%
  map(
    ~ map +
      geom_raster(data = .x,
                  aes(lon, lat, fill = n)) +
      scale_fill_viridis_c(
        option = "magma",
        direction = -1,
        trans = "log10"
      ) +
      theme(legend.position = "bottom",
            axis.text = element_blank(),
            axis.ticks = element_blank()) +
      labs(title = paste("qc flag:", unique(.x$value))) +
      facet_grid(parameter ~ era)
      
  )
[[1]]

Version Author Date
654ab1b jens-daniel-mueller 2021-11-12
973192c jens-daniel-mueller 2021-10-28

[[2]]

Version Author Date
654ab1b jens-daniel-mueller 2021-11-12
973192c jens-daniel-mueller 2021-10-28
rm(GLODAP_qc_flags)

3.3.3.2 Stats

GLODAP_qc_flags_stats %>% 
  mutate(value = as.factor(value)) %>% 
  ggplot(aes(parameter, n, fill = value)) +
  coord_flip() +
  scale_x_discrete(limits = rev) +
  geom_col() +
  facet_grid(era~.) +
  scale_fill_brewer(palette = "Dark2")

Version Author Date
973192c jens-daniel-mueller 2021-10-28
rm(GLODAP_qc_flags_stats)

3.3.4 Apply filter

GLODAP <- GLODAP %>%  
  filter(
    if_all(
      c(tco2, talk, params_local$MLR_predictors, depth, gamma),
      ~ !is.na(.)
    ),
    if_all(ends_with("f"), ~ . %in% params_local$flag_f),
    if_all(ends_with("qc"), ~ . %in% params_local$flag_qc)
  )

4 Indian Ocean

4.1 NS cruise

4.1.1 Absolute

GLODAP_grid_Indian <- GLODAP %>% 
  filter(basin_AIP == "Indian",
         lon > 70,
         lon < 100,
         cruise %in% c(249, 250, 352, 353)) %>%
  mutate(cruise = as.factor(cruise)) %>% 
  distinct(era, lon, lat, cruise, year = as.factor(year(date)))

map +
  geom_tile(data = GLODAP_grid_Indian,
            aes(lon, lat, fill = year)) +
  facet_grid(era ~ .)

Version Author Date
0e032dc jens-daniel-mueller 2021-11-04
ceea35b jens-daniel-mueller 2021-11-01
973192c jens-daniel-mueller 2021-10-28
IO_NS <- GLODAP %>% 
  filter(cruise %in% c(249, 250, 352, 353),
         !is.na(pcfc12)) 

IO_NS %>% 
  ggplot(aes(pcfc12)) +
  geom_histogram() +
  facet_grid(era ~ .)

Version Author Date
07ccee8 jens-daniel-mueller 2021-11-11
0e032dc jens-daniel-mueller 2021-11-04
ceea35b jens-daniel-mueller 2021-11-01
973192c jens-daniel-mueller 2021-10-28
IO_NS %>% 
  filter(pcfc12 < 2) %>% 
  ggplot(aes(pcfc12)) +
  geom_histogram() +
  facet_grid(era ~ .)

Version Author Date
950d8e7 jens-daniel-mueller 2021-11-12
07ccee8 jens-daniel-mueller 2021-11-11
0e032dc jens-daniel-mueller 2021-11-04
ceea35b jens-daniel-mueller 2021-11-01
973192c jens-daniel-mueller 2021-10-28
IO_NS %>% 
  ggplot(aes(lat , depth, col = pcfc12)) +
  geom_point() +
  scale_color_viridis_c(trans = "pseudo_log",
                        breaks = c(0,10,100)) +
  scale_y_reverse() +
  facet_grid(era ~ .)

Version Author Date
950d8e7 jens-daniel-mueller 2021-11-12
07ccee8 jens-daniel-mueller 2021-11-11
0e032dc jens-daniel-mueller 2021-11-04
ceea35b jens-daniel-mueller 2021-11-01
973192c jens-daniel-mueller 2021-10-28
IO_NS_grid <- IO_NS %>% 
  select(lat, lon, depth, era, basin_AIP, pcfc12) %>% 
  group_by(era) %>%
  nest() %>%
  mutate(zonal = map(.x = data, ~m_zonal_mean_sd_bottle(.x))) %>%
  select(-data) %>%
  unnest(zonal)

IO_NS_grid %>% 
  ggplot(aes(lat , depth, fill = pcfc12_mean)) +
  geom_raster() +
  scale_fill_viridis_c(trans = "pseudo_log",
                        breaks = c(0,10,100)) +
  scale_y_reverse() +
  coord_cartesian(expand = 0) +
  facet_grid(era ~ .)

Version Author Date
950d8e7 jens-daniel-mueller 2021-11-12
1d4c657 jens-daniel-mueller 2021-11-04
0e032dc jens-daniel-mueller 2021-11-04
ceea35b jens-daniel-mueller 2021-11-01
973192c jens-daniel-mueller 2021-10-28

4.1.2 Change

IO_NS_grid_offset <- IO_NS_grid %>% 
  select(-pcfc12_sd) %>% 
  pivot_wider(names_from = era,
              values_from = pcfc12_mean) %>% 
  mutate(delta_pcfc12_mean = `2000-2009` - `1989-1999`)

IO_NS_grid_offset %>%
  ggplot(aes(lat , depth, fill = delta_pcfc12_mean)) +
  geom_raster() +
  scale_fill_divergent(
    mid = "grey80",
    na.value = "black",
    trans = "pseudo_log",
    breaks = c(-100, -10, 0, 10, 100)
  ) +
  scale_y_reverse() +
  coord_cartesian(expand = 0)

Version Author Date
654ab1b jens-daniel-mueller 2021-11-12
950d8e7 jens-daniel-mueller 2021-11-12
07ccee8 jens-daniel-mueller 2021-11-11
IO_NS_grid_offset %>% 
  mutate(delta_pcfc12_mean = cut(delta_pcfc12_mean, c(-Inf, 2, 5, 20, Inf))) %>% 
  ggplot(aes(lat , depth, fill = delta_pcfc12_mean)) +
  geom_raster() +
  scale_fill_viridis_d(na.value = "grey") +
  scale_y_reverse() +
  coord_cartesian(expand = 0)

Version Author Date
654ab1b jens-daniel-mueller 2021-11-12
950d8e7 jens-daniel-mueller 2021-11-12
07ccee8 jens-daniel-mueller 2021-11-11
rm(IO_NS, IO_NS_grid, IO_NS_grid_offset)

4.2 EW cruise

4.2.1 Absolute

GLODAP_grid_Indian <- GLODAP %>% 
  filter(basin_AIP == "Indian",
         lat > -25,
         lat < -15,
         cruise %in% c(252, 488)
         ) %>%
  mutate(cruise = as.factor(cruise)) %>% 
  distinct(era, lon, lat, cruise, year = as.factor(year(date)))

map +
  geom_tile(data = GLODAP_grid_Indian,
            aes(lon, lat, fill = year)) +
  facet_grid(era ~ .)

Version Author Date
654ab1b jens-daniel-mueller 2021-11-12
07ccee8 jens-daniel-mueller 2021-11-11
IO_EW <- GLODAP %>% 
  filter(cruise %in% c(252, 488),
         !is.na(pcfc12)) 

IO_EW %>% 
  ggplot(aes(pcfc12)) +
  geom_histogram() +
  facet_grid(era ~ .)

Version Author Date
07ccee8 jens-daniel-mueller 2021-11-11
IO_EW %>% 
  filter(pcfc12 < 2) %>% 
  ggplot(aes(pcfc12)) +
  geom_histogram() +
  facet_grid(era ~ .)

Version Author Date
950d8e7 jens-daniel-mueller 2021-11-12
07ccee8 jens-daniel-mueller 2021-11-11
IO_EW %>% 
  ggplot(aes(lon , depth, col = pcfc12)) +
  geom_point() +
  scale_fill_viridis_c(trans = "pseudo_log",
                        breaks = c(0,10,100)) +
  scale_y_reverse() +
  facet_grid(era ~ .)

Version Author Date
654ab1b jens-daniel-mueller 2021-11-12
950d8e7 jens-daniel-mueller 2021-11-12
07ccee8 jens-daniel-mueller 2021-11-11
IO_EW_grid <- IO_EW %>% 
  mutate(depth = cut(depth,
                          seq(0,1e4,200),
                          seq(100,1e4,200)),
         depth = as.numeric(as.character(depth)),
         lon_grid = cut(lon,
                          seq(-100,200,2),
                          seq(-99,200,2)),
         lon_grid = as.numeric(as.character(lon_grid))) %>% 
  group_by(lon_grid, depth, era) %>% 
  summarise(pcfc12 = mean(pcfc12, na.rm = TRUE)) %>% 
  ungroup()


IO_EW_grid %>% 
  ggplot(aes(lon_grid , depth, fill = pcfc12)) +
  geom_tile() +
  scale_fill_viridis_c(trans = "pseudo_log",
                        breaks = c(0,10,100)) +
  scale_y_reverse() +
  coord_cartesian(expand = 0) +
  facet_grid(era ~ .)

Version Author Date
950d8e7 jens-daniel-mueller 2021-11-12

4.2.2 Change

IO_EW_grid_offset <- IO_EW_grid %>% 
  pivot_wider(names_from = era,
              values_from = pcfc12) %>% 
  mutate(delta_pcfc12_mean = `2000-2009` - `1989-1999`)


IO_EW_grid_offset %>% 
  ggplot(aes(lon_grid , depth, fill = delta_pcfc12_mean)) +
  geom_raster() +
  scale_fill_divergent(
    mid = "grey80",
    na.value = "black",
    trans = "pseudo_log",
    breaks = c(-100, -10, 0, 10, 100)
  ) +
  scale_y_reverse() +
  coord_cartesian(expand = 0)

Version Author Date
654ab1b jens-daniel-mueller 2021-11-12
950d8e7 jens-daniel-mueller 2021-11-12
07ccee8 jens-daniel-mueller 2021-11-11
IO_EW_grid_offset %>% 
  mutate(delta_pcfc12_mean = cut(delta_pcfc12_mean, c(-Inf, 2, 5, 20, Inf))) %>% 
  ggplot(aes(lon_grid , depth, fill = delta_pcfc12_mean)) +
  geom_raster() +
  scale_fill_viridis_d(na.value = "grey") +
  scale_y_reverse() +
  coord_cartesian(expand = 0)

Version Author Date
654ab1b jens-daniel-mueller 2021-11-12
950d8e7 jens-daniel-mueller 2021-11-12
07ccee8 jens-daniel-mueller 2021-11-11
rm(IO_EW, IO_EW_grid, IO_EW_grid_offset, GLODAP_grid_Indian)

5 Zonal sections

5.1 Absolute

zonal_sections <- GLODAP %>% 
  select(lat, lon, depth, era, basin_AIP, pcfc12) %>% 
  group_by(era) %>%
  nest() %>%
  mutate(zonal = map(.x = data, ~m_zonal_mean_sd_bottle(.x))) %>%
  select(-data) %>%
  unnest(zonal)

zonal_sections %>% 
  ggplot(aes(lat , depth, fill = pcfc12_mean)) +
  geom_tile() +
  scale_fill_viridis_c(trans = "pseudo_log",
                        breaks = c(0,10,100)) +
  scale_y_reverse() +
  labs(x = "Latitude (°N)", y = "Depth (m)") +
  coord_fixed(ratio = 1e-2, expand = 0) +
  facet_grid(basin_AIP ~ era) +
  theme(legend.position = "left")

Version Author Date
654ab1b jens-daniel-mueller 2021-11-12
07ccee8 jens-daniel-mueller 2021-11-11
e3faf2f jens-daniel-mueller 2021-11-04
1d4c657 jens-daniel-mueller 2021-11-04
ceea35b jens-daniel-mueller 2021-11-01

5.2 Change

zonal_sections_offset <- zonal_sections %>% 
  select(-pcfc12_sd) %>% 
  pivot_wider(names_from = era,
              values_from = pcfc12_mean) %>% 
  mutate(delta_pcfc12_mean := !!sym(tref$era[2]) - !!sym(tref$era[1]))

zonal_sections_offset %>% 
  ggplot(aes(delta_pcfc12_mean)) +
  geom_histogram() +
  scale_y_log10() +
  coord_cartesian(expand = 0) +
  facet_grid(basin_AIP ~ .)

Version Author Date
654ab1b jens-daniel-mueller 2021-11-12
07ccee8 jens-daniel-mueller 2021-11-11
dfdb778 jens-daniel-mueller 2021-11-04
1d4c657 jens-daniel-mueller 2021-11-04
zonal_sections_offset %>% 
  ggplot(aes(delta_pcfc12_mean)) +
  geom_histogram() +
  coord_cartesian(expand = 0) +
  scale_x_continuous(trans = "pseudo_log",
                     breaks = c(-100, -10, 0, 10, 100)) +
  scale_y_log10() +
  facet_grid(basin_AIP ~ .)

Version Author Date
654ab1b jens-daniel-mueller 2021-11-12
07ccee8 jens-daniel-mueller 2021-11-11
dfdb778 jens-daniel-mueller 2021-11-04
e3faf2f jens-daniel-mueller 2021-11-04
1d4c657 jens-daniel-mueller 2021-11-04
zonal_sections_offset %>% 
  ggplot(aes(lat , depth, fill = delta_pcfc12_mean)) +
  geom_raster() +
  scale_fill_divergent(
    mid = "grey80",
    na.value = "black",
    trans = "pseudo_log",
    breaks = c(-100, -10, 0, 10, 100)
  ) +
  labs(x = "Latitude (°N)", y = "Depth (m)") +
  scale_y_reverse() +
  coord_fixed(ratio = 1e-2, expand = 0) +
  facet_grid(basin_AIP ~ .) +
  theme(axis.text.y = element_blank(),
        axis.title.y = element_blank())

Version Author Date
654ab1b jens-daniel-mueller 2021-11-12
950d8e7 jens-daniel-mueller 2021-11-12
07ccee8 jens-daniel-mueller 2021-11-11
dfdb778 jens-daniel-mueller 2021-11-04
1d4c657 jens-daniel-mueller 2021-11-04
zonal_sections_offset %>%
  mutate(delta_pcfc12_mean = cut(
    delta_pcfc12_mean,
    c(-Inf, 0.2, 1, 2, 5, 20, Inf))) %>%
  ggplot(aes(lat , depth, fill = delta_pcfc12_mean)) +
  geom_raster() +
  scale_fill_viridis_d(na.value = "grey") +
  scale_y_reverse() +
  facet_grid(basin_AIP ~ .) +
  coord_fixed(ratio = 1e-2, expand = 0)

Version Author Date
654ab1b jens-daniel-mueller 2021-11-12

6 Interior relation to dCant

6.1 Distributions

CFC_dcant <- inner_join(
  dcant_3d %>%
    filter(data_source == "obs") %>%
    select(lon, lat, depth, basin_AIP, dcant, gamma, gamma_slab),
  pCFC_12_3d
)

CFC_dcant <- CFC_dcant %>% 
  mutate(depth_grid = cut(depth, seq(0, 1e4, 1000), right = FALSE))
CFC_dcant %>%
  ggplot(aes(pCFC_12, dcant)) +
  geom_hline(yintercept = 0) +
  geom_bin2d() +
  geom_smooth(col = "red", se = FALSE) +
  scale_fill_viridis_c(trans = "log10") +
  facet_grid(gamma_slab ~ basin_AIP,
             scales = "free_y") +
  coord_cartesian(ylim = c(-5,15))

Version Author Date
98d9e33 jens-daniel-mueller 2021-11-11
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11
CFC_dcant %>%
  filter(pCFC_12 < 5) %>% 
  ggplot(aes(dcant, col = basin_AIP, fill = basin_AIP)) +
  geom_vline(xintercept = 0) +
  geom_density(alpha = 0.3) +
  facet_grid(gamma_slab ~ .) +
  labs(title = "pCFC-12 < 5")

Version Author Date
98d9e33 jens-daniel-mueller 2021-11-11
38cad1d jens-daniel-mueller 2021-11-11
CFC_dcant %>%
  group_split(gamma_slab, depth_grid) %>%
  # head(1) %>%
  map(
    ~ ggplot(data = .x,
             aes(pCFC_12, dcant)) +
      geom_hline(yintercept = 0) +
      geom_bin2d() +
      geom_smooth(col = "red", se=FALSE) +
      scale_fill_viridis_c(trans = "log10") +
      labs(title = paste("gamma_slab", unique(.x$gamma_slab),
                         "| depth", unique(.x$depth_grid))) +
      facet_grid(. ~ basin_AIP)
  )
[[1]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[2]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[3]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[4]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[5]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[6]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[7]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[8]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[9]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[10]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[11]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[12]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[13]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[14]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[15]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[16]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[17]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[18]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[19]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[20]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[21]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[22]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[23]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[24]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[25]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[26]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[27]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[28]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[29]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[30]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[31]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[32]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[33]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[34]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[35]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[36]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[37]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[38]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[39]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[40]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[41]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[42]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[43]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[44]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[45]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[46]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[47]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[48]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[49]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[50]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[51]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

[[52]]

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
38cad1d jens-daniel-mueller 2021-11-11
4e4c0b7 jens-daniel-mueller 2021-11-11

6.2 Zonal sections

CFC_dcant_zonal <- m_zonal_mean_sd(
  CFC_dcant %>% 
    select(lat, lon, depth, basin_AIP, gamma, dcant, pCFC_12)
)


CFC_dcant_zonal <- CFC_dcant_zonal %>%
  mutate(pCFC_12_mean_pos = if_else(pCFC_12_mean < 0, 0, pCFC_12_mean),
         dcant_mean_pos = if_else(dcant_mean < 0, 0, dcant_mean),
         dcant_per_CFC = dcant_mean_pos / pCFC_12_mean_pos,
         dcant_per_CFC_log = log10(dcant_per_CFC))


CFC_dcant_zonal %>%
  p_section_zonal_continous_depth(
    var = "dcant_mean_pos",
    title_text = NULL) +
  facet_grid(basin_AIP ~ .)

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
CFC_dcant_zonal %>%
  p_section_zonal_continous_depth(
    var = "pCFC_12_mean_pos",
    breaks = NULL,
    legend_title = "pCFC_12",
    title_text = NULL
  ) +
  facet_grid(basin_AIP ~ .)

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
CFC_dcant_zonal %>% 
  ggplot(aes(dcant_per_CFC)) +
  geom_histogram() +
  scale_y_log10() +
  facet_grid(.~ basin_AIP)

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12
CFC_dcant_zonal %>%
  p_section_zonal_continous_depth(
    var = "dcant_per_CFC_log",
    breaks = NULL,
    legend_title = "log10\ndcant /\npCFC_12",
    title_text = NULL
  ) +
  facet_grid(basin_AIP ~ .)

Version Author Date
20e7603 jens-daniel-mueller 2021-11-12

7 Overview plots

7.1 Number of overservations

GLODAP %>% 
  group_by(era, basin_AIP) %>% 
  count() %>% 
  ggplot(aes(basin_AIP, n, fill = era)) +
  geom_col() +
  scale_fill_brewer(palette = "Dark2")

Version Author Date
973192c jens-daniel-mueller 2021-10-28

7.2 Assign coarse spatial grid

For the following plots, the cleaned data set was re-opened and observations were gridded spatially to intervals of:

  • 5° x 5°
GLODAP <- m_grid_horizontal_coarse(GLODAP)

7.3 Histogram Zonal coverage

GLODAP_histogram_lat <- GLODAP %>%
  group_by(era, lat, basin_AIP) %>%
  tally() %>%
  ungroup()

GLODAP_histogram_lat %>%
  ggplot(aes(lat, n, fill = era)) +
  geom_col() +
  scale_fill_brewer(palette = "Dark2") +
  facet_wrap( ~ basin_AIP) +
  coord_flip(expand = 0) +
  theme(legend.position = "top",
        legend.title = element_blank())

Version Author Date
950d8e7 jens-daniel-mueller 2021-11-12
973192c jens-daniel-mueller 2021-10-28
rm(GLODAP_histogram_lat)

7.4 Histogram temporal coverage

GLODAP_histogram_year <- GLODAP %>%
  group_by(year, basin_AIP) %>%
  tally() %>%
  ungroup()

GLODAP_histogram_year %>%
  ggplot() +
  geom_vline(xintercept = sort(params_local$era_end)[1] + 0.5) +
  geom_col(aes(year, n,
               fill = basin_AIP)) +
  scale_fill_brewer(palette = "Dark2") +
  scale_shape_manual(values = 24, name = "") +
  scale_y_continuous() +
  coord_cartesian(expand = 0) +
  theme(
    legend.position = "top",
    legend.direction = "vertical",
    legend.title = element_blank(),
    axis.title.x = element_blank()
  )

Version Author Date
973192c jens-daniel-mueller 2021-10-28
rm(GLODAP_histogram_year,
   era_median_year)

7.5 Zonal temporal coverage (Hovmoeller)

GLODAP_hovmoeller_year <- GLODAP %>%
  group_by(year, lat, basin_AIP) %>%
  tally() %>%
  ungroup()

GLODAP_hovmoeller_year %>%
  ggplot(aes(year, lat, fill = n)) +
  geom_tile() +
  geom_vline(xintercept = sort(params_local$era_end)[1] + 0.5) +
  scale_fill_viridis_c(option = "magma",
                       direction = -1,
                       trans = "log10") +
  coord_cartesian(expand = 0) +
  facet_wrap( ~ basin_AIP, ncol = 1) +
  theme(legend.position = "top",
        axis.title.x = element_blank())

Version Author Date
950d8e7 jens-daniel-mueller 2021-11-12
973192c jens-daniel-mueller 2021-10-28
rm(GLODAP_hovmoeller_year)

7.6 Coverage maps by era

7.6.1 Final input data

The following plots show the remaining data density in each grid cell after all cleaning steps, separately for each era.

GLODAP_tco2_grid <- GLODAP %>%
  count(lat, lon)

map +
  geom_bin2d(data = GLODAP,
             aes(lon, lat),
             binwidth = c(1,1)) +
  scale_fill_viridis_c(option = "magma", direction = -1, trans = "log10") +
  facet_wrap(~era, ncol = 1) +
  labs(title = "Cleaned GLODAP observations",
       subtitle = paste("Version:", params_local$Version_ID)) +
  theme(axis.title = element_blank())

Version Author Date
973192c jens-daniel-mueller 2021-10-28

sessionInfo()
R version 4.0.3 (2020-10-10)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: openSUSE Leap 15.2

Matrix products: default
BLAS:   /usr/local/R-4.0.3/lib64/R/lib/libRblas.so
LAPACK: /usr/local/R-4.0.3/lib64/R/lib/libRlapack.so

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] lubridate_1.7.9 ggforce_0.3.3   metR_0.9.0      scico_1.2.0    
 [5] patchwork_1.1.1 collapse_1.5.0  forcats_0.5.0   stringr_1.4.0  
 [9] dplyr_1.0.5     purrr_0.3.4     readr_1.4.0     tidyr_1.1.3    
[13] tibble_3.1.3    ggplot2_3.3.5   tidyverse_1.3.0 workflowr_1.6.2

loaded via a namespace (and not attached):
 [1] nlme_3.1-149             fs_1.5.0                 RColorBrewer_1.1-2      
 [4] httr_1.4.2               rprojroot_2.0.2          tools_4.0.3             
 [7] backports_1.1.10         bslib_0.2.5.1            utf8_1.1.4              
[10] R6_2.5.0                 mgcv_1.8-33              DBI_1.1.0               
[13] colorspace_2.0-2         withr_2.3.0              tidyselect_1.1.0        
[16] compiler_4.0.3           git2r_0.27.1             cli_3.0.1               
[19] rvest_0.3.6              xml2_1.3.2               isoband_0.2.2           
[22] labeling_0.4.2           sass_0.4.0               scales_1.1.1            
[25] checkmate_2.0.0          digest_0.6.27            rmarkdown_2.10          
[28] pkgconfig_2.0.3          htmltools_0.5.1.1        dbplyr_1.4.4            
[31] highr_0.8                rlang_0.4.11             readxl_1.3.1            
[34] rstudioapi_0.13          jquerylib_0.1.4          generics_0.1.0          
[37] farver_2.0.3             jsonlite_1.7.1           magrittr_1.5            
[40] Matrix_1.2-18            Rcpp_1.0.5               munsell_0.5.0           
[43] fansi_0.4.1              lifecycle_1.0.0          stringi_1.5.3           
[46] whisker_0.4              yaml_2.2.1               MASS_7.3-53             
[49] plyr_1.8.6               grid_4.0.3               blob_1.2.1              
[52] parallel_4.0.3           promises_1.1.1           crayon_1.3.4            
[55] lattice_0.20-41          splines_4.0.3            haven_2.3.1             
[58] hms_0.5.3                knitr_1.33               pillar_1.6.2            
[61] reprex_0.3.0             glue_1.4.2               evaluate_0.14           
[64] RcppArmadillo_0.10.1.2.0 data.table_1.14.0        modelr_0.1.8            
[67] vctrs_0.3.8              tweenr_1.0.2             httpuv_1.5.4            
[70] cellranger_1.1.0         gtable_0.3.0             polyclip_1.10-0         
[73] assertthat_0.2.1         xfun_0.25                broom_0.7.9             
[76] RcppEigen_0.3.3.7.0      later_1.2.0              viridisLite_0.3.0       
[79] memoise_1.1.0            ellipsis_0.3.2           here_0.1