def test_relabel_throws_error_if_unmapped_labels_are_detected(self): label_list = LabelList(labels=[ Label('a', 3.2, 5.1), Label('b', 4.2, 4.7), Label('c', 4.3, 4.8) ]) unmapped_combinations = [('a', 'b'), ('a', 'b', 'c'), ('a', 'c')] expected_message = 'Unmapped combinations: {}'.format( unmapped_combinations) with pytest.raises(relabeling.UnmappedLabelsException) as ex: relabeling.relabel(label_list, {('a', ): 'foo'}) assert ex.value.message == expected_message
def test_relabel_maps_a_onto_b(self): label_list = LabelList(labels=[Label('a', 3.2, 4.5)]) actual = relabeling.relabel(label_list, {('a', ): 'b'}) expected = LabelList(labels=[Label('b', 3.2, 4.5)]) assert actual == expected
def test_relabel_removes_unwanted_labels(self): projections = { ('a', ): '', ('b', ): 'b', } label_list = LabelList( labels=[Label('a', 3.2, 4.4), Label('b', 4.4, 5.1)]) actual = relabeling.relabel(label_list, projections) expected = LabelList(labels=[Label('b', 4.4, 5.1)]) assert actual == expected
def test_relabel_flattens_full_overlap_into_combined_label(self): projections = { ('a', ): 'a', ('b', ): 'b', ('a', 'b'): 'a_b', } label_list = LabelList( labels=[Label('a', 3.2, 4.9), Label('b', 3.9, 4.5)]) actual = relabeling.relabel(label_list, projections) expected = LabelList(labels=[ Label('a', 3.2, 3.9), Label('a_b', 3.9, 4.5), Label('a', 4.5, 4.9) ]) assert actual == expected
def test_relabel_removes_overlapping_segment(self): projections = { ('a', ): 'a', ( 'a', 'b', ): '', ('b', ): 'b', } label_list = LabelList( labels=[Label('a', 3.2, 5.1), Label('b', 4.2, 4.7)]) actual = relabeling.relabel(label_list, projections) expected = LabelList( labels=[Label('a', 3.2, 4.2), Label('a', 4.7, 5.1)]) assert actual == expected
def test_relabel_proceeds_despite_unmapped_labels_in_presence_of_wildcard_rule( self): label_list = LabelList(labels=[ Label('a', 3.2, 5.1), Label('b', 4.2, 4.7), Label('c', 4.3, 4.8) ]) actual = relabeling.relabel(label_list, { ('a', ): 'new_label_a', ('**', ): 'catch_all' }) expected = LabelList(labels=[ Label('new_label_a', 3.2, 4.2), Label('catch_all', 4.2, 4.3), Label('catch_all', 4.3, 4.7), Label('catch_all', 4.7, 4.8), Label('new_label_a', 4.8, 5.1), ]) assert actual == expected
def test_relabel_flattens_partial_overlap_into_combined_label(self): projections = { ('a', ): 'a', ('b', ): 'b', ('c', ): 'c', ( 'a', 'b', ): 'a_b', ( 'a', 'b', 'c', ): 'a_b_c', ( 'b', 'c', ): 'b_c', } label_list = LabelList(labels=[ Label('a', 3.2, 4.5), Label('b', 4.0, 4.9), Label('c', 4.2, 5.1) ]) actual = relabeling.relabel(label_list, projections) expected = LabelList(labels=[ Label('a', 3.2, 4.0), Label('a_b', 4.0, 4.2), Label('a_b_c', 4.2, 4.5), Label('b_c', 4.5, 4.9), Label('c', 4.9, 5.1) ]) assert actual == expected