## ----setup, include = FALSE--------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) folder <- 'resources' ## ----cran_install, eval=FALSE------------------------------------------------- # install.packages('sapfluxnetr') ## ----github_inst, eval=FALSE-------------------------------------------------- # # if (!require(remotes)) {install.packages('remotes')} # remotes::install_github( # 'sapfluxnet/sapfluxnetr', ref = 'devel', # build_opts = c("--no-resave-data", "--no-manual", "--build-vignettes") # ) ## ----pkg_load----------------------------------------------------------------- library(sapfluxnetr) # tidyverse library(dplyr) library(ggplot2) ## ----downzip, eval = FALSE---------------------------------------------------- # # download the data # download.file( # url = "https://zenodo.org/record/3971689/files/0.1.5.zip?download=1", # destfile = '0.1.5.zip' # ) # # unzip the data # # BE SURE YOU HAVE AT LEAST 24GB OF DISK SPACE # unzip("0.1.5.zip") # # check if files are present # list.files(file.path('0.1.5', 'RData', 'plant')) # list.files(file.path('0.1.5', 'csv', 'plant')) ## ----read_and_inspect, eval=FALSE--------------------------------------------- # # read the data # arg_maz <- read_sfn_data('ARG_MAZ', folder = 'RData/plant') # # # see a brief summary of the site: # arg_maz ## ----read_internals, echo=FALSE----------------------------------------------- # read the data arg_maz <- read_sfn_data('ARG_MAZ', folder = folder) # see a brief summary of the site: arg_maz ## ----accesors_data------------------------------------------------------------ # sapf data with original site timestamp arg_maz_sapf <- get_sapf_data(arg_maz, solar = FALSE) arg_maz_sapf # env_data with calculated aparent solar time arg_maz_env <- get_env_data(arg_maz, solar = TRUE) arg_maz_env ## ----accesors_md-------------------------------------------------------------- arg_maz_site_md <- get_site_md(arg_maz) arg_maz_site_md arg_maz_stand_md <- get_stand_md(arg_maz) arg_maz_stand_md arg_maz_species_md <- get_species_md(arg_maz) arg_maz_species_md arg_maz_plant_md <- get_plant_md(arg_maz) arg_maz_plant_md arg_maz_env_md <- get_env_md(arg_maz) arg_maz_env_md ## ----describe----------------------------------------------------------------- # what is env_ta? describe_md_variable('env_ta') # or pl_species? describe_md_variable('pl_species') ## ----get_flags---------------------------------------------------------------- arg_maz_sapf_flags <- get_sapf_flags(arg_maz, solar = TRUE) arg_maz_sapf_flags arg_maz_env_flags <- get_env_flags(arg_maz, solar = TRUE) arg_maz_env_flags ## ----out_range---------------------------------------------------------------- arg_maz_env_flags %>% filter_all(any_vars(stringr::str_detect(., 'RANGE_WARN'))) ## ----crossing_flags----------------------------------------------------------- arg_maz_env_flags %>% filter_all(any_vars(stringr::str_detect(., 'RANGE_WARN'))) %>% semi_join(arg_maz_env, ., by = 'TIMESTAMP') %>% select(TIMESTAMP, ws) ## ----sapf_plot, fig.width=6--------------------------------------------------- sfn_plot(arg_maz, type = 'sapf', solar = TRUE) + facet_wrap(~ Tree) + theme(legend.position = 'none') ## ----env_plot, fig.width=6, fig.height=4-------------------------------------- sfn_plot(arg_maz, type = 'env', solar = TRUE) + facet_wrap(~ Variable, scales = 'free_y') + theme(legend.position = 'none') ## ----vpd_and_vs, fig.show='hold'---------------------------------------------- # vpd individually sfn_plot(arg_maz, type = 'vpd', solar = TRUE) # vpd vs sapf sfn_plot(arg_maz, formula_env = ~vpd, solar = TRUE) + theme(legend.position = 'none') ## ----daily-------------------------------------------------------------------- arg_maz_daily <- daily_metrics(arg_maz, solar = TRUE) names(arg_maz_daily) names(arg_maz_daily[['sapf']]) names(arg_maz_daily[['env']]) ## ----daily_sapf_gen_q99------------------------------------------------------- arg_maz_daily[['sapf']] %>% select(TIMESTAMP, ends_with('q_95')) ## ----daily_sapf_md_mean------------------------------------------------------- arg_maz_daily[['env']] %>% select(TIMESTAMP, ends_with('mean')) ## ----metadata_database, eval = FALSE------------------------------------------ # sfn_metadata <- read_sfn_metadata(folder = 'RData/plant', .write_cache = TRUE) ## ----metadata_database_real, echo=FALSE, warning=FALSE------------------------ # sfn_metadata <- read_sfn_metadata(folder = folder, .write_cache = TRUE) sfn_metadata <- sapfluxnetr:::.write_metadata_cache(folder = folder, .dry = TRUE) ## ----md_db_str---------------------------------------------------------------- # access plant metadata sfn_metadata[['plant_md']] ## ----sfn_sites_in_folder, eval=FALSE------------------------------------------ # folder <- 'RData/plant/' # sites <- sfn_sites_in_folder(folder) # sites ## ----sfn_sites_in_folder_real, echo=FALSE------------------------------------- sites <- sfn_sites_in_folder(folder) sites ## ----filtering_by_md, eval=FALSE---------------------------------------------- # temperate <- sfn_sites_in_folder(folder) %>% # filter_sites_by_md( # si_biome %in% c('Woodland/Shrubland', 'Temperate forest'), # metadata = sfn_metadata # ) # # temperate ## ----filtering_by_md_real, echo=FALSE, warning=FALSE-------------------------- temperate <- sfn_sites_in_folder(folder) %>% filter_sites_by_md( si_biome %in% c('Woodland/Shrubland', 'Temperate forest'), metadata = sfn_metadata ) temperate ## ----filters_combined, eval=FALSE--------------------------------------------- # temperate_hr <- sfn_sites_in_folder(folder) %>% # filter_sites_by_md( # si_biome %in% c('Woodland/Shrubland', 'Temperate forest'), # pl_sens_meth == 'HR', # metadata = sfn_metadata # ) # # temperate_hr ## ----filters_combined_real, echo=FALSE, warning=FALSE------------------------- temperate_hr <- sfn_sites_in_folder(folder) %>% filter_sites_by_md( si_biome %in% c('Woodland/Shrubland', 'Temperate forest'), pl_sens_meth == 'HR', metadata = sfn_metadata ) temperate_hr ## ----vars_to_filter----------------------------------------------------------- sfn_vars_to_filter() # and see what values we must use for filtering by pl_sens_meth describe_md_variable('pl_sens_meth') ## ----multi, eval=FALSE-------------------------------------------------------- # temperate_sites <- temperate %>% # read_sfn_data(folder = 'RData/plant') # temperate_sites ## ----multi_real, echo=FALSE--------------------------------------------------- temperate_sites <- temperate %>% read_sfn_data(folder = folder) temperate_sites ## ----mutil_site--------------------------------------------------------------- # the following is the same as temperate_sites[[3]] or # temperate_sites$AUS_CAN_ST2_MIX temperate_sites[['AUS_CAN_ST2_MIX']] ## ----multi_aggregation-------------------------------------------------------- temperate_aggregated <- temperate_sites %>% daily_metrics() names(temperate_aggregated) ## ----tidyfing----------------------------------------------------------------- temperate_tidy <- temperate_sites %>% daily_metrics(tidy = TRUE, metadata = sfn_metadata) temperate_tidy ## ----ex_1_plot, fig.width=7, fig.height=4.3----------------------------------- ggplot( temperate_tidy, aes(x = vpd_mean, y = sapflow_q_95, colour = si_code, size = pl_sapw_area) ) + geom_point(alpha = 0.2)