def test_single_sorting_key(self): """SNI: Test class arguments.""" # all the following cases return in the same index. # situation 1 index_cl1 = SortedNeighbourhood('var_arange') pairs1 = index_cl1.index((self.a, self.b)) # situation 2 index_cl2 = SortedNeighbourhood(on='var_arange') pairs2 = index_cl2.index((self.a, self.b)) # situation 3 index_cl3 = SortedNeighbourhood(left_on='var_arange', right_on='var_arange') pairs3 = index_cl3.index((self.a, self.b)) # situation 4 index_cl4 = SortedNeighbourhood(on=['var_arange']) pairs4 = index_cl4.index((self.a, self.b)) # situation 5 index_cl5 = SortedNeighbourhood(left_on=['var_arange'], right_on=['var_arange']) pairs5 = index_cl5.index((self.a, self.b)) # test ptm.assert_index_equal(pairs1, pairs2) ptm.assert_index_equal(pairs1, pairs3) ptm.assert_index_equal(pairs1, pairs4) ptm.assert_index_equal(pairs1, pairs5)
def test_depr_on_argument(self): index_cl_new = SortedNeighbourhood('var_arange') pairs_new = index_cl_new.index(self.a) index_cl_old = SortedNeighbourhood(on='var_arange') pairs_old = index_cl_old.index(self.a) ptm.assert_index_equal(pairs_new, pairs_old)
def test_depr_on_argument(self): index_cl_new = SortedNeighbourhood('var_arange') pairs_new = index_cl_new.index(self.a) with pytest.deprecated_call(): index_cl_old = SortedNeighbourhood(on='var_arange') pairs_old = index_cl_old.index(self.a) pdt.assert_index_equal(pairs_new, pairs_old)
def test_sni_with_blocking_link(self): """SNI: Test sni with blocking keys.""" # sni index_class = SortedNeighbourhood( 'var_arange', window=3, block_on='var_arange') pairs = index_class.index((self.a, self.b[0:len(self.a)])) # the length of pairs is length(self.a) assert len(pairs) == len(self.a)
def test_sni_with_blocking_dedup(self): """SNI: Test sni with blocking keys.""" # sni index_class = SortedNeighbourhood( 'var_arange', window=3, block_on='var_arange') pairs = index_class.index(self.a) print(pairs.values) # the length of pairs is 0 assert len(pairs) == 0
def test_sni_algorithm_dedup(self, window): """SNI: Test the window size (dedup).""" # window = 7 # using paramereized tests instead index_class = SortedNeighbourhood(on='var_arange', window=window) pairs = index_class.index((self.a)) # the expected number of pairs window_d = (window - 1) / 2 len_a = len(self.a) n_pairs_expected = \ np.sum(np.arange(len_a - 1, len_a - (window_d + 1), -1)) # test assert len(pairs) == n_pairs_expected
def test_sni_algorithm_link(self, window): """SNI: Test the window size (link).""" # window = 7 # using paramereized tests instead index_class = SortedNeighbourhood(on='var_arange', window=window) pairs = index_class.index((self.a, self.b[0:len(self.a)])) # the expected number of pairs window_d = (window - 1) / 2 len_a = len(self.a) n_pairs_expected = \ len(self.a) + \ 2 * np.sum(np.arange(len_a - 1, len_a - (window_d + 1), -1)) # test print('expected number of pairs: %s' % n_pairs_expected) print('number of pairs found: %s' % len(pairs)) assert len(pairs) == n_pairs_expected