Set Up
library(data.table)
library(dplyr)
library(tidyr)
library(ggplot2)
BASE_DIR <- here::here()
theme_set(theme_bw())
Objective
Here we are taking a look at the files that ACS created on 3-30-2022 for the stitches manuscript, results from the grided tas-psl-pr experiment. She did not share the grided nc files but did the share the recopies & the gsat results. Here we will take a look at the gsat results as a form of quality control.
Checking out the recpies
here::here(BASE_DIR, "data") %>%
list.files(pattern = "rp", full.names = TRUE) %>%
lapply(function(f){
rp <- read.csv(f, stringsAsFactors = FALSE)
}) %>%
do.call(what = "rbind") ->
rps
Start by checking on the archive experiments. There should only be three experiments historical & the two bracketing experiments.
unique(rps$archive_experiment)
[1] "historical" "ssp126" "ssp585"
Also let’s take a look at the ensembles used in the stitching process per model. Ideally there is going to be one that has a small ensmeble count and one with a larger one.
rps %>%
group_by(archive_model) %>%
summarise(ensemble_count = n_distinct(archive_ensemble)) %>%
ungroup
Now let’s check to see if the same time slice & ensmble realization were used.
rps %>%
apply(MARGIN = 1, function(r){
!grepl(pattern = r[["archive_ensemble"]], x = r[["stitching_id"]])
}, simplify = TRUE) ->
diff_ensemble
rps$diff_ensemble <- diff_ensemble
rps %>%
mutate(diff_period = target_start_yr - archive_start_yr) %>%
mutate(diff_ensemble = diff_ensemble) %>%
select(archive_model, archive_ensemble, archive_experiment, stitching_id,
diff_ensemble, diff_period, target_start_yr) ->
rp_status
For the most part this is happening in the historical period, should check to make sure that this is okay.
rp_status %>%
select(archive_model, archive_experiment,
diff_ensemble, diff_period, target_start_yr) %>%
filter(diff_period == 0 & diff_ensemble == FALSE)
GSAT time series
here::here(BASE_DIR, "data") %>%
list.files(pattern = "stitched_", full.names = TRUE) %>%
lapply(function(f){
data <- read.csv(f, stringsAsFactors = FALSE)
model <- gsub(pattern = "stitched_GSAT_data_ssp245_|stitched_GSAT_data_ssp370_|.csv",
x = basename(f), replacement = "")
data$model <- model
return(data)
}) %>%
do.call(what = "rbind") ->
out
here::here(BASE_DIR, "data") %>%
list.files(pattern = "comparison_", full.names = TRUE) %>%
lapply(function(f){
data <- read.csv(f, stringsAsFactors = FALSE)
return(data)
}) %>%
do.call(what = "rbind") ->
comp_data
out %>%
apply(MARGIN = 1, function(r){
info <- unlist(strsplit(x = r[["stitching_id"]], split = "~"))
data.frame(experiment = info[[1]],
ensemble = info[[2]],
realization = info[[3]])
}) %>%
do.call(what = "rbind") ->
info
out %>%
cbind(info) ->
stitched_to_plot
ggplot() +
geom_line(data = stitched_to_plot, aes(year, value, color = ensemble), alpha = 0.4, size = 1) +
# geom_line(data = comp_data, aes(year, value, group = ensemble), color = "black") +
facet_grid(model~experiment) +
labs(y = NULL, x = NULL, title = "Stitched Outputs") +
theme(legend.position = "none")

ggplot() +
geom_line(data = stitched_to_plot, aes(year, value, color = ensemble), alpha = 0.4, size = 1) +
geom_line(data = comp_data, aes(year, value, group = ensemble), color = "black", size = 0.25) +
facet_grid(model~experiment) +
labs(y = NULL, x = NULL, title = "Stitched Outputs vs. Comparison") +
theme(legend.position = "none")

LS0tCnRpdGxlOiAiQ2hlY2tpbmcgb24gdGhlIHRhcy1wc2wtcHIgZ2lyZGRlZCBwcm9kdWN0cyIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICB0b2M6IHllcwogICAgdG9jX2RlcHRoOiAnNCcKICAgIHRvY19mbG9hdDogeWVzCiAgICBudW1iZXJfc2VjdGlvbnM6IHRydWUKZGF0ZTogImByIGZvcm1hdChTeXMudGltZSgpLCAnJWQgJUIsICVZJylgIgotLS0KCiMgU2V0IFVwIAoKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSwgZXJyb3IgPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFKQojIHNlZSBodHRwczovL2Jvb2tkb3duLm9yZy95aWh1aS9ybWFya2Rvd24tY29va2Jvb2svIGZvciBtb3JlIGluZm8gb24gbWFya2Rvd25zCmBgYAoKYGBge3J9CmxpYnJhcnkoZGF0YS50YWJsZSkKbGlicmFyeShkcGx5cikKbGlicmFyeSh0aWR5cikKbGlicmFyeShnZ3Bsb3QyKQoKQkFTRV9ESVIgPC0gaGVyZTo6aGVyZSgpCgp0aGVtZV9zZXQodGhlbWVfYncoKSkKYGBgCgojIyBPYmplY3RpdmUgCgpIZXJlIHdlIGFyZSB0YWtpbmcgYSBsb29rIGF0IHRoZSBmaWxlcyB0aGF0IEFDUyBjcmVhdGVkIG9uIDMtMzAtMjAyMiBmb3IgdGhlIHN0aXRjaGVzIG1hbnVzY3JpcHQsIHJlc3VsdHMgZnJvbSB0aGUgZ3JpZGVkIHRhcy1wc2wtcHIgZXhwZXJpbWVudC4gU2hlIGRpZCBub3Qgc2hhcmUgdGhlIGdyaWRlZCBuYyBmaWxlcyBidXQgZGlkIHRoZSBzaGFyZSB0aGUgcmVjb3BpZXMgJiB0aGUgZ3NhdCByZXN1bHRzLiBIZXJlIHdlIHdpbGwgdGFrZSBhIGxvb2sgYXQgdGhlIGdzYXQgcmVzdWx0cyBhcyBhIGZvcm0gb2YgcXVhbGl0eSBjb250cm9sLiAKCgojIENoZWNraW5nIG91dCB0aGUgcmVjcGllcyAKCmBgYHtyfQpoZXJlOjpoZXJlKEJBU0VfRElSLCAiZGF0YSIpICU+JSAKICAgIGxpc3QuZmlsZXMocGF0dGVybiA9ICJycCIsIGZ1bGwubmFtZXMgPSBUUlVFKSAlPiUgCiAgICBsYXBwbHkoZnVuY3Rpb24oZil7CiAgICAgICAgcnAgPC0gcmVhZC5jc3YoZiwgc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKQogICAgfSkgJT4lIAogICAgZG8uY2FsbCh3aGF0ID0gInJiaW5kIikgLT4KICAgIHJwcwpgYGAKCgoKU3RhcnQgYnkgY2hlY2tpbmcgb24gdGhlIGFyY2hpdmUgZXhwZXJpbWVudHMuIFRoZXJlIHNob3VsZCBvbmx5IGJlIHRocmVlIGV4cGVyaW1lbnRzIGhpc3RvcmljYWwgJiB0aGUgdHdvIGJyYWNrZXRpbmcgZXhwZXJpbWVudHMuIAoKYGBge3J9CnVuaXF1ZShycHMkYXJjaGl2ZV9leHBlcmltZW50KQpgYGAKCkFsc28gbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlIGVuc2VtYmxlcyB1c2VkIGluIHRoZSBzdGl0Y2hpbmcgcHJvY2VzcyBwZXIgbW9kZWwuIElkZWFsbHkgdGhlcmUgaXMgZ29pbmcgdG8gYmUgb25lIHRoYXQgaGFzIGEgc21hbGwgZW5zbWVibGUgY291bnQgYW5kIG9uZSB3aXRoIGEgbGFyZ2VyIG9uZS4gCgpgYGB7cn0KcnBzICU+JSAKICAgIGdyb3VwX2J5KGFyY2hpdmVfbW9kZWwpICU+JSAKICAgIHN1bW1hcmlzZShlbnNlbWJsZV9jb3VudCA9IG5fZGlzdGluY3QoYXJjaGl2ZV9lbnNlbWJsZSkpICU+JSAKICAgIHVuZ3JvdXAgCmBgYAoKTm93IGxldCdzIGNoZWNrIHRvIHNlZSBpZiB0aGUgc2FtZSB0aW1lIHNsaWNlICYgZW5zbWJsZSByZWFsaXphdGlvbiB3ZXJlIHVzZWQuIAoKYGBge3J9CnJwcyAlPiUgCiAgICBhcHBseShNQVJHSU4gPSAxLCBmdW5jdGlvbihyKXsKICAgICAgICAhZ3JlcGwocGF0dGVybiA9IHJbWyJhcmNoaXZlX2Vuc2VtYmxlIl1dLCB4ID0gcltbInN0aXRjaGluZ19pZCJdXSkKICAgIH0sIHNpbXBsaWZ5ID0gVFJVRSkgLT4gCiAgICBkaWZmX2Vuc2VtYmxlIAoKcnBzJGRpZmZfZW5zZW1ibGUgPC0gZGlmZl9lbnNlbWJsZQoKcnBzICU+JSAKICAgIG11dGF0ZShkaWZmX3BlcmlvZCA9IHRhcmdldF9zdGFydF95ciAtIGFyY2hpdmVfc3RhcnRfeXIpICU+JQogICAgbXV0YXRlKGRpZmZfZW5zZW1ibGUgPSBkaWZmX2Vuc2VtYmxlKSAlPiUgCiAgICBzZWxlY3QoYXJjaGl2ZV9tb2RlbCwgYXJjaGl2ZV9lbnNlbWJsZSwgYXJjaGl2ZV9leHBlcmltZW50LCBzdGl0Y2hpbmdfaWQsIAogICAgICAgICAgIGRpZmZfZW5zZW1ibGUsIGRpZmZfcGVyaW9kLCB0YXJnZXRfc3RhcnRfeXIpIC0+CiAgICBycF9zdGF0dXMKYGBgCgoKRm9yIHRoZSBtb3N0IHBhcnQgdGhpcyBpcyBoYXBwZW5pbmcgaW4gdGhlIGhpc3RvcmljYWwgcGVyaW9kLCBzaG91bGQgY2hlY2sgdG8gbWFrZSBzdXJlIHRoYXQgdGhpcyBpcyBva2F5LiAKCmBgYHtyfQpycF9zdGF0dXMgJT4lIAogICAgc2VsZWN0KGFyY2hpdmVfbW9kZWwsIGFyY2hpdmVfZXhwZXJpbWVudCwgIAogICAgICAgICAgIGRpZmZfZW5zZW1ibGUsIGRpZmZfcGVyaW9kLCB0YXJnZXRfc3RhcnRfeXIpICAlPiUgCiAgICBmaWx0ZXIoZGlmZl9wZXJpb2QgPT0gMCAmIGRpZmZfZW5zZW1ibGUgPT0gRkFMU0UpCmBgYAoKCiMgR1NBVCB0aW1lIHNlcmllcwoKCmBgYHtyfQpoZXJlOjpoZXJlKEJBU0VfRElSLCAiZGF0YSIpICU+JSAKICAgIGxpc3QuZmlsZXMocGF0dGVybiA9ICJzdGl0Y2hlZF8iLCBmdWxsLm5hbWVzID0gVFJVRSkgJT4lIAogICAgbGFwcGx5KGZ1bmN0aW9uKGYpewogICAgICAgIGRhdGEgPC0gcmVhZC5jc3YoZiwgc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKQogICAgICAgIG1vZGVsIDwtIGdzdWIocGF0dGVybiA9ICJzdGl0Y2hlZF9HU0FUX2RhdGFfc3NwMjQ1X3xzdGl0Y2hlZF9HU0FUX2RhdGFfc3NwMzcwX3wuY3N2IiwgCiAgICAgICAgICAgICAgICAgICAgICB4ID0gYmFzZW5hbWUoZiksIHJlcGxhY2VtZW50ID0gIiIpCiAgICAgICAgZGF0YSRtb2RlbCA8LSBtb2RlbAogICAgICAgIHJldHVybihkYXRhKQogICAgfSkgJT4lIAogICAgZG8uY2FsbCh3aGF0ID0gInJiaW5kIikgLT4gCiAgICBvdXQKYGBgCgpgYGB7cn0KCmhlcmU6OmhlcmUoQkFTRV9ESVIsICJkYXRhIikgJT4lIAogICAgbGlzdC5maWxlcyhwYXR0ZXJuID0gImNvbXBhcmlzb25fIiwgZnVsbC5uYW1lcyA9IFRSVUUpICU+JSAKICAgIGxhcHBseShmdW5jdGlvbihmKXsKICAgICAgICBkYXRhIDwtIHJlYWQuY3N2KGYsIHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkKICAgICAgICByZXR1cm4oZGF0YSkKICAgIH0pICU+JSAKICAgIGRvLmNhbGwod2hhdCA9ICJyYmluZCIpIC0+IAogICAgY29tcF9kYXRhCmBgYAoKCmBgYHtyfQpvdXQgJT4lCiAgICBhcHBseShNQVJHSU4gPSAxLCBmdW5jdGlvbihyKXsKICAgICAgICBpbmZvIDwtIHVubGlzdChzdHJzcGxpdCh4ID0gcltbInN0aXRjaGluZ19pZCJdXSwgc3BsaXQgPSAifiIpKQogICAgICAgIGRhdGEuZnJhbWUoZXhwZXJpbWVudCA9IGluZm9bWzFdXSwgCiAgICAgICAgICAgICAgICAgICBlbnNlbWJsZSA9IGluZm9bWzJdXSwKICAgICAgICAgICAgICAgICAgIHJlYWxpemF0aW9uID0gaW5mb1tbM11dKQogICAgfSkgJT4lIAogICAgZG8uY2FsbCh3aGF0ID0gInJiaW5kIikgLT4gCiAgICBpbmZvCgpvdXQgJT4lIAogICAgY2JpbmQoaW5mbykgLT4gCiAgICBzdGl0Y2hlZF90b19wbG90IAoKZ2dwbG90KCkgKwogICAgZ2VvbV9saW5lKGRhdGEgPSBzdGl0Y2hlZF90b19wbG90LCBhZXMoeWVhciwgdmFsdWUsIGNvbG9yID0gZW5zZW1ibGUpLCBhbHBoYSA9IDAuNCwgc2l6ZSA9IDEpICsgCiAgICAjIGdlb21fbGluZShkYXRhID0gY29tcF9kYXRhLCBhZXMoeWVhciwgdmFsdWUsIGdyb3VwID0gZW5zZW1ibGUpLCBjb2xvciA9ICJibGFjayIpICsgCiAgICBmYWNldF9ncmlkKG1vZGVsfmV4cGVyaW1lbnQpICsgCiAgICBsYWJzKHkgPSBOVUxMLCB4ID0gTlVMTCwgdGl0bGUgPSAiU3RpdGNoZWQgT3V0cHV0cyIpICsgCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpgYGAKCgpgYGB7cn0KCmdncGxvdCgpICsKICAgIGdlb21fbGluZShkYXRhID0gc3RpdGNoZWRfdG9fcGxvdCwgYWVzKHllYXIsIHZhbHVlLCBjb2xvciA9IGVuc2VtYmxlKSwgYWxwaGEgPSAwLjQsIHNpemUgPSAxKSArCiAgICBnZW9tX2xpbmUoZGF0YSA9IGNvbXBfZGF0YSwgYWVzKHllYXIsIHZhbHVlLCBncm91cCA9IGVuc2VtYmxlKSwgY29sb3IgPSAiYmxhY2siLCBzaXplID0gMC4yNSkgKyAKICAgIGZhY2V0X2dyaWQobW9kZWx+ZXhwZXJpbWVudCkgKyAKICAgIGxhYnMoeSA9IE5VTEwsIHggPSBOVUxMLCB0aXRsZSA9ICJTdGl0Y2hlZCBPdXRwdXRzIHZzLiBDb21wYXJpc29uIikgKyAKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKYGBgCgo=