How to change dims data from NT or T to ::OutDims for YAXArrays.DAT.OutputCube

Hi guys,

I am new to Julia, and wants to run a function which is like:

outcubes = mapCube(TEMYax,
        (incubes...,);
        selected_models=selected_models,
        forcing_vars=forcing.variables,
        output_vars = run_helpers.output_vars,
        loc_land=loc_land,
        tem=run_helpers.tem_info,
        indims=indims,
        outdims=run_helpers.output_dims,
        max_cache=info.settings.experiment.exe_rules.yax_max_cache,
        ispar=true)

This is to say, map the function TEMYax to incubes. However, it returns error

ERROR: MethodError: no method matching YAXArrays.DAT.OutputCube(::T, ::Vector{Dim}, ::T, ::NT, ::typeof(TEMYax))
Closest candidates are:
  YAXArrays.DAT.OutputCube(::Any, ::Any, ::Any, ::Any, ::Any, ::Any, ::Any, ::Any)
   @ YAXArrays ~/.julia/packages/YAXArrays/b5XBB/src/DAT/DAT.jl:132
  YAXArrays.DAT.OutputCube(::OutDims, ::Any, ::Any, ::Any, ::Any)
   @ YAXArrays ~/.julia/packages/YAXArrays/b5XBB/src/DAT/DAT.jl:200
  YAXArrays.DAT.OutputCube(::Any, ::Any, ::OutDims, ::Array{DimensionalData.Dimensions.Dimension}, ::Vector{DimensionalData.Dimensions.Dimension}, ::Vector{Int64}, ::Any, ::Any)
   @ YAXArrays ~/.julia/packages/YAXArrays/b5XBB/src/DAT/DAT.jl:132

I think it is trying to tell me one of indims or run_helpers.output_dims have wrong data type? it should be ::OutDims, but it is T in my case? I tried to use following command to determine the data type:

julia> typeof(indims)
NT
julia> typeof(run_helpers.output_dims)
T

So, I guess I have to transform run_helpers.output_dims from Tuple to :OutDims? Here is what run_helpers.output_dims looks like:

julia> run_helpers.output_dims
((↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time   [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ d_cEco 1:8,
↗ site   [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time                      [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ gpp_climate_stressors_idx 1:4,
↗ site                      [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time   [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ d_cEco 1:8,
↗ site   [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time   [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ d_soil 1:4,
↗ site   [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time  [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ d_tws 1:7,
↗ site  [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
→ site [CA-Obs, CA-Qfo, …, FI-Sod, US-NR1]), (↓ time   [2005-01-01T00:00:00, …, 2006-12-31T00:00:00],
...(different variables are omitted here...)

But I don’t know how to transform it…could you please help me? Thanks!

Some useful information:

julia> @info "First element type: $(typeof(outdims[1][1]))"
[ Info: First element type: Dim{:time, Vector{DateTime}}

julia> @info "First element type: $(typeof(outdims[1][2]))"
[ Info: First element type: Dim{:site, Vector{String}}

julia> @info "First element type: $(typeof(outdims[1]))"
[ Info: First element type: T