-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RX90 calibration implementation #1044
base: 0.2
Are you sure you want to change the base?
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## 0.2 #1044 +/- ##
==========================================
- Coverage 97.02% 96.84% -0.18%
==========================================
Files 98 98
Lines 7893 7957 +64
==========================================
+ Hits 7658 7706 +48
- Misses 235 251 +16
Flags with carried forward coverage won't be shown. Click here to find out more.
|
I attach here some reports where I tested the code:
|
Thanks @ElStabilini, the results seem to make sense since for both amplitude and duration there is a factor 2. I think that rather than changing the protocol completly we could consider adding a flag to specify whether we want to calibrate the RX or RX90 pulse. We should also check the corresponding update function in the protocols to be consistent. |
@andrea-pasquale I see this only now, I should have done this by adding the pihalf_pulse (soon rx90) option, correct? |
for more information, see https://pre-commit.ci
Merge branch 'pi_half' of github.com:qiboteam/qibocal into pi_half
We changed the default runcard option to False (by default will calibrate pi pulse)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the updates @ElStabilini.
At this point I would rename everywhere pihalf_pulse
to rx90
.
Everything else looks good to me.
src/qibocal/protocols/rabi/ef.py
Outdated
update.drive_12_amplitude( | ||
results.amplitude[target], results.pihalf_pulse, platform, target |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here we should force the user to calibrate just with RX, given that we have no RX1290 pulse.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I should have fixed this too, in this commit 349e312.
If the user sets rx90: True it will raise an error
doc/source/protocols/rabi/rabi.rst
Outdated
relaxation_time: 50000 | ||
RX90: False |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This line needs to be fixed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I should have fixed it and also added the figure
Merge branch 'pi_half' of github.com:qiboteam/qibocal into pi_half
Just to avoid too many things at the same time I suggest to focus first on rabi experiments. In another PR we can propagate these changes to the other protocols. |
The problem here is that right now we have the possibility to calibrate two different gates RX and RX90 so the `_update` function is defined accordingly taking `rx90: bool` as input. Right now I simply added the input `rx90 = False` but maybe in the future can be useful to modify the flipping protocol in order to be able to run it for both RX and RX90 gates.
I copy here a commit message I left in c579cbb The problem here is that right now we have the possibility to calibrate two different gates RX and RX90 so the Right now I simply added the input |
This is fine for now, eventually we could even put as default |
for more information, see https://pre-commit.ci
Someone noticed a certain streak of pretty close commit messages (once in a while, I was not the first one - I won't take this merit :P). Commit messages are extremely useful for debugging, to navigate the commits in case something goes wrong. So, ideally, they should describe in the most succinct and expressive way the commits' changes. Of course, sometimes you need to push to debug the workflow. But this is better done with a local reproduction as much as possible. And, if really needed, possibly even squashing some failed attempts afterward, to leave a better history for later :) |
for more information, see https://pre-commit.ci
Merge branch 'pi_half' of github.com:qiboteam/qibocal into pi_half
Merge branch 'pi_half' of github.com:qiboteam/qibocal into pi_half
if data.rx90: | ||
pulse_name = "Pi-half pulse" | ||
else: | ||
pulse_name = "Pi pulse" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In these cases, it is especially convenient to use the ternary if
operator (exact same of the ... ? ... : ...
construct in C)
if data.rx90: | |
pulse_name = "Pi-half pulse" | |
else: | |
pulse_name = "Pi pulse" | |
pulse_name = "Pi-half pulse" if data.rx90 else "Pi pulse" |
@ElStabilini just to provide you some context about #1044 (comment), the clear advantage of the proposed syntax is neither saving characters nor lines. The most prominent difference between the equivalent expressions is that one is imperative, the other functional. The functional approach makes the computation flow clearer, since it is somehow more rigid (you're not even thinking about operations, and possibly memory, but just values manipulation), and makes the analysis simpler and more effective. In languages which are actually functional, this may empower the compiler to act more aggressively. In Python, it makes the linters more effective[*], leading to fewer errors and more helpful messages :) [*]: since it optimizes the simplicity of the code, it makes it also more human-readable in general |
It definitely makes sense, thank you! |
Checklist:
master
main
main