## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ## ----setup-------------------------------------------------------------------- library(fishmechr) library(ggplot2) library(tidyr) library(dplyr) ## ----------------------------------------------------------------------------- head(xmucosusdata) ## ----------------------------------------------------------------------------- pointnames <- c("Snout", "BP1", "BP2", "BP3", "BP4", "BP5", "BP6", "Tail") xmucosusdata <- xmucosusdata |> pivot_kinematics_longer(pointnames = pointnames, point_to = "bodypart") ## ----------------------------------------------------------------------------- head(xmucosusdata) ## ----------------------------------------------------------------------------- xmucosusdata |> filter(frame_idx %in% c(10, 20)) |> mutate(frame_idx = factor(frame_idx)) |> ggplot(aes(x = x, y = y, color = frame_idx, group = frame_idx)) + geom_path() + coord_fixed() ## ----------------------------------------------------------------------------- xmucosusdata <- xmucosusdata |> group_by(frame_idx) |> mutate(arclen0 = arclength(x, y)) ## ----------------------------------------------------------------------------- xmucosusdata |> ungroup() |> filter(bodypart %in% c("BP2", "BP5", "Tail")) |> ggplot(aes(x = frame_idx, y = arclen0, color = bodypart)) + geom_point() ## ----------------------------------------------------------------------------- xmucosusdata <- xmucosusdata |> interpolate_points_df(arclen0, x, y, spar = 0.2, tailmethod = 'extrapolate', .frame = frame_idx, .point = bodypart, .out = c(arclen='arclen', xs='x_s', ys='y_s')) ## ----------------------------------------------------------------------------- xmucosusdata |> filter(frame_idx %in% c(10, 20)) |> mutate(frame_idx = factor(frame_idx)) |> ggplot(aes(x = x, y, color = frame_idx, group = frame_idx)) + geom_point(shape = 10) + geom_path() + geom_point(aes(x = x_s, y = y_s), shape = 5) + coord_fixed() ## ----------------------------------------------------------------------------- xmucosusdata <- xmucosusdata |> group_by(frame_idx) |> mutate(width = interpolate_width(fishwidth$s, fishwidth$eelwidth, arclen)) ## ----------------------------------------------------------------------------- xmucosusdata <- xmucosusdata |> ungroup() |> get_midline_center_df(arclen, x_s,y_s, width=width, .frame = frame_idx) ## ----------------------------------------------------------------------------- xmucosusdata <- xmucosusdata |> mutate(x_ctr = x_s - xcom, y_ctr = y_s - ycom, t = frame_idx / 60) |> get_primary_swimming_axis_df(t, x_ctr,y_ctr, .frame = frame_idx, .point = bodypart) ## ----------------------------------------------------------------------------- xmucosusdata |> filter(frame_idx %in% c(10, 20, 30)) |> ggplot(aes(x = x, y = y, color = frame_idx)) + geom_path(aes(group = frame_idx)) + geom_segment(data = ~ filter(.x, bodypart == "Tail"), aes(x = xcom, y = ycom, xend = xcom - 50*swimaxis_x, yend = ycom - 50*swimaxis_y)) + geom_point(data = ~ filter(.x, bodypart == "Tail"), aes(x = xcom, y = ycom), color = 'red') + facet_grid(frame_idx ~ .) + coord_fixed()