-
Notifications
You must be signed in to change notification settings - Fork 51
Closed
Description
When I try to subset a cube with a Ti axis with DateTime values this fails for some reason when I try to use a Date as input for Near.
using YAXArrays
using DimensionalData: DimensionalData as DD
using Zarr
g = open_dataset(zopen("https://s3.bgc-jena.mpg.de:9000/esdl-esdc-v3.0.2/esdc-8d-0.25deg-256x128x128-3.0.2.zarr"))
gpp = g.gross_primary_productivity
gcmip = open_dataset(zopen("gs://cmip6/CMIP6/ScenarioMIP/DKRZ/MPI-ESM1-2-HR/ssp585/r1i1p1f1/3hr/tas/gn/v20190710/", consolidated=true));
tas = gcmip.tas
tas[Ti=DD.Near(Date(2015))] # works
gpp[Ti=DD.Near(Date(2015))] # fails
gpp[Ti=DD.Near(DateTime(2015))] # works
I can use a Date object in Between even though the axes elementtype is DateTime.
I don't understand where the difference between tas and gpp come from the types of the Time axes seem to be the same.
It would be good if I could match and mix the Date types for the subsetting, because I can't know in advance, what possible Time Type a data cube would have.
This is the error I got:
ERROR: MethodError: no method matching -(::Date, ::DateTime)
Closest candidates are:
-(::StridedArray{<:Union{Dates.CompoundPeriod, Period}}, ::TimeType)
@ Dates ~/.julia/juliaup/julia-1.9.0+0.x64.linux.gnu/share/julia/stdlib/v1.9/Dates/src/deprecated.jl:26
-(::Union{CFTime.DateTimeJulian, CFTime.DateTimeProlepticGregorian, CFTime.DateTimeStandard}, ::DateTime)
@ CFTime ~/.julia/packages/CFTime/n09Um/src/CFTime.jl:263
-(::TimeType, ::Dates.CompoundPeriod)
@ Dates ~/.julia/juliaup/julia-1.9.0+0.x64.linux.gnu/share/julia/stdlib/v1.9/Dates/src/periods.jl:364
...
Stacktrace:
[1] near
@ ~/.julia/packages/DimensionalData/pS9IE/src/LookupArrays/selector.jl:224 [inlined]
[2] near
@ ~/.julia/packages/DimensionalData/pS9IE/src/LookupArrays/selector.jl:200 [inlined]
[3] selectindices
@ ~/.julia/packages/DimensionalData/pS9IE/src/LookupArrays/selector.jl:193 [inlined]
[4] _dims2indices
@ ~/.julia/packages/DimensionalData/pS9IE/src/Dimensions/indexing.jl:114 [inlined]
[5] macro expansion
@ ~/.julia/packages/DimensionalData/pS9IE/src/Dimensions/indexing.jl:56 [inlined]
[6] _dims2indices
@ ~/.julia/packages/DimensionalData/pS9IE/src/Dimensions/indexing.jl:56 [inlined]
[7] dims2indices
@ ~/.julia/packages/DimensionalData/pS9IE/src/Dimensions/indexing.jl:51 [inlined]
[8] dims2indices
@ ~/.julia/packages/DimensionalData/pS9IE/src/Dimensions/indexing.jl:34 [inlined]
[9] view(::YAXArray{Float32, 3, ZArray{Float32, 3, Zarr.BloscCompressor, Zarr.ConsolidatedStore{Zarr.HTTPStore}}, Tuple{Dim{:lon, 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}}, Dim{:lat, 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}}, Ti{DimensionalData.Dimensions.LookupArrays.Sampled{DateTime, Vector{DateTime}, DimensionalData.Dimensions.LookupArrays.ForwardOrdered, DimensionalData.Dimensions.LookupArrays.Irregular{Tuple{Nothing, Nothing}}, DimensionalData.Dimensions.LookupArrays.Points, DimensionalData.Dimensions.LookupArrays.NoMetadata}}}}; kw::Base.Pairs{Symbol, Near{Date}, Tuple{Symbol}, NamedTuple{(:Ti,), Tuple{Near{Date}}}})
@ DimensionalData ~/.julia/packages/DimensionalData/pS9IE/src/array/indexing.jl:49
[10] view
@ ~/.julia/packages/DimensionalData/pS9IE/src/array/indexing.jl:49 [inlined]
[11] getindex(::YAXArray{Float32, 3, ZArray{Float32, 3, Zarr.BloscCompressor, Zarr.ConsolidatedStore{Zarr.HTTPStore}}, Tuple{Dim{:lon, 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}}, Dim{:lat, 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}}, Ti{DimensionalData.Dimensions.LookupArrays.Sampled{DateTime, Vector{DateTime}, DimensionalData.Dimensions.LookupArrays.ForwardOrdered, DimensionalData.Dimensions.LookupArrays.Irregular{Tuple{Nothing, Nothing}}, DimensionalData.Dimensions.LookupArrays.Points, DimensionalData.Dimensions.LookupArrays.NoMetadata}}}}; kwargs::Base.Pairs{Symbol, Near{Date}, Tuple{Symbol}, NamedTuple{(:Ti,), Tuple{Near{Date}}}})
@ YAXArrays.Cubes ~/.julia/dev/YAXArrays/src/Cubes/Cubes.jl:479
[12] top-level scope
@ REPL[88]:1
Metadata
Metadata
Assignees
Labels
No labels