Skip to content

Commit 9d5767a

Browse files
committed
first batch of argument checks
1 parent 8ec0c87 commit 9d5767a

22 files changed

Lines changed: 679 additions & 8 deletions

Project.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ authors = ["itsdfish"]
44
version = "0.13.0"
55

66
[deps]
7+
ArgCheck = "dce04be8-c92d-5529-be00-80e4d2c0e197"
78
Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f"
89
DynamicPPL = "366bfd00-2699-11ea-058f-f148b4cae6d8"
910
FunctionZeros = "b21f74c0-b399-568f-9643-d20f4fa2c814"
@@ -28,6 +29,7 @@ PlotsExt = "Plots"
2829
TuringExt = "Turing"
2930

3031
[compat]
32+
ArgCheck = "2.5.0"
3133
Distributions = "v0.24.6, 0.25"
3234
DynamicPPL = "0.31.0,0.32.0,0.33.0,0.34.0,0.35.0,0.36.0"
3335
FunctionZeros = "0.2.0,0.3.0, 1"

src/SequentialSamplingModels.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ https://itsdfish.github.io/SequentialSamplingModels.jl/dev/
66
"""
77
module SequentialSamplingModels
88

9+
using ArgCheck
910
using Distributions
1011
using FunctionZeros
1112
using PrettyTables

src/multi_choice_models/AttentionalDiffusion.jl

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ An object for the attentional diffusion model.
66
# Parameters
77
88
- `ν::Vector{T}`: relative decision values (i.e., drift rates). ν ∈ ℝⁿ.
9-
- `σ::T`: standard deviation of noise in evidence accumulation. σ ∈ ℝ.
10-
- `Δ::T`: constant of evidence accumulation speed (evidence per ms). Δ ∈ ℝ.
11-
- `α::T`: evidence threshold. α ∈ ℝ.
12-
- `z::T`: initial evidence. z ∈ [0, α]
13-
- `θ::T`: bias towards attended alternative (lower indicates more bias)
9+
- `σ::T`: standard deviation of noise in evidence accumulation. σ ∈ ℝ.
10+
- `Δ::T`: constant of evidence accumulation speed (evidence per ms). Δ ∈ ℝ.
11+
- `α::T`: evidence threshold. α ∈ ℝ.
12+
- `z::T`: initial evidence. z ∈ [, α]
13+
- `θ::T`: bias towards attended alternative (lower indicates more bias) Δ ∈ ℝ⁺
1414
- `τ::T`: non-decision time. τ ∈ [0, min_rt]
1515
1616
# Constructors
@@ -71,6 +71,16 @@ struct aDDM{T <: Real} <: AbstractaDDM
7171
α::T
7272
z::T
7373
τ::T
74+
75+
function aDDM::Vector{T}, σ::T, Δ::T, θ::T, α::T, z::T, τ::T) where {T <: Real}
76+
@argcheck σ 0
77+
@argcheck Δ 0
78+
@argcheck θ 0
79+
@argcheck α 0
80+
@argcheck abs(z) α
81+
@argcheck τ 0
82+
return new{T}(ν, σ, Δ, θ, α, z, τ)
83+
end
7484
end
7585

7686
function aDDM(ν, σ, Δ, θ, α, z, τ)
@@ -286,10 +296,8 @@ function increment(rng::AbstractRNG, dist::aDDM, location)
286296
# option 2
287297
elseif location == 2
288298
return -Δ * (ν[2] - θ * ν[1]) + noise(rng, σ)
289-
else
290-
return noise(rng, σ)
291299
end
292-
return -100.0
300+
return noise(rng, σ)
293301
end
294302

295303
noise(rng, σ) = rand(rng, Normal(0, σ))

src/multi_choice_models/LBA.jl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,13 @@ mutable struct LBA{T <: Real, T1 <: Union{<:T, Vector{<:T}}} <: AbstractLBA{T, T
4141
A::T
4242
k::T
4343
τ::T
44+
function LBA::Vector{T}, σ::T1, A::T, k::T, τ::T) where {T <: Real, T1 <: Union{<:T, Vector{<:T}}}
45+
@argcheck all.≥ 0)
46+
@argcheck A 0
47+
@argcheck k 0
48+
@argcheck τ 0
49+
return new{T,T1}(ν, σ, A, k, τ)
50+
end
4451
end
4552

4653
function LBA(ν, σ, A, k, τ::T) where {T}

src/multi_choice_models/LNR.jl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@ struct LNR{T <: Real, T1 <: Union{<:T, Vector{<:T}}} <: AbstractLNR{T, T1}
3636
ν::Vector{T}
3737
σ::T1
3838
τ::T
39+
function LNR::Vector{T}, σ::T1, τ::T) where {T <: Real, T1 <: Union{<:T, Vector{<:T}}}
40+
@argcheck all.≥ 0)
41+
@argcheck τ 0
42+
return new{T,T1}(ν, σ, τ)
43+
end
3944
end
4045

4146
function LNR(ν, σ, τ::T) where {T}

src/multi_choice_models/MLBA.jl

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,17 @@ mutable struct MLBA{T <: Real, T1 <: Union{<:T, Vector{<:T}}} <: AbstractMLBA{T,
6969
A::T
7070
k::T
7171
τ::T
72+
function MLBA::Vector{T}, β₀::T, λₚ::T, λₙ::T, γ::T, σ::T1, A::T, k::T, τ::T) where {T <: Real, T1 <: Union{<:T, Vector{<:T}}}
73+
@argcheck β₀ 0
74+
@argcheck λₚ 0
75+
@argcheck λₙ 0
76+
@argcheck γ 0
77+
@argcheck σ 0
78+
@argcheck A 0
79+
@argcheck k 0
80+
@argcheck τ 0
81+
return new{T,T1}(ν, β₀, λₚ, λₙ, γ, σ, A, k, τ)
82+
end
7283
end
7384

7485
function MLBA(ν, β₀, λₚ, λₙ, γ, σ, A, k::T, τ) where {T}

src/multi_choice_models/RDM.jl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,13 @@ struct RDM{T <: Real} <: AbstractRDM
119119
A::T
120120
k::T
121121
τ::T
122+
123+
function RDM::Vector{T}, A::T, k::T, τ::T) where {T <: Real}
124+
@argcheck A 0
125+
@argcheck k 0
126+
@argcheck τ 0
127+
return new{T}(ν, A, k, τ)
128+
end
122129
end
123130

124131
function RDM(ν, A, k::T, τ) where {T}

src/multi_choice_models/poisson_race.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,12 @@ struct PoissonRace{T <: Real} <: AbstractPoissonRace
3434
ν::Vector{T}
3535
α::Vector{Int}
3636
τ::T
37+
function PoissonRace::Vector{T}, α::Vector{Int}, τ::T) where {T <: Real}
38+
@argcheck length(ν) == length(α)
39+
@argcheck all.≥ 0)
40+
@argcheck τ 0
41+
return new{T}(ν, α, τ)
42+
end
3743
end
3844

3945
function PoissonRace(ν, α, τ::T) where {T}

src/single_choice_models/ShiftedLogNormal.jl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@ struct ShiftedLogNormal{T <: Real} <: AbstractShiftedLogNormal
3636
ν::T
3737
σ::T
3838
τ::T
39+
function ShiftedLogNormal::T, σ::T, τ::T) where {T <: Real}
40+
@argcheck σ 0
41+
@argcheck τ 0
42+
return new{T}(ν, σ, τ)
43+
end
3944
end
4045

4146
ShiftedLogNormal(ν, σ, τ) = ShiftedLogNormal(promote(ν, σ, τ)...)

src/single_choice_models/Wald.jl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ struct Wald{T <: Real} <: AbstractWald
3737
ν::T
3838
α::T
3939
τ::T
40+
function Wald::T, α::T, τ::T) where {T <: Real}
41+
@argcheck α 0
42+
@argcheck τ 0
43+
return new{T}(ν, α, τ)
44+
end
4045
end
4146

4247
Wald(; ν = 1.5, α = 0.75, τ = 0.20) = Wald(ν, α, τ)

0 commit comments

Comments
 (0)