@@ -6,14 +6,18 @@ using Statistics
6
6
using CommonDataModel
7
7
using CommonDataModel:
8
8
@groupby ,
9
- name,
10
9
GroupedVariable,
10
+ MemoryDataset,
11
11
ReducedGroupedVariable,
12
12
_array_selectdim_indices,
13
13
_dest_indices,
14
14
_dim_after_getindex,
15
15
_indices,
16
- groupby
16
+ dataset,
17
+ defVar,
18
+ groupby,
19
+ name,
20
+ variable
17
21
18
22
19
23
# include("memory_dataset.jl");
@@ -53,13 +57,14 @@ data3 .= data
53
57
data3[1 ,1 ,:] .= missing
54
58
data3[1 ,2 ,1 ] = missing
55
59
56
- TDS (fname," c" ) do ds
60
+ TDS (fname," c" ,attrib = [ " title " => " test " ] ) do ds
57
61
defVar (ds," lon" ,1 : size (data,1 ),(" lon" ,))
58
62
defVar (ds," lat" ,1 : size (data,2 ),(" lat" ,))
59
63
defVar (ds," time" ,time,(" time" ,))
60
- defVar (ds," data" ,data,(" lon" ," lat" ," time" ))
64
+ defVar (ds," data" ,data,(" lon" ," lat" ," time" ),attrib = [ " foo " => " bar " ] )
61
65
defVar (ds," data2" ,data .+ 1 ,(" lon" ," lat" ," time" ))
62
66
defVar (ds," data3" ,data3,(" lon" ," lat" ," time" ))
67
+ defVar (ds," data4" ,data,(" lon" ," lat" ," time" ),attrib = [" scale_factor" => 2 ])
63
68
end
64
69
65
70
ds = TDS (fname)
@@ -108,6 +113,9 @@ gd = groupby(ds[:data],:time => Dates.Month);
108
113
d_sum = cat ([sum (ds[varname][:,:,:][:,:,findall (Dates. month .(ds[coordname][:]) .== m)],dims= 3 )
109
114
for m in 1 : 12 ]. .. ,dims= 3 )
110
115
116
+ d_mean = cat ([mean (ds[varname][:,:,:][:,:,findall (Dates. month .(ds[coordname][:]) .== m)],dims= 3 )
117
+ for m in 1 : 12 ]. .. ,dims= 3 )
118
+
111
119
112
120
gd = groupby (ds[" data" ]," time" => Dates. Month)
113
121
month_sum = sum (gd);
@@ -118,11 +126,25 @@ gd = groupby(ds[:data],:time => Dates.Month)
118
126
month_sum = sum (gd);
119
127
@test month_sum[:,:,:] == d_sum
120
128
121
- # group dataset
122
- gds = sum (groupby (ds,:time => Dates. Month))
123
- @test gds[" data" ][:,:,:] == d_sum
129
+ # group dataset function
130
+ gds = mean (groupby (ds,:time => Dates. Month))
131
+ @test gds[" data" ][:,:,:] == d_mean
124
132
@test gds[" lon" ][:] == ds[" lon" ][:]
125
133
@test gds[" lat" ][:] == ds[" lat" ][:]
134
+ @test gds[" data4" ][:,:,:] == d_mean
135
+ @test gds. attrib[" title" ] == " test"
136
+ @test gds[" data" ]. attrib[" foo" ] == " bar"
137
+ @test collect (keys (gds. attrib)) == [" title" ]
138
+ @test collect (keys (gds[" data" ]. attrib)) == [" foo" ]
139
+
140
+ # group dataset macro
141
+ gds = mean (@groupby (ds,Dates. Month (time)))
142
+ @test gds[" data" ][:,:,:] == d_mean
143
+ @test gds[" lon" ][:] == ds[" lon" ][:]
144
+ @test gds[" lat" ][:] == ds[" lat" ][:]
145
+
146
+ gr = mean (groupby (ds[" data4" ],:time => Dates. Month))
147
+ @test gr[:,:,:] == d_mean
126
148
127
149
128
150
gr = month_sum
0 commit comments