Add heterodyne measurement interface#96
Conversation
Implement heterodyne measurement for Gaussian states: - Heterodyne struct for storing measurement results and output state - Support for both QuadPairBasis and QuadBlockBasis - Simultaneous measurement of both quadratures (unit-gain) - rand() support for sampling heterodyne measurement outcomes - Comprehensive tests covering structural, analytical, and statistical validation - Documentation in CHANGELOG
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #96 +/- ##
=======================================
Coverage ? 97.18%
=======================================
Files ? 21
Lines ? 2879
Branches ? 0
=======================================
Hits ? 2798
Misses ? 81
Partials ? 0 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
@apkille can you take a look at this whenever you are free. if this is good, we can start working on merging this. if not, can you recommend me some issues/additions to work on. *Also can you recommend me other repos of the organisation to work on based on my work. I am interested in a future in Quantum Computing and would like to get as much exposure as i can get. Thanks for everything (especially your reviews and comments). |
|
Thanks for this PR @arnavk23. I will try to review later this week. Re recommendations to other repos: if you haven't already, I would check out the issues in QuantumClifford and QuantumSavory, which are pretty far in the development stage. It would be interesting to continue analog dynamics support in QuantumSavory. This WIP PR (QuantumSavory/QuantumSavory.jl#309) is an example of connecting Gabs to the existing infrastructure, but of course one could come up with more examples, both in the phase space representation in Gabs, and the state vector representation with, e.g., QuantumOptics or QuantumToolbox. There's also general interest in additionally having a matrix product state backend with ITensorMPS, which I might be able to help with. QuantumSymbolics also has some low-hanging fruit, although they are rather software-focused and might not be worth your time if you are primarily interested in quantum computing. Within Gabs itself, there's quite a lot of fun little projects we could do with symplectic analysis and continue to develop SymplecticMatrices, although again, that would involve a lot of applied mathematics, which you may or may not be interested in. This is a rather disorganized list of things you could do. We can discuss in more detail over Slack if you're particularly interested in one of these projects or have something else in mind. |
Benchmark Results (Julia v1)Time benchmarks
Memory benchmarks
|
|
@apkille Thank you for your comment. I have started prs on QuantumClifford.jl but failed to find something in QuantumSavory to really stick my teeth into but I will surely go through your suggestions and your draft pr on the repo. For gabs, certainly I am interested in symplectic analysis but the project of matrix product state backend with ITensorMPS drew my attention and I am planning to apply to GSoC for the same. We can discuss on the same on Slack (I am currently not added to the channel, so will need an invite for the same). Open to any comments or suggestions on the same. Sidebar : I saw on my other pr that you apologized for the slow response. No need for the same, I do understand that you are quite busy in your research and the comment was put forward as a general ping for whenever you are free. Thank you! |
Here's a link to join: https://julialang.org/slack/
I should note, before you put any work into this, that @riteshbhirud and I have a working bosonic MPS backend for Gabs that will be made public in the coming months. But there is plenty of work to do for having a general MPS backend in QuantumSymbolics and QuantumSavory and doing large-scale dynamics simulations |
|
From the bot: Following the edge-case discussion in #106: the single-mode / all-modes case should be supported here as well. I added the corresponding From the actual Stefan: Thanks, Arnav for looking into this. In a related PR I was making sure a that an edge case is properly handled by some of the other measurement functions -- in particular the fact that single-mode states were previously excluded from the API. The only reason for the post here is to warn about that edge case and to show how simple handling it was in the rest of the code base, in case it comes up here. |
Implement heterodyne measurement for Gaussian states:
Before considering your pull request ready for review and merging make sure that all of the following are completed (please keep the clecklist as part of your PR):