Skip to content

Commit 08a352e

Browse files
committed
Don't allow missings in Zarr anymore
1 parent da329c1 commit 08a352e

File tree

1 file changed

+18
-9
lines changed

1 file changed

+18
-9
lines changed

src/datasets/zarr.jl

+18-9
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,33 @@ to_zarrtype, zopen, Compressor
44
struct ZarrDataset
55
g::ZGroup
66
end
7-
ZarrDataset(g::String;mode="r") = ZarrDataset(zopen(g,mode,fill_as_missing=true))
7+
ZarrDataset(g::String;mode="r") = ZarrDataset(zopen(g,mode,fill_as_missing=false))
88

99
get_var_dims(ds::ZarrDataset,name) = reverse(ds[name].attrs["_ARRAY_DIMENSIONS"])
1010
get_varnames(ds::ZarrDataset) = collect(keys(ds.g.arrays))
11-
get_var_attrs(ds::ZarrDataset, name) = ds[name].attrs
11+
function get_var_attrs(ds::ZarrDataset, name)
12+
#We add the fill value to the attributes to be consistent with NetCDF
13+
a = ds[name]
14+
if a.metadata.fill_value !== nothing
15+
merge(ds[name].attrs,Dict("_FillValue"=>a.metadata.fill_value))
16+
else
17+
ds[name].attrs
18+
end
19+
end
1220
get_global_attrs(ds::ZarrDataset) = ds.g.attrs
1321
Base.getindex(ds::ZarrDataset, i) = ds.g[i]
1422
Base.haskey(ds::ZarrDataset,k) = haskey(ds.g,k)
1523

16-
function add_var(p::ZarrDataset, T::Type{>:Missing}, varname, s, dimnames, attr; kwargs...)
17-
S = Base.nonmissingtype(T)
18-
add_var(p,S, varname, s, dimnames, attr; fill_value = defaultfillval(S), kwargs...)
19-
end
24+
# function add_var(p::ZarrDataset, T::Type{>:Missing}, varname, s, dimnames, attr; kwargs...)
25+
# S = Base.nonmissingtype(T)
26+
# add_var(p,S, varname, s, dimnames, attr; fill_value = defaultfillval(S), fill_as_missing=true, kwargs...)
27+
# end
2028

2129
function add_var(p::ZarrDataset, T::Type, varname, s, dimnames, attr;
22-
chunksize=s, kwargs...)
30+
chunksize=s, fill_as_missing=false, kwargs...)
2331
attr2 = merge(attr,Dict("_ARRAY_DIMENSIONS"=>reverse(collect(dimnames))))
24-
za = zcreate(T, p.g, varname,s...;fill_as_missing=true,attrs=attr2,chunks=chunksize,kwargs...)
32+
fv = get(attr,"_FillValue",get(attr,"missing_value",default_fillvalue(T)))
33+
za = zcreate(T, p.g, varname,s...;fill_as_missing,attrs=attr2,chunks=chunksize,kwargs...)
2534
za
2635
end
2736

@@ -40,6 +49,6 @@ backendlist[:zarr] = ZarrDataset
4049
push!(backendregex, r"(.zarr$)|(.zarr/$)"=>ZarrDataset)
4150

4251
allow_parallel_write(::ZarrDataset) = true
43-
allow_missings(::ZarrDataset) = true
52+
allow_missings(::ZarrDataset) = false
4453
to_dataset(g::ZGroup; kwargs...) = ZarrDataset(g)
4554
iscompressed(a::ZArray{<:Any,<:Any,<:Compressor}) = true

0 commit comments

Comments
 (0)