From c822f8b98d6eadac867e77919d3bb82e545e6fb4 Mon Sep 17 00:00:00 2001 From: Sam Yates <yates@cscs.ch> Date: Mon, 15 Oct 2018 15:49:35 +0200 Subject: [PATCH] Patch up Julia scripts for Julia 1.0 (#629) * Use `Unitful.uconvert` for scalar conversions (Float64 cast apparently does not work at the moment). * Use .+ for scalar/array addition. * Replace `immutable` with `struct`. * Qualify included modules with `Main.` for using statements. * Add informational note to FindJulia as component identification can take a long time as Julia may compile them from source. --- cmake/FindJulia.cmake | 3 +++ validation/ref/numeric/HHChannels.jl | 5 ++--- validation/ref/numeric/LVAChannels.jl | 4 ++-- validation/ref/numeric/PassiveCable.jl | 4 +++- validation/ref/numeric/numeric_kin1.jl | 2 +- validation/ref/numeric/numeric_kinlva.jl | 2 +- validation/ref/numeric/numeric_rallpack1.jl | 2 +- validation/ref/numeric/numeric_soma.jl | 2 +- 8 files changed, 14 insertions(+), 10 deletions(-) diff --git a/cmake/FindJulia.cmake b/cmake/FindJulia.cmake index b9c91377..b6ce48dd 100644 --- a/cmake/FindJulia.cmake +++ b/cmake/FindJulia.cmake @@ -14,6 +14,9 @@ include(FindPackageHandleStandardArgs) if(NOT Julia_FOUND) find_program(Julia_EXECUTABLE julia) if(Julia_EXECUTABLE) + if(Julia_FIND_COMPONENTS) + message(STATUS "Checking for Julia components: ${Julia_FIND_COMPONENTS}") + endif() foreach(component ${Julia_FIND_COMPONENTS}) set(_found_var "Julia_${component}_FOUND") if(NOT ${_found_var}) diff --git a/validation/ref/numeric/HHChannels.jl b/validation/ref/numeric/HHChannels.jl index f68a7aa1..317b8d76 100644 --- a/validation/ref/numeric/HHChannels.jl +++ b/validation/ref/numeric/HHChannels.jl @@ -6,7 +6,7 @@ using Sundials using Unitful using Unitful.DefaultSymbols -immutable HHParam +struct HHParam c_m # membrane spacific capacitance gnabar # Na channel cross-membrane conductivity gkbar # K channel cross-membrane conductivity @@ -47,7 +47,7 @@ immutable HHParam end -immutable Stim +struct Stim t0 # start time of stimulus t1 # stop time of stimulus i_e # stimulus current density @@ -144,7 +144,6 @@ function run_hh(t_end; v0=-65mV, stim=Stim(), param=HHParam(), sample_dt=0.01ms) ydot[1], ydot[2], ydot[3], ydot[4] = vdot*t_scale/v_scale, mdot*t_scale, hdot*t_scale, ndot*t_scale -# Float64(vdot*t_scale/v_scale), Float64(mdot*t_scale), Float64(hdot*t_scale), Float64(ndot*t_scale) return Sundials.CV_SUCCESS end diff --git a/validation/ref/numeric/LVAChannels.jl b/validation/ref/numeric/LVAChannels.jl index a1f4e865..46ec1cd3 100644 --- a/validation/ref/numeric/LVAChannels.jl +++ b/validation/ref/numeric/LVAChannels.jl @@ -6,7 +6,7 @@ using Sundials using Unitful using Unitful.DefaultSymbols -immutable LVAParam +struct LVAParam c_m # membrane spacific capacitance gbar # Ca channel cross-membrane conductivity eca # Ca channel reversal potential @@ -32,7 +32,7 @@ immutable LVAParam end -immutable Stim +struct Stim t0 # start time of stimulus t1 # stop time of stimulus i_e # stimulus current density diff --git a/validation/ref/numeric/PassiveCable.jl b/validation/ref/numeric/PassiveCable.jl index 56eded5a..9f5858bf 100644 --- a/validation/ref/numeric/PassiveCable.jl +++ b/validation/ref/numeric/PassiveCable.jl @@ -1,5 +1,7 @@ module PassiveCable +using Unitful: uconvert, NoUnits + export cable_normalize, cable, rallpack1 # Compute solution g(x, t) to @@ -94,7 +96,7 @@ function cable(x, t, L, lambda, tau, r, V, I; tol=1e-8) return V else tol_n = abs(tol/scale) - return scale*cable_normalized(Float64(x/lambda), Float64(t/tau), Float64(L/lambda), tol=tol_n) + V + return scale*cable_normalized(uconvert(NoUnits, x/lambda), uconvert(NoUnits, t/tau), uconvert(NoUnits, L/lambda), tol=tol_n) + V end end diff --git a/validation/ref/numeric/numeric_kin1.jl b/validation/ref/numeric/numeric_kin1.jl index 4437c3c8..42508dc9 100644 --- a/validation/ref/numeric/numeric_kin1.jl +++ b/validation/ref/numeric/numeric_kin1.jl @@ -19,7 +19,7 @@ c = 0.01mA/cm^2 tau = 10ms ts = collect(0s: sample_dt: t_end) -is = area*(1/3*c + (a0-1/3*c)*exp.(-ts/tau)) +is = area*(1/3*c .+ (a0-1/3*c)*exp.(-ts/tau)) trace = Dict( :name => "membrane current", diff --git a/validation/ref/numeric/numeric_kinlva.jl b/validation/ref/numeric/numeric_kinlva.jl index 108612e7..55bf6773 100644 --- a/validation/ref/numeric/numeric_kinlva.jl +++ b/validation/ref/numeric/numeric_kinlva.jl @@ -5,7 +5,7 @@ include("LVAChannels.jl") using JSON using Unitful using Unitful.DefaultSymbols -using LVAChannels +using Main.LVAChannels scale(quantity, unit) = uconvert(NoUnits, quantity/unit) diff --git a/validation/ref/numeric/numeric_rallpack1.jl b/validation/ref/numeric/numeric_rallpack1.jl index 9830d81c..41c54f80 100644 --- a/validation/ref/numeric/numeric_rallpack1.jl +++ b/validation/ref/numeric/numeric_rallpack1.jl @@ -5,7 +5,7 @@ include("PassiveCable.jl") using JSON using Unitful using Unitful.DefaultSymbols -using PassiveCable +using Main.PassiveCable scale(quantity, unit) = uconvert(NoUnits, quantity/unit) diff --git a/validation/ref/numeric/numeric_soma.jl b/validation/ref/numeric/numeric_soma.jl index 7c5e1336..36370b2e 100644 --- a/validation/ref/numeric/numeric_soma.jl +++ b/validation/ref/numeric/numeric_soma.jl @@ -5,7 +5,7 @@ include("HHChannels.jl") using JSON using Unitful using Unitful.DefaultSymbols -using HHChannels +using Main.HHChannels scale(quantity, unit) = uconvert(NoUnits, quantity/unit) -- GitLab