From 8b98a4408fb84f840ff8cbe9ed6a84d5460dee8d Mon Sep 17 00:00:00 2001 From: Herman De Beukelaer Date: Thu, 31 Aug 2023 13:28:01 +0200 Subject: [PATCH 1/6] Update package docs to new Roxygen approach --- DESCRIPTION | 4 +- R/{corehunter.R => corehunter-package.R} | 9 +- man/corehunter-package.Rd | 163 +++++++++++++++++++++++ man/corehunter.Rd | 65 --------- 4 files changed, 171 insertions(+), 70 deletions(-) rename R/{corehunter.R => corehunter-package.R} (95%) create mode 100644 man/corehunter-package.Rd delete mode 100644 man/corehunter.Rd diff --git a/DESCRIPTION b/DESCRIPTION index 43c823d..215142c 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: corehunter Title: Multi-Purpose Core Subset Selection -Version: 3.2.2 -Date: 2023-05-02 +Version: 3.2.3 +Date: 2023-08-31 Authors@R: c(person("Herman", "De Beukelaer", email = "herman.debeukelaer@gmail.com", role = c("aut", "cre")), person("Guy", "Davenport", email = "daveneti@gmail.com", role = "aut"), person("Veerle", "Fack", email = "veerle.fack@ugent.be", role = "ths")) diff --git a/R/corehunter.R b/R/corehunter-package.R similarity index 95% rename from R/corehunter.R rename to R/corehunter-package.R index 138bdd0..1cef453 100644 --- a/R/corehunter.R +++ b/R/corehunter-package.R @@ -1,4 +1,5 @@ -#' Core Hunter 3 +#' @keywords internal +#' #' Core Hunter 3 (Test) #' #' Core Hunter is a tool to sample diverse, representative subsets from large germplasm #' collections, with minimum redundancy. Such so-called core collections have applications in plant @@ -56,6 +57,8 @@ #' \code{\link{sampleCore}}, \code{\link{evaluateCore}}, #' \code{\link{objective}} #' -#' @docType package -#' @name corehunter +"_PACKAGE" + +## usethis namespace: start +## usethis namespace: end NULL diff --git a/man/corehunter-package.Rd b/man/corehunter-package.Rd new file mode 100644 index 0000000..f5434fa --- /dev/null +++ b/man/corehunter-package.Rd @@ -0,0 +1,163 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/corehunter-package.R +\docType{package} +\name{corehunter-package} +\alias{corehunter} +\alias{corehunter-package} +\title{corehunter: Multi-Purpose Core Subset Selection} +\description{ +Core Hunter is a tool to sample diverse, representative subsets from large germplasm collections, with minimum redundancy. Such so-called core collections have applications in plant breeding and genetic resource management in general. Core Hunter can construct cores based on genetic marker data, phenotypic traits or precomputed distance matrices, optimizing one of many provided evaluation measures depending on the precise purpose of the core (e.g. high diversity, representativeness, or allelic richness). In addition, multiple measures can be simultaneously optimized as part of a weighted index to bring the different perspectives closer together. The Core Hunter library is implemented in Java 8 as an open source project (see \url{http://www.corehunter.org}). +} +\examples{ +\dontrun{ +# sample core based on genetic marker data (default format) +geno.file <- system.file("extdata", "genotypes.csv", package = "corehunter") +geno <- genotypes(file = geno.file, format = "default") +core <- sampleCore(geno) + +# sample core based on genetic marker data (biparental format) +geno.file <- system.file("extdata", "genotypes-biparental.csv", package = "corehunter") +geno <- genotypes(file = geno.file, format = "biparental") +core <- sampleCore(geno) + +# sample core based on genetic marker data (frequency format) +geno.file <- system.file("extdata", "genotypes-frequency.csv", package = "corehunter") +geno <- genotypes(file = geno.file, format = "frequency") +core <- sampleCore(geno) + +# sample core based on phenotypic traits +pheno.file <- system.file("extdata", "phenotypes.csv", package = "corehunter") +pheno <- phenotypes(file = pheno.file) +core <- sampleCore(pheno) + +# sample core based on precomputed distance matrix +dist.file <- system.file("extdata", "distances.csv", package = "corehunter") +dist <- distances(file = dist.file) +core <- sampleCore(dist) + +# sample core from genotypes with custom objective (allelic richness) +core <- sampleCore(geno, obj = objective("HE")) + +# sample core from genotypes with custom size and objective (representativeness) +core <- sampleCore(geno, obj = objective("AN", "MR"), size = 0.1) + +# sample core from genotypes with custom size and stop condition +core <- sampleCore(geno, size = 0.1, impr.time = 2) + +# sample core based on both genotypes and phenotypes +geno.pheno <- coreHunterData(geno, pheno) +core <- sampleCore(geno.pheno) +} + +} +\seealso{ +\code{\link{coreHunterData}}, \code{\link{genotypes}}, + \code{\link{phenotypes}}, \code{\link{distances}}, + \code{\link{sampleCore}}, \code{\link{evaluateCore}}, + \code{\link{objective}} +} +\author{ +\strong{Maintainer}: Herman De Beukelaer \email{herman.debeukelaer@gmail.com} + +Authors: +\itemize{ + \item Guy Davenport \email{daveneti@gmail.com} +} + +Other contributors: +\itemize{ + \item Veerle Fack \email{veerle.fack@ugent.be} [thesis advisor] +} + +} +\keyword{#'} +\keyword{(Test)} +\keyword{(e.g.} +\keyword{(see} +\keyword{3} +\keyword{8} +\keyword{Core} +\keyword{Hunter} +\keyword{In} +\keyword{Java} +\keyword{Such} +\keyword{The} +\keyword{\url{http://www.corehunter.org}).} +\keyword{a} +\keyword{addition,} +\keyword{allelic} +\keyword{an} +\keyword{and} +\keyword{applications} +\keyword{as} +\keyword{based} +\keyword{be} +\keyword{breeding} +\keyword{bring} +\keyword{can} +\keyword{closer} +\keyword{collections} +\keyword{collections,} +\keyword{construct} +\keyword{core} +\keyword{cores} +\keyword{data,} +\keyword{depending} +\keyword{different} +\keyword{distance} +\keyword{diverse,} +\keyword{diversity,} +\keyword{evaluation} +\keyword{from} +\keyword{general.} +\keyword{genetic} +\keyword{germplasm} +\keyword{have} +\keyword{implemented} +\keyword{in} +\keyword{index} +\keyword{internal} +\keyword{is} +\keyword{large} +\keyword{library} +\keyword{management} +\keyword{many} +\keyword{marker} +\keyword{matrices,} +\keyword{maximum} +\keyword{measures} +\keyword{minimum} +\keyword{multiple} +\keyword{of} +\keyword{on} +\keyword{one} +\keyword{open} +\keyword{optimized} +\keyword{optimizing} +\keyword{or} +\keyword{part} +\keyword{perspectives} +\keyword{phenotypic} +\keyword{plant} +\keyword{precise} +\keyword{precomputed} +\keyword{project} +\keyword{provided} +\keyword{purpose} +\keyword{redundancy.} +\keyword{representative} +\keyword{representativeness,} +\keyword{resource} +\keyword{richness).} +\keyword{sample} +\keyword{simultaneously} +\keyword{so-called} +\keyword{source} +\keyword{subsets} +\keyword{the} +\keyword{to} +\keyword{together.} +\keyword{tool} +\keyword{traits} +\keyword{weighted} +\keyword{with} diff --git a/man/corehunter.Rd b/man/corehunter.Rd deleted file mode 100644 index 69337ab..0000000 --- a/man/corehunter.Rd +++ /dev/null @@ -1,65 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/corehunter.R -\docType{package} -\name{corehunter} -\alias{corehunter} -\title{Core Hunter 3} -\description{ -Core Hunter is a tool to sample diverse, representative subsets from large germplasm -collections, with minimum redundancy. Such so-called core collections have applications in plant -breeding and genetic resource management in general. Core Hunter can construct cores based on -genetic marker data, phenotypic traits or precomputed distance matrices, optimizing one of many -provided evaluation measures depending on the precise purpose of the core (e.g. maximum diversity, -representativeness, or allelic richness). In addition, multiple measures can be simultaneously -optimized as part of a weighted index to bring the different perspectives closer together. -The Core Hunter library is implemented in Java 8 as an open source project -(see \url{http://www.corehunter.org}). -} -\examples{ -\dontrun{ -# sample core based on genetic marker data (default format) -geno.file <- system.file("extdata", "genotypes.csv", package = "corehunter") -geno <- genotypes(file = geno.file, format = "default") -core <- sampleCore(geno) - -# sample core based on genetic marker data (biparental format) -geno.file <- system.file("extdata", "genotypes-biparental.csv", package = "corehunter") -geno <- genotypes(file = geno.file, format = "biparental") -core <- sampleCore(geno) - -# sample core based on genetic marker data (frequency format) -geno.file <- system.file("extdata", "genotypes-frequency.csv", package = "corehunter") -geno <- genotypes(file = geno.file, format = "frequency") -core <- sampleCore(geno) - -# sample core based on phenotypic traits -pheno.file <- system.file("extdata", "phenotypes.csv", package = "corehunter") -pheno <- phenotypes(file = pheno.file) -core <- sampleCore(pheno) - -# sample core based on precomputed distance matrix -dist.file <- system.file("extdata", "distances.csv", package = "corehunter") -dist <- distances(file = dist.file) -core <- sampleCore(dist) - -# sample core from genotypes with custom objective (allelic richness) -core <- sampleCore(geno, obj = objective("HE")) - -# sample core from genotypes with custom size and objective (representativeness) -core <- sampleCore(geno, obj = objective("AN", "MR"), size = 0.1) - -# sample core from genotypes with custom size and stop condition -core <- sampleCore(geno, size = 0.1, impr.time = 2) - -# sample core based on both genotypes and phenotypes -geno.pheno <- coreHunterData(geno, pheno) -core <- sampleCore(geno.pheno) -} - -} -\seealso{ -\code{\link{coreHunterData}}, \code{\link{genotypes}}, - \code{\link{phenotypes}}, \code{\link{distances}}, - \code{\link{sampleCore}}, \code{\link{evaluateCore}}, - \code{\link{objective}} -} From eb6fc8f7c1d72f89be1b9d7c8a6c3351b7da95d4 Mon Sep 17 00:00:00 2001 From: Herman De Beukelaer Date: Thu, 31 Aug 2023 13:34:30 +0200 Subject: [PATCH 2/6] Update package doc title --- R/corehunter-package.R | 2 +- man/corehunter-package.Rd | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/R/corehunter-package.R b/R/corehunter-package.R index 1cef453..8d2245f 100644 --- a/R/corehunter-package.R +++ b/R/corehunter-package.R @@ -1,5 +1,5 @@ #' @keywords internal -#' #' Core Hunter 3 (Test) +#' Core Hunter 3 #' #' Core Hunter is a tool to sample diverse, representative subsets from large germplasm #' collections, with minimum redundancy. Such so-called core collections have applications in plant diff --git a/man/corehunter-package.Rd b/man/corehunter-package.Rd index f5434fa..8ad6547 100644 --- a/man/corehunter-package.Rd +++ b/man/corehunter-package.Rd @@ -70,8 +70,6 @@ Other contributors: } } -\keyword{#'} -\keyword{(Test)} \keyword{(e.g.} \keyword{(see} \keyword{3} From 0b824771017f64991955b542130292a9d9a907c6 Mon Sep 17 00:00:00 2001 From: Herman De Beukelaer Date: Fri, 1 Sep 2023 14:50:47 +0200 Subject: [PATCH 3/6] Fix keywords --- R/corehunter-package.R | 3 +- man/corehunter-package.Rd | 100 ++++---------------------------------- 2 files changed, 12 insertions(+), 91 deletions(-) diff --git a/R/corehunter-package.R b/R/corehunter-package.R index 8d2245f..b02bfd8 100644 --- a/R/corehunter-package.R +++ b/R/corehunter-package.R @@ -1,4 +1,3 @@ -#' @keywords internal #' Core Hunter 3 #' #' Core Hunter is a tool to sample diverse, representative subsets from large germplasm @@ -11,6 +10,8 @@ #' The Core Hunter library is implemented in Java 8 as an open source project #' (see \url{http://www.corehunter.org}). #' +#' @keywords internal +#' #' @examples #' \dontrun{ #' # sample core based on genetic marker data (default format) diff --git a/man/corehunter-package.Rd b/man/corehunter-package.Rd index 8ad6547..ec21562 100644 --- a/man/corehunter-package.Rd +++ b/man/corehunter-package.Rd @@ -4,9 +4,17 @@ \name{corehunter-package} \alias{corehunter} \alias{corehunter-package} -\title{corehunter: Multi-Purpose Core Subset Selection} +\title{Core Hunter 3} \description{ -Core Hunter is a tool to sample diverse, representative subsets from large germplasm collections, with minimum redundancy. Such so-called core collections have applications in plant breeding and genetic resource management in general. Core Hunter can construct cores based on genetic marker data, phenotypic traits or precomputed distance matrices, optimizing one of many provided evaluation measures depending on the precise purpose of the core (e.g. high diversity, representativeness, or allelic richness). In addition, multiple measures can be simultaneously optimized as part of a weighted index to bring the different perspectives closer together. The Core Hunter library is implemented in Java 8 as an open source project (see \url{http://www.corehunter.org}). +Core Hunter is a tool to sample diverse, representative subsets from large germplasm +collections, with minimum redundancy. Such so-called core collections have applications in plant +breeding and genetic resource management in general. Core Hunter can construct cores based on +genetic marker data, phenotypic traits or precomputed distance matrices, optimizing one of many +provided evaluation measures depending on the precise purpose of the core (e.g. maximum diversity, +representativeness, or allelic richness). In addition, multiple measures can be simultaneously +optimized as part of a weighted index to bring the different perspectives closer together. +The Core Hunter library is implemented in Java 8 as an open source project +(see \url{http://www.corehunter.org}). } \examples{ \dontrun{ @@ -70,92 +78,4 @@ Other contributors: } } -\keyword{(e.g.} -\keyword{(see} -\keyword{3} -\keyword{8} -\keyword{Core} -\keyword{Hunter} -\keyword{In} -\keyword{Java} -\keyword{Such} -\keyword{The} -\keyword{\url{http://www.corehunter.org}).} -\keyword{a} -\keyword{addition,} -\keyword{allelic} -\keyword{an} -\keyword{and} -\keyword{applications} -\keyword{as} -\keyword{based} -\keyword{be} -\keyword{breeding} -\keyword{bring} -\keyword{can} -\keyword{closer} -\keyword{collections} -\keyword{collections,} -\keyword{construct} -\keyword{core} -\keyword{cores} -\keyword{data,} -\keyword{depending} -\keyword{different} -\keyword{distance} -\keyword{diverse,} -\keyword{diversity,} -\keyword{evaluation} -\keyword{from} -\keyword{general.} -\keyword{genetic} -\keyword{germplasm} -\keyword{have} -\keyword{implemented} -\keyword{in} -\keyword{index} \keyword{internal} -\keyword{is} -\keyword{large} -\keyword{library} -\keyword{management} -\keyword{many} -\keyword{marker} -\keyword{matrices,} -\keyword{maximum} -\keyword{measures} -\keyword{minimum} -\keyword{multiple} -\keyword{of} -\keyword{on} -\keyword{one} -\keyword{open} -\keyword{optimized} -\keyword{optimizing} -\keyword{or} -\keyword{part} -\keyword{perspectives} -\keyword{phenotypic} -\keyword{plant} -\keyword{precise} -\keyword{precomputed} -\keyword{project} -\keyword{provided} -\keyword{purpose} -\keyword{redundancy.} -\keyword{representative} -\keyword{representativeness,} -\keyword{resource} -\keyword{richness).} -\keyword{sample} -\keyword{simultaneously} -\keyword{so-called} -\keyword{source} -\keyword{subsets} -\keyword{the} -\keyword{to} -\keyword{together.} -\keyword{tool} -\keyword{traits} -\keyword{weighted} -\keyword{with} From a3fa4e3245d5b431bb7906bdb72b9c6a3b1483e2 Mon Sep 17 00:00:00 2001 From: Herman De Beukelaer Date: Fri, 1 Sep 2023 15:04:31 +0200 Subject: [PATCH 4/6] Update NEWS.md --- NEWS.md | 5 +++++ revdep/README.md | 28 ++++++++++++++-------------- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/NEWS.md b/NEWS.md index 7fa992d..bbe3299 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,6 +1,11 @@ Core Hunter 3 ============= +Version 3.2.3 (31/08/2023) +-------------------------- + + - Fixed broken package documentation due to Roxygen breaking change + Version 3.2.2 (02/05/2023) -------------------------- diff --git a/revdep/README.md b/revdep/README.md index 445a0e4..9b6166f 100644 --- a/revdep/README.md +++ b/revdep/README.md @@ -1,24 +1,24 @@ # Platform -|field |value | -|:--------|:--------------------------------------| -|version |R version 4.3.0 (2023-04-21 ucrt) | -|os |Windows 11 x64 (build 22621) | -|system |x86_64, mingw32 | -|ui |RStudio | -|language |(EN) | -|collate |Dutch_Belgium.utf8 | -|ctype |Dutch_Belgium.utf8 | -|tz |Europe/Brussels | -|date |2023-05-03 | -|rstudio |2023.03.0+386 Cherry Blossom (desktop) | -|pandoc |NA | +|field |value | +|:--------|:------------------------------------------| +|version |R version 4.3.0 (2023-04-21 ucrt) | +|os |Windows 11 x64 (build 22621) | +|system |x86_64, mingw32 | +|ui |RStudio | +|language |(EN) | +|collate |Dutch_Belgium.utf8 | +|ctype |nl_NL.UTF-8 | +|tz |Europe/Brussels | +|date |2023-09-01 | +|rstudio |2023.06.2+561 Mountain Hydrangea (desktop) | +|pandoc |3.1.2 @ C:\PROGRA~1\Pandoc\pandoc.exe | # Dependencies |package |old |new |Δ | |:-----------|:-----|:-----|:--| -|corehunter |3.2.1 |3.2.2 |* | +|corehunter |3.2.2 |3.2.3 |* | |naturalsort |0.1.3 |0.1.3 | | |rJava |1.0-6 |1.0-6 | | From 986531cec6450d0c806d88bdc474f1569fb7d35e Mon Sep 17 00:00:00 2001 From: Herman De Beukelaer Date: Fri, 1 Sep 2023 15:50:38 +0200 Subject: [PATCH 5/6] Update CRAN submission --- CRAN-SUBMISSION | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CRAN-SUBMISSION b/CRAN-SUBMISSION index 4208d60..f463ff4 100644 --- a/CRAN-SUBMISSION +++ b/CRAN-SUBMISSION @@ -1,3 +1,3 @@ -Version: 3.2.2 -Date: 2023-05-11 15:37:39 UTC -SHA: 22319bdfde9e607e74ea71381d8025fb5425c474 +Version: 3.2.3 +Date: 2023-09-01 13:06:53 UTC +SHA: a3fa4e3245d5b431bb7906bdb72b9c6a3b1483e2 From c36918fef6847b4e58d801f11b4a4cdd4cdd9da9 Mon Sep 17 00:00:00 2001 From: Herman De Beukelaer Date: Fri, 1 Sep 2023 16:07:57 +0200 Subject: [PATCH 6/6] Use fast mode for most sampling tests to avoid CRAN parallel CPU time check issues --- tests/testthat/testExecution.R | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/tests/testthat/testExecution.R b/tests/testthat/testExecution.R index ffb392d..3b49284 100644 --- a/tests/testthat/testExecution.R +++ b/tests/testthat/testExecution.R @@ -85,7 +85,7 @@ test_that("seed is respected (fast mode)", { expect_true(all(sapply(cores, function(core){all.equal(core, cores[[1]])}))) }) -test_that("seed is respected (multi-objective, with normalization)", { +test_that("seed is respected (multi-objective, with normalization, fast mode)", { geno <- genotypeData() obj <- list( objective("EN", "MR"), @@ -93,12 +93,12 @@ test_that("seed is respected (multi-objective, with normalization)", { ) cores <- lapply(1:5, function(i){ set.seed(42) - naturalsort(sampleCore(geno, obj, size = 2, steps = 10)$sel) + naturalsort(sampleCore(geno, obj, size = 2, steps = 5000, mode = "fast")$sel) }) expect_true(all(sapply(cores, function(core){all.equal(core, cores[[1]])}))) }) -test_that("seed is respected (multi-objective, no normalization)", { +test_that("seed is respected (multi-objective, no normalization, fast mode)", { geno <- genotypeData() obj <- list( objective("EN", "MR"), @@ -106,7 +106,7 @@ test_that("seed is respected (multi-objective, no normalization)", { ) cores <- lapply(1:5, function(i){ set.seed(42) - naturalsort(sampleCore(geno, obj, size = 2, steps = 10, normalize = FALSE)$sel) + naturalsort(sampleCore(geno, obj, size = 2, steps = 5000, mode = "fast", normalize = FALSE)$sel) }) expect_true(all(sapply(cores, function(core){all.equal(core, cores[[1]])}))) }) @@ -119,44 +119,44 @@ test_that("fixed ids are respected", { # on index always <- 1:3 - core <- sampleCore(geno, size = 3, time = 1, always.selected = always) + core <- sampleCore(geno, size = 3, time = 1, mode = "fast", always.selected = always) expect_equal(core$sel, c("Alice", "Bob", "Dave")) # on id always <- c("Alice", "Dave", "Bob") - core <- sampleCore(geno, size = 3, time = 1, always.selected = always) + core <- sampleCore(geno, size = 3, time = 1, mode = "fast", always.selected = always) expect_equal(core$sel, c("Alice", "Bob", "Dave")) # 2: again by excluding others # on index never <- 4:5 - core <- sampleCore(geno, size = 3, time = 1, never.selected = never) + core <- sampleCore(geno, size = 3, time = 1, mode = "fast", never.selected = never) expect_equal(core$sel, c("Alice", "Bob", "Dave")) # on id never <- c("Bob'", "Carol") - core <- sampleCore(geno, size = 3, time = 1, never.selected = never) + core <- sampleCore(geno, size = 3, time = 1, mode = "fast", never.selected = never) expect_equal(core$sel, c("Alice", "Bob", "Dave")) # 3: fix some always <- c(2,5) - core <- sampleCore(geno, size = 3, time = 1, always.selected = always) + core <- sampleCore(geno, size = 3, time = 1, mode = "fast", always.selected = always) expect_true("Dave" %in% core$sel) expect_true("Carol" %in% core$sel) ### again with A-NE objective - core <- sampleCore(geno, obj = objective("AN"), size = 3, time = 1, always.selected = always) + core <- sampleCore(geno, obj = objective("AN"), size = 3, time = 1, mode = "fast", always.selected = always) expect_true("Dave" %in% core$sel) expect_true("Carol" %in% core$sel) # 4: exclude some never <- c(2,5) - core <- sampleCore(geno, size = 3, time = 1, never.selected = never) + core <- sampleCore(geno, size = 3, time = 1, mode = "fast", never.selected = never) expect_false("Dave" %in% core$sel) expect_false("Carol" %in% core$sel) # 5: fix and exclude one always <- 1 never <- 2 - core <- sampleCore(geno, size = 3, time = 1, always.selected = always, never.selected = never) + core <- sampleCore(geno, size = 3, time = 1, mode = "fast", always.selected = always, never.selected = never) expect_true("Alice" %in% core$sel) expect_false("Dave" %in% core$sel) @@ -166,13 +166,7 @@ test_that("fixed ids are respected", { objective("AN", "MR") ) always <- c(2,5) - core <- sampleCore(geno, obj = obj, size = 3, time = 1, always.selected = always) - expect_true("Dave" %in% core$sel) - expect_true("Carol" %in% core$sel) - - # 7: fast mode - always <- c(2,5) - core <- sampleCore(geno, size = 3, time = 1, always.selected = always, mode = "f") + core <- sampleCore(geno, obj = obj, size = 3, time = 1, mode = "fast", always.selected = always) expect_true("Dave" %in% core$sel) expect_true("Carol" %in% core$sel)