Select Git revision
babel.config.js
test_bootstraps.py 2.76 KiB
from src.data_handling.bootstraps import BootStraps
import pytest
import os
import numpy as np
class TestBootstraps:
@pytest.fixture
def path(self):
path = os.path.join(os.path.dirname(__file__), "data")
if not os.path.exists(path):
os.makedirs(path)
return path
@pytest.fixture
def boot_no_init(self, path):
obj = object.__new__(BootStraps)
super(BootStraps, obj).__init__()
obj.number_bootstraps = 50
obj.bootstrap_path = path
return obj
def test_valid_bootstrap_file(self, path, boot_no_init):
station = "TESTSTATION"
variables = "var1_var2_var3"
window = 5
# empty case
assert len(os.listdir(path)) == 0
assert boot_no_init.valid_bootstrap_file(station, variables, window) == (False, 50)
# different cases, where files with bigger range are existing
os.mknod(os.path.join(path, f"{station}_{variables}_hist5_nboots50_shuffled.dat"))
assert boot_no_init.valid_bootstrap_file(station, variables, window) == (True, None)
os.mknod(os.path.join(path, f"{station}_{variables}_hist5_nboots100_shuffled.dat"))
assert boot_no_init.valid_bootstrap_file(station, variables, window) == (True, None)
os.mknod(os.path.join(path, f"{station}_{variables}_hist10_nboots50_shuffled.dat"))
os.mknod(os.path.join(path, f"{station}1_{variables}_hist10_nboots50_shuffled.dat"))
assert boot_no_init.valid_bootstrap_file(station, variables, window) == (True, None)
# need to reload data and therefore remove not fitting files for this station
assert boot_no_init.valid_bootstrap_file(station, variables, 20) == (False, 100)
assert len(os.listdir(path)) == 1
# reload because expanded boot number
os.mknod(os.path.join(path, f"{station}_{variables}_hist5_nboots50_shuffled.dat"))
boot_no_init.number_bootstraps = 60
assert boot_no_init.valid_bootstrap_file(station, variables, window) == (False, 60)
assert len(os.listdir(path)) == 1
# reload because of expanded window size, but use maximum boot number from file names
os.mknod(os.path.join(path, f"{station}_{variables}_hist5_nboots60_shuffled.dat"))
boot_no_init.number_bootstraps = 50
assert boot_no_init.valid_bootstrap_file(station, variables, 20) == (False, 60)
def test_shuffle_single_variale(self, boot_no_init):
data = np.array([[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]])
res = boot_no_init.shuffle_single_variable(data)
assert res.shape == data.shape
assert res.max() == data.max()
assert res.min() == data.min()
assert set(np.unique(res)).issubset({1, 2, 3})
def test_create_shuffled_data(self):
pass