Pulser
Pulser copied to clipboard
[Draft] Add error state simulation
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.
To be discussed:
- Should the keyword to enable noise in error state in SimConfig/NoiseModel be
err_state
orerr_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.
- Should the keyword to enable noise in error state in SimConfig/NoiseModel be
err_state
orerr_state_ising
?
To me, leakage
would be the most adequate term.
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: @.***>
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).
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).
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.
Closing this Pull Request since it was tackled by multiple sub-PRs, the final one being #720