From 70f1379ae359c18f43437b399ff1300db49c65a2 Mon Sep 17 00:00:00 2001 From: Michiel Cottaar <michiel.cottaar@ndcn.ox.ac.uk> Date: Tue, 20 Feb 2024 18:06:34 +0000 Subject: [PATCH] Export get_<functions> --- src/MRIBuilder.jl | 4 ++-- src/variables.jl | 10 +++++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/MRIBuilder.jl b/src/MRIBuilder.jl index 5c63fd1..4d4bb01 100644 --- a/src/MRIBuilder.jl +++ b/src/MRIBuilder.jl @@ -18,8 +18,8 @@ export build_sequence, global_model, global_scanner import .Scanners: Scanner, B0, Siemens_Connectom, Siemens_Prisma, Siemens_Terra export Scanner, B0, Siemens_Connectom, Siemens_Prisma, Siemens_Terra -import .Variables: variables, duration, effective_time, flip_angle, amplitude, phase, frequency, bandwidth, N_left, N_right, qval, δ, rise_time, flat_time, slew_rate, gradient_strength, qvec, qval_square, slice_thickness, inverse_slice_thickness, fov, inverse_fov, voxel_size, inverse_voxel_size, resolution, nsamples, oversample, dwell_time, ramp_overlap, spoiler_scale, TR, Δ -export variables, duration, effective_time, flip_angle, amplitude, phase, frequency, bandwidth, N_left, N_right, qval, δ, rise_time, flat_time, slew_rate, gradient_strength, qvec, qval_square, slice_thickness, inversne_slice_thickness, fov, inverse_fov, voxel_size, inverse_voxel_size, resolution, nsamples, oversample, dwell_time, ramp_overlap, spoiler_scale, TR, Δ +import .Variables: variables, duration, effective_time, flip_angle, amplitude, phase, frequency, bandwidth, N_left, N_right, qval, δ, rise_time, flat_time, slew_rate, gradient_strength, qvec, qval_square, slice_thickness, inverse_slice_thickness, fov, inverse_fov, voxel_size, inverse_voxel_size, resolution, nsamples, oversample, dwell_time, ramp_overlap, spoiler_scale, TR, Δ, get_gradient, get_pulse, get_readout +export variables, duration, effective_time, flip_angle, amplitude, phase, frequency, bandwidth, N_left, N_right, qval, δ, rise_time, flat_time, slew_rate, gradient_strength, qvec, qval_square, slice_thickness, inversne_slice_thickness, fov, inverse_fov, voxel_size, inverse_voxel_size, resolution, nsamples, oversample, dwell_time, ramp_overlap, spoiler_scale, TR, Δ, get_gradient, get_pulse, get_readout import .Components: InstantPulse, ConstantPulse, SincPulse, GenericPulse, InstantGradient, SingleReadout, ADC export InstantPulse, ConstantPulse, SincPulse, GenericPulse, InstantGradient, SingleReadout, ADC diff --git a/src/variables.jl b/src/variables.jl index 7008fc7..061e768 100644 --- a/src/variables.jl +++ b/src/variables.jl @@ -249,7 +249,15 @@ for (target_name, all_vars) in all_variables_symbols throw(VariableNotAvailable(typeof(bb), Variables.$variable_func)) catch e if $use_get_func && e isa VariableNotAvailable && hasmethod($get_func, tuple(typeof(bb))) - return Variables.$variable_func($get_func(bb)) + apply_to = $(get_func)(bb) + if apply_to isa AbstractBlock + return Variables.$variable_func(apply_to) + elseif apply_to isa NamedTuple + return NamedTuple(k => Variables.$variable_func(v) for (k, v) in pairs(apply_to)) + elseif apply_to isa AbstractVector{<:AbstractBlock} || apply_to isa Tuple + return Variables.$variable_func.(apply_to) + end + error("$($(use_get_func)) returned an unexpected type for $(bb).") end rethrow() end -- GitLab