@@ 333-340 (lines=8) @@ | ||
330 | @pytest.mark.parametrize('pressure, variable, heights, bottom, depth, interp, expected', [ |
|
331 | (layer_test_data()[0], layer_test_data()[1], None, None, 150 * units.hPa, True, |
|
332 | (np.array([1000, 900, 850]) * units.hPa, |
|
333 | np.array([25.0, 16.666666, 12.62262]) * units.degC)), |
|
334 | (layer_test_data()[0], layer_test_data()[1], None, None, 150 * units.hPa, False, |
|
335 | (np.array([1000, 900]) * units.hPa, np.array([25.0, 16.666666]) * units.degC)), |
|
336 | (layer_test_data()[0], layer_test_data()[1], None, 2 * units.km, 3 * units.km, True, |
|
337 | (np.array([794.85264282, 700., 600., 540.01696548]) * units.hPa, |
|
338 | np.array([7.93049516, 0., -8.33333333, -13.14758845]) * units.degC)) |
|
339 | ]) |
|
340 | def test_get_layer(pressure, variable, heights, bottom, depth, interp, expected): |
|
341 | """Tests get_layer functionality.""" |
|
342 | p_layer, y_layer = get_layer(pressure, variable, heights=heights, bottom=bottom, |
|
343 | depth=depth, interpolate=interp) |
|
@@ 323-330 (lines=8) @@ | ||
320 | ||
321 | ||
322 | @pytest.fixture |
|
323 | def layer_test_data(): |
|
324 | """Provide test data for testing of layer bounds.""" |
|
325 | pressure = np.arange(1000, 10, -100) * units.hPa |
|
326 | temperature = np.linspace(25, -50, len(pressure)) * units.degC |
|
327 | return pressure, temperature |
|
328 | ||
329 | ||
330 | @pytest.mark.parametrize('pressure, variable, heights, bottom, depth, interp, expected', [ |
|
331 | (layer_test_data()[0], layer_test_data()[1], None, None, 150 * units.hPa, True, |
|
332 | (np.array([1000, 900, 850]) * units.hPa, |
|
333 | np.array([25.0, 16.666666, 12.62262]) * units.degC)), |
|
@@ 343-352 (lines=10) @@ | ||
340 | def test_get_layer(pressure, variable, heights, bottom, depth, interp, expected): |
|
341 | """Tests get_layer functionality.""" |
|
342 | p_layer, y_layer = get_layer(pressure, variable, heights=heights, bottom=bottom, |
|
343 | depth=depth, interpolate=interp) |
|
344 | assert_array_almost_equal(p_layer, expected[0], 5) |
|
345 | assert_array_almost_equal(y_layer, expected[1], 5) |
|
346 | ||
347 | ||
348 | def test_log_interp_2d(): |
|
349 | """Test interpolating with log x-scale in 2 dimensions.""" |
|
350 | x_log = np.array([[1e3, 1e4, 1e5, 1e6], [1e3, 1e4, 1e5, 1e6]]) |
|
351 | y_log = np.log(x_log) * 2 + 3 |
|
352 | x_interp = np.array([5e3, 5e4, 5e5]) |
|
353 | y_interp_truth = np.array([20.0343863828, 24.6395565688, 29.2447267548]) |
|
354 | y_interp = log_interp(x_interp, x_log, y_log, axis=1) |
|
355 | assert_array_almost_equal(y_interp[1], y_interp_truth, 7) |