library(data.table) library(glue) source("R/fun_wt_vals.R") source("R/fun_read_config.R") source("R/fun_dist_disp.R") source("R/fun_link_landscape.R")
read data
paths = list.dirs(path = "data", recursive = F) paths = paths[grep("sim", paths)]
# summarise data over a loop, no saving to ram for (path in paths) { # which data to read lt_data = glue("{path}/00250_pos.csv") data = fread(lt_data) param = read_config(path) # round tstep to nearest 1000 data[, day := cumsum(t %% 100 == 0), by = "id"] data[, interval := cumsum(t %% 1000 == 0), by = "id"] # link environmental data # data = split(data, by = "interval") # over list, read and link landscape # land_files = list.files(path, pattern = "t0", full.names = T) # names(land_files) = names(data) prod = "data/data_parameters/kernels32.png" prod = read_landscape(prod, layer = 1, value_name = "cell_r") # add item and agent data # data = Map( # function(df, land) { # # items = read_landscape(land, layer = 4, value_name = "items") # # agents = read_landscape(land, layer = c(1, 2, 3), value_name = "agents") # # df = link_landscape(df, items) # # df = link_landscape(df, agents) # df = link_landscape(df, prod) # }, # data, land_files # ) data = link_landscape(data, prod) # data = rbindlist(data) data = data[, list(paths = list(.SD)), by = c("id", "day", "interval")] data[, c("displacement", "distance") := list( vapply(paths, get_displacement, FUN.VALUE = 1.0), vapply(paths, get_distance, FUN.VALUE = 1L) )] # summarise items, agents, and cell_r data[, c("mean_r") := lapply(paths, function(df) { # multiple summarise df_ = melt(df[, c("x", "y", "cell_r")], id.vars = c("x", "y"))[, list( mean_val = mean(value) ), by = "variable"] mv_ = df_$mean_val names(mv_) = df_$variable mv_ }) |> transpose() ] # read weights wt_data = get_wt_data( path, gen_start = 250, gen_end = 250, gen_step = 1, n_agents = 100, gen_add = NULL ) # add id wt_data[, id := seq_len(100) - 1] # link weights data = merge(data, wt_data) data$paths = NULL setorder(data, id, day, interval) if (!dir.exists("data/lt_tracks")) { dir.create("data/lt_tracks") } else { data[, names(param) := list(param["growth"], param["type"], param["rep_"])] fwrite( data, glue("data/lt_tracks/data_lt_summary_{param['growth']}_{param['type']}_{param['rep_']}.csv") ) } }
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.