From b428247c1e42b75341368f9755952a3efa707481 Mon Sep 17 00:00:00 2001 From: Helmut Strey Date: Fri, 12 Jan 2024 15:24:42 -0300 Subject: [PATCH 01/22] removed commented out sections in GUI.jl and made ObserverBlox not show up in GUI --- src/Neuroblox.jl | 2 +- src/gui/GUI.jl | 185 ----------------------------------------------- 2 files changed, 1 insertion(+), 186 deletions(-) diff --git a/src/Neuroblox.jl b/src/Neuroblox.jl index 2bd4cd2c..f0551345 100644 --- a/src/Neuroblox.jl +++ b/src/Neuroblox.jl @@ -52,7 +52,7 @@ abstract type AbstractNeuronBlox <: AbstractBlox end abstract type NeuralMassBlox <: AbstractBlox end abstract type CompositeBlox <: AbstractBlox end abstract type StimulusBlox <: AbstractBlox end -abstract type ObserverBlox <: AbstractBlox end +abstract type ObserverBlox end # not AbstractBlox since it should not show up in the GUI # we define these in neural_mass.jl # abstract type HarmonicOscillatorBlox <: NeuralMassBlox end diff --git a/src/gui/GUI.jl b/src/gui/GUI.jl index 6b630b1e..4f8c1d94 100644 --- a/src/gui/GUI.jl +++ b/src/gui/GUI.jl @@ -61,21 +61,6 @@ const MENU = "menu" const NODE = "node" const LINK = "link" -# function arguments(::Type{Neuroblox.Merger}) -# OrderedDict( -# ) -# end - -# function arguments(::Type{Neuroblox.LinHemo}) -# OrderedDict( -# ) -# end - -# function arguments(::Type{Neuroblox.Hemodynamics}) -# OrderedDict( -# ) -# end - function arguments(::Type{Neuroblox.ImageStimulus}) OrderedDict( :height => NCAD(15, INTEGER, 1, 100,[], false), @@ -110,44 +95,6 @@ function outputs(::Type{Neuroblox.WinnerTakeAllBlox}) ["out1","out2","out3","out4","out5"] end -# function arguments(::Type{Neuroblox.LinearNeuralMassBlox}) -# OrderedDict( -# :τ => NCAD(0.01, NUMBER, 1.0, 10.0,[]), -# ) -# end - -# function arguments(::Type{Neuroblox.LinearNeuralMass}) -# OrderedDict( -# :τ => NCAD(0.01, NUMBER, 1.0, 10.0,[]), -# ) -# end - -#TODO: create connector compatible stochastic blox -# function arguments(::Type{Neuroblox.OUBlox}) -# OrderedDict( -# :μ => NCAD(0.0, NUMBER, -100.0, 100.0,[]), -# :τ => NCAD(1.0, NUMBER, 0.00001,10,[]), -# :σ => NCAD(1.0, NUMBER, 0.00001,10,[]) -# ) -# end - -# function arguments(::Type{Neuroblox.OUCouplingBlox}) -# OrderedDict( -# :μ => NCAD(0.0, NUMBER, -100.0, 100.0,[]), -# :τ => NCAD(1.0, NUMBER, 0.00001,10,[]), -# :σ => NCAD(1.0, NUMBER, 0.00001,10,[]) -# ) -# end - -# function arguments(::Type{Neuroblox.HarmonicOscillatorBlox}) -# OrderedDict( -# :ω => NCAD(25*(2*pi), NUMBER, (2*pi), 150*(2*pi),[]), -# :ζ => NCAD(1.0, NUMBER, -1.0, 1.0,[]), -# :k => NCAD(625*(2*pi), NUMBER, (2*pi), 22500*(2*pi),[]), -# :h => NCAD(35.0, NUMBER, 0.01, 90.0,[]) -# ) -# end - function arguments(::Type{Neuroblox.HarmonicOscillator}) OrderedDict( #:measurement => NCAD("Measurement", MENU, 1 , 4 ,["none","fMRI", "EEG", "LFP"]), @@ -163,24 +110,6 @@ function plotdetail(::Type{Neuroblox.HarmonicOscillator}) OrderedDict(:detail => ["x","y"], :nodetail => ["x"]) end -# function arguments(::Type{Neuroblox.JansenRitCBlox}) -# OrderedDict( -# :τ => NCAD(0.001, NUMBER, 0.001, 2.0,[]), -# :H => NCAD(20.0, NUMBER, 0.0, 500.0,[]), -# :λ => NCAD(5.0, NUMBER, 1.0, 25.0,[]), -# :r => NCAD(0.15, NUMBER, 0.1, 5.0,[]) -# ) -# end - -# function arguments(::Type{Neuroblox.JansenRitSCBlox}) -# OrderedDict( -# :τ => NCAD(0.014, NUMBER, 0.001, 0.1,[]), -# :H => NCAD(20.0, NUMBER, 0.0, 500.0,[]), -# :λ => NCAD(400.0, NUMBER, 20.0, 500.0,[]), -# :r => NCAD(0.1, NUMBER, 0.1, 5.0,[]) -# ) -# end - function arguments(::Type{Neuroblox.JansenRit}) OrderedDict( :τ => NCAD(0.014, NUMBER, 0.001, 0.1,[],true), @@ -194,22 +123,6 @@ function plotdetail(::Type{Neuroblox.JansenRit}) OrderedDict(:detail => ["x","y"], :nodetail => ["x"]) end -# function arguments(::Type{Neuroblox.WilsonCowanBlox}) -# OrderedDict( -# :τ_E => NCAD(1.0, NUMBER, 1.0, 100.0,[]), -# :τ_I => NCAD(1.0, NUMBER, 1.0, 100.0,[]), -# :a_E => NCAD(1.2, NUMBER, 1.0, 100.0,[]), -# :a_I => NCAD(2.0, NUMBER, 1.0, 100.0,[]), -# :c_EE => NCAD(5.0, NUMBER, 1.0, 100.0,[]), -# :c_EI => NCAD(10.0, NUMBER, 1.0, 100.0,[]), -# :c_IE => NCAD(6.0, NUMBER, 1.0, 100.0,[]), -# :c_II => NCAD(1.0, NUMBER, 1.0, 100.0,[]), -# :θ_E => NCAD(2.0, NUMBER, 1.0, 100.0,[]), -# :θ_I => NCAD(3.5, NUMBER, 1.0, 100.0,[]), -# :η => NCAD(1.0, NUMBER, 1.0, 100.0,[]) -# ) -# end - function arguments(::Type{Neuroblox.WilsonCowan}) OrderedDict( :τ_E => NCAD(1.0, NUMBER, 1.0, 100.0,[],true), @@ -230,39 +143,6 @@ function plotdetail(::Type{Neuroblox.WilsonCowan}) OrderedDict(:detail => ["E","I"], :nodetail => ["E"]) end -# function arguments(::Type{Neuroblox.LarterBreakspearBlox}) -# OrderedDict( -# :C => NCAD(0.35, NUMBER, 0.0, 1.0,[]), -# :δ_VZ => NCAD(0.61, NUMBER, 0.1, 2.0,[]), -# :T_Ca => NCAD(-0.01, NUMBER, 0.02, -0.04,[]), -# :δ_Ca => NCAD(0.15, NUMBER, 0.1, 0.2,[]), -# :g_Ca => NCAD(1.0, NUMBER, 0.96, 1.01,[]), #tested in Jolien's work/similar to V_Ca in Anthony's paper -# :V_Ca => NCAD(1.0, NUMBER, 0.96, 1.01,[]), #limits established by bifurcation -# :T_K => NCAD(0.0, NUMBER, -0.05, 0.05,[]), -# :δ_K => NCAD(0.3, NUMBER,0.25, 0.35,[]), -# :g_K => NCAD(2.0, NUMBER, 1.95, 2.05,[]), #tested in Jolien's work -# :V_K => NCAD(-0.7, NUMBER, -0.8, -0.6,[]), #limits established by bifurcation -# :T_Na => NCAD(0.3, NUMBER, 0.25, 0.35,[]), -# :δ_Na => NCAD(0.15, NUMBER, 0.1, 0.2,[]), -# :g_Na => NCAD(6.7, NUMBER, 6.6, 6.8,[]), #tested in Botond and Jolien's work -# :V_Na => NCAD(0.53, NUMBER, 0.41, 0.59,[]), #limits established by bifurcation -# :V_L => NCAD(-0.5, NUMBER, -0.6, -0.4,[]), -# :g_L => NCAD(0.5, NUMBER, 0.4, 0.6,[]), -# :V_T => NCAD(0.0, NUMBER, -0.05, 0.05,[]), -# :Z_T => NCAD(0.0, NUMBER, -0.05, 0.05,[]), -# :IS => NCAD(0.3, NUMBER, 0.0, 1.0,[]), -# :a_ee => NCAD(0.36, NUMBER, 0.33, 0.39,[]), #tested in Botond and Jolien's work -# :a_ei => NCAD(2.0, NUMBER, 1.95, 2.05,[]), #tested in Botond and Jolien's work -# :a_ie => NCAD(2.0, NUMBER, 1.95, 2.05,[]), #testing in Jolien's work -# :a_ne => NCAD(1.0, NUMBER, 0.95, 1.05,[]), -# :a_ni => NCAD(0.4, NUMBER, 0.3, 0.5,[]), -# :b => NCAD(0.1, NUMBER, 0.05, 0.15,[]), -# :τ_K => NCAD(1.0, NUMBER, 0.8, 1.2,[]), #shouldn't be varied, but useful in bifurcations to "harshen" the potassium landscape -# :ϕ => NCAD(0.7, NUMBER, 0.6, 0.8,[]), -# :r_NMDA => NCAD( 0.25, NUMBER, 0.2, 0.3,[]) #tested in Botond's work -# ) -# end - function arguments(::Type{Neuroblox.LarterBreakspear}) OrderedDict( :C => NCAD(0.35, NUMBER, 0.0, 1.0,[],true), @@ -300,17 +180,6 @@ function plotdetail(::Type{Neuroblox.LarterBreakspear}) OrderedDict(:detail => ["V","Z","W"], :nodetail => ["V"]) end -# function arguments(::Type{Neuroblox.NextGenerationBlox}) -# OrderedDict( -# :C => NCAD(30.0, NUMBER, 1.0, 50.0,[]), -# :Δ => NCAD(1.0, NUMBER, 0.01, 100.0,[]), -# :η_0 => NCAD(5.0, NUMBER, 0.01, 20.0,[]), -# :v_syn => NCAD(-10.0, NUMBER, -20.0, 0.0,[]), -# :alpha_inv => NCAD(35.0, NUMBER, 0.01, 10.0,[]), -# :k => NCAD(0.105, NUMBER, 0.01, 2.0,[]) -# ) -# end - function arguments(::Type{Neuroblox.NextGenerationEIBlox}) OrderedDict( :Cₑ => NCAD(52.0, NUMBER, 1.0, 50.0,[],true), @@ -366,28 +235,6 @@ function info_link(::Type{Neuroblox.HebbianPlasticity}) Dict(:link => "https://www.neuroblox.org") end -#TODO: create connector compatible CMC -# function arguments(::Type{Neuroblox.CanonicalMicroCircuitBlox}) -# OrderedDict( -# :τ_ss => NCAD(0.002, NUMBER, 0.0001, 0.1,[]), -# :τ_sp => NCAD(0.002, NUMBER, 0.0001, 0.1,[]), -# :τ_ii => NCAD(0.016, NUMBER, 0.0001, 0.1,[]), -# :τ_dp => NCAD(0.028, NUMBER, 0.0001, 0.1,[]), -# :r_ss => NCAD(2.0/3.0, NUMBER, 0.1, 5.0,[]), -# :r_sp => NCAD(2.0/3.0, NUMBER, 0.1, 5.0,[]), -# :r_ii => NCAD(2.0/3.0, NUMBER, 0.1, 5.0,[]), -# :r_dp => NCAD(2.0/3.0, NUMBER, 0.1, 5.0,[]) -# ) -# end - -# function inputs(::Type{Neuroblox.CanonicalMicroCircuitBlox}) -# ["in_ss","in_sp","in_ii","in_sp"] -# end - -# function outputs(::Type{Neuroblox.CanonicalMicroCircuitBlox}) -# ["out_ss","out_sp","out_ii","out_sp"] -# end - function arguments(::Type{Neuroblox.Thalamus}) OrderedDict( :N_exci => NCAD(25, INTEGER, 1, 100,[],true), @@ -467,38 +314,6 @@ function arguments(::Type{Neuroblox.GreedyPolicy}) ) end -#TODO: create connector compatible CMC -# function arguments(::Type{Neuroblox.IFNeuronBlox}) #TODO: add correct settings for the arguments -# OrderedDict( -# :C => NCAD(30.0, NUMBER, 1.0, 50.0,[]), -# :E_syn => NCAD(1.0, NUMBER, 0.01, 100.0,[]), -# :G_syn => NCAD(5.0, NUMBER, 0.01, 20.0,[]), -# :I_in => NCAD(-10.0, NUMBER, -20.0, 0.0,[]), -# :freq => NCAD(35.0, NUMBER, 0.01, 10.0,[]), -# :phase => NCAD(0.105, NUMBER, 0.01, 2.0,[]), -# :τ => NCAD(0.105, NUMBER, 0.01, 2.0,[]) -# ) -# end - -# function arguments(::Type{Neuroblox.QIFNeuronBlox}) #TODO: add correct settings for the arguments -# OrderedDict( -# :E_syn => NCAD(1.0, NUMBER, 0.01, 100.0,[]), -# :G_syn => NCAD(5.0, NUMBER, 0.01, 20.0,[]), -# :w => NCAD(-10.0, NUMBER, -20.0, 0.0,[]), -# :τ => NCAD(0.105, NUMBER, 0.01, 2.0,[]) -# ) -# end - -# function arguments(::Type{Neuroblox.LIFNeuronBlox}) #TODO: add correct settings for the arguments -# OrderedDict( -# :I_in => NCAD(0.0, NUMBER, -5.0, 5.0,[]), -# :V_L => NCAD(-70.0, NUMBER, -90, -10,[]), -# :τ => NCAD(10.0, NUMBER, 0.01, 100.0,[]), -# :R => NCAD(100.0, NUMBER, 0.01, 200.0,[]), -# :θ => NCAD(-10.0, NUMBER, -20, 20.0,[]), -# ) -# end - function arguments(::Type{Neuroblox.HHNeuronExciBlox}) #TODO: add correct settings for the arguments OrderedDict( :t_spike_window => NCAD(90.0, NUMBER, 0.1, 100.0,[],true), From f32d74ca68b6a37c6e1e5b17256e78fc9f581464 Mon Sep 17 00:00:00 2001 From: agchesebro <76024790+agchesebro@users.noreply.github.com> Date: Mon, 15 Jan 2024 09:22:33 -0500 Subject: [PATCH 02/22] Remove old component tests * Deleted `jansen_rit_component_tests.jl`. * Renamed `jansen_rit_component_tests_new_timing.jl` to `jansen_rit_component_tests.jl` (removing old examples in favor of updated blocks with ms timing defaults). * Deleted `temp_test.jl` * Deleted `jansen_rit_hemodynamic_tests.jl` * Deleted `test/old_component_tests/*`. These were all old neural mass model tests from pre-`BloxConnector` days that I kept around just in case. Seem redundant now. * @hstrey I think `test/ode_from_graph.jl` can be deleted - looks like old Jansen Rit code that we've incorporated elsewhere or removed entirely. --- test/jansen_rit_component_tests.jl | 60 ++++----- test/jansen_rit_component_tests_new_timing.jl | 126 ------------------ test/jansen_rit_hemodynamic_tests.jl | 43 ------ test/old_component_tests/jansen_rit_tests.jl | 79 ----------- .../larter_breakspear_tests.jl | 21 --- .../old_component_tests/wilson_cowan_tests.jl | 21 --- test/temp_test.jl | 17 --- 7 files changed, 28 insertions(+), 339 deletions(-) delete mode 100644 test/jansen_rit_component_tests_new_timing.jl delete mode 100644 test/jansen_rit_hemodynamic_tests.jl delete mode 100644 test/old_component_tests/jansen_rit_tests.jl delete mode 100644 test/old_component_tests/larter_breakspear_tests.jl delete mode 100644 test/old_component_tests/wilson_cowan_tests.jl delete mode 100644 test/temp_test.jl diff --git a/test/jansen_rit_component_tests.jl b/test/jansen_rit_component_tests.jl index 8f77e5c0..a809737a 100644 --- a/test/jansen_rit_component_tests.jl +++ b/test/jansen_rit_component_tests.jl @@ -1,23 +1,19 @@ -""" -DEPRECATED - -This file uses the old blocks before timing update to be consistent. Use jansen_rit_component_tests_new_timing.jl instead. -""" - using Neuroblox, DifferentialEquations, DataFrames, Test, Distributions, Statistics, LinearAlgebra, Graphs, MetaGraphs, Random +τ_factor = 1000 #needed because the old units were in seconds, and we need ms to be consistent + # Create Regions -@named Str = jansen_ritC(τ=0.0022, H=20, λ=300, r=0.3) -@named GPe = jansen_ritC(τ=0.04, H=20, λ=400, r=0.1) -@named STN = jansen_ritC(τ=0.01, H=20, λ=500, r=0.1) -@named GPi = jansen_ritSC(τ=0.014, H=20, λ=400, r=0.1) -@named Th = jansen_ritSC(τ=0.002, H=10, λ=20, r=5) -@named EI = jansen_ritSC(τ=0.01, H=20, λ=5, r=5) -@named PY = jansen_ritSC(τ=0.001, H=20, λ=5, r=0.15) -@named II = jansen_ritSC(τ=2.0, H=60, λ=5, r=5) +@named Str = jansen_ritC(τ=0.0022*τ_factor, H=20, λ=300, r=0.3) +@named gpe = jansen_ritC(τ=0.04*τ_factor, H=20, λ=400, r=0.1) +@named stn = jansen_ritC(τ=0.01*τ_factor, H=20, λ=500, r=0.1) +@named gpi = jansen_ritSC(τ=0.014*τ_factor, H=20, λ=400, r=0.1) +@named Th = jansen_ritSC(τ=0.002*τ_factor, H=10, λ=20, r=5) +@named EI = jansen_ritSC(τ=0.01*τ_factor, H=20, λ=5, r=5) +@named PY = jansen_ritSC(τ=0.001*τ_factor, H=20, λ=5, r=0.15) +@named II = jansen_ritSC(τ=2.0*τ_factor, H=60, λ=5, r=5) # Connect Regions through Adjacency Matrix -blox = [Str, GPe, STN, GPi, Th, EI, PY, II] +blox = [Str, gpe, stn, gpi, Th, EI, PY, II] sys = [s.odesystem for s in blox] connect = [s.connector for s in blox] @@ -34,10 +30,10 @@ adj_matrix_lin = [0 0 0 0 0 0 0 0; @named CBGTC_Circuit_lin = LinearConnections(sys=sys, adj_matrix=adj_matrix_lin, connector=connect) -sim_dur = 10.0 # Simulate for 10 Seconds +sim_dur = 2000.0 # Simulate for 2 seconds mysys = structural_simplify(CBGTC_Circuit_lin) -sol = simulate(mysys, [], (0.0, sim_dur), [], Vern7(); saveat=0.001) -@test sol[!, "GPi₊x(t)"][4] ≈ -0.48421810231972134 +sol = simulate(mysys, [], (0.0, sim_dur), [], Vern7(); saveat=1) +@test sol[!, "gpi₊x(t)"][4] ≈ -2219.2560209502685 #updated to new value in ms """ Testing new Jansen-Rit blox @@ -50,15 +46,15 @@ same thing as the old simulate call with AutoVern7(Rodas4() since there are no d """ # test new Jansen-Rit blox -@named Str = JansenRit(τ=0.0022, H=20, λ=300, r=0.3) -@named GPe = JansenRit(τ=0.04, cortical=false) # all default subcortical except τ -@named STN = JansenRit(τ=0.01, H=20, λ=500, r=0.1) -@named GPi = JansenRit(cortical=false) # default parameters subcortical Jansen Rit blox -@named Th = JansenRit(τ=0.002, H=10, λ=20, r=5) -@named EI = JansenRit(τ=0.01, H=20, λ=5, r=5) +@named Str = JansenRit(τ=0.0022*τ_factor, H=20, λ=300, r=0.3) +@named gpe = JansenRit(τ=0.04*τ_factor, cortical=false) # all default subcortical except τ +@named stn = JansenRit(τ=0.01*τ_factor, H=20, λ=500, r=0.1) +@named gpi = JansenRit(cortical=false) # default parameters subcortical Jansen Rit blox +@named Th = JansenRit(τ=0.002*τ_factor, H=10, λ=20, r=5) +@named EI = JansenRit(τ=0.01*τ_factor, H=20, λ=5, r=5) @named PY = JansenRit(cortical=true) # default parameters cortical Jansen Rit blox -@named II = JansenRit(τ=2.0, H=60, λ=5, r=5) -blox = [Str, GPe, STN, GPi, Th, EI, PY, II] +@named II = JansenRit(τ=2.0*τ_factor, H=60, λ=5, r=5) +blox = [Str, gpe, stn, gpi, Th, EI, PY, II] # test graphs g = MetaDiGraph() @@ -99,16 +95,16 @@ add_edge!(g, 8, 8, Dict(:weight => 3.3*C_Cor)) @named final_system = system_from_graph(g, params) final_delays = graph_delays(g) -sim_dur = 10.0 # Simulate for 10 Seconds +sim_dur = 2000.0 # Simulate for 2 Seconds final_system_sys = structural_simplify(final_system) prob = DDEProblem(final_system_sys, [], (0.0, sim_dur), constant_lags = final_delays) alg = MethodOfSteps(Vern7()) -sol_dde_no_delays = solve(prob, alg, saveat=0.001) +sol_dde_no_delays = solve(prob, alg, saveat=1) sol2 = DataFrame(sol_dde_no_delays) -@test isapprox(sol2[!, "GPi₊x(t)"][500:1000], sol[!, "GPi₊x(t)"][500:1000], rtol=1e-8) +@test isapprox(sol2[!, "gpi₊x(t)"][500:1000], sol[!, "gpi₊x(t)"][500:1000], rtol=1e-8) # Alternative version using adjacency matrix @@ -118,13 +114,13 @@ create_adjacency_edges!(g2, adj_matrix_lin) @named final_system = system_from_graph(g2, params) final_delays = graph_delays(g2) -sim_dur = 600.0 # Simulate for 10 Seconds +sim_dur = 2000.0 # Simulate for 2 Seconds final_system_sys = structural_simplify(final_system) prob = DDEProblem(final_system_sys, [], (0.0, sim_dur), constant_lags = final_delays) alg = MethodOfSteps(Vern7()) -sol_dde_no_delays = solve(prob, alg, saveat=0.001) +sol_dde_no_delays = solve(prob, alg, saveat=1) sol3 = DataFrame(sol_dde_no_delays) -@test isapprox(sol3[!, "GPi₊x(t)"][500:1000], sol[!, "GPi₊x(t)"][500:1000], rtol=1e-8) \ No newline at end of file +@test isapprox(sol3[!, "gpi₊x(t)"][500:1000], sol[!, "gpi₊x(t)"][500:1000], rtol=1e-8) \ No newline at end of file diff --git a/test/jansen_rit_component_tests_new_timing.jl b/test/jansen_rit_component_tests_new_timing.jl deleted file mode 100644 index a809737a..00000000 --- a/test/jansen_rit_component_tests_new_timing.jl +++ /dev/null @@ -1,126 +0,0 @@ -using Neuroblox, DifferentialEquations, DataFrames, Test, Distributions, Statistics, LinearAlgebra, Graphs, MetaGraphs, Random - -τ_factor = 1000 #needed because the old units were in seconds, and we need ms to be consistent - -# Create Regions -@named Str = jansen_ritC(τ=0.0022*τ_factor, H=20, λ=300, r=0.3) -@named gpe = jansen_ritC(τ=0.04*τ_factor, H=20, λ=400, r=0.1) -@named stn = jansen_ritC(τ=0.01*τ_factor, H=20, λ=500, r=0.1) -@named gpi = jansen_ritSC(τ=0.014*τ_factor, H=20, λ=400, r=0.1) -@named Th = jansen_ritSC(τ=0.002*τ_factor, H=10, λ=20, r=5) -@named EI = jansen_ritSC(τ=0.01*τ_factor, H=20, λ=5, r=5) -@named PY = jansen_ritSC(τ=0.001*τ_factor, H=20, λ=5, r=0.15) -@named II = jansen_ritSC(τ=2.0*τ_factor, H=60, λ=5, r=5) - -# Connect Regions through Adjacency Matrix -blox = [Str, gpe, stn, gpi, Th, EI, PY, II] -sys = [s.odesystem for s in blox] -connect = [s.connector for s in blox] - -@parameters C_Cor=60 C_BG_Th=60 C_Cor_BG_Th=5 C_BG_Th_Cor=5 - -adj_matrix_lin = [0 0 0 0 0 0 0 0; - -0.5*C_BG_Th -0.5*C_BG_Th C_BG_Th 0 0 0 0 0; - 0 -0.5*C_BG_Th 0 0 0 0 C_Cor_BG_Th 0; - 0 -0.5*C_BG_Th C_BG_Th 0 0 0 0 0; - 0 0 0 -0.5*C_BG_Th 0 0 0 0; - 0 0 0 0 C_BG_Th_Cor 0 6*C_Cor 0; - 0 0 0 0 0 4.8*C_Cor 0 -1.5*C_Cor; - 0 0 0 0 0 0 1.5*C_Cor 3.3*C_Cor] - -@named CBGTC_Circuit_lin = LinearConnections(sys=sys, adj_matrix=adj_matrix_lin, connector=connect) - -sim_dur = 2000.0 # Simulate for 2 seconds -mysys = structural_simplify(CBGTC_Circuit_lin) -sol = simulate(mysys, [], (0.0, sim_dur), [], Vern7(); saveat=1) -@test sol[!, "gpi₊x(t)"][4] ≈ -2219.2560209502685 #updated to new value in ms - -""" -Testing new Jansen-Rit blox - -This sets up the exact same system as above, but using the JansenRit with different flags cortical/subcortical flags. - -The purpose of this test is to make sure that setting up everything using System rather than ODESystem works as expected. -It also shows test code for the new system_from_graph calls and handling delays when everything is 0 (MethodOfSteps returns the -same thing as the old simulate call with AutoVern7(Rodas4() since there are no delays.) -""" - -# test new Jansen-Rit blox -@named Str = JansenRit(τ=0.0022*τ_factor, H=20, λ=300, r=0.3) -@named gpe = JansenRit(τ=0.04*τ_factor, cortical=false) # all default subcortical except τ -@named stn = JansenRit(τ=0.01*τ_factor, H=20, λ=500, r=0.1) -@named gpi = JansenRit(cortical=false) # default parameters subcortical Jansen Rit blox -@named Th = JansenRit(τ=0.002*τ_factor, H=10, λ=20, r=5) -@named EI = JansenRit(τ=0.01*τ_factor, H=20, λ=5, r=5) -@named PY = JansenRit(cortical=true) # default parameters cortical Jansen Rit blox -@named II = JansenRit(τ=2.0*τ_factor, H=60, λ=5, r=5) -blox = [Str, gpe, stn, gpi, Th, EI, PY, II] - -# test graphs -g = MetaDiGraph() -add_blox!.(Ref(g), blox) - -# Store parameters to be passed later on -params = @parameters C_Cor=60 C_BG_Th=60 C_Cor_BG_Th=5 C_BG_Th_Cor=5 - -add_edge!(g, 2, 1, Dict(:weight => -0.5*C_BG_Th)) -add_edge!(g, 2, 2, Dict(:weight => -0.5*C_BG_Th)) -add_edge!(g, 2, 3, Dict(:weight => C_BG_Th)) -add_edge!(g, 3, 2, Dict(:weight => -0.5*C_BG_Th)) -add_edge!(g, 3, 7, Dict(:weight => C_Cor_BG_Th)) -add_edge!(g, 4, 2, Dict(:weight => -0.5*C_BG_Th)) -add_edge!(g, 4, 3, Dict(:weight => C_BG_Th)) -add_edge!(g, 5, 4, Dict(:weight => -0.5*C_BG_Th)) -add_edge!(g, 6, 5, Dict(:weight => C_BG_Th_Cor)) -add_edge!(g, 6, 7, Dict(:weight => 6*C_Cor)) -add_edge!(g, 7, 6, Dict(:weight => 4.8*C_Cor)) -add_edge!(g, 7, 8, Dict(:weight => -1.5*C_Cor)) -add_edge!(g, 8, 7, Dict(:weight => 1.5*C_Cor)) -add_edge!(g, 8, 8, Dict(:weight => 3.3*C_Cor)) - -# add_edge!(g, 2, 1, Dict(:weight => -0.5*60, :delay => 0.01)) -# add_edge!(g, 2, 2, Dict(:weight => -0.5*60, :delay => 0.01)) -# add_edge!(g, 2, 3, Dict(:weight => 60, :delay => 0.01)) -# add_edge!(g, 3, 2, Dict(:weight => -0.5*60, :delay => 0.01)) -# add_edge!(g, 3, 7, Dict(:weight => 5, :delay => 0.01)) -# add_edge!(g, 4, 2, Dict(:weight => -0.5*60, :delay => 0.01)) -# add_edge!(g, 4, 3, Dict(:weight => 60, :delay => 0.01)) -# add_edge!(g, 5, 4, Dict(:weight => -0.5*60, :delay => 0.01)) -# add_edge!(g, 6, 5, Dict(:weight => 5, :delay => 0.01)) -# add_edge!(g, 6, 7, Dict(:weight => 6*60, :delay => 0.01)) -# add_edge!(g, 7, 6, Dict(:weight => 4.8*60, :delay => 0.01)) -# add_edge!(g, 7, 8, Dict(:weight => -1.5*60, :delay => 0.01)) -# add_edge!(g, 8, 7, Dict(:weight => 1.5*60, :delay => 0.01)) -# add_edge!(g, 8, 8, Dict(:weight => 3.3*60, :delay => 0.01)) - -@named final_system = system_from_graph(g, params) -final_delays = graph_delays(g) -sim_dur = 2000.0 # Simulate for 2 Seconds -final_system_sys = structural_simplify(final_system) -prob = DDEProblem(final_system_sys, - [], - (0.0, sim_dur), - constant_lags = final_delays) -alg = MethodOfSteps(Vern7()) -sol_dde_no_delays = solve(prob, alg, saveat=1) -sol2 = DataFrame(sol_dde_no_delays) -@test isapprox(sol2[!, "gpi₊x(t)"][500:1000], sol[!, "gpi₊x(t)"][500:1000], rtol=1e-8) - - -# Alternative version using adjacency matrix -g2 = MetaDiGraph() -add_blox!.(Ref(g2), blox) -create_adjacency_edges!(g2, adj_matrix_lin) - -@named final_system = system_from_graph(g2, params) -final_delays = graph_delays(g2) -sim_dur = 2000.0 # Simulate for 2 Seconds -final_system_sys = structural_simplify(final_system) -prob = DDEProblem(final_system_sys, - [], - (0.0, sim_dur), - constant_lags = final_delays) -alg = MethodOfSteps(Vern7()) -sol_dde_no_delays = solve(prob, alg, saveat=1) -sol3 = DataFrame(sol_dde_no_delays) -@test isapprox(sol3[!, "gpi₊x(t)"][500:1000], sol[!, "gpi₊x(t)"][500:1000], rtol=1e-8) \ No newline at end of file diff --git a/test/jansen_rit_hemodynamic_tests.jl b/test/jansen_rit_hemodynamic_tests.jl deleted file mode 100644 index 42c796e3..00000000 --- a/test/jansen_rit_hemodynamic_tests.jl +++ /dev/null @@ -1,43 +0,0 @@ -using Neuroblox, DifferentialEquations, DataFrames, Test, Distributions, Statistics, LinearAlgebra, Graphs, MetaGraphs, Random - -# Store parameters to be passed later on -params = @parameters C_Cor=60 C_BG_Th=60 C_Cor_BG_Th=5 C_BG_Th_Cor=5 - -adj_matrix_lin = [0 0 0 0 0 0 0 0 1; - -0.5*C_BG_Th -0.5*C_BG_Th C_BG_Th 0 0 0 0 0 0; - 0 -0.5*C_BG_Th 0 0 0 0 C_Cor_BG_Th 0 0; - 0 -0.5*C_BG_Th C_BG_Th 0 0 0 0 0 0; - 0 0 0 -0.5*C_BG_Th 0 0 0 0 0; - 0 0 0 0 C_BG_Th_Cor 0 6*C_Cor 0 0; - 0 0 0 0 0 4.8*C_Cor 0 -1.5*C_Cor 0; - 0 0 0 0 0 0 1.5*C_Cor 3.3*C_Cor 0; - 0 0 0 0 0 0 0 0 0] - -# test new Jansen-Rit blox -@named Str = JansenRit(τ=0.0022, H=20, λ=300, r=0.3) -@named GPe = JansenRit(τ=0.04, cortical=false) # all default subcortical except τ -@named STN = JansenRit(τ=0.01, H=20, λ=500, r=0.1) -@named GPi = JansenRit(cortical=false) # default parameters subcortical Jansen Rit blox -@named Th = JansenRit(τ=0.002, H=10, λ=20, r=5) -@named EI = JansenRit(τ=0.01, H=20, λ=5, r=5) -@named PY = JansenRit(cortical=true) # default parameters cortical Jansen Rit blox -@named II = JansenRit(τ=2.0, H=60, λ=5, r=5) -@named hemo = AlternativeBalloonModel() -blox = [Str, GPe, STN, GPi, Th, EI, PY, II, hemo] - -# Alternative version using adjacency matrix -g = MetaDiGraph() -add_blox!.(Ref(g), blox) -create_adjacency_edges!(g, adj_matrix_lin) - -@named final_system = system_from_graph(g, params) -final_delays = graph_delays(g) -sim_dur = 600.0 # Simulate for 10 Seconds -final_system_sys = structural_simplify(final_system) -prob = DDEProblem(final_system_sys, - [], - (0.0, sim_dur), - constant_lags = final_delays) -alg = MethodOfSteps(Vern7()) -sol_dde_no_delays = solve(prob, alg, saveat=0.001) -sol3 = DataFrame(sol_dde_no_delays) \ No newline at end of file diff --git a/test/old_component_tests/jansen_rit_tests.jl b/test/old_component_tests/jansen_rit_tests.jl deleted file mode 100644 index 289820aa..00000000 --- a/test/old_component_tests/jansen_rit_tests.jl +++ /dev/null @@ -1,79 +0,0 @@ -using Neuroblox, DifferentialEquations, DataFrames, Test, Distributions, Statistics, LinearAlgebra, Graphs, MetaGraphs, Random - -""" -Tests formerly in components.jl -""" -# Create Regions -@named Str = jansen_ritC(τ=0.0022, H=20, λ=300, r=0.3) -@named GPe = jansen_ritC(τ=0.04, H=20, λ=400, r=0.1) -@named STN = jansen_ritC(τ=0.01, H=20, λ=500, r=0.1) -@named GPi = jansen_ritSC(τ=0.014, H=20, λ=400, r=0.1) -@named Th = jansen_ritSC(τ=0.002, H=10, λ=20, r=5) -@named EI = jansen_ritSC(τ=0.01, H=20, λ=5, r=5) -@named PY = jansen_ritSC(τ=0.001, H=20, λ=5, r=0.15) -@named II = jansen_ritSC(τ=2.0, H=60, λ=5, r=5) - -# Connect Regions through Adjacency Matrix -blox = [Str, GPe, STN, GPi, Th, EI, PY, II] -sys = [s.odesystem for s in blox] -connect = [s.connector for s in blox] - -@parameters C_Cor=60 C_BG_Th=60 C_Cor_BG_Th=5 C_BG_Th_Cor=5 - -adj_matrix_lin = [0 0 0 0 0 0 0 0; - -0.5*C_BG_Th -0.5*C_BG_Th C_BG_Th 0 0 0 0 0; - 0 -0.5*C_BG_Th 0 0 0 0 C_Cor_BG_Th 0; - 0 -0.5*C_BG_Th C_BG_Th 0 0 0 0 0; - 0 0 0 -0.5*C_BG_Th 0 0 0 0; - 0 0 0 0 C_BG_Th_Cor 0 6*C_Cor 0; - 0 0 0 0 0 4.8*C_Cor 0 -1.5*C_Cor; - 0 0 0 0 0 0 1.5*C_Cor 3.3*C_Cor] - -@named CBGTC_Circuit_lin = LinearConnections(sys=sys, adj_matrix=adj_matrix_lin, connector=connect) - -sim_dur = 10.0 # Simulate for 10 Seconds -mysys = structural_simplify(CBGTC_Circuit_lin) -sol = simulate(mysys, [], (0.0, sim_dur), [], Vern7(); saveat=0.001) -@test sol[!, "GPi₊x(t)"][4] ≈ -0.48421810231972134 - -sol = simulate(mysys, random_initials(mysys,blox),(0.0, sim_dur), []) -@test size(sol)[2] == 17 # make sure that all the states are simulated (16 + timestamp) - -""" -Components Test for Cortical-Subcortical Jansen-Rit blox - Cortical: PFC (Just Pyramidal Cells (PY), no Exc. Interneurons or Inh. Interneurons) - Subcortical: Basal Ganglia (GPe, STN, GPi) + Thalamus -""" - -# Create Regions -@named GPe = JansenRitCBlox(τ=0.04, H=20, λ=400, r=0.1) -@named STN = JansenRitCBlox(τ=0.01, H=20, λ=500, r=0.1) -@named GPi = JansenRitCBlox(τ=0.014, H=20, λ=400, r=0.1) -@named Thalamus = JansenRitSCBlox(τ=0.002, H=10, λ=20, r=5) -@named PFC = JansenRitSCBlox(τ=0.001, H=20, λ=5, r=0.15) - -# Connect Regions through Adjacency Matrix -blox = [GPe, STN, GPi, Thalamus, PFC] -sys = [s.odesystem for s in blox] -connect = [s.connector for s in blox] - -@parameters C_Cor=60 C_BG_Th=60 C_Cor_BG_Th=5 C_BG_Th_Cor=5 - -adj_matrix_lin = [0 C_BG_Th 0 0 0; - -0.5*C_BG_Th 0 0 0 C_Cor_BG_Th; - -0.5*C_BG_Th C_BG_Th 0 0 0; - 0 0 -0.5*C_BG_Th 0 0; - 0 0 0 C_BG_Th_Cor 0] - -@named CBGTC_Circuit_lin = LinearConnections(sys=sys, adj_matrix=adj_matrix_lin, connector=connect) -sim_dur = 10.0 # Simulate for 10 Seconds -mysys = structural_simplify(CBGTC_Circuit_lin) -sol = simulate(mysys, [], (0.0, sim_dur), []) - -""" -New tests for JansenRit blox - -These are to make sure the new JansenRit blox works identically to the former one. -""" - -# see jansen_rit_component_tests.jl \ No newline at end of file diff --git a/test/old_component_tests/larter_breakspear_tests.jl b/test/old_component_tests/larter_breakspear_tests.jl deleted file mode 100644 index ea622124..00000000 --- a/test/old_component_tests/larter_breakspear_tests.jl +++ /dev/null @@ -1,21 +0,0 @@ -using Neuroblox, DifferentialEquations, DataFrames, Test, Distributions, Statistics, LinearAlgebra, Graphs, MetaGraphs, Random - -""" -Tests formerly in components.jl -""" - -""" -Larter-Breakspear model test -""" -@named lb = LarterBreakspearBlox() -sys = [lb.odesystem] -eqs = [sys[1].jcn ~ 0] -@named lb_connect = ODESystem(eqs,systems=sys) -lb_simpl = structural_simplify(lb_connect) - -@test length(states(lb_simpl)) == 3 - -prob = ODEProblem(lb_simpl,[0.5,0.5,0.5],(0,10.0),[]) -sol = solve(prob,Tsit5()) - -@test sol[1,10] ≈ -0.6246710908910991 \ No newline at end of file diff --git a/test/old_component_tests/wilson_cowan_tests.jl b/test/old_component_tests/wilson_cowan_tests.jl deleted file mode 100644 index 2f6ae827..00000000 --- a/test/old_component_tests/wilson_cowan_tests.jl +++ /dev/null @@ -1,21 +0,0 @@ -using Neuroblox, DifferentialEquations, DataFrames, Test, Distributions, Statistics, LinearAlgebra, Graphs, MetaGraphs, Random - - -""" -Tests formerly in components.jl -""" - -""" -wilson_cowan test - -Test for Wilson-Cowan model -""" -sim_dur = 10.0 #unsure where the sim_dur came from originally because it wasn't part of the test, so this is arbitrary -@named WC = WilsonCowanBlox() -sys = [WC.odesystem] -eqs = [sys[1].jcn ~ 0.0, sys[1].P ~ 0.0] -@named WC_sys = ODESystem(eqs,systems=sys) -WC_sys_s = structural_simplify(WC_sys) -prob = ODEProblem(WC_sys_s, [], (0,sim_dur), []) -sol = solve(prob,AutoVern7(Rodas4()),saveat=0.01) -#@test sol[1,end] ≈ 0.17513685727060388 \ No newline at end of file diff --git a/test/temp_test.jl b/test/temp_test.jl deleted file mode 100644 index b332e252..00000000 --- a/test/temp_test.jl +++ /dev/null @@ -1,17 +0,0 @@ -using Neuroblox, DifferentialEquations, DataFrames, Test, Distributions, Statistics, LinearAlgebra, Graphs, MetaGraphs, Random - -@named LB1 = LarterBreakspear() -@named LB2 = LarterBreakspear() - -adj = [0 1; 1 0] -g = MetaDiGraph() -add_blox!.(Ref(g), [LB1, LB2]) -create_adjacency_edges!(g, adj) - -@named sys = system_from_graph(g) -sys = structural_simplify(sys) - -sim_dur = 1e2 -prob = ODEProblem(sys, [], (0.0, sim_dur), []) -sol = solve(prob, AutoVern7(Rodas4()), saveat=0.1) -@test sol.retcode == ReturnCode.Success \ No newline at end of file From f71011162563424d83f97a3f01e8f9bf0acfc8b3 Mon Sep 17 00:00:00 2001 From: agchesebro <76024790+agchesebro@users.noreply.github.com> Date: Mon, 15 Jan 2024 16:44:20 -0500 Subject: [PATCH 03/22] Update LinearNeuralMass * Documented new blox * Deleted old blox --- src/blox/neural_mass.jl | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/src/blox/neural_mass.jl b/src/blox/neural_mass.jl index 243f6e2f..c5110fab 100644 --- a/src/blox/neural_mass.jl +++ b/src/blox/neural_mass.jl @@ -1,6 +1,20 @@ @parameters t D = Differential(t) +""" + LinearNeuralMassBlox(name) + +Create standard linear neural mass blox with a single internal state. +There are no parameters in this blox. +This is a blox of the sort used for spectral DCM modeling. +The formal definition of this blox is: + +```math +\frac{d}{dx} = \sum{jcn} +``` +where ``jcn`` is any input to the blox. +""" + mutable struct LinearNeuralMassBlox <: AbstractComponent connector::Num odesystem::ODESystem @@ -12,6 +26,7 @@ mutable struct LinearNeuralMassBlox <: AbstractComponent end end + mutable struct HarmonicOscillatorBlox <: NeuralMassBlox # all parameters are Num as to allow symbolic expressions connector::Num @@ -294,23 +309,6 @@ end New versions of blox begin here! """ - -""" -Units note: no units because no parameters :) -""" -struct LinearNeuralMass <: NeuralMassBlox - output - jcn - odesystem - namespace - function LinearNeuralMass(;name, namespace=nothing) - sts = @variables x(t)=0.0 [output=true] jcn(t)=0.0 [input=true] - eqs = [D(x) ~ jcn] - sys = System(eqs, name=name) - new(sts[1], sts[2], sys, namespace) - end -end - """ Units note: Frequency should be tuned by user. Updated with additional factors to make ms. From b82b62f9b0ef63a8a5fc311bac825cbf6161ff50 Mon Sep 17 00:00:00 2001 From: agchesebro <76024790+agchesebro@users.noreply.github.com> Date: Mon, 15 Jan 2024 16:51:49 -0500 Subject: [PATCH 04/22] Update LinearNeuralMass Fix last commit because I deleted the wrong one @@ --- src/blox/neural_mass.jl | 73 +++++++++++++++++++++++++---------------- 1 file changed, 45 insertions(+), 28 deletions(-) diff --git a/src/blox/neural_mass.jl b/src/blox/neural_mass.jl index c5110fab..71838040 100644 --- a/src/blox/neural_mass.jl +++ b/src/blox/neural_mass.jl @@ -1,32 +1,6 @@ @parameters t D = Differential(t) -""" - LinearNeuralMassBlox(name) - -Create standard linear neural mass blox with a single internal state. -There are no parameters in this blox. -This is a blox of the sort used for spectral DCM modeling. -The formal definition of this blox is: - -```math -\frac{d}{dx} = \sum{jcn} -``` -where ``jcn`` is any input to the blox. -""" - -mutable struct LinearNeuralMassBlox <: AbstractComponent - connector::Num - odesystem::ODESystem - function LinearNeuralMassBlox(;name) - states = @variables x(t) jcn(t) - eqs = D(x) ~ jcn - odesys = ODESystem(eqs, t, states, []; name=name) - new(odesys.x, odesys) - end -end - - mutable struct HarmonicOscillatorBlox <: NeuralMassBlox # all parameters are Num as to allow symbolic expressions connector::Num @@ -309,9 +283,52 @@ end New versions of blox begin here! """ + +""" + LinearNeuralMassBlox(name) + +Create standard linear neural mass blox with a single internal state. +There are no parameters in this blox. +This is a blox of the sort used for spectral DCM modeling. +The formal definition of this blox is: + +```math +\frac{d}{dx} = \sum{jcn} +``` +where ``jcn`` is any input to the blox. + +Arguments: +- `name`: Options containing specification about deterministic. """ -Units note: Frequency should be tuned by user. -Updated with additional factors to make ms. + +struct LinearNeuralMass <: NeuralMassBlox + output + jcn + odesystem + namespace + function LinearNeuralMass(;name, namespace=nothing) + sts = @variables x(t)=0.0 [output=true] jcn(t)=0.0 [input=true] + eqs = [D(x) ~ jcn] + sys = System(eqs, name=name) + new(sts[1], sts[2], sys, namespace) + end +end + +""" + HarmonicOscillatorBlox(name, ω, ζ, k, h) + + Create a harmonic oscillator blox with the specified parameters. + The formal definition of this blox is: + ```math + \frac{dx}{dt} = y-(2*\omega*\zeta*x)+ k*(2/\pi)*(atan((\sum{jcn})/h) + \frac{dy}{dt} = -(\omega^2)*x + ``` + where ``jcn`` is any input to the blox. + +Arguments: +- `name`: Name given to `ODESystem` object within the blox. +- `T`: Type of Nodes to use in the population. e.g., `Float64`. +- `L`: Type of loss to use in the population. e.g., `Float64`. """ struct HarmonicOscillator <: NeuralMassBlox params From ec8d1d97e4925c12aa823cca03d9f9da07643c72 Mon Sep 17 00:00:00 2001 From: agchesebro <76024790+agchesebro@users.noreply.github.com> Date: Mon, 15 Jan 2024 16:55:25 -0500 Subject: [PATCH 05/22] Update HarmonicOscillator * Add comments to new blox * Remove old blox @hstrey I kept the defaults for all these parameters except for omega which needed to be updated to ms. Any citation you'd like for this parameter set? It's just a harmonic oscillator so I'm assuming it's general enough to not need one unless we really want to highlight a particular paper. --- src/blox/neural_mass.jl | 31 ++++++------------------------- 1 file changed, 6 insertions(+), 25 deletions(-) diff --git a/src/blox/neural_mass.jl b/src/blox/neural_mass.jl index 71838040..d0445cca 100644 --- a/src/blox/neural_mass.jl +++ b/src/blox/neural_mass.jl @@ -1,29 +1,6 @@ @parameters t D = Differential(t) -mutable struct HarmonicOscillatorBlox <: NeuralMassBlox - # all parameters are Num as to allow symbolic expressions - connector::Num - noDetail::Vector{Num} - detail::Vector{Num} - initial::Dict{Num, Tuple{Float64, Float64}} - odesystem::ODESystem - function HarmonicOscillatorBlox(;name, ω=25*(2*pi), ζ=1.0, k=625*(2*pi), h=35.0) - params = progress_scope(ω, ζ, k, h) - params = compileparameterlist(ω=params[1], ζ=params[2], k=params[3], h=params[4]) - sts = @variables x(t)=1.0 y(t)=1.0 jcn(t)=0.0 - ω, ζ, k, h = params - eqs = [D(x) ~ y-(2*ω*ζ*x)+ k*(2/π)*(atan((jcn)/h)) - D(y) ~ -(ω^2)*x] - odesys = ODESystem(eqs, t, sts, params; name=name) - new(odesys.x,[odesys.x],[odesys.x,odesys.y], - Dict(odesys.x => (-1.0,1.0), odesys.y => (-1.0,1.0)), - odesys) - end -end -# this assignment is temporary until all the code is changed to the new name -const harmonic_oscillator = HarmonicOscillatorBlox - # This is for later to connect the icons to the different blox # function gui.icon(Type::HarmonicOscillatorBlox) # return HarmonicOscillatorImage @@ -299,6 +276,7 @@ where ``jcn`` is any input to the blox. Arguments: - `name`: Options containing specification about deterministic. +- `namespace`: Additional namespace above `name` if needed for inheritance. """ struct LinearNeuralMass <: NeuralMassBlox @@ -327,8 +305,11 @@ end Arguments: - `name`: Name given to `ODESystem` object within the blox. -- `T`: Type of Nodes to use in the population. e.g., `Float64`. -- `L`: Type of loss to use in the population. e.g., `Float64`. +- `namespace`: Additional namespace above `name` if needed for inheritance. +- `ω`: Base frequency. Note the default value is scaled to give oscillations in milliseconds to match other blocks. +- `ζ`: Damping ratio. +- `k`: Gain. +- `h`: Threshold. """ struct HarmonicOscillator <: NeuralMassBlox params From d4075351143942721f435c31ba1a2af44092b347 Mon Sep 17 00:00:00 2001 From: agchesebro <76024790+agchesebro@users.noreply.github.com> Date: Mon, 15 Jan 2024 17:10:43 -0500 Subject: [PATCH 06/22] Update Jansen Rit * Deleted old blox * Updated new blox * Fixed docstring issue from other blocks (I think - we'll see after the next tests run) --- src/blox/neural_mass.jl | 85 ++++++++++++++++------------------------- 1 file changed, 33 insertions(+), 52 deletions(-) diff --git a/src/blox/neural_mass.jl b/src/blox/neural_mass.jl index d0445cca..5b620b32 100644 --- a/src/blox/neural_mass.jl +++ b/src/blox/neural_mass.jl @@ -1,54 +1,6 @@ @parameters t D = Differential(t) -# This is for later to connect the icons to the different blox -# function gui.icon(Type::HarmonicOscillatorBlox) -# return HarmonicOscillatorImage - -mutable struct JansenRitCBlox <: NeuralMassBlox - connector::Num - noDetail::Vector{Num} - detail::Vector{Num} - initial::Dict{Num, Tuple{Float64, Float64}} - odesystem::ODESystem - function JansenRitCBlox(;name, τ=0.001, H=20.0, λ=5.0, r=0.15) - params = progress_scope(τ, H, λ, r) - params = compileparameterlist(τ=params[1], H=params[2], λ=params[3], r=params[4]) - sts = @variables x(t)=1.0 y(t)=1.0 jcn(t)=0.0 - τ, H, λ, r = params - eqs = [D(x) ~ y - ((2/τ)*x), - D(y) ~ -x/(τ*τ) + (H/τ)*((2*λ)/(1 + exp(-r*(jcn))) - λ)] - odesys = ODESystem(eqs, t, sts, params; name=name) - new(odesys.x,[odesys.x],[odesys.x,odesys.y], - Dict(odesys.x => (-1.0,1.0), odesys.y => (-1.0,1.0)), - odesys) - end -end -# this assignment is temporary until all the code is changed to the new name -const jansen_ritC = JansenRitCBlox - -mutable struct JansenRitSCBlox <: NeuralMassBlox - connector::Num - noDetail::Vector{Num} - detail::Vector{Num} - initial::Dict{Num, Tuple{Float64, Float64}} - odesystem::ODESystem - function JansenRitSCBlox(;name, τ=0.014, H=20.0, λ=400.0, r=0.1) - params = progress_scope(τ, H, λ, r) - params = compileparameterlist(τ=params[1], H=params[2], λ=params[3], r=params[4]) - sts = @variables x(t)=1.0 y(t)=1.0 jcn(t)=0.0 - τ, H, λ, r = params - eqs = [D(x) ~ y - ((2/τ)*x), - D(y) ~ -x/(τ*τ) + (H/τ)*((2*λ)/(1 + exp(-r*(jcn))) - λ)] - odesys = ODESystem(eqs, t, sts, params; name=name) - new(odesys.x,[odesys.x],[odesys.x,odesys.y], - Dict(odesys.x => (-1.0,1.0), odesys.y => (-1.0,1.0)), - odesys) - end -end -# this assignment is temporary until all the code is changed to the new name -const jansen_ritSC = JansenRitSCBlox - mutable struct WilsonCowanBlox <: NeuralMassBlox τ_E::Num τ_I::Num @@ -262,18 +214,21 @@ New versions of blox begin here! """ - LinearNeuralMassBlox(name) + LinearNeuralMass(name, namespace) Create standard linear neural mass blox with a single internal state. There are no parameters in this blox. This is a blox of the sort used for spectral DCM modeling. The formal definition of this blox is: +""" ```math \frac{d}{dx} = \sum{jcn} ``` +""" where ``jcn`` is any input to the blox. + Arguments: - `name`: Options containing specification about deterministic. - `namespace`: Additional namespace above `name` if needed for inheritance. @@ -293,15 +248,18 @@ struct LinearNeuralMass <: NeuralMassBlox end """ - HarmonicOscillatorBlox(name, ω, ζ, k, h) + HarmonicOscillator(name, namespace, ω, ζ, k, h) Create a harmonic oscillator blox with the specified parameters. The formal definition of this blox is: + """ ```math \frac{dx}{dt} = y-(2*\omega*\zeta*x)+ k*(2/\pi)*(atan((\sum{jcn})/h) \frac{dy}{dt} = -(\omega^2)*x ``` +""" where ``jcn`` is any input to the blox. + Arguments: - `name`: Name given to `ODESystem` object within the blox. @@ -330,9 +288,32 @@ struct HarmonicOscillator <: NeuralMassBlox end """ -Units note: all units from the original Parkinson's paper EXCEPT τ. -The original delays were in seconds, so multiplied to be consistent with other blocks in ms. + JansenRit(name, namespace, τ, H, λ, r, cortical) + + Create a Jansen Rit blox as described in Liu et al. + The formal definition of this blox is: + """ + ```math + \frac{dx}{dt} = y-\frac{2}{\tau}x + \frac{dy}{dt} = -\frac{x}{\tau^2} + \frac{H}{\tau} [\frac{2\lambda}{1+\text{exp}(-r*\sum{jcn})} - \lambda] + ``` """ + where ``jcn`` is any input to the blox. + +Arguments: +- `name`: Name given to `ODESystem` object within the blox. +- `namespace`: Additional namespace above `name` if needed for inheritance. +- `τ`: Time constant. This is changed from the original source as the time constant was in seconds, while all our blocks are in milliseconds. +- `H`: See equation for use. +- `λ`: See equation for use. +- `r`: See equation for use. +- `cortical`: Boolean to determine whether to use cortical or subcortical parameters. Specifying any of the parameters above will override this. + +Citations: +1. Liu C, Zhou C, Wang J, Fietkiewicz C, Loparo KA. The role of coupling connections in a model of the cortico-basal ganglia-thalamocortical neural loop for the generation of beta oscillations. Neural Netw. 2020 Mar;123:381-392. doi: 10.1016/j.neunet.2019.12.021. + +""" + # Constructing a new Jansen Rit blox to handle both delays and non-delays, along with default parameter inputs struct JansenRit <: NeuralMassBlox params From 5bb3fe0eb0225a3805c9704ec6c96dd7a845ace4 Mon Sep 17 00:00:00 2001 From: agchesebro <76024790+agchesebro@users.noreply.github.com> Date: Mon, 15 Jan 2024 17:16:46 -0500 Subject: [PATCH 07/22] Try fixing escape sequence for LaTeX --- src/blox/neural_mass.jl | 145 ++-------------------------------------- 1 file changed, 5 insertions(+), 140 deletions(-) diff --git a/src/blox/neural_mass.jl b/src/blox/neural_mass.jl index 5b620b32..92230472 100644 --- a/src/blox/neural_mass.jl +++ b/src/blox/neural_mass.jl @@ -1,43 +1,6 @@ @parameters t D = Differential(t) -mutable struct WilsonCowanBlox <: NeuralMassBlox - τ_E::Num - τ_I::Num - a_E::Num - a_I::Num - c_EE::Num - c_EI::Num - c_IE::Num - c_II::Num - θ_E::Num - θ_I::Num - η::Num - connector::Num - noDetail::Vector{Num} - detail::Vector{Num} - odesystem::ODESystem - function WilsonCowanBlox(;name, - τ_E=1.0, - τ_I=1.0, - a_E=1.2, - a_I=2.0, - c_EE=5.0, - c_IE=6.0, - c_EI=10.0, - c_II=1.0, - θ_E=2.0, - θ_I=3.5, - η=1.0) - params = @parameters τ_E=τ_E τ_I=τ_I a_E=a_E a_I=a_I c_EE=c_EE c_IE=c_IE c_EI=c_EI c_II=c_II θ_E=θ_E θ_I=θ_I η=η - sts = @variables E(t)=1.0 I(t)=1.0 jcn(t)=0.0 P(t)=0.0 - eqs = [D(E) ~ -E/τ_E + 1/(1 + exp(-a_E*(c_EE*E - c_IE*I - θ_E + P + η*(jcn)))), - D(I) ~ -I/τ_I + 1/(1 + exp(-a_I*(c_EI*E - c_II*I - θ_I)))] - odesys = ODESystem(eqs, t, sts, params; name=name) - new(τ_E,τ_I,a_E, a_I, c_EE, c_IE, c_EI, c_II, θ_E, θ_I, η, odesys.E, [odesys.E],[odesys.E, odesys.I],odesys) - end -end - mutable struct NextGenerationBlox <: NeuralMassBlox C::Num Δ::Num @@ -117,102 +80,6 @@ end # this assignment is temporary until all the code is changed to the new name const next_generation = NextGenerationBlox -mutable struct LarterBreakspearBlox <: NeuralMassBlox - C::Num - δ_VZ::Num - T_Ca::Num - δ_Ca::Num - g_Ca::Num - V_Ca::Num - T_K::Num - δ_K::Num - g_K::Num - V_K::Num - T_Na::Num - δ_Na::Num - g_Na::Num - V_Na::Num - V_L::Num - g_L::Num - V_T::Num - Z_T::Num - Q_Vmax::Num - Q_Zmax::Num - IS::Num - a_ee::Num - a_ei::Num - a_ie::Num - a_ne::Num - a_ni::Num - b::Num - τ_K::Num - ϕ::Num - r_NMDA::Num - connector::Num - noDetail::Vector{Num} - detail::Vector{Num} - initial::Dict{Num, Tuple{Float64, Float64}} - odesystem::ODESystem - function LarterBreakspearBlox(;name, - T_Ca=-0.01, - δ_Ca=0.15, - g_Ca=1.0, - V_Ca=1.0, - T_K=0.0, - δ_K=0.3, - g_K=2.0, - V_K=-0.7, - T_Na=0.3, - δ_Na=0.15, - g_Na=6.7, - V_Na=0.53, - V_L=-0.5, - g_L=0.5, - V_T=0.0, - Z_T=0.0, - δ_VZ=0.61, - Q_Vmax=1.0, - Q_Zmax=1.0, - IS = 0.3, - a_ee=0.36, - a_ei=2.0, - a_ie=2.0, - a_ne=1.0, - a_ni=0.4, - b=0.1, - τ_K=1.0, - ϕ=0.7, - r_NMDA=0.25, - C=0.35) - params = @parameters C=C δ_VZ=δ_VZ T_Ca=T_Ca δ_Ca=δ_Ca g_Ca=g_Ca V_Ca=V_Ca T_K=T_K δ_K=δ_K g_K=g_K V_K=V_K T_Na=T_Na δ_Na=δ_Na g_Na=g_Na V_Na=V_Na V_L=V_L g_L=g_L V_T=V_T Z_T=Z_T Q_Vmax=Q_Vmax Q_Zmax=Q_Zmax IS=IS a_ee=a_ee a_ei=a_ei a_ie=a_ie a_ne=a_ne a_ni=a_ni b=b τ_K=τ_K ϕ=ϕ r_NMDA=r_NMDA - sts = @variables V(t)=0.5 Z(t)=0.5 W(t)=0.5 jcn(t)=0.0 Q_V(t) Q_Z(t) m_Ca(t) m_Na(t) m_K(t) - - eqs = [D(V) ~ -(g_Ca + (1 - C) * r_NMDA * a_ee * Q_V + C * r_NMDA * a_ee * jcn) * m_Ca * (V-V_Ca) - - g_K * W * (V - V_K) - g_L * (V - V_L) - - (g_Na * m_Na + (1 - C) * a_ee * Q_V + C * a_ee * jcn) * (V-V_Na) - - a_ie * Z * Q_Z + a_ne * IS, - D(Z) ~ b * (a_ni * IS + a_ei * V * Q_V), - D(W) ~ ϕ * (m_K - W) / τ_K, - Q_V ~ 0.5*Q_Vmax*(1 + tanh((V-V_T)/δ_VZ)), - Q_Z ~ 0.5*Q_Zmax*(1 + tanh((Z-Z_T)/δ_VZ)), - m_Ca ~ 0.5*(1 + tanh((V-T_Ca)/δ_Ca)), - m_Na ~ 0.5*(1 + tanh((V-T_Na)/δ_Na)), - m_K ~ 0.5*(1 + tanh((V-T_K)/δ_K))] - odesys = ODESystem(eqs, t, sts, params; name=name) - new(C, δ_VZ, T_Ca, δ_Ca, g_Ca, V_Ca, T_K, δ_K, g_K, V_K, T_Na, δ_Na, g_Na,V_Na, V_L, - g_L, V_T, Z_T, Q_Vmax, Q_Zmax, IS, a_ee, a_ei, a_ie, a_ne, a_ni, b, τ_K, ϕ, r_NMDA, - 0.5*Q_Vmax*(1 + tanh((odesys.V-V_T)/δ_VZ)), - [odesys.V],[odesys.V, odesys.Z, odesys.W], - Dict(odesys.V => (-1.0,1.0), odesys.Z => (-1.0,1.0), odesys.W => (0.0,1.0)), - odesys) - end -end - -""" -New versions of blox begin here! -""" - - """ LinearNeuralMass(name, namespace) @@ -223,7 +90,7 @@ The formal definition of this blox is: """ ```math -\frac{d}{dx} = \sum{jcn} +\\frac{d}{dx} = \\sum{jcn} ``` """ where ``jcn`` is any input to the blox. @@ -254,8 +121,8 @@ end The formal definition of this blox is: """ ```math - \frac{dx}{dt} = y-(2*\omega*\zeta*x)+ k*(2/\pi)*(atan((\sum{jcn})/h) - \frac{dy}{dt} = -(\omega^2)*x + \\frac{dx}{dt} = y-(2*\\omega*\\zeta*x)+ k*(2/\\pi)*(atan((\\sum{jcn})/h) + \\frac{dy}{dt} = -(\\omega^2)*x ``` """ where ``jcn`` is any input to the blox. @@ -294,8 +161,8 @@ end The formal definition of this blox is: """ ```math - \frac{dx}{dt} = y-\frac{2}{\tau}x - \frac{dy}{dt} = -\frac{x}{\tau^2} + \frac{H}{\tau} [\frac{2\lambda}{1+\text{exp}(-r*\sum{jcn})} - \lambda] + \\frac{dx}{dt} = y-\\frac{2}{\\tau}x + \\frac{dy}{dt} = -\\frac{x}{\\tau^2} + \\frac{H}{\\tau} [\\frac{2\\lambda}{1+\\text{exp}(-r*\\sum{jcn})} - \\lambda] ``` """ where ``jcn`` is any input to the blox. @@ -313,8 +180,6 @@ Citations: 1. Liu C, Zhou C, Wang J, Fietkiewicz C, Loparo KA. The role of coupling connections in a model of the cortico-basal ganglia-thalamocortical neural loop for the generation of beta oscillations. Neural Netw. 2020 Mar;123:381-392. doi: 10.1016/j.neunet.2019.12.021. """ - -# Constructing a new Jansen Rit blox to handle both delays and non-delays, along with default parameter inputs struct JansenRit <: NeuralMassBlox params output From 8ca6748b5d95032b2376941cfe1215800a7b6741 Mon Sep 17 00:00:00 2001 From: agchesebro <76024790+agchesebro@users.noreply.github.com> Date: Mon, 15 Jan 2024 17:33:41 -0500 Subject: [PATCH 08/22] Ok now I've really fixed the docstring issue Also removed a couple other old blocks. One more commit and I should be done with this --- src/blox/neural_mass.jl | 46 ++++++++++++++++++++++++++++++----------- test/runtests.jl | 9 +++----- 2 files changed, 37 insertions(+), 18 deletions(-) diff --git a/src/blox/neural_mass.jl b/src/blox/neural_mass.jl index 92230472..d4700844 100644 --- a/src/blox/neural_mass.jl +++ b/src/blox/neural_mass.jl @@ -89,9 +89,9 @@ This is a blox of the sort used for spectral DCM modeling. The formal definition of this blox is: """ -```math -\\frac{d}{dx} = \\sum{jcn} -``` +# ```math +# \\frac{d}{dx} = \\sum{jcn} +# ``` """ where ``jcn`` is any input to the blox. @@ -120,10 +120,10 @@ end Create a harmonic oscillator blox with the specified parameters. The formal definition of this blox is: """ - ```math - \\frac{dx}{dt} = y-(2*\\omega*\\zeta*x)+ k*(2/\\pi)*(atan((\\sum{jcn})/h) - \\frac{dy}{dt} = -(\\omega^2)*x - ``` + # ```math + # \\frac{dx}{dt} = y-(2*\\omega*\\zeta*x)+ k*(2/\\pi)*(atan((\\sum{jcn})/h) + # \\frac{dy}{dt} = -(\\omega^2)*x + # ``` """ where ``jcn`` is any input to the blox. @@ -160,10 +160,10 @@ end Create a Jansen Rit blox as described in Liu et al. The formal definition of this blox is: """ - ```math - \\frac{dx}{dt} = y-\\frac{2}{\\tau}x - \\frac{dy}{dt} = -\\frac{x}{\\tau^2} + \\frac{H}{\\tau} [\\frac{2\\lambda}{1+\\text{exp}(-r*\\sum{jcn})} - \\lambda] - ``` + # ```math + # \\frac{dx}{dt} = y-\\frac{2}{\\tau}x + # \\frac{dy}{dt} = -\\frac{x}{\\tau^2} + \\frac{H}{\\tau} [\\frac{2\\lambda}{1+\\text{exp}(-r*\\sum{jcn})} - \\lambda] + # ``` """ where ``jcn`` is any input to the blox. @@ -248,7 +248,29 @@ struct WilsonCowan <: NeuralMassBlox end """ -Units note: From Yamashita et al. paper, designed to be in ms. Good to go for now. + JansenRit(name, namespace, τ, H, λ, r, cortical) + + Create a Jansen Rit blox as described in Liu et al. + The formal definition of this blox is: + """ + # ```math + # \\frac{dx}{dt} = y-\\frac{2}{\\tau}x + # \\frac{dy}{dt} = -\\frac{x}{\\tau^2} + \\frac{H}{\\tau} [\\frac{2\\lambda}{1+\\text{exp}(-r*\\sum{jcn})} - \\lambda] + # ``` +""" + where ``jcn`` is any input to the blox. + +Arguments: +- `name`: Name given to `ODESystem` object within the blox. +- `namespace`: Additional namespace above `name` if needed for inheritance. +- `τ`: Time constant. This is changed from the original source as the time constant was in seconds, while all our blocks are in milliseconds. +- `H`: See equation for use. +- `λ`: See equation for use. +- `r`: See equation for use. +- `cortical`: Boolean to determine whether to use cortical or subcortical parameters. Specifying any of the parameters above will override this. + +Citations: +1. Endo H, Hiroe N, Yamashita O. Evaluation of Resting Spatio-Temporal Dynamics of a Neural Mass Model Using Resting fMRI Connectivity and EEG Microstates. Front Comput Neurosci. 2020 Jan 17;13:91. doi: 10.3389/fncom.2019.00091. """ struct LarterBreakspear <: NeuralMassBlox params diff --git a/test/runtests.jl b/test/runtests.jl index 0bebe41d..1e65fce9 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -20,9 +20,6 @@ using SafeTestsets # @time @safetestset "Fitting Tests" begin include("fitting.jl") end # @time @safetestset "Bayesian Fitting Tests" begin include("bayesian_fitting.jl") end -# Extra tests for comparison across blox versions -#@time @safetestset "New Jansen-Rit Tests" begin include("jansen_rit_component_tests_new_timing.jl") end -#@time @safetestset "Old Jansen-Rit Tests" begin include("old_component_tests/jansen_rit_tests.jl") end -#@time @safetestset "Old Wilson-Cowan Tests" begin include("old_component_tests/wilson_cowan_tests.jl") end -#@time @safetestset "New Larter-Breakspear Tests" begin include("new_LB_blox.jl") end -#@time @safetestset "Old Larter-Breakspear Tests" begin include("old_component_tests/larter_breakspear_tests.jl") end +# Extra tests illustrating use - could be removed once examples are written +#@time @safetestset "New Jansen-Rit Tests" begin include("jansen_rit_component_tests.jl") end +#@time @safetestset "New Larter-Breakspear Tests" begin include("new_LB_blox.jl") end \ No newline at end of file From 87cdcb71ac5ba91b02a5431bc08bf2f7463a6cef Mon Sep 17 00:00:00 2001 From: agchesebro <76024790+agchesebro@users.noreply.github.com> Date: Mon, 15 Jan 2024 19:00:44 -0500 Subject: [PATCH 09/22] Removed failing tests The following tests have been commented out because they used the deprecated (now removed) Jansen Rit blox: * Canonical & Jansen-Rit Network * OUBlox & Jansen-Rit network * Time-series output @hstrey do we need these? If so then I'll modify to the new blocks - if not we can delete. They're just commented out for now. --- src/blox/neural_mass.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/blox/neural_mass.jl b/src/blox/neural_mass.jl index d4700844..2fcd47fe 100644 --- a/src/blox/neural_mass.jl +++ b/src/blox/neural_mass.jl @@ -248,9 +248,9 @@ struct WilsonCowan <: NeuralMassBlox end """ - JansenRit(name, namespace, τ, H, λ, r, cortical) + LarterBreakspear(name, namespace, ...) - Create a Jansen Rit blox as described in Liu et al. + Create a Larter Breakspear blox described in Endo et al. For a full list of the parameters used see the reference. The formal definition of this blox is: """ # ```math From b088df20c53cf90e5c18d9538b7bb6e7cf39d8ce Mon Sep 17 00:00:00 2001 From: agchesebro <76024790+agchesebro@users.noreply.github.com> Date: Mon, 15 Jan 2024 19:11:43 -0500 Subject: [PATCH 10/22] Final tidying of neural mass blocks (for now) Cleaned up the comments for WilsonCowan and LarterBreakspear blocks. --- src/blox/neural_mass.jl | 38 ++++---- test/components.jl | 198 ++++++++++++++++++++-------------------- 2 files changed, 121 insertions(+), 115 deletions(-) diff --git a/src/blox/neural_mass.jl b/src/blox/neural_mass.jl index 2fcd47fe..494771c2 100644 --- a/src/blox/neural_mass.jl +++ b/src/blox/neural_mass.jl @@ -213,8 +213,22 @@ struct JansenRit <: NeuralMassBlox end """ -Units note: Unclear where the defaults come from (close but not quite Wilson-Cowan referenced in TVB and elsewhere). -They're on the same order of magnitude as the original parameters which are in ms, so good to go for now. + WilsonCown(name, namespace, τ_E, τ_I, a_E, a_I, c_EE, c_IE, c_EI, c_II, θ_E, θ_I, η) + + Create a standard Wilson Cowan blox. + The formal definition of this blox is: + """ + # ```math + # \\frac{dE}{dt} = \\frac{-E}{\\tau_E} + \\frac{1}{1 + \\text{exp}(-a_E*(c_{EE}*E - c_{IE}*I - \\theta_E + \\eta*(\\sum{jcn}))} + # \\frac{dI}{dt} = \\frac{-I}{\\tau_I} + \\frac{1}{1 + exp(-a_I*(c_{EI}*E - c_{II}*I - \\theta_I)} + # ``` +""" + where ``jcn`` is any input to the blox. + +Arguments: +- `name`: Name given to `ODESystem` object within the blox. +- `namespace`: Additional namespace above `name` if needed for inheritance. +- Others: See equation for use. """ struct WilsonCowan <: NeuralMassBlox params @@ -251,26 +265,18 @@ end LarterBreakspear(name, namespace, ...) Create a Larter Breakspear blox described in Endo et al. For a full list of the parameters used see the reference. - The formal definition of this blox is: - """ - # ```math - # \\frac{dx}{dt} = y-\\frac{2}{\\tau}x - # \\frac{dy}{dt} = -\\frac{x}{\\tau^2} + \\frac{H}{\\tau} [\\frac{2\\lambda}{1+\\text{exp}(-r*\\sum{jcn})} - \\lambda] - # ``` -""" - where ``jcn`` is any input to the blox. + If you need to modify the parameters, see Chesebro et al. and van Nieuwenhuizen et al. for physiological ranges. Arguments: - `name`: Name given to `ODESystem` object within the blox. - `namespace`: Additional namespace above `name` if needed for inheritance. -- `τ`: Time constant. This is changed from the original source as the time constant was in seconds, while all our blocks are in milliseconds. -- `H`: See equation for use. -- `λ`: See equation for use. -- `r`: See equation for use. -- `cortical`: Boolean to determine whether to use cortical or subcortical parameters. Specifying any of the parameters above will override this. +- Other parameters: See reference for full list. Note that parameters are scaled so that units of time are in milliseconds. Citations: -1. Endo H, Hiroe N, Yamashita O. Evaluation of Resting Spatio-Temporal Dynamics of a Neural Mass Model Using Resting fMRI Connectivity and EEG Microstates. Front Comput Neurosci. 2020 Jan 17;13:91. doi: 10.3389/fncom.2019.00091. +1. Endo H, Hiroe N, Yamashita O. Evaluation of Resting Spatio-Temporal Dynamics of a Neural Mass Model Using Resting fMRI Connectivity and EEG Microstates. Front Comput Neurosci. 2020 Jan 17;13:91. doi: 10.3389/fncom.2019.00091. +2. Chesebro AG, Mujica-Parodi LR, Weistuch C. Ion gradient-driven bifurcations of a multi-scale neuronal model. Chaos Solitons Fractals. 2023 Feb;167:113120. doi: 10.1016/j.chaos.2023.113120. +3. van Nieuwenhuizen, H, Chesebro, AG, Polis, C, Clarke, K, Strey, HH, Weistuch, C, Mujica-Parodi, LR. Ketosis regulates K+ ion channels, strengthening brain-wide signaling disrupted by age. Preprint. bioRxiv 2023.05.10.540257; doi: https://doi.org/10.1101/2023.05.10.540257. + """ struct LarterBreakspear <: NeuralMassBlox params diff --git a/test/components.jl b/test/components.jl index 359559d4..936d6c51 100644 --- a/test/components.jl +++ b/test/components.jl @@ -158,63 +158,63 @@ end @test sol[!,"singleregion₊dp₊x(t)"][end] + sol[!,"singleregion₊ii₊x(t)"][end] ≈ -5.159425345927338 end -@testset "Canonical & Janset-Rit network" begin - # connect multiple canonical micro circuits according to Figure 4 in Bastos et al. 2015 - @named r1 = CanonicalMicroCircuitBlox() - @named r2 = CanonicalMicroCircuitBlox() - @named jr = JansenRitCBlox() - - g = MetaDiGraph() - add_vertex!(g, Dict(:blox => r1)) # V1 (see fig. 4 in Bastos et al. 2015) - add_vertex!(g, Dict(:blox => r2)) # V4 (see fig. 4 in Bastos et al. 2015) - add_edge!(g, 1, 2, :weightmatrix, [0 1 0 0; # superficial pyramidal to spiny stellate - 0 0 0 0; - 0 0 0 0; - 0 1 0 0]) # superficial pyramidal to deep pyramidal - # define connections from column (source) to row (sink) - add_edge!(g, 2, 1, :weightmatrix, [0 0 0 0; - 0 0 0 -1; - 0 0 0 -1; - 0 0 0 0]) - - @named cmc_network = ODEfromGraph(g) - cmc_network = structural_simplify(cmc_network) - - sol = simulate(cmc_network, [], (0.0, 10.0), []) - @test sum(sol[end, 2:end]) ≈ -4827.086868187682 - - # now add a Neural mass model with one output and one input - add_vertex!(g, Dict(:blox => jr)) - add_edge!(g, 3, 1, :weightmatrix, [0; 0; 0; 1]) - add_edge!(g, 1, 3, :weightmatrix, [[1 0 0 0];]) - add_edge!(g, 3, 3, :weight, -1) - - @named cmc_network2 = ODEfromGraph(g) - cmc_network2 = structural_simplify(cmc_network2) - sol = simulate(cmc_network2, [], (0.0, 10.0), []) - @test sum(sol[end, 2:end]) ≈ -4823.399802568824 - - # now connect canonical micro circuits with symbolic weight matrices - g = MetaDiGraph() - add_vertex!(g, Dict(:blox => r1)) - add_vertex!(g, Dict(:blox => r2)) - - A_forward = [0 1 0 0; - 0 0 0 0; - 0 0 0 0; - 0 1 0 0] - A_backward = [0 0 0 0; - 0 0 0 -1; - 0 0 0 -1; - 0 0 0 0] - @parameters wm_forward[1:length(A_forward)] = vec(A_forward) - add_edge!(g, 1, 2, :weightmatrix, reshape(wm_forward, 4, 4)) - @parameters wm_backward[1:length(A_backward)] = vec(A_backward) - add_edge!(g, 2, 1, :weightmatrix, reshape(wm_backward, 4, 4)) - - @named cmc_network = ODEfromGraph(g) - cmc_network = structural_simplify(cmc_network) -end +# @testset "Canonical & Janset-Rit network" begin +# # connect multiple canonical micro circuits according to Figure 4 in Bastos et al. 2015 +# @named r1 = CanonicalMicroCircuitBlox() +# @named r2 = CanonicalMicroCircuitBlox() +# @named jr = JansenRitCBlox() + +# g = MetaDiGraph() +# add_vertex!(g, Dict(:blox => r1)) # V1 (see fig. 4 in Bastos et al. 2015) +# add_vertex!(g, Dict(:blox => r2)) # V4 (see fig. 4 in Bastos et al. 2015) +# add_edge!(g, 1, 2, :weightmatrix, [0 1 0 0; # superficial pyramidal to spiny stellate +# 0 0 0 0; +# 0 0 0 0; +# 0 1 0 0]) # superficial pyramidal to deep pyramidal +# # define connections from column (source) to row (sink) +# add_edge!(g, 2, 1, :weightmatrix, [0 0 0 0; +# 0 0 0 -1; +# 0 0 0 -1; +# 0 0 0 0]) + +# @named cmc_network = ODEfromGraph(g) +# cmc_network = structural_simplify(cmc_network) + +# sol = simulate(cmc_network, [], (0.0, 10.0), []) +# @test sum(sol[end, 2:end]) ≈ -4827.086868187682 + +# # now add a Neural mass model with one output and one input +# add_vertex!(g, Dict(:blox => jr)) +# add_edge!(g, 3, 1, :weightmatrix, [0; 0; 0; 1]) +# add_edge!(g, 1, 3, :weightmatrix, [[1 0 0 0];]) +# add_edge!(g, 3, 3, :weight, -1) + +# @named cmc_network2 = ODEfromGraph(g) +# cmc_network2 = structural_simplify(cmc_network2) +# sol = simulate(cmc_network2, [], (0.0, 10.0), []) +# @test sum(sol[end, 2:end]) ≈ -4823.399802568824 + +# # now connect canonical micro circuits with symbolic weight matrices +# g = MetaDiGraph() +# add_vertex!(g, Dict(:blox => r1)) +# add_vertex!(g, Dict(:blox => r2)) + +# A_forward = [0 1 0 0; +# 0 0 0 0; +# 0 0 0 0; +# 0 1 0 0] +# A_backward = [0 0 0 0; +# 0 0 0 -1; +# 0 0 0 -1; +# 0 0 0 0] +# @parameters wm_forward[1:length(A_forward)] = vec(A_forward) +# add_edge!(g, 1, 2, :weightmatrix, reshape(wm_forward, 4, 4)) +# @parameters wm_backward[1:length(A_backward)] = vec(A_backward) +# add_edge!(g, 2, 1, :weightmatrix, reshape(wm_backward, 4, 4)) + +# @named cmc_network = ODEfromGraph(g) +# cmc_network = structural_simplify(cmc_network) +# end @testset "Next Generation Neural Mass" begin """ @@ -371,18 +371,18 @@ sol = solve(prob_ou,alg_hints = [:stiff]) @test std(sol[1,:]) > 0.0 # there should be variance end -@testset "OUBlox & Janset-Rit network" begin -@named ou1 = OUBlox() -@named jr = JansenRitCBlox() -sys = [ou1.odesystem, jr.odesystem] -eqs = [sys[1].jcn ~ 0.0, sys[2].jcn ~ sys[1].x] -@named ou1connected = compose(System(eqs;name=:connected),sys) -ousimpl = structural_simplify(ou1connected) -prob_oujr = SDEProblem(ousimpl,[],(0.0, 2.0)) -sol = solve(prob_oujr, alg_hints = [:stiff]) -@test sol.retcode == SciMLBase.ReturnCode.Success -@test std(sol[2,:]) > 0.0 # there should be variance -end +# @testset "OUBlox & Janset-Rit network" begin +# @named ou1 = OUBlox() +# @named jr = JansenRitCBlox() +# sys = [ou1.odesystem, jr.odesystem] +# eqs = [sys[1].jcn ~ 0.0, sys[2].jcn ~ sys[1].x] +# @named ou1connected = compose(System(eqs;name=:connected),sys) +# ousimpl = structural_simplify(ou1connected) +# prob_oujr = SDEProblem(ousimpl,[],(0.0, 2.0)) +# sol = solve(prob_oujr, alg_hints = [:stiff]) +# @test sol.retcode == SciMLBase.ReturnCode.Success +# @test std(sol[2,:]) > 0.0 # there should be variance +# end @testset "OUBlox-OUCouplingBlox network" begin @named ou1 = OUBlox() @@ -416,39 +416,39 @@ sol = solve(prob_ouconnect) @test cor(sol[1,:],sol[2,:]) < 0.2 # Pearson correlation should be negative or small end -@testset "Time-series output" begin - phase_int = phase_inter(0:3,[0.0,1.0,2.0,1.0]) - phase_cos_out(ω,t) = phase_cos_blox(ω,t,phase_int) - phase_sin_out(ω,t) = phase_sin_blox(ω,t,phase_int) - @test phase_cos_out(0.1,2.5)≈0.9689124217106447 - @test phase_sin_out(0.1,2.5)≈0.24740395925452294 - - # now test how to connect this time series to a neural mass blox - @named Str2 = jansen_ritC(τ=0.0022, H=20, λ=300, r=0.3) - @parameters phase_input = 0 - - sys = [Str2.odesystem] - eqs = [sys[1].jcn ~ phase_input] - @named phase_system = ODESystem(eqs,systems=sys) - phase_system_simpl = structural_simplify(phase_system) - phase_ode = ODEProblem(phase_system_simpl,[],(0,3.0),[]) - - # create callback functions - # we always want to update phase_input to be our phase_cos_out(t) - condition = function (u,t,integrator) - true - end +# @testset "Time-series output" begin +# phase_int = phase_inter(0:3,[0.0,1.0,2.0,1.0]) +# phase_cos_out(ω,t) = phase_cos_blox(ω,t,phase_int) +# phase_sin_out(ω,t) = phase_sin_blox(ω,t,phase_int) +# @test phase_cos_out(0.1,2.5)≈0.9689124217106447 +# @test phase_sin_out(0.1,2.5)≈0.24740395925452294 - function affect!(integrator) - integrator.p[1] = phase_cos_out(10*pi,integrator.t) - end +# # now test how to connect this time series to a neural mass blox +# @named Str2 = jansen_ritC(τ=0.0022, H=20, λ=300, r=0.3) +# @parameters phase_input = 0 - cb = DiscreteCallback(condition,affect!) +# sys = [Str2.odesystem] +# eqs = [sys[1].jcn ~ phase_input] +# @named phase_system = ODESystem(eqs,systems=sys) +# phase_system_simpl = structural_simplify(phase_system) +# phase_ode = ODEProblem(phase_system_simpl,[],(0,3.0),[]) - sol = solve(phase_ode,Tsit5(),callback=cb) - @test sol.retcode == SciMLBase.ReturnCode.Success - @test sol[2,:][5] ≈ 13.49728948607267 -end +# # create callback functions +# # we always want to update phase_input to be our phase_cos_out(t) +# condition = function (u,t,integrator) +# true +# end + +# function affect!(integrator) +# integrator.p[1] = phase_cos_out(10*pi,integrator.t) +# end + +# cb = DiscreteCallback(condition,affect!) + +# sol = solve(phase_ode,Tsit5(),callback=cb) +# @test sol.retcode == SciMLBase.ReturnCode.Success +# @test sol[2,:][5] ≈ 13.49728948607267 +# end @testset "HH Neuron excitatory & inhibitory network" begin nn1 = HHNeuronExciBlox(name=Symbol("nrn1"), I_bg=3, freq=4; t_spike_window=0.1) From e8fbd0041297a32ce0b8a118bdffdb196d5dbfd0 Mon Sep 17 00:00:00 2001 From: agchesebro <76024790+agchesebro@users.noreply.github.com> Date: Mon, 15 Jan 2024 19:39:16 -0500 Subject: [PATCH 11/22] Removed additional failing tests Commented out "ODE from Graph and simulate" from `graph_to_dataframe.jl` because these are also built using old blocks. --- test/runtests.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/runtests.jl b/test/runtests.jl index 1e65fce9..7bab03ca 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -9,7 +9,7 @@ using SafeTestsets # @time @safetestset "Neural Signal Measurement Models Tests" begin include("measurementmodels.jl") end # @time @safetestset "Spectral Utilities Tests" begin include("spectraltools.jl") end @time @safetestset "Data Fitting Tests" begin include("datafitting.jl") end -@time @safetestset "ODE from Graph and simulate" begin include("graph_to_dataframe.jl") end +#@time @safetestset "ODE from Graph and simulate" begin include("graph_to_dataframe.jl") end #This no longer works because it's built on the old blocks @time @safetestset "Learning Tests" begin include("learning.jl") end @time @safetestset "Control Tests" begin include("controllers.jl") end @time @safetestset "Source Tests" begin include("source_components.jl") end From b344c275882d749541a9703d0906f0df44e4e7c9 Mon Sep 17 00:00:00 2001 From: david-hofmann Date: Wed, 17 Jan 2024 15:26:38 +0100 Subject: [PATCH 12/22] David code cleanup. Note that I collapsed compileparameterlist and progress_scope into paramscoping. This works fine for the current code but it will not work if models have many layers of hierarchies. However, if I understand it correctly with the new system from graph structure we won't run into that issue. This new structure also allowed us to get rid of LinHemo which had required the separation into progress_scope and compileparameterlist in the earlier version. --- src/Neuroblox.jl | 2 +- src/blox/blox_utilities.jl | 103 +++++++++++++--------------- src/blox/neural_mass.jl | 16 ++--- src/datafitting/spectralDCM.jl | 120 ++++++++++++++++++++++----------- src/measurementmodels/fmri.jl | 87 ++++++++++++++---------- 5 files changed, 187 insertions(+), 141 deletions(-) diff --git a/src/Neuroblox.jl b/src/Neuroblox.jl index f0551345..17b44980 100644 --- a/src/Neuroblox.jl +++ b/src/Neuroblox.jl @@ -174,7 +174,7 @@ export add_blox! export powerspectrum, complexwavelet, bandpassfilter, hilberttransform, phaseangle, mar2csd, csd2mar, mar_ml export learningrate, ControlError export boldsignal, BalloonModel -export vecparam, unvecparam, csd_Q, spectralVI +export vecparam, csd_Q, spectralVI export simulate, random_initials export system_from_graph, graph_delays export create_adjacency_edges! diff --git a/src/blox/blox_utilities.jl b/src/blox/blox_utilities.jl index d345a92c..784a7b15 100644 --- a/src/blox/blox_utilities.jl +++ b/src/blox/blox_utilities.jl @@ -1,57 +1,17 @@ -# function progress_scope(params; lvl=0) -# para_list = [] -# for p in params -# pp = ModelingToolkit.unwrap(p) -# if ModelingToolkit.hasdefault(pp) -# d = ModelingToolkit.getdefault(pp) -# if typeof(d)==SymbolicUtils.BasicSymbolic{Real} -# if lvl==0 -# pp = ParentScope(pp) -# else -# pp = DelayParentScope(pp,lvl) -# end -# end -# end -# push!(para_list,ModelingToolkit.wrap(pp)) -# end -# return para_list -# end - -""" -This function progresses the scope of parameters and leaves floating point values untouched -""" -function progress_scope(args...) - paramlist = [] - for p in args - if p isa Num - p = ParentScope(p) - # pp = ModelingToolkit.unwrap(p) - # if ModelingToolkit.hasdefault(pp) - # d = ModelingToolkit.getdefault(pp) - # if typeof(d)==SymbolicUtils.BasicSymbolic{Real} - # pp = ParentScope(pp) - # end - # end - # push!(para_list,ModelingToolkit.wrap(pp)) - push!(paramlist, p) - else - push!(paramlist, p) - end - end - return paramlist -end - """ - This function compiles already existing parameters with floats after making them parameters. - Keyword arguments are used because parameter definition requires names, not just values + function paramscoping(;kwargs...) + + Scope arguments that are already a symbolic model parameter thereby keep the correct namespace + and make those that are not yet symbolic a symbol. + Keyword arguments are used, because parameter definition require names, not just values. """ -function compileparameterlist(;kwargs...) +function paramscoping(;kwargs...) paramlist = [] for (kw, v) in kwargs - if v isa Union{Float64, Int} # note that Num is also subtype of Real. Thus union of types seems to be the solution. - paramlist = vcat(paramlist, @parameters $kw = v [tunable=true]) + if v isa Num + paramlist = vcat(paramlist, ParentScope(v)) else - paramlist = vcat(paramlist, v) + paramlist = vcat(paramlist, @parameters $kw = v [tunable=true]) end end return paramlist @@ -249,10 +209,24 @@ function count_spikes(x::AbstractVector{T}; minprom=zero(T), maxprom=nothing, mi return length(spikes) end -function get_hemodynamic_observers(sys_from_graph, nr) +""" + function get_hemodynamic_observers(sys, nr) + + Function extracts those states of an MTK system that were tagged "hemodynamic_observer". + + Arguments: + - `sys`: MTK system + - `nr` : number of regions of a model + + Returns: + - `obs_idx`: indices of states with "hemodynamic_observer" tag in MTK system + - `obs_states`: states with "hemodynamic_observer" tag in MTK system + +""" +function get_hemodynamic_observers(sys, nr) obs_idx = Dict([k => [] for k in 1:nr]) obs_states = Dict([k => [] for k in 1:nr]) - for (i, s) in enumerate(states(sys_from_graph)) + for (i, s) in enumerate(states(sys)) if isequal(getdescription(s), "hemodynamic_observer") regionidx = parse(Int64, split(string(s), "₊")[1][end]) push!(obs_idx[regionidx], i) @@ -262,17 +236,30 @@ function get_hemodynamic_observers(sys_from_graph, nr) return (obs_idx, obs_states) end -function addnontunableparams(param, model) - newparam = [] +""" + function addnontunableparams(param, model) + + Function adds parameters of a model that were not marked as tunable to a list of tunable parameters + and respects the MTK ordering of parameters. + + Arguments: + - `paramlist`: parameters of an MTK system that were tagged as tunable + - `sys`: MTK system + + Returns: + - `completeparamlist`: complete parameter list of a system, including those that were not tagged as tunable +""" +function addnontunableparams(paramlist, sys) + completeparamlist = [] k = 0 - for p in parameters(model) + for p in parameters(sys) if istunable(p) k += 1 - push!(newparam, param[k]) + push!(completeparamlist, paramlist[k]) else - push!(newparam, Symbolics.getdefaultval(p)) + push!(completeparamlist, Symbolics.getdefaultval(p)) end end - append!(newparam, param[k+1:end]) - return newparam + append!(completeparamlist, paramlist[k+1:end]) + return completeparamlist end \ No newline at end of file diff --git a/src/blox/neural_mass.jl b/src/blox/neural_mass.jl index 494771c2..1833ba54 100644 --- a/src/blox/neural_mass.jl +++ b/src/blox/neural_mass.jl @@ -143,8 +143,8 @@ struct HarmonicOscillator <: NeuralMassBlox odesystem namespace function HarmonicOscillator(;name, namespace=nothing, ω=25*(2*pi)*0.001, ζ=1.0, k=625*(2*pi), h=35.0) - p = progress_scope(ω, ζ, k, h) - p = compileparameterlist(ω=p[1], ζ=p[2], k=p[3], h=p[4]) + # p = progress_scope(ω, ζ, k, h) + p = paramscoping(ω=ω, ζ=ζ, k=k, h=h) sts = @variables x(t)=1.0 [output=true] y(t)=1.0 jcn(t)=0.0 [input=true] ω, ζ, k, h = p eqs = [D(x) ~ y-(2*ω*ζ*x)+ k*(2/π)*(atan((jcn)/h)) @@ -199,8 +199,8 @@ struct JansenRit <: NeuralMassBlox λ = isnothing(λ) ? (cortical ? 5.0 : 400.0) : λ r = isnothing(r) ? (cortical ? 0.15 : 0.1) : r - p = progress_scope(τ, H, λ, r) - p = compileparameterlist(τ=p[1], H=p[2], λ=p[3], r=p[4]) + # p = progress_scope(τ, H, λ, r) + p = paramscoping(τ=τ, H=H, λ=λ, r=r) τ, H, λ, r = p sts = @variables x(..)=1.0 [output=true] y(t)=1.0 jcn(t)=0.0 [input=true] eqs = [D(x(t)) ~ y - ((2/τ)*x(t)), @@ -250,8 +250,8 @@ struct WilsonCowan <: NeuralMassBlox θ_I=3.5, η=1.0 ) - p = progress_scope(τ_E, τ_I, a_E, a_I, c_EE, c_IE, c_EI, c_II, θ_E, θ_I, η) - p = compileparameterlist(τ_E=p[1], τ_I=p[2], a_E=p[3], a_I=p[4], c_EE=p[5], c_IE=p[6], c_EI=p[7], c_II=p[8], θ_E=p[9], θ_I=p[10], η=p[11]) + # p = progress_scope(τ_E, τ_I, a_E, a_I, c_EE, c_IE, c_EI, c_II, θ_E, θ_I, η) + p = paramscoping(τ_E=τ_E, τ_I=τ_I, a_E=a_E, a_I=a_I, c_EE=c_EE, c_IE=c_IE, c_EI=c_EI, c_II=c_II, θ_E=θ_E, θ_I=θ_I, η=η) τ_E, τ_I, a_E, a_I, c_EE, c_IE, c_EI, c_II, θ_E, θ_I, η = p sts = @variables E(t)=1.0 [output=true] I(t)=1.0 jcn(t)=0.0 [input=true] #P(t)=0.0 eqs = [D(E) ~ -E/τ_E + 1/(1 + exp(-a_E*(c_EE*E - c_IE*I - θ_E + η*(jcn)))), #old form: D(E) ~ -E/τ_E + 1/(1 + exp(-a_E*(c_EE*E - c_IE*I - θ_E + P + η*(jcn)))), @@ -318,8 +318,8 @@ struct LarterBreakspear <: NeuralMassBlox r_NMDA=0.25, C=0.35 ) - p = progress_scope(C, δ_VZ, T_Ca, δ_Ca, g_Ca, V_Ca, T_K, δ_K, g_K, V_K, T_Na, δ_Na, g_Na, V_Na, V_L, g_L, V_T, Z_T, Q_Vmax, Q_Zmax, IS, a_ee, a_ei, a_ie, a_ne, a_ni, b, τ_K, ϕ,r_NMDA) - p = compileparameterlist(C=p[1], δ_VZ=p[2], T_Ca=p[3], δ_Ca=p[4], g_Ca=p[5], V_Ca=p[6], T_K=p[7], δ_K=p[8], g_K=p[9], V_K=p[10], T_Na=p[11], δ_Na=p[12], g_Na=p[13],V_Na=p[14], V_L=p[15], g_L=p[16], V_T=p[17], Z_T=p[18], Q_Vmax=p[19], Q_Zmax=p[20], IS=p[21], a_ee=p[22], a_ei=p[23], a_ie=p[24], a_ne=p[25], a_ni=p[26], b=p[27], τ_K=p[28], ϕ=p[29], r_NMDA=p[30]) + # p = progress_scope(C, δ_VZ, T_Ca, δ_Ca, g_Ca, V_Ca, T_K, δ_K, g_K, V_K, T_Na, δ_Na, g_Na, V_Na, V_L, g_L, V_T, Z_T, Q_Vmax, Q_Zmax, IS, a_ee, a_ei, a_ie, a_ne, a_ni, b, τ_K, ϕ,r_NMDA) + p = paramscoping(C=C, δ_VZ=δ_VZ, T_Ca=T_Ca, δ_Ca=δ_Ca, g_Ca=g_Ca, V_Ca=V_Ca, T_K=T_K, δ_K=δ_K, g_K=g_K, V_K=V_K, T_Na=T_Na, δ_Na=δ_Na, g_Na=g_Na, V_Na=V_Na, V_L=V_L, g_L=g_L, V_T=V_T, Z_T=Z_T, Q_Vmax=Q_Vmax, Q_Zmax=Q_Zmax, IS=IS, a_ee=a_ee, a_ei=a_ei, a_ie=a_ie, a_ne=a_ne, a_ni=a_ni, b=b, τ_K=τ_K, ϕ=ϕ, r_NMDA=r_NMDA) C, δ_VZ, T_Ca, δ_Ca, g_Ca, V_Ca, T_K, δ_K, g_K, V_K, T_Na, δ_Na, g_Na,V_Na, V_L, g_L, V_T, Z_T, Q_Vmax, Q_Zmax, IS, a_ee, a_ei, a_ie, a_ne, a_ni, b, τ_K, ϕ, r_NMDA = p sts = @variables V(t)=0.5 Z(t)=0.5 W(t)=0.5 jcn(t)=0.0 [input=true] Q_V(t) [output=true] Q_Z(t) m_Ca(t) m_Na(t) m_K(t) diff --git a/src/datafitting/spectralDCM.jl b/src/datafitting/spectralDCM.jl index 0d68d622..766b72eb 100644 --- a/src/datafitting/spectralDCM.jl +++ b/src/datafitting/spectralDCM.jl @@ -18,7 +18,6 @@ using ForwardDiff: Dual using ForwardDiff: Partials using LinearAlgebra: Eigen using LinearAlgebra -# using ToeplitzMatrices using ExponentialUtilities ForwardDiff.can_dual(::Type{Complex{Float64}}) = true @@ -26,6 +25,20 @@ using ChainRules: _eigen_norm_phase_fwd! tagtype(::Dual{T,V,N}) where {T,V,N} = T +""" + function LinearAlgebra.eigen(M::Matrix{Dual{T, P, np}}) where {T, P, np} + + Dispatch of LinearAlgebra.eigen for dual matrices with complex numbers. Make the eigenvalue decomposition + amenable to automatic differentiation. To do so compute the analytical derivative of eigenvalues + and eigenvectors. + + Arguments: + - `M`: matrix of type Dual of which to compute the eigenvalue decomposition. + + Returns: + - `Eigen(evals, evecs)`: eigenvalue decomposition returned as type LinearAlgebra.Eigen + +""" function LinearAlgebra.eigen(M::Matrix{Dual{T, P, np}}) where {T, P, np} nd = size(M, 1) A = (p->p.value).(M) @@ -182,12 +195,21 @@ end return y end +""" + function matlab_norm(A, p) -function matlab_norm(A, p) + Simple helper function to implement the norm of a matrix that is equivalent to the one given in MATLAB for order=1, 2, Inf. + This is needed for the reproduction of the exact same results of SPM12. + + Arguments: + - `A`: matrix + - `p`: order of norm +""" +function matlab_norm(M, p) if p == 1 - return maximum(vec(sum(abs.(A),dims=1))) + return maximum(vec(sum(abs.(M),dims=1))) elseif p == Inf - return maximum(vec(sum(abs.(A),dims=2))) + return maximum(vec(sum(abs.(M),dims=2))) elseif p == 2 print("Not implemented yet!\n") return NaN @@ -210,6 +232,14 @@ function csd_Q(csd) return Q end +""" + function spm_logdet(M) + + SPM12 style implementation of the logarithm of the determinant of a matrix. + + Arguments: + - `M`: matrix +""" function spm_logdet(M) TOL = 1e-16 s = la.diag(M) @@ -228,6 +258,14 @@ mutable struct vb_state Σθ::Matrix{Float64} end +""" + vecparam(param::OrderedDict{Any, Any}) + + Function to flatten an ordered dictionary of model parameters and return a simple list of parameter values. + + Arguments: + - `param`: dictionary of model parameters (may contain numbers and lists of numbers) +""" function vecparam(param::OrderedDict{Any, Any}) flatparam = Float64[] for v in values(param) @@ -242,22 +280,22 @@ function vecparam(param::OrderedDict{Any, Any}) return flatparam end -function unvecparam(vals, param::OrderedDict{Any,Any}) - iter = 1 - paramnewvals = copy(param) - for (k, v) in param - if (typeof(v) <: Array) - paramnewvals[k] = vals[iter:iter+length(v)-1] - iter += length(v) - else - paramnewvals[k] = vals[iter] - iter += 1 - end - end - return paramnewvals -end - - +""" + variationalbayes(idx_A, y, derivatives, w, V, p, priors, niter) + + Computes parameter estimation using variational Laplace that is to a large extend equivalent to the SPM12 implementation + and provides the exact same values. + + Arguments: + - `idx_A`: indices of connection weight parameter matrix A in model Jacobian + - `y`: empirical cross-spectral density (input data) + - `derivatives`: jacobian of model as well as gradient of observer function + - `w`: fequencies at which to estimate cross-spectral densities + - `V`: projection matrix from full parameter space to reduced space that removes parameters with zero variance prior + - `p`: order of multivariate autoregressive model for estimation of cross-spectral densities from data + - `priors`: Bayesian priors, mean and variance thereof. Laplace approximation assumes Gaussian distributions + - `niter`: number of iterations of the optimization procedure +""" @views function variationalbayes(idx_A, y, derivatives, w, V, p, priors, niter) # extract priors Πθ_pr = priors[:Σ][:Πθ_pr] @@ -441,26 +479,28 @@ end end """ -Performs a variational inference to fit a cross spectral density. Current implementation provides a Variational Laplace fit. -(ToDo: generalize to different VI algorithms) - -Input: -- data : Dataframe with column names corresponding to the regions of measurement. -- neuraldynmodel : MTK model, it is an ODESystem or a System (haven't tested with System yet). -- observationmodel : MTK model that defines measurement function (ex. bold signal). - Current implementation limits to one measurement functional form for all regions. -- initcond : Dictionary of initial conditions, numerical values for all states -- csdsetup : Dictionary of parameters required for the computation of the cross spectral density --- dt : sampling interval --- freq : frequencies at which to evaluate the CSD --- p : order parameter of the multivariate autoregression model -- params : Dataframe of parameters with the following columns: --- name : corresponds to MTK model name --- mean : corresponds to prior mean value --- variance : corresponds to the prior variances -- hyperparams : Dataframe of parameters with the following columns: --- Πλ_pr : prior precision matrix for λ hyperparameter(s) --- μλ_pr : prior mean(s) for λ hyperparameter(s) + spectralVI(data, neuraldynmodel, observationmodel, initcond, csdsetup, params, hyperparams) + + Interface function to performs variational inference to fit model parameters to empirical cross spectral density. + The current implementation provides a Variational Laplace fit (see function above `variationalbayes`). + + Arguments: + - `data` : Dataframe with column names corresponding to the regions of measurement. + - `neuraldynmodel` : MTK model, it is an ODESystem or a System (haven't tested with System yet). + - `observationmodel` : MTK model that defines measurement function (ex. bold signal). + Current implementation limits to one measurement functional form for all regions. + - `initcond` : Dictionary of initial conditions, numerical values for all states + - `csdsetup` : Dictionary of parameters required for the computation of the cross spectral density + -- `dt` : sampling interval + -- `freq` : frequencies at which to evaluate the CSD + -- `p` : order parameter of the multivariate autoregression model + - `params` : Dataframe of parameters with the following columns: + -- `name` : corresponds to MTK model name + -- `mean` : corresponds to prior mean value + -- `variance` : corresponds to the prior variances + - `hyperparams` : Dataframe of parameters with the following columns: + -- `Πλ_pr` : prior precision matrix for λ hyperparameter(s) + -- `μλ_pr` : prior mean(s) for λ hyperparameter(s) """ function spectralVI(data, neuraldynmodel, observationmodel, initcond, csdsetup, params, hyperparams) # compute cross-spectral density diff --git a/src/measurementmodels/fmri.jl b/src/measurementmodels/fmri.jl index 50dd2328..cd6c6fd2 100644 --- a/src/measurementmodels/fmri.jl +++ b/src/measurementmodels/fmri.jl @@ -8,20 +8,33 @@ boldsignal : computes BOLD signal """ """ -### Input variables ### -name : name of ODE system -jcn : neural activity -s : vascular signal -lnf : logarithm of rCBF -lnν : logarithm of venous volume -lnq : logarithm of deoxyhemoglobin (dHb) - -### Parameter ### -lnκ : logarithmic prefactor to signal decay H[1], set to 0 for standard parameter value. -lnτ : logarithmic prefactor to transit time H[3], set to 0 for standard parameter value. - -### Return variables ### -returns an ODESystem of the biophysical model for the hemodynamics + BalloonModel(;name, namespace=nothing, lnκ=0.0, lnτ=0.0) + + Create a balloon model blox which computes the hemodynamic responses to some underlying neuronal activity + The formal definition of this blox is: + """ + # ```math + # \\frac{ds}{dt} = \\text{jcn} - \\kappa s - \\gamma (u-1) + # \\frac{du}{dt} = s + # \\frac{d\\nu}{dt} = u - v^{1/\\alpha} + # \\frac{dq}{dt} = u E(u, E_0)/E_0 - v^{1/\\alpha} q/v + # ``` +""" + where ``jcn`` is any input to the blox (represents the neuronal activity) + +Arguments: +- `name`: Name given to `ODESystem` object within the blox. +- `namespace`: Additional namespace above `name` if needed for inheritance. +- `lnκ`: logarithmic prefactor to signal decay H[1], set to 0 for standard parameter value. +- `lnτ`: logarithmic prefactor to transit time H[3], set to 0 for standard parameter value. + +NB: the prefix ln of the variables u, ν, q as well as the parameters κ, τ denotes their transformation into logarithmic space +to enforce their positivity. This transformation is considered in the derivates of the model equations below. + +Citations: +1. Stephan K E, Weiskopf N, Drysdale P M, Robinson P A, and Friston K J. Comparing Hemodynamic Models with DCM. NeuroImage 38, no. 3 (2007): 387–401. doi: 10.1016/j.neuroimage.2007.07.040 +2. Hofmann D, Chesebro A G, Rackauckas C, Mujica-Parodi L R, Friston K J, Edelman A, and Strey H H. Leveraging Julia's Automated Differentiation and Symbolic Computation to Increase Spectral DCM Flexibility and Speed, 2023. doi: 10.1101/2023.10.27.564407 + """ struct BalloonModel <: ObserverBlox params @@ -39,17 +52,17 @@ struct BalloonModel <: ObserverBlox =# H = [0.64, 0.32, 2.00, 0.32, 0.4] - p = progress_scope(lnκ, lnτ) # progress scope if needed - p = compileparameterlist(lnκ=p[1], lnτ=p[2]) # finally compile all parameters - lnκ, lnτ = p # assign the modified parameters + # p = progress_scope(lnκ, lnτ) # progress scope if needed + p = paramscoping(lnκ=lnκ, lnτ=lnτ) # finally compile all parameters + lnκ, lnτ = p # assign the modified parameters - sts = @variables s(t)=1.0 lnf(t)=1.0 lnν(t)=1.0 [output=true, description="hemodynamic_observer"] lnq(t)=1.0 [output=true, description="hemodynamic_observer"] jcn(t)=0.0 [input=true] + sts = @variables s(t)=1.0 lnu(t)=1.0 lnν(t)=1.0 [output=true, description="hemodynamic_observer"] lnq(t)=1.0 [output=true, description="hemodynamic_observer"] jcn(t)=0.0 [input=true] eqs = [ - D(s) ~ jcn - H[1]*exp(lnκ)*s - H[2]*(exp(lnf) - 1), - D(lnf) ~ s / exp(lnf), - D(lnν) ~ (exp(lnf) - exp(lnν)^(H[4]^-1)) / (H[3]*exp(lnτ)*exp(lnν)), - D(lnq) ~ (exp(lnf)/exp(lnq)*((1 - (1 - H[5])^(exp(lnf)^-1))/H[5]) - exp(lnν)^(H[4]^-1 - 1))/(H[3]*exp(lnτ)) + D(s) ~ jcn - H[1]*exp(lnκ)*s - H[2]*(exp(lnu) - 1), + D(lnu) ~ s / exp(lnu), + D(lnν) ~ (exp(lnu) - exp(lnν)^(H[4]^-1)) / (H[3]*exp(lnτ)*exp(lnν)), + D(lnq) ~ (exp(lnu)/exp(lnq)*((1 - (1 - H[5])^(exp(lnu)^-1))/H[5]) - exp(lnν)^(H[4]^-1 - 1))/(H[3]*exp(lnτ)) ] sys = System(eqs, name=name) new(p, Num(0), sts[5], sys, namespace) @@ -57,22 +70,28 @@ struct BalloonModel <: ObserverBlox end - """ -BOLD signal model as described in: + boldsignal(;name, lnϵ=0.0) + + Bold signal observer function. This requires connection to the variables ν and q of a balloon model. + The formal definition of this blox is: + """ + # ```math + # \\lambda(\\nu, q) = V_0 \\left[ k_1 (1-q) + k_2 \\left( 1 - \\frac{q}{v} \\right) + k_3 (1-v)\\right] + # ``` +""" -Stephan KE, Weiskopf N, Drysdale PM, Robinson PA, Friston KJ (2007) -Comparing hemodynamic models with DCM. NeuroImage 38: 387-401. +Arguments: +- `name`: Name given to `ODESystem` object within the blox. +- lnϵ : logarithm of ratio of intra- to extra-vascular signal -### Input variables ### -lnν : logarithm of venous volume -lnq : logarithm of deoxyhemoglobin (dHb) +NB: the prefix ln of the variables ν, q as well as the parameters ϵ denotes their transformation into logarithmic space +to enforce their positivity. -### Parameter ### -lnϵ : logarithm of ratio of intra- to extra-vascular signal +Citations: +1. Stephan K E, Weiskopf N, Drysdale P M, Robinson P A, and Friston K J. Comparing Hemodynamic Models with DCM. NeuroImage 38, no. 3 (2007): 387–401. doi: 10.1016/j.neuroimage.2007.07.040 +2. Hofmann D, Chesebro A G, Rackauckas C, Mujica-Parodi L R, Friston K J, Edelman A, and Strey H H. Leveraging Julia's Automated Differentiation and Symbolic Computation to Increase Spectral DCM Flexibility and Speed, 2023. doi: 10.1101/2023.10.27.564407 -### Return variables ### -returns ODESystem """ function boldsignal(;name, lnϵ=0.0) # NB: Biophysical constants for 1.5T scanners @@ -87,7 +106,7 @@ function boldsignal(;name, lnϵ=0.0) nu0 = 40.3 # resting oxygen extraction fraction E0 = 0.4 - # -Coefficients in BOLD signal model + # Coefficients in BOLD signal model k1 = 4.3*nu0*E0*TE params = @parameters lnϵ=lnϵ From 5ee0c95ba7ad09c4ed908bfe1549234850395cbc Mon Sep 17 00:00:00 2001 From: agchesebro <76024790+agchesebro@users.noreply.github.com> Date: Wed, 17 Jan 2024 11:03:33 -0500 Subject: [PATCH 13/22] Clean up exports Removing old blocks --- src/Neuroblox.jl | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/Neuroblox.jl b/src/Neuroblox.jl index 17b44980..640d9b63 100644 --- a/src/Neuroblox.jl +++ b/src/Neuroblox.jl @@ -153,11 +153,10 @@ function random_initials(odesys::ODESystem, blox) return u0 end -export harmonic_oscillator, jansen_ritC, jansen_ritSC, jansen_rit_spm12, +export jansen_rit_spm12, next_generation, thetaneuron, qif_neuron, if_neuron, hh_neuron_excitatory, - hh_neuron_inhibitory, synaptic_network, van_der_pol, wilson_cowan -export IFNeuronBlox, LIFNeuronBlox, QIFNeuronBlox, HHNeuronExciBlox, HHNeuronInhibBlox, LinearNeuralMassBlox, - WilsonCowanBlox, HarmonicOscillatorBlox, JansenRitCBlox, JansenRitSCBlox, LarterBreakspearBlox, + hh_neuron_inhibitory, synaptic_network, van_der_pol +export IFNeuronBlox, LIFNeuronBlox, QIFNeuronBlox, HHNeuronExciBlox, HHNeuronInhibBlox, CanonicalMicroCircuitBlox, WinnerTakeAllBlox, CorticalBlox, SuperCortical export LinearNeuralMass, HarmonicOscillator, JansenRit, WilsonCowan, LarterBreakspear, NextGenerationBlox, NextGenerationResolvedBlox, NextGenerationEIBlox export Matrisome, Striosome, Striatum, GPi, GPe, Thalamus, STN, TAN, SNc From 4f3c763c3c31f7bd99ed30cdaa4b9d3cf21fa1d8 Mon Sep 17 00:00:00 2001 From: david-hofmann Date: Fri, 19 Jan 2024 15:54:07 +0100 Subject: [PATCH 14/22] removed libraries from spectralDCM.jl, removed aliases for libraries --- src/Neuroblox.jl | 12 +++++++++--- src/datafitting/spectralDCM.jl | 20 +++++--------------- src/utilities/spectral_tools.jl | 6 +++--- 3 files changed, 17 insertions(+), 21 deletions(-) diff --git a/src/Neuroblox.jl b/src/Neuroblox.jl index 17b44980..2145c5f3 100644 --- a/src/Neuroblox.jl +++ b/src/Neuroblox.jl @@ -8,12 +8,18 @@ using Reexport using Graphs using MetaGraphs -import LinearAlgebra as la +using ForwardDiff: Dual, Partials, jacobian +using ForwardDiff +ForwardDiff.can_dual(::Type{Complex{Float64}}) = true +using ChainRules: _eigen_norm_phase_fwd! + +using LinearAlgebra +using ToeplitzMatrices: Toeplitz +using ExponentialUtilities: exponential! + using AbstractFFTs using FFTW -import ToeplitzMatrices as tm using DSP, Statistics -import ExponentialUtilities as eu using OrdinaryDiffEq using DifferentialEquations using Interpolations diff --git a/src/datafitting/spectralDCM.jl b/src/datafitting/spectralDCM.jl index 766b72eb..bf847229 100644 --- a/src/datafitting/spectralDCM.jl +++ b/src/datafitting/spectralDCM.jl @@ -13,18 +13,8 @@ spm_logdet : mimick SPM12's way to compute the logarithm of the determinan variationalbayes : main routine that computes the variational Bayes estimate of model parameters """ -using ForwardDiff -using ForwardDiff: Dual -using ForwardDiff: Partials -using LinearAlgebra: Eigen -using LinearAlgebra -using ExponentialUtilities - -ForwardDiff.can_dual(::Type{Complex{Float64}}) = true -using ChainRules: _eigen_norm_phase_fwd! tagtype(::Dual{T,V,N}) where {T,V,N} = T - """ function LinearAlgebra.eigen(M::Matrix{Dual{T, P, np}}) where {T, P, np} @@ -228,7 +218,7 @@ function csd_Q(csd) end end end - Q = inv(Q .+ matlab_norm(Q, 1)/32*la.Matrix(la.I, size(Q))) # TODO: MATLAB's and Julia's norm function are different! Reconciliate? + Q = inv(Q .+ matlab_norm(Q, 1)/32*Matrix(I, size(Q))) # TODO: MATLAB's and Julia's norm function are different! Reconciliate? return Q end @@ -242,9 +232,9 @@ end """ function spm_logdet(M) TOL = 1e-16 - s = la.diag(M) + s = diag(M) if sum(abs.(s)) != sum(abs.(M[:])) - ~, s, ~ = la.svd(M) + ~, s, ~ = svd(M) end return sum(log.(s[(s .> TOL) .& (s .< TOL^-1)])) end @@ -328,7 +318,7 @@ end local ϵ_λ, iΣ, Σλ, Σθ, dFdpp, dFdp for k = 1:niter state.iter = k - dfdp = ForwardDiff.jacobian(f_prep, μθ_po) * V + dfdp = jacobian(f_prep, μθ_po) * V norm_dfdp = matlab_norm(dfdp, Inf); revert = isnan(norm_dfdp) || norm_dfdp > exp(32); @@ -349,7 +339,7 @@ end # J_test = JacVec(f_prep, μθ_po) # dfdp = stack(J_test*v for v in eachcol(V)) - dfdp = ForwardDiff.jacobian(f_prep, μθ_po) * V + dfdp = jacobian(f_prep, μθ_po) * V # check for stability norm_dfdp = matlab_norm(dfdp, Inf); diff --git a/src/utilities/spectral_tools.jl b/src/utilities/spectral_tools.jl index 5ed4dc7b..12153775 100644 --- a/src/utilities/spectral_tools.jl +++ b/src/utilities/spectral_tools.jl @@ -182,7 +182,7 @@ function mar2csd(mar, freqs, sf) nf = length(w) csd = zeros(ComplexF64, nf, nd, nd) for i = 1:nf - af_tmp = la.I + af_tmp = I for k = 1:p af_tmp = af_tmp + A[k] * exp(-im * k * w[i]) end @@ -203,7 +203,7 @@ function mar2csd(mar, freqs) nf = length(w) csd = zeros(eltype(Σ), nf, nd, nd) for i = 1:nf - af_tmp = la.I + af_tmp = I for k = 1:p af_tmp = af_tmp + A[k] * exp(-im * k * w[i]) end @@ -276,7 +276,7 @@ function csd2mar(csd, w, dt, p) for i = 1:m for j = 1:m A[((i-1)*p+1):i*p, j] = ccf[(1:p) .+ 1, i, j] - B[((i-1)*p+1):i*p, ((j-1)*p+1):j*p] = tm.Toeplitz(ccf[1:p, i, j], vcat(ccf[1,i,j], ccf[2:p, j, i])) # SymmetricToeplitz(ccf[1:p, i, j]) + B[((i-1)*p+1):i*p, ((j-1)*p+1):j*p] = Toeplitz(ccf[1:p, i, j], vcat(ccf[1,i,j], ccf[2:p, j, i])) # SymmetricToeplitz(ccf[1:p, i, j]) end end a = B\A From 4498b9522acbe6560e2950980360b9e46233bb08 Mon Sep 17 00:00:00 2001 From: agchesebro <76024790+agchesebro@users.noreply.github.com> Date: Tue, 23 Jan 2024 14:51:28 -0500 Subject: [PATCH 15/22] Additional cleanup * Remove old examples * Add new examples of Jansen-Rit with delays and Larter-Breakspear with DTI-derived connections * Add additional function for Balloon model convolution after simulation * Test documentation formatting --- examples/jansen_rit_liu_et_al.jl | 99 +++++++++ .../whole_brain_larter_breakspear.jl | 137 ++++++++++++ examples/wholebrainWC/DATA/brainamp.loc | 63 ------ examples/wholebrainWC/DATA/eeg_chanloc.mat | Bin 3459 -> 0 bytes .../DATA/empirical_microstates.mat | Bin 20816 -> 0 bytes ...mean_empirical_functional_connectivity.mat | Bin 45056 -> 0 bytes .../wholebrainWC/DATA/mean_leadfield_svd.mat | Bin 38281 -> 0 bytes .../DATA/mean_structural_connectivity.mat | Bin 78925 -> 0 bytes examples/wholebrainWC/Project.toml | 10 - .../wholebrainWC/connectivity_96/areas.txt | 96 --------- .../connectivity_96/average_orientations.txt | 96 --------- .../wholebrainWC/connectivity_96/centres.txt | 96 --------- .../wholebrainWC/connectivity_96/cortical.txt | 96 --------- .../wholebrainWC/connectivity_96/info.txt | 2 - .../connectivity_96/tract_lengths.txt | 96 --------- .../wholebrainWC/connectivity_96/weights.txt | 96 --------- examples/wholebrainWC/small_LB.jl | 51 ----- examples/wholebrainWC/wb_LB.jl | 52 ----- examples/wholebrainWC/wholebrainLB.jl | 155 -------------- examples/wholebrainWC/wholebrainWC.jl | 195 ------------------ src/Neuroblox.jl | 2 + src/blox/neural_mass.jl | 16 +- src/utilities/bold_methods.jl | 45 ++++ 23 files changed, 291 insertions(+), 1112 deletions(-) create mode 100644 examples/jansen_rit_liu_et_al.jl create mode 100644 examples/larter_breakspear/whole_brain_larter_breakspear.jl delete mode 100644 examples/wholebrainWC/DATA/brainamp.loc delete mode 100644 examples/wholebrainWC/DATA/eeg_chanloc.mat delete mode 100644 examples/wholebrainWC/DATA/empirical_microstates.mat delete mode 100644 examples/wholebrainWC/DATA/mean_empirical_functional_connectivity.mat delete mode 100644 examples/wholebrainWC/DATA/mean_leadfield_svd.mat delete mode 100644 examples/wholebrainWC/DATA/mean_structural_connectivity.mat delete mode 100644 examples/wholebrainWC/Project.toml delete mode 100644 examples/wholebrainWC/connectivity_96/areas.txt delete mode 100644 examples/wholebrainWC/connectivity_96/average_orientations.txt delete mode 100755 examples/wholebrainWC/connectivity_96/centres.txt delete mode 100644 examples/wholebrainWC/connectivity_96/cortical.txt delete mode 100644 examples/wholebrainWC/connectivity_96/info.txt delete mode 100644 examples/wholebrainWC/connectivity_96/tract_lengths.txt delete mode 100644 examples/wholebrainWC/connectivity_96/weights.txt delete mode 100644 examples/wholebrainWC/small_LB.jl delete mode 100644 examples/wholebrainWC/wb_LB.jl delete mode 100644 examples/wholebrainWC/wholebrainLB.jl delete mode 100644 examples/wholebrainWC/wholebrainWC.jl create mode 100644 src/utilities/bold_methods.jl diff --git a/examples/jansen_rit_liu_et_al.jl b/examples/jansen_rit_liu_et_al.jl new file mode 100644 index 00000000..555a7199 --- /dev/null +++ b/examples/jansen_rit_liu_et_al.jl @@ -0,0 +1,99 @@ +# A basic example using delayed differential equations to introduce optional delays in interregional connections. +# The system being built here is the same as in Liu et al. (2020). DOI: 10.1016/j.neunet.2019.12.021. + +using Neuroblox # Core functionality +using DifferentialEquations # Needed for solver +using MetaGraphs # Set up graph of systems + +τ_factor = 1000 #needed because the paper units were in seconds, and we need ms to be consistent + +# Create Jansen-Rit blocks with the same parameters as the paper and store them in a list +@named Str = JansenRit(τ=0.0022*τ_factor, H=20, λ=300, r=0.3) +@named GPE = JansenRit(τ=0.04*τ_factor, cortical=false) # all default subcortical except τ +@named STN = JansenRit(τ=0.01*τ_factor, H=20, λ=500, r=0.1) +@named GPI = JansenRit(cortical=false) # default parameters subcortical Jansen Rit blox +@named Th = JansenRit(τ=0.002*τ_factor, H=10, λ=20, r=5) +@named EI = JansenRit(τ=0.01*τ_factor, H=20, λ=5, r=5) +@named PY = JansenRit(cortical=true) # default parameters cortical Jansen Rit blox +@named II = JansenRit(τ=2.0*τ_factor, H=60, λ=5, r=5) +blox = [Str, GPE, STN, GPI, Th, EI, PY, II] + +# test graphs +g = MetaDiGraph() +add_blox!.(Ref(g), blox) + +# Store parameters to be passed later on +params = @parameters C_Cor=60 C_BG_Th=60 C_Cor_BG_Th=5 C_BG_Th_Cor=5 + +# Add the edges as specified in Table 2 of Liu et al. +# This is a subset of the edges selected to run a shorter version of the model. +# If you want to add more edges in a batch, you can create an adjacency matrix and then call create_adjacency_edges!(g, adj_matrix). +add_edge!(g, 2, 1, Dict(:weight => -0.5*C_BG_Th)) +add_edge!(g, 2, 2, Dict(:weight => -0.5*C_BG_Th)) +add_edge!(g, 2, 3, Dict(:weight => C_BG_Th)) +add_edge!(g, 3, 2, Dict(:weight => -0.5*C_BG_Th)) +add_edge!(g, 3, 7, Dict(:weight => C_Cor_BG_Th)) +add_edge!(g, 4, 2, Dict(:weight => -0.5*C_BG_Th)) +add_edge!(g, 4, 3, Dict(:weight => C_BG_Th)) +add_edge!(g, 5, 4, Dict(:weight => -0.5*C_BG_Th)) +add_edge!(g, 6, 5, Dict(:weight => C_BG_Th_Cor)) +add_edge!(g, 6, 7, Dict(:weight => 6*C_Cor)) +add_edge!(g, 7, 6, Dict(:weight => 4.8*C_Cor)) +add_edge!(g, 7, 8, Dict(:weight => -1.5*C_Cor)) +add_edge!(g, 8, 7, Dict(:weight => 1.5*C_Cor)) +add_edge!(g, 8, 8, Dict(:weight => 3.3*C_Cor)) + +# Create the ODE system. This will have some warnings as delays are set to 0 - ignore those for now. +@named final_system = system_from_graph(g, params) +final_system_sys = structural_simplify(final_system) + +# Collect the graph delays and create a DDEProblem. This will all be zero in this case. +final_delays = graph_delays(g) +sim_dur = 1000.0 # Simulate for 1 second +prob = DDEProblem(final_system_sys, + [], + (0.0, sim_dur), + constant_lags = final_delays) + +# Select the algorihm. MethodOfSteps will return the same as Vern7() in this case because there are no non-zero delays, but is required since this is a DDEProblem. +alg = MethodOfSteps(Vern7()) +sol_dde_no_delays = solve(prob, alg, saveat=1) + + +# Example of delayed connections + +# First, recreate the graph to remove previous connections +g = MetaDiGraph() +add_blox!.(Ref(g), blox) + +# Now, add the edges with the specified delays. Again, if you prefer, there's a version using adjacency and delay matrices to assign all at once. +add_edge!(g, 2, 1, Dict(:weight => -0.5*60, :delay => 1)) +add_edge!(g, 2, 2, Dict(:weight => -0.5*60, :delay => 2)) +add_edge!(g, 2, 3, Dict(:weight => 60, :delay => 1)) +add_edge!(g, 3, 2, Dict(:weight => -0.5*60, :delay => 1)) +add_edge!(g, 3, 7, Dict(:weight => 5, :delay => 1)) +add_edge!(g, 4, 2, Dict(:weight => -0.5*60, :delay => 4)) +add_edge!(g, 4, 3, Dict(:weight => 60, :delay => 1)) +add_edge!(g, 5, 4, Dict(:weight => -0.5*60, :delay => 2)) +add_edge!(g, 6, 5, Dict(:weight => 5, :delay => 1)) +add_edge!(g, 6, 7, Dict(:weight => 6*60, :delay => 2)) +add_edge!(g, 7, 6, Dict(:weight => 4.8*60, :delay => 3)) +add_edge!(g, 7, 8, Dict(:weight => -1.5*60, :delay => 1)) +add_edge!(g, 8, 7, Dict(:weight => 1.5*60, :delay => 4)) +add_edge!(g, 8, 8, Dict(:weight => 3.3*60, :delay => 1)) + +# Now you can run the same code as above, but it will handle the delays automatically. +@named final_system = system_from_graph(g, params) +final_system_sys = structural_simplify(final_system) + +# Collect the graph delays and create a DDEProblem. +final_delays = graph_delays(g) +sim_dur = 1000.0 # Simulate for 1 second +prob = DDEProblem(final_system_sys, + [], + (0.0, sim_dur), + constant_lags = final_delays) + +# Select the algorihm. MethodOfSteps is now needed because there are non-zero delays. +alg = MethodOfSteps(Vern7()) +sol_dde_with_delays = solve(prob, alg, saveat=1) \ No newline at end of file diff --git a/examples/larter_breakspear/whole_brain_larter_breakspear.jl b/examples/larter_breakspear/whole_brain_larter_breakspear.jl new file mode 100644 index 00000000..07e996e9 --- /dev/null +++ b/examples/larter_breakspear/whole_brain_larter_breakspear.jl @@ -0,0 +1,137 @@ +# This is a tutorial for how to run a whole-brain simulation using the Larter-Breakspear model. +# This approach is the same as that taken in Antal et al. (2023) and van Nieuwenhuizen et al. (2023), with the exception that a different DTI dataset is used. +# The data used in those papers is available upon request from the authors where it was validated in Endo et al. (2020). +# As we'd like to make this tutorial as accessible as possible, we'll use a different dataset that is publicly available. +# The dataset used here is from Rosen and Halgren (2021) and is available at https://zenodo.org/records/10150880. + +# References: +# 1. Antal et al. (2023). DOI: 10.48550/arXiv.2303.13746. +# 2. van Nieuwenhuizen et al. (2023). DOI: 10.1101/2023.05.10.540257. +# 3. Endo et al. (2020). DOI: 10.3389/fncom.2019.00091. +# 4. Rosen and Halgren (2021). DOI: 10.1523/ENEURO.0416-20.2020. + +using Neuroblox # Core functionality +using CSV, MAT, DataFrames # Import/export data functions +using MetaGraphs # Set up graph of systems +using DifferentialEquations # Needed for solver TODO: make a new simulate that can handle system_from_graph +using StatsBase # Needed for rescaling the DTI matrix +#using Plots # Only uncomment if you actually want to do plotting, otherwise save yourself the overhead + +# A note on the data: this is a 360-region parcellation of the brain. For this example, we'll extract and rescale the left hemisphere default mode network. +# If you want a true rescaling method, you'd need to do some additional corrections (e.g., volume correction) for the number of streamlines computed. +# For this tutorial though, the rescaling is approximate to just give us a working example. +# See Endo et al. for more details on how to do a better DTI rescaling. + +# Load the data +# As mentioned above, this data is from Rosen and Halgren (2021). You can download the original at https://zenodo.org/records/10150880. +# For convenience, we have included the average connectivity matrix (log scaled probability from streamline counts) available from that link within this repository. +data = matread("/Users/achesebro/Documents/GitHub/Neuroblox.jl/examples/larter_breakspear/averageConnectivity_Fpt.mat") + +# Extract the data +adj = data["Fpt"] +adj[findall(isnan, adj)] .= 0 # Replace NaNs with 0s +adj = StatsBase.transform(StatsBase.fit(UnitRangeTransform, adj, dims=2), adj) # Equivalent of Matlab rescale function. Resamples to unit range. + +# For the purpose of this simulation, we want something that will run relatively quickly. +# In this parcellation, there are 40 regions per hemisphere in the default mode network, so we'll extract the left hemisphere DMN. +# Original indices with networks are listed in allTables.xlsx at the same download link from the Rosen and Halgren (2021) dataset listed above. +left_indices = [30, 31, 32, 33, 34, 35, 61, 62, 64, 65, 66, 67, 68, 69, 70, 71, 72, 76, 87, 88, 90, 93, 94, 118, 119, 120, 126, 130, 131, 132, 134, 150, 151, 155, 161, 162, 164, 165, 176, 177] +adj = adj[left_indices, left_indices] + +# Extract the names of the regions +names = data["parcelIDs"] +names = names[left_indices] + +# Plot the connectivity matrix +# This is optional but gives you a sense of what the overall connectivity looks like. +# If you want to do plotting remember to uncomment the Plots import above. +#heatmap(adj) + +# Number of regions in this particular dataset +N = 40 + +# Create list of all blocks +blocks = Vector{LarterBreakspear}(undef, N) + +for i in 1:N + # Since we're creating an ODESystem inside of the blox, we need to use a symbolic name + # Why the extra noise in connectivity? The DTI scaling is arbitrary in this demo, so adding stochasticity to this parameter helps things from just immediately synchronizing. + blocks[i] = LarterBreakspear(name=Symbol(names[i]), C=rand()*0.3) +end + +# Create a graph using the blocks and the DTI defined adjacency matrix +g = MetaDiGraph() +add_blox!.(Ref(g), blocks) +create_adjacency_edges!(g, adj) + +# Create the ODE system +# This may take a minute, as it is compiling the whole system +@named sys = system_from_graph(g) +sys = structural_simplify(sys) + +# Simulate for 100ms +sim_dur = 1e3 + +# Create random initial conditions because uniform initial conditions are no bueno. There are 3 states per node. +v₀ = 0.9*rand(N) .- 0.6 +z₀ = 0.9*rand(N) .- 0.9 +w₀ = 0.4*rand(N) .+ 0.11 +u₀ = [v₀ z₀ w₀]'[:] # Trick to interleave vectors based on column-major ordering + +# Create the ODEProblem to run all the final system of equations +prob = ODEProblem(sys, u₀, (0.0, sim_dur), []) + +# Run the simulation and save every 2ms +@time sol = solve(prob, AutoVern7(Rodas4()), saveat=2) + +# Visualizing the results +# Again, to use any of these commands be sure to uncomment the Plots import above. +# This plot shows all of the states computed. As such, it is very messy, but useful to make sure that no out-of-bounds behavior (due to bad connectivity) occured. +# plot(sol) + +# More interesting is to choose the plot from a specific region and see the results. Here, we'll plot a specific region's average voltage. +# First, confirm the region (left orbitofrontal cortex) +states(sys)[64] # Should give L_OFC₊V(t) +# Next plot just this variable +#plot(sol, idxs=(64)) + +# Suppose we want to run a simulation with different initial conditions. We can do that by remaking the problem to avoid having to recompile the entire system. +# For example, let's say we want to run the simulation with a different initial condition for the voltage. +v₀ = 0.9*rand(N) .- 0.61 +z₀ = 0.9*rand(N) .- 0.89 +w₀ = 0.4*rand(N) .+ 0.1 +u₀ = [v₀ z₀ w₀]'[:] # Trick to interleave vectors based on column-major ordering + +# Now remake and re-solve +prob2 = remake(prob; u0=u₀) +@time sol2 = solve(prob2, AutoVern7(Rodas4()), saveat=2) + +# Running a longer simulation +# Now that we've confirmed this runs, let's go ahead and do a 10min (600s) simulation. +# Takes <1min to simulate this run. If you save more frequently it'll take longer to run, but you'll have more data to work with. +# Remember to update the dt below for the BOLD signal if you don't save at the same frequency. +# If you find this is taking an *excessively* long time (i.e., more than a couple minutes), you likely happened upon a parameter set that has put you into a very stiff area. +# In that case, you can try to re-run the simulation with a different initial condition or parameter set. +# In a real study, you'd allow even these long runs to finish, but for the sake of this tutorial we'll just stop it early. +sim_dur = 6e5 +prob = remake(prob; tspan=(0.0, sim_dur)) +@time sol = solve(prob, AutoVern7(Rodas4()), saveat=2) + +# Instead of plotting the data, let's save it out to a CSV file for later analysis +CSV.write("/Users/achesebro/Documents/GitHub/Neuroblox.jl/examples/larter_breakspear/example_output.csv", DataFrame(sol)) + +# You should see a noticeable difference in speed compared to the first time, and notice you save the overhead of structural_simplify. + +# Now let's do a simulation that creates an fMRI signal out of the neural simulation run above. +# This example will use the Balloon model with slightly adjusted parameters - see Endo et al. for details. + +TR = 800 # Desired repetition time (TR) in ms +dt = 2 # Time step of the simulation in ms +bold = boldsignal_endo_balloon(sol.t/1000, sol[1:3:end, :], TR, dt) # Note this returns the signal in units of TR + +# Remember that the BOLD signal takes a while to equilibrate, so drop the first 90 seconds of the signal. +omit_idx = Int(round(90/(TR/1000))) +bold = bold[:, omit_idx:end] + +# Plot an example region to get a sense of what the BOLD signal looks like +# plot(bold[1, :]) \ No newline at end of file diff --git a/examples/wholebrainWC/DATA/brainamp.loc b/examples/wholebrainWC/DATA/brainamp.loc deleted file mode 100644 index b493cc6b..00000000 --- a/examples/wholebrainWC/DATA/brainamp.loc +++ /dev/null @@ -1,63 +0,0 @@ -1 -18 0.51111 Fp1 -2 18 0.51111 Fp2 -3 -39 0.33333 F3 -4 39 0.33333 F4 -5 -90 0.25556 C3 -6 90 0.25556 C4 -7 -141 0.33333 P3 -8 141 0.33333 P4 -9 -162 0.51111 O1 -10 162 0.51111 O2 -11 -54 0.51111 F7 -12 54 0.51111 F8 -13 -90 0.51111 T7 -14 90 0.51111 T8 -15 -126 0.51111 P7 -16 126 0.51111 P8 -17 0 0.25556 Fz -18 90 0 Cz -19 180 0.25556 Pz -20 180 0.51111 Oz -21 -45 0.17778 FC1 -22 45 0.17778 FC2 -23 -135 0.17778 CP1 -24 135 0.17778 CP2 -25 -69 0.39444 FC5 -26 69 0.39444 FC6 -27 -111 0.39444 CP5 -28 111 0.39444 CP6 -29 -72 0.63889 FT9 -30 72 0.63889 FT10 -31 -108 0.63889 TP9 -32 108 0.63889 TP10 -33 -22 0.27778 F1 -34 22 0.27778 F2 -35 -90 0.12778 C1 -36 90 0.12778 C2 -37 -158 0.27778 P1 -38 158 0.27778 P2 -39 -23 0.41111 AF3 -40 23 0.41111 AF4 -41 -62 0.27778 FC3 -42 62 0.27778 FC4 -43 -118 0.27778 CP3 -44 118 0.27778 CP4 -45 -157 0.41111 PO3 -46 157 0.41111 PO4 -47 -49 0.41667 F5 -48 49 0.41667 F6 -49 -90 0.38333 C5 -50 90 0.38333 C6 -51 -131 0.41667 P5 -52 131 0.41667 P6 -53 -38 0.51111 AF7 -54 38 0.51111 AF8 -55 -72 0.51111 FT7 -56 72 0.51111 FT8 -57 -108 0.51111 TP7 -58 108 0.51111 TP8 -59 -144 0.51111 PO7 -60 144 0.51111 PO8 -61 0 0.38333 AFz -62 180 0.12778 CPz -63 180 0.38333 POz \ No newline at end of file diff --git a/examples/wholebrainWC/DATA/eeg_chanloc.mat b/examples/wholebrainWC/DATA/eeg_chanloc.mat deleted file mode 100644 index 9364348c991bb23cd8aeeb476b1c839dc0f8bd57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3459 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 diff --git a/examples/wholebrainWC/DATA/empirical_microstates.mat b/examples/wholebrainWC/DATA/empirical_microstates.mat deleted file mode 100644 index 6139ccce8c15e8e28a8e163a6cd961b19b31a9c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20816 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 Tv%PFU{+;&3tw#R=s#4rrHzwh% diff --git a/examples/wholebrainWC/DATA/mean_leadfield_svd.mat b/examples/wholebrainWC/DATA/mean_leadfield_svd.mat deleted file mode 100644 index 8c5d35e3fc071ab97eb1c172edfee466d144e3aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38281 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 TM}`oJC}hZYRwMa8E=cZg^ollt diff --git a/examples/wholebrainWC/DATA/mean_structural_connectivity.mat b/examples/wholebrainWC/DATA/mean_structural_connectivity.mat deleted file mode 100644 index 480e22184eb0e0cd2e12034b564c009dbda8bb6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78925 zcma&NQwL)OnIh^4uvoAyru+ zVL~=~MnX9uRXTGkTQgchMO!0Ra|dTTZbC&74JmncR$4+4XEP&LGgCqbdu~E;XDdPl z6IVheCPF55Znpm&LS{xLF2etx2K4{gA1OJ6|L�KtLW@)oBJcn~aEkd}rdV_U9|f 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�*y5*x#oa$P(rp@P`9lK_+ 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 diff --git a/examples/wholebrainWC/Project.toml b/examples/wholebrainWC/Project.toml deleted file mode 100644 index 2b2495c9..00000000 --- a/examples/wholebrainWC/Project.toml +++ /dev/null @@ -1,10 +0,0 @@ -[deps] -CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" -DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" -Graphs = "86223c79-3864-5bf0-83f7-82e725a168b6" -LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" -MAT = "23992714-dd62-5051-b70f-ba57cb901cac" -MetaGraphs = "626554b9-1ddb-594c-aa3c-2596fe9399a5" -Neuroblox = "769b91e5-4c60-41ee-bfae-153c84203cb2" -OrdinaryDiffEq = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" -Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" diff --git a/examples/wholebrainWC/connectivity_96/areas.txt b/examples/wholebrainWC/connectivity_96/areas.txt deleted file mode 100644 index f755772f..00000000 --- a/examples/wholebrainWC/connectivity_96/areas.txt +++ /dev/null @@ -1,96 +0,0 @@ - 3.3106483e+03 - 8.0458529e+03 - 6.9618231e+02 - 1.9739193e+03 - 1.0341594e+03 - 2.2295400e+03 - 2.1620802e+03 - 1.9730447e+03 - 7.5186205e+02 - 1.4413142e+03 - 6.6223273e+02 - 3.9851836e+03 - 1.4989436e+03 - 2.2737392e+03 - 1.3314346e+03 - 1.7072077e+03 - 8.2105051e+02 - 2.0281819e+03 - 1.9958510e+03 - 1.1458539e+03 - 7.0236088e+02 - 3.4799446e+03 - 2.5012464e+03 - 2.4069852e+03 - 1.4767574e+03 - 7.5472547e+02 - 2.3396232e+03 - 3.7893705e+03 - 1.5114071e+03 - 4.0638359e+03 - 2.4497384e+02 - 3.5459302e+03 - 4.5515081e+03 - 9.7920289e+02 - 9.1954887e+02 - 1.7705557e+03 - 1.2857267e+03 - 8.5359190e+02 - 1.8859106e+03 - 1.4781911e+03 - 9.9181814e+02 - 0.0000000e+00 - 0.0000000e+00 - 0.0000000e+00 - 0.0000000e+00 - 0.0000000e+00 - 0.0000000e+00 - 0.0000000e+00 - 3.2923455e+03 - 8.3424532e+03 - 7.7243318e+02 - 2.1179635e+03 - 1.0570599e+03 - 2.0356497e+03 - 2.1498050e+03 - 1.9703127e+03 - 6.3812861e+02 - 1.0662421e+03 - 6.4970746e+02 - 4.0281095e+03 - 1.5037374e+03 - 2.2085162e+03 - 1.1855909e+03 - 1.9552541e+03 - 8.0844537e+02 - 2.2294491e+03 - 1.8746843e+03 - 1.2442520e+03 - 8.1365011e+02 - 3.6025734e+03 - 2.4821369e+03 - 2.5023220e+03 - 1.3994776e+03 - 7.0036063e+02 - 2.1914892e+03 - 3.8489185e+03 - 1.5077860e+03 - 4.5250197e+03 - 2.3234962e+02 - 3.3782580e+03 - 4.5659269e+03 - 9.6330780e+02 - 8.1473444e+02 - 1.8561484e+03 - 1.1406765e+03 - 9.1005852e+02 - 1.8034139e+03 - 1.4595088e+03 - 1.1245761e+03 - 0.0000000e+00 - 0.0000000e+00 - 0.0000000e+00 - 0.0000000e+00 - 0.0000000e+00 - 0.0000000e+00 - 0.0000000e+00 diff --git a/examples/wholebrainWC/connectivity_96/average_orientations.txt b/examples/wholebrainWC/connectivity_96/average_orientations.txt deleted file mode 100644 index d6f15741..00000000 --- a/examples/wholebrainWC/connectivity_96/average_orientations.txt +++ /dev/null @@ -1,96 +0,0 @@ - -4.3542886e-01 -2.3988195e-01 -8.6767411e-01 - 9.3594447e-01 -2.4372541e-01 -2.5417684e-01 - -6.3913598e-01 -7.5594350e-02 -7.6536965e-01 - 2.3517191e-01 1.1003136e-01 -9.6570558e-01 - 6.5533931e-01 7.0672421e-01 2.6659198e-01 - -7.4968473e-01 -4.9440590e-02 -6.5994579e-01 - 7.4415916e-01 -2.8208353e-01 -6.0552129e-01 - 3.1408457e-01 8.8563392e-01 -3.4205765e-01 - -9.8030126e-01 1.3569542e-01 -1.4351374e-01 - -7.8645769e-01 -7.6684746e-02 -6.1286519e-01 - 2.8679178e-01 -9.5796642e-01 -7.1283713e-03 - 9.2691024e-01 3.1960946e-01 -1.9669062e-01 - -8.4357621e-03 5.4321555e-02 -9.9848786e-01 - 7.4467254e-01 4.6727221e-01 4.7657056e-01 - -7.9504011e-01 5.9436865e-01 1.2098402e-01 - -6.4990976e-01 -3.8013621e-01 -6.5811379e-01 - -9.6165856e-01 1.9413289e-01 -1.9371431e-01 - 8.4721745e-01 4.5278031e-01 2.7787152e-01 - -9.6437076e-01 -2.6090684e-01 -4.3779661e-02 - -9.9653670e-01 -4.3208011e-02 -7.1046967e-02 - -2.3440899e-01 -9.0523554e-03 -9.7209592e-01 - 4.6362702e-01 -7.1125640e-01 5.2836003e-01 - -9.9636363e-01 -7.5283100e-02 -3.9899468e-02 - 4.8008480e-01 6.3993747e-01 5.9999885e-01 - 4.7063322e-01 7.5757393e-01 4.5231196e-01 - -9.2266736e-01 -1.5719832e-01 -3.5209889e-01 - -9.2768773e-01 -3.7313779e-01 1.2792885e-02 - -9.7695465e-01 9.3813499e-02 1.9172542e-01 - 2.1732020e-01 -3.8293051e-01 -8.9785085e-01 - 4.8403250e-01 3.5159322e-01 8.0130815e-01 - 9.9475636e-01 -5.2273306e-02 -8.7904952e-02 - -4.0139504e-01 -6.7520162e-01 6.1885765e-01 - 6.0076517e-01 -4.2066287e-01 6.7979700e-01 - -9.9018940e-01 8.8495822e-02 -1.0813621e-01 - -7.3300708e-01 3.3880773e-01 5.8983891e-01 - 2.6401664e-01 -5.7201901e-01 7.7658835e-01 - -3.9410730e-01 -6.1949076e-01 6.7890399e-01 - 8.3667900e-01 1.3913060e-01 5.2972721e-01 - 5.5611557e-01 5.1876820e-01 6.4931889e-01 - -9.8703215e-01 2.6680469e-02 1.5828987e-01 - 4.7254546e-01 3.7068840e-01 7.9955669e-01 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 5.4620351e-01 -2.9915513e-01 -7.8241161e-01 - -9.3702379e-01 -2.4473424e-01 -2.4918180e-01 - 5.7854001e-01 -1.8414162e-01 -7.9459633e-01 - -2.2788109e-01 6.8384755e-02 -9.7128458e-01 - -6.2283567e-01 7.4929722e-01 2.2500978e-01 - 8.4698209e-01 -3.2776607e-02 -5.3061006e-01 - -7.1165109e-01 -2.8218547e-01 -6.4336932e-01 - -3.7393898e-01 8.2970383e-01 -4.1444082e-01 - 9.7740039e-01 7.6697593e-02 -1.9699227e-01 - 6.3056819e-01 -3.9877008e-01 -6.6585748e-01 - -3.5626411e-01 -9.3431642e-01 -1.1344898e-02 - -9.2251593e-01 3.1387102e-01 -2.2460929e-01 - 4.1546596e-02 8.5489776e-02 -9.9547244e-01 - -7.1118540e-01 4.7828689e-01 5.1522518e-01 - 8.7809882e-01 4.7131526e-01 8.2488734e-02 - 7.5606604e-01 1.7483735e-01 -6.3071074e-01 - 9.7359107e-01 1.6526554e-01 -1.5750469e-01 - -8.3932548e-01 4.7330126e-01 2.6742971e-01 - 9.3544043e-01 -3.4942119e-01 -5.3441872e-02 - 9.9945301e-01 2.0194764e-02 -2.6188732e-02 - 3.3662149e-01 -9.6582579e-03 -9.4159051e-01 - -5.1981373e-01 -7.1014319e-01 4.7485823e-01 - 9.9332748e-01 -9.6354129e-02 -6.3375122e-02 - -4.5658665e-01 6.4730697e-01 6.1034606e-01 - -4.8003040e-01 7.4275220e-01 4.6678688e-01 - 9.3993259e-01 -2.2553399e-01 -2.5624432e-01 - 9.2894885e-01 -3.6979709e-01 1.7439814e-02 - 9.8138705e-01 7.9279030e-02 1.7491227e-01 - -1.6799712e-01 -3.9711636e-01 -9.0226136e-01 - -6.3221786e-01 1.4954770e-01 7.6022106e-01 - -9.8888455e-01 -1.4852664e-01 6.8695494e-03 - 5.8368462e-01 -5.4576779e-01 6.0120694e-01 - -5.8998665e-01 -4.1287049e-01 6.9386866e-01 - 9.9069889e-01 9.5527024e-02 -9.6903559e-02 - 7.8368475e-01 3.1712792e-01 5.3410495e-01 - -2.4768911e-01 -5.1905685e-01 8.1806485e-01 - 4.7992363e-01 -5.3570610e-01 6.9476060e-01 - -8.3046594e-01 7.1217306e-02 5.5249835e-01 - -5.4466496e-01 5.2148259e-01 6.5680742e-01 - 9.9406839e-01 2.5465514e-02 1.0573335e-01 - -4.5619366e-01 3.5665549e-01 8.1528167e-01 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 diff --git a/examples/wholebrainWC/connectivity_96/centres.txt b/examples/wholebrainWC/connectivity_96/centres.txt deleted file mode 100755 index aab91b39..00000000 --- a/examples/wholebrainWC/connectivity_96/centres.txt +++ /dev/null @@ -1,96 +0,0 @@ -RM-TCpol_R 33.079347 -7.593124 -32.799272 -RM-TCs_R 54.915934 -33.810819 -1.375730 -RM-Amyg_R 17.438152 -5.277610 -13.745837 -RM-PFCoi_R 21.645635 26.941077 -19.611492 -RM-IA_R 38.224291 11.482410 -13.623293 -RM-PFCom_R 6.267575 25.181871 -16.701842 -RM-TCc_R 43.660324 -58.514435 -7.694181 -RM-PFCol_R 29.444259 49.076630 -0.952121 -RM-TCi_R 28.718069 -54.508717 -14.420098 -RM-PHC_R 19.729065 -32.245093 -9.132630 -MM82a-G_R 34.917765 25.065066 -3.766634 -RM-PMCvl_R 47.004645 20.874793 11.634857 -RM-VACv_R 24.783182 -82.874647 -12.077967 -RM-Ip_R 40.808202 -3.305432 1.892959 -RM-PFCpol_R 8.216735 61.863249 8.139174 -RM-HC_R 22.506788 -20.364649 -11.303707 -RM-CCs_R 3.427869 25.074243 -4.747290 -RM-PFCvl_R 40.812508 40.111957 17.487273 -RM-V2_R 11.774463 -79.525795 3.404145 -RM-PFCm_R 8.294410 45.075418 9.876705 -RM-TCv_R 24.810789 -54.934840 -7.515384 -RM-VACd_R 27.690285 -83.455823 20.802248 -RM-V1_R 11.890945 -74.310932 7.222870 -RM-PFCcl_R 24.035479 43.044884 33.627260 -RM-A2_R 48.584832 -28.586783 15.135759 -RM-CCr_R 6.702045 -43.575783 12.352452 -RM-CCp_R 10.632581 -49.270173 24.902874 -RM-CCa_R 4.846725 9.108356 26.416168 -RM-S2_R 53.367495 -19.080477 19.550660 -RM-S1_R 37.713158 -25.333413 52.415061 -RM-A1_R 36.950384 -18.793378 13.708190 -RM-M1_R 24.874698 -18.375774 52.963887 -RM-PCi_R 39.153217 -54.570078 43.080367 -RM-PCm_R 9.131634 -56.584867 39.751706 -RM-PFCdm_R 8.017632 35.951673 49.465444 -RM-PCip_R 21.444711 -63.620710 54.468403 -RM-PCs_R 14.127554 -53.207194 59.343654 -RM-FEF_R 43.858507 1.583726 49.671365 -RM-PFCdl_R 25.309093 12.552618 53.221126 -RM-PMCm_R 7.224909 3.586255 59.539745 -RM-PMCdl_R 23.475495 -5.407731 67.187371 -TM-F_R 10.709611 -13.305076 7.165679 -TM-T_R 9.487179 -17.753905 10.494842 -TM-OP_R 17.718292 -22.263158 6.059965 -BG-Cd_R 14.301561 11.010804 11.490516 -BG-Pu_R 26.495749 2.776009 1.303447 -BG-Pa_R 20.850489 -3.005123 -0.189101 -BG-Acc_R 10.368263 13.203593 -5.534431 -RM-TCpol_L -32.681790 -8.320529 -31.793774 -RM-TCs_L -54.720063 -33.892198 -1.422995 -RM-Amyg_L -15.859426 -7.452867 -13.127293 -RM-PFCoi_L -20.226823 25.432919 -19.776290 -RM-IA_L -37.990116 11.507916 -13.796844 -RM-PFCom_L -5.461125 25.482359 -16.462528 -RM-TCc_L -42.827596 -58.286399 -8.750547 -RM-PFCol_L -28.607213 49.095480 -1.984764 -RM-TCi_L -28.371168 -54.266414 -14.198983 -RM-PHC_L -18.955951 -31.746896 -9.391177 -MM82a-G_L -34.158674 24.411811 -4.311981 -RM-PMCvl_L -46.597057 21.230801 10.684409 -RM-VACv_L -24.006268 -83.189723 -12.050953 -RM-Ip_L -40.876741 -3.791963 1.243455 -RM-PFCpol_L -7.689917 61.850339 8.155949 -RM-HC_L -21.143986 -25.894536 -8.450204 -RM-CCs_L -3.171100 23.997086 -4.759688 -RM-PFCvl_L -40.452662 39.734075 18.317703 -RM-V2_L -11.495151 -80.341203 3.657959 -RM-PFCm_L -8.230249 44.635723 8.745645 -RM-TCv_L -24.553983 -55.141679 -7.629212 -RM-VACd_L -27.764819 -83.351504 20.366430 -RM-V1_L -12.020475 -73.679251 6.866555 -RM-PFCcl_L -23.527592 42.995398 33.663668 -RM-A2_L -48.848261 -28.326444 14.382296 -RM-CCr_L -4.908909 -43.424849 15.482611 -RM-CCp_L -10.925561 -50.543513 25.301208 -RM-CCa_L -4.746795 8.564223 26.351959 -RM-S2_L -52.006466 -19.011937 19.451158 -RM-S1_L -37.573215 -25.088520 52.189595 -RM-A1_L -36.797423 -19.116026 13.896768 -RM-M1_L -24.507209 -18.054854 51.754528 -RM-PCi_L -38.940697 -54.678016 43.108789 -RM-PCm_L -9.154303 -57.042530 39.462044 -RM-PFCdm_L -7.508670 36.248376 49.003248 -RM-PCip_L -21.544740 -63.315526 54.590945 -RM-PCs_L -13.094641 -53.667567 59.445681 -RM-FEF_L -43.671270 0.704116 50.160082 -RM-PFCdl_L -24.184760 13.958344 53.500476 -RM-PMCm_L -6.812133 3.455651 59.219364 -RM-PMCdl_L -22.721598 -4.686517 67.235649 -TM-F_L -7.675865 -14.379325 7.551905 -TM-T_L -6.747257 -19.515702 10.371169 -TM-OP_L -14.908959 -23.774755 5.438157 -BG-Cd_L -11.785498 9.976993 10.737393 -BG-Pu_L -23.901491 1.482650 1.339547 -BG-Pa_L -17.957794 -4.120351 -0.333891 -BG-Acc_L -8.463883 12.496614 -6.170429 diff --git a/examples/wholebrainWC/connectivity_96/cortical.txt b/examples/wholebrainWC/connectivity_96/cortical.txt deleted file mode 100644 index b2bef0f9..00000000 --- a/examples/wholebrainWC/connectivity_96/cortical.txt +++ /dev/null @@ -1,96 +0,0 @@ -1 -1 -0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -0 -0 -0 -0 -0 -0 -0 diff --git a/examples/wholebrainWC/connectivity_96/info.txt b/examples/wholebrainWC/connectivity_96/info.txt deleted file mode 100644 index fb84b597..00000000 --- a/examples/wholebrainWC/connectivity_96/info.txt +++ /dev/null @@ -1,2 +0,0 @@ -weights_unit = "au" -length_unit = "mm"area_unit = "mm^2" \ No newline at end of file diff --git a/examples/wholebrainWC/connectivity_96/tract_lengths.txt b/examples/wholebrainWC/connectivity_96/tract_lengths.txt deleted file mode 100644 index a1bcc6f6..00000000 --- a/examples/wholebrainWC/connectivity_96/tract_lengths.txt +++ /dev/null @@ -1,96 +0,0 @@ - 0.0000000e+00 4.6385806e+01 2.4759684e+01 3.8694423e+01 2.7532973e+01 4.5301199e+01 5.7751212e+01 6.5106957e+01 5.0575564e+01 3.6688684e+01 4.3735926e+01 5.4577725e+01 7.8520739e+01 3.5800425e+01 8.4369980e+01 2.7146826e+01 5.2280787e+01 6.9744628e+01 8.3300028e+01 7.2176918e+01 5.4303610e+01 9.3044688e+01 8.0634893e+01 8.4014782e+01 5.4579493e+01 6.3475916e+01 7.4634920e+01 6.7694082e+01 5.7306925e+01 8.7164629e+01 4.7993485e+01 8.6826846e+01 8.9450800e+01 9.0759728e+01 9.6393581e+01 1.0435565e+02 1.0454727e+02 8.3676824e+01 8.8688989e+01 9.6539756e+01 1.0047059e+02 4.6154401e+01 5.0340959e+01 4.4285576e+01 5.1578065e+01 3.6247181e+01 3.5128592e+01 4.1129895e+01 6.5772846e+01 9.6875427e+01 5.2744762e+01 6.4045807e+01 7.6005332e+01 5.3350209e+01 9.4392866e+01 8.9265690e+01 7.9375894e+01 6.1959792e+01 7.9729499e+01 9.5236435e+01 9.6974769e+01 8.1503736e+01 9.0342999e+01 6.2193155e+01 5.5661967e+01 1.0129050e+02 9.2780917e+01 7.8487676e+01 7.8841599e+01 1.1076072e+02 8.9301443e+01 1.0090028e+02 9.6788965e+01 7.1120745e+01 8.4598071e+01 7.2046825e+01 1.0049921e+02 1.1189719e+02 8.4829596e+01 1.0283484e+02 1.1474279e+02 9.7214313e+01 1.0129717e+02 1.1715727e+02 1.1297797e+02 1.1332147e+02 1.0578889e+02 1.0090012e+02 1.1458263e+02 5.7751687e+01 5.9933239e+01 6.3457259e+01 6.4938467e+01 6.7042110e+01 6.0587547e+01 5.3277883e+01 - 4.6385806e+01 0.0000000e+00 4.8700592e+01 7.1625754e+01 4.9800505e+01 7.7985191e+01 2.7872571e+01 8.6713982e+01 3.5845316e+01 3.6065728e+01 6.2225501e+01 5.6766011e+01 5.8564322e+01 3.3768196e+01 1.0688721e+02 3.6465284e+01 7.8293287e+01 7.7584123e+01 6.3038820e+01 9.2321298e+01 3.7285914e+01 6.0808923e+01 5.9710508e+01 8.9920025e+01 1.8439162e+01 5.1072465e+01 5.3764041e+01 7.1563754e+01 2.5637755e+01 5.7107365e+01 2.7853351e+01 6.3980548e+01 5.1534015e+01 6.5622598e+01 9.8239915e+01 7.1606701e+01 7.5675326e+01 6.3093949e+01 7.7504516e+01 8.5928284e+01 8.0598606e+01 4.9473631e+01 4.9623651e+01 3.9652271e+01 6.1838867e+01 4.6405612e+01 4.5944026e+01 6.4901037e+01 9.6168465e+01 1.0963604e+02 7.6432928e+01 9.7441444e+01 1.0411343e+02 8.5957441e+01 1.0103088e+02 1.1768577e+02 8.6715677e+01 7.4334127e+01 1.0645554e+02 1.1610303e+02 9.3706726e+01 1.0042026e+02 1.1472316e+02 7.6797312e+01 8.2020171e+01 1.2203218e+02 8.1245596e+01 1.0121138e+02 8.2520176e+01 9.8808441e+01 7.8344814e+01 1.1524036e+02 1.0509711e+02 6.2893920e+01 7.2984550e+01 7.8256694e+01 1.0993255e+02 1.0723603e+02 9.4130367e+01 9.6845807e+01 1.0594045e+02 7.9450812e+01 1.0650429e+02 9.9242285e+01 9.3375440e+01 1.1647600e+02 1.0747191e+02 9.4185506e+01 1.0762589e+02 6.6143926e+01 6.4379260e+01 7.0870779e+01 8.0704283e+01 8.6401320e+01 7.8696820e+01 7.8640757e+01 - 2.4759684e+01 4.8700592e+01 0.0000000e+00 3.3017460e+01 2.6701626e+01 3.2577595e+01 5.9652195e+01 5.7115752e+01 5.0511317e+01 2.7454965e+01 3.6411528e+01 4.6928726e+01 7.7961731e+01 2.8189017e+01 7.1217154e+01 1.6101982e+01 3.4619313e+01 5.9850484e+01 7.6413299e+01 5.6365414e+01 5.0586706e+01 8.6084316e+01 7.2360609e+01 6.7991164e+01 4.8451830e+01 4.7572416e+01 5.8952390e+01 4.4480183e+01 5.0892962e+01 7.2045649e+01 3.6292241e+01 6.8388971e+01 7.8297567e+01 7.4588337e+01 7.6054362e+01 8.9850722e+01 8.7465872e+01 6.9042411e+01 6.9745558e+01 7.4522848e+01 8.1158182e+01 2.3388137e+01 2.8398705e+01 2.6093239e+01 3.0199738e+01 1.9323090e+01 1.4163097e+01 2.1423477e+01 5.3357249e+01 7.8596788e+01 3.3374287e+01 4.8970944e+01 5.7914155e+01 3.8443894e+01 8.0416696e+01 7.2214482e+01 6.7071619e+01 4.5211911e+01 6.0271815e+01 7.3484970e+01 8.8265565e+01 6.0228836e+01 7.4948446e+01 4.4064529e+01 3.6912057e+01 8.0034172e+01 8.2307783e+01 6.0465480e+01 6.5476545e+01 9.6449408e+01 7.7275260e+01 7.9095743e+01 7.5606409e+01 5.2999105e+01 6.6167771e+01 4.7870674e+01 7.8187129e+01 8.8126068e+01 6.2426861e+01 7.8822389e+01 9.4082002e+01 7.8853308e+01 7.9272941e+01 9.7764929e+01 9.2902302e+01 8.8623411e+01 8.1391372e+01 7.7383892e+01 9.0394446e+01 3.4163561e+01 3.7003881e+01 4.1910686e+01 4.1062795e+01 4.4522309e+01 3.7869414e+01 3.2314474e+01 - 3.8694423e+01 7.1625754e+01 3.3017460e+01 0.0000000e+00 2.3445272e+01 1.5749464e+01 8.9046692e+01 2.9982884e+01 8.1920931e+01 6.0137198e+01 2.0753997e+01 4.0696603e+01 1.1011853e+02 4.1767173e+01 4.6583182e+01 4.8037409e+01 2.3586364e+01 4.3785379e+01 1.0937255e+02 3.7103414e+01 8.2825116e+01 1.1771696e+02 1.0520079e+02 5.5672333e+01 7.0826797e+01 7.8851964e+01 8.8943639e+01 5.2141680e+01 6.8249059e+01 9.0435679e+01 5.8618060e+01 8.5622600e+01 1.0431133e+02 1.0323358e+02 7.0982649e+01 1.1700132e+02 1.1275718e+02 7.7048824e+01 7.4330606e+01 8.3775434e+01 9.2648996e+01 4.9561743e+01 5.5243650e+01 5.5637259e+01 3.5707758e+01 3.2325050e+01 3.5702052e+01 2.2672919e+01 6.5903399e+01 9.9313789e+01 5.1299297e+01 4.1899934e+01 6.1874190e+01 2.7328013e+01 1.0741732e+02 5.7679007e+01 9.5528176e+01 7.2091760e+01 5.7918849e+01 7.4883336e+01 1.1945732e+02 7.2722047e+01 5.3387844e+01 6.8899405e+01 2.9070836e+01 7.3881548e+01 1.1467025e+02 4.4830750e+01 9.4950296e+01 1.2729525e+02 1.0935696e+02 7.1670108e+01 9.5809529e+01 8.2994600e+01 9.5298978e+01 5.6097308e+01 9.5195599e+01 1.0662714e+02 8.1606687e+01 9.6165626e+01 1.1944126e+02 1.0719872e+02 7.5130433e+01 1.2456992e+02 1.1812992e+02 9.9109782e+01 8.7260165e+01 8.7038576e+01 1.0252406e+02 5.7488923e+01 6.2155842e+01 6.7348489e+01 4.8233553e+01 5.6228270e+01 5.3896844e+01 3.5998441e+01 - 2.7532973e+01 4.9800505e+01 2.6701626e+01 2.3445272e+01 0.0000000e+00 3.4905363e+01 7.0457526e+01 4.0632166e+01 6.6677073e+01 4.7689977e+01 1.7104835e+01 2.8342294e+01 9.5322115e+01 2.1589602e+01 6.2548279e+01 3.5590104e+01 3.8396775e+01 4.2358200e+01 9.6291331e+01 5.0759609e+01 6.8032931e+01 1.0153497e+02 9.2133083e+01 5.8567285e+01 5.0398057e+01 6.8555057e+01 7.7048325e+01 5.2180997e+01 4.7580645e+01 7.5609062e+01 4.0807549e+01 7.4186085e+01 8.7058021e+01 9.1260218e+01 7.4103818e+01 1.0275462e+02 1.0044687e+02 6.4311290e+01 6.8089089e+01 7.9850742e+01 8.3863980e+01 4.2469500e+01 4.7563306e+01 4.4121310e+01 3.4687502e+01 2.0884628e+01 2.6309981e+01 2.9057708e+01 7.5828722e+01 1.0414584e+02 5.7304792e+01 6.0407026e+01 7.6214608e+01 4.5961673e+01 1.0705531e+02 7.7567057e+01 9.3585225e+01 7.1807128e+01 7.4115879e+01 8.8772499e+01 1.1330458e+02 8.1922523e+01 7.1549830e+01 7.0344788e+01 4.4144751e+01 8.9489925e+01 1.0584064e+02 6.1298742e+01 9.1737724e+01 1.2042979e+02 1.0097960e+02 8.3919128e+01 9.9753130e+01 7.5646769e+01 8.8193196e+01 5.8762665e+01 1.0082368e+02 1.0683647e+02 8.5567959e+01 9.5299267e+01 1.1640518e+02 9.8784875e+01 8.1406022e+01 1.1755956e+02 1.1053157e+02 1.0436174e+02 9.1687623e+01 8.6016051e+01 1.0253782e+02 5.6780654e+01 5.9657834e+01 6.6554855e+01 5.5647896e+01 6.4679939e+01 5.9803687e+01 4.7290161e+01 - 4.5301199e+01 7.7985191e+01 3.2577595e+01 1.5749464e+01 3.4905363e+01 0.0000000e+00 9.2110950e+01 3.6826239e+01 8.2824036e+01 5.9467309e+01 3.1435118e+01 4.9809921e+01 1.0972884e+02 4.8480387e+01 4.4344095e+01 4.8655291e+01 1.2287669e+01 5.0844423e+01 1.0676269e+02 3.3260794e+01 8.2746173e+01 1.1690867e+02 1.0248332e+02 5.6283249e+01 7.5468214e+01 7.4645534e+01 8.5399722e+01 4.6038456e+01 7.4106692e+01 9.1201781e+01 6.1644361e+01 8.4242550e+01 1.0495595e+02 9.9403246e+01 6.7060876e+01 1.1481049e+02 1.0949677e+02 7.9845808e+01 7.3561532e+01 7.9246871e+01 9.0935341e+01 4.5504234e+01 5.0926480e+01 5.3853965e+01 3.2560299e+01 3.5148145e+01 3.5774832e+01 1.6882116e+01 5.3546524e+01 8.6270973e+01 3.9590500e+01 2.6673365e+01 4.6412921e+01 1.1734989e+01 9.7162291e+01 4.4773920e+01 8.6707190e+01 6.2694151e+01 4.2289280e+01 5.9668141e+01 1.1261678e+02 5.8173045e+01 4.6446721e+01 5.8551537e+01 1.5267853e+01 6.0174045e+01 1.0892729e+02 3.5159832e+01 8.6511004e+01 1.1963174e+02 1.0326395e+02 6.1169913e+01 8.2868080e+01 7.6600489e+01 8.8284732e+01 4.7445677e+01 8.1584286e+01 9.5891382e+01 6.8943256e+01 8.6618567e+01 1.0953858e+02 1.0076244e+02 6.8039777e+01 1.1699562e+02 1.1131296e+02 8.6968762e+01 7.7341307e+01 8.0044593e+01 9.3690955e+01 4.8453607e+01 5.3853568e+01 5.7752717e+01 3.6194106e+01 4.2394779e+01 4.1393218e+01 2.2109777e+01 - 5.7751212e+01 2.7872571e+01 5.9652195e+01 8.9046692e+01 7.0457526e+01 9.2110950e+01 0.0000000e+00 1.0873541e+02 1.6868749e+01 3.5564766e+01 8.4127231e+01 8.1776804e+01 3.1128508e+01 5.6107770e+01 1.2648213e+02 4.3771074e+01 9.2813801e+01 1.0183016e+02 3.9766295e+01 1.1086181e+02 1.9187247e+01 4.1099409e+01 3.8488195e+01 1.1138623e+02 3.7962103e+01 4.4620009e+01 4.7316553e+01 8.5104954e+01 4.8903452e+01 6.8916398e+01 4.5616303e+01 7.5122653e+01 5.1126575e+01 5.8711718e+01 1.1602357e+02 6.6210228e+01 7.3446734e+01 8.3082093e+01 9.5383270e+01 9.8511095e+01 9.3994660e+01 5.7883081e+01 5.6214457e+01 4.6651052e+01 7.7870074e+01 6.4281400e+01 6.0480562e+01 7.9098048e+01 9.4489878e+01 1.0160848e+02 7.8609179e+01 1.0618241e+02 1.0773656e+02 9.7699857e+01 8.6494671e+01 1.2975010e+02 7.2449251e+01 6.8118857e+01 1.1377169e+02 1.2183378e+02 7.2156905e+01 1.0109869e+02 1.3181712e+02 7.2554999e+01 9.4920727e+01 1.3192567e+02 6.0393752e+01 1.1663128e+02 6.8297668e+01 8.0658719e+01 5.9517543e+01 1.2856490e+02 9.9782382e+01 5.5891231e+01 6.4279469e+01 8.9453536e+01 1.0700211e+02 1.0631202e+02 9.2151249e+01 9.9085514e+01 9.7049413e+01 7.0818507e+01 1.2170807e+02 9.0300541e+01 8.8047596e+01 1.2033603e+02 1.1661923e+02 1.0423619e+02 1.1365951e+02 6.9395643e+01 6.6243356e+01 6.9351745e+01 9.0027983e+01 9.0806703e+01 8.2520801e+01 8.8101213e+01 - 6.5106957e+01 8.6713982e+01 5.7115752e+01 2.9982884e+01 4.0632166e+01 3.6826239e+01 1.0873541e+02 0.0000000e+00 1.0445974e+02 8.2307523e+01 2.4787818e+01 3.5526648e+01 1.3250151e+02 5.3676010e+01 2.6396156e+01 7.0550514e+01 3.5600146e+01 2.3443841e+01 1.2988373e+02 2.4095421e+01 1.0432129e+02 1.3431746e+02 1.2489772e+02 3.5515777e+01 8.1589136e+01 9.6325955e+01 1.0341399e+02 5.4327938e+01 7.5087125e+01 9.1941749e+01 6.9839849e+01 8.6473369e+01 1.1302993e+02 1.1503806e+02 5.6332014e+01 1.2584164e+02 1.1971701e+02 7.0894878e+01 6.5466356e+01 7.8881807e+01 8.7448054e+01 6.5638121e+01 7.0679830e+01 7.2636306e+01 4.2815039e+01 4.6449207e+01 5.2791515e+01 4.0887234e+01 9.0029370e+01 1.1818494e+02 7.3459123e+01 5.8142848e+01 7.8254649e+01 4.4895970e+01 1.2965669e+02 5.8060659e+01 1.1915489e+02 9.4584567e+01 6.8300622e+01 8.1811251e+01 1.4308924e+02 8.8005407e+01 4.0312177e+01 9.0752782e+01 4.1318794e+01 7.3103961e+01 1.3581702e+02 3.9155292e+01 1.1756636e+02 1.4582376e+02 1.2980548e+02 6.3570837e+01 1.1115799e+02 1.0003382e+02 1.1064869e+02 5.9630496e+01 1.0810443e+02 1.1320713e+02 9.6222078e+01 1.0097221e+02 1.3184420e+02 1.1993511e+02 6.3447790e+01 1.3533997e+02 1.2654573e+02 1.0148023e+02 8.4109756e+01 8.3763998e+01 1.0129820e+02 7.4005948e+01 7.8376978e+01 8.5529924e+01 5.8011372e+01 7.1527671e+01 7.1254863e+01 5.2937279e+01 - 5.0575564e+01 3.5845316e+01 5.0511317e+01 8.1920931e+01 6.6677073e+01 8.2824036e+01 1.6868749e+01 1.0445974e+02 0.0000000e+00 2.4585127e+01 8.0522789e+01 8.1828682e+01 2.8733167e+01 5.5082335e+01 1.2029821e+02 3.4844071e+01 8.4063102e+01 1.0058543e+02 3.5080530e+01 1.0452014e+02 7.9450298e+00 4.5602685e+01 3.3818602e+01 1.0884475e+02 4.4047516e+01 3.6345616e+01 4.3598433e+01 7.9275304e+01 5.4925103e+01 7.3478218e+01 4.6201267e+01 7.6556924e+01 5.8439709e+01 5.7641333e+01 1.1266301e+02 6.9868131e+01 7.5204177e+01 8.6506131e+01 9.5310960e+01 9.6473002e+01 9.5384330e+01 4.9879759e+01 4.8389024e+01 3.9751783e+01 7.1916642e+01 5.9445003e+01 5.4009631e+01 7.0715114e+01 7.8772686e+01 8.6924608e+01 6.4831146e+01 9.3888000e+01 9.3853962e+01 8.7011270e+01 7.1869304e+01 1.1905736e+02 5.7090180e+01 5.3067906e+01 1.0141059e+02 1.0972274e+02 6.0067201e+01 8.7526988e+01 1.2399455e+02 5.7798231e+01 8.5284253e+01 1.2140040e+02 5.1100259e+01 1.0831182e+02 5.3706874e+01 7.2334816e+01 4.9802207e+01 1.2061803e+02 8.6784934e+01 4.6344340e+01 5.6259421e+01 8.2221977e+01 9.4465517e+01 9.8473009e+01 7.9666601e+01 9.2416965e+01 8.8810529e+01 6.5909195e+01 1.1649784e+02 8.5827932e+01 8.4883235e+01 1.1162111e+02 1.0999842e+02 1.0022492e+02 1.0860917e+02 5.8460717e+01 5.5649864e+01 5.6940709e+01 8.0198785e+01 7.8436074e+01 7.0114512e+01 7.7073141e+01 - 3.6688684e+01 3.6065728e+01 2.7454965e+01 6.0137198e+01 4.7689977e+01 5.9467309e+01 3.5564766e+01 8.2307523e+01 2.4585127e+01 0.0000000e+00 5.9531041e+01 6.3221579e+01 5.0966370e+01 3.7461949e+01 9.6370270e+01 1.2392509e+01 5.9753381e+01 7.9929177e+01 4.9557151e+01 8.0439838e+01 2.3308025e+01 5.9849952e+01 4.5809096e+01 8.6692180e+01 3.7881305e+01 2.7562593e+01 3.9128185e+01 5.6527063e+01 4.6125722e+01 6.4492768e+01 3.1610528e+01 6.3834262e+01 6.0015829e+01 5.5627407e+01 9.0673540e+01 7.0939863e+01 7.1831665e+01 7.2003672e+01 7.6980274e+01 7.8461038e+01 8.0987790e+01 2.6565197e+01 2.6459940e+01 1.8289264e+01 4.8227011e+01 3.7164194e+01 3.0597714e+01 4.6541967e+01 6.1909692e+01 7.4865373e+01 4.3556315e+01 7.0968399e+01 7.2578127e+01 6.3409241e+01 6.7761578e+01 9.4888232e+01 5.3143569e+01 3.8689087e+01 7.8339848e+01 8.7473086e+01 6.7206036e+01 6.7751808e+01 9.9522087e+01 4.1369089e+01 6.0882862e+01 9.7756645e+01 5.8751907e+01 8.3737780e+01 4.9874866e+01 7.5747798e+01 5.4596672e+01 9.6766694e+01 7.2602735e+01 3.6577682e+01 4.9600680e+01 5.9360121e+01 7.8346255e+01 8.4232910e+01 6.2433721e+01 7.6586270e+01 8.1697875e+01 6.1730091e+01 9.3877739e+01 8.2034095e+01 7.8989257e+01 9.2848686e+01 8.9364913e+01 8.1553500e+01 9.1616854e+01 3.6723148e+01 3.5262320e+01 3.8520737e+01 5.6308881e+01 5.6132456e+01 4.7840550e+01 5.2966379e+01 - 4.3735926e+01 6.2225501e+01 3.6411528e+01 2.0753997e+01 1.7104835e+01 3.1435118e+01 8.4127231e+01 2.4787818e+01 8.0522789e+01 5.9531041e+01 0.0000000e+00 2.0021413e+01 1.0873256e+02 2.9523099e+01 4.6997867e+01 4.7693803e+01 3.1505164e+01 2.6699915e+01 1.0736052e+02 3.5991082e+01 8.0722916e+01 1.1150179e+02 1.0259918e+02 4.2895237e+01 5.8503078e+01 7.5944177e+01 8.3291289e+01 4.5495996e+01 5.3225160e+01 7.5526180e+01 4.7255308e+01 7.2154847e+01 9.2489658e+01 9.6049374e+01 6.0628290e+01 1.0694863e+02 1.0267272e+02 5.9050232e+01 5.9131149e+01 7.2359735e+01 7.8063998e+01 4.6667098e+01 5.1803173e+01 5.1306381e+01 2.9246039e+01 2.4360587e+01 3.1600990e+01 2.7322110e+01 8.0435182e+01 1.0731445e+02 6.1019350e+01 5.7422731e+01 7.4832884e+01 4.2329832e+01 1.1409052e+02 6.7941583e+01 1.0201866e+02 7.8495935e+01 6.9081680e+01 8.2874608e+01 1.2353045e+02 8.1256608e+01 5.7538847e+01 7.5906105e+01 3.8116774e+01 7.9897429e+01 1.1541129e+02 4.9003254e+01 9.9924624e+01 1.2753691e+02 1.0984855e+02 7.1682523e+01 1.0097913e+02 8.1532607e+01 9.3076352e+01 5.2466035e+01 1.0018817e+02 1.0440988e+02 8.6064121e+01 9.2050283e+01 1.1836949e+02 1.0272645e+02 6.8627468e+01 1.2001979e+02 1.1180257e+02 9.8375725e+01 8.3042096e+01 7.8584905e+01 9.6170563e+01 5.9145471e+01 6.2636223e+01 7.0375840e+01 5.1178234e+01 6.3576005e+01 6.0492950e+01 4.5229543e+01 - 5.4577725e+01 5.6766011e+01 4.6928726e+01 4.0696603e+01 2.8342294e+01 4.9809921e+01 8.1776804e+01 3.5526648e+01 8.1828682e+01 6.3221579e+01 2.0021413e+01 0.0000000e+00 1.0872000e+02 2.6795219e+01 5.6540032e+01 5.3169675e+01 4.6743401e+01 2.1039529e+01 1.0672014e+02 4.5686361e+01 8.1279761e+01 1.0649865e+02 1.0155176e+02 3.8765465e+01 4.9610491e+01 7.6017704e+01 8.0120432e+01 4.6197688e+01 4.1225834e+01 6.2326199e+01 4.0975001e+01 6.1142704e+01 8.2112080e+01 9.0691351e+01 5.6377768e+01 9.8119890e+01 9.4048781e+01 4.2764698e+01 4.7637940e+01 6.4623518e+01 6.5806335e+01 5.0055634e+01 5.3861268e+01 5.2437131e+01 3.4158612e+01 2.9238995e+01 3.7337598e+01 4.1180775e+01 9.5332790e+01 1.1626628e+02 7.3263305e+01 7.4347205e+01 8.9211093e+01 5.9693799e+01 1.2145736e+02 8.1847750e+01 1.0952215e+02 8.6959395e+01 8.2790678e+01 9.3607204e+01 1.2819123e+02 9.1867121e+01 6.8429476e+01 8.5058895e+01 5.2878495e+01 8.9716851e+01 1.1717737e+02 6.0198196e+01 1.0616141e+02 1.2856840e+02 1.1156688e+02 7.7132263e+01 1.0777796e+02 8.2730081e+01 9.2969093e+01 5.5193792e+01 1.0702918e+02 1.0445443e+02 9.2882552e+01 9.0769216e+01 1.1868208e+02 9.9996445e+01 6.7856062e+01 1.1675724e+02 1.0702506e+02 1.0056426e+02 8.2876406e+01 7.3918586e+01 9.2771642e+01 6.5188047e+01 6.7247720e+01 7.6585087e+01 5.9798398e+01 7.4227547e+01 7.0626670e+01 5.8855583e+01 - 7.8520739e+01 5.8564322e+01 7.7961731e+01 1.1011853e+02 9.5322115e+01 1.0972884e+02 3.1128508e+01 1.3250151e+02 2.8733167e+01 5.0966370e+01 1.0873256e+02 1.0872000e+02 0.0000000e+00 8.2360477e+01 1.4707902e+02 6.2556225e+01 1.1028486e+02 1.2750195e+02 2.0497253e+01 1.3086293e+02 2.8309905e+01 3.3013597e+01 2.4740035e+01 1.3395990e+02 6.5224824e+01 4.9680717e+01 5.1933446e+01 1.0168645e+02 7.6727630e+01 8.7392955e+01 7.0138262e+01 9.1599977e+01 6.3640304e+01 6.0186698e+01 1.3486426e+02 6.9356174e+01 7.8068869e+01 1.0634879e+02 1.1563136e+02 1.1363484e+02 1.1084145e+02 7.3541203e+01 7.0598941e+01 6.3660427e+01 9.7364346e+01 8.6706574e+01 8.0845235e+01 9.7373692e+01 9.6173035e+01 9.3987100e+01 8.5681781e+01 1.1754018e+02 1.1336450e+02 1.1258412e+02 7.2019935e+01 1.4271833e+02 6.0401281e+01 6.7337787e+01 1.2265740e+02 1.2826227e+02 4.8790475e+01 1.0364727e+02 1.4969714e+02 7.3274815e+01 1.1070938e+02 1.4217071e+02 3.9625184e+01 1.3335068e+02 5.6772043e+01 6.1758876e+01 4.2402351e+01 1.4237098e+02 9.5379460e+01 5.6546373e+01 6.0972284e+01 1.0348887e+02 1.0473386e+02 1.0657334e+02 9.2368932e+01 1.0346853e+02 8.8889599e+01 6.6898610e+01 1.3770974e+02 8.3507961e+01 8.6043102e+01 1.2467958e+02 1.2678730e+02 1.1633784e+02 1.2108153e+02 7.8297706e+01 7.4246133e+01 7.3314923e+01 1.0236814e+02 9.8317754e+01 9.0371198e+01 1.0117284e+02 - 3.5800425e+01 3.3768196e+01 2.8189017e+01 4.1767173e+01 2.1589602e+01 4.8480387e+01 5.6107770e+01 5.3676010e+01 5.5082335e+01 3.7461949e+01 2.9523099e+01 2.6795219e+01 8.2360477e+01 0.0000000e+00 7.3131223e+01 2.8286227e+01 4.7400297e+01 4.6132984e+01 8.1576869e+01 5.8835308e+01 5.4863740e+01 8.3389005e+01 7.6853085e+01 5.8623731e+01 2.9580305e+01 5.3798998e+01 5.9605216e+01 4.5262763e+01 2.6802655e+01 5.5202301e+01 1.9858472e+01 5.5580855e+01 6.5781498e+01 7.2631866e+01 6.9853296e+01 8.2322869e+01 8.0638856e+01 4.8124674e+01 5.5913154e+01 6.7070744e+01 6.7588479e+01 3.2151511e+01 3.5549363e+01 3.0164603e+01 3.1617554e+01 1.5562061e+01 2.0068270e+01 3.5416152e+01 8.0998310e+01 1.0036033e+02 5.8770990e+01 7.0857064e+01 8.1699327e+01 5.7502273e+01 1.0065355e+02 8.7059704e+01 8.7417147e+01 6.7141660e+01 8.0167195e+01 9.1208528e+01 1.0381160e+02 8.1688973e+01 8.1465127e+01 6.6748200e+01 5.2190652e+01 9.3410381e+01 9.3130371e+01 6.8920847e+01 8.3963585e+01 1.0700889e+02 8.8136713e+01 8.5394608e+01 9.3916536e+01 6.2324157e+01 7.3863148e+01 5.3050816e+01 9.5757752e+01 9.5644660e+01 8.0104303e+01 8.3485474e+01 1.0343004e+02 8.2433996e+01 7.8220222e+01 1.0132215e+02 9.3563758e+01 9.7378503e+01 8.4767086e+01 7.4831312e+01 9.1146091e+01 5.0053567e+01 5.0952670e+01 5.9463969e+01 5.4961296e+01 6.4888954e+01 5.8813818e+01 5.2368513e+01 - 8.4369980e+01 1.0688721e+02 7.1217154e+01 4.6583182e+01 6.2548279e+01 4.4344095e+01 1.2648213e+02 2.6396156e+01 1.2029821e+02 9.6370270e+01 4.6997867e+01 5.6540032e+01 1.4707902e+02 7.3131223e+01 0.0000000e+00 8.5695148e+01 3.9273720e+01 4.0286351e+01 1.4151304e+02 1.6877687e+01 1.1900513e+02 1.4716387e+02 1.3622682e+02 3.5411947e+01 9.9296242e+01 1.0553405e+02 1.1241662e+02 5.5932854e+01 9.3384687e+01 1.0214524e+02 8.5802843e+01 9.3407941e+01 1.2543792e+02 1.2259749e+02 4.8778172e+01 1.3441578e+02 1.2608744e+02 8.1417932e+01 6.8964262e+01 7.7712357e+01 9.0801454e+01 7.5215950e+01 7.9662126e+01 8.4686805e+01 5.1324728e+01 6.2226613e+01 6.6609891e+01 5.0590104e+01 9.0515702e+01 1.1498513e+02 7.6397958e+01 5.3995166e+01 7.1776886e+01 4.5998877e+01 1.3163101e+02 4.0268016e+01 1.2378920e+02 9.9038009e+01 5.7907829e+01 6.8279029e+01 1.4995442e+02 8.2269843e+01 1.5906666e+01 9.4014298e+01 4.1592184e+01 5.4424379e+01 1.4363407e+02 2.3825590e+01 1.2252639e+02 1.5010497e+02 1.3705084e+02 4.4890956e+01 1.0690917e+02 1.0635691e+02 1.1530934e+02 5.7797446e+01 1.0146719e+02 1.0769294e+02 9.2828159e+01 9.6747396e+01 1.3049354e+02 1.2418317e+02 5.0727534e+01 1.3679634e+02 1.2819478e+02 9.0545907e+01 7.3500915e+01 7.9034804e+01 9.4225501e+01 7.7883565e+01 8.2773404e+01 8.8746611e+01 5.5668875e+01 6.8728685e+01 7.1489399e+01 5.4037694e+01 - 2.7146826e+01 3.6465284e+01 1.6101982e+01 4.8037409e+01 3.5590104e+01 4.8655291e+01 4.3771074e+01 7.0550514e+01 3.4844071e+01 1.2392509e+01 4.7693803e+01 5.3169675e+01 6.2556225e+01 2.8286227e+01 8.5695148e+01 0.0000000e+00 4.9716041e+01 6.9436588e+01 6.1899474e+01 7.0235347e+01 3.4853377e+01 7.0979977e+01 5.8018373e+01 7.7729644e+01 3.8035684e+01 3.6717305e+01 4.7827216e+01 5.1022787e+01 4.3658039e+01 6.5696299e+01 2.8925444e+01 6.4341948e+01 6.6368234e+01 6.4011360e+01 8.4109176e+01 7.8728554e+01 7.8357475e+01 6.8231858e+01 7.2490368e+01 7.6328083e+01 7.9909305e+01 2.3024534e+01 2.5524556e+01 1.8111630e+01 3.9639897e+01 2.6652246e+01 2.0679239e+01 3.6158750e+01 6.0088958e+01 7.9022842e+01 4.0521673e+01 6.3208887e+01 6.8424787e+01 5.3951513e+01 7.5585444e+01 8.6742108e+01 6.1206851e+01 4.3039191e+01 7.2558873e+01 8.3600240e+01 7.8172966e+01 6.6704999e+01 8.9720808e+01 4.4092087e+01 5.1673413e+01 9.1941160e+01 7.0549063e+01 7.4644425e+01 5.8631561e+01 8.6588544e+01 6.6066156e+01 9.0309050e+01 7.6254205e+01 4.4731422e+01 5.8037967e+01 5.4750220e+01 8.0622059e+01 8.7540397e+01 6.4448525e+01 7.8689211e+01 8.8960217e+01 7.0177298e+01 8.7993700e+01 9.0152205e+01 8.5918694e+01 9.2742793e+01 8.6935325e+01 8.0003184e+01 9.1977394e+01 3.6088097e+01 3.6418678e+01 4.1132189e+01 5.0817184e+01 5.2828824e+01 4.4962167e+01 4.5446623e+01 - 5.2280787e+01 7.8293287e+01 3.4619313e+01 2.3586364e+01 3.8396775e+01 1.2287669e+01 9.2813801e+01 3.5600146e+01 8.4063102e+01 5.9753381e+01 3.1505164e+01 4.6743401e+01 1.1028486e+02 4.7400297e+01 3.9273720e+01 4.9716041e+01 0.0000000e+00 4.6023036e+01 1.0524866e+02 2.5250573e+01 8.2863412e+01 1.1410617e+02 1.0046055e+02 4.7119248e+01 7.2897138e+01 7.0823355e+01 8.0362506e+01 3.5044027e+01 7.0950658e+01 8.3570014e+01 5.8212816e+01 7.5355494e+01 9.9533930e+01 9.3171369e+01 5.5483376e+01 1.0815683e+02 1.0173552e+02 7.1748386e+01 6.3213261e+01 6.7889425e+01 8.0657632e+01 4.0840112e+01 4.5861620e+01 5.0614647e+01 2.4076625e+01 3.2648886e+01 3.3358292e+01 1.3773199e+01 5.6130479e+01 8.2881084e+01 3.8732895e+01 2.8027557e+01 4.4512797e+01 1.4711478e+01 9.5417979e+01 4.0135992e+01 8.5996821e+01 6.1247392e+01 3.7594900e+01 5.2491929e+01 1.1192436e+02 5.3216965e+01 4.0528754e+01 5.6703652e+01 6.6863159e+00 5.1695315e+01 1.0679776e+02 2.6469274e+01 8.5005199e+01 1.1558471e+02 1.0062696e+02 5.0231130e+01 7.7138630e+01 7.1908807e+01 8.2625530e+01 3.6146496e+01 7.4847322e+01 8.6250801e+01 6.2597563e+01 7.6373707e+01 1.0220432e+02 9.4106008e+01 5.5978474e+01 1.0934994e+02 1.0292718e+02 7.6335127e+01 6.5412712e+01 6.8293148e+01 8.2164719e+01 4.2791906e+01 4.8170159e+01 5.3162085e+01 2.6441425e+01 3.6612932e+01 3.6457496e+01 1.7367667e+01 - 6.9744628e+01 7.7584123e+01 5.9850484e+01 4.3785379e+01 4.2358200e+01 5.0844423e+01 1.0183016e+02 2.3443841e+01 1.0058543e+02 7.9929177e+01 2.6699915e+01 2.1039529e+01 1.2750195e+02 4.6132984e+01 4.0286351e+01 6.9436588e+01 4.6023036e+01 0.0000000e+00 1.2391422e+02 3.3763640e+01 9.9574502e+01 1.2430679e+02 1.1846692e+02 2.3464227e+01 6.9176987e+01 9.0518108e+01 9.4630779e+01 4.8316519e+01 6.0544442e+01 7.4247241e+01 5.9152649e+01 7.0238299e+01 9.8094075e+01 1.0416169e+02 4.5993644e+01 1.1181763e+02 1.0570008e+02 5.0294318e+01 4.7715630e+01 6.5043555e+01 6.9589609e+01 6.2177963e+01 6.6171204e+01 6.7487636e+01 3.9820453e+01 4.3137673e+01 5.0695354e+01 4.6700224e+01 1.0087487e+02 1.2231388e+02 8.0071045e+01 7.3005802e+01 8.9480392e+01 5.9227217e+01 1.3178136e+02 7.2656462e+01 1.2123397e+02 9.7254380e+01 7.9639061e+01 8.9683940e+01 1.4239833e+02 9.4151734e+01 5.3964026e+01 9.4171210e+01 5.1857247e+01 8.1270291e+01 1.3204660e+02 5.0020721e+01 1.1822382e+02 1.4125992e+02 1.2590696e+02 6.6405109e+01 1.1283842e+02 9.5251586e+01 1.0467234e+02 5.6120337e+01 1.1006750e+02 1.0770179e+02 9.7694150e+01 9.3937681e+01 1.2649970e+02 1.1143862e+02 5.7819722e+01 1.2634221e+02 1.1602193e+02 9.8782585e+01 7.8775676e+01 7.3166650e+01 9.2295107e+01 7.3614765e+01 7.6603053e+01 8.5624617e+01 6.0993665e+01 7.7077066e+01 7.5683811e+01 6.1240972e+01 - 8.3300028e+01 6.3038820e+01 7.6413299e+01 1.0937255e+02 9.6291331e+01 1.0676269e+02 3.9766295e+01 1.2988373e+02 3.5080530e+01 4.9557151e+01 1.0736052e+02 1.0672014e+02 2.0497253e+01 8.1576869e+01 1.4151304e+02 6.1899474e+01 1.0524866e+02 1.2391422e+02 0.0000000e+00 1.2481774e+02 2.9898110e+01 2.3905072e+01 6.4645984e+00 1.2683588e+02 6.3932910e+01 3.7392580e+01 3.7133568e+01 9.1834414e+01 7.5128735e+01 7.7535154e+01 6.6546426e+01 7.9794168e+01 5.4282470e+01 4.3062930e+01 1.2438168e+02 5.4351116e+01 6.1866263e+01 9.8735991e+01 1.0556208e+02 1.0039680e+02 9.8481985e+01 6.6336014e+01 6.2219580e+01 5.7631520e+01 9.0932126e+01 8.3634420e+01 7.7140773e+01 9.3169818e+01 9.1024403e+01 8.0791389e+01 7.8939390e+01 1.1215055e+02 1.0516427e+02 1.0825185e+02 5.9835051e+01 1.3491906e+02 5.0592274e+01 5.8231450e+01 1.1389652e+02 1.1667103e+02 3.9147735e+01 9.2262838e+01 1.4278884e+02 6.4034849e+01 1.0491427e+02 1.3104581e+02 2.3285280e+01 1.2587614e+02 4.5122900e+01 4.3193866e+01 2.4746099e+01 1.3104700e+02 8.0106230e+01 4.1563236e+01 4.2833926e+01 9.2517055e+01 8.9372482e+01 8.8196544e+01 7.8221887e+01 8.6213664e+01 6.9035486e+01 4.7367526e+01 1.2591575e+02 6.3190431e+01 6.6541522e+01 1.0815353e+02 1.1199104e+02 1.0171883e+02 1.0423702e+02 6.8114475e+01 6.3188645e+01 6.1841092e+01 9.2841787e+01 8.8540412e+01 8.1141611e+01 9.4706847e+01 - 7.2176918e+01 9.2321298e+01 5.6365414e+01 3.7103414e+01 5.0759609e+01 3.3260794e+01 1.1086181e+02 2.4095421e+01 1.0452014e+02 8.0439838e+01 3.5991082e+01 4.5686361e+01 1.3086293e+02 5.8835308e+01 1.6877687e+01 7.0235347e+01 2.5250573e+01 3.3763640e+01 1.2481774e+02 0.0000000e+00 1.0284613e+02 1.3044481e+02 1.1946999e+02 2.8565594e+01 8.4125476e+01 8.8700058e+01 9.5563295e+01 3.9737512e+01 7.9000932e+01 8.7363482e+01 7.0107547e+01 7.8469516e+01 1.0947134e+02 1.0596240e+02 4.0627424e+01 1.1822097e+02 1.1018383e+02 6.8847274e+01 5.6797631e+01 6.4721804e+01 7.7868646e+01 5.8493290e+01 6.2843684e+01 6.8101842e+01 3.4627852e+01 4.6840469e+01 5.0702209e+01 3.5462899e+01 7.9161891e+01 1.0165821e+02 6.2223889e+01 4.5591541e+01 6.1882723e+01 3.5592947e+01 1.1680796e+02 3.8969027e+01 1.0859467e+02 8.3758590e+01 4.9300788e+01 5.9852245e+01 1.3407499e+02 6.9859544e+01 2.3234838e+01 7.8988791e+01 2.8106548e+01 4.9759998e+01 1.2712053e+02 1.6569157e+01 1.0690622e+02 1.3380499e+02 1.2051733e+02 3.9784242e+01 9.3131189e+01 8.9655179e+01 9.8743620e+01 4.2125697e+01 8.8515845e+01 9.3899935e+01 7.8549193e+01 8.2553797e+01 1.1526610e+02 1.0773962e+02 4.3110792e+01 1.2098899e+02 1.1253778e+02 7.9322095e+01 6.2659414e+01 6.6295631e+01 8.2026162e+01 6.1606176e+01 6.6321256e+01 7.2790407e+01 4.0445555e+01 5.4861540e+01 5.6689136e+01 3.9996616e+01 - 5.4303610e+01 3.7285914e+01 5.0586706e+01 8.2825116e+01 6.8032931e+01 8.2746173e+01 1.9187247e+01 1.0432129e+02 7.9450298e+00 2.3308025e+01 8.0722916e+01 8.1279761e+01 2.8309905e+01 5.4863740e+01 1.1900513e+02 3.4853377e+01 8.2863412e+01 9.9574502e+01 2.9898110e+01 1.0284613e+02 0.0000000e+00 4.0294246e+01 2.7560323e+01 1.0627015e+02 4.2101063e+01 2.9183655e+01 3.5833692e+01 7.5176094e+01 5.3231491e+01 6.8076236e+01 4.3635022e+01 7.0670444e+01 5.2590572e+01 4.9827064e+01 1.0857800e+02 6.2679858e+01 6.7729220e+01 8.2628616e+01 9.0794983e+01 9.0721398e+01 8.9639383e+01 4.6340199e+01 4.4063627e+01 3.6083687e+01 6.9429793e+01 5.8405076e+01 5.2593287e+01 6.9680390e+01 7.7895641e+01 8.2492827e+01 6.2770197e+01 9.2939190e+01 9.1640876e+01 8.6390775e+01 6.7732633e+01 1.1707424e+02 5.3604457e+01 4.9565379e+01 9.8911831e+01 1.0597886e+02 5.6586348e+01 8.3708797e+01 1.2223201e+02 5.4369609e+01 8.3790386e+01 1.1785105e+02 4.5699542e+01 1.0616227e+02 4.9365337e+01 6.5947683e+01 4.3757685e+01 1.1671609e+02 8.1321403e+01 3.9302011e+01 4.8716519e+01 7.7799606e+01 8.8986178e+01 9.1363293e+01 7.4411286e+01 8.5471169e+01 8.1407154e+01 5.8008177e+01 1.1204143e+02 7.7950414e+01 7.6955908e+01 1.0541321e+02 1.0425819e+02 9.4143429e+01 1.0184272e+02 5.4103194e+01 5.0698662e+01 5.2119128e+01 7.6720259e+01 7.5061503e+01 6.6804474e+01 7.5206474e+01 - 9.3044688e+01 6.0808923e+01 8.6084316e+01 1.1771696e+02 1.0153497e+02 1.1690867e+02 4.1099409e+01 1.3431746e+02 4.5602685e+01 5.9849952e+01 1.1150179e+02 1.0649865e+02 3.3013597e+01 8.3389005e+01 1.4716387e+02 7.0979977e+01 1.1410617e+02 1.2430679e+02 2.3905072e+01 1.3044481e+02 4.0294246e+01 0.0000000e+00 2.2751872e+01 1.2720168e+02 5.8985614e+01 4.5851095e+01 3.8424459e+01 9.5506396e+01 6.9318618e+01 6.6918178e+01 6.5706216e+01 7.2647859e+01 3.8237412e+01 3.7756507e+01 1.2436536e+02 3.9570809e+01 5.0836673e+01 9.1249999e+01 1.0136210e+02 9.7446132e+01 9.0889211e+01 7.3453568e+01 6.8951705e+01 6.3728469e+01 9.5864018e+01 8.8416961e+01 8.3425024e+01 1.0166964e+02 1.0980183e+02 9.8701469e+01 9.3937428e+01 1.2569576e+02 1.2053682e+02 1.1981322e+02 8.0496206e+01 1.4580296e+02 7.2249528e+01 7.5903408e+01 1.2685206e+02 1.2876439e+02 6.1253059e+01 1.0691265e+02 1.5008520e+02 8.0955504e+01 1.1468202e+02 1.4080265e+02 4.2885032e+01 1.3357803e+02 6.5874899e+01 5.5456915e+01 4.3205663e+01 1.3703503e+02 9.4544240e+01 5.1898795e+01 5.0937652e+01 9.7727439e+01 1.0250079e+02 9.3012000e+01 9.1356224e+01 8.9218321e+01 7.5930440e+01 4.9024216e+01 1.2791934e+02 6.3019008e+01 6.3592966e+01 1.1418077e+02 1.1510740e+02 1.0109350e+02 1.0441275e+02 7.8726734e+01 7.3369550e+01 7.4917159e+01 1.0192806e+02 1.0126723e+02 9.3939345e+01 1.0602603e+02 - 8.0634893e+01 5.9710508e+01 7.2360609e+01 1.0520079e+02 9.2133083e+01 1.0248332e+02 3.8488195e+01 1.2489772e+02 3.3818602e+01 4.5809096e+01 1.0259918e+02 1.0155176e+02 2.4740035e+01 7.6853085e+01 1.3622682e+02 5.8018373e+01 1.0046055e+02 1.1846692e+02 6.4645984e+00 1.1946999e+02 2.7560323e+01 2.2751872e+01 0.0000000e+00 1.2090107e+02 5.9158709e+01 3.1589344e+01 3.0679074e+01 8.5888191e+01 7.0161825e+01 7.1469701e+01 6.1255478e+01 7.3413625e+01 4.9180208e+01 3.7147710e+01 1.1814093e+02 4.9373025e+01 5.6275628e+01 9.2648793e+01 9.9202633e+01 9.3951046e+01 9.2073852e+01 6.1017319e+01 5.6702567e+01 5.2385886e+01 8.5462404e+01 7.8681232e+01 7.2247692e+01 8.8452582e+01 8.8677847e+01 7.8392930e+01 7.5194502e+01 1.0820971e+02 1.0146341e+02 1.0402304e+02 5.9211945e+01 1.3020762e+02 4.9816827e+01 5.5129436e+01 1.0954360e+02 1.1207610e+02 4.1700397e+01 8.8278576e+01 1.3756516e+02 6.0672063e+01 1.0017441e+02 1.2597306e+02 2.4412748e+01 1.2064613e+02 4.3775306e+01 4.2744178e+01 2.3922416e+01 1.2535694e+02 7.6518505e+01 3.6116596e+01 3.7580707e+01 8.6666185e+01 8.5383775e+01 8.3015392e+01 7.3902475e+01 8.0452722e+01 6.5246505e+01 4.2195551e+01 1.1977189e+02 5.9013376e+01 6.1462590e+01 1.0275223e+02 1.0599311e+02 9.5399591e+01 9.8219758e+01 6.3045743e+01 5.7963882e+01 5.7230457e+01 8.7620660e+01 8.4026061e+01 7.6647045e+01 9.0162351e+01 - 8.4014782e+01 8.9920025e+01 6.7991164e+01 5.5672333e+01 5.8567285e+01 5.6283249e+01 1.1138623e+02 3.5515777e+01 1.0884475e+02 8.6692180e+01 4.2895237e+01 3.8765465e+01 1.3395990e+02 5.8623731e+01 3.5411947e+01 7.7729644e+01 4.7119248e+01 2.3464227e+01 1.2683588e+02 2.8565594e+01 1.0627015e+02 1.2720168e+02 1.2090107e+02 0.0000000e+00 7.7946790e+01 9.0863663e+01 9.3690034e+01 3.9647144e+01 7.0129011e+01 7.2219470e+01 6.6238469e+01 6.4398033e+01 9.9229976e+01 1.0092433e+02 2.3616375e+01 1.0871345e+02 1.0011974e+02 4.8676415e+01 3.6267341e+01 5.0110234e+01 5.8942774e+01 6.3664056e+01 6.6657741e+01 7.1168834e+01 4.0136851e+01 5.1695881e+01 5.7221443e+01 5.1097294e+01 1.0067356e+02 1.1554337e+02 7.9546304e+01 7.1563061e+01 8.4206890e+01 6.0724614e+01 1.2858685e+02 6.3844176e+01 1.2042963e+02 9.6398440e+01 7.1924521e+01 7.7402737e+01 1.4258220e+02 8.6348117e+01 4.4821128e+01 9.2543723e+01 5.0759968e+01 6.6363124e+01 1.3185109e+02 4.0776252e+01 1.1706252e+02 1.3724127e+02 1.2506275e+02 4.7563110e+01 1.0380884e+02 9.2973226e+01 1.0025161e+02 4.5500168e+01 9.9168484e+01 9.3714205e+01 8.9184713e+01 8.0113472e+01 1.1664332e+02 1.0560822e+02 3.5744187e+01 1.1759919e+02 1.0676392e+02 8.1549241e+01 5.9717359e+01 5.6336829e+01 7.4793280e+01 7.0590887e+01 7.3499996e+01 8.2317428e+01 5.3856976e+01 7.1188965e+01 7.1703236e+01 5.9776762e+01 - 5.4579493e+01 1.8439162e+01 4.8451830e+01 7.0826797e+01 5.0398057e+01 7.5468214e+01 3.7962103e+01 8.1589136e+01 4.4047516e+01 3.7881305e+01 5.8503078e+01 4.9610491e+01 6.5224824e+01 2.9580305e+01 9.9296242e+01 3.8035684e+01 7.2897138e+01 6.9176987e+01 6.3932910e+01 8.4125476e+01 4.2101063e+01 5.8985614e+01 5.9158709e+01 7.7946790e+01 0.0000000e+00 4.4571120e+01 4.4312216e+01 5.8831906e+01 1.1521071e+01 3.8968244e+01 1.5274460e+01 4.5797406e+01 3.9306336e+01 5.4280681e+01 8.3602854e+01 5.9253852e+01 6.1219331e+01 4.6101039e+01 6.0701775e+01 6.8683779e+01 6.2266503e+01 4.1612319e+01 4.0835227e+01 3.2788742e+01 5.2503328e+01 4.0778489e+01 4.0724273e+01 6.0284313e+01 9.6007115e+01 1.0475801e+02 7.3474519e+01 9.4191419e+01 9.9699057e+01 8.2721759e+01 9.9039662e+01 1.1084339e+02 8.6268166e+01 7.1925755e+01 1.0016763e+02 1.0752301e+02 9.4815959e+01 9.3867738e+01 1.0674473e+02 7.3659038e+01 7.6417070e+01 1.1227439e+02 8.0124055e+01 9.2899528e+01 8.1072145e+01 9.4105281e+01 7.5991536e+01 1.0328356e+02 9.7436353e+01 5.5514582e+01 6.4241118e+01 6.5956522e+01 1.0113807e+02 9.3853255e+01 8.5914841e+01 8.2427557e+01 9.5519428e+01 6.8813555e+01 9.2179638e+01 8.7641052e+01 7.9979824e+01 1.0293614e+02 9.2613999e+01 7.7710395e+01 9.1488951e+01 5.8520362e+01 5.6272781e+01 6.4410097e+01 7.1771075e+01 7.9679190e+01 7.2566090e+01 7.3459887e+01 - 6.3475916e+01 5.1072465e+01 4.7572416e+01 7.8851964e+01 6.8555057e+01 7.4645534e+01 4.4620009e+01 9.6325955e+01 3.6345616e+01 2.7562593e+01 7.5944177e+01 7.6017704e+01 4.9680717e+01 5.3798998e+01 1.0553405e+02 3.6717305e+01 7.0823355e+01 9.0518108e+01 3.7392580e+01 8.8700058e+01 2.9183655e+01 4.5851095e+01 3.1589344e+01 9.0863663e+01 4.4571120e+01 0.0000000e+00 1.4331374e+01 5.4560506e+01 5.3193030e+01 5.3846874e+01 3.9127582e+01 5.1132910e+01 4.6023449e+01 3.0427920e+01 8.7770845e+01 4.8917263e+01 4.8539421e+01 6.9373520e+01 7.1880931e+01 6.6717103e+01 6.8884085e+01 3.0972228e+01 2.6037993e+01 2.4802844e+01 5.5119789e+01 5.1598060e+01 4.4759887e+01 5.9642931e+01 6.8868779e+01 6.3688383e+01 4.9629653e+01 8.0744170e+01 7.5600190e+01 7.5810770e+01 5.5811505e+01 1.0020111e+02 4.5270283e+01 3.5651657e+01 8.1053159e+01 8.3925384e+01 5.5747564e+01 6.3007166e+01 1.0648665e+02 3.8997159e+01 7.0401682e+01 9.5914978e+01 4.1933617e+01 8.9539110e+01 3.8858412e+01 5.3238112e+01 3.5872644e+01 9.4141214e+01 5.7641123e+01 1.2026426e+01 2.2955436e+01 5.5187338e+01 6.4034861e+01 6.2362452e+01 4.9928633e+01 5.6372501e+01 5.6146876e+01 3.4171729e+01 8.8978209e+01 5.4512646e+01 5.2072306e+01 7.6990890e+01 7.7183745e+01 6.7757629e+01 7.3418601e+01 3.2896849e+01 2.7635063e+01 3.0115173e+01 5.6677134e+01 5.5570881e+01 4.8226362e+01 6.0968977e+01 - 7.4634920e+01 5.3764041e+01 5.8952390e+01 8.8943639e+01 7.7048325e+01 8.5399722e+01 4.7316553e+01 1.0341399e+02 4.3598433e+01 3.9128185e+01 8.3291289e+01 8.0120432e+01 5.1933446e+01 5.9605216e+01 1.1241662e+02 4.7827216e+01 8.0362506e+01 9.4630779e+01 3.7133568e+01 9.5563295e+01 3.5833692e+01 3.8424459e+01 3.0679074e+01 9.3690034e+01 4.4312216e+01 1.4331374e+01 0.0000000e+00 5.8684060e+01 5.2595978e+01 4.5422974e+01 4.1794531e+01 4.4099006e+01 3.4233565e+01 1.6620632e+01 8.8729481e+01 3.4597118e+01 3.4840814e+01 6.5601520e+01 6.9565659e+01 6.3286074e+01 6.2264219e+01 4.0101150e+01 3.4672446e+01 3.3684438e+01 6.1863956e+01 5.9307488e+01 5.3614063e+01 6.9494394e+01 8.2264926e+01 7.2114503e+01 6.2424412e+01 9.2353032e+01 8.6924168e+01 8.6937017e+01 6.3810936e+01 1.0926348e+02 5.5454576e+01 4.8565712e+01 9.1042842e+01 9.1911825e+01 6.0958764e+01 7.2672181e+01 1.1385931e+02 5.1658478e+01 8.0240267e+01 1.0283396e+02 4.3662247e+01 9.7134853e+01 4.8279452e+01 5.1541020e+01 3.7871794e+01 9.8775526e+01 6.3931939e+01 1.9090497e+01 2.1599388e+01 5.9861861e+01 6.9777735e+01 6.0441015e+01 5.7271391e+01 5.4131435e+01 5.3086816e+01 2.5766252e+01 9.0682718e+01 4.5978619e+01 4.2136963e+01 7.8001694e+01 7.7639652e+01 6.5283628e+01 6.9944746e+01 4.3053764e+01 3.7397296e+01 4.1003192e+01 6.4911153e+01 6.5754708e+01 5.9100002e+01 7.1731172e+01 - 6.7694082e+01 7.1563754e+01 4.4480183e+01 5.2141680e+01 5.2180997e+01 4.6038456e+01 8.5104954e+01 5.4327938e+01 7.9275304e+01 5.6527063e+01 4.5495996e+01 4.6197688e+01 1.0168645e+02 4.5262763e+01 5.5932854e+01 5.1022787e+01 3.5044027e+01 4.8316519e+01 9.1834414e+01 3.9737512e+01 7.5176094e+01 9.5506396e+01 8.5888191e+01 3.9647144e+01 5.8831906e+01 5.4560506e+01 5.8684060e+01 0.0000000e+00 5.6533270e+01 5.4243712e+01 4.4391941e+01 4.3142537e+01 7.4226505e+01 6.7169909e+01 3.5523055e+01 7.9699047e+01 7.1088543e+01 4.6036327e+01 3.3898042e+01 3.3664829e+01 4.7117288e+01 3.0121698e+01 3.1569028e+01 3.9550273e+01 1.7770434e+01 3.3755409e+01 3.3327124e+01 3.2681786e+01 7.1418155e+01 7.8563788e+01 4.7609916e+01 5.5035600e+01 5.8803394e+01 4.7041921e+01 8.9730662e+01 5.9369596e+01 8.2276244e+01 5.9311760e+01 5.1959946e+01 5.5144398e+01 1.0407281e+02 5.3765407e+01 5.7204193e+01 5.5824577e+01 3.5466798e+01 5.5277068e+01 9.3734821e+01 4.1778564e+01 7.8431859e+01 9.8229008e+01 8.6720688e+01 4.4787941e+01 6.6553210e+01 5.4538544e+01 6.1711859e+01 9.6091532e+00 6.3808679e+01 6.0275593e+01 5.1841934e+01 4.7344755e+01 7.9149752e+01 6.8863368e+01 3.7408724e+01 8.2070373e+01 7.3168695e+01 5.4666265e+01 3.9998866e+01 3.5269416e+01 5.1152135e+01 3.2624329e+01 3.4802286e+01 4.3722568e+01 2.2873770e+01 3.8903062e+01 3.7558093e+01 3.5362959e+01 - 5.7306925e+01 2.5637755e+01 5.0892962e+01 6.8249059e+01 4.7580645e+01 7.4106692e+01 4.8903452e+01 7.5087125e+01 5.4925103e+01 4.6125722e+01 5.3225160e+01 4.1225834e+01 7.6727630e+01 2.6802655e+01 9.3384687e+01 4.3658039e+01 7.0950658e+01 6.0544442e+01 7.5128735e+01 7.9000932e+01 5.3231491e+01 6.9318618e+01 7.0161825e+01 7.0129011e+01 1.1521071e+01 5.3193030e+01 5.2595978e+01 5.6533270e+01 0.0000000e+00 3.6935434e+01 1.7428093e+01 4.3917875e+01 4.4891030e+01 6.1412319e+01 7.7330730e+01 6.4978037e+01 6.5481968e+01 3.7745026e+01 5.4052075e+01 6.5130989e+01 5.7876867e+01 4.4793281e+01 4.4824655e+01 3.8249104e+01 4.9965971e+01 3.9150446e+01 4.1296862e+01 5.9333438e+01 1.0077950e+02 1.1109546e+02 7.7430075e+01 9.4573649e+01 1.0195057e+02 8.2119441e+01 1.0766410e+02 1.0877310e+02 9.5175089e+01 7.8922423e+01 1.0060733e+02 1.0815046e+02 1.0533450e+02 9.7215576e+01 1.0201786e+02 7.9890178e+01 7.5121782e+01 1.1073795e+02 9.0623492e+01 8.9279250e+01 9.0060605e+01 1.0350789e+02 8.6124905e+01 9.9827078e+01 1.0276313e+02 6.3287730e+01 7.1809390e+01 6.4712887e+01 1.0537403e+02 9.6807072e+01 9.0342018e+01 8.4276986e+01 1.0170041e+02 7.5806041e+01 8.7376452e+01 9.3789146e+01 8.4882831e+01 1.0365755e+02 9.0876322e+01 7.5518678e+01 9.0942807e+01 6.2388803e+01 6.0813122e+01 6.9877558e+01 7.1881310e+01 8.2005994e+01 7.5541363e+01 7.4039221e+01 - 8.7164629e+01 5.7107365e+01 7.2045649e+01 9.0435679e+01 7.5609062e+01 9.1201781e+01 6.8916398e+01 9.1941749e+01 7.3478218e+01 6.4492768e+01 7.5526180e+01 6.2326199e+01 8.7392955e+01 5.5202301e+01 1.0214524e+02 6.5696299e+01 8.3570014e+01 7.4247241e+01 7.7535154e+01 8.7363482e+01 6.8076236e+01 6.6918178e+01 7.1469701e+01 7.2219470e+01 3.8968244e+01 5.3846874e+01 4.5422974e+01 5.4243712e+01 3.6935434e+01 0.0000000e+00 3.9262906e+01 1.4612871e+01 3.0724467e+01 4.4203138e+01 6.8164405e+01 4.1650879e+01 3.7164953e+01 2.7745731e+01 3.9873072e+01 4.2622079e+01 2.8600087e+01 5.4049783e+01 5.1102441e+01 5.0576833e+01 5.9530021e+01 5.9400058e+01 5.9582715e+01 7.4772907e+01 1.1106761e+02 1.0731118e+02 8.6518991e+01 1.0557392e+02 1.0710876e+02 9.5866489e+01 1.0636702e+02 1.1356669e+02 9.8192095e+01 8.4098345e+01 1.0420223e+02 1.0496612e+02 1.0636027e+02 9.6223383e+01 1.0780220e+02 8.4670294e+01 8.5871838e+01 1.0726744e+02 8.8456598e+01 9.4411305e+01 9.1493412e+01 9.3169626e+01 8.2978435e+01 9.3652926e+01 9.4595606e+01 5.9227921e+01 6.1126387e+01 6.0259295e+01 9.5792437e+01 7.5287109e+01 8.4107916e+01 6.2648127e+01 8.2604636e+01 5.8050044e+01 7.6478565e+01 7.0419272e+01 5.8597665e+01 8.5477850e+01 7.3323752e+01 5.3456620e+01 6.5561451e+01 6.4752283e+01 6.1467578e+01 7.0557396e+01 7.3715465e+01 8.4404824e+01 7.9571984e+01 8.3640239e+01 - 4.7993485e+01 2.7853351e+01 3.6292241e+01 5.8618060e+01 4.0807549e+01 6.1644361e+01 4.5616303e+01 6.9839849e+01 4.6201267e+01 3.1610528e+01 4.7255308e+01 4.0975001e+01 7.0138262e+01 1.9858472e+01 8.5802843e+01 2.8925444e+01 5.8212816e+01 5.9152649e+01 6.6546426e+01 7.0107547e+01 4.3635022e+01 6.5706216e+01 6.1255478e+01 6.6238469e+01 1.5274460e+01 3.9127582e+01 4.1794531e+01 4.4391941e+01 1.7428093e+01 3.9262906e+01 0.0000000e+00 4.1073183e+01 4.6341661e+01 5.3668839e+01 7.1503188e+01 6.2540471e+01 6.1545007e+01 4.1908215e+01 5.1762566e+01 5.9033747e+01 5.6751837e+01 2.7595363e+01 2.7670087e+01 2.0985902e+01 3.7499021e+01 2.6989173e+01 2.6487927e+01 4.5833325e+01 8.3837635e+01 9.4129687e+01 6.0312738e+01 7.9664351e+01 8.5386028e+01 6.8332636e+01 9.1807514e+01 9.5671126e+01 7.9398059e+01 6.1861883e+01 8.5134676e+01 9.2689013e+01 9.2337078e+01 8.0233867e+01 9.2341718e+01 6.2580960e+01 6.1496502e+01 9.7149071e+01 7.8969056e+01 7.8033116e+01 7.4560518e+01 9.1652285e+01 7.3874298e+01 8.8733644e+01 8.6329260e+01 4.8601012e+01 5.8605250e+01 5.1448595e+01 8.9142305e+01 8.4108348e+01 7.3748754e+01 7.2284888e+01 8.8946943e+01 6.5206601e+01 7.9069231e+01 8.4114807e+01 7.6240617e+01 9.0602118e+01 7.9960035e+01 6.6943590e+01 8.1393721e+01 4.5264620e+01 4.3830826e+01 5.2750346e+01 5.6672269e+01 6.5322671e+01 5.8543878e+01 5.8623192e+01 - 8.6826846e+01 6.3980548e+01 6.8388971e+01 8.5622600e+01 7.4186085e+01 8.4242550e+01 7.5122653e+01 8.6473369e+01 7.6556924e+01 6.3834262e+01 7.2154847e+01 6.1142704e+01 9.1599977e+01 5.5580855e+01 9.3407941e+01 6.4341948e+01 7.5355494e+01 7.0238299e+01 7.9794168e+01 7.8469516e+01 7.0670444e+01 7.2647859e+01 7.3413625e+01 6.4398033e+01 4.5797406e+01 5.1132910e+01 4.4099006e+01 4.3142537e+01 4.3917875e+01 1.4612871e+01 4.1073183e+01 0.0000000e+00 4.0144586e+01 4.3385949e+01 5.6990097e+01 4.5399698e+01 3.7005815e+01 2.7741798e+01 3.0932512e+01 2.8932467e+01 1.9298585e+01 4.8206198e+01 4.5175018e+01 4.7605712e+01 5.1917268e+01 5.5846457e+01 5.5476944e+01 6.8042239e+01 1.0294522e+02 9.7642298e+01 7.8400401e+01 9.6148230e+01 9.6446954e+01 8.7543276e+01 9.9925622e+01 1.0213735e+02 9.2919919e+01 7.7382599e+01 9.2715919e+01 9.2002429e+01 1.0400541e+02 8.4917268e+01 9.7490690e+01 7.7109932e+01 7.6902777e+01 9.4046672e+01 8.7141006e+01 8.3795222e+01 8.6408622e+01 8.9751649e+01 8.0899273e+01 8.0509011e+01 8.3801132e+01 5.4031153e+01 5.5512573e+01 4.8076928e+01 8.3870264e+01 6.2812438e+01 7.3008481e+01 4.9397756e+01 7.4076855e+01 5.3248387e+01 6.3625207e+01 6.4629659e+01 5.2241698e+01 7.1207115e+01 5.8758945e+01 3.8984579e+01 5.1541113e+01 5.6015702e+01 5.3060222e+01 6.2214013e+01 6.2697099e+01 7.3746499e+01 6.9846206e+01 7.4575014e+01 - 8.9450800e+01 5.1534015e+01 7.8297567e+01 1.0431133e+02 8.7058021e+01 1.0495595e+02 5.1126575e+01 1.1302993e+02 5.8439709e+01 6.0015829e+01 9.2489658e+01 8.2112080e+01 6.3640304e+01 6.5781498e+01 1.2543792e+02 6.6368234e+01 9.9533930e+01 9.8094075e+01 5.4282470e+01 1.0947134e+02 5.2590572e+01 3.8237412e+01 4.9180208e+01 9.9229976e+01 3.9306336e+01 4.6023449e+01 3.4233565e+01 7.4226505e+01 4.4891030e+01 3.0724467e+01 4.6341661e+01 4.0144586e+01 0.0000000e+00 3.0272674e+01 9.5939467e+01 2.2917078e+01 2.9877011e+01 5.6734741e+01 6.9281679e+01 6.8355593e+01 5.6955026e+01 6.1657959e+01 5.7422302e+01 5.3606933e+01 7.6917980e+01 7.2070078e+01 6.9758020e+01 8.8234022e+01 1.1360205e+02 1.0592600e+02 9.1682733e+01 1.1780250e+02 1.1641483e+02 1.0928947e+02 9.7062394e+01 1.3179108e+02 8.8546930e+01 8.1552657e+01 1.1772343e+02 1.1894697e+02 8.8587059e+01 1.0360279e+02 1.3026015e+02 8.4341206e+01 1.0125620e+02 1.2587120e+02 6.9163100e+01 1.1517750e+02 8.1427241e+01 7.6304109e+01 6.5538900e+01 1.1634681e+02 9.6211058e+01 5.3172580e+01 5.3293487e+01 7.8695557e+01 1.0066185e+02 8.2698765e+01 8.8753434e+01 7.3900288e+01 7.8093994e+01 4.8505894e+01 1.0227612e+02 6.2395659e+01 5.4758348e+01 9.9826122e+01 9.3895808e+01 7.5764543e+01 8.3068286e+01 7.1207662e+01 6.6374351e+01 7.2718682e+01 8.8358051e+01 9.4128108e+01 8.7701997e+01 9.5869548e+01 - 9.0759728e+01 6.5622598e+01 7.4588337e+01 1.0323358e+02 9.1260218e+01 9.9403246e+01 5.8711718e+01 1.1503806e+02 5.7641333e+01 5.5627407e+01 9.6049374e+01 9.0691351e+01 6.0186698e+01 7.2631866e+01 1.2259749e+02 6.4011360e+01 9.3171369e+01 1.0416169e+02 4.3062930e+01 1.0596240e+02 4.9827064e+01 3.7756507e+01 3.7147710e+01 1.0092433e+02 5.4280681e+01 3.0427920e+01 1.6620632e+01 6.7169909e+01 6.1412319e+01 4.4203138e+01 5.3668839e+01 4.3385949e+01 3.0272674e+01 0.0000000e+00 9.3051646e+01 2.0437615e+01 2.0499081e+01 6.8468537e+01 7.2271206e+01 6.3370072e+01 5.9812718e+01 5.4198519e+01 4.8620306e+01 4.8855335e+01 7.3447926e+01 7.2825096e+01 6.7848276e+01 8.3203321e+01 9.5898721e+01 7.9292828e+01 7.6385176e+01 1.0551028e+02 9.8613050e+01 1.0053864e+02 7.1099405e+01 1.1972673e+02 6.5745816e+01 6.1813107e+01 1.0186325e+02 1.0002936e+02 6.7003391e+01 8.2284954e+01 1.2372613e+02 6.4667872e+01 9.2876653e+01 1.1043259e+02 4.7880961e+01 1.0727730e+02 5.8152859e+01 4.9533727e+01 4.2673913e+01 1.0497580e+02 6.9309550e+01 3.0972761e+01 2.5448103e+01 6.7945331e+01 7.4576837e+01 5.7689374e+01 6.4667382e+01 5.2537619e+01 4.8227120e+01 1.8293957e+01 9.4765509e+01 3.4735352e+01 2.9839078e+01 7.8603489e+01 7.9217141e+01 6.5100363e+01 6.6808938e+01 5.5683274e+01 4.9894671e+01 5.3215347e+01 7.5563470e+01 7.7061780e+01 7.1366782e+01 8.4797970e+01 - 9.6393581e+01 9.8239915e+01 7.6054362e+01 7.0982649e+01 7.4103818e+01 6.7060876e+01 1.1602357e+02 5.6332014e+01 1.1266301e+02 9.0673540e+01 6.0628290e+01 5.6377768e+01 1.3486426e+02 6.9853296e+01 4.8778172e+01 8.4109176e+01 5.5483376e+01 4.5993644e+01 1.2438168e+02 4.0627424e+01 1.0857800e+02 1.2436536e+02 1.1814093e+02 2.3616375e+01 8.3602854e+01 8.7770845e+01 8.8729481e+01 3.5523055e+01 7.7330730e+01 6.8164405e+01 7.1503188e+01 5.6990097e+01 9.5939467e+01 9.3051646e+01 0.0000000e+00 1.0059809e+02 8.9912255e+01 4.9656484e+01 2.9336249e+01 3.3906344e+01 4.7577437e+01 6.4982645e+01 6.6371353e+01 7.3260527e+01 4.5865345e+01 6.1332238e+01 6.4404100e+01 5.9564981e+01 1.0109170e+02 1.0678866e+02 7.9824299e+01 7.5516960e+01 8.1953201e+01 6.8101255e+01 1.2188172e+02 6.4507851e+01 1.1626094e+02 9.3673754e+01 6.9311043e+01 6.8581609e+01 1.3785670e+02 7.9344669e+01 5.1224432e+01 8.9607900e+01 5.6643313e+01 5.7739569e+01 1.2650339e+02 4.4693495e+01 1.1233303e+02 1.2790772e+02 1.1931107e+02 3.5977929e+01 9.2715874e+01 8.7307277e+01 9.1783288e+01 3.8042558e+01 8.6745306e+01 7.6235500e+01 7.9410146e+01 6.3085736e+01 1.0227039e+02 9.5093980e+01 1.5536014e+01 1.0370237e+02 9.2611777e+01 6.2566887e+01 3.9204363e+01 3.7027724e+01 5.3964274e+01 6.7351614e+01 6.9447778e+01 7.7661295e+01 5.0662708e+01 6.7253595e+01 6.8996113e+01 6.2586984e+01 - 1.0435565e+02 7.1606701e+01 8.9850722e+01 1.1700132e+02 1.0275462e+02 1.1481049e+02 6.6210228e+01 1.2584164e+02 6.9868131e+01 7.0939863e+01 1.0694863e+02 9.8119890e+01 6.9356174e+01 8.2322869e+01 1.3441578e+02 7.8728554e+01 1.0815683e+02 1.1181763e+02 5.4351116e+01 1.1822097e+02 6.2679858e+01 3.9570809e+01 4.9373025e+01 1.0871345e+02 5.9253852e+01 4.8917263e+01 3.4597118e+01 7.9699047e+01 6.4978037e+01 4.1650879e+01 6.2540471e+01 4.5399698e+01 2.2917078e+01 2.0437615e+01 1.0059809e+02 0.0000000e+00 1.3629020e+01 6.9115905e+01 7.6281485e+01 6.8881764e+01 5.9620861e+01 6.9888862e+01 6.4656170e+01 6.3778602e+01 8.6417511e+01 8.5208859e+01 8.1621352e+01 9.8107091e+01 1.1588335e+02 9.9038910e+01 9.5475669e+01 1.2320446e+02 1.1763058e+02 1.1702341e+02 9.0310685e+01 1.3563589e+02 8.5348313e+01 8.2013410e+01 1.1956837e+02 1.1724547e+02 8.2906950e+01 1.0147087e+02 1.3688190e+02 8.4828134e+01 1.0858537e+02 1.2577905e+02 6.2819668e+01 1.2120491e+02 7.7742444e+01 6.3038296e+01 5.9051070e+01 1.1756845e+02 8.8281839e+01 5.1208183e+01 4.5492558e+01 8.1775265e+01 9.2796689e+01 7.0519772e+01 8.3778701e+01 6.4770296e+01 6.2091949e+01 3.4709694e+01 1.0412493e+02 4.2990708e+01 3.6287810e+01 9.1631522e+01 9.0008306e+01 7.2940106e+01 7.4745598e+01 7.3985672e+01 6.8444173e+01 7.2892074e+01 9.1832837e+01 9.5485082e+01 8.9978561e+01 1.0181080e+02 - 1.0454727e+02 7.5675326e+01 8.7465872e+01 1.1275718e+02 1.0044687e+02 1.0949677e+02 7.3446734e+01 1.1971701e+02 7.5204177e+01 7.1831665e+01 1.0267272e+02 9.4048781e+01 7.8068869e+01 8.0638856e+01 1.2608744e+02 7.8357475e+01 1.0173552e+02 1.0570008e+02 6.1866263e+01 1.1018383e+02 6.7729220e+01 5.0836673e+01 5.6275628e+01 1.0011974e+02 6.1219331e+01 4.8539421e+01 3.4840814e+01 7.1088543e+01 6.5481968e+01 3.7164953e+01 6.1545007e+01 3.7005815e+01 2.9877011e+01 2.0499081e+01 8.9912255e+01 1.3629020e+01 0.0000000e+00 6.3083497e+01 6.6984065e+01 5.7211719e+01 4.9332509e+01 6.5775394e+01 6.0536561e+01 6.1721781e+01 8.0086855e+01 8.1582822e+01 7.8163896e+01 9.2917656e+01 1.1185687e+02 9.3838421e+01 9.0800417e+01 1.1672385e+02 1.1069702e+02 1.1100603e+02 8.8918545e+01 1.2670151e+02 8.4945764e+01 7.9243547e+01 1.1139259e+02 1.0768573e+02 8.6315296e+01 9.4037071e+01 1.2780618e+02 8.1154605e+01 1.0182820e+02 1.1532653e+02 6.7034873e+01 1.1239780e+02 7.7365163e+01 6.4675146e+01 6.2102098e+01 1.0645332e+02 8.1280556e+01 4.8804430e+01 4.2351410e+01 7.2528622e+01 8.4465588e+01 5.9285832e+01 7.6295351e+01 5.2781879e+01 5.5515525e+01 3.0855034e+01 9.2613979e+01 3.7380198e+01 2.7226279e+01 7.9570543e+01 7.7544733e+01 6.0408310e+01 6.1436143e+01 6.8303570e+01 6.3001418e+01 6.7935191e+01 8.3823007e+01 8.8327027e+01 8.3668375e+01 9.5495856e+01 - 8.3676824e+01 6.3093949e+01 6.9042411e+01 7.7048824e+01 6.4311290e+01 7.9845808e+01 8.3082093e+01 7.0894878e+01 8.6506131e+01 7.2003672e+01 5.9050232e+01 4.2764698e+01 1.0634879e+02 4.8124674e+01 8.1417932e+01 6.8231858e+01 7.1748386e+01 5.0294318e+01 9.8735991e+01 6.8847274e+01 8.2628616e+01 9.1249999e+01 9.2648793e+01 4.8676415e+01 4.6101039e+01 6.9373520e+01 6.5601520e+01 4.6036327e+01 3.7745026e+01 2.7745731e+01 4.1908215e+01 2.7741798e+01 5.6734741e+01 6.8468537e+01 4.9656484e+01 6.9115905e+01 6.3083497e+01 0.0000000e+00 2.1840287e+01 3.7992308e+01 2.7769734e+01 5.5921901e+01 5.5588956e+01 5.6159940e+01 4.9196139e+01 5.1403719e+01 5.5104378e+01 6.5607146e+01 1.1221889e+02 1.1656290e+02 8.7129576e+01 9.7461224e+01 1.0404759e+02 8.5890992e+01 1.2046590e+02 1.0088113e+02 1.1142614e+02 9.2439008e+01 9.7580754e+01 1.0044003e+02 1.2490720e+02 9.7745704e+01 8.9514437e+01 9.1424809e+01 7.5345087e+01 9.7708108e+01 1.0905483e+02 7.9003971e+01 1.0574212e+02 1.1490289e+02 1.0304964e+02 8.0697331e+01 1.0360734e+02 7.4651883e+01 7.9450914e+01 5.4359888e+01 1.0260378e+02 8.5725582e+01 9.0629358e+01 7.1160976e+01 1.0032028e+02 7.9697090e+01 6.1973149e+01 9.2269713e+01 7.9949382e+01 8.7535560e+01 6.9265283e+01 5.1596338e+01 6.9142826e+01 6.8444572e+01 6.7458391e+01 7.7802598e+01 6.8429207e+01 8.3230957e+01 7.9713970e+01 7.7298315e+01 - 8.8688989e+01 7.7504516e+01 6.9745558e+01 7.4330606e+01 6.8089089e+01 7.3561532e+01 9.5383270e+01 6.5466356e+01 9.5310960e+01 7.6980274e+01 5.9131149e+01 4.7637940e+01 1.1563136e+02 5.5913154e+01 6.8964262e+01 7.2490368e+01 6.3213261e+01 4.7715630e+01 1.0556208e+02 5.6797631e+01 9.0794983e+01 1.0136210e+02 9.9202633e+01 3.6267341e+01 6.0701775e+01 7.1880931e+01 6.9565659e+01 3.3898042e+01 5.4052075e+01 3.9873072e+01 5.1762566e+01 3.0932512e+01 6.9281679e+01 7.2271206e+01 2.9336249e+01 7.6281485e+01 6.6984065e+01 2.1840287e+01 0.0000000e+00 2.1150846e+01 2.2825254e+01 5.4798444e+01 5.4720687e+01 5.9109505e+01 4.3185493e+01 5.2843501e+01 5.5808376e+01 6.0628934e+01 1.0500554e+02 1.0746054e+02 8.0605082e+01 8.6994509e+01 9.2191592e+01 7.7264457e+01 1.1619494e+02 8.5381726e+01 1.0904964e+02 8.8555867e+01 8.3588960e+01 8.3995105e+01 1.2593270e+02 8.5728573e+01 7.4498794e+01 8.6252102e+01 6.5603903e+01 7.9257107e+01 1.1153619e+02 6.4282825e+01 1.0378636e+02 1.1442846e+02 1.0477680e+02 6.0780580e+01 9.3160429e+01 7.3964857e+01 7.7933264e+01 4.0511923e+01 9.0080118e+01 7.3294638e+01 8.0040787e+01 5.8486171e+01 9.3542787e+01 7.8870290e+01 4.0697482e+01 8.9180341e+01 7.6803025e+01 7.0057459e+01 4.9514600e+01 3.3919122e+01 5.2920146e+01 6.2442091e+01 6.2386742e+01 7.2252210e+01 5.6458040e+01 7.2359686e+01 7.0838910e+01 6.8322572e+01 - 9.6539756e+01 8.5928284e+01 7.4522848e+01 8.3775434e+01 7.9850742e+01 7.9246871e+01 9.8511095e+01 7.8881807e+01 9.6473002e+01 7.8461038e+01 7.2359735e+01 6.4623518e+01 1.1363484e+02 6.7070744e+01 7.7712357e+01 7.6328083e+01 6.7889425e+01 6.5043555e+01 1.0039680e+02 6.4721804e+01 9.0721398e+01 9.7446132e+01 9.3951046e+01 5.0110234e+01 6.8683779e+01 6.6717103e+01 6.3286074e+01 3.3664829e+01 6.5130989e+01 4.2622079e+01 5.9033747e+01 2.8932467e+01 6.8355593e+01 6.3370072e+01 3.3906344e+01 6.8881764e+01 5.7211719e+01 3.7992308e+01 2.1150846e+01 0.0000000e+00 2.0086302e+01 5.5140756e+01 5.3534314e+01 6.0319068e+01 4.9131775e+01 6.1347275e+01 6.1616862e+01 6.5856072e+01 1.0037992e+02 9.4648137e+01 7.7040555e+01 8.6728932e+01 8.6518243e+01 8.0104434e+01 1.0486678e+02 8.4500270e+01 1.0025673e+02 8.1763934e+01 7.8888197e+01 7.4799585e+01 1.1675052e+02 7.5938556e+01 7.9104045e+01 7.9350768e+01 6.8257572e+01 7.2657225e+01 1.0255259e+02 6.7111559e+01 9.4712919e+01 1.0157265e+02 9.5471505e+01 5.6288260e+01 7.8751609e+01 6.5561456e+01 6.6571381e+01 3.5630479e+01 7.5007526e+01 5.3694873e+01 6.7354589e+01 3.9190235e+01 7.6131235e+01 6.5933620e+01 3.7348497e+01 7.2993367e+01 6.0752721e+01 5.1833443e+01 3.3624698e+01 1.4041306e+01 3.2007171e+01 5.6987109e+01 5.6093410e+01 6.4540799e+01 5.2762740e+01 6.6034393e+01 6.5409575e+01 6.8142201e+01 - 1.0047059e+02 8.0598606e+01 8.1158182e+01 9.2648996e+01 8.3863980e+01 9.0935341e+01 9.3994660e+01 8.7448054e+01 9.5384330e+01 8.0987790e+01 7.8063998e+01 6.5806335e+01 1.1084145e+02 6.7588479e+01 9.0801454e+01 7.9909305e+01 8.0657632e+01 6.9589609e+01 9.8481985e+01 7.7868646e+01 8.9639383e+01 9.0889211e+01 9.2073852e+01 5.8942774e+01 6.2266503e+01 6.8884085e+01 6.2264219e+01 4.7117288e+01 5.7876867e+01 2.8600087e+01 5.6751837e+01 1.9298585e+01 5.6955026e+01 5.9812718e+01 4.7577437e+01 5.9620861e+01 4.9332509e+01 2.7769734e+01 2.2825254e+01 2.0086302e+01 0.0000000e+00 6.1870343e+01 5.9683698e+01 6.3669541e+01 5.8786639e+01 6.6458911e+01 6.7470380e+01 7.6201321e+01 1.1383933e+02 1.0785774e+02 8.9453138e+01 1.0209660e+02 1.0306601e+02 9.3748767e+01 1.1383682e+02 1.0231321e+02 1.0816185e+02 9.1424576e+01 9.6555993e+01 9.3874164e+01 1.2076120e+02 9.2154332e+01 9.4760961e+01 9.0175661e+01 8.2164856e+01 9.2265033e+01 1.0427827e+02 8.3216806e+01 1.0187157e+02 1.0436955e+02 9.7773028e+01 7.5339178e+01 9.2435756e+01 7.0173769e+01 7.0534545e+01 5.1567859e+01 9.0340173e+01 6.5872693e+01 8.1612685e+01 5.1965972e+01 8.3085018e+01 6.7078684e+01 5.5008291e+01 7.4423142e+01 6.1043594e+01 6.9541148e+01 5.3234161e+01 3.2548258e+01 4.6202748e+01 6.7876988e+01 6.5882701e+01 7.4991194e+01 6.8312718e+01 8.1412481e+01 7.9230647e+01 8.1988147e+01 - 4.6154401e+01 4.9473631e+01 2.3388137e+01 4.9561743e+01 4.2469500e+01 4.5504234e+01 5.7883081e+01 6.5638121e+01 4.9879759e+01 2.6565197e+01 4.6667098e+01 5.0055634e+01 7.3541203e+01 3.2151511e+01 7.5215950e+01 2.3024534e+01 4.0840112e+01 6.2177963e+01 6.6336014e+01 5.8493290e+01 4.6340199e+01 7.3453568e+01 6.1017319e+01 6.3664056e+01 4.1612319e+01 3.0972228e+01 4.0101150e+01 3.0121698e+01 4.4793281e+01 5.4049783e+01 2.7595363e+01 4.8206198e+01 6.1657959e+01 5.4198519e+01 6.4982645e+01 6.9888862e+01 6.5775394e+01 5.5921901e+01 5.4798444e+01 5.5140756e+01 6.1870343e+01 0.0000000e+00 5.6894418e+00 1.1427661e+01 2.4957331e+01 2.3284527e+01 1.6217867e+01 2.9395898e+01 5.8527758e+01 6.9127688e+01 3.3940637e+01 5.6423089e+01 5.8538665e+01 4.8210476e+01 7.1713863e+01 7.4319396e+01 6.0511051e+01 3.8655863e+01 5.9728245e+01 6.7001213e+01 8.0363767e+01 5.2789428e+01 7.7381261e+01 3.7643086e+01 4.1549245e+01 7.4532526e+01 7.0705006e+01 6.0978281e+01 5.6680784e+01 8.1000270e+01 6.4511915e+01 7.1021637e+01 6.1845462e+01 3.4932940e+01 4.6729854e+01 3.2943589e+01 6.4162353e+01 6.7061418e+01 4.8332111e+01 5.7017105e+01 7.3951203e+01 5.7884326e+01 6.7363436e+01 7.6095625e+01 7.0206636e+01 7.0725217e+01 6.4092314e+01 5.7424034e+01 6.9284389e+01 1.8420882e+01 1.8803970e+01 2.7729220e+01 3.2570567e+01 3.8086074e+01 3.1022940e+01 3.4802325e+01 - 5.0340959e+01 4.9623651e+01 2.8398705e+01 5.5243650e+01 4.7563306e+01 5.0926480e+01 5.6214457e+01 7.0679830e+01 4.8389024e+01 2.6459940e+01 5.1803173e+01 5.3861268e+01 7.0598941e+01 3.5549363e+01 7.9662126e+01 2.5524556e+01 4.5861620e+01 6.6171204e+01 6.2219580e+01 6.2843684e+01 4.4063627e+01 6.8951705e+01 5.6702567e+01 6.6657741e+01 4.0835227e+01 2.6037993e+01 3.4672446e+01 3.1569028e+01 4.4824655e+01 5.1102441e+01 2.7670087e+01 4.5175018e+01 5.7422302e+01 4.8620306e+01 6.6371353e+01 6.4656170e+01 6.0536561e+01 5.5588956e+01 5.4720687e+01 5.3534314e+01 5.9683698e+01 5.6894418e+00 0.0000000e+00 1.0380400e+01 2.9181812e+01 2.8200187e+01 2.1466206e+01 3.4872347e+01 6.0461043e+01 6.7268487e+01 3.6146467e+01 6.0534000e+01 6.0831191e+01 5.3099211e+01 6.8920996e+01 7.7947185e+01 5.8105101e+01 3.7420171e+01 6.2467193e+01 6.8302891e+01 7.6889337e+01 5.3075874e+01 8.1469987e+01 3.6924963e+01 4.6217723e+01 7.6550982e+01 6.6363929e+01 6.4880140e+01 5.3713385e+01 7.6080252e+01 6.0028226e+01 7.2919459e+01 5.9413083e+01 2.9851677e+01 4.1365044e+01 3.3862930e+01 6.2155182e+01 6.3300314e+01 4.6429440e+01 5.3460926e+01 6.9081971e+01 5.2251313e+01 6.8468990e+01 7.0592546e+01 6.4775878e+01 6.8846572e+01 6.3158141e+01 5.5584097e+01 6.6540823e+01 1.7737496e+01 1.6330222e+01 2.5631860e+01 3.4951228e+01 3.9606411e+01 3.2501720e+01 3.8923846e+01 - 4.4285576e+01 3.9652271e+01 2.6093239e+01 5.5637259e+01 4.4121310e+01 5.3853965e+01 4.6651052e+01 7.2636306e+01 3.9751783e+01 1.8289264e+01 5.1306381e+01 5.2437131e+01 6.3660427e+01 3.0164603e+01 8.4686805e+01 1.8111630e+01 5.0614647e+01 6.7487636e+01 5.7631520e+01 6.8101842e+01 3.6083687e+01 6.3728469e+01 5.2385886e+01 7.1168834e+01 3.2788742e+01 2.4802844e+01 3.3684438e+01 3.9550273e+01 3.8249104e+01 5.0576833e+01 2.0985902e+01 4.7605712e+01 5.3606933e+01 4.8855335e+01 7.3260527e+01 6.3778602e+01 6.1721781e+01 5.6159940e+01 5.9109505e+01 6.0319068e+01 6.3669541e+01 1.1427661e+01 1.0380400e+01 0.0000000e+00 3.3886893e+01 2.6956040e+01 2.0487396e+01 3.8030821e+01 6.4555951e+01 7.3746488e+01 4.1412061e+01 6.6198638e+01 6.8104368e+01 5.7655724e+01 7.1991872e+01 8.5456569e+01 5.9656279e+01 4.0910624e+01 7.0550333e+01 7.7779008e+01 7.6032825e+01 6.1625982e+01 8.7892267e+01 4.1641428e+01 5.1898379e+01 8.5893940e+01 6.5055778e+01 7.1805291e+01 5.5275094e+01 7.7493060e+01 5.9402520e+01 8.1986989e+01 6.7358225e+01 3.2381996e+01 4.4614731e+01 4.3206163e+01 7.1073457e+01 7.2063001e+01 5.5165959e+01 6.2359408e+01 7.5057174e+01 5.5203622e+01 7.6838302e+01 7.4713710e+01 6.9178814e+01 7.8999963e+01 7.2927807e+01 6.3946232e+01 7.5410790e+01 2.6631633e+01 2.4993960e+01 3.2668166e+01 4.3952011e+01 4.8149269e+01 4.0531789e+01 4.5203214e+01 - 5.1578065e+01 6.1838867e+01 3.0199738e+01 3.5707758e+01 3.4687502e+01 3.2560299e+01 7.7870074e+01 4.2815039e+01 7.1916642e+01 4.8227011e+01 2.9246039e+01 3.4158612e+01 9.7364346e+01 3.1617554e+01 5.1324728e+01 3.9639897e+01 2.4076625e+01 3.9820453e+01 9.0932126e+01 3.4627852e+01 6.9429793e+01 9.5864018e+01 8.5462404e+01 4.0136851e+01 5.2503328e+01 5.5119789e+01 6.1863956e+01 1.7770434e+01 4.9965971e+01 5.9530021e+01 3.7499021e+01 5.1917268e+01 7.6917980e+01 7.3447926e+01 4.5865345e+01 8.6417511e+01 8.0086855e+01 4.9196139e+01 4.3185493e+01 4.9131775e+01 5.8786639e+01 2.4957331e+01 2.9181812e+01 3.3886893e+01 0.0000000e+00 1.7896549e+01 1.9384224e+01 1.7610451e+01 6.6743281e+01 8.3348803e+01 4.3088616e+01 4.8762894e+01 5.8087151e+01 3.7166683e+01 9.2062715e+01 5.8933764e+01 8.2109849e+01 5.8054527e+01 5.2703892e+01 6.1755484e+01 1.0438118e+02 5.8041098e+01 5.5492366e+01 5.4918332e+01 2.7166275e+01 6.2206605e+01 9.5247092e+01 4.0569100e+01 7.9066228e+01 1.0369478e+02 8.8806734e+01 5.4274374e+01 7.4455902e+01 5.7863800e+01 6.7941716e+01 2.4283494e+01 7.3222204e+01 7.5170264e+01 5.9367686e+01 6.3024786e+01 9.0274439e+01 7.7225904e+01 5.0197871e+01 9.3096765e+01 8.5050229e+01 7.0444391e+01 5.7050168e+01 5.2734347e+01 6.8736017e+01 3.3810924e+01 3.7096809e+01 4.5824891e+01 2.6118396e+01 4.0660805e+01 3.7542435e+01 2.8851031e+01 - 3.6247181e+01 4.6405612e+01 1.9323090e+01 3.2325050e+01 2.0884628e+01 3.5148145e+01 6.4281400e+01 4.6449207e+01 5.9445003e+01 3.7164194e+01 2.4360587e+01 2.9238995e+01 8.6706574e+01 1.5562061e+01 6.2226613e+01 2.6652246e+01 3.2648886e+01 4.3137673e+01 8.3634420e+01 4.6840469e+01 5.8405076e+01 8.8416961e+01 7.8681232e+01 5.1695881e+01 4.0778489e+01 5.1598060e+01 5.9307488e+01 3.3755409e+01 3.9150446e+01 5.9400058e+01 2.6989173e+01 5.5846457e+01 7.2070078e+01 7.2825096e+01 6.1332238e+01 8.5208859e+01 8.1582822e+01 5.1403719e+01 5.2843501e+01 6.1347275e+01 6.6458911e+01 2.3284527e+01 2.8200187e+01 2.6956040e+01 1.7896549e+01 0.0000000e+00 8.2169427e+00 2.0385948e+01 6.8706189e+01 8.9151551e+01 4.5900295e+01 5.6041856e+01 6.6803381e+01 4.3040098e+01 9.2926996e+01 7.2059990e+01 8.0650740e+01 5.8069466e+01 6.4642091e+01 7.5968021e+01 1.0059275e+02 6.7691906e+01 6.8595867e+01 5.6450670e+01 3.6975906e+01 7.8342028e+01 9.1418396e+01 5.4895509e+01 7.7719535e+01 1.0356426e+02 8.5789593e+01 7.1882667e+01 8.2553853e+01 5.7635237e+01 6.9420590e+01 4.0460201e+01 8.3466470e+01 8.6433004e+01 6.8146009e+01 7.4702999e+01 9.6594928e+01 7.9405682e+01 6.7468296e+01 9.7547614e+01 9.0187558e+01 8.5525868e+01 7.3607666e+01 6.6814148e+01 8.2614113e+01 3.8743360e+01 4.1039510e+01 4.9359789e+01 4.0078765e+01 5.0413846e+01 4.5015087e+01 3.7047602e+01 - 3.5128592e+01 4.5944026e+01 1.4163097e+01 3.5702052e+01 2.6309981e+01 3.5774832e+01 6.0480562e+01 5.2791515e+01 5.4009631e+01 3.0597714e+01 3.1600990e+01 3.7337598e+01 8.0845235e+01 2.0068270e+01 6.6609891e+01 2.0679239e+01 3.3358292e+01 5.0695354e+01 7.7140773e+01 5.0702209e+01 5.2593287e+01 8.3425024e+01 7.2247692e+01 5.7221443e+01 4.0724273e+01 4.4759887e+01 5.3614063e+01 3.3327124e+01 4.1296862e+01 5.9582715e+01 2.6487927e+01 5.5476944e+01 6.9758020e+01 6.7848276e+01 6.4404100e+01 8.1621352e+01 7.8163896e+01 5.5104378e+01 5.5808376e+01 6.1616862e+01 6.7470380e+01 1.6217867e+01 2.1466206e+01 2.0487396e+01 1.9384224e+01 8.2169427e+00 0.0000000e+00 2.0029281e+01 6.2392418e+01 8.1648284e+01 3.9176487e+01 5.3663077e+01 6.2112928e+01 4.2055465e+01 8.4759756e+01 7.1859318e+01 7.2434579e+01 4.9953181e+01 6.1601091e+01 7.2489894e+01 9.2641255e+01 6.1748864e+01 7.1347219e+01 4.8535625e+01 3.6428647e+01 7.6988423e+01 8.3916086e+01 5.6525828e+01 6.9535184e+01 9.6132819e+01 7.8263113e+01 7.2328916e+01 7.5573875e+01 5.0427209e+01 6.2604886e+01 3.8645809e+01 7.7136851e+01 8.1514007e+01 6.1491907e+01 7.0582970e+01 9.0109828e+01 7.3433931e+01 6.9028736e+01 9.1845269e+01 8.5295148e+01 8.1925918e+01 7.2100649e+01 6.5850801e+01 8.0296019e+01 3.1670941e+01 3.3848989e+01 4.1734659e+01 3.6783574e+01 4.5002407e+01 3.8824573e+01 3.3695883e+01 - 4.1129895e+01 6.4901037e+01 2.1423477e+01 2.2672919e+01 2.9057708e+01 1.6882116e+01 7.9098048e+01 4.0887234e+01 7.0715114e+01 4.6541967e+01 2.7322110e+01 4.1180775e+01 9.7373692e+01 3.5416152e+01 5.0590104e+01 3.6158750e+01 1.3773199e+01 4.6700224e+01 9.3169818e+01 3.5462899e+01 6.9680390e+01 1.0166964e+02 8.8452582e+01 5.1097294e+01 6.0284313e+01 5.9642931e+01 6.9494394e+01 3.2681786e+01 5.9333438e+01 7.4772907e+01 4.5833325e+01 6.8042239e+01 8.8234022e+01 8.3203321e+01 5.9564981e+01 9.8107091e+01 9.2917656e+01 6.5607146e+01 6.0628934e+01 6.5856072e+01 7.6201321e+01 2.9395898e+01 3.4872347e+01 3.8030821e+01 1.7610451e+01 2.0385948e+01 2.0029281e+01 0.0000000e+00 5.4828351e+01 8.0445060e+01 3.4237882e+01 3.5894934e+01 4.9088447e+01 2.2820187e+01 8.9168165e+01 5.3102876e+01 7.8281670e+01 5.3808275e+01 4.5932196e+01 5.9770684e+01 1.0254631e+02 5.4413593e+01 5.3665913e+01 5.0300967e+01 1.7332458e+01 6.2093134e+01 9.6504600e+01 3.9214844e+01 7.6779083e+01 1.0699474e+02 9.0574105e+01 5.9774339e+01 7.5020108e+01 6.2304803e+01 7.3945636e+01 3.5591159e+01 7.4516621e+01 8.4242118e+01 6.0388171e+01 7.3996040e+01 9.6981696e+01 8.5675733e+01 6.1846627e+01 1.0241424e+02 9.6149232e+01 7.8602716e+01 6.8407612e+01 6.7699649e+01 8.1917516e+01 3.5463505e+01 4.0205490e+01 4.6116525e+01 2.7676206e+01 3.6865270e+01 3.3608483e+01 1.8856141e+01 - 6.5772846e+01 9.6168465e+01 5.3357249e+01 6.5903399e+01 7.5828722e+01 5.3546524e+01 9.4489878e+01 9.0029370e+01 7.8772686e+01 6.1909692e+01 8.0435182e+01 9.5332790e+01 9.6173035e+01 8.0998310e+01 9.0515702e+01 6.0088958e+01 5.6130479e+01 1.0087487e+02 9.1024403e+01 7.9161891e+01 7.7895641e+01 1.0980183e+02 8.8677847e+01 1.0067356e+02 9.6007115e+01 6.8868779e+01 8.2264926e+01 7.1418155e+01 1.0077950e+02 1.1106761e+02 8.3837635e+01 1.0294522e+02 1.1360205e+02 9.5898721e+01 1.0109170e+02 1.1588335e+02 1.1185687e+02 1.1221889e+02 1.0500554e+02 1.0037992e+02 1.1383933e+02 5.8527758e+01 6.0461043e+01 6.4555951e+01 6.6743281e+01 6.8706189e+01 6.2392418e+01 5.4828351e+01 0.0000000e+00 4.5409029e+01 2.5143236e+01 3.7932063e+01 2.7298994e+01 4.6028762e+01 5.5951013e+01 6.4821119e+01 4.9388081e+01 3.5200422e+01 4.2764895e+01 5.3584623e+01 7.7913028e+01 3.4338370e+01 8.4525291e+01 3.1414789e+01 5.1440751e+01 6.9862663e+01 8.3022145e+01 7.1032999e+01 5.3312357e+01 9.1512353e+01 7.8697354e+01 8.3676762e+01 5.2856606e+01 6.5105321e+01 7.4269448e+01 6.6681220e+01 5.5801365e+01 8.5780522e+01 4.7128620e+01 8.4509761e+01 8.8309595e+01 8.9469368e+01 9.5646391e+01 1.0300875e+02 1.0375282e+02 8.3178408e+01 8.8564423e+01 9.5348356e+01 9.9595372e+01 4.7011571e+01 5.0752482e+01 4.4055912e+01 5.0797190e+01 3.5651268e+01 3.4988025e+01 4.0944063e+01 - 9.6875427e+01 1.0963604e+02 7.8596788e+01 9.9313789e+01 1.0414584e+02 8.6270973e+01 1.0160848e+02 1.1818494e+02 8.6924608e+01 7.4865373e+01 1.0731445e+02 1.1626628e+02 9.3987100e+01 1.0036033e+02 1.1498513e+02 7.9022842e+01 8.2881084e+01 1.2231388e+02 8.0791389e+01 1.0165821e+02 8.2492827e+01 9.8701469e+01 7.8392930e+01 1.1554337e+02 1.0475801e+02 6.3688383e+01 7.2114503e+01 7.8563788e+01 1.1109546e+02 1.0731118e+02 9.4129687e+01 9.7642298e+01 1.0592600e+02 7.9292828e+01 1.0678866e+02 9.9038910e+01 9.3838421e+01 1.1656290e+02 1.0746054e+02 9.4648137e+01 1.0785774e+02 6.9127688e+01 6.7268487e+01 7.3746488e+01 8.3348803e+01 8.9151551e+01 8.1648284e+01 8.0445060e+01 4.5409029e+01 0.0000000e+00 4.8437361e+01 7.1035882e+01 4.9941702e+01 7.8600054e+01 2.8110511e+01 8.7000869e+01 3.5673503e+01 3.6703760e+01 6.1890827e+01 5.7018571e+01 5.9046903e+01 3.3238106e+01 1.0709913e+02 3.5223532e+01 7.7586070e+01 7.7550512e+01 6.3653116e+01 9.1822319e+01 3.7417242e+01 6.0395258e+01 5.8948971e+01 9.0087438e+01 1.7755644e+01 5.3458601e+01 5.3938926e+01 7.1213224e+01 2.5778208e+01 5.6972177e+01 2.7825374e+01 6.3178216e+01 5.1615099e+01 6.5450461e+01 9.8445018e+01 7.1441556e+01 7.6346164e+01 6.3085613e+01 7.8985232e+01 8.5834302e+01 8.1184253e+01 5.1715158e+01 5.1450715e+01 4.1645673e+01 6.2576016e+01 4.6997828e+01 4.7318215e+01 6.5681765e+01 - 5.2744762e+01 7.6432928e+01 3.3374287e+01 5.1299297e+01 5.7304792e+01 3.9590500e+01 7.8609179e+01 7.3459123e+01 6.4831146e+01 4.3556315e+01 6.1019350e+01 7.3263305e+01 8.5681781e+01 5.8770990e+01 7.6397958e+01 4.0521673e+01 3.8732895e+01 8.0071045e+01 7.8939390e+01 6.2223889e+01 6.2770197e+01 9.3937428e+01 7.5194502e+01 7.9546304e+01 7.3474519e+01 4.9629653e+01 6.2424412e+01 4.7609916e+01 7.7430075e+01 8.6518991e+01 6.0312738e+01 7.8400401e+01 9.1682733e+01 7.6385176e+01 7.9824299e+01 9.5475669e+01 9.0800417e+01 8.7129576e+01 8.0605082e+01 7.7040555e+01 8.9453138e+01 3.3940637e+01 3.6146467e+01 4.1412061e+01 4.3088616e+01 4.5900295e+01 3.9176487e+01 3.4237882e+01 2.5143236e+01 4.8437361e+01 0.0000000e+00 3.3834276e+01 2.9150077e+01 3.4698380e+01 5.7710363e+01 5.9028617e+01 4.8468550e+01 2.4773915e+01 3.7787959e+01 4.8317201e+01 7.6181368e+01 2.9082411e+01 7.2956505e+01 1.9745807e+01 3.4930072e+01 6.1807949e+01 7.4923301e+01 5.7007464e+01 4.8785726e+01 8.3810327e+01 6.9285102e+01 6.9233101e+01 4.7757166e+01 4.7248534e+01 5.7947360e+01 4.4030092e+01 5.0015758e+01 7.1054914e+01 3.6121031e+01 6.6308649e+01 7.6976988e+01 7.2592918e+01 7.6418178e+01 8.7969991e+01 8.6082978e+01 6.9608382e+01 7.0477023e+01 7.3721694e+01 8.0702816e+01 2.3293255e+01 2.7941391e+01 2.4738298e+01 2.9831529e+01 1.8809777e+01 1.3385812e+01 2.2384678e+01 - 6.4045807e+01 9.7441444e+01 4.8970944e+01 4.1899934e+01 6.0407026e+01 2.6673365e+01 1.0618241e+02 5.8142848e+01 9.3888000e+01 7.0968399e+01 5.7422731e+01 7.4347205e+01 1.1754018e+02 7.0857064e+01 5.3995166e+01 6.3208887e+01 2.8027557e+01 7.3005802e+01 1.1215055e+02 4.5591541e+01 9.2939190e+01 1.2569576e+02 1.0820971e+02 7.1563061e+01 9.4191419e+01 8.0744170e+01 9.2353032e+01 5.5035600e+01 9.4573649e+01 1.0557392e+02 7.9664351e+01 9.6148230e+01 1.1780250e+02 1.0551028e+02 7.5516960e+01 1.2320446e+02 1.1672385e+02 9.7461224e+01 8.6994509e+01 8.6728932e+01 1.0209660e+02 5.6423089e+01 6.0534000e+01 6.6198638e+01 4.8762894e+01 5.6041856e+01 5.3663077e+01 3.5894934e+01 3.7932063e+01 7.1035882e+01 3.3834276e+01 0.0000000e+00 2.3349391e+01 1.5133053e+01 8.7414450e+01 3.0768265e+01 8.0308284e+01 5.8129141e+01 2.0839480e+01 4.0508039e+01 1.0896258e+02 4.1501114e+01 4.7577436e+01 5.2570230e+01 2.2769665e+01 4.5439629e+01 1.0869025e+02 3.6416565e+01 8.1599888e+01 1.1619944e+02 1.0295828e+02 5.6348601e+01 6.9828825e+01 7.8862037e+01 8.8830808e+01 5.1497568e+01 6.7261308e+01 8.9623667e+01 5.8250048e+01 8.3822228e+01 1.0354952e+02 1.0214686e+02 7.0776764e+01 1.1579512e+02 1.1217787e+02 7.7796221e+01 7.4275269e+01 8.3085905e+01 9.2111247e+01 4.9893603e+01 5.5775860e+01 5.5546766e+01 3.5231043e+01 3.2140273e+01 3.5447865e+01 2.2154779e+01 - 7.6005332e+01 1.0411343e+02 5.7914155e+01 6.1874190e+01 7.6214608e+01 4.6412921e+01 1.0773656e+02 7.8254649e+01 9.3853962e+01 7.2578127e+01 7.4832884e+01 8.9211093e+01 1.1336450e+02 8.1699327e+01 7.1776886e+01 6.8424787e+01 4.4512797e+01 8.9480392e+01 1.0516427e+02 6.1882723e+01 9.1640876e+01 1.2053682e+02 1.0146341e+02 8.4206890e+01 9.9699057e+01 7.5600190e+01 8.6924168e+01 5.8803394e+01 1.0195057e+02 1.0710876e+02 8.5386028e+01 9.6446954e+01 1.1641483e+02 9.8613050e+01 8.1953201e+01 1.1763058e+02 1.1069702e+02 1.0404759e+02 9.2191592e+01 8.6518243e+01 1.0306601e+02 5.8538665e+01 6.0831191e+01 6.8104368e+01 5.8087151e+01 6.6803381e+01 6.2112928e+01 4.9088447e+01 2.7298994e+01 4.9941702e+01 2.9150077e+01 2.3349391e+01 0.0000000e+00 3.5503890e+01 7.0143515e+01 4.0501717e+01 6.6475171e+01 4.7462492e+01 1.6466726e+01 2.7711833e+01 9.5740477e+01 2.1647852e+01 6.2724689e+01 4.1368129e+01 3.8079041e+01 4.2826678e+01 9.7174657e+01 4.9912574e+01 6.8269597e+01 1.0134099e+02 9.1423475e+01 5.8763307e+01 4.9987393e+01 7.0492988e+01 7.8176260e+01 5.2208333e+01 4.7258323e+01 7.5456498e+01 4.1305986e+01 7.3162343e+01 8.7291078e+01 9.1472274e+01 7.4061194e+01 1.0269317e+02 1.0115382e+02 6.5111336e+01 6.8742431e+01 7.9801455e+01 8.4033637e+01 4.5220263e+01 5.0226228e+01 4.6342119e+01 3.5929855e+01 2.2980549e+01 2.8753918e+01 3.0511279e+01 - 5.3350209e+01 8.5957441e+01 3.8443894e+01 2.7328013e+01 4.5961673e+01 1.1734989e+01 9.7699857e+01 4.4895970e+01 8.7011270e+01 6.3409241e+01 4.2329832e+01 5.9693799e+01 1.1258412e+02 5.7502273e+01 4.5998877e+01 5.3951513e+01 1.4711478e+01 5.9227217e+01 1.0825185e+02 3.5592947e+01 8.6390775e+01 1.1981322e+02 1.0402304e+02 6.0724614e+01 8.2721759e+01 7.5810770e+01 8.6937017e+01 4.7041921e+01 8.2119441e+01 9.5866489e+01 6.8332636e+01 8.7543276e+01 1.0928947e+02 1.0053864e+02 6.8101255e+01 1.1702341e+02 1.1100603e+02 8.5890992e+01 7.7264457e+01 8.0104434e+01 9.3748767e+01 4.8210476e+01 5.3099211e+01 5.7655724e+01 3.7166683e+01 4.3040098e+01 4.2055465e+01 2.2820187e+01 4.6028762e+01 7.8600054e+01 3.4698380e+01 1.5133053e+01 3.5503890e+01 0.0000000e+00 9.2048534e+01 3.6096074e+01 8.3005184e+01 5.9222479e+01 3.1182225e+01 4.9469151e+01 1.1033135e+02 4.9241787e+01 4.3973479e+01 5.4311461e+01 1.2016934e+01 5.1353516e+01 1.0788823e+02 3.1780046e+01 8.3323468e+01 1.1704118e+02 1.0207985e+02 5.6086891e+01 7.5691703e+01 7.5953935e+01 8.6913767e+01 4.6041436e+01 7.3729261e+01 9.1113743e+01 6.2391236e+01 8.3137290e+01 1.0533427e+02 9.9757479e+01 6.6376708e+01 1.1485793e+02 1.0993197e+02 8.0700364e+01 7.3336208e+01 7.8833685e+01 9.0628196e+01 4.6589183e+01 5.2407318e+01 5.4728100e+01 3.1941349e+01 3.5113345e+01 3.5953027e+01 1.6839639e+01 - 9.4392866e+01 1.0103088e+02 8.0416696e+01 1.0741732e+02 1.0705531e+02 9.7162291e+01 8.6494671e+01 1.2965669e+02 7.1869304e+01 6.7761578e+01 1.1409052e+02 1.2145736e+02 7.2019935e+01 1.0065355e+02 1.3163101e+02 7.5585444e+01 9.5417979e+01 1.3178136e+02 5.9835051e+01 1.1680796e+02 6.7732633e+01 8.0496206e+01 5.9211945e+01 1.2858685e+02 9.9039662e+01 5.5811505e+01 6.3810936e+01 8.9730662e+01 1.0766410e+02 1.0636702e+02 9.1807514e+01 9.9925622e+01 9.7062394e+01 7.1099405e+01 1.2188172e+02 9.0310685e+01 8.8918545e+01 1.2046590e+02 1.1619494e+02 1.0486678e+02 1.1383682e+02 7.1713863e+01 6.8920996e+01 7.1991872e+01 9.2062715e+01 9.2926996e+01 8.4759756e+01 8.9168165e+01 5.5951013e+01 2.8110511e+01 5.7710363e+01 8.7414450e+01 7.0143515e+01 9.2048534e+01 0.0000000e+00 1.0853047e+02 1.5963522e+01 3.5701695e+01 8.3269712e+01 8.1944563e+01 3.1389658e+01 5.5437618e+01 1.2630646e+02 3.8980789e+01 9.1428313e+01 1.0171698e+02 4.0275395e+01 1.0998207e+02 1.8576102e+01 4.1266755e+01 3.7814183e+01 1.1148748e+02 3.8327219e+01 4.7391332e+01 4.7299198e+01 8.4565589e+01 4.9214542e+01 6.9594602e+01 4.5646270e+01 7.4933823e+01 5.2129829e+01 5.8820845e+01 1.1627446e+02 6.7010422e+01 7.4539303e+01 8.3372986e+01 9.7170202e+01 9.8636216e+01 9.5137271e+01 5.8559757e+01 5.6308062e+01 4.6602823e+01 7.7480851e+01 6.3500761e+01 6.0193919e+01 7.8725832e+01 - 8.9265690e+01 1.1768577e+02 7.2214482e+01 5.7679007e+01 7.7567057e+01 4.4773920e+01 1.2975010e+02 5.8060659e+01 1.1905736e+02 9.4888232e+01 6.7941583e+01 8.1847750e+01 1.4271833e+02 8.7059704e+01 4.0268016e+01 8.6742108e+01 4.0135992e+01 7.2656462e+01 1.3491906e+02 3.8969027e+01 1.1707424e+02 1.4580296e+02 1.3020762e+02 6.3844176e+01 1.1084339e+02 1.0020111e+02 1.0926348e+02 5.9369596e+01 1.0877310e+02 1.1356669e+02 9.5671126e+01 1.0213735e+02 1.3179108e+02 1.1972673e+02 6.4507851e+01 1.3563589e+02 1.2670151e+02 1.0088113e+02 8.5381726e+01 8.4500270e+01 1.0231321e+02 7.4319396e+01 7.7947185e+01 8.5456569e+01 5.8933764e+01 7.2059990e+01 7.1859318e+01 5.3102876e+01 6.4821119e+01 8.7000869e+01 5.9028617e+01 3.0768265e+01 4.0501717e+01 3.6096074e+01 1.0853047e+02 0.0000000e+00 1.0408133e+02 8.1752625e+01 2.5407050e+01 3.5504687e+01 1.3274740e+02 5.4387906e+01 2.6515160e+01 7.5637321e+01 3.5841672e+01 2.5301003e+01 1.3068480e+02 2.3457445e+01 1.0446853e+02 1.3432233e+02 1.2420588e+02 3.6521559e+01 8.1680689e+01 9.7091350e+01 1.0480980e+02 5.4909673e+01 7.5137501e+01 9.2295808e+01 7.0513206e+01 8.6103942e+01 1.1361843e+02 1.1559209e+02 5.6656632e+01 1.2604334e+02 1.2072524e+02 7.2716814e+01 6.5823919e+01 7.9397511e+01 8.7855616e+01 6.7513853e+01 7.3061762e+01 7.4517200e+01 4.4441865e+01 4.7960155e+01 5.4296042e+01 4.1985123e+01 - 7.9375894e+01 8.6715677e+01 6.7071619e+01 9.5528176e+01 9.3585225e+01 8.6707190e+01 7.2449251e+01 1.1915489e+02 5.7090180e+01 5.3143569e+01 1.0201866e+02 1.0952215e+02 6.0401281e+01 8.7417147e+01 1.2378920e+02 6.1206851e+01 8.5996821e+01 1.2123397e+02 5.0592274e+01 1.0859467e+02 5.3604457e+01 7.2249528e+01 4.9816827e+01 1.2042963e+02 8.6268166e+01 4.5270283e+01 5.5454576e+01 8.2276244e+01 9.5175089e+01 9.8192095e+01 7.9398059e+01 9.2919919e+01 8.8546930e+01 6.5745816e+01 1.1626094e+02 8.5348313e+01 8.4945764e+01 1.1142614e+02 1.0904964e+02 1.0025673e+02 1.0816185e+02 6.0511051e+01 5.8105101e+01 5.9656279e+01 8.2109849e+01 8.0650740e+01 7.2434579e+01 7.8281670e+01 4.9388081e+01 3.5673503e+01 4.8468550e+01 8.0308284e+01 6.6475171e+01 8.3005184e+01 1.5963522e+01 1.0408133e+02 0.0000000e+00 2.4877500e+01 7.9507931e+01 8.1554863e+01 2.9329579e+01 5.4245077e+01 1.2004398e+02 2.9836958e+01 8.2760613e+01 1.0019675e+02 3.5826874e+01 1.0350722e+02 7.6484558e+00 4.5178290e+01 3.2984243e+01 1.0850877e+02 4.3693052e+01 3.9357517e+01 4.3341369e+01 7.8423075e+01 5.4164909e+01 7.3099045e+01 4.5781249e+01 7.5339716e+01 5.8275767e+01 5.7065756e+01 1.1235076e+02 6.9717578e+01 7.5214809e+01 8.6011287e+01 9.6204784e+01 9.5848226e+01 9.5507502e+01 4.9923707e+01 4.7737804e+01 3.8685780e+01 7.0881045e+01 5.8046378e+01 5.3059464e+01 7.0128878e+01 - 6.1959792e+01 7.4334127e+01 4.5211911e+01 7.2091760e+01 7.1807128e+01 6.2694151e+01 6.8118857e+01 9.4584567e+01 5.3067906e+01 3.8689087e+01 7.8495935e+01 8.6959395e+01 6.7337787e+01 6.7141660e+01 9.9038009e+01 4.3039191e+01 6.1247392e+01 9.7254380e+01 5.8231450e+01 8.3758590e+01 4.9565379e+01 7.5903408e+01 5.5129436e+01 9.6398440e+01 7.1925755e+01 3.5651657e+01 4.8565712e+01 5.9311760e+01 7.8922423e+01 8.4098345e+01 6.1861883e+01 7.7382599e+01 8.1552657e+01 6.1813107e+01 9.3673754e+01 8.2013410e+01 7.9243547e+01 9.2439008e+01 8.8555867e+01 8.1763934e+01 9.1424576e+01 3.8655863e+01 3.7420171e+01 4.0910624e+01 5.8054527e+01 5.8069466e+01 4.9953181e+01 5.3808275e+01 3.5200422e+01 3.6703760e+01 2.4773915e+01 5.8129141e+01 4.7462492e+01 5.9222479e+01 3.5701695e+01 8.1752625e+01 2.4877500e+01 0.0000000e+00 5.8401382e+01 6.3037262e+01 5.1758521e+01 3.7082270e+01 9.5891957e+01 6.3184686e+00 5.8120596e+01 7.9620474e+01 5.0866002e+01 7.9235657e+01 2.4119668e+01 6.0217497e+01 4.5505352e+01 8.6377255e+01 3.8346156e+01 3.0860967e+01 4.0266134e+01 5.5717664e+01 4.5677084e+01 6.4677106e+01 3.1940341e+01 6.2905371e+01 6.0675141e+01 5.5880038e+01 9.0356550e+01 7.1393222e+01 7.2480230e+01 7.2182184e+01 7.7920918e+01 7.8064704e+01 8.1351795e+01 2.6757072e+01 2.6252707e+01 1.7315956e+01 4.6877048e+01 3.5267684e+01 2.9090492e+01 4.5584481e+01 - 7.9729499e+01 1.0645554e+02 6.0271815e+01 5.7918849e+01 7.4115879e+01 4.2289280e+01 1.1377169e+02 6.8300622e+01 1.0141059e+02 7.8339848e+01 6.9081680e+01 8.2790678e+01 1.2265740e+02 8.0167195e+01 5.7907829e+01 7.2558873e+01 3.7594900e+01 7.9639061e+01 1.1389652e+02 4.9300788e+01 9.8911831e+01 1.2685206e+02 1.0954360e+02 7.1924521e+01 1.0016763e+02 8.1053159e+01 9.1042842e+01 5.1959946e+01 1.0060733e+02 1.0420223e+02 8.5134676e+01 9.2715919e+01 1.1772343e+02 1.0186325e+02 6.9311043e+01 1.1956837e+02 1.1139259e+02 9.7580754e+01 8.3588960e+01 7.8888197e+01 9.6555993e+01 5.9728245e+01 6.2467193e+01 7.0550333e+01 5.2703892e+01 6.4642091e+01 6.1601091e+01 4.5932196e+01 4.2764895e+01 6.1890827e+01 3.7787959e+01 2.0839480e+01 1.6466726e+01 3.1182225e+01 8.3269712e+01 2.5407050e+01 7.9507931e+01 5.8401382e+01 0.0000000e+00 1.9741427e+01 1.0835614e+02 2.9520301e+01 4.7515131e+01 5.2127110e+01 3.0993582e+01 2.8044406e+01 1.0747255e+02 3.5380664e+01 8.0199825e+01 1.1073770e+02 1.0117765e+02 4.3594949e+01 5.7849663e+01 7.6479979e+01 8.3875021e+01 4.5348449e+01 5.2619886e+01 7.5195545e+01 4.7256684e+01 7.0993111e+01 9.2340663e+01 9.5792451e+01 6.0768747e+01 1.0641782e+02 1.0298117e+02 6.0164359e+01 5.9590555e+01 7.2271888e+01 7.8080617e+01 4.8444228e+01 5.3820136e+01 5.2797366e+01 3.0584418e+01 2.5746767e+01 3.3051142e+01 2.8383940e+01 - 9.5236435e+01 1.1610303e+02 7.3484970e+01 7.4883336e+01 8.8772499e+01 5.9668141e+01 1.2183378e+02 8.1811251e+01 1.0972274e+02 8.7473086e+01 8.2874608e+01 9.3607204e+01 1.2826227e+02 9.1208528e+01 6.8279029e+01 8.3600240e+01 5.2491929e+01 8.9683940e+01 1.1667103e+02 5.9852245e+01 1.0597886e+02 1.2876439e+02 1.1207610e+02 7.7402737e+01 1.0752301e+02 8.3925384e+01 9.1911825e+01 5.5144398e+01 1.0815046e+02 1.0496612e+02 9.2689013e+01 9.2002429e+01 1.1894697e+02 1.0002936e+02 6.8581609e+01 1.1724547e+02 1.0768573e+02 1.0044003e+02 8.3995105e+01 7.4799585e+01 9.3874164e+01 6.7001213e+01 6.8302891e+01 7.7779008e+01 6.1755484e+01 7.5968021e+01 7.2489894e+01 5.9770684e+01 5.3584623e+01 5.7018571e+01 4.8317201e+01 4.0508039e+01 2.7711833e+01 4.9469151e+01 8.1944563e+01 3.5504687e+01 8.1554863e+01 6.3037262e+01 1.9741427e+01 0.0000000e+00 1.0922860e+02 2.7349449e+01 5.6303690e+01 5.6875211e+01 4.6173436e+01 2.0937811e+01 1.0769581e+02 4.4984010e+01 8.1572309e+01 1.0670451e+02 1.0108429e+02 3.9165600e+01 4.9745983e+01 7.7079683e+01 8.1471827e+01 4.6447376e+01 4.1540288e+01 6.2845761e+01 4.1643949e+01 6.0976051e+01 8.2898183e+01 9.1415680e+01 5.6760576e+01 9.8506264e+01 9.5445477e+01 4.4589616e+01 4.8871416e+01 6.5226053e+01 6.6631732e+01 5.2846503e+01 5.6994581e+01 5.5291580e+01 3.6585457e+01 3.1502455e+01 3.9803157e+01 4.2597073e+01 - 9.6974769e+01 9.3706726e+01 8.8265565e+01 1.1945732e+02 1.1330458e+02 1.1261678e+02 7.2156905e+01 1.4308924e+02 6.0067201e+01 6.7206036e+01 1.2353045e+02 1.2819123e+02 4.8790475e+01 1.0381160e+02 1.4995442e+02 7.8172966e+01 1.1192436e+02 1.4239833e+02 3.9147735e+01 1.3407499e+02 5.6586348e+01 6.1253059e+01 4.1700397e+01 1.4258220e+02 9.4815959e+01 5.5747564e+01 6.0958764e+01 1.0407281e+02 1.0533450e+02 1.0636027e+02 9.2337078e+01 1.0400541e+02 8.8587059e+01 6.7003391e+01 1.3785670e+02 8.2906950e+01 8.6315296e+01 1.2490720e+02 1.2593270e+02 1.1675052e+02 1.2076120e+02 8.0363767e+01 7.6889337e+01 7.6032825e+01 1.0438118e+02 1.0059275e+02 9.2641255e+01 1.0254631e+02 7.7913028e+01 5.9046903e+01 7.6181368e+01 1.0896258e+02 9.5740477e+01 1.1033135e+02 3.1389658e+01 1.3274740e+02 2.9329579e+01 5.1758521e+01 1.0835614e+02 1.0922860e+02 0.0000000e+00 8.2251799e+01 1.4734708e+02 5.7479531e+01 1.0943619e+02 1.2768320e+02 2.0283294e+01 1.3046350e+02 2.8399728e+01 3.2634944e+01 2.4330648e+01 1.3421155e+02 6.5770971e+01 5.2000494e+01 5.1303644e+01 1.0131386e+02 7.6780090e+01 8.7673598e+01 7.0301754e+01 9.1180818e+01 6.3863540e+01 5.9647677e+01 1.3514898e+02 6.9585813e+01 7.8117796e+01 1.0627841e+02 1.1719543e+02 1.1350118e+02 1.1158301e+02 7.3388180e+01 6.9677873e+01 6.2600067e+01 9.6688638e+01 8.5724717e+01 8.0161332e+01 9.7118594e+01 - 8.1503736e+01 1.0042026e+02 6.0228836e+01 7.2722047e+01 8.1922523e+01 5.8173045e+01 1.0109869e+02 8.8005407e+01 8.7526988e+01 6.7751808e+01 8.1256608e+01 9.1867121e+01 1.0364727e+02 8.1688973e+01 8.2269843e+01 6.6704999e+01 5.3216965e+01 9.4151734e+01 9.2262838e+01 6.9859544e+01 8.3708797e+01 1.0691265e+02 8.8278576e+01 8.6348117e+01 9.3867738e+01 6.3007166e+01 7.2672181e+01 5.3765407e+01 9.7215576e+01 9.6223383e+01 8.0233867e+01 8.4917268e+01 1.0360279e+02 8.2284954e+01 7.9344669e+01 1.0147087e+02 9.4037071e+01 9.7745704e+01 8.5728573e+01 7.5938556e+01 9.2154332e+01 5.2789428e+01 5.3075874e+01 6.1625982e+01 5.8041098e+01 6.7691906e+01 6.1748864e+01 5.4413593e+01 3.4338370e+01 3.3238106e+01 2.9082411e+01 4.1501114e+01 2.1647852e+01 4.9241787e+01 5.5437618e+01 5.4387906e+01 5.4245077e+01 3.7082270e+01 2.9520301e+01 2.7349449e+01 8.2251799e+01 0.0000000e+00 7.3878681e+01 3.1174868e+01 4.7222709e+01 4.6757093e+01 8.2029835e+01 5.8883928e+01 5.4607234e+01 8.2869363e+01 7.5819103e+01 5.9507313e+01 2.8950216e+01 5.5382345e+01 6.0510793e+01 4.5699948e+01 2.6211425e+01 5.5316958e+01 2.0287288e+01 5.4979634e+01 6.5923022e+01 7.2818930e+01 7.0694092e+01 8.2235853e+01 8.1528646e+01 4.9202241e+01 5.7658407e+01 6.7632325e+01 6.8449829e+01 3.5414502e+01 3.8670050e+01 3.3033819e+01 3.3556212e+01 1.7776104e+01 2.2975509e+01 3.7025353e+01 - 9.0342999e+01 1.1472316e+02 7.4948446e+01 5.3387844e+01 7.1549830e+01 4.6446721e+01 1.3181712e+02 4.0312177e+01 1.2399455e+02 9.9522087e+01 5.7538847e+01 6.8429476e+01 1.4969714e+02 8.1465127e+01 1.5906666e+01 8.9720808e+01 4.0528754e+01 5.3964026e+01 1.4278884e+02 2.3234838e+01 1.2223201e+02 1.5008520e+02 1.3756516e+02 4.4821128e+01 1.0674473e+02 1.0648665e+02 1.1385931e+02 5.7204193e+01 1.0201786e+02 1.0780220e+02 9.2341718e+01 9.7490690e+01 1.3026015e+02 1.2372613e+02 5.1224432e+01 1.3688190e+02 1.2780618e+02 8.9514437e+01 7.4498794e+01 7.9104045e+01 9.4760961e+01 7.7381261e+01 8.1469987e+01 8.7892267e+01 5.5492366e+01 6.8595867e+01 7.1347219e+01 5.3665913e+01 8.4525291e+01 1.0709913e+02 7.2956505e+01 4.7577436e+01 6.2724689e+01 4.3973479e+01 1.2630646e+02 2.6515160e+01 1.2004398e+02 9.5891957e+01 4.7515131e+01 5.6303690e+01 1.4734708e+02 7.3878681e+01 0.0000000e+00 9.0310239e+01 4.0250493e+01 4.0814064e+01 1.4231355e+02 1.7233186e+01 1.1925058e+02 1.4709070e+02 1.3560489e+02 3.5453977e+01 9.9320837e+01 1.0556647e+02 1.1374009e+02 5.6384101e+01 9.2899116e+01 1.0193301e+02 8.6230830e+01 9.2566177e+01 1.2560720e+02 1.2295418e+02 4.8207834e+01 1.3421870e+02 1.2650784e+02 8.2449170e+01 6.7984183e+01 7.7576946e+01 9.0241429e+01 7.6232059e+01 8.1401648e+01 8.5971842e+01 5.2098768e+01 6.2877153e+01 6.7302589e+01 5.1396831e+01 - 6.2193155e+01 7.6797312e+01 4.4064529e+01 6.8899405e+01 7.0344788e+01 5.8551537e+01 7.2554999e+01 9.0752782e+01 5.7798231e+01 4.1369089e+01 7.5906105e+01 8.5058895e+01 7.3274815e+01 6.6748200e+01 9.4014298e+01 4.4092087e+01 5.6703652e+01 9.4171210e+01 6.4034849e+01 7.8988791e+01 5.4369609e+01 8.0955504e+01 6.0672063e+01 9.2543723e+01 7.3659038e+01 3.8997159e+01 5.1658478e+01 5.5824577e+01 7.9890178e+01 8.4670294e+01 6.2580960e+01 7.7109932e+01 8.4341206e+01 6.4667872e+01 8.9607900e+01 8.4828134e+01 8.1154605e+01 9.1424809e+01 8.6252102e+01 7.9350768e+01 9.0175661e+01 3.7643086e+01 3.6924963e+01 4.1641428e+01 5.4918332e+01 5.6450670e+01 4.8535625e+01 5.0300967e+01 3.1414789e+01 3.5223532e+01 1.9745807e+01 5.2570230e+01 4.1368129e+01 5.4311461e+01 3.8980789e+01 7.5637321e+01 2.9836958e+01 6.3184686e+00 5.2127110e+01 5.6875211e+01 5.7479531e+01 3.1174868e+01 9.0310239e+01 0.0000000e+00 5.3158428e+01 7.3460605e+01 5.6605186e+01 7.3735875e+01 2.9456705e+01 6.4618395e+01 5.1002162e+01 8.0777985e+01 3.5982830e+01 3.3818178e+01 4.3024947e+01 5.1647502e+01 4.2170473e+01 6.2831158e+01 2.8113439e+01 6.0806098e+01 6.1672858e+01 5.8391211e+01 8.5723757e+01 7.3312192e+01 7.3796913e+01 6.8191880e+01 7.3725065e+01 7.5139909e+01 7.8616901e+01 2.3875884e+01 2.4539751e+01 1.5370608e+01 4.1743403e+01 2.9205365e+01 2.3455095e+01 4.0495219e+01 - 5.5661967e+01 8.2020171e+01 3.6912057e+01 2.9070836e+01 4.4144751e+01 1.5267853e+01 9.4920727e+01 4.1318794e+01 8.5284253e+01 6.0882862e+01 3.8116774e+01 5.2878495e+01 1.1070938e+02 5.2190652e+01 4.1592184e+01 5.1673413e+01 6.6863159e+00 5.1857247e+01 1.0491427e+02 2.8106548e+01 8.3790386e+01 1.1468202e+02 1.0017441e+02 5.0759968e+01 7.6417070e+01 7.0401682e+01 8.0240267e+01 3.5466798e+01 7.5121782e+01 8.5871838e+01 6.1496502e+01 7.6902777e+01 1.0125620e+02 9.2876653e+01 5.6643313e+01 1.0858537e+02 1.0182820e+02 7.5345087e+01 6.5603903e+01 6.8257572e+01 8.2164856e+01 4.1549245e+01 4.6217723e+01 5.1898379e+01 2.7166275e+01 3.6975906e+01 3.6428647e+01 1.7332458e+01 5.1440751e+01 7.7586070e+01 3.4930072e+01 2.2769665e+01 3.8079041e+01 1.2016934e+01 9.1428313e+01 3.5841672e+01 8.2760613e+01 5.8120596e+01 3.0993582e+01 4.6173436e+01 1.0943619e+02 4.7222709e+01 4.0250493e+01 5.3158428e+01 0.0000000e+00 4.6584694e+01 1.0500774e+02 2.5178212e+01 8.2026861e+01 1.1295969e+02 9.8763088e+01 4.7451838e+01 7.2045612e+01 7.0416532e+01 8.0747074e+01 3.4764790e+01 6.9432226e+01 8.2680850e+01 5.7771388e+01 7.3603340e+01 9.8795884e+01 9.2513673e+01 5.5311499e+01 1.0716147e+02 1.0125514e+02 7.2104143e+01 6.2742306e+01 6.7294330e+01 7.9926839e+01 4.0553880e+01 4.6207082e+01 5.0238652e+01 2.2603769e+01 3.1206563e+01 3.2075290e+01 1.2738311e+01 - 1.0129050e+02 1.2203218e+02 8.0034172e+01 7.3881548e+01 8.9489925e+01 6.0174045e+01 1.3192567e+02 7.3103961e+01 1.2140040e+02 9.7756645e+01 7.9897429e+01 8.9716851e+01 1.4217071e+02 9.3410381e+01 5.4424379e+01 9.1941160e+01 5.1695315e+01 8.1270291e+01 1.3104581e+02 4.9759998e+01 1.1785105e+02 1.4080265e+02 1.2597306e+02 6.6363124e+01 1.1227439e+02 9.5914978e+01 1.0283396e+02 5.5277068e+01 1.1073795e+02 1.0726744e+02 9.7149071e+01 9.4046672e+01 1.2587120e+02 1.1043259e+02 5.7739569e+01 1.2577905e+02 1.1532653e+02 9.7708108e+01 7.9257107e+01 7.2657225e+01 9.2265033e+01 7.4532526e+01 7.6550982e+01 8.5893940e+01 6.2206605e+01 7.8342028e+01 7.6988423e+01 6.2093134e+01 6.9862663e+01 7.7550512e+01 6.1807949e+01 4.5439629e+01 4.2826678e+01 5.1353516e+01 1.0171698e+02 2.5301003e+01 1.0019675e+02 7.9620474e+01 2.8044406e+01 2.0937811e+01 1.2768320e+02 4.6757093e+01 4.0814064e+01 7.3460605e+01 4.6584694e+01 0.0000000e+00 1.2438456e+02 3.3969609e+01 9.9636435e+01 1.2375475e+02 1.1748234e+02 2.3077973e+01 6.8689211e+01 9.0480953e+01 9.5240022e+01 4.8073047e+01 5.9882126e+01 7.3195390e+01 5.9129010e+01 6.8642837e+01 9.7624418e+01 1.0388639e+02 4.5155945e+01 1.1087145e+02 1.0565907e+02 5.0474095e+01 4.6549548e+01 6.4193108e+01 6.8414509e+01 6.4175392e+01 6.8627530e+01 6.9654397e+01 4.2008943e+01 4.5004117e+01 5.2698309e+01 4.8629517e+01 - 9.2780917e+01 8.1245596e+01 8.2307783e+01 1.1467025e+02 1.0584064e+02 1.0892729e+02 6.0393752e+01 1.3581702e+02 5.1100259e+01 5.8751907e+01 1.1541129e+02 1.1717737e+02 3.9625184e+01 9.3130371e+01 1.4363407e+02 7.0549063e+01 1.0679776e+02 1.3204660e+02 2.3285280e+01 1.2712053e+02 4.5699542e+01 4.2885032e+01 2.4412748e+01 1.3185109e+02 8.0124055e+01 4.1933617e+01 4.3662247e+01 9.3734821e+01 9.0623492e+01 8.8456598e+01 7.8969056e+01 8.7141006e+01 6.9163100e+01 4.7880961e+01 1.2650339e+02 6.2819668e+01 6.7034873e+01 1.0905483e+02 1.1153619e+02 1.0255259e+02 1.0427827e+02 7.0705006e+01 6.6363929e+01 6.5055778e+01 9.5247092e+01 9.1418396e+01 8.3916086e+01 9.6504600e+01 8.3022145e+01 6.3653116e+01 7.4923301e+01 1.0869025e+02 9.7174657e+01 1.0788823e+02 4.0275395e+01 1.3068480e+02 3.5826874e+01 5.0866002e+01 1.0747255e+02 1.0769581e+02 2.0283294e+01 8.2029835e+01 1.4231355e+02 5.6605186e+01 1.0500774e+02 1.2438456e+02 0.0000000e+00 1.2512304e+02 3.0544219e+01 2.3514613e+01 7.4130060e+00 1.2750310e+02 6.4929202e+01 3.9319437e+01 3.6832826e+01 9.2003982e+01 7.5178924e+01 7.8027201e+01 6.7034025e+01 7.9763293e+01 5.4481420e+01 4.2781307e+01 1.2516077e+02 5.4635492e+01 6.1857184e+01 9.8823549e+01 1.0741372e+02 1.0065244e+02 9.9457465e+01 6.6187001e+01 6.1378753e+01 5.6697321e+01 9.0595691e+01 8.2791516e+01 7.6598426e+01 9.3405814e+01 - 7.8487676e+01 1.0121138e+02 6.0465480e+01 4.4830750e+01 6.1298742e+01 3.5159832e+01 1.1663128e+02 3.9155292e+01 1.0831182e+02 8.3737780e+01 4.9003254e+01 6.0198196e+01 1.3335068e+02 6.8920847e+01 2.3825590e+01 7.4644425e+01 2.6469274e+01 5.0020721e+01 1.2587614e+02 1.6569157e+01 1.0616227e+02 1.3357803e+02 1.2064613e+02 4.0776252e+01 9.2899528e+01 8.9539110e+01 9.7134853e+01 4.1778564e+01 8.9279250e+01 9.4411305e+01 7.8033116e+01 8.3795222e+01 1.1517750e+02 1.0727730e+02 4.4693495e+01 1.2120491e+02 1.1239780e+02 7.9003971e+01 6.4282825e+01 6.7111559e+01 8.3216806e+01 6.0978281e+01 6.4880140e+01 7.1805291e+01 4.0569100e+01 5.4895509e+01 5.6525828e+01 3.9214844e+01 7.1032999e+01 9.1822319e+01 5.7007464e+01 3.6416565e+01 4.9912574e+01 3.1780046e+01 1.0998207e+02 2.3457445e+01 1.0350722e+02 7.9235657e+01 3.5380664e+01 4.4984010e+01 1.3046350e+02 5.8883928e+01 1.7233186e+01 7.3735875e+01 2.5178212e+01 3.3969609e+01 1.2512304e+02 0.0000000e+00 1.0242134e+02 1.2998989e+02 1.1839058e+02 2.9284932e+01 8.3696311e+01 8.8380328e+01 9.6645943e+01 4.0289823e+01 7.7987113e+01 8.7234491e+01 7.0049289e+01 7.7748388e+01 1.0948596e+02 1.0622061e+02 4.1128371e+01 1.1803618e+02 1.1071446e+02 7.0008626e+01 5.6556546e+01 6.5156778e+01 7.7870168e+01 5.9029723e+01 6.4189149e+01 6.8815246e+01 3.4897484e+01 4.6504041e+01 5.0539270e+01 3.5432558e+01 - 7.8841599e+01 8.2520176e+01 6.5476545e+01 9.4950296e+01 9.1737724e+01 8.6511004e+01 6.8297668e+01 1.1756636e+02 5.3706874e+01 4.9874866e+01 9.9924624e+01 1.0616141e+02 5.6772043e+01 8.3963585e+01 1.2252639e+02 5.8631561e+01 8.5005199e+01 1.1822382e+02 4.5122900e+01 1.0690622e+02 4.9365337e+01 6.5874899e+01 4.3775306e+01 1.1706252e+02 8.1072145e+01 3.8858412e+01 4.8279452e+01 7.8431859e+01 9.0060605e+01 9.1493412e+01 7.4560518e+01 8.6408622e+01 8.1427241e+01 5.8152859e+01 1.1233303e+02 7.7742444e+01 7.7365163e+01 1.0574212e+02 1.0378636e+02 9.4712919e+01 1.0187157e+02 5.6680784e+01 5.3713385e+01 5.5275094e+01 7.9066228e+01 7.7719535e+01 6.9535184e+01 7.6779083e+01 5.3312357e+01 3.7417242e+01 4.8785726e+01 8.1599888e+01 6.8269597e+01 8.3323468e+01 1.8576102e+01 1.0446853e+02 7.6484558e+00 2.4119668e+01 8.0199825e+01 8.1572309e+01 2.8399728e+01 5.4607234e+01 1.1925058e+02 2.9456705e+01 8.2026861e+01 9.9636435e+01 3.0544219e+01 1.0242134e+02 0.0000000e+00 3.9873044e+01 2.6661914e+01 1.0647554e+02 4.2352984e+01 3.2517217e+01 3.5934518e+01 7.4869798e+01 5.2842629e+01 6.8198112e+01 4.3716328e+01 7.0013308e+01 5.2740281e+01 4.9581749e+01 1.0885734e+02 6.2826868e+01 6.8062698e+01 8.2606453e+01 9.2259354e+01 9.0648511e+01 9.0298552e+01 4.6657333e+01 4.3707019e+01 3.5322324e+01 6.8853524e+01 5.7333926e+01 5.1960633e+01 6.9541053e+01 - 1.1076072e+02 9.8808441e+01 9.6449408e+01 1.2729525e+02 1.2042979e+02 1.1963174e+02 8.0658719e+01 1.4582376e+02 7.2334816e+01 7.5747798e+01 1.2753691e+02 1.2856840e+02 6.1758876e+01 1.0700889e+02 1.5010497e+02 8.6588544e+01 1.1558471e+02 1.4125992e+02 4.3193866e+01 1.3380499e+02 6.5947683e+01 5.5456915e+01 4.2744178e+01 1.3724127e+02 9.4105281e+01 5.3238112e+01 5.1541020e+01 9.8229008e+01 1.0350789e+02 9.3169626e+01 9.1652285e+01 8.9751649e+01 7.6304109e+01 4.9533727e+01 1.2790772e+02 6.3038296e+01 6.4675146e+01 1.1490289e+02 1.1442846e+02 1.0157265e+02 1.0436955e+02 8.1000270e+01 7.6080252e+01 7.7493060e+01 1.0369478e+02 1.0356426e+02 9.6132819e+01 1.0699474e+02 9.1512353e+01 6.0395258e+01 8.3810327e+01 1.1619944e+02 1.0134099e+02 1.1704118e+02 4.1266755e+01 1.3432233e+02 4.5178290e+01 6.0217497e+01 1.1073770e+02 1.0670451e+02 3.2634944e+01 8.2869363e+01 1.4709070e+02 6.4618395e+01 1.1295969e+02 1.2375475e+02 2.3514613e+01 1.2998989e+02 3.9873044e+01 0.0000000e+00 2.2884132e+01 1.2711534e+02 5.9229035e+01 4.6264263e+01 3.7205873e+01 9.4942914e+01 6.8761000e+01 6.7108076e+01 6.5189272e+01 7.2522254e+01 3.8265965e+01 3.7458723e+01 1.2463752e+02 4.0142836e+01 5.1220486e+01 9.0587108e+01 1.0285858e+02 9.7386076e+01 9.1707895e+01 7.2972183e+01 6.7945955e+01 6.2749625e+01 9.5174920e+01 8.7027474e+01 8.2475794e+01 1.0130939e+02 - 8.9301443e+01 7.8344814e+01 7.7275260e+01 1.0935696e+02 1.0097960e+02 1.0326395e+02 5.9517543e+01 1.2980548e+02 4.9802207e+01 5.4596672e+01 1.0984855e+02 1.1156688e+02 4.2402351e+01 8.8136713e+01 1.3705084e+02 6.6066156e+01 1.0062696e+02 1.2590696e+02 2.4746099e+01 1.2051733e+02 4.3757685e+01 4.3205663e+01 2.3922416e+01 1.2506275e+02 7.5991536e+01 3.5872644e+01 3.7871794e+01 8.6720688e+01 8.6124905e+01 8.2978435e+01 7.3874298e+01 8.0899273e+01 6.5538900e+01 4.2673913e+01 1.1931107e+02 5.9051070e+01 6.2102098e+01 1.0304964e+02 1.0477680e+02 9.5471505e+01 9.7773028e+01 6.4511915e+01 6.0028226e+01 5.9402520e+01 8.8806734e+01 8.5789593e+01 7.8263113e+01 9.0574105e+01 7.8697354e+01 5.8948971e+01 6.9285102e+01 1.0295828e+02 9.1423475e+01 1.0207985e+02 3.7814183e+01 1.2420588e+02 3.2984243e+01 4.5505352e+01 1.0117765e+02 1.0108429e+02 2.4330648e+01 7.5819103e+01 1.3560489e+02 5.1002162e+01 9.8763088e+01 1.1748234e+02 7.4130060e+00 1.1839058e+02 2.6661914e+01 2.2884132e+01 0.0000000e+00 1.2026418e+02 5.8903729e+01 3.2251195e+01 2.9602325e+01 8.4832637e+01 6.8889527e+01 7.1191149e+01 6.0336279e+01 7.2559784e+01 4.8982087e+01 3.6707783e+01 1.1781316e+02 4.9756767e+01 5.6268871e+01 9.1700532e+01 1.0001520e+02 9.3368820e+01 9.2298098e+01 5.9462816e+01 5.4532368e+01 5.0008423e+01 8.3746079e+01 7.6295594e+01 7.0182182e+01 8.7228963e+01 - 1.0090028e+02 1.1524036e+02 7.9095743e+01 7.1670108e+01 8.3919128e+01 6.1169913e+01 1.2856490e+02 6.3570837e+01 1.2061803e+02 9.6766694e+01 7.1682523e+01 7.7132263e+01 1.4237098e+02 8.5394608e+01 4.4890956e+01 9.0309050e+01 5.0231130e+01 6.6405109e+01 1.3104700e+02 3.9784242e+01 1.1671609e+02 1.3703503e+02 1.2535694e+02 4.7563110e+01 1.0328356e+02 9.4141214e+01 9.8775526e+01 4.4787941e+01 9.9827078e+01 9.3652926e+01 8.8733644e+01 8.0509011e+01 1.1634681e+02 1.0497580e+02 3.5977929e+01 1.1756845e+02 1.0645332e+02 8.0697331e+01 6.0780580e+01 5.6288260e+01 7.5339178e+01 7.1021637e+01 7.2919459e+01 8.1986989e+01 5.4274374e+01 7.1882667e+01 7.2328916e+01 5.9774339e+01 8.3676762e+01 9.0087438e+01 6.9233101e+01 5.6348601e+01 5.8763307e+01 5.6086891e+01 1.1148748e+02 3.6521559e+01 1.0850877e+02 8.6377255e+01 4.3594949e+01 3.9165600e+01 1.3421155e+02 5.9507313e+01 3.5453977e+01 8.0777985e+01 4.7451838e+01 2.3077973e+01 1.2750310e+02 2.9284932e+01 1.0647554e+02 1.2711534e+02 1.2026418e+02 0.0000000e+00 7.8100658e+01 9.0253340e+01 9.4753732e+01 3.9895930e+01 6.9699005e+01 7.1943793e+01 6.6518025e+01 6.3681803e+01 9.9332119e+01 1.0123142e+02 2.3182555e+01 1.0836925e+02 1.0058473e+02 4.9663387e+01 3.5172167e+01 4.9958901e+01 5.8320601e+01 6.4999694e+01 6.8787773e+01 7.3001463e+01 4.1877272e+01 5.2614607e+01 5.8367375e+01 5.2381738e+01 - 9.6788965e+01 1.0509711e+02 7.5606409e+01 9.5809529e+01 9.9753130e+01 8.2868080e+01 9.9782382e+01 1.1115799e+02 8.6784934e+01 7.2602735e+01 1.0097913e+02 1.0777796e+02 9.5379460e+01 9.3916536e+01 1.0690917e+02 7.6254205e+01 7.7138630e+01 1.1283842e+02 8.0106230e+01 9.3131189e+01 8.1321403e+01 9.4544240e+01 7.6518505e+01 1.0380884e+02 9.7436353e+01 5.7641123e+01 6.3931939e+01 6.6553210e+01 1.0276313e+02 9.4595606e+01 8.6329260e+01 8.3801132e+01 9.6211058e+01 6.9309550e+01 9.2715874e+01 8.8281839e+01 8.1280556e+01 1.0360734e+02 9.3160429e+01 7.8751609e+01 9.2435756e+01 6.1845462e+01 5.9413083e+01 6.7358225e+01 7.4455902e+01 8.2553853e+01 7.5573875e+01 7.5020108e+01 5.2856606e+01 1.7755644e+01 4.7757166e+01 6.9828825e+01 4.9987393e+01 7.5691703e+01 3.8327219e+01 8.1680689e+01 4.3693052e+01 3.8346156e+01 5.7849663e+01 4.9745983e+01 6.5770971e+01 2.8950216e+01 9.9320837e+01 3.5982830e+01 7.2045612e+01 6.8689211e+01 6.4929202e+01 8.3696311e+01 4.2352984e+01 5.9229035e+01 5.8903729e+01 7.8100658e+01 0.0000000e+00 4.6474069e+01 4.5287437e+01 5.8729323e+01 1.1064704e+01 3.9585385e+01 1.5175316e+01 4.5767632e+01 4.0221593e+01 5.5038329e+01 8.4127756e+01 5.9887007e+01 6.2858592e+01 4.6364045e+01 6.2661979e+01 6.9191765e+01 6.3521064e+01 4.4003892e+01 4.3199685e+01 3.5391972e+01 5.3423655e+01 4.1000447e+01 4.1913268e+01 6.0990446e+01 - 7.1120745e+01 6.2893920e+01 5.2999105e+01 8.2994600e+01 7.5646769e+01 7.6600489e+01 5.5891231e+01 1.0003382e+02 4.6344340e+01 3.6577682e+01 8.1532607e+01 8.2730081e+01 5.6546373e+01 6.2324157e+01 1.0635691e+02 4.4731422e+01 7.1908807e+01 9.5251586e+01 4.1563236e+01 8.9655179e+01 3.9302011e+01 5.1898795e+01 3.6116596e+01 9.2973226e+01 5.5514582e+01 1.2026426e+01 1.9090497e+01 5.4538544e+01 6.3287730e+01 5.9227921e+01 4.8601012e+01 5.4031153e+01 5.3172580e+01 3.0972761e+01 8.7307277e+01 5.1208183e+01 4.8804430e+01 7.4651883e+01 7.3964857e+01 6.5561456e+01 7.0173769e+01 3.4932940e+01 2.9851677e+01 3.2381996e+01 5.7863800e+01 5.7635237e+01 5.0427209e+01 6.2304803e+01 6.5105321e+01 5.3458601e+01 4.7248534e+01 7.8862037e+01 7.0492988e+01 7.5953935e+01 4.7391332e+01 9.7091350e+01 3.9357517e+01 3.0860967e+01 7.6479979e+01 7.7079683e+01 5.2000494e+01 5.5382345e+01 1.0556647e+02 3.3818178e+01 7.0416532e+01 9.0480953e+01 3.9319437e+01 8.8380328e+01 3.2517217e+01 4.6264263e+01 3.2251195e+01 9.0253340e+01 4.6474069e+01 0.0000000e+00 1.3538106e+01 5.3113394e+01 5.3196988e+01 5.2445977e+01 4.0128682e+01 4.8408491e+01 4.5254857e+01 2.7901215e+01 8.6476671e+01 4.6923892e+01 4.5876694e+01 6.8208600e+01 7.1482497e+01 6.4142865e+01 6.7054658e+01 3.0235651e+01 2.4518436e+01 2.4228459e+01 5.4051469e+01 5.0768375e+01 4.4331464e+01 6.0072473e+01 - 8.4598071e+01 7.2984550e+01 6.6167771e+01 9.5298978e+01 8.8193196e+01 8.8284732e+01 6.4279469e+01 1.1064869e+02 5.6259421e+01 4.9600680e+01 9.3076352e+01 9.2969093e+01 6.0972284e+01 7.3863148e+01 1.1530934e+02 5.8037967e+01 8.2625530e+01 1.0467234e+02 4.2833926e+01 9.8743620e+01 4.8716519e+01 5.0937652e+01 3.7580707e+01 1.0025161e+02 6.4241118e+01 2.2955436e+01 2.1599388e+01 6.1711859e+01 7.1809390e+01 6.1126387e+01 5.8605250e+01 5.5512573e+01 5.3293487e+01 2.5448103e+01 9.1783288e+01 4.5492558e+01 4.2351410e+01 7.9450914e+01 7.7933264e+01 6.6571381e+01 7.0534545e+01 4.6729854e+01 4.1365044e+01 4.4614731e+01 6.7941716e+01 6.9420590e+01 6.2604886e+01 7.3945636e+01 7.4269448e+01 5.3938926e+01 5.7947360e+01 8.8830808e+01 7.8176260e+01 8.6913767e+01 4.7299198e+01 1.0480980e+02 4.3341369e+01 4.0266134e+01 8.3875021e+01 8.1471827e+01 5.1303644e+01 6.0510793e+01 1.1374009e+02 4.3024947e+01 8.0747074e+01 9.5240022e+01 3.6832826e+01 9.6645943e+01 3.5934518e+01 3.7205873e+01 2.9602325e+01 9.4753732e+01 4.5287437e+01 1.3538106e+01 0.0000000e+00 5.9439092e+01 5.2116255e+01 4.5618411e+01 4.2274123e+01 4.4042618e+01 3.3452233e+01 1.5681322e+01 9.0034958e+01 3.3671649e+01 3.4355635e+01 6.5700567e+01 7.1634451e+01 6.3900479e+01 6.3249568e+01 4.0415922e+01 3.4685578e+01 3.3570443e+01 6.2254123e+01 5.8730380e+01 5.3495051e+01 7.0502350e+01 - 7.2046825e+01 7.8256694e+01 4.7870674e+01 5.6097308e+01 5.8762665e+01 4.7445677e+01 8.9453536e+01 5.9630496e+01 8.2221977e+01 5.9360121e+01 5.2466035e+01 5.5193792e+01 1.0348887e+02 5.3050816e+01 5.7797446e+01 5.4750220e+01 3.6146496e+01 5.6120337e+01 9.2517055e+01 4.2125697e+01 7.7799606e+01 9.7727439e+01 8.6666185e+01 4.5500168e+01 6.5956522e+01 5.5187338e+01 5.9861861e+01 9.6091532e+00 6.4712887e+01 6.0259295e+01 5.1448595e+01 4.8076928e+01 7.8695557e+01 6.7945331e+01 3.8042558e+01 8.1775265e+01 7.2528622e+01 5.4359888e+01 4.0511923e+01 3.5630479e+01 5.1567859e+01 3.2943589e+01 3.3862930e+01 4.3206163e+01 2.4283494e+01 4.0460201e+01 3.8645809e+01 3.5591159e+01 6.6681220e+01 7.1213224e+01 4.4030092e+01 5.1497568e+01 5.2208333e+01 4.6041436e+01 8.4565589e+01 5.4909673e+01 7.8423075e+01 5.5717664e+01 4.5348449e+01 4.6447376e+01 1.0131386e+02 4.5699948e+01 5.6384101e+01 5.1647502e+01 3.4764790e+01 4.8073047e+01 9.2003982e+01 4.0289823e+01 7.4869798e+01 9.4942914e+01 8.4832637e+01 3.9895930e+01 5.8729323e+01 5.3113394e+01 5.9439092e+01 0.0000000e+00 5.5150178e+01 5.3643866e+01 4.4142618e+01 4.1765293e+01 7.3821373e+01 6.7048837e+01 3.5876471e+01 7.9033598e+01 7.0976592e+01 4.6300354e+01 3.3822671e+01 3.3326108e+01 4.6584888e+01 2.9806507e+01 3.2370815e+01 3.9830468e+01 1.7185864e+01 3.2290429e+01 3.2366085e+01 3.2969473e+01 - 1.0049921e+02 1.0993255e+02 7.8187129e+01 9.5195599e+01 1.0082368e+02 8.1584286e+01 1.0700211e+02 1.0810443e+02 9.4465517e+01 7.8346255e+01 1.0018817e+02 1.0702918e+02 1.0473386e+02 9.5757752e+01 1.0146719e+02 8.0622059e+01 7.4847322e+01 1.1006750e+02 8.9372482e+01 8.8515845e+01 8.8986178e+01 1.0250079e+02 8.5383775e+01 9.9168484e+01 1.0113807e+02 6.4034861e+01 6.9777735e+01 6.3808679e+01 1.0537403e+02 9.5792437e+01 8.9142305e+01 8.3870264e+01 1.0066185e+02 7.4576837e+01 8.6745306e+01 9.2796689e+01 8.4465588e+01 1.0260378e+02 9.0080118e+01 7.5007526e+01 9.0340173e+01 6.4162353e+01 6.2155182e+01 7.1073457e+01 7.3222204e+01 8.3466470e+01 7.7136851e+01 7.4516621e+01 5.5801365e+01 2.5778208e+01 5.0015758e+01 6.7261308e+01 4.7258323e+01 7.3729261e+01 4.9214542e+01 7.5137501e+01 5.4164909e+01 4.5677084e+01 5.2619886e+01 4.1540288e+01 7.6780090e+01 2.6211425e+01 9.2899116e+01 4.2170473e+01 6.9432226e+01 5.9882126e+01 7.5178924e+01 7.7987113e+01 5.2842629e+01 6.8761000e+01 6.8889527e+01 6.9699005e+01 1.1064704e+01 5.3196988e+01 5.2116255e+01 5.5150178e+01 0.0000000e+00 3.6291168e+01 1.6191882e+01 4.2433865e+01 4.4748933e+01 6.0688298e+01 7.6857544e+01 6.4230285e+01 6.5686412e+01 3.7433091e+01 5.4958556e+01 6.4255976e+01 5.7846165e+01 4.6133019e+01 4.6163795e+01 3.9940877e+01 5.0338990e+01 3.9216682e+01 4.2101301e+01 5.9541675e+01 - 1.1189719e+02 1.0723603e+02 8.8126068e+01 1.0662714e+02 1.0683647e+02 9.5891382e+01 1.0631202e+02 1.1320713e+02 9.8473009e+01 8.4232910e+01 1.0440988e+02 1.0445443e+02 1.0657334e+02 9.5644660e+01 1.0769294e+02 8.7540397e+01 8.6250801e+01 1.0770179e+02 8.8196544e+01 9.3899935e+01 9.1363293e+01 9.3012000e+01 8.3015392e+01 9.3714205e+01 9.3853255e+01 6.2362452e+01 6.0441015e+01 6.0275593e+01 9.6807072e+01 7.5287109e+01 8.4108348e+01 6.2812438e+01 8.2698765e+01 5.7689374e+01 7.6235500e+01 7.0519772e+01 5.9285832e+01 8.5725582e+01 7.3294638e+01 5.3694873e+01 6.5872693e+01 6.7061418e+01 6.3300314e+01 7.2063001e+01 7.5170264e+01 8.6433004e+01 8.1514007e+01 8.4242118e+01 8.5780522e+01 5.6972177e+01 7.1054914e+01 8.9623667e+01 7.5456498e+01 9.1113743e+01 6.9594602e+01 9.2295808e+01 7.3099045e+01 6.4677106e+01 7.5195545e+01 6.2845761e+01 8.7673598e+01 5.5316958e+01 1.0193301e+02 6.2831158e+01 8.2680850e+01 7.3195390e+01 7.8027201e+01 8.7234491e+01 6.8198112e+01 6.7108076e+01 7.1191149e+01 7.1943793e+01 3.9585385e+01 5.2445977e+01 4.5618411e+01 5.3643866e+01 3.6291168e+01 0.0000000e+00 3.8763554e+01 1.4845277e+01 3.0981758e+01 4.4617080e+01 6.8383071e+01 4.1520868e+01 3.8322491e+01 2.6581295e+01 4.1299234e+01 4.2549166e+01 2.9380197e+01 5.4781947e+01 5.2250136e+01 5.1972025e+01 6.0107251e+01 5.8980255e+01 5.9859380e+01 7.5272093e+01 - 8.4829596e+01 9.4130367e+01 6.2426861e+01 8.1606687e+01 8.5567959e+01 6.8943256e+01 9.2151249e+01 9.6222078e+01 7.9666601e+01 6.2433721e+01 8.6064121e+01 9.2882552e+01 9.2368932e+01 8.0104303e+01 9.2828159e+01 6.4448525e+01 6.2597563e+01 9.7694150e+01 7.8221887e+01 7.8549193e+01 7.4411286e+01 9.1356224e+01 7.3902475e+01 8.9184713e+01 8.5914841e+01 4.9928633e+01 5.7271391e+01 5.1841934e+01 9.0342018e+01 8.4107916e+01 7.3748754e+01 7.3008481e+01 8.8753434e+01 6.4667382e+01 7.9410146e+01 8.3778701e+01 7.6295351e+01 9.0629358e+01 8.0040787e+01 6.7354589e+01 8.1612685e+01 4.8332111e+01 4.6429440e+01 5.5165959e+01 5.9367686e+01 6.8146009e+01 6.1491907e+01 6.0388171e+01 4.7128620e+01 2.7825374e+01 3.6121031e+01 5.8250048e+01 4.1305986e+01 6.2391236e+01 4.5646270e+01 7.0513206e+01 4.5781249e+01 3.1940341e+01 4.7256684e+01 4.1643949e+01 7.0301754e+01 2.0287288e+01 8.6230830e+01 2.8113439e+01 5.7771388e+01 5.9129010e+01 6.7034025e+01 7.0049289e+01 4.3716328e+01 6.5189272e+01 6.0336279e+01 6.6518025e+01 1.5175316e+01 4.0128682e+01 4.2274123e+01 4.4142618e+01 1.6191882e+01 3.8763554e+01 0.0000000e+00 3.9816899e+01 4.6071585e+01 5.3442915e+01 7.1801901e+01 6.1985936e+01 6.1889695e+01 4.1894102e+01 5.3117294e+01 5.8845016e+01 5.7020837e+01 3.0178780e+01 3.0258917e+01 2.3923978e+01 3.8496516e+01 2.7354968e+01 2.7969869e+01 4.6955733e+01 - 1.0283484e+02 9.6845807e+01 7.8822389e+01 9.6165626e+01 9.5299267e+01 8.6618567e+01 9.9085514e+01 1.0097221e+02 9.2416965e+01 7.6586270e+01 9.2050283e+01 9.0769216e+01 1.0346853e+02 8.3485474e+01 9.6747396e+01 7.8689211e+01 7.6373707e+01 9.3937681e+01 8.6213664e+01 8.2553797e+01 8.5471169e+01 8.9218321e+01 8.0452722e+01 8.0113472e+01 8.2427557e+01 5.6372501e+01 5.4131435e+01 4.7344755e+01 8.4276986e+01 6.2648127e+01 7.2284888e+01 4.9397756e+01 7.3900288e+01 5.2537619e+01 6.3085736e+01 6.4770296e+01 5.2781879e+01 7.1160976e+01 5.8486171e+01 3.9190235e+01 5.1965972e+01 5.7017105e+01 5.3460926e+01 6.2359408e+01 6.3024786e+01 7.4702999e+01 7.0582970e+01 7.3996040e+01 8.4509761e+01 6.3178216e+01 6.6308649e+01 8.3822228e+01 7.3162343e+01 8.3137290e+01 7.4933823e+01 8.6103942e+01 7.5339716e+01 6.2905371e+01 7.0993111e+01 6.0976051e+01 9.1180818e+01 5.4979634e+01 9.2566177e+01 6.0806098e+01 7.3603340e+01 6.8642837e+01 7.9763293e+01 7.7748388e+01 7.0013308e+01 7.2522254e+01 7.2559784e+01 6.3681803e+01 4.5767632e+01 4.8408491e+01 4.4042618e+01 4.1765293e+01 4.2433865e+01 1.4845277e+01 3.9816899e+01 0.0000000e+00 4.0302983e+01 4.3667560e+01 5.6968066e+01 4.5446121e+01 3.8179391e+01 2.6864520e+01 3.2062395e+01 2.8836458e+01 2.0532071e+01 4.7441284e+01 4.5056990e+01 4.7645040e+01 5.1283835e+01 5.4071723e+01 5.4316374e+01 6.7424633e+01 - 1.1474279e+02 1.0594045e+02 9.4082002e+01 1.1944126e+02 1.1640518e+02 1.0953858e+02 9.7049413e+01 1.3184420e+02 8.8810529e+01 8.1697875e+01 1.1836949e+02 1.1868208e+02 8.8889599e+01 1.0343004e+02 1.3049354e+02 8.8960217e+01 1.0220432e+02 1.2649970e+02 6.9035486e+01 1.1526610e+02 8.1407154e+01 7.5930440e+01 6.5246505e+01 1.1664332e+02 9.5519428e+01 5.6146876e+01 5.3086816e+01 7.9149752e+01 1.0170041e+02 8.2604636e+01 8.8946943e+01 7.4076855e+01 7.8093994e+01 4.8227120e+01 1.0227039e+02 6.2091949e+01 5.5515525e+01 1.0032028e+02 9.3542787e+01 7.6131235e+01 8.3085018e+01 7.3951203e+01 6.9081971e+01 7.5057174e+01 9.0274439e+01 9.6594928e+01 9.0109828e+01 9.6981696e+01 8.8309595e+01 5.1615099e+01 7.6976988e+01 1.0354952e+02 8.7291078e+01 1.0533427e+02 5.2129829e+01 1.1361843e+02 5.8275767e+01 6.0675141e+01 9.2340663e+01 8.2898183e+01 6.3863540e+01 6.5923022e+01 1.2560720e+02 6.1672858e+01 9.8795884e+01 9.7624418e+01 5.4481420e+01 1.0948596e+02 5.2740281e+01 3.8265965e+01 4.8982087e+01 9.9332119e+01 4.0221593e+01 4.5254857e+01 3.3452233e+01 7.3821373e+01 4.4748933e+01 3.0981758e+01 4.6071585e+01 4.0302983e+01 0.0000000e+00 3.0101810e+01 9.6386336e+01 2.2562487e+01 3.0593034e+01 5.6029274e+01 7.0969534e+01 6.8347045e+01 5.7830049e+01 6.2175286e+01 5.7832151e+01 5.4328744e+01 7.7237182e+01 7.1588181e+01 6.9882946e+01 8.8711377e+01 - 9.7214313e+01 7.9450812e+01 7.8853308e+01 1.0719872e+02 9.8784875e+01 1.0076244e+02 7.0818507e+01 1.1993511e+02 6.5909195e+01 6.1730091e+01 1.0272645e+02 9.9996445e+01 6.6898610e+01 8.2433996e+01 1.2418317e+02 7.0177298e+01 9.4106008e+01 1.1143862e+02 4.7367526e+01 1.0773962e+02 5.8008177e+01 4.9024216e+01 4.2195551e+01 1.0560822e+02 6.8813555e+01 3.4171729e+01 2.5766252e+01 6.8863368e+01 7.5806041e+01 5.8050044e+01 6.5206601e+01 5.3248387e+01 4.8505894e+01 1.8293957e+01 9.5093980e+01 3.4709694e+01 3.0855034e+01 7.9697090e+01 7.8870290e+01 6.5933620e+01 6.7078684e+01 5.7884326e+01 5.2251313e+01 5.5203622e+01 7.7225904e+01 7.9405682e+01 7.3433931e+01 8.5675733e+01 8.9469368e+01 6.5450461e+01 7.2592918e+01 1.0214686e+02 9.1472274e+01 9.9757479e+01 5.8820845e+01 1.1559209e+02 5.7065756e+01 5.5880038e+01 9.5792451e+01 9.1415680e+01 5.9647677e+01 7.2818930e+01 1.2295418e+02 5.8391211e+01 9.2513673e+01 1.0388639e+02 4.2781307e+01 1.0622061e+02 4.9581749e+01 3.7458723e+01 3.6707783e+01 1.0123142e+02 5.5038329e+01 2.7901215e+01 1.5681322e+01 6.7048837e+01 6.0688298e+01 4.4617080e+01 5.3442915e+01 4.3667560e+01 3.0101810e+01 0.0000000e+00 9.3791981e+01 2.0536724e+01 2.0646123e+01 6.8121539e+01 7.3919662e+01 6.3685692e+01 6.0799644e+01 5.3297202e+01 4.7542988e+01 4.7932096e+01 7.2963315e+01 7.1386281e+01 6.6798016e+01 8.3177472e+01 - 1.0129717e+02 1.0650429e+02 7.9272941e+01 7.5130433e+01 8.1406022e+01 6.8039777e+01 1.2170807e+02 6.3447790e+01 1.1649784e+02 9.3877739e+01 6.8627468e+01 6.7856062e+01 1.3770974e+02 7.8220222e+01 5.0727534e+01 8.7993700e+01 5.5978474e+01 5.7819722e+01 1.2591575e+02 4.3110792e+01 1.1204143e+02 1.2791934e+02 1.1977189e+02 3.5744187e+01 9.2179638e+01 8.8978209e+01 9.0682718e+01 3.7408724e+01 8.7376452e+01 7.6478565e+01 7.9069231e+01 6.3625207e+01 1.0227612e+02 9.4765509e+01 1.5536014e+01 1.0412493e+02 9.2613979e+01 6.1973149e+01 4.0697482e+01 3.7348497e+01 5.5008291e+01 6.7363436e+01 6.8468990e+01 7.6838302e+01 5.0197871e+01 6.7468296e+01 6.9028736e+01 6.1846627e+01 9.5646391e+01 9.8445018e+01 7.6418178e+01 7.0776764e+01 7.4061194e+01 6.6376708e+01 1.1627446e+02 5.6656632e+01 1.1235076e+02 9.0356550e+01 6.0768747e+01 5.6760576e+01 1.3514898e+02 7.0694092e+01 4.8207834e+01 8.5723757e+01 5.5311499e+01 4.5155945e+01 1.2516077e+02 4.1128371e+01 1.0885734e+02 1.2463752e+02 1.1781316e+02 2.3182555e+01 8.4127756e+01 8.6476671e+01 9.0034958e+01 3.5876471e+01 7.6857544e+01 6.8383071e+01 7.1801901e+01 5.6968066e+01 9.6386336e+01 9.3791981e+01 0.0000000e+00 1.0070355e+02 9.0692470e+01 5.0719486e+01 2.8198626e+01 3.4354286e+01 4.7323557e+01 6.5432453e+01 6.7842830e+01 7.4534942e+01 4.6612794e+01 6.1230782e+01 6.4598541e+01 6.0076562e+01 - 1.1715727e+02 9.9242285e+01 9.7764929e+01 1.2456992e+02 1.1755956e+02 1.1699562e+02 9.0300541e+01 1.3533997e+02 8.5827932e+01 8.2034095e+01 1.2001979e+02 1.1675724e+02 8.3507961e+01 1.0132215e+02 1.3679634e+02 9.0152205e+01 1.0934994e+02 1.2634221e+02 6.3190431e+01 1.2098899e+02 7.7950414e+01 6.3019008e+01 5.9013376e+01 1.1759919e+02 8.7641052e+01 5.4512646e+01 4.5978619e+01 8.2070373e+01 9.3789146e+01 7.0419272e+01 8.4114807e+01 6.4629659e+01 6.2395659e+01 3.4735352e+01 1.0370237e+02 4.2990708e+01 3.7380198e+01 9.2269713e+01 8.9180341e+01 7.2993367e+01 7.4423142e+01 7.6095625e+01 7.0592546e+01 7.4713710e+01 9.3096765e+01 9.7547614e+01 9.1845269e+01 1.0241424e+02 1.0300875e+02 7.1441556e+01 8.7969991e+01 1.1579512e+02 1.0269317e+02 1.1485793e+02 6.7010422e+01 1.2604334e+02 6.9717578e+01 7.1393222e+01 1.0641782e+02 9.8506264e+01 6.9585813e+01 8.2235853e+01 1.3421870e+02 7.3312192e+01 1.0716147e+02 1.1087145e+02 5.4635492e+01 1.1803618e+02 6.2826868e+01 4.0142836e+01 4.9756767e+01 1.0836925e+02 5.9887007e+01 4.6923892e+01 3.3671649e+01 7.9033598e+01 6.4230285e+01 4.1520868e+01 6.1985936e+01 4.5446121e+01 2.2562487e+01 2.0536724e+01 1.0070355e+02 0.0000000e+00 1.3713342e+01 6.7880265e+01 7.7326644e+01 6.8533656e+01 5.9988617e+01 6.9280363e+01 6.3974828e+01 6.3431086e+01 8.5966099e+01 8.3905121e+01 8.0831136e+01 9.8033331e+01 - 1.1297797e+02 9.3375440e+01 9.2902302e+01 1.1812992e+02 1.1053157e+02 1.1131296e+02 8.8047596e+01 1.2654573e+02 8.4883235e+01 7.8989257e+01 1.1180257e+02 1.0702506e+02 8.6043102e+01 9.3563758e+01 1.2819478e+02 8.5918694e+01 1.0292718e+02 1.1602193e+02 6.6541522e+01 1.1253778e+02 7.6955908e+01 6.3592966e+01 6.1462590e+01 1.0676392e+02 7.9979824e+01 5.2072306e+01 4.2136963e+01 7.3168695e+01 8.4882831e+01 5.8597665e+01 7.6240617e+01 5.2241698e+01 5.4758348e+01 2.9839078e+01 9.2611777e+01 3.6287810e+01 2.7226279e+01 7.9949382e+01 7.6803025e+01 6.0752721e+01 6.1043594e+01 7.0206636e+01 6.4775878e+01 6.9178814e+01 8.5050229e+01 9.0187558e+01 8.5295148e+01 9.6149232e+01 1.0375282e+02 7.6346164e+01 8.6082978e+01 1.1217787e+02 1.0115382e+02 1.0993197e+02 7.4539303e+01 1.2072524e+02 7.5214809e+01 7.2480230e+01 1.0298117e+02 9.5445477e+01 7.8117796e+01 8.1528646e+01 1.2650784e+02 7.3796913e+01 1.0125514e+02 1.0565907e+02 6.1857184e+01 1.1071446e+02 6.8062698e+01 5.1220486e+01 5.6268871e+01 1.0058473e+02 6.2858592e+01 4.5876694e+01 3.4355635e+01 7.0976592e+01 6.5686412e+01 3.8322491e+01 6.1889695e+01 3.8179391e+01 3.0593034e+01 2.0646123e+01 9.0692470e+01 1.3713342e+01 0.0000000e+00 6.3066889e+01 6.8786627e+01 5.7468105e+01 5.0522323e+01 6.5313804e+01 6.0124429e+01 6.1755037e+01 8.0155107e+01 8.0837227e+01 7.7795720e+01 9.3298535e+01 - 1.1332147e+02 1.1647600e+02 8.8623411e+01 9.9109782e+01 1.0436174e+02 8.6968762e+01 1.2033603e+02 1.0148023e+02 1.1162111e+02 9.2848686e+01 9.8375725e+01 1.0056426e+02 1.2467958e+02 9.7378503e+01 9.0545907e+01 9.2742793e+01 7.6335127e+01 9.8782585e+01 1.0815353e+02 7.9322095e+01 1.0541321e+02 1.1418077e+02 1.0275223e+02 8.1549241e+01 1.0293614e+02 7.6990890e+01 7.8001694e+01 5.4666265e+01 1.0365755e+02 8.5477850e+01 9.0602118e+01 7.1207115e+01 9.9826122e+01 7.8603489e+01 6.2566887e+01 9.1631522e+01 7.9570543e+01 8.7535560e+01 7.0057459e+01 5.1833443e+01 6.9541148e+01 7.0725217e+01 6.8846572e+01 7.8999963e+01 7.0444391e+01 8.5525868e+01 8.1925918e+01 7.8602716e+01 8.3178408e+01 6.3085613e+01 6.9608382e+01 7.7796221e+01 6.5111336e+01 8.0700364e+01 8.3372986e+01 7.2716814e+01 8.6011287e+01 7.2182184e+01 6.0164359e+01 4.4589616e+01 1.0627841e+02 4.9202241e+01 8.2449170e+01 6.8191880e+01 7.2104143e+01 5.0474095e+01 9.8823549e+01 7.0008626e+01 8.2606453e+01 9.0587108e+01 9.1700532e+01 4.9663387e+01 4.6364045e+01 6.8208600e+01 6.5700567e+01 4.6300354e+01 3.7433091e+01 2.6581295e+01 4.1894102e+01 2.6864520e+01 5.6029274e+01 6.8121539e+01 5.0719486e+01 6.7880265e+01 6.3066889e+01 0.0000000e+00 2.3802455e+01 3.8055716e+01 2.7559438e+01 5.7780932e+01 5.7925654e+01 5.8536623e+01 5.1544516e+01 5.2677272e+01 5.6869145e+01 6.7466656e+01 - 1.0578889e+02 1.0747191e+02 8.1391372e+01 8.7260165e+01 9.1687623e+01 7.7341307e+01 1.1661923e+02 8.4109756e+01 1.0999842e+02 8.9364913e+01 8.3042096e+01 8.2876406e+01 1.2678730e+02 8.4767086e+01 7.3500915e+01 8.6935325e+01 6.5412712e+01 7.8775676e+01 1.1199104e+02 6.2659414e+01 1.0425819e+02 1.1510740e+02 1.0599311e+02 5.9717359e+01 9.2613999e+01 7.7183745e+01 7.7639652e+01 3.9998866e+01 9.0876322e+01 7.3323752e+01 7.9960035e+01 5.8758945e+01 9.3895808e+01 7.9217141e+01 3.9204363e+01 9.0008306e+01 7.7544733e+01 6.9265283e+01 4.9514600e+01 3.3624698e+01 5.3234161e+01 6.4092314e+01 6.3158141e+01 7.2927807e+01 5.7050168e+01 7.3607666e+01 7.2100649e+01 6.8407612e+01 8.8564423e+01 7.8985232e+01 7.0477023e+01 7.4275269e+01 6.8742431e+01 7.3336208e+01 9.7170202e+01 6.5823919e+01 9.6204784e+01 7.7920918e+01 5.9590555e+01 4.8871416e+01 1.1719543e+02 5.7658407e+01 6.7984183e+01 7.3725065e+01 6.2742306e+01 4.6549548e+01 1.0741372e+02 5.6556546e+01 9.2259354e+01 1.0285858e+02 1.0001520e+02 3.5172167e+01 6.2661979e+01 7.1482497e+01 7.1634451e+01 3.3822671e+01 5.4958556e+01 4.1299234e+01 5.3117294e+01 3.2062395e+01 7.0969534e+01 7.3919662e+01 2.8198626e+01 7.7326644e+01 6.8786627e+01 2.3802455e+01 0.0000000e+00 2.1090766e+01 2.3204022e+01 5.6452089e+01 5.7312437e+01 6.1804642e+01 4.4702060e+01 5.3632879e+01 5.7129269e+01 6.1724384e+01 - 1.0090012e+02 9.4185506e+01 7.7383892e+01 8.7038576e+01 8.6016051e+01 8.0044593e+01 1.0423619e+02 8.3763998e+01 1.0022492e+02 8.1553500e+01 7.8584905e+01 7.3918586e+01 1.1633784e+02 7.4831312e+01 7.9034804e+01 8.0003184e+01 6.8293148e+01 7.3166650e+01 1.0171883e+02 6.6295631e+01 9.4143429e+01 1.0109350e+02 9.5399591e+01 5.6336829e+01 7.7710395e+01 6.7757629e+01 6.5283628e+01 3.5269416e+01 7.5518678e+01 5.3456620e+01 6.6943590e+01 3.8984579e+01 7.5764543e+01 6.5100363e+01 3.7027724e+01 7.2940106e+01 6.0408310e+01 5.1596338e+01 3.3919122e+01 1.4041306e+01 3.2548258e+01 5.7424034e+01 5.5584097e+01 6.3946232e+01 5.2734347e+01 6.6814148e+01 6.5850801e+01 6.7699649e+01 9.5348356e+01 8.5834302e+01 7.3721694e+01 8.3085905e+01 7.9801455e+01 7.8833685e+01 9.8636216e+01 7.9397511e+01 9.5848226e+01 7.8064704e+01 7.2271888e+01 6.5226053e+01 1.1350118e+02 6.7632325e+01 7.7576946e+01 7.5139909e+01 6.7294330e+01 6.4193108e+01 1.0065244e+02 6.5156778e+01 9.0648511e+01 9.7386076e+01 9.3368820e+01 4.9958901e+01 6.9191765e+01 6.4142865e+01 6.3900479e+01 3.3326108e+01 6.4255976e+01 4.2549166e+01 5.8845016e+01 2.8836458e+01 6.8347045e+01 6.3685692e+01 3.4354286e+01 6.8533656e+01 5.7468105e+01 3.8055716e+01 2.1090766e+01 0.0000000e+00 1.9587414e+01 5.4665883e+01 5.3979935e+01 6.0823283e+01 4.9170762e+01 6.0382217e+01 6.1059084e+01 6.6032510e+01 - 1.1458263e+02 1.0762589e+02 9.0394446e+01 1.0252406e+02 1.0253782e+02 9.3690955e+01 1.1365951e+02 1.0129820e+02 1.0860917e+02 9.1616854e+01 9.6170563e+01 9.2771642e+01 1.2108153e+02 9.1146091e+01 9.4225501e+01 9.1977394e+01 8.2164719e+01 9.2295107e+01 1.0423702e+02 8.2026162e+01 1.0184272e+02 1.0441275e+02 9.8219758e+01 7.4793280e+01 9.1488951e+01 7.3418601e+01 6.9944746e+01 5.1152135e+01 9.0942807e+01 6.5561451e+01 8.1393721e+01 5.1541113e+01 8.3068286e+01 6.6808938e+01 5.3964274e+01 7.4745598e+01 6.1436143e+01 6.9142826e+01 5.2920146e+01 3.2007171e+01 4.6202748e+01 6.9284389e+01 6.6540823e+01 7.5410790e+01 6.8736017e+01 8.2614113e+01 8.0296019e+01 8.1917516e+01 9.9595372e+01 8.1184253e+01 8.0702816e+01 9.2111247e+01 8.4033637e+01 9.0628196e+01 9.5137271e+01 8.7855616e+01 9.5507502e+01 8.1351795e+01 7.8080617e+01 6.6631732e+01 1.1158301e+02 6.8449829e+01 9.0241429e+01 7.8616901e+01 7.9926839e+01 6.8414509e+01 9.9457465e+01 7.7870168e+01 9.0298552e+01 9.1707895e+01 9.2298098e+01 5.8320601e+01 6.3521064e+01 6.7054658e+01 6.3249568e+01 4.6584888e+01 5.7846165e+01 2.9380197e+01 5.7020837e+01 2.0532071e+01 5.7830049e+01 6.0799644e+01 4.7323557e+01 5.9988617e+01 5.0522323e+01 2.7559438e+01 2.3204022e+01 1.9587414e+01 0.0000000e+00 6.2309500e+01 6.0898714e+01 6.5148508e+01 5.9385771e+01 6.6194766e+01 6.7739627e+01 7.6726753e+01 - 5.7751687e+01 6.6143926e+01 3.4163561e+01 5.7488923e+01 5.6780654e+01 4.8453607e+01 6.9395643e+01 7.4005948e+01 5.8460717e+01 3.6723148e+01 5.9145471e+01 6.5188047e+01 7.8297706e+01 5.0053567e+01 7.7883565e+01 3.6088097e+01 4.2791906e+01 7.3614765e+01 6.8114475e+01 6.1606176e+01 5.4103194e+01 7.8726734e+01 6.3045743e+01 7.0590887e+01 5.8520362e+01 3.2896849e+01 4.3053764e+01 3.2624329e+01 6.2388803e+01 6.4752283e+01 4.5264620e+01 5.6015702e+01 7.1207662e+01 5.5683274e+01 6.7351614e+01 7.3985672e+01 6.8303570e+01 6.8444572e+01 6.2442091e+01 5.6987109e+01 6.7876988e+01 1.8420882e+01 1.7737496e+01 2.6631633e+01 3.3810924e+01 3.8743360e+01 3.1670941e+01 3.5463505e+01 4.7011571e+01 5.1715158e+01 2.3293255e+01 4.9893603e+01 4.5220263e+01 4.6589183e+01 5.8559757e+01 6.7513853e+01 4.9923707e+01 2.6757072e+01 4.8444228e+01 5.2846503e+01 7.3388180e+01 3.5414502e+01 7.6232059e+01 2.3875884e+01 4.0553880e+01 6.4175392e+01 6.6187001e+01 5.9029723e+01 4.6657333e+01 7.2972183e+01 5.9462816e+01 6.4999694e+01 4.4003892e+01 3.0235651e+01 4.0415922e+01 2.9806507e+01 4.6133019e+01 5.4781947e+01 3.0178780e+01 4.7441284e+01 6.2175286e+01 5.3297202e+01 6.5432453e+01 6.9280363e+01 6.5313804e+01 5.7780932e+01 5.6452089e+01 5.4665883e+01 6.2309500e+01 0.0000000e+00 5.9323624e+00 1.2044072e+01 2.4905153e+01 2.3525871e+01 1.6527262e+01 3.0186745e+01 - 5.9933239e+01 6.4379260e+01 3.7003881e+01 6.2155842e+01 5.9657834e+01 5.3853568e+01 6.6243356e+01 7.8376978e+01 5.5649864e+01 3.5262320e+01 6.2636223e+01 6.7247720e+01 7.4246133e+01 5.0952670e+01 8.2773404e+01 3.6418678e+01 4.8170159e+01 7.6603053e+01 6.3188645e+01 6.6321256e+01 5.0698662e+01 7.3369550e+01 5.7963882e+01 7.3499996e+01 5.6272781e+01 2.7635063e+01 3.7397296e+01 3.4802286e+01 6.0813122e+01 6.1467578e+01 4.3830826e+01 5.3060222e+01 6.6374351e+01 4.9894671e+01 6.9447778e+01 6.8444173e+01 6.3001418e+01 6.7458391e+01 6.2386742e+01 5.6093410e+01 6.5882701e+01 1.8803970e+01 1.6330222e+01 2.4993960e+01 3.7096809e+01 4.1039510e+01 3.3848989e+01 4.0205490e+01 5.0752482e+01 5.1450715e+01 2.7941391e+01 5.5775860e+01 5.0226228e+01 5.2407318e+01 5.6308062e+01 7.3061762e+01 4.7737804e+01 2.6252707e+01 5.3820136e+01 5.6994581e+01 6.9677873e+01 3.8670050e+01 8.1401648e+01 2.4539751e+01 4.6207082e+01 6.8627530e+01 6.1378753e+01 6.4189149e+01 4.3707019e+01 6.7945955e+01 5.4532368e+01 6.8787773e+01 4.3199685e+01 2.4518436e+01 3.4685578e+01 3.2370815e+01 4.6163795e+01 5.2250136e+01 3.0258917e+01 4.5056990e+01 5.7832151e+01 4.7542988e+01 6.7842830e+01 6.3974828e+01 6.0124429e+01 5.7925654e+01 5.7312437e+01 5.3979935e+01 6.0898714e+01 5.9323624e+00 0.0000000e+00 1.0444497e+01 2.9922183e+01 2.8579166e+01 2.1846997e+01 3.6074363e+01 - 6.3457259e+01 7.0870779e+01 4.1910686e+01 6.7348489e+01 6.6554855e+01 5.7752717e+01 6.9351745e+01 8.5529924e+01 5.6940709e+01 3.8520737e+01 7.0375840e+01 7.6585087e+01 7.3314923e+01 5.9463969e+01 8.8746611e+01 4.1132189e+01 5.3162085e+01 8.5624617e+01 6.1841092e+01 7.2790407e+01 5.2119128e+01 7.4917159e+01 5.7230457e+01 8.2317428e+01 6.4410097e+01 3.0115173e+01 4.1003192e+01 4.3722568e+01 6.9877558e+01 7.0557396e+01 5.2750346e+01 6.2214013e+01 7.2718682e+01 5.3215347e+01 7.7661295e+01 7.2892074e+01 6.7935191e+01 7.7802598e+01 7.2252210e+01 6.4540799e+01 7.4991194e+01 2.7729220e+01 2.5631860e+01 3.2668166e+01 4.5824891e+01 4.9359789e+01 4.1734659e+01 4.6116525e+01 4.4055912e+01 4.1645673e+01 2.4738298e+01 5.5546766e+01 4.6342119e+01 5.4728100e+01 4.6602823e+01 7.4517200e+01 3.8685780e+01 1.7315956e+01 5.2797366e+01 5.5291580e+01 6.2600067e+01 3.3033819e+01 8.5971842e+01 1.5370608e+01 5.0238652e+01 6.9654397e+01 5.6697321e+01 6.8815246e+01 3.5322324e+01 6.2749625e+01 5.0008423e+01 7.3001463e+01 3.5391972e+01 2.4228459e+01 3.3570443e+01 3.9830468e+01 3.9940877e+01 5.1972025e+01 2.3923978e+01 4.7645040e+01 5.4328744e+01 4.7932096e+01 7.4534942e+01 6.3431086e+01 6.1755037e+01 5.8536623e+01 6.1804642e+01 6.0823283e+01 6.5148508e+01 1.2044072e+01 1.0444497e+01 0.0000000e+00 3.4307702e+01 2.7121961e+01 2.0710083e+01 3.8625257e+01 - 6.4938467e+01 8.0704283e+01 4.1062795e+01 4.8233553e+01 5.5647896e+01 3.6194106e+01 9.0027983e+01 5.8011372e+01 8.0198785e+01 5.6308881e+01 5.1178234e+01 5.9798398e+01 1.0236814e+02 5.4961296e+01 5.5668875e+01 5.0817184e+01 2.6441425e+01 6.0993665e+01 9.2841787e+01 4.0445555e+01 7.6720259e+01 1.0192806e+02 8.7620660e+01 5.3856976e+01 7.1771075e+01 5.6677134e+01 6.4911153e+01 2.2873770e+01 7.1881310e+01 7.3715465e+01 5.6672269e+01 6.2697099e+01 8.8358051e+01 7.5563470e+01 5.0662708e+01 9.1832837e+01 8.3823007e+01 6.8429207e+01 5.6458040e+01 5.2762740e+01 6.8312718e+01 3.2570567e+01 3.4951228e+01 4.3952011e+01 2.6118396e+01 4.0078765e+01 3.6783574e+01 2.7676206e+01 5.0797190e+01 6.2576016e+01 2.9831529e+01 3.5231043e+01 3.5929855e+01 3.1941349e+01 7.7480851e+01 4.4441865e+01 7.0881045e+01 4.6877048e+01 3.0584418e+01 3.6585457e+01 9.6688638e+01 3.3556212e+01 5.2098768e+01 4.1743403e+01 2.2603769e+01 4.2008943e+01 9.0595691e+01 3.4897484e+01 6.8853524e+01 9.5174920e+01 8.3746079e+01 4.1877272e+01 5.3423655e+01 5.4051469e+01 6.2254123e+01 1.7185864e+01 5.0338990e+01 6.0107251e+01 3.8496516e+01 5.1283835e+01 7.7237182e+01 7.2963315e+01 4.6612794e+01 8.5966099e+01 8.0155107e+01 5.1544516e+01 4.4702060e+01 4.9170762e+01 5.9385771e+01 2.4905153e+01 2.9922183e+01 3.4307702e+01 0.0000000e+00 1.7529137e+01 1.8957997e+01 1.7414248e+01 - 6.7042110e+01 8.6401320e+01 4.4522309e+01 5.6228270e+01 6.4679939e+01 4.2394779e+01 9.0806703e+01 7.1527671e+01 7.8436074e+01 5.6132456e+01 6.3576005e+01 7.4227547e+01 9.8317754e+01 6.4888954e+01 6.8728685e+01 5.2828824e+01 3.6612932e+01 7.7077066e+01 8.8540412e+01 5.4861540e+01 7.5061503e+01 1.0126723e+02 8.4026061e+01 7.1188965e+01 7.9679190e+01 5.5570881e+01 6.5754708e+01 3.8903062e+01 8.2005994e+01 8.4404824e+01 6.5322671e+01 7.3746499e+01 9.4128108e+01 7.7061780e+01 6.7253595e+01 9.5485082e+01 8.8327027e+01 8.3230957e+01 7.2359686e+01 6.6034393e+01 8.1412481e+01 3.8086074e+01 3.9606411e+01 4.8149269e+01 4.0660805e+01 5.0413846e+01 4.5002407e+01 3.6865270e+01 3.5651268e+01 4.6997828e+01 1.8809777e+01 3.2140273e+01 2.2980549e+01 3.5113345e+01 6.3500761e+01 4.7960155e+01 5.8046378e+01 3.5267684e+01 2.5746767e+01 3.1502455e+01 8.5724717e+01 1.7776104e+01 6.2877153e+01 2.9205365e+01 3.1206563e+01 4.5004117e+01 8.2791516e+01 4.6504041e+01 5.7333926e+01 8.7027474e+01 7.6295594e+01 5.2614607e+01 4.1000447e+01 5.0768375e+01 5.8730380e+01 3.2290429e+01 3.9216682e+01 5.8980255e+01 2.7354968e+01 5.4071723e+01 7.1588181e+01 7.1386281e+01 6.1230782e+01 8.3905121e+01 8.0837227e+01 5.2677272e+01 5.3632879e+01 6.0382217e+01 6.6194766e+01 2.3525871e+01 2.8579166e+01 2.7121961e+01 1.7529137e+01 0.0000000e+00 8.3379586e+00 2.0396738e+01 - 6.0587547e+01 7.8696820e+01 3.7869414e+01 5.3896844e+01 5.9803687e+01 4.1393218e+01 8.2520801e+01 7.1254863e+01 7.0114512e+01 4.7840550e+01 6.0492950e+01 7.0626670e+01 9.0371198e+01 5.8813818e+01 7.1489399e+01 4.4962167e+01 3.6457496e+01 7.5683811e+01 8.1141611e+01 5.6689136e+01 6.6804474e+01 9.3939345e+01 7.6647045e+01 7.1703236e+01 7.2566090e+01 4.8226362e+01 5.9100002e+01 3.7558093e+01 7.5541363e+01 7.9571984e+01 5.8543878e+01 6.9846206e+01 8.7701997e+01 7.1366782e+01 6.8996113e+01 8.9978561e+01 8.3668375e+01 7.9713970e+01 7.0838910e+01 6.5409575e+01 7.9230647e+01 3.1022940e+01 3.2501720e+01 4.0531789e+01 3.7542435e+01 4.5015087e+01 3.8824573e+01 3.3608483e+01 3.4988025e+01 4.7318215e+01 1.3385812e+01 3.5447865e+01 2.8753918e+01 3.5953027e+01 6.0193919e+01 5.4296042e+01 5.3059464e+01 2.9090492e+01 3.3051142e+01 3.9803157e+01 8.0161332e+01 2.2975509e+01 6.7302589e+01 2.3455095e+01 3.2075290e+01 5.2698309e+01 7.6598426e+01 5.0539270e+01 5.1960633e+01 8.2475794e+01 7.0182182e+01 5.8367375e+01 4.1913268e+01 4.4331464e+01 5.3495051e+01 3.2366085e+01 4.2101301e+01 5.9859380e+01 2.7969869e+01 5.4316374e+01 6.9882946e+01 6.6798016e+01 6.4598541e+01 8.0831136e+01 7.7795720e+01 5.6869145e+01 5.7129269e+01 6.1059084e+01 6.7739627e+01 1.6527262e+01 2.1846997e+01 2.0710083e+01 1.8957997e+01 8.3379586e+00 0.0000000e+00 2.0008075e+01 - 5.3277883e+01 7.8640757e+01 3.2314474e+01 3.5998441e+01 4.7290161e+01 2.2109777e+01 8.8101213e+01 5.2937279e+01 7.7073141e+01 5.2966379e+01 4.5229543e+01 5.8855583e+01 1.0117284e+02 5.2368513e+01 5.4037694e+01 4.5446623e+01 1.7367667e+01 6.1240972e+01 9.4706847e+01 3.9996616e+01 7.5206474e+01 1.0602603e+02 9.0162351e+01 5.9776762e+01 7.3459887e+01 6.0968977e+01 7.1731172e+01 3.5362959e+01 7.4039221e+01 8.3640239e+01 5.8623192e+01 7.4575014e+01 9.5869548e+01 8.4797970e+01 6.2586984e+01 1.0181080e+02 9.5495856e+01 7.7298315e+01 6.8322572e+01 6.8142201e+01 8.1988147e+01 3.4802325e+01 3.8923846e+01 4.5203214e+01 2.8851031e+01 3.7047602e+01 3.3695883e+01 1.8856141e+01 4.0944063e+01 6.5681765e+01 2.2384678e+01 2.2154779e+01 3.0511279e+01 1.6839639e+01 7.8725832e+01 4.1985123e+01 7.0128878e+01 4.5584481e+01 2.8383940e+01 4.2597073e+01 9.7118594e+01 3.7025353e+01 5.1396831e+01 4.0495219e+01 1.2738311e+01 4.8629517e+01 9.3405814e+01 3.5432558e+01 6.9541053e+01 1.0130939e+02 8.7228963e+01 5.2381738e+01 6.0990446e+01 6.0072473e+01 7.0502350e+01 3.2969473e+01 5.9541675e+01 7.5272093e+01 4.6955733e+01 6.7424633e+01 8.8711377e+01 8.3177472e+01 6.0076562e+01 9.8033331e+01 9.3298535e+01 6.7466656e+01 6.1724384e+01 6.6032510e+01 7.6726753e+01 3.0186745e+01 3.6074363e+01 3.8625257e+01 1.7414248e+01 2.0396738e+01 2.0008075e+01 0.0000000e+00 diff --git a/examples/wholebrainWC/connectivity_96/weights.txt b/examples/wholebrainWC/connectivity_96/weights.txt deleted file mode 100644 index 739160d9..00000000 --- a/examples/wholebrainWC/connectivity_96/weights.txt +++ /dev/null @@ -1,96 +0,0 @@ -3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 1.0000000e+00 3.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 1.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 1.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 1.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 1.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 2.0000000e+00 2.0000000e+00 0.0000000e+00 1.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 1.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 1.0000000e+00 1.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 1.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 1.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 1.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 2.0000000e+00 2.0000000e+00 0.0000000e+00 1.0000000e+00 3.0000000e+00 1.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 1.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 1.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 1.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 1.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 1.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 1.0000000e+00 2.0000000e+00 1.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 1.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 2.0000000e+00 3.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 1.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 2.0000000e+00 2.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 1.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 1.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 1.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 1.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 1.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 1.0000000e+00 1.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 1.0000000e+00 0.0000000e+00 1.0000000e+00 1.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 1.0000000e+00 1.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 1.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 1.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 1.0000000e+00 0.0000000e+00 1.0000000e+00 1.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 1.0000000e+00 0.0000000e+00 1.0000000e+00 1.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 1.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 1.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 1.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 1.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 3.0000000e+00 3.0000000e+00 1.0000000e+00 1.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 1.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 1.0000000e+00 3.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 1.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 1.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 1.0000000e+00 2.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 1.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 1.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 1.0000000e+00 1.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 - 2.0000000e+00 2.0000000e+00 0.0000000e+00 1.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 - 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 1.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 1.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 - 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 2.0000000e+00 1.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 1.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 1.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 1.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 1.0000000e+00 1.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 1.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 1.0000000e+00 1.0000000e+00 2.0000000e+00 1.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 1.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 1.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 1.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 1.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 1.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 1.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 1.0000000e+00 1.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 1.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 1.0000000e+00 0.0000000e+00 1.0000000e+00 1.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 1.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 1.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 1.0000000e+00 1.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 1.0000000e+00 2.0000000e+00 0.0000000e+00 1.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 1.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 1.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 1.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 - 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 1.0000000e+00 0.0000000e+00 1.0000000e+00 1.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 1.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 1.0000000e+00 0.0000000e+00 1.0000000e+00 1.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 1.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 1.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 1.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 1.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 1.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 1.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 1.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 0.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 - 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 diff --git a/examples/wholebrainWC/small_LB.jl b/examples/wholebrainWC/small_LB.jl deleted file mode 100644 index 5f9fc4e8..00000000 --- a/examples/wholebrainWC/small_LB.jl +++ /dev/null @@ -1,51 +0,0 @@ -using Plots, Neuroblox, OrdinaryDiffEq, MetaGraphs, Graphs, CSV, DataFrames,LinearAlgebra, MAT, Random, Plots - -clb = [0.0 1.0 0.0; 0.0 0.0 1.0; 1.0 0.0 0.0] - -function LinearConnectionsLB(;name, sys=sys, adj_matrix=adj_matrix, connector=connector) - adj = adj_matrix .* connector - eqs = [] - for region_num in 1:length(sys) - norm_factor = sum(adj_matrix[:, region_num]) - # @show num_conn - push!(eqs, sys[region_num].jcn ~ sum(adj[:, region_num])/norm_factor) - end - return @named Circuit = ODESystem(eqs, systems = sys) -end - -blox = [] -for i = 1:3 - lb = LarterBreakspearBlox(name=Symbol("LB$i")) - push!(blox,lb) -end - -sys = [b.odesystem for b in blox] -con = [s.connector for s in blox] -@named LB_circuit_lin = LinearConnectionsLB(sys=sys, adj_matrix=clb,connector=con) -mysys = structural_simplify(LB_circuit_lin) - -mysys.states -mysys.ps - -uw = rand(Int(length(mysys.states)/3)) -uv = 0.1*rand(Int(length(mysys.states)/3)) .- 0.05 -uz = 0.1*rand(Int(length(mysys.states)/3)) .- 0.05 -u0 = collect(Iterators.flatten(zip(uv,uz,uw))) - -prob = ODEProblem(mysys,u0,(0.0,6e5),[]) - -p_new = prob.p -for t_index in 1:3 - p_new[(t_index-1)*2+1] = 0.35 - p_new[(t_index-1)*2+2] = 0.65 -end -prob2 = remake(prob;p=p_new) -sol2 = solve(prob2,Rodas5(),saveat=0.1) - -plot(sol2,xlim=(0,600),ylim=(-1,1)) -savefig("LBsmall.png") - - - - - diff --git a/examples/wholebrainWC/wb_LB.jl b/examples/wholebrainWC/wb_LB.jl deleted file mode 100644 index 3cd46a80..00000000 --- a/examples/wholebrainWC/wb_LB.jl +++ /dev/null @@ -1,52 +0,0 @@ -using Plots, Neuroblox, OrdinaryDiffEq, MetaGraphs, Graphs, CSV, DataFrames,LinearAlgebra, MAT, Random, Plots - -connLB = matread(joinpath(@__DIR__, "DATA","mean_structural_connectivity.mat")) -clb = connLB["mean_structural_connectivity"] - -function LinearConnectionsLB(;name, sys=sys, adj_matrix=adj_matrix, connector=connector) - adj = adj_matrix .* connector - eqs = [] - for region_num in 1:length(sys) - norm_factor = sum(adj_matrix[:, region_num]) - # @show num_conn - push!(eqs, sys[region_num].jcn ~ sum(adj[:, region_num])/norm_factor) - end - return @named Circuit = ODESystem(eqs, systems = sys) -end - -blox = [] -for i = 1:78 - lb = LarterBreakspearBlox(name=Symbol("LB$i")) - push!(blox,lb) -end - -sys = [b.odesystem for b in blox] -con = [s.connector for s in blox] -@named LB_circuit_lin = LinearConnectionsLB(sys=sys, adj_matrix=clb,connector=con) -mysys = structural_simplify(LB_circuit_lin) - -mysys.states -mysys.ps - -uw = rand(Int(length(mysys.states)/3)) -uv = 0.1*rand(Int(length(mysys.states)/3)) .- 0.05 -uz = 0.1*rand(Int(length(mysys.states)/3)) .- 0.05 -u0 = collect(Iterators.flatten(zip(uv,uz,uw))) - -prob = ODEProblem(mysys,u0,(0.0,6e5),[]) - -p_new = prob.p -for t_index in 1:78 - p_new[(t_index-1)*2+1] = 0.35 - p_new[(t_index-1)*2+2] = 0.61 -end -prob2 = remake(prob;p=p_new) -sol2 = solve(prob2,Rodas5(),saveat=0.1) - -plot(sol2.t,sol2[1,:],label=false,xlim=(0,600),ylim=(-1,1)) - - - - - - diff --git a/examples/wholebrainWC/wholebrainLB.jl b/examples/wholebrainWC/wholebrainLB.jl deleted file mode 100644 index baa0bc8d..00000000 --- a/examples/wholebrainWC/wholebrainLB.jl +++ /dev/null @@ -1,155 +0,0 @@ -### A Pluto.jl notebook ### -# v0.19.19 - -using Markdown -using InteractiveUtils - -# This Pluto notebook uses @bind for interactivity. When running this notebook outside of Pluto, the following 'mock version' of @bind gives bound variables a default value (instead of an error). -macro bind(def, element) - quote - local iv = try Base.loaded_modules[Base.PkgId(Base.UUID("6e696c72-6542-2067-7265-42206c756150"), "AbstractPlutoDingetjes")].Bonds.initial_value catch; b -> missing; end - local el = $(esc(element)) - global $(esc(def)) = Core.applicable(Base.get, el) ? Base.get(el) : iv(el) - el - end -end - -# ╔═╡ 44e6a44a-d577-11ec-384e-23dbb7b36131 -begin - import Pkg - Pkg.add("CSV") - Pkg.add("DataFrames") - Pkg.add("MAT") - Pkg.add("Plots") - Pkg.add("OrdinaryDiffEq") - Pkg.develop(path=joinpath(@__DIR__, "..", "..","..", "Neuroblox.jl")) - using Plots, Neuroblox, OrdinaryDiffEq, CSV, DataFrames,LinearAlgebra, MAT, Random -end - -# ╔═╡ 9b4e0bc6-4af6-4311-be1b-5948ec818b29 -connectivity = CSV.read(joinpath(@__DIR__,"connectivity_96/weights.txt"), DataFrame; - types=Float64, - header=false, - delim=' ', - ignorerepeated = true) - -# ╔═╡ 34b168a9-529f-4b9f-a616-713f6a0d644b -connLB = matread(joinpath(@__DIR__, "DATA","mean_structural_connectivity.mat")) - -# ╔═╡ a22cd490-b682-482e-9601-3ac82f49770a -clb = connLB["mean_structural_connectivity"] - -# ╔═╡ f43cde71-80f3-462b-b792-0be92f9f28bc -0.140202/sum(clb[:,1]) - -# ╔═╡ ef5dde28-2525-452e-9428-08f2708c36f5 -c = Matrix{Float64}(connectivity) - -# ╔═╡ 706e0021-e86d-4e96-8b79-87277c628afd -begin - blox = [] - for i = 1:78 - lb = LarterBreakspearBlox(name=Symbol("LB$i")) - push!(blox,lb) - end -end - -# ╔═╡ 1abbb345-e14c-4501-9717-c09b25d73e91 -sys = [b.odesystem for b in blox] - -# ╔═╡ 4e617a58-6887-4782-941a-b2e387272d5b -function LinearConnectionsWC(;name, sys=sys, adj_matrix=adj_matrix, connector=connector) - adj = adj_matrix .* connector - eqs = [] - for region_num in 1:length(sys) - norm_factor = sum(adj_matrix[:, region_num]) - # @show num_conn - push!(eqs, sys[region_num].jcn ~ sum(adj[:, region_num])/norm_factor) - end - return @named Circuit = ODESystem(eqs, systems = sys) -end - -# ╔═╡ abac20d3-bdcb-4ed6-b807-4278a72bc0d3 -connect = [s.connector for s in blox] - -# ╔═╡ 99dba142-6ee9-4ffa-b9dc-a377c0de9f2a -@named LB_Circuit_lin = LinearConnectionsWC(sys=sys, adj_matrix=clb, connector=connect) - -# ╔═╡ eb905a35-b314-4aa4-8f31-bdf382d8f528 -equations(LB_Circuit_lin)[1] - -# ╔═╡ 69920cca-0cd3-4761-92f5-8dcca67500dc -mysys = structural_simplify(LB_Circuit_lin) - -# ╔═╡ d8f367ad-52dd-4cc2-9c65-0f84cd22d62e -mysys.states - -# ╔═╡ d593209e-2fc8-40c0-883b-935b5512c779 -mysys.ps - -# ╔═╡ 5865eab8-fc50-417c-85e6-32a8915ce3cf -C_list = [ s for s in mysys.ps if endswith("₊C", string(s))] - -# ╔═╡ 4d417746-9435-4ca9-9ce3-299dc848e5c1 -deltaVZ_list = [ s for s in mysys.ps if endswith("₊δ_VZ", string(s))] - -# ╔═╡ 649e0326-64d8-436e-818d-2705d16a74a0 -begin - uw = 0.4*rand(Int(length(mysys.states)/3)) .+ 0.11 - uv = 0.9*rand(Int(length(mysys.states)/3)) .- 0.6 - uz = 0.9*rand(Int(length(mysys.states)/3)) .- 0.9 - u0 = collect(Iterators.flatten(zip(uv,uz,uw))) -end - -# ╔═╡ 9778982a-e706-457f-8723-703d6fefbdb0 -prob = ODEProblem(mysys,u0,(0.0,100.0),[]) - -# ╔═╡ 41587582-f793-4198-af39-7cd0637d57cc -md""" -coup -$(@bind coup html"") -delta -$(@bind delta html"") -""" - -# ╔═╡ b201b708-908a-4321-8c06-da3b442af069 -begin - p_new = Dict() - for (c,d) in zip(C_list,deltaVZ_list) - p_new[c] = coup - p_new[d] = delta - end - prob2 = remake(prob;p=p_new) - sol = solve(prob2,Rodas4(),saveat=0.1) -end - -# ╔═╡ 4545b94d-fd25-4a3d-ba30-faeff8c89b8c -plot(sol,label=false,xlim=(0,100),ylim=(-1,3)) - -# ╔═╡ 1357d862-557b-4460-8c20-61c7ec9ef872 -size(sol) - -# ╔═╡ Cell order: -# ╠═44e6a44a-d577-11ec-384e-23dbb7b36131 -# ╠═9b4e0bc6-4af6-4311-be1b-5948ec818b29 -# ╠═34b168a9-529f-4b9f-a616-713f6a0d644b -# ╠═a22cd490-b682-482e-9601-3ac82f49770a -# ╠═f43cde71-80f3-462b-b792-0be92f9f28bc -# ╠═ef5dde28-2525-452e-9428-08f2708c36f5 -# ╠═4e617a58-6887-4782-941a-b2e387272d5b -# ╠═706e0021-e86d-4e96-8b79-87277c628afd -# ╠═1abbb345-e14c-4501-9717-c09b25d73e91 -# ╠═abac20d3-bdcb-4ed6-b807-4278a72bc0d3 -# ╠═99dba142-6ee9-4ffa-b9dc-a377c0de9f2a -# ╠═eb905a35-b314-4aa4-8f31-bdf382d8f528 -# ╠═69920cca-0cd3-4761-92f5-8dcca67500dc -# ╠═d8f367ad-52dd-4cc2-9c65-0f84cd22d62e -# ╠═d593209e-2fc8-40c0-883b-935b5512c779 -# ╠═5865eab8-fc50-417c-85e6-32a8915ce3cf -# ╠═4d417746-9435-4ca9-9ce3-299dc848e5c1 -# ╠═b201b708-908a-4321-8c06-da3b442af069 -# ╠═649e0326-64d8-436e-818d-2705d16a74a0 -# ╠═9778982a-e706-457f-8723-703d6fefbdb0 -# ╟─41587582-f793-4198-af39-7cd0637d57cc -# ╠═4545b94d-fd25-4a3d-ba30-faeff8c89b8c -# ╠═1357d862-557b-4460-8c20-61c7ec9ef872 diff --git a/examples/wholebrainWC/wholebrainWC.jl b/examples/wholebrainWC/wholebrainWC.jl deleted file mode 100644 index 1c72b524..00000000 --- a/examples/wholebrainWC/wholebrainWC.jl +++ /dev/null @@ -1,195 +0,0 @@ -### A Pluto.jl notebook ### -# v0.19.9 - -using Markdown -using InteractiveUtils - -# This Pluto notebook uses @bind for interactivity. When running this notebook outside of Pluto, the following 'mock version' of @bind gives bound variables a default value (instead of an error). -macro bind(def, element) - quote - local iv = try Base.loaded_modules[Base.PkgId(Base.UUID("6e696c72-6542-2067-7265-42206c756150"), "AbstractPlutoDingetjes")].Bonds.initial_value catch; b -> missing; end - local el = $(esc(element)) - global $(esc(def)) = Core.applicable(Base.get, el) ? Base.get(el) : iv(el) - el - end -end - -# ╔═╡ 44e6a44a-d577-11ec-384e-23dbb7b36131 -begin - import Pkg - # activate the shared project environment - Pkg.activate(@__DIR__) - # instantiate, i.e. make sure that all packages are downloaded - Pkg.instantiate() - Pkg.add("OrdinaryDiffEq") - Pkg.add("MetaGraphs") - Pkg.add("Graphs") - Pkg.add("Plots") - Pkg.add("CSV") - Pkg.add("DataFrames") - Pkg.add("LinearAlgebra") - Pkg.develop(path=joinpath(@__DIR__, "..", "..","..", "Neuroblox.jl")) - using Plots, Neuroblox, OrdinaryDiffEq, MetaGraphs, Graphs, CSV, DataFrames,LinearAlgebra -end - -# ╔═╡ 9b4e0bc6-4af6-4311-be1b-5948ec818b29 -connectivity = CSV.read(joinpath(@__DIR__,"connectivity_96/weights.txt"), DataFrame; - types=Float64, - header=false, - delim=' ', - ignorerepeated = true) - -# ╔═╡ ef5dde28-2525-452e-9428-08f2708c36f5 -c = Matrix{Float64}(connectivity) - -# ╔═╡ b208f23a-69c3-4de0-b0c8-52c36808952e -begin - c_nt = copy(c) - c_nt[diagind(c_nt)] .= 0.0 -end - -# ╔═╡ 512ea317-ce6c-4791-81f6-0fbde4b3b646 -c_nt - -# ╔═╡ 706e0021-e86d-4e96-8b79-87277c628afd -begin - blox = [] - for i = 1:96 - wc = wilson_cowan(name=Symbol("WC$i"), - τ_E=0.5, - τ_I=1.0, - a_E=1.0, - a_I=1.0, - c_EE=4.0, - c_IE=30.0, - c_EI=30.0, - c_II=10.0, - θ_E=0.0, - θ_I=0.0, - η=0.4) - push!(blox,wc) - end -end - -# ╔═╡ 1abbb345-e14c-4501-9717-c09b25d73e91 -sys = [b.odesystem for b in blox] - -# ╔═╡ 4e617a58-6887-4782-941a-b2e387272d5b -function LinearConnectionsWC(;name, sys=sys, adj_matrix=adj_matrix, connector=connector) - adj = adj_matrix .* connector - eqs = [] - for region_num in 1:length(sys) - #num_conn = 1.0*count(!iszero,adj_matrix[:, region_num]) - # @show num_conn - push!(eqs, sys[region_num].jcn ~ sum(adj[:, region_num])) - push!(eqs, sys[region_num].P ~ 0.0) - end - return @named Circuit = ODESystem(eqs, systems = sys) -end - -# ╔═╡ abac20d3-bdcb-4ed6-b807-4278a72bc0d3 -connect = [s.connector for s in blox] - -# ╔═╡ 99dba142-6ee9-4ffa-b9dc-a377c0de9f2a -@named WC_Circuit_lin = LinearConnectionsWC(sys=sys, adj_matrix=c_nt, connector=connect) - -# ╔═╡ 69920cca-0cd3-4761-92f5-8dcca67500dc -mysys = structural_simplify(WC_Circuit_lin) - -# ╔═╡ d8f367ad-52dd-4cc2-9c65-0f84cd22d62e -length(mysys.states) - -# ╔═╡ d593209e-2fc8-40c0-883b-935b5512c779 -mysys.ps - -# ╔═╡ 9778982a-e706-457f-8723-703d6fefbdb0 -prob = ODEProblem(mysys,0.5*ones(length(mysys.states)),(0.0,100.0),[]) - -# ╔═╡ c8a72998-f76a-4bad-acd9-d16c1a997415 -md""" -tau_E -$(@bind tauE html"") -tau_I -$(@bind tauI html"") -eta -$(@bind eta html"") -""" - -# ╔═╡ 9e0007f9-829b-4e70-b38a-ee9120daafdb -md""" -WC₊θ_E -$(@bind tE html"") -WC₊θ_I -$(@bind tI html"") -""" - -# ╔═╡ 4feee4e3-e36c-448f-84de-88f61b586c91 -md""" -WC₊c_EE, -$(@bind cEE html"") -WC₊c_IE -$(@bind cIE html"") -""" - -# ╔═╡ 41587582-f793-4198-af39-7cd0637d57cc -md""" -WC₊c_II, -$(@bind cII html"") -WC₊c_EI -$(@bind cEI html"") -""" - -# ╔═╡ b201b708-908a-4321-8c06-da3b442af069 -begin - p_new = prob.p - for t_index in 1:96 - p_new[(t_index-1)*11+1] = tauE - p_new[(t_index-1)*11+2] = tauI - p_new[(t_index-1)*11+5] = cEE - p_new[(t_index-1)*11+6] = cIE - p_new[(t_index-1)*11+7] = cII - p_new[(t_index-1)*11+8] = cEI - p_new[(t_index-1)*11+9] = tE - p_new[(t_index-1)*11+10] = tI - p_new[(t_index-1)*11+11] = eta - end - prob2 = remake(prob;p=p_new) - sol = solve(prob2,Rodas4(),saveat=0.1) -end - -# ╔═╡ 469f3bd1-18f7-42f8-8972-3e9a4713bf66 - - -# ╔═╡ 20c27485-3265-49b3-bb9e-4867b539a71e -tauE,tauI, tE,tI,cEE,cIE,cII,cEI,eta - -# ╔═╡ 4545b94d-fd25-4a3d-ba30-faeff8c89b8c -plot(sol,label=false) - -# ╔═╡ 1357d862-557b-4460-8c20-61c7ec9ef872 -size(sol) - -# ╔═╡ Cell order: -# ╠═44e6a44a-d577-11ec-384e-23dbb7b36131 -# ╠═9b4e0bc6-4af6-4311-be1b-5948ec818b29 -# ╠═ef5dde28-2525-452e-9428-08f2708c36f5 -# ╠═b208f23a-69c3-4de0-b0c8-52c36808952e -# ╠═512ea317-ce6c-4791-81f6-0fbde4b3b646 -# ╠═4e617a58-6887-4782-941a-b2e387272d5b -# ╠═706e0021-e86d-4e96-8b79-87277c628afd -# ╠═1abbb345-e14c-4501-9717-c09b25d73e91 -# ╠═abac20d3-bdcb-4ed6-b807-4278a72bc0d3 -# ╠═99dba142-6ee9-4ffa-b9dc-a377c0de9f2a -# ╠═69920cca-0cd3-4761-92f5-8dcca67500dc -# ╠═d8f367ad-52dd-4cc2-9c65-0f84cd22d62e -# ╠═d593209e-2fc8-40c0-883b-935b5512c779 -# ╠═9778982a-e706-457f-8723-703d6fefbdb0 -# ╠═b201b708-908a-4321-8c06-da3b442af069 -# ╟─c8a72998-f76a-4bad-acd9-d16c1a997415 -# ╟─9e0007f9-829b-4e70-b38a-ee9120daafdb -# ╟─4feee4e3-e36c-448f-84de-88f61b586c91 -# ╠═41587582-f793-4198-af39-7cd0637d57cc -# ╠═469f3bd1-18f7-42f8-8972-3e9a4713bf66 -# ╠═20c27485-3265-49b3-bb9e-4867b539a71e -# ╠═4545b94d-fd25-4a3d-ba30-faeff8c89b8c -# ╠═1357d862-557b-4460-8c20-61c7ec9ef872 diff --git a/src/Neuroblox.jl b/src/Neuroblox.jl index 640d9b63..a921ab36 100644 --- a/src/Neuroblox.jl +++ b/src/Neuroblox.jl @@ -81,6 +81,7 @@ Para_dict = Dict{Symbol, Union{<: Real, Num}} include("utilities/spectral_tools.jl") include("utilities/learning_tools.jl") +include("utilities/bold_methods.jl") include("control/controlerror.jl") include("measurementmodels/fmri.jl") include("datafitting/spectralDCM.jl") @@ -180,5 +181,6 @@ export create_adjacency_edges! export get_namespaced_sys, nameof export run_experiment!, run_trial! export addnontunableparams, get_hemodynamic_observers +export boldsignal_endo_balloon end \ No newline at end of file diff --git a/src/blox/neural_mass.jl b/src/blox/neural_mass.jl index 1833ba54..2de46978 100644 --- a/src/blox/neural_mass.jl +++ b/src/blox/neural_mass.jl @@ -87,18 +87,18 @@ Create standard linear neural mass blox with a single internal state. There are no parameters in this blox. This is a blox of the sort used for spectral DCM modeling. The formal definition of this blox is: -""" -# ```math -# \\frac{d}{dx} = \\sum{jcn} -# ``` -""" -where ``jcn`` is any input to the blox. + +```math +\\frac{d}{dx} = \\sum{jcn} +``` + +where ``jcn``` is any input to the blox. Arguments: -- `name`: Options containing specification about deterministic. -- `namespace`: Additional namespace above `name` if needed for inheritance. +- name: Options containing specification about deterministic. +- namespace: Additional namespace above name if needed for inheritance. """ struct LinearNeuralMass <: NeuralMassBlox diff --git a/src/utilities/bold_methods.jl b/src/utilities/bold_methods.jl new file mode 100644 index 00000000..8dd2a62c --- /dev/null +++ b/src/utilities/bold_methods.jl @@ -0,0 +1,45 @@ +# Simulate the BOLD signal. + +# This is the version of the Balloon-Windkessel model used in Endo et al. (2020), and subsequently in Antal et al. (2023) and van Niuewenhuizen et al. (2023). +# As it is only a convolution after the simulation of the neural activity, it is not a block for inclusion in the ODESystem. + +""" +Simulated BOLD response to input + +""" + +function boldsignal_endo_balloon(t, y, TR=800, dt_orig=1) + + # Parameters are from Endo et al. (2020). + κ = 0.65; + α = 0.32; + τ = 0.98; + ρ = 0.34; + V_0 = 0.02; + γ = 0.41; + + bold = zeros(size(y)); + + for roi in 1:length(y[:, 1]) + s = ones(1, length(y[1, :])).*0.1; + f = ones(size(s)).*0.1; + v = ones(size(s)).*0.1; + q = ones(size(s)).*0.1; + + for i in 2:length(y[1, :]) + z = y[roi, i]; + dt = t[i]-t[i-1]; + ds = z - (κ*s[i-1])-(γ*(f[i-1]-1)); + df = s[i-1]; + dv = (f[i-1]-(v[i-1]^(1/α)))/τ; + dq = (((f[i-1]*(1-(1-(ρ^(1/f[i-1])))))/ρ)-(((v[i-1]^(1/α))*(q[i-1]))/v[i-1]))/τ; + s[i] = s[i-1] + ds*dt; + f[i] = f[i-1] + df*dt; + v[i] = v[i-1] + dv*dt; + q[i] = q[i-1] + dq*dt; + end + bold[roi, :] = V_0 .* ((7 .* ρ .* (1 .- q ./ v)) .+ ((2 .* ρ .- 0.2) .* (1 .-v ))); + end + + return (bold[:, 1:Int(round(TR/dt_orig)):end]) +end \ No newline at end of file From fd9d8a13ddbe9b67596940a20f8c848db2e49027 Mon Sep 17 00:00:00 2001 From: agchesebro <76024790+agchesebro@users.noreply.github.com> Date: Tue, 23 Jan 2024 15:33:37 -0500 Subject: [PATCH 16/22] Final tidying --- .../whole_brain_larter_breakspear.jl | 4 +- src/blox/neural_mass.jl | 72 +++++++++---------- 2 files changed, 37 insertions(+), 39 deletions(-) diff --git a/examples/larter_breakspear/whole_brain_larter_breakspear.jl b/examples/larter_breakspear/whole_brain_larter_breakspear.jl index 07e996e9..f9a26550 100644 --- a/examples/larter_breakspear/whole_brain_larter_breakspear.jl +++ b/examples/larter_breakspear/whole_brain_larter_breakspear.jl @@ -25,7 +25,7 @@ using StatsBase # Needed for rescaling the DTI matrix # Load the data # As mentioned above, this data is from Rosen and Halgren (2021). You can download the original at https://zenodo.org/records/10150880. # For convenience, we have included the average connectivity matrix (log scaled probability from streamline counts) available from that link within this repository. -data = matread("/Users/achesebro/Documents/GitHub/Neuroblox.jl/examples/larter_breakspear/averageConnectivity_Fpt.mat") +data = matread("averageConnectivity_Fpt.mat") # Extract the data adj = data["Fpt"] @@ -118,7 +118,7 @@ prob = remake(prob; tspan=(0.0, sim_dur)) @time sol = solve(prob, AutoVern7(Rodas4()), saveat=2) # Instead of plotting the data, let's save it out to a CSV file for later analysis -CSV.write("/Users/achesebro/Documents/GitHub/Neuroblox.jl/examples/larter_breakspear/example_output.csv", DataFrame(sol)) +CSV.write("example_output.csv", DataFrame(sol)) # You should see a noticeable difference in speed compared to the first time, and notice you save the overhead of structural_simplify. diff --git a/src/blox/neural_mass.jl b/src/blox/neural_mass.jl index 2de46978..ca83bd9f 100644 --- a/src/blox/neural_mass.jl +++ b/src/blox/neural_mass.jl @@ -119,22 +119,21 @@ end Create a harmonic oscillator blox with the specified parameters. The formal definition of this blox is: - """ - # ```math - # \\frac{dx}{dt} = y-(2*\\omega*\\zeta*x)+ k*(2/\\pi)*(atan((\\sum{jcn})/h) - # \\frac{dy}{dt} = -(\\omega^2)*x - # ``` -""" + +```math +\\frac{dx}{dt} = y-(2*\\omega*\\zeta*x)+ k*(2/\\pi)*(atan((\\sum{jcn})/h) +\\frac{dy}{dt} = -(\\omega^2)*x +``` where ``jcn`` is any input to the blox. Arguments: -- `name`: Name given to `ODESystem` object within the blox. -- `namespace`: Additional namespace above `name` if needed for inheritance. -- `ω`: Base frequency. Note the default value is scaled to give oscillations in milliseconds to match other blocks. -- `ζ`: Damping ratio. -- `k`: Gain. -- `h`: Threshold. +- name: Name given to ODESystem object within the blox. +- namespace: Additional namespace above name if needed for inheritance. +- ω: Base frequency. Note the default value is scaled to give oscillations in milliseconds to match other blocks. +- ζ: Damping ratio. +- k: Gain. +- h: Threshold. """ struct HarmonicOscillator <: NeuralMassBlox params @@ -159,22 +158,22 @@ end Create a Jansen Rit blox as described in Liu et al. The formal definition of this blox is: - """ - # ```math - # \\frac{dx}{dt} = y-\\frac{2}{\\tau}x - # \\frac{dy}{dt} = -\\frac{x}{\\tau^2} + \\frac{H}{\\tau} [\\frac{2\\lambda}{1+\\text{exp}(-r*\\sum{jcn})} - \\lambda] - # ``` -""" - where ``jcn`` is any input to the blox. + +```math +\\frac{dx}{dt} = y-\\frac{2}{\\tau}x +\\frac{dy}{dt} = -\\frac{x}{\\tau^2} + \\frac{H}{\\tau} [\\frac{2\\lambda}{1+\\text{exp}(-r*\\sum{jcn})} - \\lambda] +``` + +where ``jcn`` is any input to the blox. Arguments: -- `name`: Name given to `ODESystem` object within the blox. -- `namespace`: Additional namespace above `name` if needed for inheritance. -- `τ`: Time constant. This is changed from the original source as the time constant was in seconds, while all our blocks are in milliseconds. -- `H`: See equation for use. -- `λ`: See equation for use. -- `r`: See equation for use. -- `cortical`: Boolean to determine whether to use cortical or subcortical parameters. Specifying any of the parameters above will override this. +- name: Name given to ODESystem object within the blox. +- namespace: Additional namespace above name if needed for inheritance. +- τ: Time constant. This is changed from the original source as the time constant was in seconds, while all our blocks are in milliseconds. +- H: See equation for use. +- λ: See equation for use. +- r: See equation for use. +- cortical: Boolean to determine whether to use cortical or subcortical parameters. Specifying any of the parameters above will override this. Citations: 1. Liu C, Zhou C, Wang J, Fietkiewicz C, Loparo KA. The role of coupling connections in a model of the cortico-basal ganglia-thalamocortical neural loop for the generation of beta oscillations. Neural Netw. 2020 Mar;123:381-392. doi: 10.1016/j.neunet.2019.12.021. @@ -217,17 +216,16 @@ end Create a standard Wilson Cowan blox. The formal definition of this blox is: - """ - # ```math - # \\frac{dE}{dt} = \\frac{-E}{\\tau_E} + \\frac{1}{1 + \\text{exp}(-a_E*(c_{EE}*E - c_{IE}*I - \\theta_E + \\eta*(\\sum{jcn}))} - # \\frac{dI}{dt} = \\frac{-I}{\\tau_I} + \\frac{1}{1 + exp(-a_I*(c_{EI}*E - c_{II}*I - \\theta_I)} - # ``` -""" - where ``jcn`` is any input to the blox. + +```math +\\frac{dE}{dt} = \\frac{-E}{\\tau_E} + \\frac{1}{1 + \\text{exp}(-a_E*(c_{EE}*E - c_{IE}*I - \\theta_E + \\eta*(\\sum{jcn}))} +\\frac{dI}{dt} = \\frac{-I}{\\tau_I} + \\frac{1}{1 + exp(-a_I*(c_{EI}*E - c_{II}*I - \\theta_I)} +``` +where ``jcn`` is any input to the blox. Arguments: -- `name`: Name given to `ODESystem` object within the blox. -- `namespace`: Additional namespace above `name` if needed for inheritance. +- name: Name given to ODESystem object within the blox. +- namespace: Additional namespace above name if needed for inheritance. - Others: See equation for use. """ struct WilsonCowan <: NeuralMassBlox @@ -268,8 +266,8 @@ end If you need to modify the parameters, see Chesebro et al. and van Nieuwenhuizen et al. for physiological ranges. Arguments: -- `name`: Name given to `ODESystem` object within the blox. -- `namespace`: Additional namespace above `name` if needed for inheritance. +- name: Name given to ODESystem object within the blox. +- namespace: Additional namespace above name if needed for inheritance. - Other parameters: See reference for full list. Note that parameters are scaled so that units of time are in milliseconds. Citations: From 19fcb4e41d06f58dd97ec32f36e8b88de20356e3 Mon Sep 17 00:00:00 2001 From: david-hofmann Date: Wed, 24 Jan 2024 21:32:25 +0100 Subject: [PATCH 17/22] added blox connectors for CMC and SPM12 based Jansen-Rit. TODO: find a generic solution rather than having a special JR block to deal with the sigmoidal connection function --- src/blox/connections.jl | 42 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/src/blox/connections.jl b/src/blox/connections.jl index a2756f3d..8968066e 100644 --- a/src/blox/connections.jl +++ b/src/blox/connections.jl @@ -178,6 +178,46 @@ function (bc::BloxConnector)( bc(asc_out, neurons_in[end]; kwargs...) end +function (bc::BloxConnector)( + bloxout::CanonicalMicroCircuitBlox, + bloxin::CanonicalMicroCircuitBlox; + kwargs... +) + sysparts_out = blox_parts(bloxout) + sysparts_in = blox_parts(bloxin) + + wm = get_weightmatrix(kwargs, namespaced_nameof(bloxin), namespaced_nameof(bloxout)) + + idxs = findall(!iszero, wm) + for idx in idxs + bc(sysparts_out[idx[2]], sysparts_in[idx[1]]; weight=wm[idx]) + end +end + +# define a sigmoid function +sigmoid(x, r) = one(x) / (one(x) + exp(-r*x)) + +function (bc::BloxConnector)( + bloxout::JansenRitSPM12, + bloxin::JansenRitSPM12; + kwargs... +) + sys_out = get_namespaced_sys(bloxout) + sys_in = get_namespaced_sys(bloxin) + + w = generate_weight_param(bloxout, bloxin; kwargs...) + push!(bc.weights, w) + + x = namespace_expr(bloxout.output, sys_out) + r = namespace_expr(bloxout.params[2], sys_out) + push!(bc.weights, r) + + eq = sys_in.jcn ~ sigmoid(x, r)*w + + accumulate_equation!(bc, eq) +end + + function (bc::BloxConnector)( bloxout::NeuralMassBlox, bloxin::NeuralMassBlox; @@ -308,7 +348,7 @@ function (bc::BloxConnector)( kwargs... ) neurons_in = get_exci_neurons(wta_in) - + for neuron_postsyn in neurons_in bc(neuron_out, neuron_postsyn; kwargs...) end From 1ab4738373d03f02a8a531d21838d78d6551b028 Mon Sep 17 00:00:00 2001 From: david-hofmann Date: Wed, 24 Jan 2024 21:33:57 +0100 Subject: [PATCH 18/22] added get functions for weight matrices as well as for parts of composite bloxs --- src/blox/blox_utilities.jl | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/blox/blox_utilities.jl b/src/blox/blox_utilities.jl index 784a7b15..0a35f4b2 100644 --- a/src/blox/blox_utilities.jl +++ b/src/blox/blox_utilities.jl @@ -122,9 +122,9 @@ function input_equations(blox) if isnothing(idx) namespace_equation( inp ~ 0, - sys, + sys, namespaced_name(inner_namespaceof(blox), nameof(blox)) - ) + ) else namespace_equation( sys_eqs[idx], @@ -158,6 +158,8 @@ weight_learning_rules(bc::BloxConnector) = bc.learning_rules weight_learning_rules(blox::AbstractComponent) = weight_learning_rules(blox.connector) weight_learning_rules(blox::CompositeBlox) = weight_learning_rules(blox.connector) +get_blox_parts(blox) = blox.parts + function get_weight(kwargs, name_blox1, name_blox2) if haskey(kwargs, :weight) return kwargs[:weight] @@ -166,6 +168,14 @@ function get_weight(kwargs, name_blox1, name_blox2) end end +function get_weightmatrix(kwargs, name_blox1, name_blox2) + if haskey(kwargs, :weightmatrix) + return kwargs[:weightmatrix] + else + error("Connection weight from $name_blox1 to $name_blox2 is not specified.") + end +end + function get_delay(kwargs, name_blox1, name_blox2) if haskey(kwargs, :delay) return kwargs[:delay] From 071b9bcadde8da3410e26519c392fe437d641488 Mon Sep 17 00:00:00 2001 From: david-hofmann Date: Wed, 24 Jan 2024 21:35:24 +0100 Subject: [PATCH 19/22] new canonical micro circuit based on system from graph code-base rather than ODEfromGraph --- src/blox/canonicalmicrocircuit.jl | 91 ++++++++++++------------------- 1 file changed, 36 insertions(+), 55 deletions(-) diff --git a/src/blox/canonicalmicrocircuit.jl b/src/blox/canonicalmicrocircuit.jl index f0060f9e..b5449604 100644 --- a/src/blox/canonicalmicrocircuit.jl +++ b/src/blox/canonicalmicrocircuit.jl @@ -1,62 +1,41 @@ # Canonical micro-circuit model -# two ways to design it: either add function to edges or to blox. - -# some thoughts on design: -# - include measurement models into blox. Or at least define which variables will be measured (which would be the input to the measurement model). -# Differ that from connector, since that is between things. -# - - -@parameters t -D = Differential(t) - -# define a sigmoid function -sigmoid(x::Real, r::Real) = one(x) / (one(x) + exp(-r*x)) """ Jansen-Rit model block for canonical micro circuit, analogous to the implementation in SPM12 """ -mutable struct jansen_rit_spm12 <: AbstractComponent - τ::Num - r::Num - connector::Num - odesystem::ODESystem - function jansen_rit_spm12(;name, τ=1.0, r=2.0/3.0) - params = @parameters τ=τ - sts = @variables x(t)=1.0 y(t)=1.0 jcn(t)=0.0 +mutable struct JansenRitSPM12 <: NeuralMassBlox + params + output + jcn + odesystem + namespace + function JansenRitSPM12(;name, namespace=nothing, τ=1.0, r=2.0/3.0) + p = paramscoping(τ=τ, r=r) + τ, r = p + + sts = @variables x(t)=1.0 [output=true] y(t)=1.0 jcn(t)=0.0 [input=true] eqs = [D(x) ~ y - ((2/τ)*x), D(y) ~ -x/(τ*τ) + jcn/τ] - odesys = ODESystem(eqs, t, sts, params; name=name) - new(τ, r, sigmoid(odesys.x, r), odesys) + + sys = System(eqs, name=name) + new(p, sts[1], sts[3], sys, namespace) end end mutable struct CanonicalMicroCircuitBlox <: CompositeBlox - τ_ss::Num - τ_sp::Num - τ_ii::Num - τ_dp::Num - r_ss::Num - r_sp::Num - r_ii::Num - r_dp::Num - connector::Symbolics.Arr{Num} - noDetail::Vector{Num} - detail::Vector{Num} - bloxinput::Symbolics.Arr{Num} - odesystem::ODESystem - function CanonicalMicroCircuitBlox(;name, τ_ss=0.002, τ_sp=0.002, τ_ii=0.016, τ_dp=0.028, r_ss=2.0/3.0, r_sp=2.0/3.0, r_ii=2.0/3.0, r_dp=2.0/3.0) - @variables jcn(t)[1:4], x(t)[1:4] - - @named ss = jansen_rit_spm12(τ=τ_ss, r=r_ss) # spiny stellate - @named sp = jansen_rit_spm12(τ=τ_sp, r=r_sp) # superficial pyramidal - @named ii = jansen_rit_spm12(τ=τ_ii, r=r_ii) # inhibitory interneurons granular layer - @named dp = jansen_rit_spm12(τ=τ_dp, r=r_dp) # deep pyramidal + namespace + parts + odesystem + connector + function CanonicalMicroCircuitBlox(;name, namespace=nothing, τ_ss=0.002, τ_sp=0.002, τ_ii=0.016, τ_dp=0.028, r_ss=2.0/3.0, r_sp=2.0/3.0, r_ii=2.0/3.0, r_dp=2.0/3.0) + @named ss = JansenRitSPM12(;namespace=namespaced_name(namespace, name), τ=τ_ss, r=r_ss) # spiny stellate + @named sp = JansenRitSPM12(;namespace=namespaced_name(namespace, name), τ=τ_sp, r=r_sp) # superficial pyramidal + @named ii = JansenRitSPM12(;namespace=namespaced_name(namespace, name), τ=τ_ii, r=r_ii) # inhibitory interneurons granular layer + @named dp = JansenRitSPM12(;namespace=namespaced_name(namespace, name), τ=τ_dp, r=r_dp) # deep pyramidal g = MetaDiGraph() - add_vertex!(g, Dict(:blox => ss, :name => name, :jcn => jcn[1])) - add_vertex!(g, Dict(:blox => sp, :name => name, :jcn => jcn[2])) - add_vertex!(g, Dict(:blox => ii, :name => name, :jcn => jcn[3])) - add_vertex!(g, Dict(:blox => dp, :name => name, :jcn => jcn[4])) + sblox_parts = vcat(ss, sp, ii, dp) + add_blox!.(Ref(g), sblox_parts) add_edge!(g, 1, 1, :weight, -800.0) add_edge!(g, 2, 1, :weight, -800.0) @@ -69,14 +48,16 @@ mutable struct CanonicalMicroCircuitBlox <: CompositeBlox add_edge!(g, 3, 4, :weight, -400.0) add_edge!(g, 4, 4, :weight, -200.0) - @named odecmc = ODEfromGraph(g) - eqs = [ - x[1] ~ ss.connector - x[2] ~ sp.connector - x[3] ~ ii.connector - x[4] ~ dp.connector - ] - odesys = extend(ODESystem(eqs, t, name=:connected), odecmc, name=name) - new(τ_ss, τ_sp, τ_ii, τ_dp, r_ss, r_sp, r_ii, r_dp, odesys.x, [odesys.ss.x,odesys.sp.x,odesys.ii.x,odesys.dp.x], [odesys.ss.x,odesys.sp.x,odesys.ii.x,odesys.dp.x], odesys.jcn, odesys) + # Construct a BloxConnector object from the graph + # containing all connection equations from lower levels and this level. + bc = connector_from_graph(g) + # If a namespace is not provided, assume that this is the highest level + # and construct the ODEsystem from the graph. + # If there is a higher namespace, construct only a subsystem containing the parts of this level + # and propagate the BloxConnector object `bc` to the higher level + # to potentially add more terms to the same connections. + sys = isnothing(namespace) ? system_from_graph(g, bc; name) : system_from_parts(sblox_parts; name) + + new(namespace, sblox_parts, sys, bc) end end From 2d6ef22e73eea49108d4a49d8ee5434bd2440ffd Mon Sep 17 00:00:00 2001 From: david-hofmann Date: Thu, 25 Jan 2024 00:20:17 +0100 Subject: [PATCH 20/22] mini edit --- src/Neurographs.jl | 382 ++++++++++++++++++------------------- src/blox/blox_utilities.jl | 4 +- src/blox/connections.jl | 4 +- src/blox/neuron_models.jl | 24 --- test/components.jl | 164 +++------------- 5 files changed, 218 insertions(+), 360 deletions(-) diff --git a/src/Neurographs.jl b/src/Neurographs.jl index 16b04e81..c06835c9 100644 --- a/src/Neurographs.jl +++ b/src/Neurographs.jl @@ -12,153 +12,153 @@ function add_blox!(g::MetaDiGraph,blox) add_vertex!(g, :blox, blox) end -function joinmetagraphs(metagraphs::Vector{T}) where T <: Any - ngraphs = length(metagraphs) +# function joinmetagraphs(metagraphs::Vector{T}) where T <: Any +# ngraphs = length(metagraphs) - wholegraph = MetaDiGraph() - nvertex = 0 - for i = 1:ngraphs - for j in vertices(metagraphs[i].lngraph) - add_vertex!(wholegraph, props(metagraphs[i].lngraph, j)) - end - for e in edges(metagraphs[i].lngraph) - add_edge!(wholegraph, nvertex+src(e), nvertex+dst(e), props(metagraphs[i].lngraph, e)) - end - nvertex += nv(metagraphs[i].lngraph) - end - return wholegraph -end - -function LinearConnections(;name, sys=sys, adj_matrix=adj_matrix, connector=connector) - adj = adj_matrix .* connector - eqs = [] - for region_num in 1:length(sys) - push!(eqs, sys[region_num].jcn ~ sum(adj[:, region_num])) - end - return ODESystem(eqs, name=name, systems=sys) -end - -function SynapticConnections(;name, sys=sys, adj_matrix=adj_matrix, connector=connector) - adj = adj_matrix .* connector - syn_eqs = [ 0~sys[1].V - sys[1].V] - Nrns = length(sys) - for ii = 1:Nrns - # for sparse adj matrices it is efficient to only consider presynaptic neurons for computing synaptic input - presyn = findall(x-> x>0.0, adj_matrix[:,ii]) - wts = adj_matrix[presyn,ii] - presyn_nrn = sys[presyn] - postsyn_nrn = sys[ii] - if length(presyn)>0 - ind = collect(1:length(presyn)) - eqs = [postsyn_nrn.I_syn ~ sum(p-> (presyn_nrn[p].E_syn-postsyn_nrn.V)*adj[presyn[p],ii],ind), - postsyn_nrn.jcn~postsyn_nrn.I_syn] - push!(syn_eqs,eqs[1]) - push!(syn_eqs,eqs[2]) - else - eqs = [postsyn_nrn.I_syn~0, - postsyn_nrn.jcn~postsyn_nrn.I_syn] - push!(syn_eqs,eqs[1]) - push!(syn_eqs,eqs[2]) - end +# wholegraph = MetaDiGraph() +# nvertex = 0 +# for i = 1:ngraphs +# for j in vertices(metagraphs[i].lngraph) +# add_vertex!(wholegraph, props(metagraphs[i].lngraph, j)) +# end +# for e in edges(metagraphs[i].lngraph) +# add_edge!(wholegraph, nvertex+src(e), nvertex+dst(e), props(metagraphs[i].lngraph, e)) +# end +# nvertex += nv(metagraphs[i].lngraph) +# end +# return wholegraph +# end + +# function LinearConnections(;name, sys=sys, adj_matrix=adj_matrix, connector=connector) +# adj = adj_matrix .* connector +# eqs = [] +# for region_num in 1:length(sys) +# push!(eqs, sys[region_num].jcn ~ sum(adj[:, region_num])) +# end +# return ODESystem(eqs, name=name, systems=sys) +# end + +# function SynapticConnections(;name, sys=sys, adj_matrix=adj_matrix, connector=connector) +# adj = adj_matrix .* connector +# syn_eqs = [ 0~sys[1].V - sys[1].V] +# Nrns = length(sys) +# for ii = 1:Nrns +# # for sparse adj matrices it is efficient to only consider presynaptic neurons for computing synaptic input +# presyn = findall(x-> x>0.0, adj_matrix[:,ii]) +# wts = adj_matrix[presyn,ii] +# presyn_nrn = sys[presyn] +# postsyn_nrn = sys[ii] +# if length(presyn)>0 +# ind = collect(1:length(presyn)) +# eqs = [postsyn_nrn.I_syn ~ sum(p-> (presyn_nrn[p].E_syn-postsyn_nrn.V)*adj[presyn[p],ii],ind), +# postsyn_nrn.jcn~postsyn_nrn.I_syn] +# push!(syn_eqs,eqs[1]) +# push!(syn_eqs,eqs[2]) +# else +# eqs = [postsyn_nrn.I_syn~0, +# postsyn_nrn.jcn~postsyn_nrn.I_syn] +# push!(syn_eqs,eqs[1]) +# push!(syn_eqs,eqs[2]) +# end - end - popfirst!(syn_eqs) - @named synaptic_eqs = ODESystem(syn_eqs,t) - synaptic_network = compose(synaptic_eqs, sys;name=name) - return synaptic_network -end - -function ODEfromGraph(g::MetaDiGraph, jcn; name) - vert = [] - sys = [] - for v in vertices(g) - b = get_prop(g, v, :blox) - push!(vert, v) - push!(sys, b.odesystem) - end - eqs = [] - for (i, (v, s)) in enumerate(zip(vert, sys)) - if any(occursin.("jcn(t)", string.(states(s)))) # only connect systems with jcn - if s.jcn isa Symbolics.Arr - input = [] - for vn in inneighbors(g, v) # vertices that point towards s - M = get_prop(g, vn, v, :weightmatrix) - connector = get_prop(g, vn, :blox).connector - push!(input, M*connector) - end - input = sum(input) - for i = 1:length(s.jcn) - push!(eqs, s.jcn[i] ~ input[i]) - end - else - input = Num(0) - for vn in inneighbors(g, v) # vertices that point towards s - input += get_prop(g, vn, :blox).connector * get_prop(g, vn, v, :weight) - end - push!(eqs, s.jcn ~ input + jcn[i]) - end - end - end - return compose(ODESystem(eqs; name=:connected), sys; name=name) -end - -function ODEfromGraph(g::MetaDiGraph ;name) - eqs = [] - sys = [] - for v in vertices(g) - b = get_prop(g, v, :blox) - if isa(b, AbstractBlox) || isa(b, Neuroblox.AbstractComponent) - s = b.odesystem - push!(sys, s) - if any(occursin.("jcn(t)", string.(states(s)))) - if isa(b, AbstractNeuronBlox) - input = Num(0) - for vn in inneighbors(g, v) # vertices that point towards s - bn = get_prop(g, vn, :blox) - if !isa(bn, AbstractNeuronBlox) # only neurons can be inputs to neurons - continue - end - input += bn.connector * get_prop(g, vn, v, :weight) * (bn.odesystem.E_syn - s.V) - end - push!(eqs, s.I_syn ~ input) - push!(eqs, s.jcn ~ s.I_syn) - else - if s.jcn isa Symbolics.Arr - bi = b.bloxinput # bloxinput only exists if s.jcn isa Symbolics.Arr - input = [zeros(Num,length(s.jcn))] - for vn in inneighbors(g, v) # vertices that point towards s - M = get_prop(g, vn, v, :weightmatrix) - connector = get_prop(g, vn, :blox).connector - if connector isa Symbolics.Arr - connector = collect(connector) - end - push!(input, vec(M*connector)) - end - input = sum(input) - for i = 1:length(s.jcn) - push!(eqs, bi[i] ~ input[i]) - end - else - input = Num(0) - for vn in inneighbors(g, v) # vertices that point towards s - connector = get_prop(g,vn,:blox).connector - if connector isa Symbolics.Arr - input += sum(vec(get_prop(g, vn, v, :weightmatrix)*collect(connector))) - else - input += connector * get_prop(g, vn, v, :weight) - end - end - if haskey(props(g,v),:jcn) - input += get_prop(g,v,:jcn) - end - push!(eqs, s.jcn ~ input) - end - end - end - end - end - return compose(ODESystem(eqs, t; name=:connected), sys; name=name) -end +# end +# popfirst!(syn_eqs) +# @named synaptic_eqs = ODESystem(syn_eqs,t) +# synaptic_network = compose(synaptic_eqs, sys;name=name) +# return synaptic_network +# end + +# function ODEfromGraph(g::MetaDiGraph, jcn; name) +# vert = [] +# sys = [] +# for v in vertices(g) +# b = get_prop(g, v, :blox) +# push!(vert, v) +# push!(sys, b.odesystem) +# end +# eqs = [] +# for (i, (v, s)) in enumerate(zip(vert, sys)) +# if any(occursin.("jcn(t)", string.(states(s)))) # only connect systems with jcn +# if s.jcn isa Symbolics.Arr +# input = [] +# for vn in inneighbors(g, v) # vertices that point towards s +# M = get_prop(g, vn, v, :weightmatrix) +# connector = get_prop(g, vn, :blox).connector +# push!(input, M*connector) +# end +# input = sum(input) +# for i = 1:length(s.jcn) +# push!(eqs, s.jcn[i] ~ input[i]) +# end +# else +# input = Num(0) +# for vn in inneighbors(g, v) # vertices that point towards s +# input += get_prop(g, vn, :blox).connector * get_prop(g, vn, v, :weight) +# end +# push!(eqs, s.jcn ~ input + jcn[i]) +# end +# end +# end +# return compose(ODESystem(eqs; name=:connected), sys; name=name) +# end + +# function ODEfromGraph(g::MetaDiGraph ;name) +# eqs = [] +# sys = [] +# for v in vertices(g) +# b = get_prop(g, v, :blox) +# if isa(b, AbstractBlox) || isa(b, Neuroblox.AbstractComponent) +# s = b.odesystem +# push!(sys, s) +# if any(occursin.("jcn(t)", string.(states(s)))) +# if isa(b, AbstractNeuronBlox) +# input = Num(0) +# for vn in inneighbors(g, v) # vertices that point towards s +# bn = get_prop(g, vn, :blox) +# if !isa(bn, AbstractNeuronBlox) # only neurons can be inputs to neurons +# continue +# end +# input += bn.connector * get_prop(g, vn, v, :weight) * (bn.odesystem.E_syn - s.V) +# end +# push!(eqs, s.I_syn ~ input) +# push!(eqs, s.jcn ~ s.I_syn) +# else +# if s.jcn isa Symbolics.Arr +# bi = b.bloxinput # bloxinput only exists if s.jcn isa Symbolics.Arr +# input = [zeros(Num,length(s.jcn))] +# for vn in inneighbors(g, v) # vertices that point towards s +# M = get_prop(g, vn, v, :weightmatrix) +# connector = get_prop(g, vn, :blox).connector +# if connector isa Symbolics.Arr +# connector = collect(connector) +# end +# push!(input, vec(M*connector)) +# end +# input = sum(input) +# for i = 1:length(s.jcn) +# push!(eqs, bi[i] ~ input[i]) +# end +# else +# input = Num(0) +# for vn in inneighbors(g, v) # vertices that point towards s +# connector = get_prop(g,vn,:blox).connector +# if connector isa Symbolics.Arr +# input += sum(vec(get_prop(g, vn, v, :weightmatrix)*collect(connector))) +# else +# input += connector * get_prop(g, vn, v, :weight) +# end +# end +# if haskey(props(g,v),:jcn) +# input += get_prop(g,v,:jcn) +# end +# push!(eqs, s.jcn ~ input) +# end +# end +# end +# end +# end +# return compose(ODESystem(eqs, t; name=:connected), sys; name=name) +# end function get_blox(g::MetaDiGraph) bs = [] @@ -174,6 +174,21 @@ end get_sys(g::MetaDiGraph) = get_sys.(get_blox(g)) +function connector_from_graph(g::MetaDiGraph) + bloxs = get_blox(g) + link = BloxConnector(bloxs) + for v in vertices(g) + b = get_prop(g, v, :blox) + for vn in inneighbors(g, v) + bn = get_prop(g, vn, :blox) + kwargs = props(g, vn, v) + link(bn, b; kwargs...) + end + end + + return link +end + # Helper function to get delays from a graph function graph_delays(g::MetaDiGraph) bc = connector_from_graph(g) @@ -218,21 +233,6 @@ function system_from_parts(parts::AbstractVector; name) return compose(ODESystem(Equation[], t, [], []; name), get_sys.(parts)) end -function connector_from_graph(g::MetaDiGraph) - bloxs = get_blox(g) - link = BloxConnector(bloxs) - for v in vertices(g) - b = get_prop(g, v, :blox) - for vn in inneighbors(g, v) - bn = get_prop(g, vn, :blox) - kwargs = props(g, vn, v) - link(bn, b; kwargs...) - end - end - - return link -end - function action_selection_from_graph(g::MetaDiGraph) idxs = findall(vertices(g)) do v b = get_prop(g, v, :blox) @@ -277,38 +277,38 @@ function learning_rules_from_graph(g::MetaDiGraph) return d end -function spikeconnections(;name, sys=sys, psp_amplitude=psp_amplitude, τ=τ, spiketimes=spiketimes) - psps = psp_amplitude .* exp.(-(t .- spiketimes) ./ τ) - eqs = [] - for region_num in 1:length(sys) - push!(eqs, sys[region_num].jcn ~ sum(psps[:, region_num])) - end - return ODESystem(eqs, t, name=name, systems=sys) -end - -function connectcomplexblox(bloxlist, adjacency_matrices ;name) - nr = length(bloxlist) - g = joinmetagraphs(bloxlist) - row = 0 - for i = 1:nr - nodes_source = nv(bloxlist[i].lngraph) - col = 0 - for j = 1:nr - nodes_sink = nv(bloxlist[j].lngraph) - if i == j - col += nodes_sink - continue - end - for idx in CartesianIndices(adjacency_matrices[i, j]) - add_edge!(g, row+idx[1], col+idx[2], :weight, adjacency_matrices[i, j][idx]) - end - col += nodes_sink - end - row += nodes_source - end +# function spikeconnections(;name, sys=sys, psp_amplitude=psp_amplitude, τ=τ, spiketimes=spiketimes) +# psps = psp_amplitude .* exp.(-(t .- spiketimes) ./ τ) +# eqs = [] +# for region_num in 1:length(sys) +# push!(eqs, sys[region_num].jcn ~ sum(psps[:, region_num])) +# end +# return ODESystem(eqs, t, name=name, systems=sys) +# end + +# function connectcomplexblox(bloxlist, adjacency_matrices ;name) +# nr = length(bloxlist) +# g = joinmetagraphs(bloxlist) +# row = 0 +# for i = 1:nr +# nodes_source = nv(bloxlist[i].lngraph) +# col = 0 +# for j = 1:nr +# nodes_sink = nv(bloxlist[j].lngraph) +# if i == j +# col += nodes_sink +# continue +# end +# for idx in CartesianIndices(adjacency_matrices[i, j]) +# add_edge!(g, row+idx[1], col+idx[2], :weight, adjacency_matrices[i, j][idx]) +# end +# col += nodes_sink +# end +# row += nodes_source +# end - return ODEfromGraph(g, name=name) -end +# return ODEfromGraph(g, name=name) +# end ## Create Learning Loop function create_rl_loop(;name, ROIs, datasets, parameters, c_ext) diff --git a/src/blox/blox_utilities.jl b/src/blox/blox_utilities.jl index 0a35f4b2..61787483 100644 --- a/src/blox/blox_utilities.jl +++ b/src/blox/blox_utilities.jl @@ -127,8 +127,8 @@ function input_equations(blox) ) else namespace_equation( - sys_eqs[idx], - sys, + sys_eqs[idx], + sys, namespaced_name(inner_namespaceof(blox), nameof(blox)) ) end diff --git a/src/blox/connections.jl b/src/blox/connections.jl index 8968066e..406929b6 100644 --- a/src/blox/connections.jl +++ b/src/blox/connections.jl @@ -183,8 +183,8 @@ function (bc::BloxConnector)( bloxin::CanonicalMicroCircuitBlox; kwargs... ) - sysparts_out = blox_parts(bloxout) - sysparts_in = blox_parts(bloxin) + sysparts_out = get_blox_parts(bloxout) + sysparts_in = get_blox_parts(bloxin) wm = get_weightmatrix(kwargs, namespaced_nameof(bloxin), namespaced_nameof(bloxout)) diff --git a/src/blox/neuron_models.jl b/src/blox/neuron_models.jl index f7c88b4b..71b973fe 100644 --- a/src/blox/neuron_models.jl +++ b/src/blox/neuron_models.jl @@ -33,30 +33,6 @@ mutable struct QIFNeuronBlox <: AbstractNeuronBlox end end -""" -thetaneuron has the following parameters: - η: Constant drive - α_inv: Time to peak of spike - k: All-to-all coupling strength -and the following variables: - θ(t): Theta neuron state - g(t): Synaptic current - jcn(t): Synaptic input -and returns: - an ODE System -""" -function theta_neuron(;name, η=η, α_inv=α_inv, k=k) - - params = @parameters η=η α_inv=α_inv k=k - sts = @variables θ(t)=0.0 g(t)=0.0 jcn(t)=0.0 - - eqs = [D(θ) ~ 1-cos(θ) + (1+cos(θ))*(η + k*g), - D(g) ~ α_inv*(jcn - g)] - - return ODESystem(eqs, t, sts, params; name=name) - -end - # Leaky Integrate and Fire neuron with synaptic dynamics mutable struct IFNeuronBlox <: AbstractNeuronBlox # all parameters are Num as to allow symbolic expressions diff --git a/test/components.jl b/test/components.jl index 936d6c51..97e6133a 100644 --- a/test/components.jl +++ b/test/components.jl @@ -136,86 +136,33 @@ end @test sol.retcode == ReturnCode.Success end +@testset "Canonical Micro Circuit network" begin + # connect multiple canonical micro circuits according to Figure 4 in Bastos et al. 2015 + global_ns = :g # global namespace + @named r1 = CanonicalMicroCircuitBlox(;namespace=global_ns) + @named r2 = CanonicalMicroCircuitBlox(;namespace=global_ns) + g = MetaDiGraph() + add_blox!.(Ref(g), [r1, r2]) + + add_edge!(g, 1, 2, :weightmatrix, [0 1 0 0; # superficial pyramidal to spiny stellate + 0 0 0 0; + 0 0 0 0; + 0 1 0 0]) # superficial pyramidal to deep pyramidal + # define connections from column (source) to row (sink) + add_edge!(g, 2, 1, :weightmatrix, [0 0 0 0; + 0 0 0 -1; + 0 0 0 -1; + 0 0 0 0]) + sys = system_from_graph(g; name=global_ns) + sys_simpl =structural_simplify(sys) -@testset "Canonical micro circuit" begin - """ - Canonical micro circuit tests - - first create a single canonical micro circuit and simulate. Then create a two region model and connect two - to form the circuit that is given in Figure 4 of Bastos et al. 2015. - """ - # canonical micro circuit based on single Jansen-Rit blox - @named singleregion = CanonicalMicroCircuitBlox() - eqs = [] - for bi in singleregion.bloxinput - push!(eqs, bi ~ 0) - end - @named singleregionODE = ODESystem(eqs, systems=[singleregion.odesystem]) - singleregionODE = structural_simplify(singleregionODE) - sol = simulate(singleregionODE, [], (0.0, 10.0), []) - # TODO: it would be nicer if this was without the singleregion namespace... - @test sol[!,"singleregion₊dp₊x(t)"][end] + sol[!,"singleregion₊ii₊x(t)"][end] ≈ -5.159425345927338 + prob = ODEProblem(sys_simpl, [], (0, 10)) + sol = solve(prob, Vern7(), saveat=0.1) + sum(sol[end, 2:end]) + @test sol.retcode == ReturnCode.Success end -# @testset "Canonical & Janset-Rit network" begin -# # connect multiple canonical micro circuits according to Figure 4 in Bastos et al. 2015 -# @named r1 = CanonicalMicroCircuitBlox() -# @named r2 = CanonicalMicroCircuitBlox() -# @named jr = JansenRitCBlox() - -# g = MetaDiGraph() -# add_vertex!(g, Dict(:blox => r1)) # V1 (see fig. 4 in Bastos et al. 2015) -# add_vertex!(g, Dict(:blox => r2)) # V4 (see fig. 4 in Bastos et al. 2015) -# add_edge!(g, 1, 2, :weightmatrix, [0 1 0 0; # superficial pyramidal to spiny stellate -# 0 0 0 0; -# 0 0 0 0; -# 0 1 0 0]) # superficial pyramidal to deep pyramidal -# # define connections from column (source) to row (sink) -# add_edge!(g, 2, 1, :weightmatrix, [0 0 0 0; -# 0 0 0 -1; -# 0 0 0 -1; -# 0 0 0 0]) - -# @named cmc_network = ODEfromGraph(g) -# cmc_network = structural_simplify(cmc_network) - -# sol = simulate(cmc_network, [], (0.0, 10.0), []) -# @test sum(sol[end, 2:end]) ≈ -4827.086868187682 - -# # now add a Neural mass model with one output and one input -# add_vertex!(g, Dict(:blox => jr)) -# add_edge!(g, 3, 1, :weightmatrix, [0; 0; 0; 1]) -# add_edge!(g, 1, 3, :weightmatrix, [[1 0 0 0];]) -# add_edge!(g, 3, 3, :weight, -1) - -# @named cmc_network2 = ODEfromGraph(g) -# cmc_network2 = structural_simplify(cmc_network2) -# sol = simulate(cmc_network2, [], (0.0, 10.0), []) -# @test sum(sol[end, 2:end]) ≈ -4823.399802568824 - -# # now connect canonical micro circuits with symbolic weight matrices -# g = MetaDiGraph() -# add_vertex!(g, Dict(:blox => r1)) -# add_vertex!(g, Dict(:blox => r2)) - -# A_forward = [0 1 0 0; -# 0 0 0 0; -# 0 0 0 0; -# 0 1 0 0] -# A_backward = [0 0 0 0; -# 0 0 0 -1; -# 0 0 0 -1; -# 0 0 0 0] -# @parameters wm_forward[1:length(A_forward)] = vec(A_forward) -# add_edge!(g, 1, 2, :weightmatrix, reshape(wm_forward, 4, 4)) -# @parameters wm_backward[1:length(A_backward)] = vec(A_backward) -# add_edge!(g, 2, 1, :weightmatrix, reshape(wm_backward, 4, 4)) - -# @named cmc_network = ODEfromGraph(g) -# cmc_network = structural_simplify(cmc_network) -# end - @testset "Next Generation Neural Mass" begin """ complex neural mass model test (next generation neural mass model) @@ -237,38 +184,6 @@ end @test norm.(R[length(R)]) < 0.1 end -@testset "Theta network" begin - """ - thetaneuron.jl test - - Test approach: generate a network of theta neurons and connect them through an all-to-all - adjacency matrix via a spike function. Then compute the real part of the Kuramoto order parameter. - The average of this parameter should be close to zero as synchrony varies in the network from a positive - to a negative amplitude. - """ - - # Generate Theta Network - network = [] - N = 50 - for i = 1:N - η = rand(Cauchy(1.0, 0.05)) # Constant Drive - @named neuron = Neuroblox.theta_neuron(name=Symbol("neuron$i"), η=η, α_inv=1.0, k=-2.0) - push!(network, neuron) - end - - # Create Circuit - adj_matrix = (1/N)*ones(N,N) - n = 3 - a_n = 2.0^n*(factorial(n)^2.0)/(factorial(2*n)) - @named theta_circuit = LinearConnections(sys=network, adj_matrix=adj_matrix, connector=[a_n*(1-cos(neuron.θ))^n for neuron in network]) - - sim_dur = 2.0 - sol = Neuroblox.simulate(structural_simplify(theta_circuit), [], (0.0, sim_dur), []) - R = real(exp.(im*sol[!, "neuron1₊θ(t)"])) - - @test abs(Statistics.mean(R)) < 0.7 -end - @testset "QIF synaptic network" begin """ qif_neuron.jl and synaptic_network.jl test @@ -312,39 +227,6 @@ end @test sol.t[end] == sim_dur end -# Are we keeping this one? -@testset "LIF network" begin -""" -network of LIFs test -""" -# N = 6 # 6 neurons - -# # neuron properties -# I_in = ones(N); # same input current to all -# τ = 5*collect(1:N); # increasing membrane time constant -# # synaptic properties -# syn_amp = 0.4*ones(N, N); # synaptic amplitudes -# syn_τ = 5*ones(N) -# nrn_network=[] -# nrn_spiketimes=[] - -# for i = 1:N -# nn = LIFNeuronBlox(name=Symbol("lif$i"), I_in=I_in[i], τ=τ[i]) -# push!(nrn_network, nn.odesystem) -# push!(nrn_spiketimes, nn.odesystem.st) -# end - -# # connect the neurons -# @named syn_net = spikeconnections(sys=nrn_network, psp_amplitude=syn_amp, τ=syn_τ, spiketimes=nrn_spiketimes) - -# sim_dur = 50.0 -# prob = ODEProblem(structural_simplify(syn_net), [], (0.0, sim_dur), []) -# sol = solve(prob, AutoVern7(Rodas4())) #pass keyword arguments to solver - -# @test length(sol.prob.p[end]) == 5 -# @test length(sol.prob.p[21]) == 11 -end - @testset "Van der Pol" begin @named VdP = van_der_pol() From 9ee9c9d9cefce2f365593cd4e3d95def57eaa272 Mon Sep 17 00:00:00 2001 From: david-hofmann Date: Thu, 25 Jan 2024 00:29:16 +0100 Subject: [PATCH 21/22] minor cleanup of Neuroblox.jl --- src/Neuroblox.jl | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/Neuroblox.jl b/src/Neuroblox.jl index 96b4f2ef..d3f0bfa2 100644 --- a/src/Neuroblox.jl +++ b/src/Neuroblox.jl @@ -160,8 +160,7 @@ function random_initials(odesys::ODESystem, blox) return u0 end -export jansen_rit_spm12, - next_generation, thetaneuron, qif_neuron, if_neuron, hh_neuron_excitatory, +export JansenRitSPM12, next_generation, qif_neuron, if_neuron, hh_neuron_excitatory, hh_neuron_inhibitory, synaptic_network, van_der_pol export IFNeuronBlox, LIFNeuronBlox, QIFNeuronBlox, HHNeuronExciBlox, HHNeuronInhibBlox, CanonicalMicroCircuitBlox, WinnerTakeAllBlox, CorticalBlox, SuperCortical @@ -174,8 +173,7 @@ export CosineSource, CosineBlox, NoisyCosineBlox, PhaseBlox, ImageStimulus export PowerSpectrumBlox, BandPassFilterBlox export OUBlox, OUCouplingBlox export phase_inter, phase_sin_blox, phase_cos_blox -export LinearConnections, SynapticConnections, ODEfromGraph, ODEfromGraphNeuron, - connectcomplexblox, spikeconnections, adjmatrixfromdigraph, create_rl_loop +export SynapticConnections, create_rl_loop export add_blox! export powerspectrum, complexwavelet, bandpassfilter, hilberttransform, phaseangle, mar2csd, csd2mar, mar_ml export learningrate, ControlError From a402a74ab3a3c104269649cbac111713de813958 Mon Sep 17 00:00:00 2001 From: david-hofmann Date: Thu, 25 Jan 2024 00:38:26 +0100 Subject: [PATCH 22/22] remove ODEfromGraph code-base and related functions in Neurographs.jl --- src/Neuroblox.jl | 2 +- src/Neurographs.jl | 181 --------------------------------------------- 2 files changed, 1 insertion(+), 182 deletions(-) diff --git a/src/Neuroblox.jl b/src/Neuroblox.jl index d3f0bfa2..6effdf3a 100644 --- a/src/Neuroblox.jl +++ b/src/Neuroblox.jl @@ -181,7 +181,7 @@ export boldsignal, BalloonModel export vecparam, csd_Q, spectralVI export simulate, random_initials export system_from_graph, graph_delays -export create_adjacency_edges! +export create_adjacency_edges!, adjmatrixfromdigraph export get_namespaced_sys, nameof export run_experiment!, run_trial! export addnontunableparams, get_hemodynamic_observers diff --git a/src/Neurographs.jl b/src/Neurographs.jl index c06835c9..412b24d0 100644 --- a/src/Neurographs.jl +++ b/src/Neurographs.jl @@ -12,154 +12,6 @@ function add_blox!(g::MetaDiGraph,blox) add_vertex!(g, :blox, blox) end -# function joinmetagraphs(metagraphs::Vector{T}) where T <: Any -# ngraphs = length(metagraphs) - -# wholegraph = MetaDiGraph() -# nvertex = 0 -# for i = 1:ngraphs -# for j in vertices(metagraphs[i].lngraph) -# add_vertex!(wholegraph, props(metagraphs[i].lngraph, j)) -# end -# for e in edges(metagraphs[i].lngraph) -# add_edge!(wholegraph, nvertex+src(e), nvertex+dst(e), props(metagraphs[i].lngraph, e)) -# end -# nvertex += nv(metagraphs[i].lngraph) -# end -# return wholegraph -# end - -# function LinearConnections(;name, sys=sys, adj_matrix=adj_matrix, connector=connector) -# adj = adj_matrix .* connector -# eqs = [] -# for region_num in 1:length(sys) -# push!(eqs, sys[region_num].jcn ~ sum(adj[:, region_num])) -# end -# return ODESystem(eqs, name=name, systems=sys) -# end - -# function SynapticConnections(;name, sys=sys, adj_matrix=adj_matrix, connector=connector) -# adj = adj_matrix .* connector -# syn_eqs = [ 0~sys[1].V - sys[1].V] -# Nrns = length(sys) -# for ii = 1:Nrns -# # for sparse adj matrices it is efficient to only consider presynaptic neurons for computing synaptic input -# presyn = findall(x-> x>0.0, adj_matrix[:,ii]) -# wts = adj_matrix[presyn,ii] -# presyn_nrn = sys[presyn] -# postsyn_nrn = sys[ii] -# if length(presyn)>0 -# ind = collect(1:length(presyn)) -# eqs = [postsyn_nrn.I_syn ~ sum(p-> (presyn_nrn[p].E_syn-postsyn_nrn.V)*adj[presyn[p],ii],ind), -# postsyn_nrn.jcn~postsyn_nrn.I_syn] -# push!(syn_eqs,eqs[1]) -# push!(syn_eqs,eqs[2]) -# else -# eqs = [postsyn_nrn.I_syn~0, -# postsyn_nrn.jcn~postsyn_nrn.I_syn] -# push!(syn_eqs,eqs[1]) -# push!(syn_eqs,eqs[2]) -# end - -# end -# popfirst!(syn_eqs) -# @named synaptic_eqs = ODESystem(syn_eqs,t) -# synaptic_network = compose(synaptic_eqs, sys;name=name) -# return synaptic_network -# end - -# function ODEfromGraph(g::MetaDiGraph, jcn; name) -# vert = [] -# sys = [] -# for v in vertices(g) -# b = get_prop(g, v, :blox) -# push!(vert, v) -# push!(sys, b.odesystem) -# end -# eqs = [] -# for (i, (v, s)) in enumerate(zip(vert, sys)) -# if any(occursin.("jcn(t)", string.(states(s)))) # only connect systems with jcn -# if s.jcn isa Symbolics.Arr -# input = [] -# for vn in inneighbors(g, v) # vertices that point towards s -# M = get_prop(g, vn, v, :weightmatrix) -# connector = get_prop(g, vn, :blox).connector -# push!(input, M*connector) -# end -# input = sum(input) -# for i = 1:length(s.jcn) -# push!(eqs, s.jcn[i] ~ input[i]) -# end -# else -# input = Num(0) -# for vn in inneighbors(g, v) # vertices that point towards s -# input += get_prop(g, vn, :blox).connector * get_prop(g, vn, v, :weight) -# end -# push!(eqs, s.jcn ~ input + jcn[i]) -# end -# end -# end -# return compose(ODESystem(eqs; name=:connected), sys; name=name) -# end - -# function ODEfromGraph(g::MetaDiGraph ;name) -# eqs = [] -# sys = [] -# for v in vertices(g) -# b = get_prop(g, v, :blox) -# if isa(b, AbstractBlox) || isa(b, Neuroblox.AbstractComponent) -# s = b.odesystem -# push!(sys, s) -# if any(occursin.("jcn(t)", string.(states(s)))) -# if isa(b, AbstractNeuronBlox) -# input = Num(0) -# for vn in inneighbors(g, v) # vertices that point towards s -# bn = get_prop(g, vn, :blox) -# if !isa(bn, AbstractNeuronBlox) # only neurons can be inputs to neurons -# continue -# end -# input += bn.connector * get_prop(g, vn, v, :weight) * (bn.odesystem.E_syn - s.V) -# end -# push!(eqs, s.I_syn ~ input) -# push!(eqs, s.jcn ~ s.I_syn) -# else -# if s.jcn isa Symbolics.Arr -# bi = b.bloxinput # bloxinput only exists if s.jcn isa Symbolics.Arr -# input = [zeros(Num,length(s.jcn))] -# for vn in inneighbors(g, v) # vertices that point towards s -# M = get_prop(g, vn, v, :weightmatrix) -# connector = get_prop(g, vn, :blox).connector -# if connector isa Symbolics.Arr -# connector = collect(connector) -# end -# push!(input, vec(M*connector)) -# end -# input = sum(input) -# for i = 1:length(s.jcn) -# push!(eqs, bi[i] ~ input[i]) -# end -# else -# input = Num(0) -# for vn in inneighbors(g, v) # vertices that point towards s -# connector = get_prop(g,vn,:blox).connector -# if connector isa Symbolics.Arr -# input += sum(vec(get_prop(g, vn, v, :weightmatrix)*collect(connector))) -# else -# input += connector * get_prop(g, vn, v, :weight) -# end -# end -# if haskey(props(g,v),:jcn) -# input += get_prop(g,v,:jcn) -# end -# push!(eqs, s.jcn ~ input) -# end -# end -# end -# end -# end -# return compose(ODESystem(eqs, t; name=:connected), sys; name=name) -# end - function get_blox(g::MetaDiGraph) bs = [] for v in vertices(g) @@ -277,39 +129,6 @@ function learning_rules_from_graph(g::MetaDiGraph) return d end -# function spikeconnections(;name, sys=sys, psp_amplitude=psp_amplitude, τ=τ, spiketimes=spiketimes) -# psps = psp_amplitude .* exp.(-(t .- spiketimes) ./ τ) -# eqs = [] -# for region_num in 1:length(sys) -# push!(eqs, sys[region_num].jcn ~ sum(psps[:, region_num])) -# end -# return ODESystem(eqs, t, name=name, systems=sys) -# end - -# function connectcomplexblox(bloxlist, adjacency_matrices ;name) -# nr = length(bloxlist) -# g = joinmetagraphs(bloxlist) -# row = 0 -# for i = 1:nr -# nodes_source = nv(bloxlist[i].lngraph) -# col = 0 -# for j = 1:nr -# nodes_sink = nv(bloxlist[j].lngraph) -# if i == j -# col += nodes_sink -# continue -# end -# for idx in CartesianIndices(adjacency_matrices[i, j]) -# add_edge!(g, row+idx[1], col+idx[2], :weight, adjacency_matrices[i, j][idx]) -# end -# col += nodes_sink -# end -# row += nodes_source -# end - -# return ODEfromGraph(g, name=name) -# end - ## Create Learning Loop function create_rl_loop(;name, ROIs, datasets, parameters, c_ext) # Create LearningBlox for each Region