def test_run_get_series_select_trains(mock_fxe_raw_run): run = RunDirectory(mock_fxe_raw_run) sel = run.select_trains(by_id[10100:10150]) s = sel.get_series('SA1_XTD2_XGM/DOOCS/MAIN', "beamPosition.iyPos.value") assert isinstance(s, pd.Series) assert len(s) == 50 assert list(s.index) == list(range(10100, 10150))
def test_union(mock_fxe_raw_run): run = RunDirectory(mock_fxe_raw_run) sel1 = run.select('SPB_XTD9_XGM/DOOCS/MAIN', 'beamPosition.ixPos') sel2 = run.select('SPB_XTD9_XGM/DOOCS/MAIN', 'beamPosition.iyPos') joined = sel1.union(sel2) assert joined.control_sources == {'SPB_XTD9_XGM/DOOCS/MAIN'} assert joined.selection == { 'SPB_XTD9_XGM/DOOCS/MAIN': { 'beamPosition.ixPos.value', 'beamPosition.iyPos.value', } } sel1 = run.select_trains(by_id[10200:10220]) sel2 = run.select_trains(by_index[:10]) joined = sel1.union(sel2) assert joined.train_ids == list(range(10000, 10010)) + list( range(10200, 10220))
def test_run_get_array_multiple_per_train(mock_fxe_raw_run): run = RunDirectory(mock_fxe_raw_run) sel = run.select_trains(by_index[:2]) arr = sel.get_array('FXE_DET_LPD1M-1/DET/6CH0:xtdf', 'image.data', roi=by_index[:, 10:20, 20:40]) assert isinstance(arr, DataArray) assert arr.shape == (256, 1, 10, 20) np.testing.assert_array_equal(arr.coords['trainId'], np.repeat([10000, 10001], 128))
def test_run_get_array_select_trains(mock_fxe_raw_run): run = RunDirectory(mock_fxe_raw_run) sel = run.select_trains(by_id[10100:10150]) arr = sel.get_array('SA1_XTD2_XGM/DOOCS/MAIN:output', 'data.intensityTD', extra_dims=['pulse']) assert isinstance(arr, DataArray) assert arr.dims == ('trainId', 'pulse') assert arr.shape == (50, 1000) assert arr.coords['trainId'][0] == 10100
def test_select_trains(mock_fxe_raw_run): run = RunDirectory(mock_fxe_raw_run) assert len(run.train_ids) == 480 sel = run.select_trains(by_id[10200:10220]) assert sel.train_ids == list(range(10200, 10220)) sel = run.select_trains(by_index[:10]) assert sel.train_ids == list(range(10000, 10010)) with pytest.raises(ValueError): run.select_trains(by_id[9000:9100]) # Before data with pytest.raises(ValueError): run.select_trains(by_id[12000:12500]) # After data # Select a list of train IDs sel = run.select_trains(by_id[[9950, 10000, 10101, 10500]]) assert sel.train_ids == [10000, 10101] with pytest.raises(ValueError): run.select_trains(by_id[[9900, 10600]]) # Select a list of indexes sel = run.select_trains(by_index[[5, 25]]) assert sel.train_ids == [10005, 10025] with pytest.raises(IndexError): run.select_trains(by_index[[480]])