Skip to content

Commit 5130cec

Browse files
Added benchmark in Synapse
1 parent 7c7b7b2 commit 5130cec

File tree

1 file changed

+142
-114
lines changed

1 file changed

+142
-114
lines changed

benchmarks/HybridJumps/Synapse.jmd

Lines changed: 142 additions & 114 deletions
Original file line numberDiff line numberDiff line change
@@ -1894,21 +1894,22 @@ First, we define the problem for the `PDMP` package.
18941894

18951895
```julia
18961896
function SynapseProblem(
1897-
xc,
1898-
xd,
1899-
t1,
1900-
t2,
1901-
events_bap,
1902-
bap_by_epsp,
1903-
glu,
1904-
p_synapse,
1905-
nu,
1906-
algo::T,
1907-
agg = nothing;
1908-
saveat = [],
1909-
save_everystep = isempty(saveat),
1910-
kwargs...
1911-
) where {T <: CHV}
1897+
xc,
1898+
xd,
1899+
t1,
1900+
t2,
1901+
events_bap,
1902+
bap_by_epsp,
1903+
glu,
1904+
p_synapse,
1905+
nu,
1906+
algo::T,
1907+
agg = nothing
1908+
vr_agg = VR_FRM();
1909+
saveat = [],
1910+
save_everystep = isempty(saveat),
1911+
kwargs...,
1912+
) where {T<:CHV}
19121913
problem = PDMP.PDMPProblem(
19131914
(dxc, xc, xd, p, t) -> F_synapse(dxc, xc, xd, p, t, events_bap, bap_by_epsp),
19141915
(rate, xc, xd, p, t, sum_rate) -> R_synapse(rate, xc, xd, p, t, sum_rate, glu),
@@ -2066,22 +2067,23 @@ function buildRxDependencyGraph(nu)
20662067
end
20672068

20682069
function SynapseProblem(
2069-
xc,
2070-
xd,
2071-
t1,
2072-
t2,
2073-
events_bap,
2074-
bap_by_epsp,
2075-
glu,
2076-
p_synapse,
2077-
nu,
2078-
algo,
2079-
agg;
2080-
jumps = nothing,
2081-
save_positions = (false, true),
2082-
saveat = [],
2083-
save_everystep = isempty(saveat),
2084-
kwargs...
2070+
xc,
2071+
xd,
2072+
t1,
2073+
t2,
2074+
events_bap,
2075+
bap_by_epsp,
2076+
glu,
2077+
p_synapse,
2078+
nu,
2079+
algo,
2080+
agg
2081+
vr_agg;
2082+
jumps = nothing,
2083+
save_positions = (false, true),
2084+
saveat = [],
2085+
save_everystep = isempty(saveat),
2086+
kwargs...,
20852087
)
20862088
p = (
20872089
xd0 = copy(xd),
@@ -2107,6 +2109,7 @@ function SynapseProblem(
21072109
oprob,
21082110
agg,
21092111
jumps;
2112+
vr_aggregator = vr_agg,
21102113
dep_graph,
21112114
save_positions,
21122115
saveat,
@@ -2125,22 +2128,23 @@ We define functions to run the evolution of the whole synapse. The evolution inc
21252128
```julia
21262129
# adapted from SynapseElife/src/SynapseModel.jl
21272130
function evolveSynapse(
2128-
xc0::Vector{T},
2129-
xd0,
2130-
p_synapse::SynapseParams,
2131-
events_sorted_times,
2132-
is_pre_or_post_event,
2133-
bap_by_epsp,
2134-
is_glu_released,
2135-
nu,
2136-
algos,
2137-
agg = nothing;
2138-
progress = false,
2139-
abstol = 1e-8,
2140-
reltol = 1e-7,
2141-
save_positions = (false, true),
2142-
saveat = [],
2143-
kwargs...
2131+
xc0::Vector{T},
2132+
xd0,
2133+
p_synapse::SynapseParams,
2134+
events_sorted_times,
2135+
is_pre_or_post_event,
2136+
bap_by_epsp,
2137+
is_glu_released,
2138+
nu,
2139+
algos,
2140+
agg = nothing
2141+
vr_agg = VR_FRM();
2142+
progress = false,
2143+
abstol = 1e-8,
2144+
reltol = 1e-7,
2145+
save_positions = (false, true),
2146+
saveat = [],
2147+
kwargs...,
21442148
) where {T}
21452149
tt, XC,
21462150
XD = evolveSynapse_noformat(
@@ -2153,7 +2157,8 @@ function evolveSynapse(
21532157
is_glu_released,
21542158
nu,
21552159
algos,
2156-
agg;
2160+
agg
2161+
vr_agg;
21572162
progress,
21582163
abstol,
21592164
reltol,
@@ -2167,22 +2172,23 @@ end
21672172

21682173
# adapted from SynapseElife/src/SynapseModel.jl
21692174
function evolveSynapse_noformat(
2170-
xc0::Vector{T},
2171-
xd0,
2172-
p_synapse::SynapseParams,
2173-
events_sorted_times,
2174-
is_pre_or_post_event,
2175-
bap_by_epsp,
2176-
is_glu_released,
2177-
nu,
2178-
algos,
2179-
agg = nothing;
2180-
progress = false,
2181-
abstol = 1e-8,
2182-
reltol = 1e-7,
2183-
save_positions = (false, true),
2184-
saveat = [],
2185-
kwargs...
2175+
xc0::Vector{T},
2176+
xd0,
2177+
p_synapse::SynapseParams,
2178+
events_sorted_times,
2179+
is_pre_or_post_event,
2180+
bap_by_epsp,
2181+
is_glu_released,
2182+
nu,
2183+
algos,
2184+
agg = nothing
2185+
vr_agg = VR_FRM();
2186+
progress = false,
2187+
abstol = 1e-8,
2188+
reltol = 1e-7,
2189+
save_positions = (false, true),
2190+
saveat = [],
2191+
kwargs...,
21862192
) where {T}
21872193
if save_positions isa Tuple{Bool, Bool}
21882194
save_positionsON = save_positions
@@ -2209,53 +2215,50 @@ function evolveSynapse_noformat(
22092215
events_bap = events_sorted_times[is_pre_or_post_event .== false]
22102216

22112217
# function to simulate the synapse when Glutamate is ON
2212-
SimGluON = (xc,
2213-
xd,
2214-
t1,
2215-
t2,
2216-
glu) -> SynapseProblem(
2217-
xc,
2218-
xd,
2219-
t1,
2220-
t2,
2221-
events_bap,
2222-
bap_by_epsp,
2223-
glu,
2224-
p_synapse,
2225-
nu,
2226-
algos[1],
2227-
agg;
2228-
jumps,
2229-
reltol,
2230-
abstol,
2231-
saveat,
2232-
save_positions = save_positionsON,
2233-
kwargs...
2234-
)
2218+
SimGluON =
2219+
(xc, xd, t1, t2, glu) -> SynapseProblem(
2220+
xc,
2221+
xd,
2222+
t1,
2223+
t2,
2224+
events_bap,
2225+
bap_by_epsp,
2226+
glu,
2227+
p_synapse,
2228+
nu,
2229+
algos[1],
2230+
agg
2231+
vr_agg;
2232+
jumps,
2233+
reltol,
2234+
abstol,
2235+
saveat,
2236+
save_positions = save_positionsON,
2237+
kwargs...,
2238+
)
22352239

22362240
# function to simulate the synapse when Glutamate is OFF
2237-
SimGluOFF = (xc,
2238-
xd,
2239-
t1,
2240-
t2) -> SynapseProblem(
2241-
xc,
2242-
xd,
2243-
t1,
2244-
t2,
2245-
events_bap,
2246-
bap_by_epsp,
2247-
zero(T),
2248-
p_synapse,
2249-
nu,
2250-
algos[2],
2251-
agg;
2252-
jumps,
2253-
reltol,
2254-
abstol,
2255-
saveat,
2256-
save_positions = save_positionsOFF,
2257-
kwargs...
2258-
)
2241+
SimGluOFF =
2242+
(xc, xd, t1, t2) -> SynapseProblem(
2243+
xc,
2244+
xd,
2245+
t1,
2246+
t2,
2247+
events_bap,
2248+
bap_by_epsp,
2249+
zero(T),
2250+
p_synapse,
2251+
nu,
2252+
algos[2],
2253+
agg
2254+
vr_agg;
2255+
jumps,
2256+
reltol,
2257+
abstol,
2258+
saveat,
2259+
save_positions = save_positionsOFF,
2260+
kwargs...,
2261+
)
22592262

22602263
# random variable for Glutamate concentration
22612264
gluDist = Gamma(1 / p_synapse.glu_cv^2, p_synapse.glu_cv^2)
@@ -2368,15 +2371,38 @@ const algorithms = (
23682371
(
23692372
label = "PDMP",
23702373
agg = nothing,
2374+
vr_agg = VR_FRM(),
23712375
solver = (CHV(solver), CHV(solver)),
2372-
saveat = []
2376+
saveat = [],
23732377
),
23742378
(
23752379
label = "Coevolve",
23762380
agg = Coevolve(),
2381+
vr_agg = VR_FRM(),
23772382
solver = (solver, solver),
2378-
saveat = 1 / p_synapse.sampling_rate
2379-
)
2383+
saveat = 1 / p_synapse.sampling_rate,
2384+
),
2385+
(
2386+
label = "VR_Direct",
2387+
agg = Coevolve(),
2388+
vr_agg = VR_Direct(),
2389+
solver = (solver, solver),
2390+
saveat = 1 / p_synapse.sampling_rate,
2391+
),
2392+
(
2393+
label = "VR_DirectFW",
2394+
agg = Coevolve(),
2395+
vr_agg = VR_DirectFW(),
2396+
solver = (solver, solver),
2397+
saveat = 1 / p_synapse.sampling_rate,
2398+
),
2399+
(
2400+
label = "VR_FRM",
2401+
agg = Coevolve(),
2402+
vr_agg = VR_FRM(),
2403+
solver = (solver, solver),
2404+
saveat = 1 / p_synapse.sampling_rate,
2405+
),
23802406
);
23812407
```
23822408

@@ -2398,7 +2424,8 @@ for algo in algorithms
23982424
[true],
23992425
nu,
24002426
algo.solver,
2401-
algo.agg;
2427+
algo.agg
2428+
alg.vr_agg;
24022429
save_positions = (false, true),
24032430
saveat = algo.saveat,
24042431
save_everystep = false
@@ -2443,7 +2470,8 @@ for algo in algorithms
24432470
[true],
24442471
nu,
24452472
$(algo).solver,
2446-
$(algo).agg;
2473+
$(algo).agg
2474+
$(algo).vr_agg;
24472475
save_positions = (false, true),
24482476
saveat = $(algo).saveat,
24492477
save_everystep = false

0 commit comments

Comments
 (0)