Source code for blissoda.tests.test_id31
import numpy
import pytest
from .mock_id31 import mock_id31
from .mock_id31 import setup_globals
from ..id31 import optimize_exposure
[docs]
@pytest.fixture
def current_session_mock():
with mock_id31():
yield
[docs]
def test_ct(current_session_mock):
setup_globals.p3.noise = False
setup_globals.source.rate = 1e7
setup_globals.sample.oyield = 0.1
expected = 1e6
assert setup_globals.sample.rate == expected
setup_globals.p3.ct()
assert setup_globals.p3.proxy.last_image.max() == expected
setup_globals.att(1)
assert setup_globals.sample.rate <= expected
setup_globals.p3.ct()
fmax = int(setup_globals.sample.rate + 0.5)
assert setup_globals.p3.proxy.last_image.max() == fmax
setup_globals.att(0)
assert setup_globals.sample.rate == expected
setup_globals.p3.ct()
assert setup_globals.p3.proxy.last_image.max() == expected
setup_globals.source.rate = 5e7 + 25
with pytest.raises(RuntimeError):
setup_globals.p3.ct()
setup_globals.att(1)
setup_globals.p3.ct()
[docs]
def test_attenuator_optimization(current_session_mock):
setup_globals.sample.oyield = 1
setup_globals.p3.noise = False
lst = list()
for default_att_position in range(32):
sublist = list()
lst.append(sublist)
flux = numpy.linspace(1e4, 1e6, 10)
for fl in flux:
setup_globals.source.rate = fl
setup_globals.att(0)
assert setup_globals.p3.rate == fl
condition = optimize_exposure.optimize_exposure_condition(
setup_globals.p3,
default_att_position=default_att_position,
desired_counts=1e5,
)
setup_globals.ct(condition.expo_time, setup_globals.p3)
sublist.append(setup_globals.atten.bits)
for sublist in lst:
assert sublist == lst[0]