Add tagging, multi-error, best-of-family, timeout, autodiff, and autoplot to DiffEqDevTools#3287
Open
ChrisRackauckas-Claude wants to merge 1 commit intoSciML:masterfrom
Open
Conversation
…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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements Phases 1-7 of SciML/DiffEqDevTools.jl#177 for the DiffEqDevTools sublibrary now in this monorepo.
tags::Vector{Symbol}field onWorkPrecision,filter_by_tags,exclude_by_tags,get_tags,unique_tags,merge_wp_sets. Also fixes StructArrays 0.7 compat via_dicts_to_structarray.error_estimateskwarg onWorkPrecisionSetto compute multiple error metrics (:final,:l2,:L2) in one pass.available_errors()helper.reference_tagsandreference_stylekwargs in plot recipe for distinct baseline method styling (dashed/thin/transparent). Tag-based filtering (tags,include_tags,exclude_tags) in plot recipe.wp_area(log-log trapezoidal area),best_by_tag,best_of_familiesfor automatic cross-family comparison.timeoutkwarg on allWorkPrecision/WorkPrecisionSetconstructors. Exceeding timeout marks results as NaN with a warning.with_autodiff_variantscreates AD-variant setup dicts with proper tagging.autoplot(wp_set; families, reference_tags, best_n)generates per-family subsets, best-of-families, and full set asDict{String, WorkPrecisionSet}.All changes are fully backward compatible — new fields have defaults, new parameters are keyword-only.
Test plan
ode_appxtrue_tests.jlpasses (backward compatibility confirmed)🤖 Generated with Claude Code