Nothing
context("Simplification of artifact data (from NASIS)")
## some complex data from NASIS phhuart table
d.artifact.hz <- structure(list(phiid = c(10101, 10101, 10102),
huartvol = c(10, 5, 95),
huartsize_l = c(2, 76, 2),
huartsize_r = c(39, 163, 39),
huartsize_h = c(75, 250, 75),
huartkind = c("boiler slag", "boiler slag", "boiler slag"),
huartco = c("cohesive", "cohesive", "noncohesive"),
huartshp = c("irregular", "irregular", "flat"),
huartrnd = c("subrounded", "subrounded", "angular"),
huartpen = c("nonpenetrable", "nonpenetrable", "penetrable"),
huartsafety = c("innocuous artifacts","innocuous artifacts", "innocuous artifacts"),
huartper = c("persistent", "persistent", "persistent"),
recwlupdated = structure(c(NA_real_, NA_real_, NA_real_), class = c("POSIXct", "POSIXt"), tzone = ""),
recuseriidref = c(NA_integer_, NA_integer_, NA_integer_),
phhuartiid = c(NA_integer_, NA_integer_, NA_integer_)),
row.names = c(NA, 3L), class = "data.frame")
## new tests for rockFragmentSieve: missing frag sizes / unspecified class
test_that("artifactSieve puts artifacts without huartsize into 'unspecified' class", {
d <- data.frame(huartvol=25, huartsize_l=NA, huartsize_r=NA, huartsize_h=NA,
huartshp=NA, huartco=NA, huartshp=NA, huartrnd=NA, huartpen=NA,
huartsafety=NA, huartper=NA)
res <- soilDB:::.artifactSieve(d)
expect_equal(res$class, 'art_unspecified')
})
test_that("artifactSieve assumptions are applied, results correct", {
d <- data.frame(huartvol=25, huartsize_l=NA, huartsize_r=50, huartsize_h=NA,
huartshp=NA, huartco=NA, huartshp=NA, huartrnd=NA, huartpen=NA,
huartsafety=NA, huartper=NA)
res <- soilDB:::.artifactSieve(d)
# assumptions in the absence of fragment shape / hardness
expect_equal(res$huartshp, 'irregular')
expect_equal(res$huartco, 'cohesive')
})
test_that("artifactSieve assumptions are applied when all NA", {
d <- data.frame(huartvol=NA, huartsize_l=NA, huartsize_r=NA, huartsize_h=NA,
huartshp=NA, huartco=NA, huartshp=NA, huartrnd=NA, huartpen=NA,
huartsafety=NA, huartper=NA)
res <- soilDB:::.artifactSieve(d)
# assumptions in the absence of fragment shape / hardness
expect_equal(res$huartshp, 'irregular')
expect_equal(res$huartco, 'cohesive')
# class should be NA
expect_true(is.na(res$class))
})
test_that("artifactSieve safe fall-back from high to rv fragsize", {
# full specification
d <- data.frame(huartvol=10, huartsize_l=15, huartsize_r=50, huartsize_h=75,
huartshp="irregular", huartco="cohesive", huartshp=NA, huartrnd=NA, huartpen=NA,
huartsafety=NA, huartper=NA)
res <- soilDB:::.artifactSieve(d)
# assumptions in the absence of fragment shape / hardness
expect_equal(res$huartshp, 'irregular')
expect_equal(res$huartco, 'cohesive')
# correct class in the absence of fragment shape / hardness
expect_equal(res$class, 'art_gr')
# only RV available
d <- data.frame(huartvol=10, huartsize_l=NA, huartsize_r=50, huartsize_h=NA,
huartshp="irregular", huartco="cohesive", huartshp=NA, huartrnd=NA, huartpen=NA,
huartsafety=NA, huartper=NA)
res <- soilDB:::.artifactSieve(d)
# assumptions in the absence of fragment shape / hardness
expect_equal(res$huartshp, 'irregular')
expect_equal(res$huartco, 'cohesive')
# correct class in the absence of fragment shape / hardness
expect_equal(res$class, 'art_gr')
})
test_that("artifactSieve complex sample data from NASIS, single horizon", {
# pretty common, many fragments specified for a single horizon
res <- soilDB:::.artifactSieve(d.artifact.hz)
# correct classes
expect_equal(res$class, c('art_gr', 'art_cb', 'art_ch'))
})
test_that("simplifyArtifactData complex sample data from NASIS, single horizon", {
# pretty common, many fragments specified for a single horizon
res <- soilDB::simplifyArtifactData(d.artifact.hz, id.var = 'phiid', nullFragsAreZero = TRUE)
# correct class totals
expect_equal(res$art_fgr, c(0,0))
expect_equal(res$art_gr, c(10,0))
expect_equal(res$art_cb, c(5,0))
expect_equal(res$art_ch, c(0,95))
expect_equal(res$art_fl, c(0,0))
expect_equal(res$art_st, c(0,0))
# correct total
expect_equal(res$total_art_pct, c(15,95))
# correct subtotal cohesive
expect_equal(res$huartvol_cohesive, c(15, 0))
# correct subtotal penetrable
expect_equal(res$huartvol_penetrable, c(0,95))
# correct subtotal noxious
expect_equal(res$huartvol_noxious, c(0,0))
# correct subtotal persistent
expect_equal(res$huartvol_persistent, c(15,95))
})
test_that("simplifyArtifactData when missing fragment sizes, low/rv/high", {
# all fragments are coallated into the unspecified column
# totals should be correct
# some horizons have no fragment records, should generate a warning
d.missing.size <- d.artifact.hz
d.missing.size[,c("huartsize_l", "huartsize_r", "huartsize_h")] <- NA
d.missing.size[4,] <- d.missing.size[3,]
d.missing.size[4,] <- NA
d.missing.size[4,'phiid'] <- "10102"
expect_message(res <- simplifyArtifactData(d.missing.size, id.var = 'phiid', nullFragsAreZero = TRUE))
# rows missing fragvol should be removed from the simplified result
expect_true(nrow(d.missing.size) == 4)
expect_true(nrow(res) == 2)
# unspecified total should match RF sums
expect_equal(res$art_unspecified, res$total_art_pct)
# totals lesss than or equal to 100
expect_equal(all(res$total_art_pct <= 100), TRUE)
expect_equal(all(res$huartvol_cohesive <= 100), TRUE)
expect_equal(all(res$huartvol_penetrable <= 100), TRUE)
expect_equal(all(res$huartvol_noxious <= 100), TRUE)
expect_equal(all(res$huartvol_persistent <= 100), TRUE)
})
test_that("simplifyArtifactData warning generated when NA in huartvol", {
d.missing.artvol <- d.artifact.hz
d.missing.artvol$huartvol <- NA
d.missing.artvol[1,'huartvol'] <- 10
expect_message(simplifyArtifactData(d.missing.artvol, id.var = 'phiid', nullFragsAreZero = TRUE),
regexp = 'some records are missing artifact volume')
})
test_that("simplifyArtifactData warning generated when all fragvol are NA", {
d.all.NA.artvol <- d.artifact.hz
d.all.NA.artvol$huartvol <- NA
expect_message(simplifyArtifactData(d.all.NA.artvol, id.var = 'phiid', nullFragsAreZero = TRUE),
regexp = 'all records are missing artifact volume')
})
test_that("simplifyArtifactData nullFragsAreZero works as expected", {
d.missing.artvol <- d.artifact.hz
a <- simplifyArtifactData(d.missing.artvol, id.var = 'phiid', nullFragsAreZero = FALSE)
b <- simplifyArtifactData(d.missing.artvol, id.var = 'phiid', nullFragsAreZero = TRUE)
expect_equal(as.logical(is.na(a)),
c(FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, TRUE,
TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE
))
expect_true(!all(as.logical(is.na(b))))
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.