def test_xdist_func_raises_ValueError(self): with self.assertRaises(ValueError) as e: V = SpaceTimeVariogram(self.c, self.v) V.xdist_func = lambda x: x**2 self.assertEqual(str(e), 'For now only str arguments are supported.')
def test_set_values_raises_shape_error(self): V = SpaceTimeVariogram(self.c, self.v) with self.assertRaises(ValueError) as e: V.set_values(np.random.normal(10, 5, (55, 8))) self.assertEqual(str(e), 'The values shape do not match coordinates.')
def test_set_value_raises_timeseries_error(self): V = SpaceTimeVariogram(self.c, self.v) with self.assertRaises(ValueError) as e: V.set_values(np.random.normal(0, 1, (60, 1))) self.assertEqual( str(e), 'A SpaceTimeVariogram needs more than one ' 'observation on the time axis.')
def test_set_values_raises_AttributeError(self): V = SpaceTimeVariogram(self.c, self.v) with self.assertRaises(AttributeError) as e: V.set_values(['string', 'don\'t', 'work']) self.assertEqual( str(e), 'values cannot be converted to a proper ' '(m,n) shaped array.')
def test_t_lags(self): V = SpaceTimeVariogram(self.c, self.v, t_lags=2) self.assertEqual(V.t_lags, 2) self.assertEqual(len(V.tbins), 2) V.t_lags = 'max' # this is still a bug, needs to be fixed one day self.assertEqual(V.t_lags, 4) self.assertEqual(len(V.tbins), 4)
def test_values_setter(self): V = SpaceTimeVariogram(self.c, self.v) # get the differences diff = V.values # delete and reset by setter V._values = None self.assertIsNone(V.values) V.values = self.v # assert assert_array_almost_equal(V.values, diff, decimal=5)
def test_plot3d_wrong_axis(self): with self.assertRaises(ValueError) as e: SpaceTimeVariogram(self.c, self.v)._plot3d(ax=[plt.figure(), 55]) self.assertEqual( str(e), 'The passed ax object is not an instance ' 'of mpl_toolkis.mplot3d.Axes3D.')
def test_t_lags_unkown(self): with self.assertRaises(ValueError) as e: SpaceTimeVariogram(self.c, self.v, t_lags='min') self.assertEqual( str(e), "Only 'max' supported as string argument." )
def test_x_lags_raises_ValueError(self): with self.assertRaises(ValueError) as e: SpaceTimeVariogram(self.c, self.v, x_lags=15.4) self.assertEqual( str(e), 'Only integers are supported as lag counts.' )
def test_change_lag_method(self): V = V = SpaceTimeVariogram(self.c, self.v, x_lags=4, t_lags='max') self.assertTrue(V.x_lags == V.t_lags == 4) V.set_bin_func('sqrt', 'space') self.assertTrue(V.x_lags == 43)
def test_xdist_func(self): # use Manhattan distance V = SpaceTimeVariogram(self.c, self.v, xdist_func='cityblock') self.assertEqual(V.xdistance.size, 1770) # test arbitrary elements assert_array_almost_equal( V.xdistance[[10, 15, 492, 1023, 1765]], np.array([184.245, 162.17, 46.296, 138.417, 91.457]), decimal=3)
def test_default_init(self): V = SpaceTimeVariogram(self.c, self.v) # test first 5 and assert_array_almost_equal( V.experimental[:5], np.array([14.527, 16.275, 16.195, 14.464, 12.619]), decimal=3) # and last 5 assert_array_almost_equal(V.experimental[-5:], np.array( [13.911, 10.76, 10.623, 9.434, 15.402]), decimal=3)
def test_autoset_lag_bins(self): V = SpaceTimeVariogram(self.c, self.v, xbins='scott', tbins='fd') # test if the bins were set correctly self.assertTrue(V.x_lags == 20) self.assertTrue(V.t_lags == 2) assert_array_almost_equal( V.xbins, np.array([21.5, 34.8, 48., 61.3, 74.5, 87.8, 101.1, 114.3, 127.6, 140.8, 154.1, 167.4, 180.6, 193.9, 207.2, 220.4, 233.7, 246.9, 260.2, 273.5]), decimal=1 )
def test_tdist_func(self): V = SpaceTimeVariogram(self.c, self.v, tdist_func='jaccard') # with jaccard, all shoud disagree self.assertTrue(all([_ == 1. for _ in V.tdistance]))
def test_x_lags(self): V = SpaceTimeVariogram(self.c, self.v) self.assertEqual(V.x_lags, 10) V.x_lags = 25 self.assertEqual(len(V.xbins), 25)