tests/testthat/test-nematode.R

# make data.table with testspecies
testspecies = c("Ditylenchus spp."             ,"Ditylenchus dipsaci"          ,"Ditylenchus destructor"       ,"Xiphinema spp."           ,   
                "Longidorus spp."              ,"(Para)Trichodoridae spp."     ,"Trichodorus similis"          ,"Trichodorus primitivus"   ,   
                "Trichodorus viruliferus"      ,"Trichodorus sparsus"          ,"Trichodorus cylindricus"      ,"Trichodorus hooperi"      ,   
                "Paratrichodorus teres"        ,"Paratrichodorus pachydermus"  ,"Paratrichodorus anemones"     ,"Paratrichodorus nanus"    ,   
                "Aphelenchoides spp."          ,"Aphelenchoides fragariae"     ,"Aphelenchoides ritzemabosi"   ,"Aphelenchoides subtenuis" ,   
                "Criconematidae spp."          ,"Subanguina spp."              ,"Rotylenchus spp."             ,"Paratylenchus spp."       ,   
                "Paratylenchus bukowinensis"   ,"Meloidogyne spp."             ,"Meloidogyne chitwoodi/fallax" ,"Meloidogyne chitwoodi"    ,   
                "Meloidogyne fallax"           ,"Meloidogyne minor"            ,"Meloidogyne incognita"        ,"Meloidogyne javanica"     ,   
                "Meloidogyne artiellia"        ,"Meloidogyne arenaria"         ,"Meloidogyne ardenensis"       ,"Meloidogyne naasi"        ,   
                "Meloidogyne hapla"            ,"Cysteaaltjes"                 ,"Hemicycliophora spp."         ,"Pratylenchus spp."        ,   
                "Pratylenchus penetrans"       ,"Pratylenchus crenatus"        ,"Tylenchorhynchus spp."        ,"Helicotylenchus spp."     ,   
                "Pratylenchus neglectus"       ,"Pratylenchus pratensis"       ,"Pratylenchus thornei"         ,"Pratylenchus flakkensis"  ,   
                "Pratylenchus fallax"          ,"Pratylenchus pinguicaudatus"  ,"Pratylenchus pseudopratensis" ,"Pratylenchus vulnus"      ,   
                "Pratylenchus dunensis"        ,"Pratylenchus zeae")

# Make data tables to test ind_nematodes_list
nem.dt1 <- data.table(species = testspecies, count = rep(0,54))
nem.dt2 <- data.table(species = testspecies, count = rep(10000,54))

# test function for ind_nematodes_list
test_that("ind_nematodes_list works", {
  expect_equal(
    ind_nematodes_list(A_NEMA = nem.dt1),
    expected = 1,
    tolecance = 0.01
  )
  expect_equal(
    ind_nematodes_list(A_NEMA = nem.dt2),
    expected = 0,
    tolerance = 0.0001
  )
})

# test that ind_nematodes_list works with missing values
nem.dt1 <- nem.dt1[5:10, count:= NA]
nem.dt2 <- nem.dt2[5:10, count:= NA]
test_that("ind_nematodes_list works when some values are missing", {
  expect_equal(
    ind_nematodes_list(A_NEMA = nem.dt1),
    expected = 1,
    tolecance = 0.01
  )
  expect_equal(
    ind_nematodes_list(A_NEMA = nem.dt2),
    expected = 0,
    tolerance = 0.0001
  )
})

# test that ind_nematodes_list works with missing nematodes
nem.dt1 <- nem.dt1[5:15]
nem.dt2 <- nem.dt2[5:15]
test_that("ind_nematodes_list works when some species missing", {
  expect_equal(
    ind_nematodes_list(A_NEMA = nem.dt1),
    expected = 1,
    tolecance = 0.01
  )
  expect_equal(
    ind_nematodes_list(A_NEMA = nem.dt2),
    expected = 0,
    tolerance = 0.0001
  )
})

# number of fields
nfields = 15

# set random number for testing
set.seed(123)
nmet = pmax(0,rnorm(nfields,100,50))
A_RLN_PR_TOT=nmet; A_RLN_PR_CREN=nmet; A_RLN_PR_NEG=nmet; A_RLN_PR_PEN=nmet; A_RLN_PR_PRA=nmet; A_RLN_PR_THO=nmet; A_RLN_PR_FLA=nmet;    
A_RLN_PR_FAL=nmet; A_RLN_PR_PIN=nmet; A_RLN_PR_PSE=nmet; A_RLN_PR_VUL=nmet; A_RLN_PR_DUN=nmet; A_RLN_PR_ZEA=nmet; 

set.seed(123)
nmet = pmax(0,rnorm(nfields,50,15))
A_RKN_ME_TOT=nmet; A_RKN_ME_HAP=nmet; A_RKN_ME_CHIFAL=nmet; A_RKN_ME_CHI=nmet; A_RKN_ME_NAA=nmet; A_RKN_ME_FAL=nmet; A_RKN_ME_MIN=nmet; A_RKN_ME_INC=nmet;    
A_RKN_ME_JAV=nmet; A_RKN_ME_ART=nmet; A_RKN_ME_ARE=nmet; A_RKN_ME_ARD=nmet

set.seed(123)
nmet = pmax(0,rnorm(nfields,5,1))
A_DSN_TR_TOT=nmet; A_DSN_TR_SIM=nmet; A_DSN_TR_PRI=nmet;    
A_DSN_TR_VIR=nmet; A_DSN_TR_SPA=nmet; A_DSN_TR_CYL=nmet; A_DSN_TR_HOO=nmet; A_DSN_PA_TER=nmet; A_DSN_PA_PAC=nmet; A_DSN_PA_ANE=nmet;    
A_DSN_PA_NAN=nmet; A_DSN_TY_TOT=nmet; A_DSN_RO_TOT=nmet; A_DSN_XI_TOT=nmet; A_DSN_LO_TOT=nmet; A_DSN_HEM_TOT=nmet; A_DSN_HEL_TOT=nmet;   
A_SN_DI_TOT=nmet; A_SN_DI_DIP=nmet; A_SN_DI_DES=nmet; A_OPN_PA_TOT=nmet; A_OPN_PA_BUK=nmet; A_OPN_CY_TOT=nmet; A_OPN_AP_TOT=nmet;    
A_OPN_AP_FRA=nmet; A_OPN_AP_RIT=nmet; A_OPN_AP_SUB=nmet; A_OPN_CR_TOT=nmet; A_OPN_SU_TOT = nmet;A_NPN_SA_TOT = nmet

set.seed(123)
B_LU_BRP = sample(c(2014, 265,1079, 265, 308),nfields,replace = T)

test_that("ind_nematodes works with complete input", {
  expect_equal(
    ind_nematodes(B_LU_BRP = B_LU_BRP,
                  A_RLN_PR_TOT = A_RLN_PR_TOT,A_RLN_PR_CREN = A_RLN_PR_CREN,A_RLN_PR_NEG = A_RLN_PR_NEG,
                  A_RLN_PR_PEN = A_RLN_PR_PEN,A_RLN_PR_PRA = A_RLN_PR_PRA,A_RLN_PR_THO = A_RLN_PR_THO,
                  A_RLN_PR_FLA = A_RLN_PR_FLA,A_RLN_PR_FAL = A_RLN_PR_FAL,A_RLN_PR_PIN = A_RLN_PR_PIN,
                  A_RLN_PR_PSE = A_RLN_PR_PSE,A_RLN_PR_VUL = A_RLN_PR_VUL,A_RLN_PR_DUN = A_RLN_PR_DUN,
                  A_RLN_PR_ZEA = A_RLN_PR_ZEA,A_RKN_ME_TOT = A_RKN_ME_TOT,A_RKN_ME_HAP = A_RKN_ME_HAP,
                  A_RKN_ME_CHIFAL = A_RKN_ME_CHIFAL,
                  A_RKN_ME_CHI = A_RKN_ME_CHI,A_RKN_ME_NAA = A_RKN_ME_NAA,A_RKN_ME_FAL = A_RKN_ME_FAL,
                  A_RKN_ME_MIN = A_RKN_ME_MIN,A_RKN_ME_INC = A_RKN_ME_INC,A_RKN_ME_JAV = A_RKN_ME_JAV,
                  A_RKN_ME_ART = A_RKN_ME_ART,A_RKN_ME_ARE = A_RKN_ME_ARE,A_RKN_ME_ARD = A_RKN_ME_ARD,
                  A_DSN_TR_TOT = A_DSN_TR_TOT,A_DSN_TR_SIM = A_DSN_TR_SIM,A_DSN_TR_PRI = A_DSN_TR_PRI,
                  A_DSN_TR_VIR = A_DSN_TR_VIR,A_DSN_TR_SPA = A_DSN_TR_SPA,A_DSN_TR_CYL = A_DSN_TR_CYL,
                  A_DSN_TR_HOO = A_DSN_TR_HOO,A_DSN_PA_TER = A_DSN_PA_TER,A_DSN_PA_PAC = A_DSN_PA_PAC,
                  A_DSN_PA_ANE = A_DSN_PA_ANE,A_DSN_PA_NAN = A_DSN_PA_NAN,A_DSN_TY_TOT = A_DSN_TY_TOT,
                  A_DSN_RO_TOT = A_DSN_RO_TOT,A_DSN_XI_TOT = A_DSN_XI_TOT,A_DSN_LO_TOT = A_DSN_LO_TOT,
                  A_DSN_HEM_TOT = A_DSN_HEM_TOT,A_DSN_HEL_TOT = A_DSN_HEL_TOT,
                  A_SN_DI_TOT = A_SN_DI_TOT,A_SN_DI_DIP = A_SN_DI_DIP, A_SN_DI_DES = A_SN_DI_DES,
                  A_OPN_PA_TOT = A_OPN_PA_TOT,A_OPN_PA_BUK = A_OPN_PA_BUK,A_OPN_CY_TOT = A_OPN_CY_TOT,
                  A_OPN_AP_TOT = A_OPN_AP_TOT,A_OPN_AP_FRA = A_OPN_AP_FRA,A_OPN_AP_RIT = A_OPN_AP_RIT,
                  A_OPN_AP_SUB = A_OPN_AP_SUB,A_OPN_CR_TOT = A_OPN_CR_TOT,A_OPN_SU_TOT = A_OPN_SU_TOT,
                  A_NPN_SA_TOT = A_NPN_SA_TOT
    ),
    expected = c(0.261, 0.224, 0.023, 0.193, 0.188, 0.017, 0.126, 0.356, 0.277, 0.247, 0.040, 0.144, 0.136, 0.189, 0.260),
    tolecance = 0.01
  )
})

# add some NA values
set.seed(123)
selrow = sample(1:nfields,2)

A_DSN_TR_CYL[selrow] <- NA
A_RLN_PR_FAL[selrow] <- NA
A_RKN_ME_JAV[selrow] <- NA
A_OPN_SU_TOT[selrow] <- NA

test_that("ind_nematodes works with complete input but with missing values", {
  expect_equal(
    ind_nematodes(B_LU_BRP = B_LU_BRP,
                  A_RLN_PR_TOT = A_RLN_PR_TOT,A_RLN_PR_CREN = A_RLN_PR_CREN,A_RLN_PR_NEG = A_RLN_PR_NEG,
                  A_RLN_PR_PEN = A_RLN_PR_PEN,A_RLN_PR_PRA = A_RLN_PR_PRA,A_RLN_PR_THO = A_RLN_PR_THO,
                  A_RLN_PR_FLA = A_RLN_PR_FLA,A_RLN_PR_FAL = A_RLN_PR_FAL,A_RLN_PR_PIN = A_RLN_PR_PIN,
                  A_RLN_PR_PSE = A_RLN_PR_PSE,A_RLN_PR_VUL = A_RLN_PR_VUL,A_RLN_PR_DUN = A_RLN_PR_DUN,
                  A_RLN_PR_ZEA = A_RLN_PR_ZEA,A_RKN_ME_TOT = A_RKN_ME_TOT,A_RKN_ME_HAP = A_RKN_ME_HAP,
                  A_RKN_ME_CHIFAL = A_RKN_ME_CHIFAL,
                  A_RKN_ME_CHI = A_RKN_ME_CHI,A_RKN_ME_NAA = A_RKN_ME_NAA,A_RKN_ME_FAL = A_RKN_ME_FAL,
                  A_RKN_ME_MIN = A_RKN_ME_MIN,A_RKN_ME_INC = A_RKN_ME_INC,A_RKN_ME_JAV = A_RKN_ME_JAV,
                  A_RKN_ME_ART = A_RKN_ME_ART,A_RKN_ME_ARE = A_RKN_ME_ARE,A_RKN_ME_ARD = A_RKN_ME_ARD,
                  A_DSN_TR_TOT = A_DSN_TR_TOT,A_DSN_TR_SIM = A_DSN_TR_SIM,A_DSN_TR_PRI = A_DSN_TR_PRI,
                  A_DSN_TR_VIR = A_DSN_TR_VIR,A_DSN_TR_SPA = A_DSN_TR_SPA,A_DSN_TR_CYL = A_DSN_TR_CYL,
                  A_DSN_TR_HOO = A_DSN_TR_HOO,A_DSN_PA_TER = A_DSN_PA_TER,A_DSN_PA_PAC = A_DSN_PA_PAC,
                  A_DSN_PA_ANE = A_DSN_PA_ANE,A_DSN_PA_NAN = A_DSN_PA_NAN,A_DSN_TY_TOT = A_DSN_TY_TOT,
                  A_DSN_RO_TOT = A_DSN_RO_TOT,A_DSN_XI_TOT = A_DSN_XI_TOT,A_DSN_LO_TOT = A_DSN_LO_TOT,
                  A_DSN_HEM_TOT = A_DSN_HEM_TOT,A_DSN_HEL_TOT = A_DSN_HEL_TOT,
                  A_SN_DI_TOT = A_SN_DI_TOT,A_SN_DI_DIP = A_SN_DI_DIP, A_SN_DI_DES = A_SN_DI_DES,
                  A_OPN_PA_TOT = A_OPN_PA_TOT,A_OPN_PA_BUK = A_OPN_PA_BUK,A_OPN_CY_TOT = A_OPN_CY_TOT,
                  A_OPN_AP_TOT = A_OPN_AP_TOT,A_OPN_AP_FRA = A_OPN_AP_FRA,A_OPN_AP_RIT = A_OPN_AP_RIT,
                  A_OPN_AP_SUB = A_OPN_AP_SUB,A_OPN_CR_TOT = A_OPN_CR_TOT,A_OPN_SU_TOT = A_OPN_SU_TOT,
                  A_NPN_SA_TOT = A_NPN_SA_TOT
    ),
    expected = c(0.261, 0.224, 0.023, 0.193, 0.188, 0.017, 0.126, 0.356, 0.277, 0.247, 0.040, 0.144, 0.136, 0.189, 0.260),
    tolecance = 0.01
  )
})


# remove some measurement from input
test_that("ind_nematodes works with incomplete input", {
  expect_equal(
    ind_nematodes(B_LU_BRP = B_LU_BRP,
                  A_RLN_PR_TOT = A_RLN_PR_TOT,A_RLN_PR_CREN = A_RLN_PR_CREN,A_RLN_PR_NEG = A_RLN_PR_NEG,
                  A_RLN_PR_PEN = A_RLN_PR_PEN,A_RLN_PR_PRA = A_RLN_PR_PRA,A_RLN_PR_THO = A_RLN_PR_THO,
                  A_RLN_PR_FLA = NULL,A_RLN_PR_FAL = NULL,A_RLN_PR_PIN = A_RLN_PR_PIN,
                  A_RLN_PR_PSE = A_RLN_PR_PSE,A_RLN_PR_VUL = A_RLN_PR_VUL,A_RLN_PR_DUN = NULL,
                  A_RLN_PR_ZEA = A_RLN_PR_ZEA,A_RKN_ME_TOT = A_RKN_ME_TOT,A_RKN_ME_HAP = A_RKN_ME_HAP,
                  A_RKN_ME_CHIFAL = A_RKN_ME_CHIFAL,
                  A_RKN_ME_CHI = A_RKN_ME_CHI,A_RKN_ME_NAA = A_RKN_ME_NAA,A_RKN_ME_FAL = A_RKN_ME_FAL,
                  A_RKN_ME_MIN = A_RKN_ME_MIN,A_RKN_ME_INC = A_RKN_ME_INC,A_RKN_ME_JAV = A_RKN_ME_JAV,
                  A_RKN_ME_ART = NULL,A_RKN_ME_ARE = A_RKN_ME_ARE,A_RKN_ME_ARD = A_RKN_ME_ARD,
                  A_DSN_TR_TOT = A_DSN_TR_TOT,A_DSN_TR_SIM = NULL,A_DSN_TR_PRI = A_DSN_TR_PRI,
                  A_DSN_TR_VIR = A_DSN_TR_VIR,A_DSN_TR_SPA = A_DSN_TR_SPA,A_DSN_TR_CYL = A_DSN_TR_CYL,
                  A_DSN_TR_HOO = A_DSN_TR_HOO,A_DSN_PA_TER = A_DSN_PA_TER,A_DSN_PA_PAC = A_DSN_PA_PAC,
                  A_DSN_PA_ANE = NULL,A_DSN_PA_NAN = A_DSN_PA_NAN,A_DSN_TY_TOT = A_DSN_TY_TOT,
                  A_DSN_RO_TOT = A_DSN_RO_TOT,A_DSN_XI_TOT = A_DSN_XI_TOT,A_DSN_LO_TOT = A_DSN_LO_TOT,
                  A_DSN_HEM_TOT = A_DSN_HEM_TOT,A_DSN_HEL_TOT = A_DSN_HEL_TOT,
                  A_SN_DI_TOT = A_SN_DI_TOT,A_SN_DI_DIP = A_SN_DI_DIP, A_SN_DI_DES = A_SN_DI_DES,
                  A_OPN_PA_TOT = A_OPN_PA_TOT,A_OPN_PA_BUK = A_OPN_PA_BUK,A_OPN_CY_TOT = A_OPN_CY_TOT,
                  A_OPN_AP_TOT = NULL,A_OPN_AP_FRA = A_OPN_AP_FRA,A_OPN_AP_RIT = NULL,
                  A_OPN_AP_SUB = A_OPN_AP_SUB,A_OPN_CR_TOT = A_OPN_CR_TOT,A_OPN_SU_TOT = A_OPN_SU_TOT,
                  A_NPN_SA_TOT = A_NPN_SA_TOT
    ),
    expected = c(0.261, 0.224, 0.023, 0.193, 0.188, 0.017, 0.126, 0.356, 0.277, 0.247, 0.040, 0.144, 0.136, 0.189, 0.260),
    tolecance = 0.01
  )
})

Try the OBIC package in your browser

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

OBIC documentation built on Sept. 12, 2024, 7:02 a.m.