예제 #1
0
def test_winpr_tensors():
    reference_labels = torch.tensor([[0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1]])
    computed_labels = torch.tensor([[0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1]])
    result = winpr(reference_labels, computed_labels, window_size=3)
    assert result["true_positives"] == 4
    assert result["true_negatives"] == 40
    assert result["false_positives"] == 0
    assert result["false_negatives"] == 0
    assert result["winP"] == 1
    assert result["winR"] == 1
예제 #2
0
def test_winpr_empty():
    reference_labels = [[]]
    computed_labels = [[]]
    result = winpr(reference_labels, computed_labels, window_size=3)
    assert result["true_positives"] == 0
    assert result["true_negatives"] == 0
    assert result["false_positives"] == 0
    assert result["false_negatives"] == 0
    assert math.isnan(result["winP"])
    assert math.isnan(result["winR"])
예제 #3
0
def test_winpr_extra_boundaries():
    reference_labels = [[0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1]]
    computed_labels = [[0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1]]
    result = winpr(reference_labels, computed_labels, window_size=3)
    assert result["true_positives"] == 4
    assert result["true_negatives"] == 32
    assert result["false_positives"] == 8
    assert result["false_negatives"] == 0
    assert result["winP"] == 1 / 3
    assert result["winR"] == 1
예제 #4
0
def test_winpr_correct():
    reference_labels = [[0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1]]
    computed_labels = [[0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1]]
    result = winpr(reference_labels, computed_labels, window_size=3)
    assert result["true_positives"] == 4
    assert result["true_negatives"] == 40
    assert result["false_positives"] == 0
    assert result["false_negatives"] == 0
    assert result["winP"] == 1
    assert result["winR"] == 1
예제 #5
0
def test_winpr_missed_boundary():
    reference_labels = [[0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1]]
    computed_labels = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
    result = winpr(reference_labels, computed_labels, window_size=3)
    assert result["true_positives"] == 0
    assert result["true_negatives"] == 40
    assert result["false_positives"] == 0
    assert result["false_negatives"] == 4
    assert result["winP"] is math.nan
    assert result["winR"] == 0
예제 #6
0
def test_winpr_batch_processing_tensors():
    real = [
        torch.tensor([1, 1, 1]),
        torch.tensor([0, 0, 0]),
    ]
    computed = [
        torch.tensor([1, 1, 1]),
        torch.tensor([0, 0, 0]),
    ]
    result = winpr(real, computed)
    assert result["false_positives"] == 0
    assert result["false_negatives"] == 0
예제 #7
0
def test_winpr_near_boundary():
    reference_labels = [[0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1]]
    computed_labels = [[0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1]]
    result = winpr(reference_labels, computed_labels, window_size=3)
    assert result["true_positives"] == 3
    # TODO: is this correct?
    # 40 is the value from the original paper but 39 seems to make more sense to me.
    assert result["true_negatives"] == 39
    assert result["false_positives"] == 1
    assert result["false_negatives"] == 1
    assert result["winP"] == 0.75
    assert result["winR"] == 0.75