← Back to all sparks
S

selection.index

INFRA · APIS
Velocity0.0

Analysis of Selection Index in Plant Breeding

A dormant plant-breeding package returns as a genomic selection index suite

plant-breedingselection-indexgenomic-selectionrcppbreaking-changessimulation
Current state
selection.index computes selection indices for plant breeding — weighting several traits into one number breeders can rank on. After two years of silence it shipped 2.0.0 in March 2026, and the package is barely recognisable: snake_case throughout, an Rcpp and RcppEigen computational core, and index families for genomic data, marker data, multi-stage trials and constrained genetic gain sitting beside the original phenotypic ones.
Where it's heading
The first version series added one function at a time — combinatorial indices, then genetic advance, then mean performance under randomised block designs — against a fixed phenotypic framing. Version 2.0.0 abandons that framing rather than extending it. Genomic and marker information become inputs the package understands, multi-cycle simulation becomes a built-in toolset, and the old combinatorial entry points are replaced by a named lpsi(). The 2.0.1 follow-up is entirely CI and numerical-stability work, which reads like a maintainer bracing a much larger surface.
Prediction
A seventeen-runner CI matrix mirroring every CRAN check flavour, added days after 2.0.0, says the immediate concern is keeping a compiled multi-family package green rather than adding to it. Expect stabilisation releases before anything new.

Recent moves

  1. 5mo ago

    CI expanded to 17 runners after the 2.0.0 rewrite

    Test-side stabilisation nine days after a compiled rewrite: eigen() returning complex values on macOS ARM64 in the ppg_esim tests, spell-checking in CI, and a runner matrix mirroring every official CRAN check flavour.

    View source ↗
  2. 5mo ago

    Genomic, marker and multi-stage selection indices on an Rcpp core

    ⚡ SPARK

    The release that ends the package's dormancy and redefines it. Every user-facing function is renamed to snake_case, the computation moves to Rcpp and RcppEigen, and whole new index families arrive for genomic data, marker data, multi-stage trials and constrained gain — none of which the phenotypic-only original could express.

    View source ↗
  3. 6mo ago

    Unspecified general performance improvements

    A one-line note claiming overall performance gains and nothing else. It arrives after twenty-eight months of silence and five weeks before the 2.0.0 rewrite, so it reads as the first sign of life rather than a release of substance.

    View source ↗
  4. 2y ago

    Mean performance for randomised block designs

    meanPerformance() computes trait means from randomised block design data, the trial layout most of this package's users work in. The last release before the package went quiet for over two years.

    View source ↗
  5. 3y ago

    sel.index() and sel.score.rank() removed for comb.indices()

    Two exported functions are deleted to simplify the path through comb.indices() — a small precedent for the wholesale entry-point replacement that 2.0.0 would carry out four years later.

    View source ↗
  6. 4y ago

    Genetic advance calculation added

    gen.advance() computes the expected genetic gain from applying an index, closing the loop between constructing one and knowing what it buys. Typical of the one-function-per-release pace of the 1.x series.

    View source ↗