@@ -33,15 +33,15 @@ oprob = ODEProblem(sys, u0, tspan, p, jac = true)
33
33
getσ1 = getp (sys, σ)
34
34
getσ2 = getp (sys, sys. σ)
35
35
getσ3 = getp (sys, :σ )
36
- @test getσ1 (oprob) == getσ2 (oprob) == getσ3 (oprob) == 28.0
36
+ @test getσ1 (oprob) == getσ2 (oprob) == getσ3 (oprob) == oprob . ps[σ] == oprob . ps[sys . σ] == oprob . ps[ :σ ] == 28.0
37
37
getρ1 = getp (sys, ρ)
38
38
getρ2 = getp (sys, sys. ρ)
39
39
getρ3 = getp (sys, :ρ )
40
- @test getρ1 (oprob) == getρ2 (oprob) == getρ3 (oprob) == 10.0
40
+ @test getρ1 (oprob) == getρ2 (oprob) == getρ3 (oprob) == oprob . ps[ρ] == oprob . ps[sys . ρ] == oprob . ps[ :ρ ] == 10.0
41
41
getβ1 = getp (sys, β)
42
42
getβ2 = getp (sys, sys. β)
43
43
getβ3 = getp (sys, :β )
44
- @test getβ1 (oprob) == getβ2 (oprob) == getβ3 (oprob) == 8 / 3
44
+ @test getβ1 (oprob) == getβ2 (oprob) == getβ3 (oprob) == oprob . ps[β] == oprob . ps[sys . β] == oprob . ps[ :β ] == 8 / 3
45
45
46
46
@test oprob[x] == oprob[sys. x] == oprob[:x ] == 1.0
47
47
@test oprob[y] == oprob[sys. y] == oprob[:y ] == 0.0
@@ -51,13 +51,20 @@ getβ3 = getp(sys, :β)
51
51
52
52
setσ = setp (sys, σ)
53
53
setσ (oprob, 10.0 )
54
- @test getσ1 (oprob) == getσ2 (oprob) == getσ3 (oprob) == 10.0
54
+ @test getσ1 (oprob) == getσ2 (oprob) == getσ3 (oprob) == oprob . ps[σ] == oprob . ps[sys . σ] == oprob . ps[ :σ ] == 10.0
55
55
setρ = setp (sys, sys. ρ)
56
56
setρ (oprob, 20.0 )
57
- @test getρ1 (oprob) == getρ2 (oprob) == getρ3 (oprob) == 20.0
57
+ @test getρ1 (oprob) == getρ2 (oprob) == getρ3 (oprob) == oprob . ps[ρ] == oprob . ps[sys . ρ] == oprob . ps[ :ρ ] == 20.0
58
58
setβ = setp (sys, :β )
59
59
setβ (oprob, 30.0 )
60
- @test getβ1 (oprob) == getβ2 (oprob) == getβ3 (oprob) == 30.0
60
+ @test getβ1 (oprob) == getβ2 (oprob) == getβ3 (oprob) == oprob. ps[β] == oprob. ps[sys. β] == oprob. ps[:β ] == 30.0
61
+
62
+ oprob. ps[σ] = 11.0
63
+ @test getσ1 (oprob) == getσ2 (oprob) == getσ3 (oprob) == oprob. ps[σ] == oprob. ps[sys. σ] == oprob. ps[:σ ] == 11.0
64
+ oprob. ps[sys. ρ] = 21.0
65
+ @test getρ1 (oprob) == getρ2 (oprob) == getρ3 (oprob) == oprob. ps[ρ] == oprob. ps[sys. ρ] == oprob. ps[:ρ ] == 21.0
66
+ oprob. ps[:β ] = 31.0
67
+ @test getβ1 (oprob) == getβ2 (oprob) == getβ3 (oprob) == oprob. ps[β] == oprob. ps[sys. β] == oprob. ps[:β ] == 31.0
61
68
62
69
oprob[x] = 10.0
63
70
@test oprob[x] == oprob[sys. x] == oprob[:x ] == 10.0
@@ -75,7 +82,7 @@ get_obs = getu(oprob, sys.x + sys.z + t + σ)
75
82
@test gety (oprob) == 10.0
76
83
@test get_arr (oprob) == [10.0 , 10.0 ]
77
84
@test get_tuple (oprob) == (10.0 , 1.0 )
78
- @test get_obs (oprob) == 39 .0
85
+ @test get_obs (oprob) == 22 .0
79
86
80
87
setx! = setu (oprob, x)
81
88
sety! = setu (oprob, :y )
@@ -86,12 +93,8 @@ setx!(oprob, 11.0)
86
93
@test getx (oprob) == 11.0
87
94
sety! (oprob, 12.0 )
88
95
@test gety (oprob) == 12.0
89
- set_arr! (oprob, 10.0 )
90
- @test get_arr (oprob) == [10.0 , 10.0 ]
91
96
set_arr! (oprob, [11.0 , 12.0 ])
92
97
@test get_arr (oprob) == [11.0 , 12.0 ]
93
- set_tuple! (oprob, 13.0 )
94
- @test get_tuple (oprob) == (13.0 , 13.0 )
95
98
set_tuple! (oprob, [10.0 , 10.0 ])
96
99
@test get_tuple (oprob) == (10.0 , 10.0 )
97
100
@@ -103,22 +106,28 @@ noiseeqs = [0.1 * x,
103
106
sprob = SDEProblem (noise_sys, u0, (0.0 , 100.0 ), p)
104
107
u0
105
108
106
- @test getσ1 (sprob) == getσ2 (sprob) == getσ3 (sprob) == 28.0
107
- @test getρ1 (sprob) == getρ2 (sprob) == getρ3 (sprob) == 10.0
108
- @test getβ1 (sprob) == getβ2 (sprob) == getβ3 (sprob) == 8 / 3
109
+ @test getσ1 (sprob) == getσ2 (sprob) == getσ3 (sprob) == sprob . ps[σ] == sprob . ps[sys . σ] == sprob . ps[ :σ ] == 28.0
110
+ @test getρ1 (sprob) == getρ2 (sprob) == getρ3 (sprob) == sprob . ps[ρ] == sprob . ps[sys . ρ] == sprob . ps[ :ρ ] == 10.0
111
+ @test getβ1 (sprob) == getβ2 (sprob) == getβ3 (sprob) == sprob . ps[β] == sprob . ps[sys . β] == sprob . ps[ :β ] == 8 / 3
109
112
110
113
@test sprob[x] == sprob[noise_sys. x] == sprob[:x ] == 1.0
111
114
@test sprob[y] == sprob[noise_sys. y] == sprob[:y ] == 0.0
112
115
@test sprob[z] == sprob[noise_sys. z] == sprob[:z ] == 0.0
113
116
114
117
setσ (sprob, 10.0 )
115
- @test getσ1 (sprob) == getσ2 (sprob) == getσ3 (sprob) == 10.0
118
+ @test getσ1 (sprob) == getσ2 (sprob) == getσ3 (sprob) == sprob . ps[σ] == sprob . ps[sys . σ] == sprob . ps[ :σ ] == 10.0
116
119
setρ (sprob, 20.0 )
117
- @test getρ1 (sprob) == getρ2 (sprob) == getρ3 (sprob) == 20.0
120
+ @test getρ1 (sprob) == getρ2 (sprob) == getρ3 (sprob) == sprob . ps[ρ] == sprob . ps[sys . ρ] == sprob . ps[ :ρ ] == 20.0
118
121
setp (noise_sys, noise_sys. ρ)(sprob, 25.0 )
119
- @test getρ1 (sprob) == getρ2 (sprob) == getρ3 (sprob) == 25.0
122
+ @test getρ1 (sprob) == getρ2 (sprob) == getρ3 (sprob) == sprob . ps[ρ] == sprob . ps[sys . ρ] == sprob . ps[ :ρ ] == 25.0
120
123
setβ (sprob, 30.0 )
121
- @test getβ1 (sprob) == getβ2 (sprob) == getβ3 (sprob) == 30.0
124
+ @test getβ1 (sprob) == getβ2 (sprob) == getβ3 (sprob) == sprob. ps[β] == sprob. ps[sys. β] == sprob. ps[:β ] == 30.0
125
+ sprob. ps[σ] = 11.0
126
+ @test getσ1 (sprob) == getσ2 (sprob) == getσ3 (sprob) == sprob. ps[σ] == sprob. ps[sys. σ] == sprob. ps[:σ ] == 11.0
127
+ sprob. ps[sys. ρ] = 21.0
128
+ @test getρ1 (sprob) == getρ2 (sprob) == getρ3 (sprob) == sprob. ps[ρ] == sprob. ps[sys. ρ] == sprob. ps[:ρ ] == 21.0
129
+ sprob. ps[:β ] = 31.0
130
+ @test getβ1 (sprob) == getβ2 (sprob) == getβ3 (sprob) == sprob. ps[β] == sprob. ps[sys. β] == sprob. ps[:β ] == 31.0
122
131
123
132
sprob[x] = 10.0
124
133
@test sprob[x] == sprob[noise_sys. x] == sprob[:x ] == 10.0
@@ -131,12 +140,14 @@ getx = getu(sprob, x)
131
140
gety = getu (sprob, :y )
132
141
get_arr = getu (sprob, [x, y])
133
142
get_tuple = getu (sprob, (y, z))
134
- get_obs = getu (sprob, sys. x + sys. z + t + σ)
143
+ # observed doesn't work the same for SDEs
144
+ # uncomment get_obs test below when fixed
145
+ @test_broken get_obs = getu (sprob, sys. x + sys. z + t + σ)
135
146
@test getx (sprob) == 10.0
136
147
@test gety (sprob) == 10.0
137
148
@test get_arr (sprob) == [10.0 , 10.0 ]
138
149
@test get_tuple (sprob) == (10.0 , 1.0 )
139
- @test get_obs (sprob) == 39.0
150
+ # @test get_obs(sprob) == 39.0
140
151
141
152
setx! = setu (sprob, x)
142
153
sety! = setu (sprob, :y )
@@ -147,11 +158,22 @@ setx!(sprob, 11.0)
147
158
@test getx (sprob) == 11.0
148
159
sety! (sprob, 12.0 )
149
160
@test gety (sprob) == 12.0
150
- set_arr! (sprob, 10.0 )
151
- @test get_arr (sprob) == [10.0 , 10.0 ]
152
161
set_arr! (sprob, [11.0 , 12.0 ])
153
162
@test get_arr (sprob) == [11.0 , 12.0 ]
154
- set_tuple! (sprob, 13.0 )
155
- @test get_tuple (sprob) == (13.0 , 13.0 )
156
163
set_tuple! (sprob, [10.0 , 10.0 ])
157
164
@test get_tuple (sprob) == (10.0 , 10.0 )
165
+
166
+ using LinearAlgebra
167
+ @variables t
168
+ sts = @variables x (t)[1 : 3 ]= [1 , 2 , 3.0 ] y (t)= 1.0
169
+ ps = @parameters p[1 : 3 ] = [1 , 2 , 3 ]
170
+ D = Differential (t)
171
+ eqs = [collect (D .(x) .~ x)
172
+ D (y) ~ norm (x) * y - x[1 ]]
173
+ @named sys = ODESystem (eqs, t, [sts... ;], [ps... ;])
174
+ prob = ODEProblem (sys, [], (0 , 1.0 ))
175
+ @test getp (sys, p)(prob) == prob. ps[p] == [1 , 2 , 3 ]
176
+ setp (sys, p)(prob, [4 , 5 , 6 ])
177
+ @test getp (sys, p)(prob) == prob. ps[p] == [4 , 5 , 6 ]
178
+ prob. ps[p] = [7 , 8 , 9 ]
179
+ @test getp (sys, p)(prob) == prob. ps[p] == [7 , 8 , 9 ]
0 commit comments