Source code for crikit.preprocess.tests.test_anscombe

import os
import numpy as np
import numpy.testing

import pytest

from crikit.preprocess.standardize import calc_anscombe_parameters

[docs]@pytest.fixture(scope="function") def make_datasets(): """ Setups and tears down a series of datasets """ np.random.seed(0) n_spectra = 1000 # number of indep. spectra n_lambda = 901 # number of wavelengths in each spectrum f = np.linspace(0,4000,n_lambda) # Frequency (au) y = 40e2*np.exp(-f**2/(2*350**2)) + 50e1*np.exp(-(f-2900)**2/(2*250**2)) # signal g_mean = 100 g_std = 25 p_alpha = 10 y_array = np.dot(np.ones((n_spectra,1)),y[None,:]) y_noisy = p_alpha*np.random.poisson(y_array) + g_std*np.random.randn(*y_array.shape) + g_mean dark = g_std*np.random.randn(*y_array.shape) + g_mean return y_noisy, dark, g_mean, g_std, p_alpha
[docs]def test_calc_ansc_params(make_datasets): """ Calculate Anscombe Parameters """ y_noisy, dark, g_mean, g_std, p_alpha = make_datasets out = calc_anscombe_parameters(dark, y_noisy, axis=0, rng=None, dark_subtracted=False) assert np.allclose(out['g_mean'].mean(), g_mean, rtol=1e-2) assert np.allclose(out['g_std'].mean(), g_std, rtol=1e-2) assert np.allclose(out['weighted_mean_alpha'].mean(), p_alpha, rtol=1e-2)