Skip to content
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

[Obs] 4.4 - Readout error mitigation #4323

Merged
merged 5 commits into from Jul 26, 2021

Conversation

mpharrigan
Copy link
Collaborator

Add a facility to take readout calibrations by measuring the observables under the empty circuit with readout symmetrization turned on. This can be plumbed through so other observables measured with measure_observables can be corrected. Note that this all only works for symmetric readout error enforced through readout_symmetrization.

Part of #3647

@review-notebook-app
Copy link

Check out this pull request on  ReviewNB

See visual diffs & provide feedback on Jupyter Notebooks.


Powered by ReviewNB

@google-cla google-cla bot added the cla: yes Makes googlebot stop complaining. label Jul 14, 2021
@mpharrigan
Copy link
Collaborator Author

Do we have an asymmetric readout channel available in non-contrib cirq? I'd like to keep that in my test

@95-martin-orion
Copy link
Collaborator

Do we have an asymmetric readout channel available in non-contrib cirq? I'd like to keep that in my test

Meaning a noise model like DepolarizingWithDampedReadoutNoiseModel? AFAIK all of those are either in contrib or in cirq_google (e.g. the per-qubit version). I wouldn't object to moving them to cirq-core, though.

I'm not sure what "asymmetric readout" means here, but you may be able to get something similar either with from_noise_model_like or by creating your own noise model:

# Simple model that adds amplitude damping after each moment
model_1 = cirq.NoiseModel.from_noise_model_like(cirq.amplitude_damp(0.1))

# More complex model that adds bitflips before measurement
class ReadoutErrorModel(cirq.NoiseModel):
    def noisy_operation(self, op):
        if isinstance(op.gate, MeasurementGate):
            return [cirq.bit_flip(0.1), op]
        return op

@mpharrigan
Copy link
Collaborator Author

asymmetric: p00 != p11

@95-martin-orion
Copy link
Collaborator

95-martin-orion commented Jul 19, 2021

asymmetric: p00 != p11

In that case, the model_1 example above would fit your requirements, although it may require some finagling to fit your test. (Specifically, the noise is added after every moment, instead of before readout)

@mpharrigan
Copy link
Collaborator Author

vendored a noise model in the test, ptal

@mpharrigan mpharrigan added the automerge Tells CirqBot to sync and merge this PR. (If it's running.) label Jul 26, 2021
@CirqBot CirqBot added the front_of_queue_automerge CirqBot uses this label to indicate (and remember) what's being merged next. label Jul 26, 2021
@CirqBot CirqBot merged commit ecb0202 into quantumlib:master Jul 26, 2021
@CirqBot CirqBot removed automerge Tells CirqBot to sync and merge this PR. (If it's running.) front_of_queue_automerge CirqBot uses this label to indicate (and remember) what's being merged next. labels Jul 26, 2021
rht pushed a commit to rht/Cirq that referenced this pull request May 1, 2023
Add a facility to take readout calibrations by measuring the <Z> observables under the empty circuit with readout symmetrization turned on. This can be plumbed through so other observables measured with `measure_observables` can be corrected. Note that this all only works for symmetric readout error enforced through readout_symmetrization.

Part of quantumlib#3647
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/expectation-value cla: yes Makes googlebot stop complaining.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants