def test_hmtk_histogram_2D_general(self): """ Tests the 2D hmtk histogram with the general case (i.e. no edge-cases) Should be exactly equivalent to numpy's histogram function """ xdata = np.random.uniform(0., 10., 100) ydata = np.random.uniform(10., 20., 100) xbins = np.arange(0., 11., 1.) ybins = np.arange(10., 21., 1.) np.testing.assert_array_almost_equal( utils.hmtk_histogram_2D(xdata, ydata, (xbins, ybins)), np.histogram2d(xdata, ydata, bins=(xbins, ybins))[0].astype(float))
def test_hmtk_histogram_2D_edgecase(self): """ Tests the 2D hmtk histogram with edge cases Should be exactly equivalent to numpy's histogram function """ xdata = np.array([3.1, 4.1, 4.56, 4.8, 5.2]) ydata = np.array([1990., 1991.2, 1994., 1997., 1998.2]) xbins = np.arange(3.0, 5.35, 0.1) ybins = np.arange(1990., 2001.5, 1.) expected_counter = np.array( # 90 91 92 93 94 95 96 97 98 99 00 [ [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 3.0-3.1 [1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 3.1-3.2 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 3.2-3.3 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 3.3-3.4 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 3.4-3.5 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 3.5-3.6 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 3.6-3.7 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 3.7-3.8 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 3.8-3.9 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 3.9-4.0 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 4.0-4.1 [0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 4.1-4.2 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 4.2-4.3 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 4.3-4.4 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 4.4-4.5 [0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0.], # 4.5-4.6 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 4.6-4.7 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 4.7-4.8 [0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0.], # 4.8-4.9 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 4.9-5.0 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 5.0-5.1 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 5.1-5.2 [0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0.] ]) # 5.2-5.3 np.testing.assert_array_almost_equal( utils.hmtk_histogram_2D(xdata, ydata, bins=(xbins, ybins)), expected_counter)
def test_hmtk_histogram_2D_edgecase(self): """ Tests the 2D hmtk histogram with edge cases Should be exactly equivalent to numpy's histogram function """ xdata = np.array([3.1, 4.1, 4.56, 4.8, 5.2]) ydata = np.array([1990., 1991.2, 1994., 1997., 1998.2]) xbins = np.arange(3.0, 5.35, 0.1) ybins = np.arange(1990., 2001.5, 1.) expected_counter = np.array( # 90 91 92 93 94 95 96 97 98 99 00 [[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 3.0-3.1 [1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 3.1-3.2 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 3.2-3.3 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 3.3-3.4 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 3.4-3.5 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 3.5-3.6 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 3.6-3.7 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 3.7-3.8 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 3.8-3.9 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 3.9-4.0 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 4.0-4.1 [0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 4.1-4.2 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 4.2-4.3 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 4.3-4.4 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 4.4-4.5 [0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0.], # 4.5-4.6 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 4.6-4.7 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 4.7-4.8 [0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0.], # 4.8-4.9 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 4.9-5.0 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 5.0-5.1 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], # 5.1-5.2 [0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0.]]) # 5.2-5.3 np.testing.assert_array_almost_equal( utils.hmtk_histogram_2D(xdata, ydata, bins=(xbins, ybins)), expected_counter)