Skip to content

Commit 34b114a

Browse files
experimental MemoryDataset
1 parent 73d598f commit 34b114a

File tree

7 files changed

+53
-34
lines changed

7 files changed

+53
-34
lines changed

src/CommonDataModel.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ using Printf
77
using Preferences
88
using DataStructures
99
import Base:
10+
checkbounds,
1011
close,
1112
collect,
1213
display,
@@ -20,6 +21,7 @@ import Base:
2021
show,
2122
size,
2223
write
24+
2325
import Statistics
2426
import Statistics:
2527
maximum,
@@ -48,6 +50,7 @@ include("select.jl")
4850
include("aggregation.jl")
4951
include("groupby.jl")
5052
include("rolling.jl")
53+
include("memory_dataset.jl")
5154

5255
end # module CommonDataModel
5356

test/memory_dataset.jl renamed to src/memory_dataset.jl

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,4 @@
1-
import Base: size, getindex, setindex!, checkbounds
21
import CommonDataModel as CDM
3-
#import CommonDataModel: SymbolOrString
4-
using DataStructures
5-
import CommonDataModel: defVar, unlimited, name, dimnames, dataset, variable, dim, attribnames, attrib, defDim, defAttrib, delAttrib, MFDataset, iswritable, SymbolOrString, parentdataset, load!, maskingvalue
6-
7-
mutable struct ResizableArray{T,N} <: AbstractArray{T,N}
8-
A::AbstractArray{T,N}
9-
fillvalue::T
10-
end
11-
12-
struct MemoryVariable{T,N,TP,TA <: AbstractArray{T,N}} <: CDM.AbstractVariable{T,N}
13-
parent_dataset::TP
14-
name::String
15-
dimnames::NTuple{N,String}
16-
data::TA
17-
_attrib::OrderedDict{String,Any}
18-
end
19-
20-
struct MemoryDataset{TP,Tmasingvalue} <: CDM.AbstractDataset
21-
parent_dataset::TP
22-
name::String # "/" for root group
23-
dimensions::OrderedDict{String,Int}
24-
variables::OrderedDict{String,MemoryVariable}
25-
_attrib::OrderedDict{String,Any}
26-
unlimited::Vector{String}
27-
_group::OrderedDict{String,Any}
28-
maskingvalue::Tmasingvalue
29-
end
302

313
Base.size(RA::ResizableArray) = size(RA.A)
324
Base.getindex(RA::ResizableArray,inds...) = getindex(RA.A,inds...)
@@ -233,7 +205,7 @@ end
233205

234206

235207
MemoryDataset(keys::AbstractArray{<:AbstractString,N}, args...; kwargs...) where N =
236-
MFDataset(MemoryDataset,fnames, args...; kwargs...)
208+
MFDataset(MemoryDataset,keys, args...; kwargs...)
237209

238210

239211
function MemoryDataset(f::Function,args...; kwargs...)

src/types.jl

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,3 +171,31 @@ end
171171

172172

173173
const Iterable = Union{Attributes,Dimensions,Groups,AbstractDataset}
174+
175+
176+
# memory dataset
177+
178+
mutable struct ResizableArray{T,N} <: AbstractArray{T,N}
179+
A::AbstractArray{T,N}
180+
fillvalue::T
181+
end
182+
183+
struct MemoryVariable{T,N,TP,TA <: AbstractArray{T,N}} <: AbstractVariable{T,N}
184+
parent_dataset::TP
185+
name::String
186+
dimnames::NTuple{N,String}
187+
data::TA
188+
_attrib::OrderedDict{String,Any}
189+
end
190+
191+
struct MemoryDataset{TP,Tmasingvalue} <: AbstractDataset
192+
parent_dataset::TP
193+
name::String # "/" for root group
194+
dimensions::OrderedDict{String,Int}
195+
variables::OrderedDict{String,MemoryVariable}
196+
_attrib::OrderedDict{String,Any}
197+
unlimited::Vector{String}
198+
_group::OrderedDict{String,Any}
199+
maskingvalue::Tmasingvalue
200+
end
201+

test/runtests.jl

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
using CommonDataModel
2+
using CommonDataModel: MemoryDataset
23
using Test
34

4-
include("memory_dataset.jl")
5-
65
@testset "CommonDataModel" begin
76
#include("test_conversion.jl")
87
include("test_empty.jl")

test/test_multifile.jl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,14 @@ import CommonDataModel:
1212
Dimensions,
1313
checksum,
1414
chunking,
15+
dataset,
1516
defGroup,
1617
deflate,
18+
dimnames,
1719
fillvalue,
18-
sync
20+
parentdataset,
21+
sync,
22+
variable
1923

2024
function example_file(TDS,i,array, fname = tempname();
2125
varname = "var")

test/test_select.jl

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,16 @@ using Dates
44
using IntervalSets
55
using Test
66
using Printf
7-
import CommonDataModel: AbstractVariable, dimnames, coordinate_value, coordinate_names, Near, split_by_and, SubDataset, @select, select
7+
import CommonDataModel:
8+
@select,
9+
AbstractVariable,
10+
Near,
11+
SubDataset,
12+
coordinate_names,
13+
coordinate_value,
14+
dimnames,
15+
select,
16+
split_by_and
817

918

1019
struct SelectableVariable{T,N,NT,TA} <: AbstractArray{T,N} where NT <: NTuple where TA <: AbstractArray{T,N}
@@ -367,7 +376,7 @@ end
367376

368377
fname_subset = tempname()
369378
times = DateTime(1992,1,1):Dates.Day(1):DateTime(1992,1,3)
370-
ds = MFDataset(TDS,url.(TDS,times),aggdim = "time",deferopen=false);
379+
ds = TDS(url.(TDS,times),aggdim = "time",deferopen=false);
371380
ds_subset = @select(ds,30 <= lon <= 60 && 40 <= lat <= 90)
372381
TDS(fname_subset,"c") do ds_dest
373382
write(ds_dest,ds_subset)

test/test_variable.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ using Printf
55
#using NCDatasets: NetCDFError, load!
66
using DataStructures
77
using CFTime
8+
using CommonDataModel:
9+
MemoryDataset,
10+
name,
11+
load!
812

913
sz = (4,5)
1014
filename = tempname()

0 commit comments

Comments
 (0)