| |
|
|
| library(tidyverse) |
| library(plyr) |
| library(dplyr) |
| library(readr) |
| library(optparse) |
|
|
| save_fnorm_by_model <- function(df, factor) { |
| models <- unique(df$model) |
| for (mdl in models) { |
| df_by_model <- df |> |
| filter(model == mdl) |> |
| select(-c("model")) |
| sd <- sd(df_by_model$kurtosis_scaled) |
| mu <- mean(df_by_model$kurtosis_scaled) |
| df_by_model <- df_by_model |> |
| mutate( |
| kurtosis_scaled = ifelse(abs(kurtosis_scaled - mu) / sd > 3, factor, 1) |
| ) |> |
| write_csv(paste0("fnorm-", mdl, ".csv")) |
| } |
| } |
|
|
| strip_name <- function(name) { |
| start <- nchar("fnorm-") + 1 |
| stop <- nchar(name) - 4 |
| return(substr(name, start, stop)) |
| } |
|
|
| parser <- OptionParser() |
| parser <- add_option( |
| parser, c("-f", "--factor"), |
| type = "double", |
| help = "Factor to apply", |
| metavar = "double" |
| ) |
| parser <- add_option( |
| parser, c("-d", "--data_dir"), |
| type = "character", |
| help = "Data directory of fnorm csv files", |
| metavar = "character" |
| ) |
|
|
|
|
| args <- parse_args(parser) |
|
|
| if (is.null(args$data_dir)) { |
| fnorm_dir <- "../src/data" |
| } else { |
| fnorm_dir <- args$data_dir |
| } |
| if (is.null(args$factor)) { |
| factor <- 2.0 |
| } else { |
| factor <- args$factor |
| } |
| fnorm_dir <- "/tmp/apportion-sensi" |
| fnorm_dir <- path.expand(fnorm_dir) |
| fnorm_fps <- dir( |
| path = fnorm_dir, |
| pattern = "fnorm-.*\\.csv$", |
| full.names = TRUE |
| ) |
| names(fnorm_fps) <- sapply((basename(fnorm_fps)), strip_name) |
| df_fnorm <- plyr::ldply( |
| fnorm_fps, |
| read.csv, |
| stringsAsFactors = FALSE, |
| .id = "model" |
| ) |
|
|
| |
| |
|
|
| save_fnorm_by_model(df_fnorm, factor) |
|
|