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

Scope of QuBase.jl #7

Open
acroy opened this issue Jan 5, 2015 · 4 comments
Open

Scope of QuBase.jl #7

acroy opened this issue Jan 5, 2015 · 4 comments

Comments

@acroy
Copy link
Contributor

acroy commented Jan 5, 2015

Although there are already some ideas in #3, we should have more fine-grained discussion on the content of QuBase. Maybe we can use this issue to collect some ideas and refine the roadmap in #3.

The following four points are probably uncontroversial and partly contained in #5.

  1. Abstract types for bases and quantum arrays + interface.
  2. QuArray and FiniteBasis related:
    • array-like functions/operations: +,-,* etc (it would be nice to have mutating functions as well, like A_mul_B!)
    • some matrix functions (expm)
    • basis-related functions/operations
  3. Operator related:
    • convenience constructors: creation/annihilation (raiseop/lowerop), momentum and position,
      displacement and squeezing operators
    • more operators: angular momentum operators, Pauli spin matrices, etc
    • special operations: partial trace and partial transpose
  4. State related:
    • convenience constructors: state vectors (statevec) and density matrices, coherent and squeezed states
    • spectral decomposition of density matrices
    • state properties: purity, fidelity
    • expectation value and variance of a given operator and state

(Some of the functions in 3 & 4 could probably be taken from QuDOS.)
Additionally we could include the following aspects, but might put them into separate packages eventually:

  1. Quantum information related:
    • special states: W, GHZ, Bell states etc
    • entanglement measures: negativity, concurrence etc
    • more functions for quantum correlations and state distinguishability
  2. State representation/visualization:
    • Husimi function, Wigner distribution, Glauber P function
    • Gaussian states, Yurke states, stretch states
    • More visualization/plot functions to explore the geometry of quantum states and operators (Such as states on the Bloch sphere).

Basically anything else should IMO first be developed in a separate packages. In particular with propagators we need to experiment a bit more to find a reasonable (and generic) interface. (Note: If we do it right, we can use QuArrays with ODE solvers from ODE.jl and exmpv from Expokit.jl without much trouble. So the propagation itself is "easy", but finding a good way to switch between methods and pass parameters is tricky).

[EDIT: I added some points from @Qi's comment below.]

@i2000s
Copy link

i2000s commented Jan 6, 2015

Looks good for this roadmap! Just some thoughts along the line. Should we also include the following content?

  1. Superoperators in an abstract way -- meaning, given an density operator, the superoperator will be constructible. This will be useful for Kraus operator business.
  2. On point 1 of part 2, also have functions to define quantum correlations and distinguishibility of quantum states in a more general way? See for example Ref: Journal of Mathematical Physics 55, 075211 (2014); doi: 10.1063/1.4885832. Certainly, this will be much involving. We can have a separate package for quantum information to include all these state distance, relative entropy, Fisher information, fidelity, Chernoff bound and other stuffs.
  3. On point 2 of part 2, aside the Husimi Q function and Wigner function for quasiprobability distributions, also have Glauber P function? Also Gaussian states, Yurke states, stretch states may be definable along this line.
  4. Measurements on quantum operators. Like expectation value and variance of a given operator and state. Concrete example: covariance and multi-particle correlation functions for coincidence measurements.
  5. On angular momentum operators, to have Pauli operators, Clebsh Gordan coefficients, Wigner 3j symbols, Wigner 6j symbols, D-matrix. In general, it can go to irreducible tensor representations based on Wigner-Echart theorem. SU(n) symmetry may be helpful when designing these operators and functions.
  6. Can we design a global label to indicate pictures (Schrodinger, Heisenberg and interaction pictures) and to transfer representations of operators/states between them?
  7. More visualization/plot functions to explore the geometry of quantum states and operators. Such as states on the Bloch sphere business.
  8. Some basic functions for topological order in phase space. This will build a foundation for many-body quantum theory and quasiparticle physics.

@jrevels
Copy link
Contributor

jrevels commented Jan 6, 2015

I think all the previous listed special/common states/operators make sense to be in QuBase. I think having a separate package for more niche quantum information work is a good idea, though we'd have to more clearly define where the line is between what should be in base and what should be put elsewhere.

I think covering everything on @acroy's roadmap is a good start, and we'll probably be able to see where things should go once we complete that list.

I wouldn't be opposed to separating visualization-related functionality into its own package ("QuPlot.jl" has a nice ring to it).

@acroy
Copy link
Contributor Author

acroy commented Jan 6, 2015

@Qi: Those are excellent points. I have added some to the list (eventually we might want to transfer this roadmap + ideas to a separate document). I agree that we should somehow address 1) in QuBase, but I am not sure yet how to do this in a nice way (say for Lindblad superoperators, commutators etc). Maybe I come up with something when I upgrade QuDOS. Your point 6) is also an interesting idea. We could have types for the respective pictures, which contain a (reference) state and a propagator of some sort ... Would you mind filing an issue as a reminder?

Otherwise I would say we start with 1-4 and, as @jrevels said, see how we proceed from there.

@i2000s
Copy link

i2000s commented Feb 18, 2015

This is just a memo that we have recently received requests of contributions from the Julia community where people can help code some content requiring little quantum mechanics background knowledge in Julia. There are also other demands of contributions in various ways. I have also redirect this issue to the big roadmap in the Roadmap repo for people to followup where they can find opportunities to contribute in various levels.

I suggest, once this project is well referenced and documented, and is ready to accept public contributions or to be used as a base for power other projects, we could reference this issue and announce where we accept contributions for extensions, testing, demonstrating examples and so on. For example, if the base for state representation is in a good shape, people without too much background knowledge on in-depth quantum theory and this repo may be able to translate the equations in the quantum correlations and distinguishability of quantum states review paper given in the post earlier above into standard Julia functions.

Some other coordinated actions have been made along the line in another announcement.

Thoughts?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants