JuliaDataCubes / JuliaDataCubes/YAXArrays.jl
Trying to save a Float16 eltype YAXArray to netcdf should give better error message
Open
Nobody has claimed this yet.
- Dominant language
- Julia
- Stars
- 132
- Forks
- 25
- PR merge metrics
- No merged PRs in 30d
Description
When I try to save a YAXArray with eltype Float16 I get the error below:
I am not sure whether this is a problem which should be better solved in NetCDF.jl or in YAXArray.
julia> savecube(clustermaskedyax, outpath, overwrite=true)
ERROR: ArgumentError: array must be non-empty
Stacktrace:
[1] popfirst!
@ ./array.jl:1463 [inlined]
[2] jl2nc(t::DataType)
@ NetCDF ~/.julia/packages/NetCDF/7hOe9/src/NetCDF.jl:92
[3] getNCType
@ ~/.julia/packages/NetCDF/7hOe9/src/NetCDF.jl:102 [inlined]
[4] NcVar(name::String, dimin::Vector{NcDim}; atts::Dict{String, Any}, t::DataType, compress::Int64, chunksize::Tuple{Int64, Int64})
@ NetCDF ~/.julia/packages/NetCDF/7hOe9/src/NetCDF.jl:257
[5] nccreate(::String, ::String, ::String, ::Vararg{Any}; atts::Dict{String, Any}, gatts::Dict{Any, Any}, compress::Int64, t::DataType, mode::UInt16, chunksize::Tuple{Int64, Int64})
@ NetCDF ~/.julia/packages/NetCDF/7hOe9/src/NetCDF.jl:1211
[6] nccreate
@ ~/.julia/packages/NetCDF/7hOe9/src/NetCDF.jl:1195 [inlined]
[7] #add_var#128
@ ~/RQADeforestation/dev/YAXArrayBase/src/datasets/netcdf.jl:63 [inlined]
[8] add_var
@ ~/RQADeforestation/dev/YAXArrayBase/src/datasets/netcdf.jl:60 [inlined]
[9] create_dataset(T::Type, path::String, gatts::Dict{String, Any}, dimnames::Vector{String}, dimvals::Vector{DimensionalData.Dimensions.LookupArrays.Sampled{Float64, StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}, O, DimensionalData.Dimensions.LookupArrays.Regular{Float64}, DimensionalData.Dimensions.LookupArrays.Points, DimensionalData.Dimensions.LookupArrays.NoMetadata} where O}, dimattrs::Vector{Dict{String, Any}}, vartypes::Vector{DataType}, varnames::Vector{String}, vardims::Vector{Tuple{String, String}}, varattrs::Vector{Dict{String, Any}}, varchunks::Vector{Tuple{Int64, Int64}}; kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
@ YAXArrayBase ~/RQADeforestation/dev/YAXArrayBase/src/datasets/datasetinterface.jl:62
[10] create_dataset(T::Type, path::String, gatts::Dict{String, Any}, dimnames::Vector{String}, dimvals::Vector{DimensionalData.Dimensions.LookupArrays.Sampled{Float64, StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}, O, DimensionalData.Dimensions.LookupArrays.Regular{Float64}, DimensionalData.Dimensions.LookupArrays.Points, DimensionalData.Dimensions.LookupArrays.NoMetadata} where O}, dimattrs::Vector{Dict{String, Any}}, vartypes::Vector{DataType}, varnames::Vector{String}, vardims::Vector{Tuple{String, String}}, varattrs::Vector{Dict{String, Any}}, varchunks::Vector{Tuple{Int64, Int64}})
@ YAXArrayBase ~/RQADeforestation/dev/YAXArrayBase/src/datasets/datasetinterface.jl:53
[11] savedataset(ds::Dataset; path::String, persist::Nothing, overwrite::Bool, append::Bool, skeleton::Bool, backend::Symbol, driver::Symbol, max_cache::Float64, writefac::Float64, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
@ YAXArrays.Datasets ~/RQADeforestation/dev/YAXArrays/src/DatasetAPI/Datasets.jl:571
[12] savedataset
@ ~/RQADeforestation/dev/YAXArrays/src/DatasetAPI/Datasets.jl:521 [inlined]
[13] savecube(c::YAXArray{Float16, 2, Matrix{Float16}, Tuple{DimensionalData.Dimensions.X{DimensionalData.Dimensions.LookupArrays.Sampled{Float64, StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}, DimensionalData.Dimensions.LookupArrays.ForwardOrdered, DimensionalData.Dimensions.LookupArrays.Regular{Float64}, DimensionalData.Dimensions.LookupArrays.Points, DimensionalData.Dimensions.LookupArrays.NoMetadata}}, DimensionalData.Dimensions.Y{DimensionalData.Dimensions.LookupArrays.Sampled{Float64, StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}, DimensionalData.Dimensions.LookupArrays.ReverseOrdered, DimensionalData.Dimensions.LookupArrays.Regular{Float64}, DimensionalData.Dimensions.LookupArrays.Points, DimensionalData.Dimensions.LookupArrays.NoMetadata}}}}, path::String; layername::String, datasetaxis::String, max_cache::Float64, backend::Symbol, driver::Symbol, chunks::Nothing, overwrite::Bool, append::Bool, skeleton::Bool, writefac::Float64, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
@ YAXArrays.Datasets ~/RQADeforestation/dev/YAXArrays/src/DatasetAPI/Datasets.jl:637
[14] top-level scope
@ REPL[27]:1
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
The trace points to src/datasets/netcdf.jl around add_var (lines 60–63) and NetCDF.jl's jl2nc/getNCType. First reproduce the Float16 savecube case and determine the package boundary; done means the unsupported Float16 case reports a specific actionable error instead of array must be non-empty.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- julia
- Domain
- data
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100