Skip to content

Drivers, QICK streaming, some API changes. #21

Open
gauravag99 wants to merge 3 commits into
toolsforexperiments:mainfrom
gauravag99:drivers
Open

Drivers, QICK streaming, some API changes. #21
gauravag99 wants to merge 3 commits into
toolsforexperiments:mainfrom
gauravag99:drivers

Conversation

@gauravag99

@gauravag99 gauravag99 commented Jun 18, 2026

Copy link
Copy Markdown

New functionality. Old API and logic is not affected.

  • DRIVERS : MiniCircuits RF switches, RFBoard from fermilab for controlling biases, attenuators, filters etc, Keysight PVNA driver that is faster and does not crash if multiple traces are open. Older driver left untouched.

  • QICK : live streamer for QICK. Yields per record data. Relies on qick's stream_acquire() which is waiting to be merged. Should replace the older qick_sweep_v2.py with an extra 'rep' dependency. see example usage below:

@QickBoardStreamingSweep(
    RepVariable(name="rep", loop_name="reps", unit='array'),
    PulseVariable('freq', pulse_parameter="probe_pulse", sweep_parameter="freq", loop_name="ro_freq_loop"),
    ComplexQICKData('signal', depends_on=['freq', 'rep'])
)
class FreqSweepProgram(AveragerProgramV2):

    '''
    Performs single tone spectroscopy on the resonator.
    '''
    def _initialize(self, cfg):
        ro_ch = cfg['ro_ch']
        gen_ch = cfg['ro_gen_ch']

        self.declare_gen(ch=gen_ch, nqz=cfg['ro_nqz'])
        self.declare_readout(ch=ro_ch, length=cfg['ro_len'])

        self.add_loop("ro_freq_loop", self.cfg["steps"])
        self.add_readoutconfig(ch=ro_ch, name="myro", freq=cfg['ro_freqs'], gen_ch=gen_ch)  # Sweep variable

        self.add_pulse(ch=gen_ch, name="probe_pulse", ro_ch=ro_ch,
                       style="const",
                       freq=cfg['ro_freqs'],  # Sweep variable
                       length=cfg['ro_gen_len'],
                       phase=cfg['ro_phase'],
                       gain=cfg['ro_gain'],
                      )

    def _body(self, cfg):
        self.send_readoutconfig(ch=cfg['ro_ch'], name="myro", t=0)

        self.pulse(ch=cfg['ro_gen_ch'], name="probe_pulse", t=0)
        self.trigger(ros=[cfg['ro_ch']], pins=[0], t=cfg['trig_time'])
  • API changes : Added new arguments to allow SWMR saving through non-datadict pipeline based on ddh5_xr in labcore. Some other low level API exposed in other places for ease of use.

@gauravag99 gauravag99 changed the title Drivers Drivers, QICK streaming, some API changes. Jun 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant