JuliaDataCubes / YAXArrays.jl

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

collect examples for docs, distributed section #306

Open lazarusA opened 1 year ago

lazarusA commented 1 year ago

Please, let's collect some examples here that could be included in the Distributed section, which is currently mostly empty.

@felixcremer @TabeaW have some small ones already?

TabeaW commented 1 year ago

Unfortunately, distributed filling an empty/skeleton cube currently does not work. I have an easy example for a mapcube for monthly mean of 5-minute data that is hopefully right :D

using Distributed, Dates
addprocs(4)
@everywhere using YAXArrays, Zarr, Statistics
#open cube here
q=cube[Ti=Date(2018,1,1)..Date(2023,1,1)]
index_list=cumsum([0;[size(collect(x:Minute(5):x+Month(1)-Minute(5)),1) for x in DateTime(2018,1,1,0,0):Month(1):DateTime(2022,12,1,0,0)]])

@everywhere function do_fun(xout, xin; index_list = time_to_index)
    xout .= NaN
            for i in eachindex(index_list)[1:end-1]           
                        xout[i] = mean(filter(!isnan, skipmissing(view(xin, index_list[i]+1:index_list[i+1]))))
            end
end
monthly_mean=mapCube(do_fun,
                q,
                indims = InDims("Ti"),
                outdims = OutDims(Dim{:Ti}(DateTime(2018,1,1,0,0):Month(1):DateTime(2022,12,1,0,0))),index_list=index_list)

savecube(monthly_mean, "monthly_mean.zarr"; backend=:zarr)