simFastBOIN 2.0.0

The first release since 1.3.2, and a breaking one. Versions 1.4.0 and 1.5.0 were development versions on GitHub and were never released; their entries are kept below because the changes they describe are all part of this release. Anyone upgrading from 1.3.2 should read the 1.4.0 entry, which lists the renamed functions and the corrected defects.

This section covers three design options requested for a quality control review. Every new option is off by default, so a simulation run with version 1.4.0 arguments produces exactly the same trials, selections and summary figures. Two names in the returned objects did change, and are listed under their respective headings below: overdose60 and overdose80 moved into the new overdose component, and one reason code was renamed.

Staying on one DLT out of three

Bounding the MTD by a stated DLT rate

Exposure to overly toxic doses

Choosing a de-escalation boundary directly

Printing

Documentation

The 3+3 design as a comparator

Validation

simFastBOIN 1.4.0

This is a substantial revision. The simulation engine has been rewritten in C++, the user-facing functions have been renamed, and several defects that affected numerical results have been corrected. Results obtained with version 1.3.2 are not reproduced by this version, even with the same seed.

Exact agreement with the BOIN package

The engine now draws one uniform variate per patient, in enrollment order, and applies the decision rules in the same order as BOIN::get.oc(). With the same seed and matching arguments the two implementations agree trial by trial rather than only on average. The test suite checks this directly against BOIN::get.oc() and BOIN::get.boundary() when the BOIN package is installed.

Version 1.3.2 claimed in its README that random number generation was the same as that of the BOIN package when the seed was fixed. That claim was incorrect, because trials were generated across trials rather than one at a time, and it has been removed.

Corrected defects

Renamed functions

The old names remain available and issue a deprecation warning, but they return the value of the replacement function, which is not the value returned by version 1.3.2. See ?"simFastBOIN-deprecated".

Version 1.3.2 Version 1.4.0
get_boin_boundary() boin_lambda(), and boin_boundary() for the integer boundaries
get_boin_decision() boin_decision_table()
get_boin_stopping_boundaries() boin_boundary(extrasafe = TRUE)
get_pts_and_tox() boin_simulate()
isotonic_regression() boin_isotonic()
select_mtd() boin_select_mtd()

sim_boin() and sim_boin_multi() keep their names.

Changed interfaces

New

Dependencies

Performance

The C++ engine replaces the vectorised R implementation, and MTD selection no longer calls out to R once per trial. For five doses, 20 cohorts of three, n_earlystop = 18 and 10000 simulated trials, one measurement gave 9.98 seconds elapsed for BOIN::get.oc() against 0.07 seconds for sim_boin(). The ratio depends on the design and on the machine, and the README carries the code that reproduces the measurement.

simFastBOIN 1.3.2

New Features

Customizable Safety and Toxicity Thresholds

Documentation Improvements

Breaking Changes

None. All existing code continues to work as before. The new p_saf and p_tox parameters have sensible defaults (0.6 * target and 1.4 * target respectively) that match the standard BOIN methodology, ensuring full backward compatibility.

Internal Changes


simFastBOIN 1.3.1

Bug Fixes

No functional changes. All code and features remain identical to version 1.3.0.


simFastBOIN 1.3.0

New Features

Progress Message Control

Documentation Improvements

Breaking Changes

None. All existing code continues to work as before. The new verbose parameter defaults to FALSE, which changes the default behavior to silent mode, but all functionality remains identical.

Migration Guide

For users who prefer the previous behavior with progress messages:

# Add verbose = TRUE to see progress messages
result <- sim_boin(
  n_trials = 10000,
  target = 0.30,
  p_true = p_true,
  n_cohort = 48,
  cohort_size = 3,
  verbose = TRUE,  # Add this line
  seed = 123
)

simFastBOIN 1.2.1

New Features: Multi-Scenario Simulation and HTML Output

New Multi-Scenario Simulation Function

Enhanced Print Methods: HTML Table Output

Documentation and Output Formatting Enhancements

Comprehensive roxygen2 Documentation

All changes are backward compatible. New parameters have sensible defaults.


simFastBOIN 1.2.0

Bug Fixes and Compatibility

BOIN Package Compatibility

Default Parameter Corrections

Performance Optimizations

Vectorized Implementation

DLT Generation Optimization

MTD Selection Enhancement

Internal Improvements

Documentation Updates

Breaking Changes

None. The changes restore compatibility and fix defaults to match standard BOIN behavior. Users running with explicit parameters should see no change.

Migration Guide

For users upgrading from simFastBOIN 1.1.0:

If you were using defaults:

# Old code (simFastBOIN 1.0.0)
result <- sim_boin(n_trials = 10000, target = 0.30, p_true = p_true, ...)

# New code (simFastBOIN 1.2.0) - No change needed!
# Default behavior now matches BOIN package
result <- sim_boin(n_trials = 10000, target = 0.30, p_true = p_true, ...)

If you were using custom parameters:

# Explicitly setting these will ensure consistent behavior across versions
result <- sim_boin(
  n_trials = 10000,
  target = 0.30,
  p_true = p_true,
  min_mtd_sample = 1,        # Now the default
  n_earlystop_rule = "with_stay",  # Now the default
  ...
)

simFastBOIN 1.0.0

Initial Release

Core Features

Main Functions

Performance

Documentation