Source code for n3fit.tests.test_xops

"""
    Test the x operations
"""
import numpy as np

from n3fit.backends import operations as op
from n3fit.layers import xDivide, xIntegrator


[docs]def test_xdivide_default(): """Check that the default xDivide works as expected""" x_div = xDivide() test_input = np.array([1, 2, 3], dtype=np.float32).reshape((1, 3, 1)) test_output = x_div(test_input) expected_output = np.ones(shape=(1, 3, 14)) default_indices = [3, 4, 5, 6] for i in default_indices: expected_output[:, :, i] = 1 / test_input[:, :, 0] np.testing.assert_allclose(test_output, expected_output, rtol=1e-05)
[docs]def test_xdivide_indices(): """Check that xDivide with custom indices works as expected""" custom_indices = [0, 1, 7] x_div = xDivide(div_list=custom_indices) test_input = np.array([1, 2, 3], dtype=np.float32).reshape((1, 3, 1)) test_output = x_div(test_input) expected_output = np.ones(shape=(1, 3, 14)) for i in custom_indices: expected_output[:, :, i] = 1 / test_input[:, :, 0] np.testing.assert_allclose(test_output, expected_output, rtol=1e-05)
[docs]def test_xintegrator(): np.random.seed(42) weights = np.random.rand(5, 1) pdf = op.numpy_to_tensor(np.random.rand(1, 1, 5, 8)) xint = xIntegrator(weights) xint_out = xint(pdf) xint_out_reference = np.array( [[[0.405455, 0.878931, 0.937715, 0.906214, 1.984154, 1.147975, 1.642387, 1.549858]]] ) np.testing.assert_allclose(xint_out.numpy(), xint_out_reference, rtol=1e-05)