From b9e6bd681a1433872141082385ee17a5b0025b3f Mon Sep 17 00:00:00 2001 From: Dylan Beaudette Date: Wed, 21 Oct 2020 10:31:20 -0700 Subject: [PATCH] typos, cleanup, fresh HTML documentation --- R/data-documentation.R | 2 +- R/duplicate.R | 4 +- R/glomApply.R | 2 +- R/hzBoundary.R | 2 +- R/permute_profile.R | 2 +- docs/news/index.html | 4 +- docs/pkgdown.yml | 2 +- .../argillic.clay.increase.depth.html | 2 +- .../reference/barron.torrent.redness.LAB.html | 3 + docs/reference/buntley.westin.index.html | 5 +- docs/reference/duplicate.html | 10 +- docs/reference/estimateSoilDepth-1.png | Bin 17438 -> 15407 bytes docs/reference/estimateSoilDepth-2.png | Bin 0 -> 17438 bytes docs/reference/estimateSoilDepth.html | 40 ++- docs/reference/get.ml.hz.html | 2 +- docs/reference/glomApply.html | 4 +- docs/reference/harden.melanization.html | 3 + docs/reference/harden.rubification.html | 3 + ...armonize-SoilProfileCollection-method.html | 2 +- docs/reference/horizonColorIndices.html | 7 +- docs/reference/hurst.redness.html | 3 + .../reference/hzDistinctnessCodeToOffset.html | 2 +- docs/reference/index.html | 8 +- docs/reference/jacobs2000.html | 2 +- docs/reference/munsell.spectra.html | 4 +- docs/reference/munsell2rgb.html | 6 +- docs/reference/permute_profile.html | 4 +- docs/reference/random_profile.html | 2 +- docs/reference/soil_minerals.html | 2 +- docs/reference/splitLogicErrors.html | 298 ++++++++++++++++++ docs/reference/thompson.bell.darkness.html | 5 +- docs/reference/us.state.soils.html | 4 +- man/argillic.clay.increase.depth.Rd | 2 +- man/duplicate.Rd | 4 +- man/glomApply.Rd | 2 +- man/hzDistinctnessCodeToOffset.Rd | 2 +- man/permute_profile.Rd | 2 +- man/us.state.soils.Rd | 2 +- misc/aqp-spellcheck-allowed.csv | 3 + 39 files changed, 410 insertions(+), 46 deletions(-) create mode 100644 docs/reference/estimateSoilDepth-2.png create mode 100644 docs/reference/splitLogicErrors.html diff --git a/R/data-documentation.R b/R/data-documentation.R index 490d2d2a0..0b97a3a9d 100644 --- a/R/data-documentation.R +++ b/R/data-documentation.R @@ -101,7 +101,7 @@ #' #' @title US State Soils -#' @description A listing of the 52 US state soils, including Puerto Rico and Virgin Islands. +#' @description A listing of the 50 US state soils, along with Puerto Rico and Virgin Islands. #' @keywords datasets #' @usage data(us.state.soils) #' @format diff --git a/R/duplicate.R b/R/duplicate.R index 59b284840..90b10eed8 100644 --- a/R/duplicate.R +++ b/R/duplicate.R @@ -1,7 +1,7 @@ -#' @title Duplicte Profiles of a SoilProfileColection -#' @description A simple function to duplicate the contents of a \code{SoilProfileColection} object. Old profile IDs are saved as a site-level attribute (\code{oldID}) and new IDs are generated using a numeric serial number. +#' @title Duplicte Profiles of a SoilProfileCollection +#' @description A simple function to duplicate the contents of a \code{SoilProfileCollection} object. Old profile IDs are saved as a site-level attribute (\code{oldID}) and new IDs are generated using a numeric serial number. #' #' @author D.E. Beaudette #' diff --git a/R/glomApply.R b/R/glomApply.R index 2d45e910a..bba44097c 100644 --- a/R/glomApply.R +++ b/R/glomApply.R @@ -6,7 +6,7 @@ #' #' \code{glomApply} works by accepting a function \code{.fun} as argument. This function is used on each profile to process a multi-profile SPC for input to \code{glom} (via \code{profileApply}). For each profile, \code{.fun} returns a 2-length numeric vector of top and bottom boundaries \code{glom} arguments: \code{z1}, \code{z2}. #' -#' \code{glomApply} essentially provides the option to programattically generate profile-specfic glom depths for a large SPC and handles iteration and rebuilding of a subset SPC object. Optional argument sinclude: \code{truncate} to cut the boundaries to specified \code{[z1, z2]}; \code{invert} to the portion outside \code{[z1, z2]}, \code{modality} to either \code{"all"} horizons or \code{"thickest"} horizon in the \code{glom} interval. \code{...} are various expressions you can run on the individual profiles using NSE, similar to \code{mutate}. +#' \code{glomApply} essentially provides the option to programattically generate profile-specfic glom depths for a large SPC and handles iteration and rebuilding of a subset SPC object. Optional arguments include: \code{truncate} to cut the boundaries to specified \code{[z1, z2]}; \code{invert} to the portion outside \code{[z1, z2]}, \code{modality} to either \code{"all"} horizons or \code{"thickest"} horizon in the \code{glom} interval. \code{...} are various expressions you can run on the individual profiles using NSE, similar to \code{mutate}. #' #' @param object A SoilProfileCollection #' diff --git a/R/hzBoundary.R b/R/hzBoundary.R index f775c3912..a7ea47e0f 100644 --- a/R/hzBoundary.R +++ b/R/hzBoundary.R @@ -14,7 +14,7 @@ #' #' @return vector of offsets with same length as \code{x} #' -#' @details The default offests are based on the high-end of ranges presented in "transitional zone thickness criteria" from the Field Book version 3.0 (page 2-6). Offsets are returned as 1/2 of the transitional zone thickness so that horizon boundaries can be adjusted up/down from horizon depths. See \code{\link{plotSPC}}, specifically the \code{hz.distinctness.offset} argument for vizualization ideas. Missing data in \code{x} (NA) or codes that are not defined in \code{codes} are returned as 0 offsets. +#' @details The default offests are based on the high-end of ranges presented in "transitional zone thickness criteria" from the Field Book version 3.0 (page 2-6). Offsets are returned as 1/2 of the transitional zone thickness so that horizon boundaries can be adjusted up/down from horizon depths. See \code{\link{plotSPC}}, specifically the \code{hz.distinctness.offset} argument for visualization ideas. Missing data in \code{x} (NA) or codes that are not defined in \code{codes} are returned as 0 offsets. #' #' @seealso \code{\link{plotSPC}} #' diff --git a/R/permute_profile.R b/R/permute_profile.R index e479ac1e3..2f77986a2 100644 --- a/R/permute_profile.R +++ b/R/permute_profile.R @@ -13,7 +13,7 @@ #' #' So, a standard deviation of 1-2cm would yield a "boundary thickness" in the 3-5cm range ("clear" distinctness class). #' -#' Of course, boundaries are not symmetrical and this is at best an approximation for properties like organic matter, nutrients or salts that can have strong depth-dependence within horizons. Also, boundary topography is non-uniform. There are definitely ways to implement other distributions, but invokes more detailed assumptions about field data that are generally only semi-quantiative or are not available. +#' Of course, boundaries are not symmetrical and this is at best an approximation for properties like organic matter, nutrients or salts that can have strong depth-dependence within horizons. Also, boundary topography is non-uniform. There are definitely ways to implement other distributions, but invokes more detailed assumptions about field data that are generally only semi-quantitative or are not available. #' #' Future implementations may use boundary topography as a second hierarchical level (e.g. trig-based random functions), but think that distinctness captures the "uncertainty" about horizon separation at a specific "point" on the ground (or line in the profile quite well, and the extra variation may be hard to interpret, in general. #' diff --git a/docs/news/index.html b/docs/news/index.html index 96cf62c5a..c38e285b8 100644 --- a/docs/news/index.html +++ b/docs/news/index.html @@ -114,9 +114,9 @@

Changelog

Source: NEWS.md -
+

-aqp 1.25 (2020-10-13) Unreleased +aqp 1.25 (2020-10-15) 2020-10-19

  • new lookup table pms.munsell.lut for converting Pantone spot color codes to (closest) Munsell chip
  • diff --git a/docs/pkgdown.yml b/docs/pkgdown.yml index 8709f8752..f61ef3efa 100644 --- a/docs/pkgdown.yml +++ b/docs/pkgdown.yml @@ -2,5 +2,5 @@ pandoc: 2.7.2 pkgdown: 1.6.1 pkgdown_sha: ~ articles: {} -last_built: 2020-10-13T20:51Z +last_built: 2020-10-21T17:28Z diff --git a/docs/reference/argillic.clay.increase.depth.html b/docs/reference/argillic.clay.increase.depth.html index 2b8acbfd5..6b2b6b39e 100644 --- a/docs/reference/argillic.clay.increase.depth.html +++ b/docs/reference/argillic.clay.increase.depth.html @@ -129,7 +129,7 @@

    Arg p -

    A single-profile SoilProfileCllection object.

    +

    A single-profile SoilProfileCollection object.

    clay.attr diff --git a/docs/reference/barron.torrent.redness.LAB.html b/docs/reference/barron.torrent.redness.LAB.html index 3ffe41aba..c87c0182c 100644 --- a/docs/reference/barron.torrent.redness.LAB.html +++ b/docs/reference/barron.torrent.redness.LAB.html @@ -142,6 +142,9 @@

    Arg

    Value

    A numeric vector of horizon redness index (higher values = redder).

    +

    References

    + +

    Barron, V. and Torrent, J. (1986), Use of the Kubelka—Munk theory to study the influence of iron oxides on soil colour. Journal of Soil Science, 37: 499-510. doi:10.1111/j.1365-2389.1986.tb00382.x

    Author

    Andrew G. Brown.

    diff --git a/docs/reference/buntley.westin.index.html b/docs/reference/buntley.westin.index.html index 400d35382..6eed8100d 100644 --- a/docs/reference/buntley.westin.index.html +++ b/docs/reference/buntley.westin.index.html @@ -137,7 +137,10 @@

    Arg

    Value

    -

    A numeric vector reflecting horizon redness (higher values = redder).

    +

    A numeric vector reflecting horizon color development.

    +

    References

    + +

    Buntley, G.J. and Westin, F.C. (1965), A Comparative Study of Developmental Color in a Chestnut‐Chernozem‐Brunizem Soil Climosequence. Soil Science Society of America Journal, 29: 579-582. doi:10.2136/sssaj1965.03615995002900050029x

    Author

    Andrew G. Brown.

    diff --git a/docs/reference/duplicate.html b/docs/reference/duplicate.html index 931b0563c..0f9a5c912 100644 --- a/docs/reference/duplicate.html +++ b/docs/reference/duplicate.html @@ -6,7 +6,7 @@ -Duplicte Profiles of a SoilProfileColection — duplicate • aqp +Duplicte Profiles of a SoilProfileCollection — duplicate • aqp @@ -39,8 +39,8 @@ - - + + @@ -111,13 +111,13 @@
    -

    A simple function to duplicate the contents of a SoilProfileColection object. Old profile IDs are saved as a site-level attribute (oldID) and new IDs are generated using a numeric serial number.

    +

    A simple function to duplicate the contents of a SoilProfileCollection object. Old profile IDs are saved as a site-level attribute (oldID) and new IDs are generated using a numeric serial number.

    duplicate(x, times = 3, oldID = ".oldID")
    diff --git a/docs/reference/estimateSoilDepth-1.png b/docs/reference/estimateSoilDepth-1.png index dd077f270e4ac20c1a2ee58cd90522d0ad4c2b78..080d76260d7dcac70cc35947042e6109bc226f50 100644 GIT binary patch literal 15407 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 diff --git a/docs/reference/estimateSoilDepth-2.png b/docs/reference/estimateSoilDepth-2.png new file mode 100644 index 0000000000000000000000000000000000000000..dd077f270e4ac20c1a2ee58cd90522d0ad4c2b78 GIT binary patch literal 17438 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 literal 0 HcmV?d00001 diff --git a/docs/reference/estimateSoilDepth.html b/docs/reference/estimateSoilDepth.html index 2962193ad..43a2e4383 100644 --- a/docs/reference/estimateSoilDepth.html +++ b/docs/reference/estimateSoilDepth.html @@ -174,7 +174,43 @@

    AuthorD.E. Beaudette and J.M. Skovlin

    Examples

    -
    data(sp1) +
    + +## consider a situation where there were multiple candidate +## "contacts": 2 Cd horizons over an R + +# init hypothetical profile +d <- data.frame( + id = '1', + top = c(0, 10, 20, 30, 40, 50, 60), + bottom = c(10, 20, 30, 40, 50, 60, 80), + name = c('A', 'Bt1', 'Bt2', 'BC', 'Cd1', 'Cd2', 'R'), + stringsAsFactors = FALSE +) + +# upgrade to SPC +depths(d) <- id ~ top + bottom + +# visual check +par(mar = c(0, 0, 0, 1)) +plotSPC(d, hz.depths = TRUE, name.style = 'center-center', cex.names = 1) +
    +# top of the first Cd +estimateSoilDepth(d, name = 'name') +
    #> [1] 40
    +# top of the first Cd +estimateSoilDepth(d, name = 'name', selection = min) +
    #> [1] 40
    +# top of the R +estimateSoilDepth(d, name = 'name', selection = max) +
    #> [1] 60
    +# top of the second Cd +estimateSoilDepth(d, name = 'name', selection = max, p = 'Cd') +
    #> [1] 50
    + +## another example + +data(sp1) depths(sp1) <- id ~ top + bottom # apply to each profile in a collection, and save as site-level attribute @@ -212,7 +248,7 @@

    Examp # y-position is adjusted based on plot y-offset and scaling factor y.positions <- lsp$y.offset + (sp1$top_Bt * lsp$scaling.factor) text(x.positions, y.positions, '\u2192', col='blue', adj=1, cex=1.25, lwd=2) -

    +
    if (FALSE) { # sample data diff --git a/docs/reference/get.ml.hz.html b/docs/reference/get.ml.hz.html index 76f404857..555d113bc 100644 --- a/docs/reference/get.ml.hz.html +++ b/docs/reference/get.ml.hz.html @@ -145,7 +145,7 @@

    Value

    top

    top boundary

    bottom

    bottom boundary

    confidence

    integrated probability over thickness of each ML horizon, rounded to the nearest integer

    -
    pseudo.brier

    A "pseudo"" Brier Score for a multi-class prediction, where the most-likely horizon label is treated as the "correct" outcome. Details on the calculation for traditional Brier Scores here: http://en.wikipedia.org/wiki/Brier_score#Original_definition_by_Brier. Lower values suggest better agreement between ML horizon label and class-wise probabilities.

    +
    pseudo.brier

    A "pseudo"" Brier Score for a multi-class prediction, where the most-likely horizon label is treated as the "correct" outcome. Details on the calculation for traditional Brier Scores here: https://en.wikipedia.org/wiki/Brier_score. Lower values suggest better agreement between ML horizon label and class-wise probabilities.

    mean.H

    mean Shannon entropy (bits), derived from probabilities within each most-likely horizon. Larger values suggest more confusion within each ML.

    Author

    diff --git a/docs/reference/glomApply.html b/docs/reference/glomApply.html index ce97d8b5f..56bef2018 100644 --- a/docs/reference/glomApply.html +++ b/docs/reference/glomApply.html @@ -42,7 +42,7 @@ +glomApply essentially provides the option to programattically generate profile-specfic glom depths for a large SPC and handles iteration and rebuilding of a subset SPC object. Optional arguments include: truncate to cut the boundaries to specified [z1, z2]; invert to the portion outside [z1, z2], modality to either "all" horizons or "thickest" horizon in the glom interval. ... are various expressions you can run on the individual profiles using NSE, similar to mutate." /> @@ -121,7 +121,7 @@

    Subset an SPC by applying glom to each profile

    glomApply() is a function used for subsetting SoilProfileCollection objects by depth. It is a wrapper around glom which is intended to subset single-profile SPCs based on depth intervals/intersection.

    glomApply works by accepting a function .fun as argument. This function is used on each profile to process a multi-profile SPC for input to glom (via profileApply). For each profile, .fun returns a 2-length numeric vector of top and bottom boundaries glom arguments: z1, z2.

    -

    glomApply essentially provides the option to programattically generate profile-specfic glom depths for a large SPC and handles iteration and rebuilding of a subset SPC object. Optional argument sinclude: truncate to cut the boundaries to specified [z1, z2]; invert to the portion outside [z1, z2], modality to either "all" horizons or "thickest" horizon in the glom interval. ... are various expressions you can run on the individual profiles using NSE, similar to mutate.

    +

    glomApply essentially provides the option to programattically generate profile-specfic glom depths for a large SPC and handles iteration and rebuilding of a subset SPC object. Optional arguments include: truncate to cut the boundaries to specified [z1, z2]; invert to the portion outside [z1, z2], modality to either "all" horizons or "thickest" horizon in the glom interval. ... are various expressions you can run on the individual profiles using NSE, similar to mutate.

    glomApply(
    diff --git a/docs/reference/harden.melanization.html b/docs/reference/harden.melanization.html
    index a4059e962..3860d685e 100644
    --- a/docs/reference/harden.melanization.html
    +++ b/docs/reference/harden.melanization.html
    @@ -138,6 +138,9 @@ 

    Arg

    Value

    A numeric vector reflecting horizon darkening relative to a reference (e.g. parent) material.

    +

    References

    + +

    Harden, J.W. (1982) A quantitative index of soil development from field descriptions: Examples from a chronosequence in central California. Geoderma. 28(1) 1-28. doi: 10.1016/0016-7061(82)90037-4

    Author

    Andrew G. Brown.

    diff --git a/docs/reference/harden.rubification.html b/docs/reference/harden.rubification.html index c1d6c279e..dbcf78b53 100644 --- a/docs/reference/harden.rubification.html +++ b/docs/reference/harden.rubification.html @@ -146,6 +146,9 @@

    Arg

    Value

    A numeric vector reflecting horizon redness increase relative to a reference (e.g. parent) material.

    +

    References

    + +

    Harden, J.W. (1982) A quantitative index of soil development from field descriptions: Examples from a chronosequence in central California. Geoderma. 28(1) 1-28. doi: 10.1016/0016-7061(82)90037-4

    Author

    Andrew G. Brown.

    diff --git a/docs/reference/harmonize-SoilProfileCollection-method.html b/docs/reference/harmonize-SoilProfileCollection-method.html index 12bcba7e4..fdab8566f 100644 --- a/docs/reference/harmonize-SoilProfileCollection-method.html +++ b/docs/reference/harmonize-SoilProfileCollection-method.html @@ -125,7 +125,7 @@

    Harmonize a property by profile-level denormalization for convenient visuali

    # S4 method for SoilProfileCollection
    -harmonize(x, x.names, keep.cols, grp.name = "hgroup")
    +harmonize(x, x.names, keep.cols = NULL, grp.name = "hgroup")

    Arguments

    diff --git a/docs/reference/horizonColorIndices.html b/docs/reference/horizonColorIndices.html index a7ea4e1b8..00c7b79fe 100644 --- a/docs/reference/horizonColorIndices.html +++ b/docs/reference/horizonColorIndices.html @@ -40,7 +40,7 @@ - + @@ -117,7 +117,7 @@

    Horizon Color Indices

    -

    Calculate basic horizon-level color indices for a SoilProfileCollection. Basic indices do not require aggregation over the whole profile or comparison to a "reference" (e.g. parent material) color. Includes Hurst (1977) Redness Index, Barron-Torrent Redness Index (1986) and Buntley-Westin Index (1965).

    +

    Calculate basic horizon-level color indices for a SoilProfileCollection. Basic indices do not require aggregation over the whole profile or comparison to a "reference" (e.g. parent material) color. Includes Hurst (1977) Redness Index, Barron-Torrent Redness Index (1986) and Buntley-Westin Index (1965). This is a wrapper method around several horizon-level indices. See the individual functions for more details.

    horizonColorIndices(p, hue = "m_hue", value = "m_value", chroma = "m_chroma")
    @@ -146,6 +146,9 @@

    Arg

    Value

    A data.frame containing unique pedon and horizon IDs and horizon-level color indices.

    +

    See also

    + +

    Author

    Andrew G. Brown.

    diff --git a/docs/reference/hurst.redness.html b/docs/reference/hurst.redness.html index 5551f4c57..1f967b86f 100644 --- a/docs/reference/hurst.redness.html +++ b/docs/reference/hurst.redness.html @@ -142,6 +142,9 @@

    Arg

    Value

    A numeric vector of horizon redness index (lower values = redder).

    +

    References

    + +

    Hurst, V.J. (1977) Visual estimation of iron in saprolite. GSA Bulletin. 88(2): 174–176. doi: https://doi.org/10.1130/0016-7606(1977)88<174:VEOIIS>2.0.CO;2

    Author

    Andrew G. Brown.

    diff --git a/docs/reference/hzDistinctnessCodeToOffset.html b/docs/reference/hzDistinctnessCodeToOffset.html index b22a2a6b9..17319382c 100644 --- a/docs/reference/hzDistinctnessCodeToOffset.html +++ b/docs/reference/hzDistinctnessCodeToOffset.html @@ -148,7 +148,7 @@

    Value

    vector of offsets with same length as x

    Details

    -

    The default offests are based on the high-end of ranges presented in "transitional zone thickness criteria" from the Field Book version 3.0 (page 2-6). Offsets are returned as 1/2 of the transitional zone thickness so that horizon boundaries can be adjusted up/down from horizon depths. See plotSPC, specifically the hz.distinctness.offset argument for vizualization ideas. Missing data in x (NA) or codes that are not defined in codes are returned as 0 offsets.

    +

    The default offests are based on the high-end of ranges presented in "transitional zone thickness criteria" from the Field Book version 3.0 (page 2-6). Offsets are returned as 1/2 of the transitional zone thickness so that horizon boundaries can be adjusted up/down from horizon depths. See plotSPC, specifically the hz.distinctness.offset argument for visualization ideas. Missing data in x (NA) or codes that are not defined in codes are returned as 0 offsets.

    References

    Field Book for Describing and Sampling Soils, version 3.0

    diff --git a/docs/reference/index.html b/docs/reference/index.html index 2d6db2de6..8c9d19891 100644 --- a/docs/reference/index.html +++ b/docs/reference/index.html @@ -366,7 +366,7 @@

    duplicate()

    -

    + + + + diff --git a/docs/reference/jacobs2000.html b/docs/reference/jacobs2000.html index a5e48fe02..d2263c19d 100644 --- a/docs/reference/jacobs2000.html +++ b/docs/reference/jacobs2000.html @@ -128,7 +128,7 @@

    FormatA SoilProfileCollection object.

    Source

    -

    Redoximorphic Features as Indicators of Seasonal Saturation, Lowndes County, Georgia

    +

    Redoximorphic Features as Indicators of Seasonal Saturation, Lowndes County, Georgia

    References

    Jacobs, P. M., L. T. West, and J. N. Shaw. 2002. Redoximorphic Features as Indicators of Seasonal Saturation, Lowndes County, Georgia. Soil Sci. Soc. Am. J. 66:315-323. doi:10.2136/sssaj2002.3150

    diff --git a/docs/reference/munsell.spectra.html b/docs/reference/munsell.spectra.html index 5be3d5d7a..3d9409365 100644 --- a/docs/reference/munsell.spectra.html +++ b/docs/reference/munsell.spectra.html @@ -40,7 +40,7 @@ - @@ -119,7 +119,7 @@

    Spectral Library of Munsell Colors

    -

    The original database (SpectralReflectancesOf2007MunsellBookOfColorGlossy.txt) was provided by Paul Centore and downloaded September, 2020. Reflectance values for odd chroma have been interpolated from adjacent chips. See aqp/misc/utils/Munsell/ for the entire set of processing steps.

    +

    The original database "SpectralReflectancesOf2007MunsellBookOfColorGlossy.txt" was provided by Paul Centore and downloaded July, 2020. Reflectance values for odd chroma have been interpolated from adjacent chips. See aqp/misc/utils/Munsell/ for the entire set of processing steps.

    The original database contains the following description:

    This file contains spectral reflectance measurements of X-Rite's 2007 Munsell Book of Color (Glossy Finish). The measurements were made in 2012 with a ColorMunki spectrophotometer. The first column is the Munsell name. The remaining columns give reflectance values for 380 nm to 730 nm, in steps of 10 nm. The reflectance is a value between 0 (indicating that no light at that wavelength is reflected) and 1 (indicating that all the light at that wavelength is reflected). Occasionally an entry is slightly greater than 1. The likely cause is random variability, and those entries can be adjusted to 1 with negligible loss. In all, 1485 colour samples were measured. Researchers are invited to analyze the data in this file.

    diff --git a/docs/reference/munsell2rgb.html b/docs/reference/munsell2rgb.html index 33a4b3d79..97629964e 100644 --- a/docs/reference/munsell2rgb.html +++ b/docs/reference/munsell2rgb.html @@ -123,7 +123,7 @@

    Convert Munsell Notation to and from sRGB color coordinates

    munsell2rgb(the_hue, the_value, the_chroma, alpha=1, 
     maxColorValue=1, return_triplets=FALSE, returnLAB=FALSE)
     
    -rgb2munsell(color, colorSpace='CIE2000', nClosest=1)
    +rgb2munsell(color, colorSpace = c('CIE2000', 'LAB', 'sRGB'), nClosest=1)
     
     parseMunsell(munsellColor, convertColors=TRUE, ...)
     
    @@ -404,11 +404,11 @@ 

    Examp parseMunsell("10YR 3/5", return_triplets=TRUE)
    #> r g b #> 1 0.3817539 0.2599868 0.09323485
    -# sRGB + CIE LAB (D65 illuminant) +# sRGB + CIELAB (D65 illuminant) parseMunsell("10YR 3/5", return_triplets=TRUE, returnLAB=TRUE)
    #> r g b L A B #> 1 0.3817539 0.2599868 0.09323485 30.81482 9.000702 30.27227
    -# CIE LAB only +# CIELAB only parseMunsell("10YR 3/5", return_triplets=FALSE, returnLAB=TRUE)
    #> L A B #> 1 30.81482 9.000702 30.27227

    diff --git a/docs/reference/permute_profile.html b/docs/reference/permute_profile.html index 2fee1b002..499be61b4 100644 --- a/docs/reference/permute_profile.html +++ b/docs/reference/permute_profile.html @@ -43,7 +43,7 @@ @@ -124,7 +124,7 @@

    Permute soil horizon depths using boundary distinctness

    This method is most "believable" when used to _gently_ permute the data, on the order of moving boundaries a few centimeters in either direction. The nice thing about it is it can leverage semi-quantitative (ordered factor) levels of boundary distinctness/topography for the upper and lower boundary of individual horizons, given a set of assumptions to convert classes to a "standard deviation" (see example).

    If you imagine a normal curve with its mean centered on the vertical (depth axis) at a RV horizon depth. By the Empirical Rule for Normal distribution, two "standard deviations" above or below that RV depth represent 95

    So, a standard deviation of 1-2cm would yield a "boundary thickness" in the 3-5cm range ("clear" distinctness class).

    -

    Of course, boundaries are not symmetrical and this is at best an approximation for properties like organic matter, nutrients or salts that can have strong depth-dependence within horizons. Also, boundary topography is non-uniform. There are definitely ways to implement other distributions, but invokes more detailed assumptions about field data that are generally only semi-quantiative or are not available.

    +

    Of course, boundaries are not symmetrical and this is at best an approximation for properties like organic matter, nutrients or salts that can have strong depth-dependence within horizons. Also, boundary topography is non-uniform. There are definitely ways to implement other distributions, but invokes more detailed assumptions about field data that are generally only semi-quantitative or are not available.

    Future implementations may use boundary topography as a second hierarchical level (e.g. trig-based random functions), but think that distinctness captures the "uncertainty" about horizon separation at a specific "point" on the ground (or line in the profile quite well, and the extra variation may be hard to interpret, in general.

    diff --git a/docs/reference/random_profile.html b/docs/reference/random_profile.html index 9f5b0dc06..4b3d74bd7 100644 --- a/docs/reference/random_profile.html +++ b/docs/reference/random_profile.html @@ -175,7 +175,7 @@

    Value

    Details

    The random walk method produces profiles with considerable variation between horizons and is based on values from the normal distribution seeded with means and standard deviations drawn from the uniform distribtion of [0, 10].

    -

    The logistic power peak (LPP) function can be used to generate random soil property depth functions that are sharply peaked. LPP parameters can be hard-coded using the optional arguments: "lpp.a", "lpp.b", "lpp.u", "lpp.d", "lpp.e". Amplitude of the peak is controlled by ("lpp.a + "lpp.b"), depth of the peak by "lpp.u", and abruptness by "lpp.d" and "lpp.e". Further description of the method is outlined in (Brenton et al, 2011). Simulated horizon distinctness codes are based on the USDA-NCSS field description methods (http://www.nrcs.usda.gov/wps/portal/nrcs/detail//?cid=nrcs142p2_054184). Simulated distinctness codes are constrained according to horizon thickness, i.e. a gradual boundary (+/- 5cm) will not be simulated for horizons that are thinner than 3x this vertical distance

    +

    The logistic power peak (LPP) function can be used to generate random soil property depth functions that are sharply peaked. LPP parameters can be hard-coded using the optional arguments: "lpp.a", "lpp.b", "lpp.u", "lpp.d", "lpp.e". Amplitude of the peak is controlled by ("lpp.a + "lpp.b"), depth of the peak by "lpp.u", and abruptness by "lpp.d" and "lpp.e". Further description of the method is outlined in (Brenton et al, 2011). Simulated horizon distinctness codes are based on the USDA-NCSS field description methods (https://www.nrcs.usda.gov/wps/portal/nrcs/detail/?cid=nrcs142p2_054184). Simulated distinctness codes are constrained according to horizon thickness, i.e. a gradual boundary (+/- 5cm) will not be simulated for horizons that are thinner than 3x this vertical distance

    References

    Myers, D. B.; Kitchen, N. R.; Sudduth, K. A.; Miles, R. J.; Sadler, E. J. & Grunwald, S. Peak functions for modeling high resolution soil profile data Geoderma, 2011, 166, 74-83.

    diff --git a/docs/reference/soil_minerals.html b/docs/reference/soil_minerals.html index 8a7078573..c7c1f9d13 100644 --- a/docs/reference/soil_minerals.html +++ b/docs/reference/soil_minerals.html @@ -139,7 +139,7 @@

    Details

    Soil color and other properties including texture, structure, and consistence are used to distinguish and identify soil horizons (layers) and to group soils according to the soil classification system called Soil Taxonomy. Color development and distribution of color within a soil profile are part of weathering. As rocks containing iron or manganese weather, the elements oxidize. Iron forms small crystals with a yellow or red color, organic matter decomposes into black humus, and manganese forms black mineral deposits. These pigments paint the soil (Michigan State Soil). Color is also affected by the environment: aerobic environments produce sweeping vistas of uniform or subtly changing color, and anaerobic (lacking oxygen), wet environments disrupt color flow with complex, often intriguing patterns and points of accent. With depth below the soil surface, colors usually become lighter, yellower, or redder.

    Source

    -

    http://www.nrcs.usda.gov/wps/portal/nrcs/detail/soils/edu/?cid=nrcs142p2_054286

    +

    https://www.nrcs.usda.gov/wps/portal/nrcs/detail/soils/edu/?cid=nrcs142p2_054286

    References

    1. Lynn, W.C. and Pearson, M.J., The Color of Soil, The Science Teacher, May 2000. diff --git a/docs/reference/splitLogicErrors.html b/docs/reference/splitLogicErrors.html new file mode 100644 index 000000000..2c7609122 --- /dev/null +++ b/docs/reference/splitLogicErrors.html @@ -0,0 +1,298 @@ + + + + + + + + +Split a SoilProfileCollection into a list based on types of horizon logic errors — splitLogicErrors • aqp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +
    + + + + +
    + +
    +
    + + +
    +

    Uses checkHzDepthLogic to identify presence of depth logic errors, same depths, missing depths, and overlaps/gaps between the horizons of each profile in a SoilProfileCollection.

    +
    + +
    splitLogicErrors(object, interact = FALSE, ...)
    + +

    Arguments

    +

    Duplicte Profiles of a SoilProfileColection

    Duplicte Profiles of a SoilProfileCollection

    @@ -1065,6 +1065,12 @@

    splitLogicErrors()

    +

    Split a SoilProfileCollection into a list based on types of horizon logic errors

    subApply

    + + + + + + + + + + + + + +
    object

    A SoilProfileCollection

    interact

    Calculate interaction between the four logic errors for groups? Default: FALSE always returns 4 groups, one for each logic error type.

    ...

    Additional arguments to split.default, called when interact = TRUE

    + +

    Value

    + +

    A named list of SoilProfileCollections (or NULL), with names: "depthLogic", "sameDepth", "missingDepth", "overlapOrGap". If interact = TRUE then the list elements groups determined by interaction() of the error types.

    + +

    Examples

    +
    +data(sp4) +depths(sp4) <- id ~ top + bottom + +# no errors (all four list elements return NULL) +splitLogicErrors(sp4) +
    #> $depthLogic +#> NULL +#> +#> $sameDepth +#> NULL +#> +#> $missingDepth +#> NULL +#> +#> $overlapOrGap +#> NULL +#>
    +# NA in top depth triggers depth logic and missing depth errors +data(sp4) +sp4$top[1] <- NA +depths(sp4) <- id ~ top + bottom +
    #> This is already a SoilProfilecollection-class object, doing nothing.
    +splitLogicErrors(sp4) +
    #> $depthLogic +#> SoilProfileCollection with 1 profiles and 4 horizons +#> profile ID: id | horizon ID: hzID +#> Depth range: 42 - 42 cm +#> +#> ----- Horizons (4 / 4 rows | 10 / 14 columns) ----- +#> id hzID top bottom name K Mg Ca CEC_7 ex_Ca_to_Mg +#> colusa 1 NA 3 A 0.3 25.7 9.0 23.0 0.35 +#> colusa 2 3 8 ABt 0.2 23.7 5.6 21.4 0.23 +#> colusa 3 8 30 Bt1 0.1 23.2 1.9 23.7 0.08 +#> colusa 4 30 42 Bt2 0.1 44.3 0.3 43.0 0.01 +#> +#> ----- Sites (1 / 1 rows | 1 / 1 columns) ----- +#> id +#> colusa +#> +#> Spatial Data: +#> [,1] +#> [1,] NA +#> [1] NA +#> +#> $sameDepth +#> NULL +#> +#> $missingDepth +#> SoilProfileCollection with 1 profiles and 4 horizons +#> profile ID: id | horizon ID: hzID +#> Depth range: 42 - 42 cm +#> +#> ----- Horizons (4 / 4 rows | 10 / 14 columns) ----- +#> id hzID top bottom name K Mg Ca CEC_7 ex_Ca_to_Mg +#> colusa 1 NA 3 A 0.3 25.7 9.0 23.0 0.35 +#> colusa 2 3 8 ABt 0.2 23.7 5.6 21.4 0.23 +#> colusa 3 8 30 Bt1 0.1 23.2 1.9 23.7 0.08 +#> colusa 4 30 42 Bt2 0.1 44.3 0.3 43.0 0.01 +#> +#> ----- Sites (1 / 1 rows | 1 / 1 columns) ----- +#> id +#> colusa +#> +#> Spatial Data: +#> [,1] +#> [1,] NA +#> [1] NA +#> +#> $overlapOrGap +#> NULL +#>
    +# interact = TRUE gets errors for profile 1 in same group +# and allows you to pass extra arguments to split.default() +splitLogicErrors(sp4, interact = TRUE, sep = "_", drop = TRUE) +
    #> $`___` +#> SoilProfileCollection with 9 profiles and 26 horizons +#> profile ID: id | horizon ID: hzID +#> Depth range: 16 - 49 cm +#> +#> ----- Horizons (6 / 26 rows | 10 / 14 columns) ----- +#> id hzID top bottom name K Mg Ca CEC_7 ex_Ca_to_Mg +#> glenn 5 0 9 A 0.2 21.9 4.4 18.8 0.20 +#> glenn 6 9 34 Bt 0.3 18.9 4.5 27.5 0.20 +#> kings 7 0 4 A 0.2 12.1 1.4 23.7 0.58 +#> kings 8 4 13 Bt1 0.6 12.1 7.0 18.0 0.51 +#> kings 9 13 40 Bt2 0.8 17.7 4.4 20.0 0.25 +#> mariposa 10 0 3 A 0.6 28.3 5.8 29.3 0.20 +#> [... more horizons ...] +#> +#> ----- Sites (6 / 9 rows | 1 / 1 columns) ----- +#> id +#> glenn +#> kings +#> mariposa +#> mendocino +#> napa +#> san benito +#> [... more sites ...] +#> +#> Spatial Data: [EMPTY] +#> +#> $depthLogic__missingDepth_ +#> SoilProfileCollection with 1 profiles and 4 horizons +#> profile ID: id | horizon ID: hzID +#> Depth range: 42 - 42 cm +#> +#> ----- Horizons (4 / 4 rows | 10 / 14 columns) ----- +#> id hzID top bottom name K Mg Ca CEC_7 ex_Ca_to_Mg +#> colusa 1 NA 3 A 0.3 25.7 9.0 23.0 0.35 +#> colusa 2 3 8 ABt 0.2 23.7 5.6 21.4 0.23 +#> colusa 3 8 30 Bt1 0.1 23.2 1.9 23.7 0.08 +#> colusa 4 30 42 Bt2 0.1 44.3 0.3 43.0 0.01 +#> +#> ----- Sites (1 / 1 rows | 1 / 1 columns) ----- +#> id +#> colusa +#> +#> Spatial Data: +#> [,1] +#> [1,] NA +#> [1] NA +#>
    +
    +
    + +
    + + +
    + + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    +
    + + + + + + + + diff --git a/docs/reference/thompson.bell.darkness.html b/docs/reference/thompson.bell.darkness.html index 1d73959ee..cd878a369 100644 --- a/docs/reference/thompson.bell.darkness.html +++ b/docs/reference/thompson.bell.darkness.html @@ -155,7 +155,10 @@

    Arg

    Value

    -

    A numeric vector reflecting horizon redness (higher values = redder).

    +

    A numeric vector reflecting horizon darkness (lower values = darker).

    +

    References

    + +

    Thompson, J.A. and Bell, J.C. (1996), Color Index for Identifying Hydric Conditions for Seasonally Saturated Mollisols in Minnesota. Soil Science Society of America Journal, 60: 1979-1988. doi:10.2136/sssaj1996.03615995006000060051x

    Author

    Andrew G. Brown.

    diff --git a/docs/reference/us.state.soils.html b/docs/reference/us.state.soils.html index b88033304..19a02a9b2 100644 --- a/docs/reference/us.state.soils.html +++ b/docs/reference/us.state.soils.html @@ -40,7 +40,7 @@ - + @@ -117,7 +117,7 @@

    US State Soils

-

A listing of the 52 US state soils, including Puerto Rico and Virgin Islands.

+

A listing of the 50 US state soils, along with Puerto Rico and Virgin Islands.

data(us.state.soils)
diff --git a/man/argillic.clay.increase.depth.Rd b/man/argillic.clay.increase.depth.Rd index 399f0c19a..e4e394333 100644 --- a/man/argillic.clay.increase.depth.Rd +++ b/man/argillic.clay.increase.depth.Rd @@ -14,7 +14,7 @@ argillic.clay.increase.depth(p, clay.attr = "clay") %- maybe also 'usage' for other objects documented here. \arguments{ \item{p}{ -A single-profile SoilProfileCllection object. +A single-profile \code{SoilProfileCollection} object. } \item{clay.attr}{ OPTIONAL: horizon attribute name referring to clay content. default: `clay` diff --git a/man/duplicate.Rd b/man/duplicate.Rd index d426fb444..a2969138e 100644 --- a/man/duplicate.Rd +++ b/man/duplicate.Rd @@ -2,7 +2,7 @@ % Please edit documentation in R/duplicate.R \name{duplicate} \alias{duplicate} -\title{Duplicte Profiles of a SoilProfileColection} +\title{Duplicte Profiles of a SoilProfileCollection} \usage{ duplicate(x, times = 3, oldID = ".oldID") } @@ -17,7 +17,7 @@ duplicate(x, times = 3, oldID = ".oldID") a \code{SoilProfileCollection} object } \description{ -A simple function to duplicate the contents of a \code{SoilProfileColection} object. Old profile IDs are saved as a site-level attribute (\code{oldID}) and new IDs are generated using a numeric serial number. +A simple function to duplicate the contents of a \code{SoilProfileCollection} object. Old profile IDs are saved as a site-level attribute (\code{oldID}) and new IDs are generated using a numeric serial number. } \note{ Duplication is also possible with \code{permute_profile} and \code{sim} by simulation from 0-variance distributions. This is a simpler, likely faster, alternative when duplication vs. simulation is required. diff --git a/man/glomApply.Rd b/man/glomApply.Rd index 3822a2646..c3e5c0455 100644 --- a/man/glomApply.Rd +++ b/man/glomApply.Rd @@ -38,7 +38,7 @@ A SoilProfileCollection. \code{glomApply} works by accepting a function \code{.fun} as argument. This function is used on each profile to process a multi-profile SPC for input to \code{glom} (via \code{profileApply}). For each profile, \code{.fun} returns a 2-length numeric vector of top and bottom boundaries \code{glom} arguments: \code{z1}, \code{z2}. -\code{glomApply} essentially provides the option to programattically generate profile-specfic glom depths for a large SPC and handles iteration and rebuilding of a subset SPC object. Optional argument sinclude: \code{truncate} to cut the boundaries to specified \code{[z1, z2]}; \code{invert} to the portion outside \code{[z1, z2]}, \code{modality} to either \code{"all"} horizons or \code{"thickest"} horizon in the \code{glom} interval. \code{...} are various expressions you can run on the individual profiles using NSE, similar to \code{mutate}. +\code{glomApply} essentially provides the option to programattically generate profile-specfic glom depths for a large SPC and handles iteration and rebuilding of a subset SPC object. Optional arguments include: \code{truncate} to cut the boundaries to specified \code{[z1, z2]}; \code{invert} to the portion outside \code{[z1, z2]}, \code{modality} to either \code{"all"} horizons or \code{"thickest"} horizon in the \code{glom} interval. \code{...} are various expressions you can run on the individual profiles using NSE, similar to \code{mutate}. } \examples{ diff --git a/man/hzDistinctnessCodeToOffset.Rd b/man/hzDistinctnessCodeToOffset.Rd index 27084ab5c..78440a555 100644 --- a/man/hzDistinctnessCodeToOffset.Rd +++ b/man/hzDistinctnessCodeToOffset.Rd @@ -24,7 +24,7 @@ vector of offsets with same length as \code{x} This function will convert USDA-NCSS horizon boundary distinctness codes into vertical (+/-) offsets in cm, based on the \href{https://www.nrcs.usda.gov/wps/portal/nrcs/detail/soils/research/guide/?cid=nrcs142p2_054184}{Field Book for Describing and Sampling Soils, version 3.0}. } \details{ -The default offests are based on the high-end of ranges presented in "transitional zone thickness criteria" from the Field Book version 3.0 (page 2-6). Offsets are returned as 1/2 of the transitional zone thickness so that horizon boundaries can be adjusted up/down from horizon depths. See \code{\link{plotSPC}}, specifically the \code{hz.distinctness.offset} argument for vizualization ideas. Missing data in \code{x} (NA) or codes that are not defined in \code{codes} are returned as 0 offsets. +The default offests are based on the high-end of ranges presented in "transitional zone thickness criteria" from the Field Book version 3.0 (page 2-6). Offsets are returned as 1/2 of the transitional zone thickness so that horizon boundaries can be adjusted up/down from horizon depths. See \code{\link{plotSPC}}, specifically the \code{hz.distinctness.offset} argument for visualization ideas. Missing data in \code{x} (NA) or codes that are not defined in \code{codes} are returned as 0 offsets. } \examples{ data(sp1) diff --git a/man/permute_profile.Rd b/man/permute_profile.Rd index fd2752455..1be38a2d0 100644 --- a/man/permute_profile.Rd +++ b/man/permute_profile.Rd @@ -39,7 +39,7 @@ If you imagine a normal curve with its mean centered on the vertical (depth axis So, a standard deviation of 1-2cm would yield a "boundary thickness" in the 3-5cm range ("clear" distinctness class). -Of course, boundaries are not symmetrical and this is at best an approximation for properties like organic matter, nutrients or salts that can have strong depth-dependence within horizons. Also, boundary topography is non-uniform. There are definitely ways to implement other distributions, but invokes more detailed assumptions about field data that are generally only semi-quantiative or are not available. +Of course, boundaries are not symmetrical and this is at best an approximation for properties like organic matter, nutrients or salts that can have strong depth-dependence within horizons. Also, boundary topography is non-uniform. There are definitely ways to implement other distributions, but invokes more detailed assumptions about field data that are generally only semi-quantitative or are not available. Future implementations may use boundary topography as a second hierarchical level (e.g. trig-based random functions), but think that distinctness captures the "uncertainty" about horizon separation at a specific "point" on the ground (or line in the profile quite well, and the extra variation may be hard to interpret, in general. } diff --git a/man/us.state.soils.Rd b/man/us.state.soils.Rd index 151260cdd..a4e4ddc56 100644 --- a/man/us.state.soils.Rd +++ b/man/us.state.soils.Rd @@ -15,6 +15,6 @@ data(us.state.soils) } \description{ -A listing of the 52 US state soils, including Puerto Rico and Virgin Islands. +A listing of the 50 US state soils, along with Puerto Rico and Virgin Islands. } \keyword{datasets} diff --git a/misc/aqp-spellcheck-allowed.csv b/misc/aqp-spellcheck-allowed.csv index d25eab88b..fa4df463c 100644 --- a/misc/aqp-spellcheck-allowed.csv +++ b/misc/aqp-spellcheck-allowed.csv @@ -427,3 +427,6 @@ Yuba Zelazny Zeng Zhang +wps +th +Sudduth