Skip to content
Snippets Groups Projects
test_conf.py 2.33 KiB
Newer Older
Paolo Veglio's avatar
Paolo Veglio committed
"""Define tests for confidence calculation."""

import numpy as np
Paolo Veglio's avatar
Paolo Veglio committed
import ancillary_data as anc
import mvcm.conf as conf


@pytest.fixture
def fixturepath():
Paolo Veglio's avatar
Paolo Veglio committed
    """Define path."""
    return os.path.join(os.path.dirname(__file__), "fixtures")
Paolo Veglio's avatar
Paolo Veglio committed
    """Define dummy radiance array."""
    return np.arange(260, 282)


@pytest.fixture
def single_threshold():
Paolo Veglio's avatar
Paolo Veglio committed
    """Define dummy single thresholds."""
    return [267, 270, 273, 1]


@pytest.fixture
def double_threshold():
Paolo Veglio's avatar
Paolo Veglio committed
    """Define dummy double thresholds."""
    return [264, 267, 270, 273, 276, 279, 1]


@pytest.fixture
def reference_data(fixturepath):
Paolo Veglio's avatar
Paolo Veglio committed
    """Define reference file name."""
    return os.path.join(fixturepath, "ref_conf.npz")


def test_single_threshold(rad, single_threshold, reference_data):
Paolo Veglio's avatar
Paolo Veglio committed
    """Test single threshold compuputation."""
    ref_confidence = np.load(reference_data)["ref_sgl"]
    ref_confidence_flipped = np.load(reference_data)["ref_sgl_flipped"]

    c = conf.conf_test_new(rad, single_threshold)
    assert np.all(c == ref_confidence)

    single_threshold[0:-1] = single_threshold[-2::-1]
    c = conf.conf_test_new(rad, single_threshold)
    assert np.all(c == ref_confidence_flipped)


def test_double_threshold(rad, double_threshold, reference_data):
Paolo Veglio's avatar
Paolo Veglio committed
    """Test double threshold computation."""
    ref_confidence = np.load(reference_data)["ref_dbl"]
    ref_confidence_flipped = np.load(reference_data)["ref_dbl_flipped"]

    c = conf.conf_test_dble(rad, double_threshold)
    print(c)
    assert np.all(c == ref_confidence)

    double_threshold[0:-1] = double_threshold[-2::-1]
    c = conf.conf_test_dble(rad, double_threshold)
    assert np.all(c == ref_confidence_flipped)
Paolo Veglio's avatar
Paolo Veglio committed


def test_c_single_threshold(rad, single_threshold, reference_data):
    """Test C version of single threshold computation."""
    ref_confidence = np.load(reference_data)["ref_sgl"]
    ref_confidence_flipped = np.load(reference_data)["ref_sgl_flipped"]

    c = anc.py_conf_test(
        rad, single_threshold[0], single_threshold[2], single_threshold[3], single_threshold[1]
    )
    assert np.all(c == ref_confidence)

    single_threshold[0:-1] = single_threshold[-2::-1]
    c = anc.py.conf_test(
        rad, single_threshold[0], single_threshold[2], single_threshold[3], single_threshold[1]
    )
    assert np.all(c == ref_confidence_flipped)