def test_get_symmetric_metric_tensor(self): metric = krippendorffs_alpha.metrics.NominalMetric() expected_matrix = numpy.array([[0, 1, 1, 1, 1], [1, 0, 1, 1, 1], [1, 1, 0, 1, 1], [1, 1, 1, 0, 1], [1, 1, 1, 1, 0]]) result_matrix = metric.get_metric_tensor([0, 1, 2, 3, 4]) testing_utils.assert_equal_tensors(expected_matrix, result_matrix)
def test_get_asymmetric_metric_tensor(self): metric = krippendorffs_alpha.metrics.IntervalMetric() expected_matrix = numpy.array([[0, 1, 4, 9, 16], [0, 0, 1, 4, 9], [0, 0, 0, 1, 4], [0, 0, 0, 0, 1], [0, 0, 0, 0, 0]]) result_matrix = metric.get_metric_tensor([0, 1, 2, 3, 4], symmetric=False) testing_utils.assert_equal_tensors(expected_matrix, result_matrix)
def test_get_symmetric_metric_tensor(self): metric = krippendorffs_alpha.metrics.RatioMetric() expected_matrix = numpy.array([[0, 1, 1, 1, 1], [1, 0, 1 / 9, 1 / 4, 9 / 25], [1, 1 / 9, 0, 1 / 25, 4 / 36], [1, 1 / 4, 1 / 25, 0, 1 / 49], [1, 9 / 25, 4 / 36, 1 / 49, 0]]) result_matrix = metric.get_metric_tensor([0, 1, 2, 3, 4]) testing_utils.assert_equal_tensors(expected_matrix, result_matrix)
def test_data_from_example_omit_unpairable(self): expected_value_by_unit_matrix = numpy.array([ [3, 0, 0, 0, 0, 1, 0, 3, 0, 0, 2], [0, 3, 0, 0, 4, 1, 0, 1, 4, 0, 0], [0, 1, 4, 4, 0, 1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0], ]) actual_value_by_unit_matrix = krippendorffs_alpha._calculation._make_value_by_unit_matrix_from_data_matrix( DATA_MATRIX, omit_unpairable=True ) testing_utils.assert_equal_tensors(expected_value_by_unit_matrix, actual_value_by_unit_matrix)
def test_e_interval(self): with open(os.path.join("tests", "example_E_data.tsv"), "r") as f: input_table = csv.reader(f, delimiter="\t") prepared_data = krippendorffs_alpha.data_converters.from_list_of_lists( input_table=input_table, header=True, row_legend=True, upper_level="observer", value_constructor=lambda s: int(s.strip()) if s.strip() != "NULL" else None ) testing_utils.assert_equal_tensors(DATA_MATRIX, prepared_data.answers_tensor) actual_alpha = krippendorffs_alpha._calculation.calc_alpha(prepared_data, "interval") assert actual_alpha == pytest.approx(0.849, abs=0.001)
def test_values_interval_ram(self): metric = "interval" strategy = "ram-hungry" with open(os.path.join("tests", "example_E_data.tsv"), "r") as f: input_table = [row for row in csv.reader(f, delimiter="\t")] input_table = input_table[1:] input_table = [[ int(val) if val.strip() != "NULL" else None for val in row[1:] ] for row in input_table] users_count = len(input_table) expected_outed_alphas = [] for user_index in range(users_count): jackknife_table = input_table[:user_index] + input_table[ user_index + 1:] prepared_jackknife_table = krippendorffs_alpha.data_converters.from_list_of_lists( jackknife_table, header=False, row_legend=False, upper_level="observer", value_constructor=None, possible_values=[1, 2, 3, 4, 5]) outer_alpha = krippendorffs_alpha._calculation.calc_alpha( prepared_jackknife_table, metric=metric) expected_outed_alphas.append(outer_alpha) prepared_input_table = krippendorffs_alpha.data_converters.from_list_of_lists( input_table, header=False, row_legend=False, upper_level="observer", value_constructor=None, possible_values=[1, 2, 3, 4, 5]) actual_outer_alphas = krippendorffs_alpha._bootstrap.observerwise_jackknife( prepared_data=prepared_input_table, metric=metric, strategy=strategy) expected_outed_alphas = numpy.array(expected_outed_alphas) assert len(expected_outed_alphas) == len(actual_outer_alphas), ( len(expected_outed_alphas), len(actual_outer_alphas), actual_outer_alphas) testing_utils.assert_equal_tensors(expected_outed_alphas, actual_outer_alphas)
def test_wikipedia_ratio(self): metric = "ratio" with open(os.path.join("tests", "example_wikipedia.csv"), "r") as f: input_table = [row for row in csv.reader(f, delimiter=",")] input_table = input_table[1:] input_table = [[ int(val) if val.strip() != "*" else None for val in row[1:] ] for row in input_table] input_table = numpy.transpose(input_table).tolist() assert isinstance(input_table, list) expected_alphas = [] for unit_index in range(len(input_table)): jackknife_table = input_table[:unit_index] + input_table[ unit_index + 1:] prepared_jackknife_table = krippendorffs_alpha.data_converters.from_list_of_lists( jackknife_table, header=False, row_legend=False, upper_level="unit", value_constructor=None, possible_values=[1, 2, 3, 4, 5]) outer_alpha = krippendorffs_alpha._calculation.calc_alpha( prepared_jackknife_table, metric=metric) expected_alphas.append(outer_alpha) prepared_input_table = krippendorffs_alpha.data_converters.from_list_of_lists( input_table, header=False, row_legend=False, upper_level="unit", value_constructor=None, possible_values=[1, 2, 3, 4, 5]) actual_outer_alphas = krippendorffs_alpha._bootstrap.unitwise_jackknife( prepared_data=prepared_input_table, metric=metric) expected_alphas = numpy.array(expected_alphas) testing_utils.assert_equal_tensors(expected_alphas, actual_outer_alphas)