QuantumOptics.jl has lots of very cool features we would love to interact with, but sadly, not every user will add quantum optics to their environment. We want to build the core of Piccolo.jl to be independent of the features in a user's desired quantum numerics package, while also making the interaction with such a package easy.
One nice feature of extensions is we can handle name conflicts. In module QuantumObjectUtils we export ⊗, create, and annihilate. We can use our extensions package to handle the fact that QuantumOptics.jl also has similar functions. The purpose of the module QuantumUtils to `module QuantumObjectUtils refactor was to create a file containing only the potentially conflicting quantum information utilities.
[ ] use module QuantumOpticsExt to handle potential name conflicts for ⊗, create, and annihilate
Part II
A few basic features will showcase the help that QuantumOptics.jl provides. Consider implementing:
[ ] quantum system construction from QuantumOptics operator
[ ] embedded operator construction from QuantumOptics operator and basis
[ ] rollouts using Piccolo trajectories and quantum systems, with QuantumOptics time evolution
[ ] noisy rollouts using the previous rollouts, with QuantumOptics master equations (e.g. allow a user to specify Lindblad operators from QuantumOptics)
Feature Description
Background
QuantumOptics.jl has lots of very cool features we would love to interact with, but sadly, not every user will add quantum optics to their environment. We want to build the core of
Piccolo.jl
to be independent of the features in a user's desired quantum numerics package, while also making the interaction with such a package easy.Part I
An extension package allows us to create features that get added for any users fortunate enough to also have QuantumOptics.jl in their environment, https://pkgdocs.julialang.org/v1/creating-packages/#Conditional-loading-of-code-in-packages-(Extensions).
module QuantumOpticsExt
One nice feature of extensions is we can handle name conflicts. In
module QuantumObjectUtils
we export⊗
,create
, andannihilate
. We can use our extensions package to handle the fact that QuantumOptics.jl also has similar functions. The purpose of themodule QuantumUtils
to`module QuantumObjectUtils
refactor was to create a file containing only the potentially conflicting quantum information utilities.module QuantumOpticsExt
to handle potential name conflicts for⊗
,create
, andannihilate
Part II
A few basic features will showcase the help that QuantumOptics.jl provides. Consider implementing:
Importance
1 (lowest)
What does this feature affect?
Other information
No response