get_data <- function(csv_file_name) { # Reads data from csv file into a tibble, and creates IDs for mice, series, experiments, and neurons tib = read_csv(csv_file_name) if (has_name(tib, 'mseu')) { # add mouse ID - this is based on m(ouse) only tib <- tib %>% mutate(mid = as.numeric(as.factor(str_split_fixed(tib$mseu, '_s', 2)[,1]))) # add series ID - this is based on m and s(eries) tib <- tib %>% mutate(sid = as.numeric(as.factor(str_split_fixed(tib$mseu, '_e', 2)[,1]))) # add exp ID - this is based on m, s, and e(xperiment) tib <- tib %>% mutate(eid = as.numeric(as.factor(str_split_fixed(tib$mseu, '_u', 2)[,1]))) # add unit ID - this is based on m, s, and u(nit), ignoring e tib <- tib %>% mutate(uid = as.numeric(as.factor(paste(str_split_fixed(tib$mseu, '_e', 2)[,1], '_u' , str_split_fixed(tib$mseu, '_u', 2)[,2], sep="")))) # put iDs up front tib <- tib %>% select(mid, sid, eid, uid, everything()) # If we don't have 'experiments', we need to do a slightly different parsing } else if (has_name(tib, 'msu')) { # add mouse ID - this is based on m only tib <- tib %>% mutate(mid = as.numeric(as.factor(str_split_fixed(tib$msu, '_s', 2)[,1]))) # add series ID - this is based on m and s tib <- tib %>% mutate(sid = as.numeric(as.factor(str_split_fixed(tib$msu, '_u', 2)[,1]))) # add unit ID - this is based on m, s, and u tib <- tib %>% mutate(uid = as.numeric(as.factor(tib$msu))) # put IDs up front tib <- tib %>% select(mid, sid, uid, everything()) # put id up front # We don't have units - this requires a slightly differnt parsing } else if (has_name(tib, 'mse')) { # add mouse ID tib <- tib %>% mutate(mid = as.numeric(as.factor(str_split_fixed(tib$mse, '_s', 2)[,1]))) # add series ID tib <- tib %>% mutate(sid = as.numeric(as.factor(str_split_fixed(tib$mse, '_e', 2)[,1]))) # add experiment ID tib <- tib %>% mutate(eid = as.numeric(as.factor(tib$mse))) # put IDs up front tib <- tib %>% select(mid, sid, eid, everything()) } return(tib) }