@@ -71,132 +71,45 @@ def create_test_ds():
71
71
72
72
return ds
73
73
74
- def create_concat_ds ():
75
- c1a = np .ones ((4 , 3 ))
76
- c2a = np .ones ((4 , 3 ))
77
-
78
- c1b = np .ones ((7 , 5 , 3 ))
79
- c2b = np .ones ((7 , 5 , 3 ))
80
-
81
- da = np .ones ((4 , 3 , 2 )) * 1
82
- da [:, : 1 ] = 2
83
-
84
- s1a = np .ones ((4 , 3 )) * 3
85
- s2a = np .ones ((4 , 3 )) * 4
86
- s3a = np .ones ((4 , 3 )) * 5
87
-
88
- d1b = np .ones ((7 , 5 , 3 )) * 1
89
-
90
- da_attrs = {"units" : "test_units" , "geometry" : "a" , "measurand" : "d" , 'm' : 10 }
91
- s1a_attrs = {"units" : "test_units" , "geometry" : "a" , "measurand" : "s" , 'm' : 12 }
92
- s2a_attrs = {"units" : "test_units" , "geometry" : "a" , "measurand" : "s" , 'm' : 4 }
93
- s3a_attrs = {"units" : "test_units" , "geometry" : "a" , "measurand" : "s" , 'm' : 5 }
94
- d1b_attrs = {"units" : "test_units" , "geometry" : "b" , "measurand" : "d" }
95
-
96
- ds = xr .Dataset (
97
- {
98
- "da" : (["xa" , "ya" ], da , da_attrs ),
99
- "s1a" : (["xa" , "ya" ], s1a , s1a_attrs ),
100
- "s2a" : (["xa" , "ya" ], s2a , s2a_attrs ),
101
- "s3a" : (["xa" , "ya" ], s3a , s3a_attrs ),
102
- "d1b" : (["xb" , "yb" , "zb" ], d1b , d1b_attrs ),
103
- },
104
- coords = {
105
- "c1a" : (["xa" , "ya" ], c1a ),
106
- "c2a" : (["xa" , "ya" ], c2a ),
107
- "c1b" : (["xb" , "yb" , "zb" ], c1b ),
108
- "c2b" : (["xb" , "yb" , "zb" ], c2b ),
109
- },
110
- attrs = {
111
- "history" : "test_history" ,
112
- "meas_vars" : ["d1a" , "d2a" , "s1a" , "s2a" , "s3a" , "d1b" ],
113
- },
114
- )
115
-
116
- for var in ["d1a" , "d2a" ]:
117
- ds .unc [var ]["u_r_" + var ] = (["xa" , "ya" ], ds [var ].values , {})
118
-
119
- err_corr_def = [
120
- {
121
- "dim" : ["xa" , "ya" ],
122
- "form" : "systematic" ,
123
- "params" : [],
124
- "units" : []
125
- }
126
- ]
127
-
128
- ds .unc [var ]["u_s_" + var ] = (["xa" , "ya" ], ds [var ].values , {"err_corr" : err_corr_def })
129
-
130
- return ds
131
-
132
-
133
-
134
-
135
74
class TestConcat (unittest .TestCase ):
136
75
137
76
def test_concat_combine_unc_concat (self ):
138
77
ds = create_test_ds ()
139
78
140
- obs_vars , unc_vars = obs_concat ([ds ["d1a" ], ds ["d2a" ]], "new_dim" , ds , "concat" )
141
-
142
- c1a = np .ones ((4 , 3 ))
143
- c2a = np .ones ((4 , 3 ))
79
+ concat_vars , concat_unc_vars = obs_concat ([ds ["d1a" ], ds ["d2a" ]], "new_dim" , ds , "concat" )
144
80
145
- c1b = np .ones ((7 , 5 , 3 ))
146
- c2b = np .ones ((7 , 5 , 3 ))
81
+ # Create expected concatenated data array
82
+ data = np .array ([[[1. , 1. , 1. ],
83
+ [1. , 1. , 1. ],
84
+ [1. , 1. , 1. ],
85
+ [1. , 1. , 1. ]],
86
+ [[2. , 2. , 2. ],
87
+ [2. , 2. , 2. ],
88
+ [2. , 2. , 2. ],
89
+ [2. , 2. , 2. ]]])
147
90
148
- da = np .ones ((4 , 3 , 2 )) * 1
149
- da [:, : 1 ] = 2
91
+ coord_data = np .ones ((4 , 3 )) # coords
150
92
151
- s1a = np .ones ((4 , 3 )) * 3
152
- s2a = np .ones ((4 , 3 )) * 4
153
- s3a = np .ones ((4 , 3 )) * 5
154
-
155
- d1b = np .ones ((7 , 5 , 3 )) * 1
156
-
157
- da_attrs = {"units" : "test_units" , "geometry" : "a" , "measurand" : "d" , 'm' : 10 }
158
- s1a_attrs = {"units" : "test_units" , "geometry" : "a" , "measurand" : "s" , 'm' : 12 }
159
- s2a_attrs = {"units" : "test_units" , "geometry" : "a" , "measurand" : "s" , 'm' : 4 }
160
- s3a_attrs = {"units" : "test_units" , "geometry" : "a" , "measurand" : "s" , 'm' : 5 }
161
- d1b_attrs = {"units" : "test_units" , "geometry" : "b" , "measurand" : "d" }
162
-
163
- ds = xr .Dataset (
164
- {
165
- "da" : (["xa" , "ya" ], da , da_attrs ),
166
- "s1a" : (["xa" , "ya" ], s1a , s1a_attrs ),
167
- "s2a" : (["xa" , "ya" ], s2a , s2a_attrs ),
168
- "s3a" : (["xa" , "ya" ], s3a , s3a_attrs ),
169
- "d1b" : (["xb" , "yb" , "zb" ], d1b , d1b_attrs ),
170
- },
93
+ exp_concat_vars = xr .DataArray (
94
+ data ,
95
+ dims = ("new_dim" , "xa" , "ya" ),
171
96
coords = {
172
- "c1a" : (["xa" , "ya" ], c1a ),
173
- "c2a" : (["xa" , "ya" ], c2a ),
174
- "c1b" : (["xb" , "yb" , "zb" ], c1b ),
175
- "c2b" : (["xb" , "yb" , "zb" ], c2b ),
97
+ "c1a" : (("xa" , "ya" ), coord_data ),
98
+ "c2a" : (("xa" , "ya" ), coord_data ),
176
99
},
100
+ name = "d1a" ,
177
101
attrs = {
178
- "history" : "test_history" ,
179
- "meas_vars" : ["d1a" , "d2a" , "s1a" , "s2a" , "s3a" , "d1b" ],
180
- },
102
+ "units" : "test_units" ,
103
+ "geometry" : "a" ,
104
+ "measurand" : "d" ,
105
+ "m" : 10 ,
106
+ "unc_comps" : ["u_r_d1a" , "u_s_d1a" ]
107
+ }
181
108
)
182
109
183
- for var in ["d1a" , "d2a" ]:
184
- ds .unc [var ]["u_r_" + var ] = (["xa" , "ya" ], ds [var ].values , {})
185
-
186
- err_corr_def = [
187
- {
188
- "dim" : ["xa" , "ya" ],
189
- "form" : "systematic" ,
190
- "params" : [],
191
- "units" : []
192
- }
193
- ]
194
-
195
- ds .unc [var ]["u_s_" + var ] = (["xa" , "ya" ], ds [var ].values , {"err_corr" : err_corr_def })
196
-
197
- return ds
198
-
199
-
110
+ # Tests
111
+ xr .testing .assert_equal (concat_vars , exp_concat_vars )
112
+ self .assertIsNone (concat_unc_vars )
200
113
201
114
if __name__ == "__main__" :
202
115
pass
0 commit comments