-
Notifications
You must be signed in to change notification settings - Fork 1
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
Generate valid Gaussian states, unitaries, and channels #10
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
|
@akirakyle the implementation of
Any idea why this is? I checked my work with Serafini's discussion on pgs. 98 and 99 and it looks fine to me. |
Hmmm, staring at the code of I think one observation which would simplify the code is that it is actually not necessary to have an environment covariance matrix other than identity if the goal is to generate random channels since a random unitary on 2n modes corresponds to a random channel on n modes after tracing out the other n modes assuming they are in vacuum. Physically the intuition behind this is that noise on the n mode subsystem will arise due to two-mode squeezing with the environment as tracing out one mode of such a state reveals a thermal state. Perhaps try simplifying the code with this observation first then see if the checks are failing. |
Found the problem. The issue was that I derived transform and noise matrices for
All the tests pass now. I should make a point about symplectic basis in the documentation soon.
This note was still very helpful and was used to simplify the internals behind |
Ah yes the explicit representation of the symplectic form is perhaps the most important thing as it dictates the representation of all other objects in the Gaussian formalism! While the representation you're calling "canonical" is the one used by Weedbrook and Serafini and seemingly most common among QI theorists these days, one often encounters the "sigma z" representation given by Serafini Eq. 3.7 in more engineering focused contexts as that representation is closely related to the classical scattering matrix response a linear time-translation-invariant system. For example see this paper https://arxiv.org/abs/2410.09976. I'm actually quite interested in also having ways model the kind of frequency selective gaussian operations that that paper discusses and such systems can be also be described by the symplectic group, just either with different representation or reinterpretation of the physical nature of the operators. I think while developing the functionality of this library it's good to fix the symplectic representation to avoid confusion such as the one you encountered, but long term it would be really helpful to support all the different representations with functions to convert between them! |
Yeah, I was thinking about that after I merged this PR. I definitely agree that it would be helpful to support different symplectic representations. One way to do it would be to define new symplectic representation types that carry information about the number of modes in the bosonic system, e.g.,
Then have Gaussian objects such as
This kind of opens a whole can of worms, but I'll probably implement some manifestation of this sooner rather than later since this package is still in its alpha state and breaking releases aren't as horrible. It'd be a nice Thanksgiving project :) |
Yeah something like that seems like a good, julian approach to me! |
As discussed in #9, this PR generates covariance matrices in
randstate
and transformations inrandunitary
andrandchannel
with symplectic diagonalization discussed, e.g., in https://journals.aps.org/rmp/pdf/10.1103/RevModPhys.84.621.