def test_second_derivative_2d(deriv_2d_data): """Test second_derivative with a full 2D array.""" df2_dx2 = second_derivative(deriv_2d_data.f, x=deriv_2d_data.x, axis=1) assert_array_almost_equal(df2_dx2, np.ones_like(deriv_2d_data.f) * (2 * deriv_2d_data.a), 5) df2_dy2 = second_derivative(deriv_2d_data.f, x=deriv_2d_data.y, axis=0) assert_array_almost_equal(df2_dy2, np.ones_like(deriv_2d_data.f) * (2 * deriv_2d_data.b), 5)
def test_second_derivative_2d(deriv_2d_data): """Test second_derivative with a full 2D array.""" df2_dx2 = second_derivative(deriv_2d_data.f, x=deriv_2d_data.x, axis=1) assert_array_almost_equal(df2_dx2, np.ones_like(deriv_2d_data.f) * (2 * deriv_2d_data.a), 5) df2_dy2 = second_derivative(deriv_2d_data.f, x=deriv_2d_data.y, axis=0) assert_array_almost_equal(df2_dy2, np.ones_like(deriv_2d_data.f) * (2 * deriv_2d_data.b), 5)
def test_second_derivative(deriv_1d_data): """Test second_derivative with a simple 1D array.""" d2v_dx2 = second_derivative(deriv_1d_data.values, x=deriv_1d_data.x) # Worked by hand truth = np.ones_like(deriv_1d_data.values) * 0.2133333 * units('delta_degC/cm**2') assert_array_almost_equal(d2v_dx2, truth, 5)
def test_second_derivative(deriv_1d_data): """Test second_derivative with a simple 1D array.""" d2v_dx2 = second_derivative(deriv_1d_data.values, x=deriv_1d_data.x) # Worked by hand truth = np.ones_like(deriv_1d_data.values) * 0.2133333 * units('delta_degC/cm**2') assert_array_almost_equal(d2v_dx2, truth, 5)
def test_second_derivative_xarray_lonlat(test_da_lonlat): """Test second derivative with an xarray.DataArray on a lonlat grid.""" deriv = second_derivative(test_da_lonlat, axis='lat') # Build the xarray of the desired values partial = xr.DataArray(np.array( [1.67155420e-14, 1.67155420e-14, 1.74268211e-14, 1.74268211e-14]), coords=(('lat', test_da_lonlat['lat']), )) _, truth = xr.broadcast(test_da_lonlat, partial) truth.coords['crs'] = test_da_lonlat['crs'] truth.attrs['units'] = 'kelvin / meter^2' xr.testing.assert_allclose(deriv, truth) assert deriv.metpy.units == truth.metpy.units
def test_second_derivative_xarray_lonlat(test_da_lonlat): """Test second derivative with an xarray.DataArray on a lonlat grid.""" deriv = second_derivative(test_da_lonlat, axis='lat') # Build the xarray of the desired values partial = xr.DataArray( np.array([1.67155420e-14, 1.67155420e-14, 1.74268211e-14, 1.74268211e-14]), coords=(('lat', test_da_lonlat['lat']),) ) _, truth = xr.broadcast(test_da_lonlat, partial) truth.coords['crs'] = test_da_lonlat['crs'] truth.attrs['units'] = 'kelvin / meter^2' xr.testing.assert_allclose(deriv, truth) assert deriv.metpy.units == truth.metpy.units
def test_second_derivative_scalar_delta(): """Test second_derivative with a scalar passed for a delta.""" df_dx = second_derivative(np.arange(3), delta=1) assert_array_almost_equal(df_dx, np.array([0., 0., 0.]), 6)
def test_second_derivative_too_small(deriv_1d_data): """Test second_derivative with too small an array.""" with pytest.raises(ValueError): second_derivative(deriv_1d_data.values[None, :].T, x=deriv_1d_data.x, axis=1)
def test_second_derivative_scalar_delta(): """Test second_derivative with a scalar passed for a delta.""" df_dx = second_derivative(np.arange(3), delta=1) assert_array_almost_equal(df_dx, np.array([0., 0., 0.]), 6)
def test_second_derivative_too_small(deriv_1d_data): """Test second_derivative with too small an array.""" with pytest.raises(ValueError): second_derivative(deriv_1d_data.values[None, :].T, x=deriv_1d_data.x, axis=1)