Skip to content

Add tagging, multi-error, best-of-family, timeout, autodiff, and autoplot to DiffEqDevTools#3287

Open
ChrisRackauckas-Claude wants to merge 1 commit intoSciML:masterfrom
ChrisRackauckas-Claude:phase-1-7-all-phases
Open

Add tagging, multi-error, best-of-family, timeout, autodiff, and autoplot to DiffEqDevTools#3287
ChrisRackauckas-Claude wants to merge 1 commit intoSciML:masterfrom
ChrisRackauckas-Claude:phase-1-7-all-phases

Conversation

@ChrisRackauckas-Claude
Copy link
Copy Markdown
Contributor

Summary

Implements Phases 1-7 of SciML/DiffEqDevTools.jl#177 for the DiffEqDevTools sublibrary now in this monorepo.

  • Phase 1 — Core tagging infrastructure: tags::Vector{Symbol} field on WorkPrecision, filter_by_tags, exclude_by_tags, get_tags, unique_tags, merge_wp_sets. Also fixes StructArrays 0.7 compat via _dicts_to_structarray.
  • Phase 2 — Multi-error-mode: error_estimates kwarg on WorkPrecisionSet to compute multiple error metrics (:final, :l2, :L2) in one pass. available_errors() helper.
  • Phase 3 — Reference method plotting: reference_tags and reference_style kwargs in plot recipe for distinct baseline method styling (dashed/thin/transparent). Tag-based filtering (tags, include_tags, exclude_tags) in plot recipe.
  • Phase 4 — Best-of-family helpers: wp_area (log-log trapezoidal area), best_by_tag, best_of_families for automatic cross-family comparison.
  • Phase 5 — Time cutoff: timeout kwarg on all WorkPrecision/WorkPrecisionSet constructors. Exceeding timeout marks results as NaN with a warning.
  • Phase 6 — AutoDiff comparison helpers: with_autodiff_variants creates AD-variant setup dicts with proper tagging.
  • Phase 7 — Autoplot: autoplot(wp_set; families, reference_tags, best_n) generates per-family subsets, best-of-families, and full set as Dict{String, WorkPrecisionSet}.

All changes are fully backward compatible — new fields have defaults, new parameters are keyword-only.

Test plan

  • 63 new test assertions across 6 new test files all pass locally
  • Existing ode_appxtrue_tests.jl passes (backward compatibility confirmed)
  • CI validation

🤖 Generated with Claude Code

…and autoplot to DiffEqDevTools

Implements Phases 1-7 of SciML/DiffEqDevTools.jl#177:

Phase 1: Core tagging infrastructure — tags field on WorkPrecision, filter_by_tags,
exclude_by_tags, get_tags, unique_tags, merge_wp_sets, _dicts_to_structarray fix
for StructArrays 0.7 compatibility.

Phase 2: Multi-error-mode — error_estimates kwarg on WorkPrecisionSet constructors,
active_error_estimates field, available_errors helper, timeseries_errors/dense_errors
override kwargs on WorkPrecision constructors.

Phase 3: Reference method plotting — reference_tags and reference_style kwargs in
plot recipe for distinct styling of baseline methods (dashed, thinner, transparent).
Tag-based filtering (tags, include_tags, exclude_tags) in plot recipe.

Phase 4: Best-of-family helpers — wp_area (log-log trapezoidal area), best_by_tag,
best_of_families for automatic cross-family comparison generation.

Phase 5: Time cutoff — timeout kwarg on all WorkPrecision and WorkPrecisionSet
constructors. Exceeding timeout marks errors/times as NaN with a warning.

Phase 6: AutoDiff comparison helpers — with_autodiff_variants creates AD-variant
setup dicts with proper tagging for easy AD backend comparison.

Phase 7: Autoplot — autoplot function generates per-family subsets, best-of-families,
and full set as Dict{String, WorkPrecisionSet} for standard comparison plots.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants