@@ -71,132 +71,45 @@ def create_test_ds():
7171
7272 return ds
7373
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-
13574class TestConcat (unittest .TestCase ):
13675
13776 def test_concat_combine_unc_concat (self ):
13877 ds = create_test_ds ()
13978
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" )
14480
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. ]]])
14790
148- da = np .ones ((4 , 3 , 2 )) * 1
149- da [:, : 1 ] = 2
91+ coord_data = np .ones ((4 , 3 )) # coords
15092
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" ),
17196 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 ),
17699 },
100+ name = "d1a" ,
177101 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+ }
181108 )
182109
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 )
200113
201114if __name__ == "__main__" :
202115 pass
0 commit comments