Pulser icon indicating copy to clipboard operation
Pulser copied to clipboard

[Draft] Add error state simulation

Open a-corni opened this issue 10 months ago • 6 comments

After meeting with @HGSilveri and discussion with @LucasGitQ, it is suggested to drop the RydbergError as a Channel and rather implement it in SimConfig/NoiseModel:

  • [x] Associate a basis of two eigenvectors to each Channel via a property, and use it to clarify the eigenbasis associated to a SequenceSamples.
  • [x] Refactor the definition of basis and op_matrix from SequenceSamples.eigenbasis
  • [x] Add a RydbergError in SimConfig.
  • [x] Enable the definition of collapse operators in the case of a qutrit states.
  • [x] Test that all previous CI tests still passes (the changes are non destructive)
  • [x] Develop CI tests for the leakage noise
  • [ ] Add the new basis in the convention notebook
  • [ ] Modify the notebook on effective noise to show how to define noise on a qutrit/qudit basis
  • [x] If RydbergError noise is defined in SimConfig, modify the implementation of SPAM such that it goes from replacing some operators by identity in the hamiltonian to prepare the initial density matrix in the state (1-epsilon)|g><g| + epsilon |x><x|
  • [x] Enable the use of build_operator outside Hamiltonian.

a-corni avatar Apr 03 '24 16:04 a-corni

To be discussed:

  • Should the keyword to enable noise in error state in SimConfig/NoiseModel be err_state or err_state_ising ?
  • Is it really useful to have the properties eigenbasis/eigenstates in Channels/Device/Sequence ? I think it is useful in SequenceSamples however.
  • I am enabling the error state simulations only if err_state noise is defined and effective noise is defined with an effective noise operator.

a-corni avatar Apr 04 '24 16:04 a-corni

  • Should the keyword to enable noise in error state in SimConfig/NoiseModel be err_state or err_state_ising ?

To me, leakage would be the most adequate term.

HGSilveri avatar Apr 05 '24 11:04 HGSilveri

For me it depends if it enables all noise or just the Rydberg decay.


De : Henrique Silvério @.> Envoyé : vendredi 5 avril 2024 13:59 À : pasqal-io/Pulser @.> Cc : Lucas Leclerc @.>; Mention @.> Objet : Re: [pasqal-io/Pulser] [Draft] Add error state simulation (PR #671)

  • Should the keyword to enable noise in error state in SimConfig/NoiseModel be err_state or err_state_ising ?

To me, leakage would be the most adequate term.

— Reply to this email directly, view it on GitHubhttps://github.com/pasqal-io/Pulser/pull/671#issuecomment-2039618776, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ARDWYZFRNDGKFYXJAV4ATPLY32G2BAVCNFSM6AAAAABFVT6P3GVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMZZGYYTQNZXGY. You are receiving this because you were mentioned.Message ID: @.***>

LucasGitQ avatar Apr 08 '24 07:04 LucasGitQ

For me it depends if it enables all noise or just the Rydberg decay. ________________________________ De : Henrique Silvério @.> Envoyé : vendredi 5 avril 2024 13:59 À : pasqal-io/Pulser @.> Cc : Lucas Leclerc @.>; Mention @.> Objet : Re: [pasqal-io/Pulser] [Draft] Add error state simulation (PR #671) * Should the keyword to enable noise in error state in SimConfig/NoiseModel be err_state or err_state_ising ? To me, leakage would be the most adequate term. — Reply to this email directly, view it on GitHub<#671 (comment)>, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ARDWYZFRNDGKFYXJAV4ATPLY32G2BAVCNFSM6AAAAABFVT6P3GVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMZZGYYTQNZXGY. You are receiving this because you were mentioned.Message ID: @.***>

This is a good question, in principle this extra state can be defined and used for noise simulation in whatever basis we are working in (XY/Ising).

a-corni avatar Apr 08 '24 10:04 a-corni

I am not 100% confident that I have covered everything, but almost everything is done (like 75%-ish). To be investigated:

  • The method get_state in Result with the option to reduce the state in a basis.
  • Enable leakage for XY mode (I think it's just have to be allowed).
  • Using leakage for simulation if only SPAM is asked (I think this should be done in a separate PR, this one is already too big).

a-corni avatar Apr 25 '24 10:04 a-corni

I have added all the changes I wanted to add to build_operator. I created a file operator.py to store the functions that enables the user to define easily projectors/combinations of projectors on 1 qutrit. I am not a big fan of the function build_1qubit_operator (nor its name), You tell me if it's very useful.

a-corni avatar Jun 07 '24 13:06 a-corni

Closing this Pull Request since it was tackled by multiple sub-PRs, the final one being #720

a-corni avatar Aug 13 '24 09:08 a-corni