Scqubits

Latest version: v4.1.0

Safety actively analyzes 629908 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 2 of 4

3.0.3

**BUG FIXES: GUI**
- `get_operator_names` has been eliminated from the operator dropdown menu
- "State No." sliders for `FluxQubit`, `ZeroPi`, and `Cos2PhiQubit` do not exclude the ground state anymore.
- Fixed a bug where the plot was not being erased after switching to another qubit while in manual-update mode.
- Changing to a non-manual scqubit now switches manual-mode off.
- Fixed a bug where the maximum state number could be larger than `hilbertdim`.

**UNDER THE HOOD**
- Initialization of a circuit instance now does not globally switch to latex output (avoids unnecessary slowdowns with regular, non-sympy, output.

3.0.2

**ADDITIONS**
* `Circuit` now implements multiprocessing in routines like `get_evals_vs_paramvals` when specifying `num_cpus=2` or higher as optional keyword argument.
* The class `Circuit` is now “frozen” to prevent accidental creation of new instance attributes. Doing `<circuit instance>.non_existing_attribute = 3` will now raise an error message instead of creating a new attribute.
* New threshold setting `scqubits.settings.SYM_INVERSION_MAX_NODES` (default: `=3`) decides whether the capacitance matrix is inverted symbolically (number of nodes ≤ threshold) or numerically (number of nodes > threshold). This avoids apparent hang-ups due to generation of massive symbolic expressions for matrix inverses.

**BUG FIXES**
* Branches are now distinguished by a unique id. This solves an issue of incorrect spanning trees when two branches of the same type were connected across the same set of nodes.
* Fixed a bug in plotting routines which led to an `Exception` for cases with two or more layers in the system hierarchy.
* Fixed a bug that could break `Subsystem` instances when the symbolic Hamiltonian had no potential terms.
* `GUI`: establish correct clearing when turning manual plot on or when switching to another plot while on manual update.

**UNDER THE HOOD**
* All numerical diagonalization is now delayed until explicitly required. Changing circuit parameters thus does not incur a repeated runtime cost anymore.
* When hierarchical diagonalization is used, the bare eigensystems for each subsystems are now stored and reused for calculations, and only replaced by a new set when necessary. This dramatically improves the performance of wavefunction plotting, identity wrapping, etc.
* If the circuit parameters are not updated, successive diagonalizations are skipped for all subsystems.
* Implemented `eigsh_safe` (wrapper for scipy.sparse.linalg.eigsh) that orthogonalizes the eigenvectors when degenerate eigenvalues are detected. In rare cases of actual degeneracies in the spectrum, sparse matrix methods could have given incorrect results because `scipy.sparse.linalg.eigsh` does not guarantee orthogonality of eigenvectors in degenerate subspaces.

**DEPRECATIONS**
* The `Circuit.from_yaml` method will be phased out. Instead simply use the regular instance creation method `scq.Circuit(...)` with the same arguments as in the `from_yaml` class method.


v.3.0.1
**ADDITIONS**
* Modified `SymbolicCircuit` and `Circuit` classes to simulate linear LC circuits efficiently.
* Added the option `grids_dict` to `plot_wavefunction`, which provides an option to define a custom grid for wavefunction plots.
* File input/output is now functional for the `Circuit` class, which will enable users to store `Circuit` objects to file.

**BUG FIXES**
* `sym_external_fluxes` now functions as expected for circuits with capacitive sub-circuits; external fluxes are now distributed in a deterministic way by default.
* Fixed and improved functions that display symbolic Hamiltonians, Lagrangians, potentials, etc.; added factor 2pi for displayed external fluxes to reflect units correctly.
* Fixed the representation of cosine operator for periodic variables which previously resulted in an erroneous shift of pi in the wavefunction plots.
* Multiple corrections to plot functionality of `Circuit` class.
* GUI: fixed issue with “update” button for slow qubits.
* GUI: fixed bad range default for wavefunction plots of fluxonium.

**UNDER THE HOOD**
* Changed the way to calculate the junction potential matrix in `Circuit` class, which now uses expm to evaluate the cosine terms.
* f-strings are now used for most of the string manipulations in `Circuit` and `SymbolicCircuit` class.
* Fixed the overall energy shift in the eigenvalues by incorporating omega/2 for every harmonic oscillator.

3.0

**ADDITIONS**
* add circuit and symbolic_circuit modules, introducing the Circuit class for symbolic and numerical analysis of custom circuits
* add official support for Python 3.9 and 3.10
* improved GUI for single qubits (incl., e.g., a Dropdown menu with parameter choices from papers)
* improved Explorer class
* additional options for specifying initial and final states in transitions and plot_transitions inside ParameterSweep
* additional helper functions in ParameterSweep: get_subsys(index), subsys_by_id_str(id_str), subsys_evals_count(index), dressed_evals_count
* ParameterSweep offers a new option ignore_low_overlap
* improved status information output when using parallel processing of ParameterSweep data

**DEPRECATIONS**
* remove deprecation support for outdated InteractionTerm / HilbertSpace interface
* remove deprecation support for outdated Explorer interface

**BUG FIXES**
* fixed incorrect output/return from supported_noise_channels for the FullZeroPi qubit
* fixed accidental support of h5py without safeguard (remains optional)
* fixed ordering bug in de-serialization of OrderedDict which could prevent reading of ParameterSweep objects
* fixed plotting issue in which presence of nans could reduce the intended plot range

**UNDER THE HOOD**
* remove _evec_dtype attribute from qubit classes
* eliminated code duplication for SpectrumLookup between HilbertSpace and ParameterSweep . Both classes now use SpectrumLookupMixin
* ParameterSweep now has read-only property hilbertspace
* added quantitative pytest for FullZeroPi

2.2.2

**BUG FIXES**
* Fixed issue that could make import of `scqubits` fail when optional `h5py` package was not installed.
* Plot options were not properly handled by `plotting.data_vs_paramvals` , leading to poor formatting of `plot_dispersion_vs_paramvals`
* In certain scenarios (likely related to dependency version updates), GUI displays were duplicated rather than substituted.
* Adjusted calculations mapping dressed-basis to bare-state labels: use (state overlap)^2 instead of (state overlap) for thresholding.


**UNDER THE HOOD**
* `typing_extensions` is new dependency (used for enhanced typing annotations such as `overload` and `Literal`

2.2.1

2.2

**BUG FIXES**
* Use of `<ParameterSweep>.plot_transitions` could previously lead to a spurious switch of `<ParameterSweep>["evals"]` to transition energies.
* Include the +1/2 hbar omega term when diagonalizing fluxonium in the harmonic osc. basis. The omission of this only affected absolute energies, not the energy differences which are the relevant quantities in most cases. However, wavefunction plots for fluxonium were previously incorrectly positioned relative to the potential energy.
* Some dispersion calculations previously failed for qubits other than `Transmon` and `TunableTransmon`.
* Eliminated rare `NamedSlotsNdarray` indexing failure modes.
* `ParameterSweep` previously failed for a "sweep" over just one parameter value.
* Fixed issue where the depolarization time due to quasiparticle tunneling could be negative.
* Fixed issue where accumulating legend label information in multiple plots to the same figure would fail to produce the desired legend.

**ADDITIONS**
* Support access to `Figure`, `Axes` objects from `scq.GUI()`.
* Support access to `Figure`, `Axes` from `ParameterSweep.plot_transitions`.
* Support multi-photon transitions in `ParameterSweep.transitions()` and `.plot_transitions()` via new keyword argument `photon_number`
* Added functionality for naming quantum system instances and interaction terms via `id_str` at initialization. This supports easier dict-like access to objects interior to `ParameterSweep`. Added `deepcopy` option to `ParameterSweep` that disconnects global variables from a deep copy saved inside `ParameterSweep`.
* Refactored `Explorer` class for usage of new `ParameterSweep`
* `supported_noise_channels` and `effective_noise_channels` are now `classmethods` and can be called either directly through a class, or through a class instance.
* `t1_charge_impedance` is no longer returned by `effective_noise_channels` in the case of a `TunableTransmon` and `Transmon` qubits
* Added `about` function that shows basic information about `scqubits` as well as versions of some of the most important libraries that scqubits relies on.
* Extended pytests for enhanced coverage.

**DEPRECATIONS**
* Old version of `Explorer` is still available with deprecation warning, but will be phased out in the future.
* Deprecated `omega` parameter for `Oscillator` has been removed.

Page 2 of 4

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.