- Bug Fixes
- Fixed a bug that overwrote <ParameterSweep>["evals"] data with transition data when using plot_transitions().
- Fixed proper integration of ParameterSweep into CentralDispatch, enabling proper warnings to the user when internal computed sweep data is out of sync with associated quantum system parameters.
- Fixed a bug that could occur when a ParameterSweep was applied to a HilbertSpace object involving only a single subsystem.
- Under the Hood
- Enable use of weakref in CentralDispatch for proper garbage collection.
- Extended pytests to basic CentralDispatch functionality
- Additions
- New graphical user interface
scqubits.GUI()
illustrating single-qubit functionality of scqubits. - Introducing
NamedSlotsNdarray
as a convenient subclass of ndarray with name-based and value-based slicing, and immediate support for basic plots - Added functionality for extracting dispersive energy parameters (such as Kerr coupling strengths)
- Improved support for transition plots (subsystem transitions, sidebands etc.)
- Added
Cos2PhiQubit
class. - Added
KerrOscillator
class - Added
GenericQubit
(two-level system) so that toy models such as the Jaynes-Cummings model can be readily realized withHilbertSpace
. - Added
n
andphi
operators to the Oscillator class - Added helper methods
convert_to_E_osc
andconvert_to_l_osc
forOscillator
initialization - New and enhanced interface for defining interaction terms in HilbertSpace objects
via
.add_interaction()
- Added option to input interaction as a
Qobj
, or specify interaction terms as string expressions; also represented inHilbertSpace.create()
GUI
- New graphical user interface
- Improvements
- Convergence for
ZeroPi
is now faster, thanks to a correction to the expression for the grid spacing in discretization.py. - Refactored
ParameterSweep
class, now allowing for multi-dimensional parameter sweeps - Added a warning describing
total=True
being the default in t1 calculations
- Convergence for
- Bug fixes
- Fix to type conversion error affecting the
number
operator in operators.py - Rectified orientation of
matrix2d
plots to match axes labels mode
option for values displayed in matrix element plots was ignored
- Fix to type conversion error affecting the
- Internals
- New support for higher-order stencils in discretized derivatives.
- Improved formatting of
__str__
methods (called when "printing" an scqubits class instance). - Under the hood: use of Python 3.6 compatible type annotations; unified formatting enabled by the
black
package - Improvements to fileIO speeding up operations (increased memore cache) and requiring less disk space (avoid literal redundancies in stored data).
- Bug fixes
- bug fix:
<qubit>.create()
failed in jupyter notebooks due to missing image files - bug fix: corrected the form of the quasiparticle noise operator
- bug fix:
- Major changes/additions
- Coherence calculations for the majority of qubits. These allow for estimating coherence times and rates due to various noise channels.
- A new units system: users can specify energy units of their system Hamiltonian. These units are automatically considered when plotting and in coherence time calculations.
- Separated documentation and example jupyter notebooks into individual repositories, see scqubits-doc and scqubits-examples.
- Minor changes/additions
- Introduced tests for real-valuedness of zero-pi Hamiltonians (for speedup).
- New options in plotting (e.g. grid).
- Bug fixes
- Fixed bug preventing the proper disabling of the progress bar.
- Various bug fixes and improvements of file IO operations.
- Fixed issue with color legend bar in .plot_matrixelements.
- Bug fix: the
FullZeroPi
Hamiltonian was incorrect in the case of nonzerodC
. - improvement: thanks to adjusted ARPACK options, diagonalization should be noticeably faster for
ZeroPi
andFullZeroPi
. - make
pathos
anddill
the default for multiprocessing.
- Bug fix: implementation of the
add_hc=True
flag inInteractionTerm
involved a bug that could lead to incorrect results - update to plotting routines now supports various extra plotting options such as
linestyle=...
etc. - added
TunableTransmon
class for flux-tunable transmon, including junction asymmetry - limit support to Python >= 3.6
- corrections to documentation of
FullZeroPi
- added missing jupyter notebook illustrating use of
HilbertSpace
andParameterSweep
- overhaul of file IO system now allows saving and loading various scqubit data via a custom h5 file format
- ipywidget support for creating qubits inside jupyter (try, for example,
tmon = scqubits.Transmon.create()
)
- update to the setup script to properly include testing data with the PyPi release.
- Major changes/additions
- scqubits now offers multiprocessing support for a number of methods.
- Introduced checks ensuring that umbrella objects like
HilbertSpace
andParameterSweep
instances do not accidentally go "out-of-sync" with respect to their basic components. When needed, warnings are thrown for the user to re-run sweeps or spectrum lookups.
- Under the hood:
- Monitoring for changes of interdependent class instances is implemented through a central dispatch system. (disable:
settings.DISPATCH_ENABLED
) - Removed
HilbertSpace
reference from within InteractionTerm (throws deprecation warning if still used) - Made
HilbertSpace
inherit fromtuple
rather thanlist
; composition changes toHilbertSpace
warrant generating a newHilbertSpace
instance - Shifted
InteractionTerm.hamiltonian
toHilbertSpace.interaction_hamiltonian
- Created
DataStore
as general purpose parent class toSpectrumData
- No longer store custom data inside
ParameterSweep
,sweep_generators.py
functions returnDataStore
objects
- Monitoring for changes of interdependent class instances is implemented through a central dispatch system. (disable:
- fixed a bug in display of
FluxQubit
wavefunction- internal refactoring
- new class
InteractionTerm
works in tandem withHilbertSpace
to ease setup of composite systems with pairwise interactions- new
ParameterSweep
class efficiently generates spectral data for performing a scan of aHilbertSpace
object over an external parameters- new
Explorer
class introduces interactive plots (see docs and demo ipynb)- cleaned up implementation of file Serializable operations