tests/testthat/testprepImageData.r

cat("#### Test prepImageData\n")
test_that("prepImageData", {
  skip_if_not_installed("growthPheno")
  skip_on_cran()
  library(dae)
  library(ggplot2)
  library(growthPheno)
  
  # A set of RGB images with all names using defaults
  raw.RGB.dat <- suppressWarnings(importExcel(file = "./data/rawRGBdatarow.csv",
                                              timeAfterStart = "Time.after.Plantind..d.", 
                                              startTime = "09/01/2017 0:00 AM",
                                              timeFormat = "%d/%m/%Y %H:%M",
                                              plotImagetimes = FALSE))
  testthat::expect_true(all(names(raw.RGB.dat)[c(18,56,94)] == 
                              c("Area.SV1", "Area.SV2", "Area.TV")))
  raw.RGB.dat <- rbind(raw.RGB.dat, raw.RGB.dat)
  longi.RGB <- prepImageData(data = raw.RGB.dat, 
                             timeAfterStart = "Time.after.Plantind..d.", 
                             idcolumns = c("Genotype.ID", "Treatment"))
  testthat::expect_equal(nrow(longi.RGB), 2)
  testthat::expect_equal(ncol(longi.RGB), 35)
  testthat::expect_true("Reps" %in% names(longi.RGB))
  
  # Area RGB images with some imaging traits and copying Water traits
  raw.RGB.dat <- suppressWarnings(importExcel(file = "./data/rawRGBdatarow.csv",
                                              timeAfterStart = "Time.after.Plantind..d.", 
                                              startTime = "09/01/2017 0:00 AM",
                                              timeFormat = "%d/%m/%Y %H:%M",
                                              plotImagetimes = FALSE))
  testthat::expect_true(all(names(raw.RGB.dat)[c(18,56,94)] == 
                              c("Area.SV1", "Area.SV2", "Area.TV")))
  raw.RGB.dat <- rbind(raw.RGB.dat, raw.RGB.dat)
  longi.RGB <- prepImageData(data = raw.RGB.dat, 
                             timeAfterStart = "Time.after.Plantind..d.", 
                             idcolumns = c("Genotype.ID", "Treatment"),
                             calcWaterUse = FALSE,
                             traits = list(img = c("Area", "Compactness"),
                                           H2O = c("Weight.Before","Weight.After",
                                                   "Water.Amount")),
                             labsCamerasViews = list(img = c("SV1", "SV2", "TV"),
                                                     H2O = NULL))
  testthat::expect_equal(nrow(longi.RGB), 2)
  testthat::expect_equal(ncol(longi.RGB), 21)
  
  #Check cameraType = FLUO and keepCameraType
  raw.FLUO.dat <- suppressWarnings(importExcel(file = "./data/rawFLUOdatarow.csv",
                                               timeAfterStart = "Time.after.Plantind..d.", 
                                               startTime = "09/01/2017 0:00 AM", 
                                               timeFormat = "%d/%m/%Y %H:%M",
                                               plotImagetimes = FALSE,
                                               cameraType = "FLUO",
                                               keepCameraType = TRUE))
  testthat::expect_true(all(names(raw.FLUO.dat)[c(18,54)] == 
                              c("Area.FLUO_SV1", "Area.FLUO_SV2")))
  raw.FLUO.dat <- rbind(raw.FLUO.dat, raw.FLUO.dat)
  longi.FLUO <- prepImageData(data = raw.FLUO.dat, 
                              timeAfterStart = "Time.after.Plantind..d.", 
                              idcolumns = c("Genotype.ID", "Treatment"),
                              traits =    list(all = "Area"), 
                              labsCamerasViews = list(all = c("FLUO_SV1", "FLUO_SV2")))
  testthat::expect_equal(nrow(longi.FLUO), 2)
  testthat::expect_equal(ncol(longi.FLUO), 18)
  testthat::expect_lt(abs(longi.FLUO$PSA[1] - 13.43), 1e-02)
  testthat::expect_lt(abs(longi.FLUO$PSA.FLUO_SV1[1] - 6.41), 1e-02)
  
  
  camview.labels <- c("SF0", "SL0", "SU0", "TV0")
  names(camview.labels) <- c("RGB_Side_Far_0", "RGB_Side_Lower_0", 
                             "RGB_Side_Upper_0", "RGB_TV_0")
  
  #Test name change with move to suffix  and supply characters instead of lists
  raw.19.dat <- suppressWarnings(importExcel(file = "./data/raw19datarow.csv",
                                             individualId = "Snapshot.ID.Tags",
                                             startTime = "06/10/2017 0:00 AM",
                                             timeFormat = "%d/%m/%Y %H:%M",
                                             labsCamerasViews = camview.labels, 
                                             plotImagetimes = FALSE))
  testthat::expect_true(all(c("Area.SF0", "Area.SL0", "Area.SU0", "Area.TV0") %in% 
                              names(raw.19.dat)))
  raw.19.dat <- rbind(raw.19.dat, raw.19.dat)
  longi.19 <- prepImageData(data = raw.19.dat, 
                            individualId = "Snapshot.ID.Tags",
                            idcolumns = c("Plant.Species", "Mycorrhiza", "Zn"),
                            calcWaterUse = FALSE, 
                            traits = "Area", 
                            labsCamerasViews = camview.labels)
  testthat::expect_equal(nrow(longi.19), 2)
  testthat::expect_equal(ncol(longi.19), 17)
  testthat::expect_lt(abs(longi.19$PSA[1] - 6.73), 1e-02)
  testthat::expect_lt(abs(longi.19$PSA.SF0[1] - 1.18), 1e-02)
  
  #Test name change with move to suffix  and pass through just the names to retain
  raw.19.dat <- suppressWarnings(importExcel(file = "./data/raw19datarow.csv",
                                             individualId = "Snapshot.ID.Tags",
                                             startTime = "06/10/2017 0:00 AM",
                                             timeFormat = "%d/%m/%Y %H:%M",
                                             labsCamerasViews = camview.labels, 
                                             plotImagetimes = FALSE))
  testthat::expect_true(all(c("Area.SF0", "Area.SL0", "Area.SU0", "Area.TV0") %in% 
                              names(raw.19.dat)))
  raw.19.dat <- rbind(raw.19.dat, raw.19.dat)
  longi.19 <- prepImageData(data = raw.19.dat, 
                            individualId = "Snapshot.ID.Tags",
                            idcolumns = c("Plant.Species", "Mycorrhiza", "Zn"),
                            calcWaterUse = FALSE, 
                            traits = c("Area.SF0", "Area.SL0", "Area.SU0", "Area.TV0"), 
                            labsCamerasViews = NULL)
  testthat::expect_equal(nrow(longi.19), 2)
  testthat::expect_equal(ncol(longi.19), 17)
  testthat::expect_lt(abs(longi.19$PSA[1] - 6.73), 1e-02)
  testthat::expect_lt(abs(longi.19$PSA.SF0[1] - 1.18), 1e-02)
  
  #Test remove cameraType with move to suffix
  raw.19.dat <- suppressWarnings(importExcel(file = "./data/raw19datarow.csv",
                                             individualId = "Snapshot.ID.Tags",
                                             startTime = "06/10/2017 0:00 AM",
                                             timeFormat = "%d/%m/%Y %H:%M",
                                             cameraType = "RGB", 
                                             plotImagetimes = FALSE))
  testthat::expect_true(all(c("Area.Side_Far_0", "Area.Side_Lower_0", "Area.Side_Upper_0", 
                              "Area.TV_0") %in% names(raw.19.dat)))
  raw.19.dat <- rbind(raw.19.dat, raw.19.dat)
  longi.19 <- prepImageData(data = raw.19.dat, 
                            individualId = "Snapshot.ID.Tags",
                            idcolumns = c("Plant.Species", "Mycorrhiza", "Zn"),
                            calcWaterUse = FALSE, 
                            traits = list(t = "Area"), 
                            labsCamerasViews = list(c = c("Side_Far_0", "Side_Lower_0", 
                                                          "Side_Upper_0", "TV_0")))
  testthat::expect_equal(nrow(longi.19), 2)
  testthat::expect_equal(ncol(longi.19), 17)
  testthat::expect_lt(abs(longi.19$PSA[1] - 6.73), 1e-02)
  testthat::expect_lt(abs(longi.19$PSA.Side_Far_0[1] - 1.18), 1e-02)
  
})

cat("#### Test prepImageData Replicates\n")
test_that("prepImageData Replicates", {
  skip_if_not_installed("growthPheno")
  skip_on_cran()
  library(dae)
  library(ggplot2)
  library(growthPheno)
  
  # A set of RGB images with all names using defaults
  raw.RGB.dat <- suppressWarnings(importExcel(file = "./data/rawRGBdatarow.csv",
                                              timeAfterStart = "Time.after.Plantind..d.", 
                                              startTime = "09/01/2017 0:00 AM",
                                              timeFormat = "%d/%m/%Y %H:%M",
                                              plotImagetimes = FALSE))
  testthat::expect_true(all(names(raw.RGB.dat)[c(18,56,94)] == 
                              c("Area.SV1", "Area.SV2", "Area.TV")))
  raw.RGB.dat <- rbind(raw.RGB.dat, raw.RGB.dat)
  longi.RGB.Rep <- prepImageData(data = raw.RGB.dat, 
                                 timeAfterStart = "Time.after.Plantind..d.", 
                                 potIDcolumns = c("Genotype.ID", "Treatment", "Replicate"))
  testthat::expect_equal(nrow(longi.RGB.Rep), 2)
  testthat::expect_equal(ncol(longi.RGB.Rep), 35)
  testthat::expect_true(!("Reps" %in% names(longi.RGB.Rep)))
  testthat::expect_true(is.factor(longi.RGB.Rep$Replicate))
  
  longi.RGB.Rep <- prepImageData(data = raw.RGB.dat, 
                                 timeAfterStart = "Time.after.Plantind..d.", 
                                 potIDcolumns = c("Genotype.ID", "Treatment"))
  testthat::expect_equal(nrow(longi.RGB.Rep), 2)
  testthat::expect_equal(ncol(longi.RGB.Rep), 34)
  testthat::expect_true(!("Reps" %in% names(longi.RGB.Rep)))
  testthat::expect_true(!("Replicate" %in% names(longi.RGB.Rep)))

  #Test when no Replicate in data.frame  
  tmp <- raw.RGB.dat[, -match("Replicate", names(raw.RGB.dat))]
  testthat::expect_error(
    longi.RGB.Rep <- prepImageData(data = tmp, 
                                   timeAfterStart = "Time.after.Plantind..d.", 
                                   potIDcolumns = c("Genotype.ID", "Treatment", "Replicate")),
    regexp = "The following variables are not present in data:  Replicate")
  
})


cat("#### Test prepImageData exampleData\n")
test_that("prepImageData exampleData", {
  skip_if_not_installed("growthPheno")
  skip_on_cran()
  library(growthPheno)

  data(exampleData)  
  
  longi.dat <- prepImageData(data=raw.dat, 
                           traits= list(all = "Area"), 
                           labsCamerasViews = list(all = NULL), 
                           potIDcolumns = c("Genotype.ID", "Treatment.1", "Replicate" ), 
                           smarthouse.lev=1)
  testthat::expect_true(all(c("Genotype.ID", "Treatment.1", "Replicate" ) %in% names(longi.dat)))
  testthat::expect_true(!("Reps" %in% names(longi.dat)))
  testthat::expect_true(!("Treatment.2" %in% names(longi.dat)))
  
})
briencj/growthPheno documentation built on April 14, 2025, 6:17 p.m.