Set Up
library(data.table)
Registered S3 method overwritten by 'data.table':
method from
print.data.table
data.table 1.14.2 using 1 threads (see ?getDTthreads). Latest news: r-datatable.com
**********
This installation of data.table has not detected OpenMP support. It should still work but in single-threaded mode.
This is a Mac. Please read https://mac.r-project.org/openmp/. Please engage with Apple and ask them for support. Check r-datatable.com for updates, and our Mac instructions here: https://github.com/Rdatatable/data.table/wiki/Installation. After several years of many reports of installation problems on Mac, it's time to gingerly point out that there have been no similar problems on Windows or Linux.
**********
Attaching package: ‘data.table’
The following objects are masked from ‘package:dplyr’:
between, first, last
library(dplyr)
library(tidyr)
Attaching package: ‘tidyr’
The following object is masked from ‘package:magrittr’:
extract
library(ggplot2)
DIR <- here::here("tos", "HL_LL_global")
dfile <- file.path(DIR, "HL_LL_global_tos.csv")
if (!file.exists(dfile)){ stop("missing ", dfile, " must run 1.postprocessing.R")}
data <- read.csv(dfile, stringsAsFactors = FALSE)
theme_set(theme_bw())
Objective
Take a look at tos data processed from pangeo, note that we’ve only processed a fraction of the historical data from 1850 to 1900.
TOS data
data %>%
ggplot(aes(year, value, color = model)) +
geom_point(alpha = 0.5) +
facet_wrap("area", scales = "free") +
theme_bw() +
theme(legend.position = "none") +
labs(title = "TOS data")

# First calculate the mean value for the models over the ensembles
data %>%
group_by(year, model, area) %>%
summarise(value = mean(value)) %>%
ungroup ->
model_ensemble_mean
`summarise()` has grouped output by 'year', 'model'. You can override using the `.groups` argument.
model_ensemble_mean %>%
ggplot(aes(year, value, color = model)) +
geom_point(alpha = 0.5) +
facet_wrap("area", scales = "free") +
theme_bw() +
theme(legend.position = "none") +
labs(title = "Model Mean")

# Get the PI mean defined as 1850 - 1860
model_ensemble_mean %>%
filter(year %in% 1850:1860) %>%
group_by(model, area) %>%
summarise(value = mean(value)) %>%
ungroup ->
model_means
`summarise()` has grouped output by 'model'. You can override using the `.groups` argument.
# Calculate the multi-model average.
model_means %>%
group_by(area) %>%
summarise(mean = mean(value),
min = min(value),
max = max(value),
sd = sd(value)) ->
tos_values
model_means %>%
ggplot(aes(area, value, color = model)) +
geom_point(alpha = 0.5, position = "jitter") +
geom_point(data = tos_values, aes(area, mean), color = "black", size = 2, alpha = 0.7) +
theme_bw() +
theme(legend.position = "none") +
labs(title = "Model Averages", y = "deg C", x = NULL)

LS0tCnRpdGxlOiAiVE9TIEhMLCBMTCwgJiBHbG9iYWwgZm9yIEhlY3RvciIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICB0b2M6IHllcwogICAgdG9jX2RlcHRoOiAnNCcKICAgIHRvY19mbG9hdDogeWVzCiAgICBudW1iZXJfc2VjdGlvbnM6IHRydWUKZGF0ZTogImByIGZvcm1hdChTeXMudGltZSgpLCAnJWQgJUIsICVZJylgIgotLS0KCiMgU2V0IFVwIApgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFLCBlcnJvciA9IEZBTFNFLCBtZXNzYWdlID0gRkFMU0UpCiMgc2VlIGh0dHBzOi8vYm9va2Rvd24ub3JnL3lpaHVpL3JtYXJrZG93bi1jb29rYm9vay8gZm9yIG1vcmUgaW5mbyBvbiBtYXJrZG93bnMKYGBgCgpgYGB7cn0KbGlicmFyeShkYXRhLnRhYmxlKQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KHRpZHlyKQpsaWJyYXJ5KGdncGxvdDIpCgpESVIgPC0gaGVyZTo6aGVyZSgidG9zIiwgIkhMX0xMX2dsb2JhbCIpCgpkZmlsZSA8LSBmaWxlLnBhdGgoRElSLCAiSExfTExfZ2xvYmFsX3Rvcy5jc3YiKQppZiAoIWZpbGUuZXhpc3RzKGRmaWxlKSl7IHN0b3AoIm1pc3NpbmcgIiwgZGZpbGUsICIgbXVzdCBydW4gMS5wb3N0cHJvY2Vzc2luZy5SIil9CgpkYXRhIDwtIHJlYWQuY3N2KGRmaWxlLCBzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UpCgp0aGVtZV9zZXQodGhlbWVfYncoKSkKYGBgCgojIyBPYmplY3RpdmUgCgpUYWtlIGEgbG9vayBhdCB0b3MgZGF0YSBwcm9jZXNzZWQgZnJvbSBwYW5nZW8sIG5vdGUgdGhhdCB3ZSd2ZSBvbmx5IHByb2Nlc3NlZCBhIGZyYWN0aW9uIG9mIHRoZSBoaXN0b3JpY2FsIGRhdGEgZnJvbSAxODUwIHRvIDE5MDAuIAoKCiMgVE9TIGRhdGEgCgpgYGB7cn0KZGF0YSAlPiUKICAgIGdncGxvdChhZXMoeWVhciwgdmFsdWUsIGNvbG9yID0gbW9kZWwpKSArCiAgICBnZW9tX3BvaW50KGFscGhhID0gMC41KSArCiAgICBmYWNldF93cmFwKCJhcmVhIiwgc2NhbGVzID0gImZyZWUiKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikgKwogICAgbGFicyh0aXRsZSA9ICJUT1MgZGF0YSIpCmBgYAoKCmBgYHtyfQojIEZpcnN0IGNhbGN1bGF0ZSB0aGUgbWVhbiB2YWx1ZSBmb3IgdGhlIG1vZGVscyBvdmVyIHRoZSBlbnNlbWJsZXMKZGF0YSAlPiUKICAgIGdyb3VwX2J5KHllYXIsIG1vZGVsLCBhcmVhKSAlPiUKICAgIHN1bW1hcmlzZSh2YWx1ZSA9IG1lYW4odmFsdWUpKSAlPiUKICAgIHVuZ3JvdXAgLT4KICAgIG1vZGVsX2Vuc2VtYmxlX21lYW4KCm1vZGVsX2Vuc2VtYmxlX21lYW4gJT4lCiAgICBnZ3Bsb3QoYWVzKHllYXIsIHZhbHVlLCBjb2xvciA9IG1vZGVsKSkgKwogICAgZ2VvbV9wb2ludChhbHBoYSA9IDAuNSkgKwogICAgZmFjZXRfd3JhcCgiYXJlYSIsIHNjYWxlcyA9ICJmcmVlIikgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpICsKICAgIGxhYnModGl0bGUgPSAiTW9kZWwgTWVhbiIpCmBgYAoKCmBgYHtyfQojIEdldCB0aGUgUEkgbWVhbiBkZWZpbmVkIGFzIDE4NTAgLSAxODYwCm1vZGVsX2Vuc2VtYmxlX21lYW4gJT4lCiAgICBmaWx0ZXIoeWVhciAlaW4lIDE4NTA6MTg2MCkgJT4lCiAgICBncm91cF9ieShtb2RlbCwgYXJlYSkgJT4lCiAgICBzdW1tYXJpc2UodmFsdWUgPSBtZWFuKHZhbHVlKSkgJT4lCiAgICB1bmdyb3VwIC0+CiAgICBtb2RlbF9tZWFucwoKIyBDYWxjdWxhdGUgdGhlIG11bHRpLW1vZGVsIGF2ZXJhZ2UuCm1vZGVsX21lYW5zICU+JQogICAgZ3JvdXBfYnkoYXJlYSkgJT4lCiAgICBzdW1tYXJpc2UobWVhbiA9IG1lYW4odmFsdWUpLAogICAgICAgICAgICAgIG1pbiA9IG1pbih2YWx1ZSksCiAgICAgICAgICAgICAgbWF4ID0gbWF4KHZhbHVlKSwKICAgICAgICAgICAgICBzZCA9IHNkKHZhbHVlKSkgLT4KICAgIHRvc192YWx1ZXMKYGBgCgoKYGBge3J9Cm1vZGVsX21lYW5zICU+JQogICAgZ2dwbG90KGFlcyhhcmVhLCB2YWx1ZSwgY29sb3IgPSBtb2RlbCkpICsKICAgIGdlb21fcG9pbnQoYWxwaGEgPSAwLjUsIHBvc2l0aW9uID0gImppdHRlciIpICsKICAgIGdlb21fcG9pbnQoZGF0YSA9IHRvc192YWx1ZXMsIGFlcyhhcmVhLCBtZWFuKSwgY29sb3IgPSAiYmxhY2siLCBzaXplID0gMiwgYWxwaGEgPSAwLjcpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSArCiAgICBsYWJzKHRpdGxlID0gIk1vZGVsIEF2ZXJhZ2VzIiwgeSA9ICJkZWcgQyIsIHggPSBOVUxMKQpgYGAKIyMgTmV3IGRhdGEgdnMgSGVjdG9yIGRhdGEKCmBgYHtyfQp0b3NfdmFsdWVzICU+JQogICAgZmlsdGVyKGFyZWEgPT0gImdsb2JhbCIpICU+JQogICAgcHVsbChtZWFuKSAtPgogICAgR0xPQkFMX1RPU19NRUFOCgp0b3NfdmFsdWVzICU+JQogICAgZmlsdGVyKGFyZWEgIT0gImdsb2JhbCIpICU+JQogICAgc2VsZWN0KGFyZWEsIG1lYW4pICU+JQogICAgbXV0YXRlKGRlbHRhX1QgPSBtZWFuIC0gR0xPQkFMX1RPU19NRUFOKSAlPiUKICAgIHNlbGVjdChhcmVhLCBkZWx0YV9UKSAtPgogICAgZGVsdGFfVAoKZGF0YS5mcmFtZShhcmVhID0gdG9zX3ZhbHVlcyRhcmVhLAogICAgICAgICAgIHZhcmlhYmxlID0gYygiZ2xvYmFsIHRvcyBtZWFuIiwgImRlbHRhIFQiLCAiZGVsdGEgVCIpLAogICAgICAgICAgIHZhbHVlID0gYyhHTE9CQUxfVE9TX01FQU4sIGRlbHRhX1QkZGVsdGFfVCkpIC0+CiAgICBoZWN0b3JfZGF0YQoKaGVjdG9yX2RhdGEkb2xkX3ZhbHVlcyA8LSBjKDE1LCAtMTMuMCwgNy4wKQoKaGVjdG9yX2RhdGEKYGBgCgoKCgo=