tests/testthat/test_plotFingerprint.R

# Author: TW
#require(testthat)
context("plotFingerPrint")

if (!exists("Example_DETha98")) load("data/Example_DETha98.RData")
EddyData.F <- Example_DETha98

#Include POSIX time stamp column
EddyDataWithPosix.F <- suppressMessages(fConvertTimeToPosix(
  EddyData.F, 'YDH', Year = 'Year', Day = 'DoY', Hour = 'Hour'))
# construct multiyear dataset
EddyData99.F <- EddyData.F
EddyData99.F$Year <- 1999
EddyDataWithPosix2yr.F <- suppressMessages(fConvertTimeToPosix(rbind(
  EddyData.F, EddyData99.F), 'YDH', Year = 'Year', Day = 'DoY', Hour = 'Hour'))
rm( EddyData99.F )

EProc <- sEddyProc$new('DE-Tha', EddyDataWithPosix.F, c('NEE','Rg', 'Tair', 'VPD'))
data <- cbind( EProc$sDATA, EProc$sTEMP)
dts <- EProc$sINFO$DTS

test_that("plotting NEE with class method",{
  EProc$sPlotFingerprintY("NEE", Year = 1998)
})

test_that("plotting NEE with different range",{
  EProc$sPlotFingerprintY(
    "NEE", Year = 1998,
    valueLimits = quantile(EProc$sDATA$NEE,
                           prob = c( 0.05, 0.99), na.rm = TRUE))
})


test_that("plotting legend only",{
  EProc$sPlotFingerprintY("NEE", Year = 1998, onlyLegend = TRUE)
})

test_that("plotting NEE",{
  sEddyProc_sPlotFingerprintY("NEE", Year = 1998, data = data, dts = dts)
})

test_that("plotting NEE with Inf-values",{
  data2 <- data
  data2$NEE[5:10][is.finite(data2$NEE[5:10])] <- Inf
  sEddyProc_sPlotFingerprintY("NEE", Year = 1998, data = data2, dts = dts)
})

test_that("plotting NEE to pdf",{
  skip_on_cran()
  EProc$sPlotFingerprint("NEE", Dir = tempdir())
})

test_that("plot diurnal cycle of NEE to pdf",{
  skip_on_cran()
  EProc$sPlotDiurnalCycle("NEE", Dir = tempdir())
})

test_that("sPlotHHFluxes",{
  skip_on_cran()
  EProc$sPlotHHFluxes("NEE", Dir = tempdir())
})

test_that("compute_daily_mean",{
  nday = 5
  nRecInDay = 48
  x0 = 1.2  # mumol CO2 / s
  x0_sd = 0.1*x0
  x = rep(x0, nday*nRecInDay)
  x_sd = rep(x0_sd, nday*nRecInDay)
  # no noise,
  res = REddyProc:::compute_daily_mean(x, x_sd, nRecInDay, 1, 1)
  expect_equal(res$x, rep(x0,5))
  expect_equal(res$x_sd, rep(x0_sd,5)) # no uncertainty decrease: correlated
  # convert to mumol CO2 per day
  timeFactor = 3600 * 24
  res = REddyProc:::compute_daily_mean(x, x_sd, nRecInDay, timeFactor, 1)
  expect_equal(res$x, rep(x0,5)*timeFactor)
  expect_equal(res$x_sd, rep(x0_sd,5)*timeFactor) # correlated
  # convert to gCO2 per second: (g CO2/mumol CO2) * (gC/gCO2)
  massFactor =  (44.0096 / 1e6) * (12.011 / 44.0096)
  ## conversion factor with default from mumol CO2 to g C
  res = REddyProc:::compute_daily_mean(x, x_sd, nRecInDay, 1, massFactor)
  expect_equal(res$x, rep(x0,5)*massFactor)
  expect_equal(res$x_sd, rep(x0_sd,5)*massFactor) # correlated
})

test_that("sPlotDailySums",{
  skip_on_cran()
  df = cbind(EProc$sDATA, EProc$sTEMP)
  REddyProc:::sEddyProc_sPlotDailySumsY("NEE", Year=1998, data=df, dts=48)
  #
  EProc$sPlotDailySums("NEE", Dir = tempdir())
})

test_that("sPlotDailySums",{
  skip_on_cran()
  df = cbind(EProc$sDATA, EProc$sTEMP)
  REddyProc:::sEddyProc_sPlotDailySumsY("NEE", Year=1998, data=df, dts=48)
  #
  EProc$sPlotDailySums("NEE", Dir = tempdir())
})

test_that("sPlotFingerprintY with all missing: error caught",{
  data2 <- EddyDataWithPosix2yr.F
  data2$NEE[data2$Year == 1999] <- NA
  EProc2 <- sEddyProc$new('DE-Tha', data2, c('NEE','Rg', 'Tair', 'VPD'))
  EProc2$sPlotFingerprintY("NEE", Year = 1999)
  EProc2$sPlotFingerprint("NEE", Dir=tempdir())
})
bgctw/REddyProc documentation built on March 26, 2024, 11:35 p.m.