Skip to content

Problem when using dtmin option in IntegrationProfiler #38

@TorkelE

Description

@TorkelE

I have a case where this works:

method = IntegrationProfiler(integrator = Tsit5(), integrator_opts = (dtmax = 0.1,), matrix_type = :hessian)
pl_sol = profile(plprob, method; idxs = [p_idx])

but this fails:

method = IntegrationProfiler(integrator = Tsit5(), integrator_opts = (dtmax = 0.1, dtmin = 0.001), matrix_type = :hessian
pl_sol = profile(plprob, method; idxs = [p_idx])

with a

┌ Warning: dt(0.001) <= dtmin(0.001) at t=0.5172726656986002, and step error estimate = 0.27677973712186665. Aborting. There is either an error in your model specification or the true solution is unstable.
└ @ SciMLBase ~/.julia/packages/SciMLBase/Ub9ub/src/integrator_interface.jl:612
┌ Warning: Solver returned DtLessThanMin retcode at profile point x = 0.5172726656986002. Profiling is interrupted.
└ @ LikelihoodProfiler ~/.julia/dev/LikelihoodProfiler/src/profiler_state.jl:202
ERROR: UndefVarError: `sol` not defined in `LikelihoodProfiler`
Suggestion: check for spelling errors or missing imports.
Stacktrace:
  [1] profiler_step!(profiler::LikelihoodProfiler.ProfilerState{…}, method::IntegrationProfiler{…})
    @ LikelihoodProfiler ~/.julia/dev/LikelihoodProfiler/src/profiler_state.jl:203
  [2] __profile_dir!(profiler_state::LikelihoodProfiler.ProfilerState{…})
    @ LikelihoodProfiler ~/.julia/dev/LikelihoodProfiler/src/profile.jl:78
  [3] __profile_dir(plprob::PLProblem{…}, method::IntegrationProfiler{…}, idx::Int64, dir::Int64; kwargs::@Kwargs{})
    @ LikelihoodProfiler ~/.julia/dev/LikelihoodProfiler/src/profile.jl:62
  [4] __profile_dir
    @ ~/.julia/dev/LikelihoodProfiler/src/profile.jl:59 [inlined]
  [5] (::LikelihoodProfiler.var"#13#14"{@Kwargs{}, PLProblem{…}, IntegrationProfiler{…}})(idx::Int64)
    @ LikelihoodProfiler ~/.julia/dev/LikelihoodProfiler/src/profile.jl:50
  [6] iterate
    @ ./generator.jl:48 [inlined]
  [7] _collect(c::Vector{…}, itr::Base.Generator{…}, ::Base.EltypeUnknown, isz::Base.HasShape{…})
    @ Base ./array.jl:811
  [8] collect_similar
    @ ./array.jl:720 [inlined]
  [9] map
    @ ./abstractarray.jl:3371 [inlined]
 [10] macro expansion
    @ ./timing.jl:421 [inlined]
 [11] __profile(plprob::PLProblem{…}, method::IntegrationProfiler{…}, ::Val{…}, idxs::Vector{…}; kwargs::@Kwargs{})
    @ LikelihoodProfiler ~/.julia/dev/LikelihoodProfiler/src/profile.jl:48
 [12] __profile
    @ ~/.julia/dev/LikelihoodProfiler/src/profile.jl:46 [inlined]
 [13] profile(plprob::PLProblem{…}, method::IntegrationProfiler{…}; idxs::Vector{…}, parallel_type::Symbol, kwargs::@Kwargs{})
    @ LikelihoodProfiler ~/.julia/dev/LikelihoodProfiler/src/profile.jl:42

Reducing the dtmin solves it, so that bit is fine. However, the error might be something (minor or not) to have a look at.

Activity

ivborissov

ivborissov commented on Mar 20, 2025

@ivborissov
Collaborator

As internally we solve an ODE system, the solver can produce such warnings if dt doesn't suite the tolerance settings. We are looking for a default (recommended) diffeq settings to use in IntegrationProfiler but it implies performing many benchmarks, so we haven't come up with the defaults here yet.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @TorkelE@ivborissov

        Issue actions

          Problem when using `dtmin` option in `IntegrationProfiler` · Issue #38 · insysbio/LikelihoodProfiler.jl