Skip to content

Commit 48565a5

Browse files
authored
Merge pull request #11 from JuliaDataCubes/datasetconstructors
Give Dataset constructors an mode kwarg
2 parents d8e629b + 44f7e45 commit 48565a5

File tree

5 files changed

+13
-10
lines changed

5 files changed

+13
-10
lines changed

src/datasets/archgdal.jl

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ struct GDALDataset
4242
bands::OrderedDict{String}
4343
end
4444

45-
function GDALDataset(filename)
45+
function GDALDataset(filename;mode="r")
4646
AG.read(filename) do r
4747
nb = AG.nraster(r)
4848
allbands = map(1:nb) do iband

src/datasets/datasetinterface.jl

+8-5
Original file line numberDiff line numberDiff line change
@@ -76,17 +76,20 @@ backendlist = OrderedDict{Symbol, Any}(
7676

7777
backendregex = Pair[]
7878

79-
function to_dataset(g::String; driver=:all)
79+
function backendfrompath(g::String; driver = :all)
8080
if driver == :all
8181
for p in YAXArrayBase.backendregex
8282
if match(p[1],g) !== nothing
83-
return to_dataset(p[2],g)
83+
return p[2]
8484
end
8585
end
86-
return to_dataset(g,driver=:zarr)
86+
return last(first(backendregex))
8787
else
88-
return to_dataset(backendlist[driver],g)
88+
return backendlist[driver]
8989
end
9090
end
91+
92+
to_dataset(g::String; driver=:all, kwargs...) = to_dataset(backendfrompath(g;driver),g,kwargs...)
93+
9194
to_dataset(g; kwargs...) = g
92-
to_dataset(T::Type{<:Any}, g::String) = T(g)
95+
to_dataset(T::Type{<:Any}, g::String;kwargs...) = T(g;kwargs...)

src/datasets/netcdf.jl

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ struct NetCDFDataset
1414
filename::String
1515
mode::UInt16
1616
end
17-
NetCDFDataset(filename) = NetCDFDataset(filename,NC_NOWRITE)
17+
NetCDFDataset(filename;mode="r") = mode == "r" ? NetCDFDataset(filename,NC_NOWRITE) : NetCDFDataset(filename,NC_WRITE)
1818

1919
import .NetCDF: AbstractDiskArray, readblock!, writeblock!, haschunks, eachchunk
2020

src/datasets/zarr.jl

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

99
get_var_dims(ds::ZarrDataset,name) = reverse(ds[name].attrs["_ARRAY_DIMENSIONS"])
1010
get_varnames(ds::ZarrDataset) = collect(keys(ds.g.arrays))
@@ -21,7 +21,7 @@ end
2121
function add_var(p::ZarrDataset, T::Type, varname, s, dimnames, attr;
2222
chunksize=s, kwargs...)
2323
attr2 = merge(attr,Dict("_ARRAY_DIMENSIONS"=>reverse(collect(dimnames))))
24-
za = zcreate(T, p.g, varname, s...;attrs=attr2,chunks=chunksize,kwargs...)
24+
za = zcreate(T, p.g, varname,s...;fill_as_missing=true,attrs=attr2,chunks=chunksize,kwargs...)
2525
za
2626
end
2727

test/datasets.jl

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ end
2424

2525
@testset "Reading Zarr" begin
2626
p = "gs://cmip6/CMIP6/HighResMIP/CMCC/CMCC-CM2-HR4/highresSST-present/r1i1p1f1/6hrPlev/psl/gn/v20170706/"
27-
ds_zarr = to_dataset(p)
27+
ds_zarr = to_dataset(p,driver=:zarr)
2828
vn = get_varnames(ds_zarr)
2929
@test sort(vn) == ["lat", "lat_bnds", "lon", "lon_bnds", "psl", "time", "time_bnds"]
3030
@test get_var_dims(ds_zarr, "psl") == ["lon", "lat", "time"]

0 commit comments

Comments
 (0)