Skip to content

Add postselection to readout characterization - #1548

Draft
sorewachigauyo wants to merge 2 commits into
mainfrom
readout-postselection
Draft

Add postselection to readout characterization#1548
sorewachigauyo wants to merge 2 commits into
mainfrom
readout-postselection

Conversation

@sorewachigauyo

Copy link
Copy Markdown
Contributor

We have been getting poor readout on our 5Q device for a while. On checking further, I noticed that there is a bit of ground state shots in the excited state clusteroid.

image

By adding a pre-measurement and filtering based on that, the readout fidelity improves by quite a bit. (Results not shown because plotting of the postselected data hasn't been implemented yet)

image

TODO:

  • Tidy initial dirty implementation
  • Streamline characterization protocol
  • Plotting of pre-and-postselected data
  • Tests?

@codecov

codecov Bot commented Jun 18, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 70.37037% with 8 lines in your changes missing coverage. Please review.
✅ Project coverage is 94.29%. Comparing base (883e5c5) to head (23488e6).

Files with missing lines Patch % Lines
...ocal/protocols/readout/readout_characterization.py 68.00% 8 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main    #1548      +/-   ##
==========================================
- Coverage   94.35%   94.29%   -0.06%     
==========================================
  Files         136      136              
  Lines       10638    10653      +15     
==========================================
+ Hits        10037    10045       +8     
- Misses        601      608       +7     
Flag Coverage Δ
unittests 94.29% <70.37%> (-0.06%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
src/qibocal/protocols/utils.py 89.59% <100.00%> (+0.25%) ⬆️
...ocal/protocols/readout/readout_characterization.py 93.04% <68.00%> (-6.96%) ⬇️

... and 2 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Comment thread src/qibocal/protocols/utils.py
@alecandido

alecandido commented Jun 19, 2026

Copy link
Copy Markdown
Member

But then, if you are dropping states which are excited at the beginning of the experiment, are those states generated by a too-short relaxation? Or is it a residual thermal population? It seems quite a large difference...

In any case, I'm fine with the concept of this PR, but I was considering that we may want to implement the initialization measurement at a more general level, in Qibocal or Qibolab (preferentially the first one), such that it can be toggled for most (or all) experiments, in a similar fashion to the reset (relaxation time).

@sorewachigauyo

Copy link
Copy Markdown
Contributor Author

But then, if you are dropping states which are excited at the beginning of the experiment, are those states generated by a too-short relaxation? Or is it a residual thermal population? It seems quite a large difference...

For this chip, the relaxation time is 200us when the T1 is about 20-30us. Currently our suspicion is on the thermalization.

In any case, I'm fine with the concept of this PR, but I was considering that we may want to implement the initialization measurement at a more general level, in Qibocal or Qibolab (preferentially the first one), such that it can be toggled for most (or all) experiments, in a similar fashion to the reset (relaxation time).

Sure, I can work on that in Qibocal.

@alecandido

Copy link
Copy Markdown
Member

For this chip, the relaxation time is 200us when the T1 is about 20-30us. Currently our suspicion is on the thermalization.

A bit unexpected, but I understand (I do not really see any other option).

Sure, I can work on that in Qibocal.

No worries: right now there is no way to do that without touching each and every protocol. I will write an issue for that, and it may align with a proposed simplification for the protocols' acquisition definition.

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.

2 participants