inst/tests/test_sEddyProc_Partitioning.R

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#+++ Unit tests for sEddyProc functions regarding partioning +++
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Author: TW
#require(testthat)
context("sEddyProc-Class partitioning")

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

if( !exists(".binUstar") ) .binUstar <- REddyProc:::.binUstar

#Load example data directly from package or (if not available) from txt file
data('Example_DETha98', package='REddyProc')
if( sum(grepl('EddyData.F',ls())) == 0 ) {
  if( file.exists('../examples/Example_DETha98.txt') ) {
    EddyData.F <- suppressMessages(fLoadTXTIntoDataframe('Example_DETha98.txt','../examples'))
  } else {
  message('Unit test directory: ', getwd())
  message('Workspace: ', ls())
  stop('test_sEddyProc.R::: Example data could not be loaded.')
  }
}
#Include POSIX time stamp column
EddyDataWithPosix.F <- suppressMessages(fConvertTimeToPosix(EddyData.F, 'YDH', Year.s='Year', Day.s='DoY', Hour.s='Hour'))

EddyHour.C <- sEddyProc$new('DE-Tha', EddyDataWithPosix.F[c(F,T),][1:(24*3*30),], c('NEE','Rg', 'Tair', 'VPD'), DTS.n=24)
EddyHour.C$sMDSGapFill('Tair', Verbose.b=F)
EddyHour.C$sMDSGapFill('NEE', Verbose.b=F)


test_that("fOptimSingleE0",{
			#EddyHour.C$sMRFluxPartition( Lat_deg.n=51, Long_deg.n=7, TimeZone_h.n=1 )
			Temp_degK.V.n <- structure(c(279.45, 279.25, 278.95, 278.35, 278.35, 278.55, 279.15, 
							279.55, 279.95, 279.25, 278.85, 278.65, 277.75, 277.75, 277.35, 
							277.55, 276.35, 275.15, 274.65, 276.45, 276.25, 276.25, 276.35, 
							276.15, 275.15, 275.35, 275.25, 275.05, 275.15, 275.65, 276.45, 
							276.65, 277.25, 277.75, 282.55, 282.05, 282.05, 282.15, 277.25, 
							277.85, 278.45, 278.65, 279.15, 279.45, 279.95, 279.45, 279.55, 
							280.05, 280.15, 281.15, 281.15, 280.95, 280.95, 281.15, 281.35, 
							281.45, 281.15, 281.45, 281.55, 281.55, 281.35, 281.25, 281.35, 
							281.55, 282.25, 282.45, 282.55, 282.25, 282.25, 282.25, 282.15, 
							281.95, 281.75, 281.55, 281.45, 281.15, 280.65, 280.95, 280.55, 
							280.95, 280.55, 280.45, 280.75, 280.85, 280.25, 283.55, 283.25, 
							283.55, 283.25, 283.55, 284.45, 284.75, 285.65, 285.05, 284.15, 
							282.55, 281.85, 278.05, 280.15, 280.95, 278.95, 278.95, 279.05, 
							279.35, 279.25, 278.95, 279.05, 279.35, 278.95, 278.25, 277.55, 
							276.85, 276.65, 277.15, 277.15, 277.25, 276.95, 276.85, 276.95, 
							277.15, 277.15, 277.05, 276.85, 277.75, 277.75, 277.95, 277.85, 
							279.25, 279.35, 279.05, 278.25, 278.35), varnames = "Temp_K", units = "degK")
			NEEnight.V.n <- c(-0.6, 4.21, 0.09, 0.01, 2.24, 3.61, 2.56, 4.06, 1.32, 5.91, 
					3, -0.43, 2.82, 0.12, 3.01, -0.27, 1.45, 2.14, -0.99, -0.93, 
					1.49, 0.33, -7.02, 4.25, 1.95, 0.6, 2.36, -0.01, 0.74, 0.03, 
					1.53, 0.18, 0.11, 3.08, 1.41, 1.29, 1.04, -9.18, -0.14, -15.24, 
					1.43, 2.62, -1.14, 1.6, 0.55, -2.15, 1.61, 0.44, 1.96, 0.76, 
					1.05, 1.4, 0.88, 2.35, -0.84, 2.45, 0.67, 0.52, 1.07, 2.8, 1.25, 
					0.45, -1.91, 2.64, 2.7, 1.39, 2.68, 3.11, 0.29, 1.86, 2.42, 0.44, 
					0.94, 2.08, 2.56, 2.95, 0.75, 1.16, 2.86, 1.562, 1.73, -0.13, 
					3.76, 1.22, 1.432, 1.09, -3.14, -0.84, 1.97, 2.59, -0.47, -0.85, 
					1.3, 1.52, 3.23, 1.01, 0.99, 0.66, 0.16, 0.15, 1.08, 1.09, 0.45, 
					0.32, 0.8, 1.01, -0.41, 2.52, 0.36, 0.33, 0.57, -0.06, 0.82, 
					8.82, -0.04, -3.96, -0.53, 2.75, 1.45, -0.39, -2.06, 0.03, 0.18, 
					-1.21, 2.44, 0.49, 0.05, -0.17, 2.93, 4.77, 1.85, -0.35)
			res <- fOptimSingleE0( NEEnight.V.n, Temp_degK.V.n,T_ref.n=273.15+15, recoverOnError=TRUE)
			expect_true( is.numeric(res) )
			expect_true( length(res)> 1 )
			expect_true( all(is.finite(res) ))
			
			resL <- fOptimSingleE0_Lev( NEEnight.V.n, Temp_degK.V.n,T_ref.n=273.15+15, recoverOnError=TRUE)
			expect_true( is.numeric(res) )
			expect_true( length(res)> 1 )
			expect_true( all(is.finite(res) ))
		})

test_that("fRegrE0fromShortTerm",{
			TempVar.V.n <- c(4.4, 4.7, 4.2, 4.8, 4.6, 4.1, 4.3, 4.8, 4.2, 4.9, 5, 4.9, 4.7, 
					4.8, 5.2, 5.2, 5.4, 6, 6.4, 6.8, 6.1, 5.7, 5.5, 4.6, 4.6, 4.2, 
					4.4, 3.2, 2, 1.5, 1.4, 1, 1.1, 2.1, 2.8, 3.3, 3.3, 3.3, 3.3, 
					3.1, 3.1, 3.2, 3, 2, 2.2, 2.1, 1.9, 2, 2.5, 3.3, 3.5, 4.1, 4.6, 
					5.1, 6.3, 7.8, 8.3, 8.6, 9.7, 9.8, 9.7, 10, 9.4, 8.9, 8.9, 9, 
					4.1, 4.7, 5.3, 5.5, 6, 6.3, 6.8, 6.3, 6.4, 6.9, 7, 7.1, 7.5, 
					7.8, 8.2, 8.5, 8, 8.1, 7.7, 8, 8, 8, 7.8, 7.8, 8, 8.2, 8.3, 8, 
					8.3, 8.4, 8.4, 8.2, 8.1, 8.2, 8.4, 8.4, 8.5, 8.9, 9.2, 9.2, 9.2, 
					9.2, 9.2, 9.2, 9.1, 9.3, 9.4, 9.1, 9.1, 9.1, 9, 8.8, 8.6, 8.4, 
					8.3, 8, 7.5, 7.8, 7.4, 7.6, 8.3, 8.9, 9.8, 10.4, 11, 11.3, 11, 
					9.7, 7.8, 7.3, 7.4, 7.3, 7.6, 7.7, 7.7, 6.9, 7.1, 7.5, 7.1, 7.2, 
					8.2, 7.6, 7.6, 7.9, 9.4, 11.4, 13.4, 14.3, 15, 15.1, 13.4, 11.6, 
					10.4, 10.1, 10.4, 10.1, 9.8, 10.4, 11.3, 11.6, 12.5, 11.9, 11, 
					10.1, 9.4, 8.7, 8.8, 8.7, 10.1, 12.1, 13.6, 14.7, 11.9, 11.4, 
					9.8)
			set.seed(0815)			
			NightFlux.V.n <- do.call(c, lapply( c(238,320,296), function(E0){ fLloydTaylor(10, E0, TempVar.V.n+273.15)+rnorm(length(TempVar.V.n ))}))
			#plot(NightFlux.V.n ~ 	rep(TempVar.V.n,3) )		
			DayCounter.V.i <- rep(1:300, each=5) [ 1:length(NightFlux.V.n)]
			#trace(fRegrE0fromShortTerm,recover)		#untrace(fRegrE0fromShortTerm)
			E0 <- fRegrE0fromShortTerm( NightFlux.V.n, rep(TempVar.V.n,3), DayCounter.V.i, T_ref.n=273.15+15 )
			expect_equal( E0, 300, tolerance=15, scale=1 )
			#
			#EddyHour.C$sMRFluxPartition( Lat_deg.n=51, Long_deg.n=7, TimeZone_h.n=1 )   
		})
		
		
		
test_that("sMRFluxPartition Standard",{
			EddyHour.C$sSetLocationInfo(Lat_deg.n=51, Long_deg.n=7, TimeZone_h.n=1)
            EddyHour.C$sMRFluxPartition()   
            expect_that( EddyHour.C$sTEMP$E_0[1], equals(133.7, tolerance = .1))
        })


test_that("Using fixed E0",{
            E0 <- 120
            #EddyHour.C$trace("sMRFluxPartition", recover )            # EddyHour.C$untrace("sMRFluxPartition")
			EddyHour.C$sTEMP$E_0 <- NULL
			EddyHour.C$sSetLocationInfo(Lat_deg.n=51.0, Long_deg.n=13.6, TimeZone_h.n=1)
			# warning on duplicted columns with former test
			suppressWarnings( EddyHour.C$sMRFluxPartition( Lat_deg.n=51, Long_deg.n=7, TimeZone_h.n=1, debug.l=list(fixedE0=E0) ))   # calling sRegrE0fromShortTerm
            expect_equal( EddyHour.C$sTEMP$E_0[1], E0, tolerance=1e-6)
            #colnames(EddyHour.C$sTEMP)
        })

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Try the REddyProc package in your browser

Any scripts or data that you put into this service are public.

REddyProc documentation built on May 2, 2019, 5:19 p.m.