Jupyter Notebook - Retrieve Data

SDS Data Retrieval

Get data for a list of PVs which have been stored in the SDS.

Import modules

Need a data reading function from ops_data_client.

from ops_data_client import get_data
import polars as pl

Get PV data

Using the full PV names, get data from the SDS, which is returned as a Polars Dataframe.

df = get_data(
    pvs=["RFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData"],
    start="2025-06-18 04:57:34.543456789",
    end="2025-06-18 04:57:35.523456789"
)

Display data

Simply print the dataframe in its default table format.

df
shape: (14, 31)
RFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_data_tsRFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_stored_atRFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_collectorRFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_ctypeRFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_pvRFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_data_arrayRFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_event_idRFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_event_countRFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_event_codeRFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_event_tsRFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_sds_cycle_idRFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_sds_cycle_tsRFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_beam_modeRFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_beam_stateRFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_beam_presentRFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_beam_lenRFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_beam_energyRFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_beam_currentRFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_beam_destRFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_buffer_sizeRFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_buffer_indexRFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_array_samplingRFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_array_decimationRFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_array_sizeRFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_trig_nameRFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_trig_evrRFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_trig_delayRFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_trig_codeRFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_trig_tscycle_idcycle_ts
datetime[ns, UTC]datetime[μs, UTC]strstrstrlist[f32]u64u64u64datetime[ns, UTC]u64datetime[ns, UTC]strstrboolu32u32u32stru32u32f32u32u32strstrf32u64datetime[ns, UTC]i64datetime[ns, UTC]
2025-06-18 04:57:34.540612608 UTC2025-06-18 05:02:40 UTC"RFQ-010-FIM-DOD""DD""RFQ-010:RFS-Cav-110:Fld-Wave_S…[4.928, 5.028, … 5.008]1566711444327329444422025-06-18 04:57:35.412678656 UTC156671144312025-06-18 04:57:34.540612608 UTC"SlowCommissioning""BEAM_PRESENT_YES_FAKE"false0059300"LebtFc"1401e618000"RFQ-010:RFS-EVR-101""DlyGen-6"-3000.0142025-06-18 04:57:34.612041216 UTC156671144312025-06-18 04:57:34.540612589 UTC
2025-06-18 04:57:34.612041216 UTC2025-06-18 05:02:40 UTC"RFQ-010-FIM-DOD""DD""RFQ-010:RFS-Cav-110:Fld-Wave_S…[4.888, 4.948, … 4.908]1566711444327329444422025-06-18 04:57:35.412678656 UTC156671144322025-06-18 04:57:34.612041216 UTC"SlowCommissioning""BEAM_PRESENT_YES_FAKE"false0059300"LebtFc"1411e618000"RFQ-010:RFS-EVR-101""DlyGen-6"-3000.0142025-06-18 04:57:34.683469824 UTC156671144322025-06-18 04:57:34.612041157 UTC
2025-06-18 04:57:34.683469824 UTC2025-06-18 05:02:40 UTC"RFQ-010-FIM-DOD""DD""RFQ-010:RFS-Cav-110:Fld-Wave_S…[4.968, 4.948, … 4.818]1566711444327329446422025-06-18 04:57:35.412678656 UTC156671144332025-06-18 04:57:34.683469824 UTC"SlowCommissioning""BEAM_PRESENT_YES_FAKE"false0059300"LebtFc"1421e618000"RFQ-010:RFS-EVR-101""DlyGen-6"-3000.0142025-06-18 04:57:34.754898176 UTC156671144332025-06-18 04:57:34.683469725 UTC
2025-06-18 04:57:34.754898176 UTC2025-06-18 05:02:40 UTC"RFQ-010-FIM-DOD""DD""RFQ-010:RFS-Cav-110:Fld-Wave_S…[5.028, 5.008, … 4.978]1566711444327329448422025-06-18 04:57:35.412678656 UTC156671144342025-06-18 04:57:34.754898176 UTC"SlowCommissioning""BEAM_PRESENT_YES_FAKE"false0059300"LebtFc"1431e618000"RFQ-010:RFS-EVR-101""DlyGen-6"-3000.0142025-06-18 04:57:34.826326784 UTC156671144342025-06-18 04:57:34.754898293 UTC
2025-06-18 04:57:34.826326784 UTC2025-06-18 05:02:40 UTC"RFQ-010-FIM-DOD""DD""RFQ-010:RFS-Cav-110:Fld-Wave_S…[4.968, 4.868, … 4.838]1566711444327329448422025-06-18 04:57:35.412678656 UTC156671144352025-06-18 04:57:34.826326784 UTC"SlowCommissioning""BEAM_PRESENT_YES_FAKE"false0059300"LebtFc"1441e618000"RFQ-010:RFS-EVR-101""DlyGen-6"-3000.0142025-06-18 04:57:34.897755392 UTC156671144352025-06-18 04:57:34.826326861 UTC
2025-06-18 04:57:35.183469824 UTC2025-06-18 05:02:40 UTC"RFQ-010-FIM-DOD""DD""RFQ-010:RFS-Cav-110:Fld-Wave_S…[4.898, 4.888, … 4.918]1566711444327329452422025-06-18 04:57:35.412678656 UTC156671144402025-06-18 04:57:35.183469824 UTC"SlowCommissioning""BEAM_PRESENT_YES_FAKE"false0059300"LebtFc"1491e618000"RFQ-010:RFS-EVR-101""DlyGen-6"-3000.0142025-06-18 04:57:35.254898176 UTC156671144402025-06-18 04:57:35.183469702 UTC
2025-06-18 04:57:35.254898176 UTC2025-06-18 05:02:40 UTC"RFQ-010-FIM-DOD""DD""RFQ-010:RFS-Cav-110:Fld-Wave_S…[4.788, 4.918, … 4.908]1566711444327329454422025-06-18 04:57:35.412678656 UTC156671144412025-06-18 04:57:35.254898176 UTC"SlowCommissioning""BEAM_PRESENT_YES_FAKE"false0059300"LebtFc"14101e618000"RFQ-010:RFS-EVR-101""DlyGen-6"-3000.0142025-06-18 04:57:35.326326784 UTC156671144412025-06-18 04:57:35.254898270 UTC
2025-06-18 04:57:35.326326784 UTC2025-06-18 05:02:40 UTC"RFQ-010-FIM-DOD""DD""RFQ-010:RFS-Cav-110:Fld-Wave_S…[5.008, 4.978, … 4.978]1566711444327329456422025-06-18 04:57:35.412678656 UTC156671144422025-06-18 04:57:35.326326784 UTC"SlowCommissioning""BEAM_PRESENT_YES_FAKE"false0059300"LebtFc"14111e618000"RFQ-010:RFS-EVR-101""DlyGen-6"-3000.0142025-06-18 04:57:35.397755392 UTC156671144422025-06-18 04:57:35.326326839 UTC
2025-06-18 04:57:35.397755392 UTC2025-06-18 05:02:40 UTC"RFQ-010-FIM-DOD""DD""RFQ-010:RFS-Cav-110:Fld-Wave_S…[5.028, 4.978, … 5.008]1566711444327329456422025-06-18 04:57:35.412678656 UTC156671144432025-06-18 04:57:35.397755392 UTC"SlowCommissioning""BEAM_PRESENT_YES_FAKE"false0059300"LebtFc"14121e618000"RFQ-010:RFS-EVR-101""DlyGen-6"-3000.0142025-06-18 04:57:35.469184 UTC156671144432025-06-18 04:57:35.397755407 UTC
2025-06-18 04:57:35.469184 UTC2025-06-18 05:02:40 UTC"RFQ-010-FIM-DOD""DD""RFQ-010:RFS-Cav-110:Fld-Wave_S…[4.898, 4.958, … 4.958]1566711444327329456422025-06-18 04:57:35.412678656 UTC156671144442025-06-18 04:57:35.469184 UTC"SlowCommissioning""BEAM_PRESENT_YES_FAKE"false0059300"LebtFc"14131e618000"RFQ-010:RFS-EVR-101""DlyGen-6"-3000.0142025-06-18 04:57:35.540612608 UTC156671144442025-06-18 04:57:35.469183975 UTC

Simple calculations

Find the maximum and minimum values in the data array for each cycle, then display just some of the dataframe columns.

df_partial = df.with_columns(
    (pl.col("RFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_data_array").list.max()).alias("max_value"),
    (pl.col("RFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_data_array").list.min()).alias("min_value"),
).select(
      "cycle_id", "cycle_ts", "RFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_event_id","RFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_data_array", "max_value", "min_value"
)

df_partial
shape: (14, 6)
cycle_idcycle_tsRFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_event_idRFQ-010:RFS-Cav-110:Fld-Wave_SDS-DODData_data_arraymax_valuemin_value
i64datetime[ns, UTC]u64list[f32]f32f32
156671144312025-06-18 04:57:34.540612589 UTC15667114443[4.928, 5.028, … 5.008]122.6681524.828
156671144322025-06-18 04:57:34.612041157 UTC15667114443[4.888, 4.948, … 4.908]122.6865464.658
156671144332025-06-18 04:57:34.683469725 UTC15667114443[4.968, 4.948, … 4.818]122.649754.738
156671144342025-06-18 04:57:34.754898293 UTC15667114443[5.028, 5.008, … 4.978]122.7693564.828
156671144352025-06-18 04:57:34.826326861 UTC15667114443[4.968, 4.868, … 4.838]122.5761414.708
156671144402025-06-18 04:57:35.183469702 UTC15667114443[4.898, 4.888, … 4.918]122.6957474.728
156671144412025-06-18 04:57:35.254898270 UTC15667114443[4.788, 4.918, … 4.908]122.5945434.728
156671144422025-06-18 04:57:35.326326839 UTC15667114443[5.008, 4.978, … 4.978]122.7095494.788
156671144432025-06-18 04:57:35.397755407 UTC15667114443[5.028, 4.978, … 5.008]122.5991444.828
156671144442025-06-18 04:57:35.469183975 UTC15667114443[4.898, 4.958, … 4.958]5.1584.788