114 lines
4.1 KiB
Python
114 lines
4.1 KiB
Python
import os
|
|
import cProfile
|
|
from unittest import TestCase
|
|
from libeos import options, reduction, logconfig
|
|
|
|
logconfig.setup_logging()
|
|
logconfig.update_loglevel(True, False)
|
|
|
|
# TODO: add test for new features like proton charge normalization
|
|
|
|
class FullAmorTest(TestCase):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
cls.pr = cProfile.Profile()
|
|
|
|
@classmethod
|
|
def tearDownClass(cls):
|
|
cls.pr.dump_stats("profile_test.prof")
|
|
|
|
def setUp(self):
|
|
self.pr.enable()
|
|
self.reader_config = options.ReaderConfig(
|
|
year=2023,
|
|
rawPath=(os.path.join('..', "test_data"),),
|
|
)
|
|
|
|
def tearDown(self):
|
|
self.pr.disable()
|
|
for fi in ['test.Rqz.ort', '614.norm']:
|
|
try:
|
|
os.unlink(os.path.join(self.reader_config.rawPath[0], fi))
|
|
except FileNotFoundError:
|
|
pass
|
|
|
|
|
|
def test_time_slicing(self):
|
|
experiment_config = options.ExperimentConfig(
|
|
chopperSpeed=options.Defaults.chopperSpeed,
|
|
chopperPhase=-13.5,
|
|
chopperPhaseOffset=-5,
|
|
monitorType=options.Defaults.monitorType,
|
|
lowCurrentThreshold=options.Defaults.lowCurrentThreshold,
|
|
yRange=(11., 41.),
|
|
lambdaRange=(2., 15.),
|
|
qzRange=(0.005, 0.30),
|
|
incidentAngle=options.Defaults.incidentAngle,
|
|
mu=0,
|
|
nu=0,
|
|
muOffset=0.0,
|
|
sampleModel='air | 10 H2O | D2O'
|
|
)
|
|
reduction_config = options.ReductionConfig(
|
|
normalisationMethod=options.Defaults.normalisationMethod,
|
|
qResolution=0.01,
|
|
qzRange=options.Defaults.qzRange,
|
|
thetaRange=(-12., 12.),
|
|
thetaRangeR=(-12., 12.),
|
|
fileIdentifier=["610"],
|
|
scale=[1],
|
|
normalisationFileIdentifier=[],
|
|
timeSlize=[300.0]
|
|
)
|
|
output_config = options.OutputConfig(
|
|
outputFormats=["Rqz.ort"],
|
|
outputName='test',
|
|
outputPath=os.path.join('..', 'test_results'),
|
|
)
|
|
config=options.EOSConfig(self.reader_config, experiment_config, reduction_config, output_config)
|
|
# run three times to get similar timing to noslicing runs
|
|
reducer = reduction.AmorReduction(config)
|
|
reducer.reduce()
|
|
reducer = reduction.AmorReduction(config)
|
|
reducer.reduce()
|
|
reducer = reduction.AmorReduction(config)
|
|
reducer.reduce()
|
|
|
|
def test_noslicing(self):
|
|
experiment_config = options.ExperimentConfig(
|
|
chopperSpeed=options.Defaults.chopperSpeed,
|
|
chopperPhase=-13.5,
|
|
chopperPhaseOffset=-5,
|
|
monitorType=options.Defaults.monitorType,
|
|
lowCurrentThreshold=options.Defaults.lowCurrentThreshold,
|
|
yRange=(11., 41.),
|
|
lambdaRange=(2., 15.),
|
|
qzRange=(0.005, 0.30),
|
|
incidentAngle=options.Defaults.incidentAngle,
|
|
mu=0,
|
|
nu=0,
|
|
muOffset=0.0
|
|
)
|
|
reduction_config = options.ReductionConfig(
|
|
qResolution=0.01,
|
|
qzRange=options.Defaults.qzRange,
|
|
normalisationMethod=options.Defaults.normalisationMethod,
|
|
thetaRange=(-12., 12.),
|
|
thetaRangeR=(-12., 12.),
|
|
fileIdentifier=["610", "611", "608,612-613", "609"],
|
|
scale=[1],
|
|
normalisationFileIdentifier=["608"],
|
|
autoscale=(True, True)
|
|
)
|
|
output_config = options.OutputConfig(
|
|
outputFormats=["Rqz.ort"],
|
|
outputName='test',
|
|
outputPath=os.path.join('..', 'test_results'),
|
|
)
|
|
config=options.EOSConfig(self.reader_config, experiment_config, reduction_config, output_config)
|
|
reducer = reduction.AmorReduction(config)
|
|
reducer.reduce()
|
|
# run second time to reuse norm file
|
|
reducer = reduction.AmorReduction(config)
|
|
reducer.reduce()
|