Skip to content

Commit 08ccc68

Browse files
committed
up
1 parent 9a9d861 commit 08ccc68

File tree

2 files changed

+38
-22
lines changed

2 files changed

+38
-22
lines changed

src/reactionsystem.jl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -186,8 +186,9 @@ function Reaction(rate, subs, prods, substoich, prodstoich;
186186
convert.(stoich_type, netstoich) : netstoich
187187
end
188188

189-
# Check that all metadata entries are unique.
190-
if any(metadata[i] in metadata[i+1:end] for i in eachindex(metadata))
189+
# Check that all metadata entries are unique. (cannot use `in` since some entries may be symbolics).
190+
if any(any(isequal(metadata[i][1], entry[1]) for entry in metadata[i+1:end])
191+
for i in eachindex(metadata))
191192
error("Repeated entries for the same metadata encountered in the following metadata set: $([entry[1] for entry in metadata]).")
192193
end
193194

test/reactionsystem_structure/reactions.jl

Lines changed: 35 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ let
1616
metadata = [:noise_scaling => 0.0]
1717
r = Reaction(k, [X], [X2], [2], [1]; metadata=metadata)
1818

19-
@test get_metadata_dict(r) == [:noise_scaling => 0.0]
20-
@test has_metadata(r, :noise_scaling)
21-
@test !has_metadata(r, :nonexisting_metadata)
22-
@test get_metadata(r, :noise_scaling) == 0.0
19+
@test Catalyst.get_metadata_dict(r) == [:noise_scaling => 0.0]
20+
@test Catalyst.has_metadata(r, :noise_scaling)
21+
@test !Catalyst.has_metadata(r, :nonexisting_metadata)
22+
@test Catalyst.get_metadata(r, :noise_scaling) == 0.0
2323

2424
metadata_repeated = [:noise_scaling => 0.0, :noise_scaling => 1.0, :metadata_entry => "unused"]
2525
@test_throws Exception Reaction(k, [X], [X2], [2], [1]; metadata=metadata_repeated)
@@ -36,8 +36,8 @@ let
3636
r2 = Reaction(k, [X], [X2], [2], [1]; metadata=metadata)
3737

3838
@test isequal(r1, r2)
39-
@test get_metadata_dict(r1) == Pair{Symbol,Any}[]
40-
@test !has_metadata(r1, :md)
39+
@test Catalyst.get_metadata_dict(r1) == Pair{Symbol,Any}[]
40+
@test !Catalyst.has_metadata(r1, :md)
4141
end
4242

4343
# Tests creation.
@@ -57,19 +57,34 @@ let
5757
push!(metadata, :md_6 => (0.1, 2.0))
5858
r = Reaction(k, [X], [X2], [2], [1]; metadata=metadata)
5959

60-
@test get_metadata_dict(r) isa Vector{Pair{Symbol,Any}}
61-
@test has_metadata(r, :md_1)
62-
@test has_metadata(r, :md_2)
63-
@test has_metadata(r, :md_3)
64-
@test has_metadata(r, :md_4)
65-
@test has_metadata(r, :md_5)
66-
@test has_metadata(r, :md_6)
67-
@test !has_metadata(r, :md_8)
60+
@test Catalyst.get_metadata_dict(r) isa Vector{Pair{Symbol,Any}}
61+
@test Catalyst.has_metadata(r, :md_1)
62+
@test Catalyst.has_metadata(r, :md_2)
63+
@test Catalyst.has_metadata(r, :md_3)
64+
@test Catalyst.has_metadata(r, :md_4)
65+
@test Catalyst.has_metadata(r, :md_5)
66+
@test Catalyst.has_metadata(r, :md_6)
67+
@test !Catalyst.has_metadata(r, :md_8)
6868

69-
@test isequal(get_metadata(r, :md_1), 1.0)
70-
@test isequal(get_metadata(r, :md_2), false)
71-
@test isequal(get_metadata(r, :md_3), "Hello world")
72-
@test isequal(get_metadata(r, :md_4), :sym)
73-
@test isequal(get_metadata(r, :md_5), X + X2^k -1)
74-
@test isequal(get_metadata(r, :md_6), (0.1, 2.0))
69+
@test isequal(Catalyst.get_metadata(r, :md_1), 1.0)
70+
@test isequal(Catalyst.get_metadata(r, :md_2), false)
71+
@test isequal(Catalyst.get_metadata(r, :md_3), "Hello world")
72+
@test isequal(Catalyst.get_metadata(r, :md_4), :sym)
73+
@test isequal(Catalyst.get_metadata(r, :md_5), X + X2^k -1)
74+
@test isequal(Catalyst.get_metadata(r, :md_6), (0.1, 2.0))
75+
end
76+
77+
# Noise scaling metadata.
78+
let
79+
@variables t
80+
@parameters k η
81+
@species X(t) X2(t)
82+
83+
metadata = Pair{Symbol,Any}[]
84+
push!(metadata, :noise_scaling => η)
85+
r1 = Reaction(k, [X], [X2], [2], [1])
86+
r2 = Reaction(k, [X], [X2], [2], [1]; metadata=metadata)
87+
88+
@test isequal(Catalyst.getnoisescaling(r1), 1.0)
89+
@test isequal(Catalyst.getnoisescaling(r2), η)
7590
end

0 commit comments

Comments
 (0)