Skip to content

Releases: hreinwald/drc

3.3.2

26 May 15:24

Choose a tag to compare

New Features

  • Enhanced plot.drc(): added errbar.lwd parameter for independent control of error bar line width in type = "bars" plots. When NULL (default), error bars inherit the line width from the lwd argument or fall back to par("lwd").

Bug Fixes

  • Fixed update.drc() to fall back to stored data (object$origData) when call$data cannot be resolved in the calling frame, enabling use of update() inside lapply(), purrr::map(), and other functional programming contexts.
  • Fixed vcDisc() to validate that the inverse Hessian has non-negative variances before returning, preventing invalid variance-covariance matrices from propagating downstream.

Changes

  • Tightened default relTol in drmc() from 1e-7 to 1e-10 for improved cross-platform reproducibility of optimization results.
  • Added comparative analysis vignette (comparative-analysis.Rmd) documenting differences between hreinwald/drc and the original DoseResponse/drc package.
  • Added "Articles" section to pkgdown navigation in _pkgdown.yml with categorized guides and technical reports.
  • Fixed flaky maED tests that depended on platform-specific convergence behavior.
  • Added test suites for boxcox.drc (functional programming context), update.drc (data resolution fallback), and vcDisc (singular Hessian handling).

3.3.1

13 Apr 15:24

Choose a tag to compare

drc 3.3.1

New Features

  • Enhanced plot.drc(): error bars in type = "bars" plots now match curve colors by default. Added errbar.col parameter to allow manual control of error bar colors. Set errbar.col = "black" to restore the previous behavior of black error bars.

Bug Fixes

  • Fixed logistic() model ED calculation with type="absolute": the edfct function now correctly handles absolute-to-relative conversion without applying the incorrect p-swap from EDhelper(). The logistic model has opposite b-sign convention from log-logistic (b < 0 means increasing, not decreasing), so EDhelper's p-swap for b < 0 would incorrectly swap ED values. The fix uses inline absolute-to-relative conversion (p = 100·(d−respl)/(d−c)) for absolute type and p = respl directly for relative type.

  • Fixed model-level edfct derivatives for absolute ED type in braincousens(), fplogistic(), llogistic(), llogistic2(), lnormal(), weibull1(), and weibull2(): when type = "absolute", the gradient functions previously set ∂ED/∂c and ∂ED/∂d to 0, which was incorrect because the absolute-to-relative conversion makes p a function of c and d. The chain rule requires non-zero partials. Now compute ∂ED/∂c and ∂ED/∂d via central differences on a closure that captures the chain-rule contribution through the full ED computation path.

3.3.0.03

08 Apr 06:46
1127b01

Choose a tag to compare

3.3.0.03 Pre-release
Pre-release

Bug fix

  • Fixed ED() for exponential decay models (EXD.2, EXD.3, AR.2, AR.3, W1.x, W2.x) with two fixed parameters: when only one parameter is estimated (1×1 variance-covariance matrix), the function previously failed with "incorrect number of dimensions" errors. Enhanced ED.drc to defensively coerce scalar/vector vcov inputs to proper matrices and to always strip names from gradients for consistent matrix algebra. This fix now allows retrieving ED values from exponential decay models with two fixed parameters, which was previously impossible.

  • Fixed gradient handling in ED() to ensure model-specific derivative functions always return unnamed numeric vectors, preventing dimension errors in delta-method standard error calculations.

What's Changed

  • Add comprehensive README and refactor poorly coded R functions in #1
  • Remove /tests folder (development artifacts) in #2
  • Update .gitignore and .Rbuildignore with standard R package settings in #3
  • Remove obsolete base-level files in #4
  • First dev merge to main in #5
  • Add news file entry summarizing all fork changes from upstream in #6
  • Summarize all fork changes in news file in #7
  • Fix DESCRIPTION format: add Encoding, fix Authors@R, remove deprecated fields in #8
  • Add roxygen2 documentation to all R source files and fix typos in #9
  • Clean up drm(): remove ~900 lines of dead code, fix silent bypass of safety check in #10
  • Add missing news entries for PRs #8, #9, #10 in #11
  • Add roxygen2 documentation and fix typos in R source files in #12
  • Enhance DESCRIPTION file and improve R documentation in #13
  • Fix cedergreen2() edfct/maxfct parameter binding to helper functions in #14
  • Add @exportS3Method tags to S3 methods missing export annotations in #15
  • Fix double-escaped percent signs in roxygen docs causing Rd parse warnings in #17
  • Enhance documentation, refactor Cedergreen model, and update exports in #18
  • Restore NAMESPACE exports wiped by roxygen2 regeneration in #19
  • Verify drm() output matches drm_legacy() with comprehensive tests in #20
  • Add roxygen2 documentation for drm_legacy() as internal in #21
  • Update README: Add CRS.4/CRS.5/CRS.6 models and fix dependencies in #22
  • Fix mselect lack-of-fit always zero and handle negative F statistics in anova in #23
  • Add Hannes Reinwald as package author in #25
  • Add missing news entries for dev branch changes (2026-03-09 through 2026-03-11) in #26
  • Fix R package dependency warnings for data.table, dplyr, and drcData in #27
  • Fix S3 method consistency warnings from devtools::check() in #28
  • Fix escaped LaTeX specials (&) warnings in Rd documentation in #29
  • Standardize R script file extensions to uppercase .R in #30
  • Fix duplicate Rd aliases and unstated dependencies in examples in #31
  • Enhance package startup message with citations, developer credits, and issue reporting in #32
  • Add comprehensive test coverage for core drc functions in #34
  • Fix test calling anova() on single drc model that breaks covr::package_coverage() in #36
  • Fix 23 test failures: source robustness improvements and test corrections in #37
  • Fix NaN warning in summary.drc for robust median and fix empty anova p-value test in #38
  • Fix inherits() bug in mselect, harden F-test edge cases, add input validation in #39
  • Fix division-by-zero bugs in Rsq and absToRel, remove dead code in #40
  • Fix unsafe global state, ignored parameters, and division by zero in core functions in #41
  • Remove drcData package dependency in #42
  • Fix devtools::check() errors, warnings, and notes in drc package in #43
  • Review and improve dataset .Rd documentation files in #44
  • Add Bootstrap 5 configuration and update maintainer list in #46
  • Roxygen2 documentation audit: fix undocumented args, remove dontrun/donttest, fix broken examples in #45
  • Fix Rd comment warning by escaping %*% operator in finney71.Rd in #47
  • Fix pkgdown build error when docs/ directory exists in #48
  • Add NEC models vignette documenting the four NEC function variants in #49
  • Add vignette access instructions to README in #50
  • Add comprehensive dose-response workflow vignette in #51
  • Fix vignettes excluded from package build and incorrect mselect() usage in #52
  • Restructure news file: combine same-date entries, expand line limit to 180 chars in #54
  • Fix pkgdown URL and GitHub Pages deployment path in #55
  • Add GitHub Actions workflow to build and commit pkgdown site in #56
  • Rebuild pkgdown site with complete reference index and fixed example plots in #57
  • Update GitHub Actions to Node.js 24 compatible versions in #59
  • Replace Travis CI badges with working badge set; add R-CMD-check workflow in #58
  • Add test coverage workflow for Codecov integration in #60
  • Fix codecov upload by downgrading codecov-action from v5 to v4 in #61
  • Add unit tests for weibull2.R achieving 100% coverage in #66
  • Add comprehensive unit tests achieving 100% coverage for arandaordaz function in #68
  • Add comprehensive unit tests for braincousens functions - achieve 100% coverage in #70
  • Add comprehensive unit tests for cedergreen, cedergreen.ssf, and CRS.6 functions in #69
  • Add 100% test coverage for maED, ED.drc, ED_robust; fix three bugs found during testing in #71
  • Fix ED.drc.Rd documentation parse failure from double-escaped percent signs in #72
  • Add path filters to GitHub Actions workflows for targeted execution in #74
  • Add CITATION.cff file for DOI 10.1371/journal.pone.0146021 in #80
  • Add 100% coverage test suite for findbe.R in #76
  • Add 100% test coverage for CIcompX.R; fix CIcomp single-EDvec bug in #75
  • Add unit tests for siInner and fieller to achieve 100% coverage in #77
  • Add comprehensive testthat suite for lnormal.R (edfct and all related functions) in #78
  • Add test suite for logistic.R edfct and related functions; remove dead code in #79
  • Export low-coverage functions table to tests/ in #83
  • Add comprehensive test suite for llogistic2.R (100% coverage) in #87
  • Fix ED parameter bug in simFct and add 100% coverage test suite in #85
  • Add unit tests for neill.test achieving 100% code coverage in #88
  • Add 100% test coverage for mrdrm.R and fix EDboot robustness in #86
  • Add 100% test coverage for gompertz() and gompertz.ssf(), remove dead code in #90
  • Add test suite for isobole() with 100% code coverage in #92
  • Add unit tests for gaussian() and gaussian.ssf() achieving 100% coverage in #89
  • Add comprehensive test suite for lgaussian.R achieving 100% code coverage in #91
  • Add unit tests for fplogistic() and FPL.4() with 100% code coverage in #93
  • Add 100% test coverage for mixture(), hewlett(), voelund(); fix voelund bug and remove dead code in #94
  • Fix identical() integer/double bug in boxcox.drc and add 100% test coverage in #95
  • Add 100% test coverage for sandwich.R and remove dead code in #96
  • Add comprehensive test suite for ursa.R achieving 100% code coverage in https://github.c...
Read more

3.3.0.02

19 Mar 17:20
fdebfd7

Choose a tag to compare

3.3.0.02 Pre-release
Pre-release

Release Notes: drc 3.3.0.02

Release Date: March 9, 2026

Overview

Version 3.3.0.02 is a maintenance release focused on bug fixes and code quality improvements. This release addresses 17 critical issues in the ucedergreen() function, improves error handling across multiple core functions, and adds comprehensive test coverage.

Key Highlights

Critical Bug Fixes

  • Fixed 17 issues in ucedergreen() function - Resolved model formula errors, signature mismatches, unsafe parameter handling, and broken self-starter functionality
  • Enhanced SE calculation in ED() - Corrected standard error estimation for absolute type effective dose calculations
  • Improved boundary detection in MAX() - Fixed numerical comparison issues with named return values and boundary tolerance

Improvements

  • Added comprehensive test suites for 12+ core functions including summary.drc, searchdrc, backfit, MAX(), and PR()
  • Enhanced documentation for Weibull starting value methods across all wrapper functions
  • Code cleanup - Removed dead code (iband.R), unused files, and build scripts

Additional Fixes

  • Fixed PR() argument handling for single-curve models
  • Corrected inverted trace/silent logic in drmOpt()
  • Fixed regex error and convergence behavior in searchdrc()
  • Updated citation URL configuration

Installation

Install the latest development version from GitHub:

devtools::install_github("hreinwald/drc@main_beta")

Full Changelog

For detailed information about all changes, see NEWS.md.

Credits

Maintained by Christian Ritz, Jens C. Streibig, and Hannes Reinwald.

For bug reports and feature requests, visit: https://github.com/hreinwald/drc/issues