start_strategy = "legacy_1.2.1": data-dependent
BM/BMM starting values following the mvMORPH 1.2.1 development initializer used
for the cached vignettes (including the singleton safeguard added after the
CRAN 1.2.1 release), supplied to the
installed mvMORPH through start. This establishes an explicit initialization
baseline without pinning or modifying mvMORPH. Set start_strategy = "native"
to use mvMORPH's own initialization (required for EmpBayes). Explicit start
and grid.search = FALSE take precedence. Results and fitted models record
the requested/actual strategy and mvMORPH version. The compatibility policy
retains the older strategy's scale dependence, random second-tip selection
for singleton regimes, and convergence limitations. Reproducing the cached
jaw sweep also requires its sequential set.seed(1) workflow; a standalone
threshold run has a different random state.progress on or off now preserves the same fitting random sequence
and results for the same seed and search settings. Background serial fits
continue the caller's random stream, including draws consumed before a fit
fails; parallel fits use the same per-item streams as the non-progress path.num_cores = 1. Concurrent candidate and IC-weight fits request one
numerical thread per worker using startup settings and RhpcBLASctl runtime
controls. Worker pools are refreshed and cleaned up so their thread settings
do not carry over into later stages or the caller's Future plan.CITATION.cff metadata for GitHub citations and Zenodo
release archiving, with the in-press package paper as the preferred citation.
The file is excluded from the R source-package build.CITATION.cff.Indexed predictor terms now require one column each. The previously working
trait_data[, 1:2] ~ trait_data[, 3:4] shorthand is rejected. Use
trait_data[, 1:2] ~ trait_data[, 3] + trait_data[, 4], or preferably named
columns: cbind(y1, y2) ~ x1 + x2. Multiple predictors remain supported.
Increased the minimum supported R version from 4.1 to 4.2.
Search defaults are now min_descendant_tips = 10 and
shift_acceptance_threshold = 20, matching the focal settings of Berv et al.
(2026). These defaults can change search results when arguments are omitted.
Searches with IC = "BIC" now default to method = "LL". An explicitly
supplied method takes precedence; GIC searches retain the mvgls() default.
Removed plot_ic_acceptance_matrix(). For a bifrost_search or compatible
search-result list, use plot(icTrajectory(x)). Legacy callers using a raw
two-column matrix_data object can migrate with:
legacy <- list(
baseline_ic = baseline_ic,
IC_used = "GIC",
model_fit_history = list(ic_acceptance_matrix = matrix_data)
)
plot(icTrajectory(legacy))
Plotting arguments map from plot_title to main,
plot_rate_of_improvement to show_delta, and rate_limits to
delta_limits. Supply baseline_ic to icTrajectory().
Vignettes and empirical datasets are now distributed through the package
website rather than the CRAN package. Replace former
system.file("extdata", ...) paths with bifrost_example_file(). The first
uncached request downloads the checksum-verified artifact tracked on GitHub
main; subsequent calls use the verified cache unless refresh = TRUE.
Installation, attachment, and package examples do not require these downloads.
runSearchTuningGrid() now pairs simulated datasets across settings in both
serial and parallel runs. Separate GIC and BIC calls with matching simulation
inputs and seeds are also paired. Previously seeded grid results will change;
existing cached results are not replaced. Returned objects record
paired_settings and study_seeds.
0 + or - 1. Searches now preserve the requested
intercept setting for numeric and factor predictors.icTrajectory() and its plot method for inspecting search histories.
Results now record candidate nodes, resolved progress settings, and detailed
proposal histories, including accepted, rejected, and errored fits.progress = FALSE to
disable them independently of verbose output."0" and the fitted
global BM covariance in VCVs[["0"]]. Covariance summaries no longer issue
the proportional multi-regime warning for this single covariance.rateMap() and supporting methods for inspecting branch-rate patterns.
Legends respect uneven category breaks. generateViridisColorScale() requires
numeric input and uses sorted rank rather than numeric distance.lineage_rates() and tools for summarizing shift nodes, transitions,
waiting times, and magnitudes; fitting and bootstrapping rate distributions;
and comparing shift magnitudes.fit_regime_covariances(), fit_regime_covariance_runs(), module
diagnostics, correlation-matrix PCA, integration summaries, and
regime_integration_pgls() for post-hoc analyses of fitted regimes.simulation_generator = "original" to reproduce the published operations;
the full-covariance Wishart/spectral generator is available with "empirical".selectTunedSearchParameters() to filter settings using false-positive
and evaluability safeguards and rank feasible settings by fuzzy balanced
accuracy by default.method and error settings inherited
from the simulation template. Explicit search overrides remain authoritative;
simulation fits, scores, and the selection rule are unchanged.NULL shift-node
vector. Zero-shift results now contribute missed shifts to strict, fuzzy,
and weighted summaries. Saved results can be reassessed without refitting;
failed or incomplete records remain excluded.NA when recovery is zero. Undefined
cases retain NA. Corrected the supplementary replicate metrics and their
export pipeline; pooled vignette summaries and selected settings are unchanged.\donttest{} blocks exercised in CI.future (>= 1.49.0) and
phytools (>= 2.0-3), added plotrix, corrected dependency declarations,
and moved website-only dependencies to Config/Needs/website.Documentation / vignettes:
searchOptimalConfiguration() documentation around acceptable tree inputs, recommended mvgls() methods ("H&L" vs "LL"), and the role of error = TRUE.Citation / metadata:
citation("bifrost") for the live bioRxiv preprint and the application paper.mvMORPH citations to the package citation metadata.Maintenance:
Addressed CRAN reviewer feedback following review of 0.1.2:
@return / \value{}) for the exported
print.bifrost_search() method, clarifying that the function returns the input object
invisibly and is called for its printing side effects.Plotting:
plot_ic_acceptance_matrix() gains an optional baseline_ic argument to plot and compute
diff(IC) relative to the true no-shift baseline (useful when matrix_data begins at the
first evaluated shift model rather than the true baseline).Documentation / vignettes:
Addressed CRAN reviewer feedback following review of 0.1.1:
plot_ic_acceptance_matrix() now saves and restores the user’s graphical parameters via an immediate on.exit() (prevents leaking par() settings across calls).Plotting:
rate_limits argument to plot_ic_acceptance_matrix() (default c(-400, 150)) to control the secondary y-axis limits for the rate-of-improvement overlay (validated numeric length-2, finite).Search results output:
bifrost_search S3 class and print.bifrost_search() method for searchOptimalConfiguration() results (compact console summary; optional ASCII IC-history plot via txtplot when store_model_fit_history = TRUE; prints IC weights when present).citation("bifrost")); package citation metadata updated in inst/CITATION.IC weights / no-shift behavior:
ic_weights output across serial and parallel uncertainty-weight modes; always returns a data.frame with consistent columns, and returns an empty data.frame with the same schema when no shifts are detected.model_no_uncertainty now returns the baseline mvgls model (instead of NULL).Documentation / vignettes / tests:
ic_weights to avoid RStudio paged/Unicode rendering issues.Config/testthat/parallel: false).T/F with TRUE/FALSE.message()/warning() and controlled by a verbose flag.tempdir() to comply with CRAN file system policies and avoid writing to the user’s working directory.on.exit() calls.future with multicore on Unix outside RStudio and multisession otherwise.num_cores = 1.