R/LEEF_1_biomass_bemovi_25.R

Defines functions LEEF_1_biomass_bemovi_25

Documented in LEEF_1_biomass_bemovi_25

#' LEEF-1 - Add biomass to traits
#'
#' @param ciliate_traits_25 traits as read from file \code{morph_mvt_TIMESTAMP.rds}
#' @param ciliate_density_25 density as read from file \code{mean_density_per_ml_TIMESTAMP.rds}
#'
#' @return list containing two objects, \code{traits} containing complete traits file
#'   as the argument \code{algai_traits} day includinc biomass column and \code{biomasses}
#'   per timestamp, bottle and species per milliliter.
#' @export
#'
#' @examples
LEEF_1_biomass_bemovi_25 <- function(
    ciliate_traits_25,
    ciliate_density_25) {
  video_biomass_species <- c(
    "Paramecium_bursaria", "Paramecium_caudatum", "Coleps_irchel", # species for which biomass is calculated
    "Stylonychia1", "Stylonychia2", "Colpidium", "Euplotes",
    "Tetrahymena", "Loxocephallus",
    "Dexiostoma"
  )

  # 25x

  ciliate_traits_25_normalCases <- ciliate_traits_25 %>%
    dplyr::filter(species %in% video_biomass_species) %>%
    mutate(
      height = ifelse(
        species %in% c("Euplotes", "Stylonychia1", "Stylonychia2"),
        mean_minor / 3,
        ifelse(
          species %in% c("Paramecium_bursaria"),
          mean_minor / 1.5,
          mean_minor
        )
      ),
      biomass = (4 / 3) * pi * (mean_minor / 2) * (height / 2) * (mean_major / 2), # calculate biomass
      biomass = biomass / 10^12 # change it from um3 to g, assuming water density
    )

  ciliate_traits_25_NotBiomass <- ciliate_traits_25 %>%
    dplyr::filter(!(species %in% video_biomass_species)) %>%
    mutate(
      height = as.numeric(NA),
      biomass = as.numeric(NA)
    )


  # join datasets again


  ciliate_traits_25 <- rbind(
    ciliate_traits_25_normalCases,
    ciliate_traits_25_NotBiomass
  ) # traits dataset finished here

  # calculate biomass per milliliter

  extrapolation.factor_25 <- 23.367

  # Make sure, that we have n_frames and not N_frames
  names(ciliate_traits_25)[names(ciliate_traits_25) == "N_frames"] <- "n_frames"

  biomasses <- ciliate_traits_25 %>%
    group_by(timestamp, bottle, species) %>%
    summarize(
      biomass = sum(biomass * n_frames, na.rm = TRUE) / (3 * 125) # if not 3 videos corrections is done below with dens_factor
    ) %>%
    mutate(
      biomass = biomass * extrapolation.factor_25,
      biomass = ifelse(
        !(species %in% video_biomass_species),
        as.numeric(NA),
        biomass
      )
    ) # add biomass=NA if not a species

  biomasses$timestamp <- as.character(biomasses$timestamp)

  densities <- full_join(
    ciliate_density_25,
    biomasses,
    by = c("timestamp", "bottle", "species")
  )
  densities$biomass[densities$species %in% video_biomass_species & is.na(densities$biomass)] <- 0

  densities <- densities |>
    mutate(
      biomass = biomass * dens_factor
    )
  # mutate(
  #   biomass = case_when(
  #     species %in% flowcam_biomass_species & is.na(biomass) ~ 0,
  #     TRUE ~ biomass)
  # )

  return(
    list(
      traits = ciliate_traits_25,
      density = densities
    )
  )
}
LEEF-UZH/LEEF.analysis documentation built on Feb. 8, 2025, 11:18 a.m.