-
Sebastian Müller authored2b20d4d7
test_tools.py 13.56 KiB
import datetime as dt
import unittest
import numpy as np
import pytest
import finam as fm
from finam.data.tools import (
check,
compatible_units,
equivalent_units,
full,
full_like,
get_magnitude,
get_units,
is_quantified,
prepare,
strip_time,
to_units,
)
class TestCheck(unittest.TestCase):
@pytest.fixture(autouse=True)
def setupBenchmark(self, benchmark):
self.benchmark = benchmark
@pytest.mark.benchmark(group="data-tools")
def test_check_01_2x1(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((2, 1)), units="m")
xdata = full(0.0, info)
_result = self.benchmark(check, xdata=xdata, info=info)
@pytest.mark.benchmark(group="data-tools")
def test_check_02_512x256(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((512, 256)), units="m")
xdata = full(0.0, info)
_result = self.benchmark(check, xdata=xdata, info=info)
class TestPrepare(unittest.TestCase):
@pytest.fixture(autouse=True)
def setupBenchmark(self, benchmark):
self.benchmark = benchmark
def copy_numpy_prepare(self, data, info):
return prepare(np.copy(data), info=info)
@pytest.mark.benchmark(group="data-tools")
def test_prepare_np_01_2x1(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((2, 1)), units="m")
xdata = full(0.0, info)
_result = self.benchmark(prepare, data=xdata, info=info)
@pytest.mark.benchmark(group="data-tools")
def test_prepare_np_02_512x256(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((512, 256)), units="m")
xdata = full(0.0, info)
_result = self.benchmark(prepare, data=xdata, info=info)
@pytest.mark.benchmark(group="data-tools")
def test_prepare_np_03_2048x1024(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((2048, 1024)), units="m")
xdata = full(0.0, info)
_result = self.benchmark(prepare, data=xdata, info=info)
@pytest.mark.benchmark(group="data-tools")
def test_prepare_np_units_01_2x1(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((2, 1)), units="m")
xdata = full(0.0, info).magnitude
_result = self.benchmark(prepare, data=xdata, info=info)
@pytest.mark.benchmark(group="data-tools")
def test_prepare_np_units_02_512x256(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((512, 256)), units="m")
xdata = full(0.0, info).magnitude
_result = self.benchmark(prepare, data=xdata, info=info)
@pytest.mark.benchmark(group="data-tools")
def test_prepare_np_units_03_2048x1024(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((2048, 1024)), units="m")
xdata = full(0.0, info).magnitude
_result = self.benchmark(prepare, data=xdata, info=info)
@pytest.mark.benchmark(group="data-tools-slow")
def test_cp_prepare_np_01_2x1(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((2, 1)), units="m")
xdata = full(0.0, info)
_result = self.benchmark(self.copy_numpy_prepare, data=xdata, info=info)
@pytest.mark.benchmark(group="data-tools-slow")
def test_cp_prepare_np_02_512x256(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((512, 256)), units="m")
xdata = full(0.0, info)
_result = self.benchmark(self.copy_numpy_prepare, data=xdata, info=info)
@pytest.mark.benchmark(group="data-tools-slow")
def test_cp_prepare_np_03_1024x512(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((1024, 512)), units="m")
xdata = full(0.0, info)
_result = self.benchmark(self.copy_numpy_prepare, data=xdata, info=info)
@pytest.mark.benchmark(group="data-tools-slow")
def test_cp_prepare_np_04_2048x1024(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((2048, 1024)), units="m")
xdata = full(0.0, info)
_result = self.benchmark(self.copy_numpy_prepare, data=xdata, info=info)
class TestFull(unittest.TestCase):
@pytest.fixture(autouse=True)
def setupBenchmark(self, benchmark):
self.benchmark = benchmark
@pytest.mark.benchmark(group="data-tools-slow")
def test_full_01_2x1(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((2, 1)), units="m")
_result = self.benchmark(full, value=0.0, info=info)
@pytest.mark.benchmark(group="data-tools-slow")
def test_full_02_512x256(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((512, 256)), units="m")
_result = self.benchmark(full, value=0.0, info=info)
@pytest.mark.benchmark(group="data-tools-slow")
def test_full_03_2048x1024(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((2048, 1024)), units="m")
_result = self.benchmark(full, value=0.0, info=info)
class TestFullLike(unittest.TestCase):
@pytest.fixture(autouse=True)
def setupBenchmark(self, benchmark):
self.benchmark = benchmark
@pytest.mark.benchmark(group="data-tools-slow")
def test_full_like_01_2x1(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((2, 1)), units="m")
xdata = full(0.0, info)
_result = self.benchmark(full_like, xdata=xdata, value=0.0)
@pytest.mark.benchmark(group="data-tools-slow")
def test_full_like_02_512x256(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((512, 256)), units="m")
xdata = full(0.0, info)
_result = self.benchmark(full_like, xdata=xdata, value=0.0)
@pytest.mark.benchmark(group="data-tools-slow")
def test_full_like_03_2048x1024(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((2048, 1024)), units="m")
xdata = full(0.0, info)
_result = self.benchmark(full_like, xdata=xdata, value=0.0)
class TestTimeTools(unittest.TestCase):
@pytest.fixture(autouse=True)
def setupBenchmark(self, benchmark):
self.benchmark = benchmark
@pytest.mark.benchmark(group="data-tools")
def test_strip_time(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((2, 1)), units="m")
xdata = full(0.0, info)
_result = self.benchmark(strip_time, xdata=xdata, grid=info.grid)
class TestUnitsTools(unittest.TestCase):
@pytest.fixture(autouse=True)
def setupBenchmark(self, benchmark):
self.benchmark = benchmark
@pytest.mark.benchmark(group="data-tools")
def test_get_units(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((2, 1)), units="m")
xdata = full(0.0, info)
_result = self.benchmark(get_units, xdata=xdata)
@pytest.mark.benchmark(group="data-tools")
def test_is_quantified(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((2, 1)), units="m")
xdata = full(0.0, info)
_result = self.benchmark(is_quantified, xdata=xdata)
@pytest.mark.benchmark(group="data-tools")
def test_equivalent_units_true(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((2, 1)), units="mm")
xdata = full(0.0, info)
_result = equivalent_units(xdata, fm.UNITS.Unit("L/m^2"))
result = self.benchmark(
equivalent_units, unit1=xdata, unit2=fm.UNITS.Unit("L/m^2")
)
self.assertTrue(result)
@pytest.mark.benchmark(group="data-tools")
def test_equivalent_units_false(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((2, 1)), units="mm")
xdata = full(0.0, info)
_result = equivalent_units(xdata, fm.UNITS.meter)
result = self.benchmark(equivalent_units, unit1=xdata, unit2=fm.UNITS.meter)
self.assertFalse(result)
@pytest.mark.benchmark(group="data-tools")
def test_compatible_units(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((2, 1)), units="mm")
xdata = full(0.0, info)
_result = compatible_units(xdata, fm.UNITS.kilometer)
_result = self.benchmark(
compatible_units, unit1=xdata, unit2=fm.UNITS.kilometer
)
@pytest.mark.benchmark(group="data-tools-slow")
def test_to_units_01_2x1(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((2, 1)), units="m")
xdata = full(0.0, info)
_result = self.benchmark(to_units, xdata=xdata, units="in")
@pytest.mark.benchmark(group="data-tools-slow")
def test_to_units_02_512x256(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((512, 256)), units="m")
xdata = full(0.0, info)
_result = self.benchmark(to_units, xdata=xdata, units="in")
@pytest.mark.benchmark(group="data-tools-slow")
def test_to_units_03_2048x1024(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((2048, 1024)), units="m")
xdata = full(0.0, info)
_result = self.benchmark(to_units, xdata=xdata, units="in")
@pytest.mark.benchmark(group="data-tools")
def test_to_units_noop_01_2x1(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((2, 1)), units="m")
xdata = full(0.0, info)
_result = self.benchmark(to_units, xdata=xdata, units="m")
@pytest.mark.benchmark(group="data-tools")
def test_to_units_noop_02_512x256(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((512, 256)), units="m")
xdata = full(0.0, info)
_result = self.benchmark(to_units, xdata=xdata, units="m")
@pytest.mark.benchmark(group="data-tools")
def test_to_units_noop_03_2048x1024(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((2048, 1024)), units="m")
xdata = full(0.0, info)
_result = self.benchmark(to_units, xdata=xdata, units="m")
@pytest.mark.benchmark(group="data-tools")
def test_get_magnitude_01_2x1(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((2, 1)), units="m")
xdata = full(0.0, info)
_result = self.benchmark(get_magnitude, xdata=xdata)
@pytest.mark.benchmark(group="data-tools")
def test_get_magnitude_02_512x256(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((512, 256)), units="m")
xdata = full(0.0, info)
_result = self.benchmark(get_magnitude, xdata=xdata)
@pytest.mark.benchmark(group="data-tools")
def test_get_magnitude_03_2048x1024(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((2048, 1024)), units="m")
xdata = full(0.0, info)
_result = self.benchmark(get_magnitude, xdata=xdata)
@pytest.mark.benchmark(group="data-tools-slow")
def test_set_units_mul_01_512x256(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((512, 256)), units="m")
xdata = full(0.0, info).magnitude
_result = self.benchmark(set_units_mul, data=xdata, units=fm.UNITS.Unit("m"))
@pytest.mark.benchmark(group="data-tools-slow")
def test_set_units_mul_02_1024x512(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((1024, 512)), units="m")
xdata = full(0.0, info).magnitude
_result = self.benchmark(set_units_mul, data=xdata, units=fm.UNITS.Unit("m"))
@pytest.mark.benchmark(group="data-tools-slow")
def test_set_units_mul_03_2048x1024(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((2048, 1024)), units="m")
xdata = full(0.0, info).magnitude
_result = self.benchmark(set_units_mul, data=xdata, units=fm.UNITS.Unit("m"))
@pytest.mark.benchmark(group="data-tools-slow")
def test_set_units_quant_01_512x256(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((512, 256)), units="m")
xdata = full(0.0, info).magnitude
_result = self.benchmark(set_units_qua, data=xdata, units=fm.UNITS.Unit("m"))
@pytest.mark.benchmark(group="data-tools-slow")
def test_set_units_quant_02_1024x512(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((1024, 512)), units="m")
xdata = full(0.0, info).magnitude
_result = self.benchmark(set_units_qua, data=xdata, units=fm.UNITS.Unit("m"))
@pytest.mark.benchmark(group="data-tools-slow")
def test_set_units_quant_03_2048x1024(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((2048, 1024)), units="m")
xdata = full(0.0, info).magnitude
_result = self.benchmark(set_units_qua, data=xdata, units=fm.UNITS.Unit("m"))
def set_units_mul(data, units):
return units * data
def set_units_qua(data, units):
return fm.UNITS.Quantity(data, units)