Skip to content

Commit d4b508f

Browse files
committed
Refactoring while solving downstream issue with Vector{Any}.
1 parent b154436 commit d4b508f

File tree

1 file changed

+8
-40
lines changed

1 file changed

+8
-40
lines changed

src/systems/validation.jl

Lines changed: 8 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -68,40 +68,6 @@ function _validate(terms::Vector, labels::Vector{String}; info::String = "")
6868
allthere && allmatching
6969
end
7070

71-
function validate(eq::ModelingToolkit.Equation; info::String = "")
72-
labels = ["left-hand side", "right-hand side"]
73-
terms = [eq.lhs, eq.rhs]
74-
_validate(terms, labels, info = info)
75-
end
76-
77-
function validate(eq::ModelingToolkit.Equation, noiseterm; info::String = "")
78-
labels = ["left-hand side", "right-hand side", "noise term"]
79-
terms = [eq.lhs, eq.rhs, noiseterm]
80-
_validate(terms, labels, info = info)
81-
end
82-
83-
function validate(eq::ModelingToolkit.Equation, noisevec::Vector; info::String = "")
84-
labels = vcat(["left-hand side", "right-hand side"], "noise term #".* string.(1:length(noisevec)))
85-
terms = vcat([eq.lhs, eq.rhs], noisevec)
86-
_validate(terms, labels, info = info)
87-
end
88-
89-
function validate(eqs::Vector{ModelingToolkit.Equation}; info::String = "")
90-
all([validate(eqs[idx], info = info*"in eq. #$idx") for idx in 1:length(eqs)])
91-
end
92-
93-
function validate(eqs::Vector{ModelingToolkit.Equation}, noise::Vector)
94-
all([validate(eqs[idx], noise[idx], info = "in eq. #$idx") for idx in 1:length(eqs)])
95-
end
96-
97-
function validate(eqs::Vector{ModelingToolkit.Equation}, noise::Matrix)
98-
all([validate(eqs[idx], noise[idx, :], info = "in eq. #$idx") for idx in 1:length(eqs)])
99-
end
100-
101-
function validate(terms::Vector{<:SymbolicUtils.Symbolic})
102-
_validate(terms,["in term #$idx" for idx in 1:length(terms)],info = "")
103-
end
104-
10571
function validate(jump::Union{ModelingToolkit.VariableRateJump, ModelingToolkit.ConstantRateJump}, t::Symbolic; info::String = "")
10672
_validate([jump.rate, 1/t], ["rate", "1/t"], info = info) && # Assuming the rate is per time units
10773
validate(jump.affect!,info = info)
@@ -117,19 +83,21 @@ function validate(jump::ModelingToolkit.MassActionJump, t::Symbolic; info::Strin
11783
allgood && _validate([jump.scaled_rates, 1/(t*base_unitful^n)], ["scaled_rates", "1/(t*reactants^$n))"], info = info)
11884
end
11985

120-
function validate(jumps::Vector{<:JumpType}, t::Symbolic; info::String = "")
121-
all([validate(jumps[idx], t, info = info*"in jump #$idx") for idx in 1:length(jumps)])
122-
end
123-
12486
function validate(jumps::ArrayPartition{<:Union{Any, Vector{<:JumpType}}}, t::Symbolic)
12587
labels = ["in Mass Action Jumps, ", "in Constant Rate Jumps, ", "in Variable Rate Jumps, "]
12688
all([validate(jumps.x[idx], t, info = labels[idx]) for idx in 1:3])
12789
end
12890

129-
validate(eqs::Vector{<:ModelingToolkit.Reaction}) = validate(oderatelaw.(eqs))
91+
validate(eq::ModelingToolkit.Reaction; info::String = "") = _validate([oderatelaw(eq)],["",], info = info)
92+
validate(eq::ModelingToolkit.Equation; info::String = "") = _validate([eq.lhs, eq.rhs],["left", "right"],info = info)
93+
validate(eq::ModelingToolkit.Equation, term::Union{Symbolic,Unitful.Quantity,Num}; info::String = "") = _validate([eq.lhs, eq.rhs, term],["left","right","noise"],info = info)
94+
validate(eq::ModelingToolkit.Equation, terms::Vector; info::String = "") = _validate(vcat([eq.lhs, eq.rhs], terms),vcat(["left", "right"], "noise #".*string.(1:length(terms))), info = info)
13095

13196
"Returns true iff units of equations are valid."
132-
validate(eqs::Vector{Any}) = length(eqs) == 0
97+
validate(eqs::Vector; info::String = "") = all([validate(eqs[idx], info = info*"in eq. #$idx") for idx in 1:length(eqs)])
98+
validate(eqs::Vector, noise::Vector; info::String = "") = all([validate(eqs[idx], noise[idx], info = info*"in eq. #$idx") for idx in 1:length(eqs)])
99+
validate(eqs::Vector, noise::Matrix; info::String = "") = all([validate(eqs[idx], noise[idx, :], info = info*"in eq. #$idx") for idx in 1:length(eqs)])
100+
validate(eqs::Vector, term::Symbolic; info::String = "") = all([validate(eqs[idx], term, info = info*"in eq. #$idx") for idx in 1:length(eqs)])
133101

134102
"Throws error if units of equations are invalid."
135103
check_units(eqs...) = validate(eqs...) || throw(ArgumentError("Some equations had invalid units. See warnings for details."))

0 commit comments

Comments
 (0)