Changelog
Source:NEWS.md
serodynamics (development version)
New features
- Added Model 2a, a JAGS extension of the Chapter 1 antibody-kinetics model that introduces same-parameter cross-biomarker covariance in subject-level kinetic parameters while leaving the existing within-biomarker covariance blocks unchanged. The Chapter 1 model is recovered when the new cross-biomarker covariances are zero. (#245)
- Added developer-facing utilities for fitting, validating, and comparing Model 2a, including
run_mod_2a(),compare_mod_2a(), simulation helpers, recovery/nesting checks, and summaries of cross-biomarker covariance and correlation. (#245) - Including optional population parameters as attributes in run_mod output. (#141)
Developer-facing changes
- Documented in
CLAUDE.md,.github/copilot-instructions.md, and a note in.lintr.Rthatdplyr::*_join()calls must specify therelationshipargument (for examplerelationship = "many-to-one"), so an unexpected many-to-many match errors out instead of silently duplicating rows. - The test suite now sets
options(lifecycle_verbosity = "error")(viatests/testthat/setup.R), so tidyverse lifecycle deprecations - including soft deprecations such as using the.datapronoun in a tidy-selection context - fail the tests instead of passing silently. - Updated the internals of
calc_fit_mod()to use tidy-selection (all_of()and bare column-name strings) instead of the.datapronoun inselect(),.by, andpivot_wider()contexts, removing a soft deprecation surfaced by the stricter test option above. No change to behavior or output. - The
Claude Code Reviewworkflow now skips (rather than fails) when a bot triggered the run, so a commit pushed by@claudeor the Copilot agent no longer produces a red review check. - The
Claude Code Reviewworkflow now posts a fresh review comment per run and collapses the superseded ones asOUTDATED, so each push surfaces as new PR activity while older reviews fold up out of the way.@claudetask comments are left untouched. - Added
CLAUDE.mdand expanded the Code Style Guidelines in.github/copilot-instructions.mdto direct reviewers (human and AI) to flag unnecessarily convoluted or non-idiomatic code - in particular data-masking used in tidy-selection contexts andif/elsebranching that only varies which columns are selected, renamed, or joined. - Clarified Code Style Guidelines in
.github/copilot-instructions.md: the UCD-SeRG Lab Manual takes precedence over the tidyverse style guide where they conflict, and functions should end with an explicitreturn()call per the lab manual / Google R Style Guide. This closes a gap where@claudereviews were flagging explicit returns as non-conforming.
serodynamics 0.1.0
CRAN release: 2026-06-02
This is the first CRAN release of serodynamics, a package for Bayesian hierarchical modeling of antibody kinetics from longitudinal serological data. It serves as the upstream companion to the serocalculator package.
New features
- Reorganized pkgdown documentation with new “Getting Started” guide demonstrating main API workflow, organized articles into “Get started” and “Developer Notes” sections (#73).
- Replacing old
nepal_sees_jags_outputdata object with newrun_mod()output (#102) - Including
fitted_residualsvalues as data frame attribute inrun_mod()output. (#101) - Adding
classassignment torun_mod()output (#76) - Making
prep_priors()allow for modifiable inputs inrun_mod()(#78) - Exported
run_mod()function (#22) - Added attributes as a return to the
run_mod()function (#24) - Changes to
run_mod()output:- Taking out
include_subsas an input option, default will include all individualswith_post - all subjects now optionally included in
curve_paramsoutput component, as specified by argumentinclude_subs
- Taking out
- A new
run_mod()function that runs jags with option of stratification included. (#14) - Diagnostic
plot_jags_Rhat()function to produce R-hat dotplots with stratification (#67) - Added
plot_summ()function for summarizing estimates in a table (#74) - Diagnostic
plot_jags_trace()function to create a trace plot with stratifications (#64) - Diagnostic
plot_jags_effect()function to produce effective sample size plots with stratification (#66) - Diagnostic
plot_jags_dens()function to produce density plots with stratification (#27) - Added
plot_predicted_curve()with support for faceting by multiple IDs (#68) - Fixing
nepal_seesSEES data and added jags_post for SEES (#63) - Added
nepal_seesSEES data set data folder and documentation (#41) - Added
postprocess_jags_output()to API (#33) - Added
initsfunction()to API (#37) - Added participant IDs as names to
nsmplelement ofprep_data()output (#34) - Made “newperson” optional in
prep_data()(#73) - Added
initsfunction()to API (#37) - Added
as_case_data()to API (#31) -
as_case_data()now creates columnvisit_num(#47, #50) - Added
prep_priors()to API (#30) - Added
autoplot()method forcase_dataobjects (#28) - Added examples for
sim_pop_data(),autoplot.case_data()(#18) - Changed package name to serodynamics. (#19, #20)
Bug fixes
- Fixed
dplyr::as_tibble()references totibble::as_tibble()inpost_summ()andrun_mod(), sinceas_tibble()is exported from thetibblepackage, notdplyr.
Developer-facing changes
- Added platform-aware snapshots and darwin-specific variants for macOS platform differences (#73).
- Updated Copilot instructions to encourage code decomposition and avoid copy-pasting substantial code chunks.
- Expanded
.github/copilot-instructions.mdwith additional guidance on evidence-based claims, Quarto markdown/cross-reference conventions, R style practices, and phrase-level line-break formatting for source text. - Added R 4.5+ snapshot variants to handle the changed attribute ordering in
as_case_data(), ensuring test suite compatibility with R 4.5 and later (#109). - Added dev container configuration for persistent, cached development environment that includes R, JAGS, and all dependencies preinstalled, making Copilot Workspace sessions much faster.
- Added
.github/workflows/copilot-setup-steps.ymlGitHub Actions workflow to automate environment setup for GitHub Copilot coding agent, preinstalling R, JAGS, and all dependencies. - Switched ggmcmc dependency from GitHub dev version to CRAN v1.5.1.2 (#135)
- vectorized
ab()function (#116) - Added
lintr::undesirable_function_linter()to.lintr.R(#81) - Reformatted
.lintras R file (following https://github.com/r-lib/lintr/issues/2844#issuecomment-2776725389) (#81) - Set shortcut pipe to be base pipe (#80)
- Added snapshot test for
run_mod() - Clarified
prep_data()internals using dplyr (#34) - Removed “.R” suffix from jags model files to prevent them from getting linted as R files (#34)
- Added
dobson.Rmdminimal vignette (#36) - Overall cleaning to get checks working (#28)
- Added units tests for
prep_data(),sim_case_data()(#18) - Added various GitHub Actions (#10, #15, #18)