Ejemplo n.º 1
0
def test_write_virtual(mock_fxe_raw_run):
    with TemporaryDirectory() as td:
        new_file = osp.join(td, 'test.h5')

        with RunDirectory(mock_fxe_raw_run) as run:
            run.write_virtual(new_file)

        assert_isfile(new_file)

        with h5py.File(new_file) as f:
            ds = f['CONTROL/SPB_XTD9_XGM/DOOCS/MAIN/beamPosition/ixPos/value']
            assert ds.is_virtual

        with H5File(new_file) as f:
            np.testing.assert_array_equal(
                f.train_ids, np.arange(10000, 10480, dtype=np.uint64))

            assert 'SPB_XTD9_XGM/DOOCS/MAIN' in f.control_sources
            assert 'SPB_XTD9_XGM/DOOCS/MAIN:output' in f.instrument_sources

            s = f.get_series('SPB_XTD9_XGM/DOOCS/MAIN',
                             'beamPosition.ixPos.value')
            # This should have concatenated the two sequence files (400 + 80)
            assert len(s) == 480

            a = f.get_array('SPB_XTD9_XGM/DOOCS/MAIN:output',
                            'data.intensityTD')
            assert a.shape == (480, 1000)
Ejemplo n.º 2
0
def test_iterate_trains(mock_agipd_data):
    with H5File(mock_agipd_data) as f:
        for train_id, data in islice(f.trains(), 10):
            assert train_id in range(10000, 10250)
            assert 'SPB_DET_AGIPD1M-1/DET/7CH0:xtdf' in data.keys()
            assert len(data) == 1
            assert 'image.data' in data['SPB_DET_AGIPD1M-1/DET/7CH0:xtdf']
Ejemplo n.º 3
0
def test_iterate_trains_fxe(mock_fxe_control_data):
    with H5File(mock_fxe_control_data) as f:
        for train_id, data in islice(f.trains(), 10):
            assert train_id in range(10000, 10400)
            assert 'SA1_XTD2_XGM/DOOCS/MAIN' in data.keys()
            assert 'beamPosition.ixPos.value' in data[
                'SA1_XTD2_XGM/DOOCS/MAIN']
Ejemplo n.º 4
0
def test_iterate_file_select_trains(mock_fxe_control_data):
    with H5File(mock_fxe_control_data) as f:
        tids = [tid for (tid, _) in f.trains(train_range=by_id[:10003])]
        assert tids == [10000, 10001, 10002]

        tids = [tid for (tid, _) in f.trains(train_range=by_index[-2:])]
        assert tids == [10398, 10399]
Ejemplo n.º 5
0
def test_filter_device():

    dev_filter_1 = {
        'SPB_XTD9_XGM/XGM/DOOCS':
        {'pulseEnergy.pulseEnergy.value', 'current.right.output.value'}
    }
    dev_filter_2 = {''}
    dev_filter_3 = {
        'SPB_XTD9_XGM/XGM/DOOCS': {},
        'SA1_XTD2_XGM/XGM/DOOCS': {'pulseEnergy.pulseEnergy.value'}
    }

    with H5File(RUNPATH_SLOW + '/RAW-R0115-DA01-S00000.h5') as f:
        _, data = f.train_from_index(500, devices=dev_filter_1)

        assert len(data) == 1
        assert 'SPB_XTD9_XGM/XGM/DOOCS' in data
        xgm = data['SPB_XTD9_XGM/XGM/DOOCS']
        assert len(xgm) == 3  # metadata, pulseEnergy, current
        assert 'pulseEnergy.pulseEnergy.value' in xgm
        # assert xgm['pulseEnergy.pulseEnergy.value'] == approx(0.06392462, rel=1e-7)
        # assert xgm['current.right.output.value'] == approx(-7.968561e-15, rel=1e-6)

        _, data = f.train_from_index(0, devices=dev_filter_2)
        assert len(data) == 0

        _, data = f.train_from_index(0, devices=dev_filter_3)
        assert len(data) == 2
        assert len(data['SPB_XTD9_XGM/XGM/DOOCS']) == 77
        assert len(data['SA1_XTD2_XGM/XGM/DOOCS']) == 2
Ejemplo n.º 6
0
def test_iterate_trains():
    with H5File(FILEPATH) as f:

        for train_id, data in f.trains():
            print(train_id)
            assert train_id in range(1455918683, 1455918703)
            assert 'FXE_DET_LPD1M-1/DET/0CH0:xtdf' in data.keys()
            assert len(data) == 1
            assert len(data['FXE_DET_LPD1M-1/DET/0CH0:xtdf']) == 21
Ejemplo n.º 7
0
def test_get_train_per_index():
    with H5File(FILEPATH) as f:
        train, data = f.train_from_index(0)
        assert data is not None
        assert train == 1455918683

        with pytest.raises(ValueError) as info:
            data, _, _ = f.train_from_index(20)  # index out of range
        print(info)
Ejemplo n.º 8
0
def test_file_get_array(mock_fxe_control_data):
    with H5File(mock_fxe_control_data) as f:
        arr = f.get_array('FXE_XAD_GEC/CAM/CAMERA:daqOutput',
                          'data.image.pixels')

    assert isinstance(arr, DataArray)
    assert arr.dims == ('trainId', 'dim_0', 'dim_1')
    assert arr.shape == (400, 255, 1024)
    assert arr.coords['trainId'][0] == 10000
Ejemplo n.º 9
0
def test_lsxfel_file(mock_lpd_data, capsys):
    with H5File(mock_lpd_data) as f:
        img_ds, index = lsxfel.find_image(f)
        assert img_ds.ndim == 4
        assert index['first'].shape == (480, )

    lsxfel.summarise_file(mock_lpd_data)
    out, err = capsys.readouterr()
    assert "480 trains, 128 frames/train" in out
Ejemplo n.º 10
0
def test_read_metadata():
    with H5File(FILEPATH) as f:

        _, data1 = f.train_from_index(0)
        sleep(2)
        _, data2 = f.train_from_index(0)
        assert 'metadata' in data1['FXE_DET_LPD1M-1/DET/0CH0:xtdf']
        assert data1['FXE_DET_LPD1M-1/DET/0CH0:xtdf']['metadata']['timestamp']['tid'] == 1455918683
        assert data1['FXE_DET_LPD1M-1/DET/0CH0:xtdf']['metadata']['timestamp']['sec'] != data2['FXE_DET_LPD1M-1/DET/0CH0:xtdf']['metadata']['timestamp']['sec']
        assert data1['FXE_DET_LPD1M-1/DET/0CH0:xtdf']['metadata']['source'] == 'FXE_DET_LPD1M-1/DET/0CH0:xtdf'
Ejemplo n.º 11
0
def test_get_train_per_id():
    with H5File(FILEPATH) as f:
        train, data = f.train_from_id(1455918700)
        print(data)
        assert data is not None
        assert train == 1455918700

        with pytest.raises(KeyError) as info:
            data = f.train_from_id(1234)  # train id not in file
        print(info)
Ejemplo n.º 12
0
def test_get_train_bad_device_name(mock_spb_control_data_badname):
    # Check that we can handle devices which don't have the standard Karabo
    # name structure A/B/C.
    with H5File(mock_spb_control_data_badname) as f:
        train_id, data = f.train_from_id(10004)
        assert train_id == 10004
        assert 'SPB_IRU_SIDEMIC_CAM:daqOutput' in data
        assert 'data.image.dims' in data['SPB_IRU_SIDEMIC_CAM:daqOutput']
        dims = data['SPB_IRU_SIDEMIC_CAM:daqOutput']['data.image.dims']
        assert list(dims) == [1000, 1000]
Ejemplo n.º 13
0
def test_file_get_array_missing_trains(mock_sa3_control_data):
    with H5File(mock_sa3_control_data) as f:
        sel = f.select_trains(by_index[:6])
        arr = sel.get_array('SA3_XTD10_IMGFEL/CAM/BEAMVIEW2:daqOutput',
                            'data.image.dims')

    assert isinstance(arr, DataArray)
    assert arr.dims == ('trainId', 'dim_0')
    assert arr.shape == (3, 2)
    np.testing.assert_array_less(arr.coords['trainId'], 10006)
    np.testing.assert_array_less(10000, arr.coords['trainId'])
Ejemplo n.º 14
0
def test_file_get_array_control_roi(mock_sa3_control_data):
    with H5File(mock_sa3_control_data) as f:
        sel = f.select_trains(by_index[:6])
        arr = sel.get_array(
            'SA3_XTD10_VAC/DCTRL/D6_APERT_IN_OK',
            'interlock.a1.AActCommand.value',
            roi=by_index[:25],
        )

    assert isinstance(arr, DataArray)
    assert arr.shape == (6, 25)
    assert arr.coords['trainId'][0] == 10000
Ejemplo n.º 15
0
def test_iterate_trains_require_all(mock_sa3_control_data):
    with H5File(mock_sa3_control_data) as f:
        trains_iter = f.trains(devices=[('*/CAM/BEAMVIEW:daqOutput',
                                         'data.image.dims')],
                               require_all=True)
        tids = [t for (t, _) in trains_iter]
        assert tids == []
        trains_iter = f.trains(devices=[('*/CAM/BEAMVIEW:daqOutput',
                                         'data.image.dims')],
                               require_all=False)
        tids = [t for (t, _) in trains_iter]
        assert tids != []
Ejemplo n.º 16
0
def test_file_get_series_instrument(mock_agipd_data):
    with H5File(mock_agipd_data) as f:
        s = f.get_series('SPB_DET_AGIPD1M-1/DET/7CH0:xtdf', 'header.linkId')
        assert isinstance(s, pd.Series)
        assert len(s) == 250
        assert s.index[0] == 10000

        # Multiple readings per train
        s2 = f.get_series('SPB_DET_AGIPD1M-1/DET/7CH0:xtdf', 'image.status')
        assert isinstance(s2, pd.Series)
        assert isinstance(s2.index, pd.MultiIndex)
        assert len(s2) == 16000
        assert len(s2.loc[10000:10004]) == 5 * 64
Ejemplo n.º 17
0
def test_get_file_info():
    with H5File(FILEPATH) as f:

        trains = f.train_ids
        train_count = len(trains)
        devices = f.devices
        sources = f.sources

        print('train ids:', trains)
        print('count: ', train_count)
        print('devices: ', devices)
        print('data_sources: ', sources)

        assert 1455918683 in trains
        assert 1234 not in trains
        assert train_count == 20
        assert 'FXE_DET_LPD1M-1/DET/0CH0:xtdf/detector' in devices
        assert 'INSTRUMENT/FXE_DET_LPD1M-1/DET/0CH0:xtdf/detector' in sources
Ejemplo n.º 18
0
def test_iterate_trains_select_keys(mock_fxe_control_data):
    sel = {
        'SA1_XTD2_XGM/DOOCS/MAIN': {
            'beamPosition.ixPos.value',
            'beamPosition.ixPos.timestamp',
        }
    }

    with H5File(mock_fxe_control_data) as f:
        for train_id, data in islice(f.trains(devices=sel), 10):
            assert train_id in range(10000, 10400)
            assert 'SA1_XTD2_XGM/DOOCS/MAIN' in data.keys()
            assert 'beamPosition.ixPos.value' in data[
                'SA1_XTD2_XGM/DOOCS/MAIN']
            assert 'beamPosition.ixPos.timestamp' in data[
                'SA1_XTD2_XGM/DOOCS/MAIN']
            assert 'beamPosition.iyPos.value' not in data[
                'SA1_XTD2_XGM/DOOCS/MAIN']
            assert 'SA3_XTD10_VAC/TSENS/S30160K' not in data
Ejemplo n.º 19
0
def test_write_selected(mock_fxe_raw_run):
    with TemporaryDirectory() as td:
        new_file = osp.join(td, 'test.h5')

        with RunDirectory(mock_fxe_raw_run) as run:
            run.select('SPB_XTD9_XGM/*').write(new_file)

        assert_isfile(new_file)

        with H5File(new_file) as f:
            assert f.control_sources == {'SPB_XTD9_XGM/DOOCS/MAIN'}
            assert f.instrument_sources == {'SPB_XTD9_XGM/DOOCS/MAIN:output'}

            s = f.get_series('SPB_XTD9_XGM/DOOCS/MAIN',
                             'beamPosition.ixPos.value')
            # This should have concatenated the two sequence files (400 + 80)
            assert len(s) == 480

            a = f.get_array('SPB_XTD9_XGM/DOOCS/MAIN:output',
                            'data.intensityTD')
            assert a.shape == (480, 1000)
Ejemplo n.º 20
0
def test_file_get_series_instrument(mock_agipd_data):
    with H5File(mock_agipd_data) as f:
        s = f.get_series('SPB_DET_AGIPD1M-1/DET/7CH0:xtdf', 'header.linkId')
        assert isinstance(s, pd.Series)
        assert len(s) == 250
        assert s.index[0] == 10000

        # Multiple readings per train
        s2 = f.get_series('SPB_DET_AGIPD1M-1/DET/7CH0:xtdf', 'image.status')
        assert isinstance(s2, pd.Series)
        assert isinstance(s2.index, pd.MultiIndex)
        assert len(s2) == 16000
        assert len(s2.loc[10000:10004]) == 5 * 64

        sel = f.select_trains(by_index[5:10])
        s3 = sel.get_series('SPB_DET_AGIPD1M-1/DET/7CH0:xtdf', 'image.status')
        assert isinstance(s3, pd.Series)
        assert isinstance(s3.index, pd.MultiIndex)
        assert len(s3) == 5 * 64
        np.testing.assert_array_equal(s3.index.get_level_values(0),
                                      np.arange(10005, 10010).repeat(64))
Ejemplo n.º 21
0
def test_detector_info_oldfmt(mock_agipd_data):
    with H5File(mock_agipd_data) as f:
        di = f.detector_info('SPB_DET_AGIPD1M-1/DET/7CH0:xtdf')
        assert di['dims'] == (512, 128)
        assert di['frames_per_train'] == 64
        assert di['total_frames'] == 16000
Ejemplo n.º 22
0
def test_detector_info(mock_lpd_data):
    with H5File(mock_lpd_data) as f:
        di = f.detector_info()
        assert di['dims'] == (256, 256)
        assert di['frames_per_train'] == 128
        assert di['total_frames'] == 128 * 480
Ejemplo n.º 23
0
def test_detector_info_oldfmt(mock_agipd_data):
    with H5File(mock_agipd_data) as f:
        di = f.detector_info()
        assert di['dims'] == (512, 128)
        assert di['frames_per_train'] == 64
        assert di['total_frames'] == 16000
Ejemplo n.º 24
0
def test_file_get_series_control(mock_fxe_control_data):
    with H5File(mock_fxe_control_data) as f:
        s = f.get_series('SA1_XTD2_XGM/DOOCS/MAIN', "beamPosition.iyPos.value")
        assert isinstance(s, pd.Series)
        assert len(s) == 400
        assert s.index[0] == 10000
Ejemplo n.º 25
0
def test_train_info(mock_lpd_data, capsys):
    with H5File(mock_lpd_data) as f:
        f.train_info(10004)
        out, err = capsys.readouterr()
        assert "Devices" in out
        assert "FXE_DET_LPD1M-1/DET/0CH0:xtdf" in out
Ejemplo n.º 26
0
def test_open_file_format_1_0(mock_sa3_control_data_fmt_1_0):
    f = H5File(mock_sa3_control_data_fmt_1_0)
    file_access = f.files[0]
    assert file_access.format_version == '1.0'
    assert 'SA3_XTD10_VAC/TSENS/S30180K' in f.control_sources
Ejemplo n.º 27
0
def test_detector_info(mock_lpd_data):
    with H5File(mock_lpd_data) as f:
        di = f.detector_info('FXE_DET_LPD1M-1/DET/0CH0:xtdf')
        assert di['dims'] == (256, 256)
        assert di['frames_per_train'] == 128
        assert di['total_frames'] == 128 * 480
Ejemplo n.º 28
0
def test_H5File():
    f = H5File(FILEPATH)
    assert f.file.filename == FILEPATH
    assert len(f.train_ids) == 20
    f.close()