Skip to contents

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)

Bug fixes

  • run_mod()’s fitted_residuals attribute now covers all observations across all strata (previously only the last stratum was retained) and always includes a Stratification column ("None" when unstratified). (#240)

Developer-facing changes

  • Documented in CLAUDE.md, .github/copilot-instructions.md, and a note in .lintr.R that dplyr::*_join() calls must specify the relationship argument (for example relationship = "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") (via tests/testthat/setup.R), so tidyverse lifecycle deprecations - including soft deprecations such as using the .data pronoun 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 .data pronoun in select(), .by, and pivot_wider() contexts, removing a soft deprecation surfaced by the stricter test option above. No change to behavior or output.
  • The Claude Code Review workflow now skips (rather than fails) when a bot triggered the run, so a commit pushed by @claude or the Copilot agent no longer produces a red review check.
  • The Claude Code Review workflow now posts a fresh review comment per run and collapses the superseded ones as OUTDATED, so each push surfaces as new PR activity while older reviews fold up out of the way. @claude task comments are left untouched.
  • Added CLAUDE.md and expanded the Code Style Guidelines in .github/copilot-instructions.md to direct reviewers (human and AI) to flag unnecessarily convoluted or non-idiomatic code - in particular data-masking used in tidy-selection contexts and if/else branching 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 explicit return() call per the lab manual / Google R Style Guide. This closes a gap where @claude reviews 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_output data object with new run_mod() output (#102)
  • Including fitted_residuals values as data frame attribute in run_mod() output. (#101)
  • Adding class assignment to run_mod() output (#76)
  • Making prep_priors() allow for modifiable inputs in run_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_subs as an input option, default will include all individuals with_post
    • all subjects now optionally included in curve_params output component, as specified by argument include_subs
  • 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)
  • Fixingnepal_sees SEES data and added jags_post for SEES (#63)
  • Added nepal_sees SEES 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 nsmpl element of prep_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 column visit_num (#47, #50)
  • Added prep_priors() to API (#30)
  • Added autoplot() method for case_data objects (#28)
  • Added examples for sim_pop_data(), autoplot.case_data() (#18)
  • Changed package name to serodynamics. (#19, #20)

Bug fixes

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.md with 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.yml GitHub 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 .lintr as 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.Rmd minimal 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)

serodynamics 0.0.0

Started development.