Skip to content

InexactError when shifting locus of Date interval lookup #1038

@tiemvanderdeure

Description

@tiemvanderdeure

MWE

using Dates, DimensionalData, DimensionalData.Lookups
tidim = Ti(Sampled(Date(2000):Month(1):Date(2001); sampling = Intervals())) |> DimensionalData.format
tidim2 = shiftlocus(Center(), tidim)
ERROR: InexactError: Int64(15.5)
Stacktrace:
  [1] Int64
    @ ./float.jl:994 [inlined]
  [2] convert
    @ ./number.jl:7 [inlined]
  [3] Day
    @ ~/.julia/juliaup/julia-1.11.2+0.x64.linux.gnu/share/julia/stdlib/v1.11/Dates/src/types.jl:55 [inlined]
  [4] *
    @ ~/.julia/juliaup/julia-1.11.2+0.x64.linux.gnu/share/julia/stdlib/v1.11/Dates/src/periods.jl:90 [inlined]
  [5] _broadcast_getindex_evalf
    @ ./broadcast.jl:673 [inlined]
  [6] _broadcast_getindex
    @ ./broadcast.jl:646 [inlined]
  [7] getindex
    @ ./broadcast.jl:605 [inlined]
  [8] macro expansion
    @ ./broadcast.jl:968 [inlined]
  [9] macro expansion
    @ ./simdloop.jl:77 [inlined]
 [10] copyto!
    @ ./broadcast.jl:967 [inlined]
 [11] copyto!
    @ ./broadcast.jl:920 [inlined]
 [12] copy
    @ ./broadcast.jl:892 [inlined]
 [13] materialize
    @ ./broadcast.jl:867 [inlined]
 [14] _shiftlocus(destlocus::Center, span::Regular{…}, sampling::Intervals{…}, l::Sampled{…})
    @ DimensionalData.Dimensions.Lookups ~/.julia/packages/DimensionalData/wQISR/src/Lookups/utils.jl:30
 [15] _shiftlocus
    @ ~/.julia/packages/DimensionalData/wQISR/src/Lookups/utils.jl:20 [inlined]
 [16] shiftlocus
    @ ~/.julia/packages/DimensionalData/wQISR/src/Lookups/utils.jl:11 [inlined]
 [17] shiftlocus(locus::Center, d::Ti{Sampled{Date, StepRange{…}, ForwardOrdered, Regular{…}, Intervals{…}, NoMetadata}})
    @ DimensionalData.Dimensions ~/.julia/packages/DimensionalData/wQISR/src/Dimensions/dimension.jl:200
 [18] top-level scope
    @ ~/H/fasciola_africa/FasciolaDistribution/scripts/main.jl:11
Some type information was truncated. Use `show(err)` to see complete types.

It makes total sense that this happens - probably we should just convert to DateTime. That would be consistent to how integers are converted to floats

xdim = X(Sampled(1:10; sampling = Intervals(Start()))) |> DimensionalData.format
shiftlocus(Center(), xdim)
X Sampled{Float64} ForwardOrdered Regular Intervals{Center}
wrapping: 1.5:1.0:10.5

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions