Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .github/workflows/unittests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,13 @@ jobs:
pip install smefit
- name: Run tests
run: pytest
- name: Install smefit
run: |
pip install smefit
- name: Test with pytest
run: |
# add test packages
pip install pytest
pip install pytest-cov
pip install pytest-env
pytest
51 changes: 51 additions & 0 deletions tests/test_covariance.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# python
import pathlib, os
import numpy as np
import pytest
from smefit.loader import Loader
from smefit.covmat import covmat_from_systematics

BASE_DIR = os.path.dirname(__file__)
COMMONDATA_DIRS = [
pathlib.Path(BASE_DIR + "/../commondata"),
pathlib.Path(BASE_DIR + "/../commondata_projections_L0"),
]


def get_yaml_files(directories):
files = []
for directory in directories:
if pathlib.Path(directory).is_dir():
files.extend(
(f.stem, directory)
for f in pathlib.Path(directory).iterdir()
if f.suffix == ".yaml"
)
return files


@pytest.mark.parametrize("dataset,commondata_dir", get_yaml_files(COMMONDATA_DIRS))
def test_experimental_covmat(dataset, commondata_dir):
Loader.commondata_path = commondata_dir
Loader.theory_path = pathlib.Path(BASE_DIR + "/../theory")

loaded_dataset = Loader(
setname=dataset,
operators_to_keep=[],
order="LO",
use_quad="False",
use_theory_covmat="False",
use_multiplicative_prescription="False",
rot_to_fit_basis=None,
cutoff_scale=None,
)

stat_error = loaded_dataset.stat_error
sys_error = loaded_dataset.sys_error

exp_covmat = covmat_from_systematics([stat_error], [sys_error])

eigvals = np.linalg.eigvalsh(exp_covmat)
assert np.all(
eigvals > 0
), f"Experimental covariance matrix for {dataset} is not positive definite."
Loading