Skip to content

Commit bb000f4

Browse files
Merge pull request #194 from SciML/update
Update for removal of pins
2 parents db927f8 + 8c13066 commit bb000f4

File tree

4 files changed

+15
-19
lines changed

4 files changed

+15
-19
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "DataDrivenDiffEq"
22
uuid = "2445eb08-9709-466a-b3fc-47e12bd697a2"
33
authors = ["Julius Martensen <[email protected]>"]
4-
version = "0.5.4"
4+
version = "0.5.5"
55

66
[deps]
77
Compat = "34da2185-b29b-5c13-b0c7-acf172513d20"

src/DataDrivenDiffEq.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ using FiniteDifferences, DataInterpolations
1010
using Compat
1111
using DocStringExtensions
1212

13-
abstract type AbstractKoopmanOperator end;
13+
abstract type AbstractKoopmanOperator <: Function end;
1414

1515
include("./optimizers/Optimize.jl")
1616
using .Optimize
@@ -85,6 +85,6 @@ export burst_sampling, subsample
8585

8686
include("./basis_generators.jl")
8787
export chebyshev_basis, monomial_basis, polynomial_basis
88-
export sin_basis, cos_basis, fourier_basis
88+
export sin_basis, cos_basis, fourier_basis
8989

9090
end # module

src/basis.jl

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ It can be called with the typical DiffEq signature, meaning out of place with `f
1212
or in place with `f(du, u, p, t)`.
1313
If `linear_independent` is set to `true`, a linear independent basis is created from all atom function in `f`.
1414
If `simplify_eqs` is set to `true`, `simplify` is called on `f`.
15-
Additional keyworded arguments include `name`, which can be used to name the basis, `pins` used for connections and
15+
Additional keyworded arguments include `name`, which can be used to name the basis, and
1616
`observed` for defining observeables.
1717
1818
# Fields
@@ -48,7 +48,6 @@ mutable struct Basis <: ModelingToolkit.AbstractSystem
4848
states::Vector
4949
"""Parameters"""
5050
ps::Vector
51-
pins::Vector
5251
observed::Vector
5352
"""Independent variable"""
5453
iv::Num
@@ -63,7 +62,7 @@ end
6362
function Basis(eqs::AbstractVector, states::AbstractVector; parameters::AbstractArray = [], iv = nothing,
6463

6564
simplify = false, linear_independent = false, name = gensym(:Basis), eval_expression = false,
66-
pins = [], observed = [],
65+
observed = [],
6766
kwargs...)
6867

6968
eqs = simplify ? ModelingToolkit.simplify.(eqs) : eqs
@@ -80,7 +79,7 @@ function Basis(eqs::AbstractVector, states::AbstractVector; parameters::Abstract
8079
f_(u,p,t) = f_oop(u,p,t)
8180
f_(du, u, p, t) = f_iip(du, u, p, t)
8281

83-
return Basis(eqs, value.(states), value.(parameters), pins, observed, value(iv), f_, name, Basis[])
82+
return Basis(eqs, value.(states), value.(parameters), observed, value(iv), f_, name, Basis[])
8483
end
8584

8685
function Basis(f::Function, states::AbstractVector; parameters::AbstractArray = [], iv = nothing, kwargs...)
@@ -239,9 +238,8 @@ function Base.merge(x::Basis, y::Basis; eval_expression = false)
239238
b = unique(vcat([xi.rhs for xi equations(x)], [xi.rhs for xi equations(y)]))
240239
vs = unique(vcat(x.states, y.states))
241240
ps = unique(vcat(x.ps, y.ps))
242-
pins = unique(vcat(x.pins, y.pins))
243241
observed = unique(vcat(x.observed, y.observed))
244-
return Basis(Num.(b), vs, parameters = ps, pins = pins, observed = observed, eval_expression = eval_expression)
242+
return Basis(Num.(b), vs, parameters = ps, observed = observed, eval_expression = eval_expression)
245243
end
246244

247245
"""

src/system_conversions.jl

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import ModelingToolkit.SymbolicUtils.FnType
22

33
function _generate_deqs(x::Basis, states, iv, p)
4-
@assert length(x) == length(states)
4+
@assert length(x) == length(states)
55
# Create new variables with time dependency
66
∂t = Differential(iv)
7-
dvs = [Num(Sym{FnType{Tuple{Any}, Real}}(_get_name(xi))(value(iv))) for xi in states]
7+
dvs = [Num(Sym{FnType{Tuple{Any}, Real}}(_get_name(xi))(value(iv))) for xi in states]
88
dvsdt = ∂t.(dvs)
99
# Adapt equations
1010
eqs = dvsdt .~ x(dvs,p,iv)
@@ -16,17 +16,16 @@ $(SIGNATURES)
1616
1717
Convert a given `Basis` or `SparseIdentificationResult` into an `ODESystem`. For details, see ModelingToolkit.jl.
1818
"""
19-
function ModelingToolkit.ODESystem(x::Basis, iv = nothing, dvs = Num[], ps = Num[]; pins = Num[], observed = Num[], systems = ODESystem[],kwargs...)
19+
function ModelingToolkit.ODESystem(x::Basis, iv = nothing, dvs = Num[], ps = Num[]; observed = Num[], systems = ODESystem[],kwargs...)
2020
iv = isnothing(iv) ? independent_variable(x) : iv
2121
dvs = isempty(dvs) ? variables(x) : dvs
2222
ps = isempty(ps) ? parameters(x) : ps
2323
eqs, dvs = _generate_deqs(x, dvs, iv, ps)
24-
pins = isempty(pins) ? x.pins : pins
2524
observed = isempty(observed) ? x.observed : observed
2625
systems = isempty(systems) ? x.systems : systems
2726
return ODESystem(
2827
eqs, iv, dvs, ps,
29-
pins = pins, observed = observed, systems = systems, kwargs...)
28+
observed = observed, systems = systems, kwargs...)
3029
end
3130

3231
function ModelingToolkit.ODESystem(b::SparseIdentificationResult, iv = nothing, dvs = Num[], ps = Num[]; kwargs...)
@@ -46,7 +45,7 @@ function _generate_deqs(x::Basis, states, iv, p, controls)
4645
states_ = _remove_controls(states, controls)
4746
@assert length(x) == length(states_)
4847
∂t = Differential(iv)
49-
dvs = [Num(Sym{FnType{Tuple{Any}, Real}}(_get_name(xi))(value(iv))) for xi in states_]
48+
dvs = [Num(Sym{FnType{Tuple{Any}, Real}}(_get_name(xi))(value(iv))) for xi in states_]
5049
input_states = _create_input_vec(states, dvs, controls)
5150
dvsdt = ∂t.(dvs)
5251
# Adapt equations
@@ -77,20 +76,19 @@ $(SIGNATURES)
7776
7877
Convert a given `Basis` or `SparseIdentificationResult` into a `ControlSystem`. For details, see ModelingToolkit.jl.
7978
"""
80-
function ModelingToolkit.ControlSystem(loss, x::Basis, controls, iv = nothing, dvs = nothing, ps = nothing;
81-
pins = Num[], observed = Num[], systems = ODESystem[], kwargs...)
79+
function ModelingToolkit.ControlSystem(loss, x::Basis, controls, iv = nothing, dvs = nothing, ps = nothing;
80+
observed = Num[], systems = ODESystem[], kwargs...)
8281
iv = isnothing(iv) ? independent_variable(x) : iv
8382
dvs = isnothing(dvs) ? variables(x) : dvs
8483
ps = isnothing(ps) ? parameters(x) : ps
8584
eqs, dvs, input_states = _generate_deqs(x, dvs, iv, ps, controls)
8685
#return input_states
8786
subs = [(xi => is) for (xi, is) in zip(variables(x), input_states)]
8887
loss = substitute.(loss, (subs,))[1]
89-
pins = isempty(pins) ? x.pins : pins
9088
observed = isempty(observed) ? x.observed : observed
9189
systems = isempty(systems) ? x.systems : systems
9290
return ControlSystem(loss, eqs, iv, dvs, controls, ps,
93-
pins = pins, observed = observed, systems = systems, kwargs...)
91+
observed = observed, systems = systems, kwargs...)
9492
end
9593

9694
function ModelingToolkit.ControlSystem(loss, b::SparseIdentificationResult, controls, iv = nothing, dvs = Num[], ps = Num[]; kwargs...)

0 commit comments

Comments
 (0)