@@ -471,6 +471,21 @@ def monitor_event_data() -> workflow.NeXusData[FrameMonitor1, SampleRun]:
471471 )
472472
473473
474+ @pytest .fixture
475+ def monitor_histogram_data () -> workflow .NeXusData [FrameMonitor1 , SampleRun ]:
476+ time = sc .epoch (unit = 'ns' ) + sc .arange ('time' , 1 , 6 , unit = 's' ).to (unit = 'ns' )
477+ frame_time = sc .arange ('frame_time' , 12 , unit = 'ms' ).to (unit = 'ns' )
478+ return workflow .NeXusData [FrameMonitor1 , SampleRun ](
479+ sc .DataArray (
480+ 10.0
481+ * sc .arange ('x' , 5 * 12 , unit = 'counts' ).fold (
482+ 'x' , sizes = {'time' : 5 , 'frame_time' : 12 }
483+ ),
484+ coords = {'time' : time , 'frame_time' : frame_time },
485+ )
486+ )
487+
488+
474489def test_assemble_monitor_data_adds_events_as_values_and_coords (
475490 calibrated_monitor , monitor_event_data
476491) -> None :
@@ -482,7 +497,7 @@ def test_assemble_monitor_data_adds_events_as_values_and_coords(
482497 )
483498
484499
485- def test_assemble_monitor_data_adds_variances_to_weights (
500+ def test_assemble_monitor_data_adds_variances_to_events (
486501 calibrated_monitor , monitor_event_data
487502) -> None :
488503 monitor_data = workflow .assemble_monitor_data (
@@ -494,6 +509,30 @@ def test_assemble_monitor_data_adds_variances_to_weights(
494509 )
495510
496511
512+ def test_assemble_monitor_data_adds_histogram_as_values_and_coords (
513+ calibrated_monitor , monitor_histogram_data
514+ ) -> None :
515+ monitor_data = workflow .assemble_monitor_data (
516+ calibrated_monitor , monitor_histogram_data
517+ )
518+ assert_identical (
519+ monitor_data .drop_coords (tuple (calibrated_monitor .coords )),
520+ monitor_histogram_data ,
521+ )
522+
523+
524+ def test_assemble_monitor_data_adds_variances_to_weights (
525+ calibrated_monitor , monitor_histogram_data
526+ ) -> None :
527+ monitor_data = workflow .assemble_monitor_data (
528+ calibrated_monitor , monitor_histogram_data
529+ )
530+ assert_identical (
531+ sc .variances (monitor_data .drop_coords (tuple (calibrated_monitor .coords ))),
532+ monitor_histogram_data ,
533+ )
534+
535+
497536def test_assemble_monitor_preserves_coords (calibrated_monitor , monitor_event_data ):
498537 calibrated_monitor .coords ['abc' ] = sc .scalar (1.2 )
499538 monitor_data = workflow .assemble_monitor_data (
@@ -510,7 +549,7 @@ def test_assemble_monitor_preserves_masks(calibrated_monitor, monitor_event_data
510549 assert 'mymask' in monitor_data .masks
511550
512551
513- def test_load_monitor_workflow () -> None :
552+ def test_load_event_monitor_workflow () -> None :
514553 wf = LoadMonitorWorkflow (run_types = [SampleRun ], monitor_types = [FrameMonitor1 ])
515554 wf [Filename [SampleRun ]] = data .loki_tutorial_sample_run_60250 ()
516555 wf [NeXusName [FrameMonitor1 ]] = 'monitor_1'
@@ -519,6 +558,21 @@ def test_load_monitor_workflow() -> None:
519558 assert 'source_position' in da .coords
520559 assert da .bins is not None
521560 assert da .dims == ('event_time_zero' ,)
561+ assert da .bins .constituents ['data' ].variances is not None
562+
563+
564+ def test_load_histogram_monitor_workflow () -> None :
565+ wf = LoadMonitorWorkflow (run_types = [SampleRun ], monitor_types = [FrameMonitor1 ])
566+ wf [Filename [SampleRun ]] = data .dream_coda_test_file ()
567+ wf [NeXusName [FrameMonitor1 ]] = 'monitor_bunker'
568+ da = wf .compute (MonitorData [SampleRun , FrameMonitor1 ])
569+ assert 'position' in da .coords
570+ assert 'source_position' in da .coords
571+ assert da .bins is None
572+ assert da .dims == ('time' , 'frame_time' )
573+ assert 'time' in da .coords .keys ()
574+ assert 'frame_time' in da .coords .keys ()
575+ assert da .variances is not None
522576
523577
524578def test_load_detector_workflow () -> None :
0 commit comments