Skip to content

Commit 3b0816c

Browse files
committed
add tests for params, fix parameter order
1 parent 6396936 commit 3b0816c

21 files changed

+248
-26
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "SequentialSamplingModels"
22
uuid = "0e71a2a6-2b30-4447-8742-d083a85e82d1"
33
authors = ["itsdfish"]
4-
version = "0.12.7"
4+
version = "0.13.0"
55

66
[deps]
77
Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f"

src/multi_choice_models/AttentionalDiffusion.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ function aDDM(; ν = [5.0, 4.0], α = 1.0, z = 0.0, θ = 0.3, σ = 0.02, Δ = 0.
8383
return aDDM(ν, σ, Δ, θ, α, z, τ)
8484
end
8585

86+
params(d::aDDM) = (d.ν, d.σ, d.Δ, d.θ, d.α, d.z, d.τ)
87+
8688
get_pdf_type(d::aDDM) = Approximate
8789

8890
"""

src/multi_choice_models/RDM.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,8 @@ struct RDM{T <: Real} <: AbstractRDM
121121
τ::T
122122
end
123123

124-
function RDM(ν, k::T, A, τ) where {T}
125-
_, A, k, τ = promote(ν[1], k, A, τ)
124+
function RDM(ν, A, k::T, τ) where {T}
125+
_, A, k, τ = promote(ν[1], A, k, τ)
126126
ν = convert(Vector{T}, ν)
127127
return RDM(ν, A, k, τ)
128128
end
@@ -131,7 +131,7 @@ function params(d::AbstractRDM)
131131
(d.ν, d.A, d.k, d.τ)
132132
end
133133

134-
RDM(; ν = [1, 2], k = 0.3, A = 0.7, τ = 0.2) = RDM(ν, k, A, τ)
134+
RDM(; ν = [1, 2], k = 0.3, A = 0.7, τ = 0.2) = RDM(ν, A, k, τ)
135135

136136
function rand(rng::AbstractRNG, dist::AbstractRDM)
137137
(; ν, A, k, τ) = dist

src/multi_choice_models/maaDDM.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,8 @@ function maaDDM(;
125125
return maaDDM(ν, σ, Δ, θ, ϕ, ω, α, z, τ)
126126
end
127127

128+
params(d::maaDDM) = (d.ν, d.σ, d.Δ, d.θ, d.ϕ, d.ω, d.α, d.z, d.τ)
129+
128130
get_pdf_type(d::maaDDM) = Approximate
129131

130132
n_options(d::maaDDM) = size(d.ν, 1)

src/multi_choice_models/stDDM.jl

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,27 @@ An object for the starting-time diffusion decision model.
77
88
- `ν::T`: vector of drift rate weights for attribute one and two. ν ∈ ℝ.
99
- `σ::T`: diffusion noise. σ ∈ ℝ⁺.
10-
- `s::T`: initial latency bias (positive for attribute two, negative for attribute one)
11-
- `z::T`: initial evidence. z ∈ [0,α].
1210
- `η::T`: vector of variability in drift rate for attribute one and two. η ∈ ℝ⁺.
11+
- `s::T`: initial latency bias (positive for attribute two, negative for attribute one)
1312
- `ρ::T`: correlation between drift rate for attributes. ρ ∈ [-1,1].
1413
- `α::T`: evidence threshold. α ∈ ℝ⁺.
14+
- `z::T`: initial evidence. z ∈ [0,α].
1515
- `τ::T`: non-decision time. τ ∈ [0, min_rt].
1616
1717
# Constructors
1818
19-
stDDM(ν, σ, s, z, η, ρ, α, τ)
20-
21-
stDDM(;ν = [0.5,0.6],σ = 1,s = 0.50, z = 0.50, η = [1.0,1.0], ρ = 0.00, α = 1.0, τ = .300)
19+
stDDM(ν, σ, η, s, ρ, α, z, τ)
20+
21+
stDDM(;
22+
ν = [0.5, 0.6],
23+
σ = 1,
24+
s = 0.50,
25+
ρ = 0.0,
26+
η = fill(1.0, length(ν)),
27+
α = 1.0,
28+
z = 0.50,
29+
τ = 0.300
30+
)
2231
2332
# Example
2433
@@ -27,15 +36,15 @@ using SequentialSamplingModels
2736
2837
ν = [0.5, 0.6]
2938
σ = 1
30-
s = 0.50
31-
z = 0.50
3239
η = [1.0, 1.0]
3340
ρ = 0.00
41+
s = 0.50
3442
α = 1.0
43+
z = 0.50
3544
τ = 0.300
3645
3746
# Create stDDM model instance
38-
dist = stDDM(;ν, σ, s, z, η, ρ, α, τ)
47+
dist = stDDM(; ν, σ, s, z, η, ρ, α, τ)
3948
4049
choices,rts = rand(dist, 500)
4150
```
@@ -56,36 +65,36 @@ Sullivan, N.J., Huettel, S.A. Healthful choices depend on the latency and rate o
5665
mutable struct stDDM{T <: Real} <: AbstractstDDM
5766
ν::Vector{T}
5867
σ::T
59-
s::T
60-
z::T
6168
η::Vector{T}
69+
s::T
6270
ρ::T
6371
α::T
72+
z::T
6473
τ::T
6574
end
6675

67-
function stDDM(ν, σ, s, z, η, ρ, α, τ::T) where {T}
68-
_, σ, s, z, _, ρ, α, τ = promote(ν[1], σ, s, z, η[1], ρ, α, τ)
76+
function stDDM(ν, σ, η, s, ρ, α, z, τ::T) where {T}
77+
_, σ, _, s, ρ, α, z, τ = promote(ν[1], σ, η[1], s, ρ, α, z, τ)
6978
ν = convert(Vector{T}, ν)
7079
η = convert(Vector{T}, η)
71-
return stDDM(ν, σ, s, z, η, ρ, α, τ)
80+
return stDDM(ν, σ, η, s, ρ, α, z, τ)
7281
end
7382

7483
function stDDM(;
7584
ν = [0.5, 0.6],
7685
σ = 1,
7786
s = 0.50,
78-
z = 0.50,
79-
η = fill(1.0, length(ν)),
8087
ρ = 0.0,
88+
η = fill(1.0, length(ν)),
8189
α = 1.0,
90+
z = 0.50,
8291
τ = 0.300
8392
)
84-
return stDDM(ν, σ, s, z, η, ρ, α, τ)
93+
return stDDM(ν, σ, η, s, ρ, α, z, τ)
8594
end
8695

8796
function params(d::AbstractstDDM)
88-
(d.ν, d.σ, d.s, d.z, d.η, d.ρ, d.α, d.τ)
97+
(d.ν, d.σ, d.η, d.s, d.ρ, d.α, d.z, d.τ)
8998
end
9099

91100
get_pdf_type(d::AbstractstDDM) = Approximate

test/alternative_geometries/circular_ddm.jl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,4 +286,14 @@
286286
_, max_idx = findmax(LLs)
287287
@test parms.η[2] η2s[max_idx] atol = 0.05
288288
end
289+
290+
@safetestset "params" begin
291+
using Test
292+
using Distributions
293+
using SequentialSamplingModels
294+
295+
parms = (; ν = [1, 0.5], σ = 1, η = [1, 1], α = 1.5, τ = 0.30)
296+
model = CDDM(; parms...)
297+
@test values(parms) == params(model)
298+
end
289299
end

test/multi_choice_models/attentional_diffusion_tests.jl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,4 +93,14 @@
9393

9494
@test evidence[end] -1 atol = 0.030
9595
end
96+
97+
@safetestset "params" begin
98+
using Test
99+
using Distributions
100+
using SequentialSamplingModels
101+
102+
parms = (; ν = [5.0, 4.0], σ = 0.02, Δ = 0.0004, θ = 0.3, α = 1.0, z = 0.0, τ = 0.0)
103+
model = aDDM(; parms...)
104+
@test values(parms) == params(model)
105+
end
96106
end

test/multi_choice_models/ddm_tests.jl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,4 +311,14 @@
311311
time_steps, evidence = simulate(rng, dist; Δt = 0.0001)
312312
@test evidence[end] 0.0 atol = 0.010
313313
end
314+
315+
@safetestset "params" begin
316+
using Test
317+
using Distributions
318+
using SequentialSamplingModels
319+
320+
parms = (; ν = 1.00, α = 0.80, z = 0.50, τ = 0.30)
321+
model = DDM(; parms...)
322+
@test values(parms) == params(model)
323+
end
314324
end

test/multi_choice_models/lba_tests.jl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,4 +145,14 @@
145145
end
146146
end
147147
end
148+
149+
@safetestset "params" begin
150+
using Test
151+
using Distributions
152+
using SequentialSamplingModels
153+
154+
parms = (; ν = [2.0, 1.75], σ = 1, A = 0.8, k = 0.5, τ = 0.3)
155+
model = LBA(; parms...)
156+
@test values(parms) == params(model)
157+
end
148158
end

test/multi_choice_models/lca_tests.jl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,4 +142,14 @@
142142
@test size(evidence, 2) == 2
143143
@test maximum(evidence[end, :]) α atol = 0.005
144144
end
145+
146+
@safetestset "params" begin
147+
using Test
148+
using Distributions
149+
using SequentialSamplingModels
150+
151+
parms = (; ν = [2.5, 2.0], σ = 1.0, β = 0.20, λ = 0.10, α = 1.5, τ = 0.30)
152+
model = LCA(; parms...)
153+
@test values(parms) == params(model)
154+
end
145155
end

0 commit comments

Comments
 (0)