JuliaDataCubes / YAXArrays.jl

Yet Another XArray-like Julia package
https://juliadatacubes.github.io/YAXArrays.jl/
Other
89 stars 14 forks source link

Trying to save a Float16 eltype YAXArray to netcdf should give better error message #323

Open felixcremer opened 10 months ago

felixcremer commented 10 months ago

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