R/tidy_anipose.R

Defines functions tidy_anipose

Documented in tidy_anipose

#' Tidy Anipose
#'
#' @param data Data frame
#' @param likelihood Likelihood cut-off
#' @param interpolate Whether to interpolate or not (default = FALSE)
#'
#' @import dplyr tidyr
#'
#' @return
#' @export
#'
tidy_anipose <- function(data, likelihood = FALSE, interpolate = FALSE) {

  # Remove columns ----
  columns_remove <- c("folder_1", "filename", "project") # Can be edited
  data <- data %>%
    select(!any_of(columns_remove))

  # Correct column names ----
  axis_names <- unlist(data[1, ])
  bodypart_names <- gsub("\\..*", "", colnames(data))
  new_column_names <- tibble(axis_names, bodypart_names) %>%
    unite("new_column_names", axis_names:bodypart_names) %>%
    deframe()
  colnames(data) <- new_column_names

  # Make data long ----
  data <- data %>%
    slice(-1) %>%
    rownames_to_column("frame") %>%
    mutate(across(everything(), as.numeric)) %>%
    pivot_longer(cols = !frame,
                 names_to = "bodypart") %>%
    separate(bodypart, c("axis", "bodypart")) %>%
    pivot_wider(names_from = axis,
                values_from = value)

  if (!isFALSE(likelihood)){
    data <- filter_likelihood(data, likelihood)
  }

  if (interpolate == TRUE) {
    data <- interpolate_poses(data)
  }

  return(data)
}
roaldarbol/tidymocap documentation built on March 25, 2022, 8:10 p.m.