@@ -4,24 +4,33 @@ to_zarrtype, zopen, Compressor
4
4
struct ZarrDataset
5
5
g:: ZGroup
6
6
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 ))
8
8
9
9
get_var_dims (ds:: ZarrDataset ,name) = reverse (ds[name]. attrs[" _ARRAY_DIMENSIONS" ])
10
10
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
12
20
get_global_attrs (ds:: ZarrDataset ) = ds. g. attrs
13
21
Base. getindex (ds:: ZarrDataset , i) = ds. g[i]
14
22
Base. haskey (ds:: ZarrDataset ,k) = haskey (ds. g,k)
15
23
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
20
28
21
29
function add_var (p:: ZarrDataset , T:: Type , varname, s, dimnames, attr;
22
- chunksize= s, kwargs... )
30
+ chunksize= s, fill_as_missing = false , kwargs... )
23
31
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... )
25
34
za
26
35
end
27
36
@@ -40,6 +49,6 @@ backendlist[:zarr] = ZarrDataset
40
49
push! (backendregex, r" (.zarr$)|(.zarr/$)" => ZarrDataset)
41
50
42
51
allow_parallel_write (:: ZarrDataset ) = true
43
- allow_missings (:: ZarrDataset ) = true
52
+ allow_missings (:: ZarrDataset ) = false
44
53
to_dataset (g:: ZGroup ; kwargs... ) = ZarrDataset (g)
45
54
iscompressed (a:: ZArray{<:Any,<:Any,<:Compressor} ) = true
0 commit comments