Ejemplo n.º 1
0
def test_repr_string():
    # Just make sure the Unicode handling doesn't raise any exceptions.
    print(approx(1.0))
    print(approx([1.0, 2.0, 3.0]))
    print(approx(inf))
    print(approx(1.0, rel=nan))
    print(approx(1.0, rel=inf))
Ejemplo n.º 2
0
def test_repr_string():
    # Just make sure the Unicode handling doesn't raise any exceptions.
    print(approx(1.0))
    print(approx([1.0, 2.0, 3.0]))
    print(approx(inf))
    print(approx(1.0, rel=nan))
    print(approx(1.0, rel=inf))
Ejemplo n.º 3
0
def test_decimal():
    within_1e6 = [
        (Decimal('1.000001'), Decimal('1.0')),
        (Decimal('-1.000001'), Decimal('-1.0')),
    ]
    for a, x in within_1e6:
        assert a == approx(x, rel=Decimal('5e-6'), abs=0)
        assert a != approx(x, rel=Decimal('5e-7'), abs=0)
Ejemplo n.º 4
0
def test_fraction():
    within_1e6 = [
        (1 + Fraction(1, 1000000), Fraction(1)),
        (-1 - Fraction(-1, 1000000), Fraction(-1)),
    ]
    for a, x in within_1e6:
        assert a == approx(x, rel=5e-6, abs=0)
        assert a != approx(x, rel=5e-7, abs=0)
Ejemplo n.º 5
0
def test_load_mass_spectra():
    csv_path = "sample_data/mass_spectrum.csv"
    ms = mass_and_me.load_mass_spectra([csv_path])[0]

    assert ms.Mass[0] == approx(396.009089)
    assert ms.Intensity[0] == approx(0)
    assert ms.Mass[12] == approx(400.015755)
    assert ms.Intensity[12] == approx(49.810793)
Ejemplo n.º 6
0
def test_int():
    within_1e6 = [
        (1000001, 1000000),
        (-1000001, -1000000),
    ]
    for a, x in within_1e6:
        assert a == approx(x, rel=5e-6, abs=0)
        assert a != approx(x, rel=5e-7, abs=0)
Ejemplo n.º 7
0
def test_load_mass_spectra():
    csv_path = 'sample_data/mass_spectrum.csv'
    ms = mass_and_me.load_mass_spectra([csv_path])[0]

    assert ms.Mass[0] == approx(396.009089)
    assert ms.Intensity[0] == approx(0)
    assert ms.Mass[12] == approx(400.015755)
    assert ms.Intensity[12] == approx(49.810793)
Ejemplo n.º 8
0
def test_decimal():
    within_1e6 = [
            (Decimal('1.000001'), Decimal('1.0')),
            (Decimal('-1.000001'), Decimal('-1.0')),
    ]
    for a, x in within_1e6:
        assert a == approx(x, rel=Decimal('5e-6'), abs=0)
        assert a != approx(x, rel=Decimal('5e-7'), abs=0)
Ejemplo n.º 9
0
def test_int():
    within_1e6 = [
            (1000001, 1000000),
            (-1000001, -1000000),
    ]
    for a, x in within_1e6:
        assert a == approx(x, rel=5e-6, abs=0)
        assert a != approx(x, rel=5e-7, abs=0)
Ejemplo n.º 10
0
def test_fraction():
    within_1e6 = [
            (1 + Fraction(1, 1000000), Fraction(1)),
            (-1 - Fraction(-1, 1000000), Fraction(-1)),
    ]
    for a, x in within_1e6:
        assert a == approx(x, rel=5e-6, abs=0)
        assert a != approx(x, rel=5e-7, abs=0)
Ejemplo n.º 11
0
def test_relative_tolerance():
    within_1e8_rel = [
        (1e8 + 1e0, 1e8),
        (1e0 + 1e-8, 1e0),
        (1e-8 + 1e-16, 1e-8),
    ]
    for a, x in within_1e8_rel:
        assert a == approx(x, rel=5e-8, abs=0.0)
        assert a != approx(x, rel=5e-9, abs=0.0)
Ejemplo n.º 12
0
def test_absolute_tolerance():
    within_1e8_abs = [
        (1e8 + 9e-9, 1e8),
        (1e0 + 9e-9, 1e0),
        (1e-8 + 9e-9, 1e-8),
    ]
    for a, x in within_1e8_abs:
        assert a == approx(x, rel=0, abs=5e-8)
        assert a != approx(x, rel=0, abs=5e-9)
Ejemplo n.º 13
0
def test_absolute_tolerance():
    within_1e8_abs = [
            (1e8 + 9e-9, 1e8),
            (1e0 + 9e-9, 1e0),
            (1e-8 + 9e-9, 1e-8),
    ]
    for a, x in within_1e8_abs:
        assert a == approx(x, rel=0, abs=5e-8)
        assert a != approx(x, rel=0, abs=5e-9)
Ejemplo n.º 14
0
def test_relative_tolerance():
    within_1e8_rel = [
            (1e8 + 1e0, 1e8),
            (1e0 + 1e-8, 1e0),
            (1e-8 + 1e-16, 1e-8),
    ]
    for a, x in within_1e8_rel:
        assert a == approx(x, rel=5e-8, abs=0.0)
        assert a != approx(x, rel=5e-9, abs=0.0)
Ejemplo n.º 15
0
def test_complex():
    within_1e6 = [
            ( 1.000001 + 1.0j, 1.0 + 1.0j),
            (1.0 + 1.000001j, 1.0 + 1.0j),
            (-1.000001 + 1.0j, -1.0 + 1.0j),
            (1.0 - 1.000001j, 1.0 - 1.0j),
    ]
    for a, x in within_1e6:
        assert a == approx(x, rel=5e-6, abs=0)
        assert a != approx(x, rel=5e-7, abs=0)
Ejemplo n.º 16
0
def test_complex():
    within_1e6 = [
        (1.000001 + 1.0j, 1.0 + 1.0j),
        (1.0 + 1.000001j, 1.0 + 1.0j),
        (-1.000001 + 1.0j, -1.0 + 1.0j),
        (1.0 - 1.000001j, 1.0 - 1.0j),
    ]
    for a, x in within_1e6:
        assert a == approx(x, rel=5e-6, abs=0)
        assert a != approx(x, rel=5e-7, abs=0)
Ejemplo n.º 17
0
def test_log_transformation():
    experiments, well = dummy_data({
        'FSC-A': [100, 200, 300, 400, 500, 600],
        'FITC-A': [1, 10, 100, 1000, 10000, 100000],
    })

    log_transformation = fcmcmp.LogTransformation()
    log_transformation.channels = ['FITC-A']
    log_transformation(experiments)

    assert well.data['FSC-A'].tolist() == approx([100, 200, 300, 400, 500, 600])
    assert well.data['FITC-A'].tolist() == approx([0, 1, 2, 3, 4, 5])
Ejemplo n.º 18
0
def test_inf_tolerance():
    # Everything should be equal if the tolerance is infinite.
    large_diffs = [
        (1, 1000),
        (1e-50, 1e50),
        (-1.0, -1e300),
        (0.0, 10),
    ]
    for a, x in large_diffs:
        assert a != approx(x, rel=0.0, abs=0.0)
        assert a == approx(x, rel=inf, abs=0.0)
        assert a == approx(x, rel=0.0, abs=inf)
        assert a == approx(x, rel=inf, abs=inf)
Ejemplo n.º 19
0
def test_log_transformation():
    experiments, well = dummy_data({
        'FSC-A': [100, 200, 300, 400, 500, 600],
        'FITC-A': [1, 10, 100, 1000, 10000, 100000],
    })

    log_transformation = fcmcmp.LogTransformation()
    log_transformation.channels = ['FITC-A']
    log_transformation(experiments)

    assert well.data['FSC-A'].tolist() == approx(
        [100, 200, 300, 400, 500, 600])
    assert well.data['FITC-A'].tolist() == approx([0, 1, 2, 3, 4, 5])
Ejemplo n.º 20
0
def test_inf_tolerance():
    # Everything should be equal if the tolerance is infinite.
    large_diffs = [
            (1, 1000),
            (1e-50, 1e50),
            (-1.0, -1e300),
            (0.0, 10),
    ]
    for a, x in large_diffs:
        assert a != approx(x, rel=0.0, abs=0.0)
        assert a == approx(x, rel=inf, abs=0.0)
        assert a == approx(x, rel=0.0, abs=inf)
        assert a == approx(x, rel=inf, abs=inf)
Ejemplo n.º 21
0
def test_expecting_zero():
    examples = [
            (ne, 1e-6, 0.0),
            (ne, -1e-6, 0.0),
            (eq, 1e-12, 0.0),
            (eq, -1e-12, 0.0),
            (ne, 2e-12, 0.0),
            (ne, -2e-12, 0.0),
            (ne, inf, 0.0),
            (ne, nan, 0.0),
     ]
    for op, a, x in examples:
        assert op(a, approx(x, rel=0.0, abs=1e-12))
        assert op(a, approx(x, rel=1e-6, abs=1e-12))
Ejemplo n.º 22
0
def test_expecting_zero():
    examples = [
        (ne, 1e-6, 0.0),
        (ne, -1e-6, 0.0),
        (eq, 1e-12, 0.0),
        (eq, -1e-12, 0.0),
        (ne, 2e-12, 0.0),
        (ne, -2e-12, 0.0),
        (ne, inf, 0.0),
        (ne, nan, 0.0),
    ]
    for op, a, x in examples:
        assert op(a, approx(x, rel=0.0, abs=1e-12))
        assert op(a, approx(x, rel=1e-6, abs=1e-12))
Ejemplo n.º 23
0
def test_opposite_sign():
    examples = [
            (eq, 1e-100, -1e-100),
            (ne, 1e100, -1e100),
    ]
    for op, a, x in examples:
        assert op(a, approx(x))
Ejemplo n.º 24
0
def test_opposite_sign():
    examples = [
        (eq, 1e-100, -1e-100),
        (ne, 1e100, -1e100),
    ]
    for op, a, x in examples:
        assert op(a, approx(x))
Ejemplo n.º 25
0
def test_expecting_nan():
    examples = [
        (nan, nan),
        (-nan, -nan),
        (nan, -nan),
        (0.0, nan),
        (inf, nan),
    ]
    for a, x in examples:
        # If there is a relative tolerance and the expected value is NaN,
        # the actual tolerance is a NaN, which should be an error.
        with pytest.raises(ValueError):
            a != approx(x, rel=inf)

        # You can make comparisons against NaN by not specifying a relative
        # tolerance, so only an absolute tolerance is calculated.
        assert a != approx(x, abs=inf)
Ejemplo n.º 26
0
def test_expecting_sequence():
    within_1e8 = [
        (1e8 + 1e0, 1e8),
        (1e0 + 1e-8, 1e0),
        (1e-8 + 1e-16, 1e-8),
    ]
    actual, expected = zip(*within_1e8)
    assert actual == approx(expected, rel=5e-8, abs=0.0)
Ejemplo n.º 27
0
def test_expecting_nan():
    examples = [
            (nan, nan),
            (-nan, -nan),
            (nan, -nan),
            (0.0, nan),
            (inf, nan),
    ]
    for a, x in examples:
        # If there is a relative tolerance and the expected value is NaN,
        # the actual tolerance is a NaN, which should be an error.
        with pytest.raises(ValueError):
            a != approx(x, rel=inf)

        # You can make comparisons against NaN by not specifying a relative
        # tolerance, so only an absolute tolerance is calculated.
        assert a != approx(x, abs=inf)
Ejemplo n.º 28
0
def test_expecting_sequence():
    within_1e8 = [
            (1e8 + 1e0, 1e8),
            (1e0 + 1e-8, 1e0),
            (1e-8 + 1e-16, 1e-8),
    ]
    actual, expected = zip(*within_1e8)
    assert actual == approx(expected, rel=5e-8, abs=0.0)
Ejemplo n.º 29
0
def test_nan_tolerance():
    illegal_kwargs = [
        dict(rel=nan),
        dict(abs=nan),
        dict(rel=nan, abs=nan),
    ]
    for kwargs in illegal_kwargs:
        with pytest.raises(ValueError):
            1.1 == approx(1, **kwargs)
Ejemplo n.º 30
0
def test_nan_tolerance():
    illegal_kwargs = [
            dict(rel=nan),
            dict(abs=nan),
            dict(rel=nan, abs=nan),
    ]
    for kwargs in illegal_kwargs:
        with pytest.raises(ValueError):
            1.1 == approx(1, **kwargs)
Ejemplo n.º 31
0
def test_expecting_inf():
    examples = [
            (eq, inf, inf),
            (eq, -inf, -inf),
            (ne, inf, -inf),
            (ne, 0.0, inf),
            (ne, nan, inf),
    ]
    for op, a, x in examples:
        assert op(a, approx(x))
Ejemplo n.º 32
0
def test_expecting_inf():
    examples = [
        (eq, inf, inf),
        (eq, -inf, -inf),
        (ne, inf, -inf),
        (ne, 0.0, inf),
        (ne, nan, inf),
    ]
    for op, a, x in examples:
        assert op(a, approx(x))
Ejemplo n.º 33
0
def test_inf_tolerance_expecting_zero():
    # If the relative tolerance is zero but the expected value is infinite,
    # the actual tolerance is a NaN, which should be an error.
    illegal_kwargs = [
        dict(rel=inf, abs=0.0),
        dict(rel=inf, abs=inf),
    ]
    for kwargs in illegal_kwargs:
        with pytest.raises(ValueError):
            1 == approx(0, **kwargs)
Ejemplo n.º 34
0
def test_inf_tolerance_expecting_zero():
    # If the relative tolerance is zero but the expected value is infinite,
    # the actual tolerance is a NaN, which should be an error.
    illegal_kwargs = [
            dict(rel=inf, abs=0.0),
            dict(rel=inf, abs=inf),
    ]
    for kwargs in illegal_kwargs:
        with pytest.raises(ValueError):
            1 == approx(0, **kwargs)
Ejemplo n.º 35
0
def test_negative_tolerance():
    # Negative tolerances are not allowed.
    illegal_kwargs = [
            dict(rel=-1e100),
            dict(abs=-1e100),
            dict(rel=1e100, abs=-1e100),
            dict(rel=-1e100, abs=1e100),
            dict(rel=-1e100, abs=-1e100),
    ]
    for kwargs in illegal_kwargs:
        with pytest.raises(ValueError):
            1.1 == approx(1, **kwargs)
Ejemplo n.º 36
0
def test_negative_tolerance():
    # Negative tolerances are not allowed.
    illegal_kwargs = [
        dict(rel=-1e100),
        dict(abs=-1e100),
        dict(rel=1e100, abs=-1e100),
        dict(rel=-1e100, abs=1e100),
        dict(rel=-1e100, abs=-1e100),
    ]
    for kwargs in illegal_kwargs:
        with pytest.raises(ValueError):
            1.1 == approx(1, **kwargs)
Ejemplo n.º 37
0
def test_exactly_equal():
    examples = [
            (2.0, 2.0),
            (0.1e200, 0.1e200),
            (1.123e-300, 1.123e-300),
            (12345, 12345.0),
            (0.0, -0.0),
            (345678, 345678),
            (Decimal('1.0001'), Decimal('1.0001')),
            (Fraction(1, 3), Fraction(-1, -3)),
    ]
    for a, x in examples:
        assert a == approx(x)
Ejemplo n.º 38
0
def test_exactly_equal():
    examples = [
        (2.0, 2.0),
        (0.1e200, 0.1e200),
        (1.123e-300, 1.123e-300),
        (12345, 12345.0),
        (0.0, -0.0),
        (345678, 345678),
        (Decimal('1.0001'), Decimal('1.0001')),
        (Fraction(1, 3), Fraction(-1, -3)),
    ]
    for a, x in examples:
        assert a == approx(x)
Ejemplo n.º 39
0
def test_zero_tolerance():
    within_1e10 = [
        (1.1e-100, 1e-100),
        (-1.1e-100, -1e-100),
    ]
    for a, x in within_1e10:
        assert x == approx(x, rel=0.0, abs=0.0)
        assert a != approx(x, rel=0.0, abs=0.0)
        assert a == approx(x, rel=0.0, abs=5e-101)
        assert a != approx(x, rel=0.0, abs=5e-102)
        assert a == approx(x, rel=5e-1, abs=0.0)
        assert a != approx(x, rel=5e-2, abs=0.0)
Ejemplo n.º 40
0
def test_zero_tolerance():
    within_1e10 = [
            (1.1e-100, 1e-100),
            (-1.1e-100, -1e-100),
    ]
    for a, x in within_1e10:
        assert x == approx(x, rel=0.0, abs=0.0)
        assert a != approx(x, rel=0.0, abs=0.0)
        assert a == approx(x, rel=0.0, abs=5e-101)
        assert a != approx(x, rel=0.0, abs=5e-102)
        assert a == approx(x, rel=5e-1, abs=0.0)
        assert a != approx(x, rel=5e-2, abs=0.0)
Ejemplo n.º 41
0
def test_default_tolerances():
    # This tests the defaults as they are currently set.  If you change the
    # defaults, this test will fail but you should feel free to change it.
    # None of the other tests (except the doctests) should be affected by
    # the choice of defaults.
    examples = [
            # Relative tolerance used.
            (eq, 1e100 + 1e94, 1e100),
            (ne, 1e100 + 2e94, 1e100),
            (eq, 1e0 + 1e-6, 1e0),
            (ne, 1e0 + 2e-6, 1e0),
            # Absolute tolerance used.
            (eq, 1e-100, + 1e-106),
            (eq, 1e-100, + 2e-106),
            (eq, 1e-100, 0),
    ]
    for op, a, x in examples:
        assert op(a, approx(x))
Ejemplo n.º 42
0
def test_default_tolerances():
    # This tests the defaults as they are currently set.  If you change the
    # defaults, this test will fail but you should feel free to change it.
    # None of the other tests (except the doctests) should be affected by
    # the choice of defaults.
    examples = [
        # Relative tolerance used.
        (eq, 1e100 + 1e94, 1e100),
        (ne, 1e100 + 2e94, 1e100),
        (eq, 1e0 + 1e-6, 1e0),
        (ne, 1e0 + 2e-6, 1e0),
        # Absolute tolerance used.
        (eq, 1e-100, +1e-106),
        (eq, 1e-100, +2e-106),
        (eq, 1e-100, 0),
    ]
    for op, a, x in examples:
        assert op(a, approx(x))
Ejemplo n.º 43
0
def test_expecting_sequence_wrong_len():
    assert [1, 2] != approx([1])
    assert [1, 2] != approx([1,2,3])
Ejemplo n.º 44
0
def test_operator_overloading():
    assert 1 == approx(1, rel=1e-6, abs=1e-12)
    assert not (1 != approx(1, rel=1e-6, abs=1e-12))
    assert 10 != approx(1, rel=1e-6, abs=1e-12)
    assert not (10 == approx(1, rel=1e-6, abs=1e-12))
Ejemplo n.º 45
0
def test_operator_overloading():
    assert 1 == approx(1, rel=1e-6, abs=1e-12)
    assert not (1 != approx(1, rel=1e-6, abs=1e-12))
    assert 10 != approx(1, rel=1e-6, abs=1e-12)
    assert not (10 == approx(1, rel=1e-6, abs=1e-12))
Ejemplo n.º 46
0
def test_reasonable_defaults():
    # Whatever the defaults are, they should work for numbers close to 1
    # than have a small amount of floating-point error.
    assert 0.1 + 0.2 == approx(0.3)
Ejemplo n.º 47
0
def test_expecting_sequence_wrong_len():
    assert [1, 2] != approx([1])
    assert [1, 2] != approx([1, 2, 3])
Ejemplo n.º 48
0
def test_reasonable_defaults():
    # Whatever the defaults are, they should work for numbers close to 1
    # than have a small amount of floating-point error.
    assert 0.1 + 0.2 == approx(0.3)
Ejemplo n.º 49
0
def test_custom_tolerances():
    assert 1e8 + 1e0 == approx(1e8, rel=5e-8, abs=5e0)
    assert 1e8 + 1e0 == approx(1e8, rel=5e-9, abs=5e0)
    assert 1e8 + 1e0 == approx(1e8, rel=5e-8, abs=5e-1)
    assert 1e8 + 1e0 != approx(1e8, rel=5e-9, abs=5e-1)

    assert 1e0 + 1e-8 == approx(1e0, rel=5e-8, abs=5e-8)
    assert 1e0 + 1e-8 == approx(1e0, rel=5e-9, abs=5e-8)
    assert 1e0 + 1e-8 == approx(1e0, rel=5e-8, abs=5e-9)
    assert 1e0 + 1e-8 != approx(1e0, rel=5e-9, abs=5e-9)

    assert 1e-8 + 1e-16 == approx(1e-8, rel=5e-8, abs=5e-16)
    assert 1e-8 + 1e-16 == approx(1e-8, rel=5e-9, abs=5e-16)
    assert 1e-8 + 1e-16 == approx(1e-8, rel=5e-8, abs=5e-17)
    assert 1e-8 + 1e-16 != approx(1e-8, rel=5e-9, abs=5e-17)
Ejemplo n.º 50
0
def test_custom_tolerances():
    assert 1e8 + 1e0 == approx(1e8, rel=5e-8, abs=5e0)
    assert 1e8 + 1e0 == approx(1e8, rel=5e-9, abs=5e0)
    assert 1e8 + 1e0 == approx(1e8, rel=5e-8, abs=5e-1)
    assert 1e8 + 1e0 != approx(1e8, rel=5e-9, abs=5e-1)

    assert 1e0 + 1e-8 == approx(1e0, rel=5e-8, abs=5e-8)
    assert 1e0 + 1e-8 == approx(1e0, rel=5e-9, abs=5e-8)
    assert 1e0 + 1e-8 == approx(1e0, rel=5e-8, abs=5e-9)
    assert 1e0 + 1e-8 != approx(1e0, rel=5e-9, abs=5e-9)

    assert 1e-8 + 1e-16 == approx(1e-8, rel=5e-8, abs=5e-16)
    assert 1e-8 + 1e-16 == approx(1e-8, rel=5e-9, abs=5e-16)
    assert 1e-8 + 1e-16 == approx(1e-8, rel=5e-8, abs=5e-17)
    assert 1e-8 + 1e-16 != approx(1e-8, rel=5e-9, abs=5e-17)