Skip to content

Tektronix DPO7200xx and AWG70000A — Convenience Methods for Waveform Workflows#7865

Open
bennthomsen wants to merge 11 commits intomicrosoft:mainfrom
bennthomsen:feature/tektronix-combined
Open

Tektronix DPO7200xx and AWG70000A — Convenience Methods for Waveform Workflows#7865
bennthomsen wants to merge 11 commits intomicrosoft:mainfrom
bennthomsen:feature/tektronix-combined

Conversation

@bennthomsen
Copy link
Contributor

@bennthomsen bennthomsen commented Feb 13, 2026

Adds convenience methods to the Tektronix DPO7200xx oscilloscope and AWG70000A waveform generator drivers to
streamline triggered acquisition and sequence upload workflows.

Files changed: 4 files, +133 / −2 lines

##DPO7200xx Oscilloscope
(DPO7200xx.py, +58 lines)

Three new convenience methods on TektronixDPO7000xx:

  • single() — puts the scope into single-acquisition mode, starts a run, and polls until both the acquisition
    completes and the trigger is ready (with timeout)
  • download_waveforms() — waits for acquisition to finish, then downloads waveform traces from all enabled channels
  • get_timebase() — returns a tuple of (time unit, time axis array) from the first channel

##AWG70000A Waveform Generator
(AWG70000A.py, +26 lines)

One new convenience method on TektronixAWG70000Base:

  • upload_seqx() — builds a .seqx file from input, uploads it to the AWG, loads it into playback memory, assigns
    tracks to channels 1 & 2, enables outputs, and starts playback

Other Changes

  • Station.ipynb — minor fix: updated import path from qcodes.utils.installation to qcodes.extensions

@bennthomsen bennthomsen requested a review from a team as a code owner February 13, 2026 11:24
@codecov
Copy link

codecov bot commented Feb 13, 2026

Codecov Report

❌ Patch coverage is 8.88889% with 41 lines in your changes missing coverage. Please review.
✅ Project coverage is 58.88%. Comparing base (1b701b2) to head (f567eb7).

Files with missing lines Patch % Lines
...c/qcodes/instrument_drivers/tektronix/DPO7200xx.py 8.57% 32 Missing ⚠️
...c/qcodes/instrument_drivers/tektronix/AWG70000A.py 10.00% 9 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #7865      +/-   ##
==========================================
- Coverage   59.94%   58.88%   -1.06%     
==========================================
  Files         352      352              
  Lines       31932    31977      +45     
==========================================
- Hits        19142    18831     -311     
- Misses      12790    13146     +356     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

self.visa_log.debug(f"Response: {response}")
return response

def single(self):
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
def single(self):
def single(self) -> None:

) # This will trigger the actual download of the waveform
return wfms

def get_timebase(self) -> tuple:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
def get_timebase(self) -> tuple:
def get_timebase(self) -> tuple[str,np.ndarray]:

break
time.sleep(0.1)

def download_waveforms(self) -> tuple:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
def download_waveforms(self) -> tuple:
def download_waveforms(self) -> tuple[np.ndarray, ..,]:

If I understand correctly the tuple contains numpy arrays

"""
self.write("AWGControl:STOP")

def upload_seqx(self, seqx_input, sequence_name="seq") -> None:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
def upload_seqx(self, seqx_input, sequence_name="seq") -> None:
def upload_seqx(self, seqx_input: notsurewhatthetypeisherepleascheck, sequence_name: str ="seq") -> None:

@jenshnielsen
Copy link
Collaborator

@benn-thomsen Thanks, In qcodes we require that the code should contain types for all input and output. I have added comments with most of them but please check that this is correct.

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.

3 participants