# SymbolicRegression via DataDrivenDiffEq throws error

**URL:** <https://discourse.julialang.org/t/symbolicregression-via-datadrivendiffeq-throws-error/122180>\
**Category:** Modelling & Simulations\
**Created:** [November 2, 2024, 5:00pm UTC](https://discourse.julialang.org/t/symbolicregression-via-datadrivendiffeq-throws-error/122180 "2024-11-02T17:00:54Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![sdwfrost](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sdwfrost/32/2831_2.png) [@sdwfrost](https://discourse.julialang.org/u/sdwfrost)\
**Post date:** [November 2, 2024, 5:00pm UTC](https://discourse.julialang.org/t/symbolicregression-via-datadrivendiffeq-throws-error/122180/1 "2024-11-02T17:00:54Z")

</div>

I’m trying to fit a data-driven differential equation system via DataDrivenDiffEq. DMD and Sindy work fine, but symbolic regression fails. Any ideas what’s wrong?

```julia
# Load libraries
using OrdinaryDiffEq
using DataDrivenDiffEq
using DataDrivenSparse
using DataDrivenSR
using ModelingToolkit

# Define the SIR model
function sir_ode(u,p,t)
    (s,i,r) = u
    (β,γ) = p
    ds = -β*s*i
    di = β*s*i - γ*i
    dr = γ*i
    [ds,di,dr]
end

p = [0.5,0.25]
u0 = [0.99, 0.01, 0.0]
tspan = (0.0, 40.0)
δt = 1

solver = ExplicitRK()
sir_prob = ODEProblem(sir_ode, u0, tspan, p)
sir_sol = solve(sir_prob, solver, saveat = δt)

# Define the data-driven problem
dd_prob = DataDrivenProblem(sir_sol)

# Define the basis
@parameters t
@variables (u(t))[1:3]
Ψ = Basis([u; u[1]*u[2]], u, independent_variable = t)

## Sparse regression (works)
res_sparse = solve(dd_prob, Ψ, STLSQ(),digits=1)

## Symbolic regression
eqsearch_options = SymbolicRegression.Options(binary_operators = [+, *],
                                              loss = L1DistLoss(),
                                              verbosity = -1, progress = false, npop = 30,
                                              timeout_in_seconds = 60.0)
eqs = EQSearch(eq_options = eqsearch_options)
res_sr = solve(dd_prob, Ψ, eqs)
# Throws error
# ERROR: BoundsError: attempt to access 0-element Vector{Any} at index [1]
# Stacktrace:
# [1] getindex
# @ ./essentials.jl:13 [inlined]

```

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [November 3, 2024, 10:59am UTC](https://discourse.julialang.org/t/symbolicregression-via-datadrivendiffeq-throws-error/122180/2 "2024-11-03T10:59:40Z")

</div>

Might be a bug in the wrapper.
