Scqubits

Latest version: v4.3

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

Scan your dependencies

Page 1 of 5

4.3

ADDITIONS
* Meshgrids can now be directly generated in the `Parameters` class by `meshgrids_by_paramname`
* `HilbertSpace.dressed_state_component()` and `ParameterSweep.dressed_state_component()`. These provide the probability of occupying particular bare states when the system is in an eigenstate.
* For a non-dispersively coupled system, the eigenstates labeling by overlap might fail. Instead, we can use the branch analysis method to get a reliable labeling, following Dumas et al. (2024). Try this functionality by `HilbertSpace.generate_lookup(ordering="LX")` or `ParameterSweep(..., labeling_scheme="LX")`. For more info about the use and the implementation, please refer to the documentation and the docstrings.
* Migrated to `pyproject.toml` from `setup.py` for installation with pip.

BUG FIXES
* Fix 193. We use `id_str` to identify subsystems instead of the subsystem object for `subsys_update_info`. We perform multiple checks when initializing the object to make sure this is secure.
* Fix parameter functions for parametric driving in the Circuit module.
* Fix configure method in `SymbolicCircuit`, now does not reset the instance when run with no arguments.
* Fix bugs 193 and 209 related to`ParameterSweep`.
* Fix compatibility of `Circuit` module with `HilbertSpace`, bugs 253 and 254.
* Fix 211, a bug that could occur when `op_in_dressed_eigenbasis` was called without prior lookup generation.
* `SymbolicCircuit` instances now do not need to be re-initiated when their `configure` method fails (e.g., because of incorrect parameters).

UNDER THE HOOD
* `SpectrumLookupMixin.reset_preslicing()` now resets the slice to a tuple of multi-dimensional slices
* `ParameterSweep._preslicing_reset()` is redundant (exactly the same as `SpectrumLookupMixin.reset_preslicing()`) and is replaced.
* A more rigorous implementation for `SpectrumLookupMixin.all_params_fixed()` for all different supported slicing methods
* `ParameterSweep` now keeps the original instance when `deepcopy=True`.
* Reduce redundant diagonalizations when `ParamtersSweep` is used with the `hilbert_space` object of a `Circuit` instance.
* Added plotting tests and refactor code for `Circuit` instance.
* Type annotations fixes and code cleanup.

4.2

**ADDITIONS**
- Allow loops with capacitances when dynamical flux grouping is used in custom circuits.
- Allow setting branch parameters with negative values - a feature useful for higher order junctions in custom circuits.

**BUG FIXES**
- Fix prefactor for evaluations of noise spectral density for quasiparticle noise - adds an additional factor of $\hbar/e^2$.
- Fix error in symbolic Hamiltonian for multi-harmonic junctions.

**UNDER THE HOOD**
- Support for `numpy`>=2.0.
- Fix type annotations for certain functions, code cleanup.
- Updates to various testing functions.
- Internal updates to the custom diagonalization module.

4.1

**ADDITIONS**
- Allow Henries as units for Josephson junctions in `Circuit` definitions.
- The info for `Circuit` module is just the `_repr__latex_`, which returns Circuit info from a code cell.

**BUG FIXES**
- Fix compatibility with `qutip` version 5.
- Fix crashes for oscillator subsystems in hierarchical diagonalization, in `exp_i_operator`.
- Fix $2\pi$ factor in external flux terms in purely harmonic subsystems.
- Fix crashes, related to the warning attribute which is not defined for `HilbertSpace` object.
- Fix Github actions for `macos-latest` runs, which failed for `qutip` version 5.0.

**UNDER THE HOOD**
- Updates and clean up of Github tests.
- No longer require `cython<3.0`.
- Added python-version specific `qutip` installs that guarantee full support .

4.0

**ADDITIONS**
Following additions are for the `Circuit` module:
- Support for custom diagonalization.
- Coherence time calculations for a general circuit, with the argument `generate_noise_methods`.
- Ability to provide circuit parameters using physical units and multiplier prefixes.
- Helper function `hamiltonian_for_qutip_dynamics` to easily simulate time dynamics for a given parameter.
- Ability to set basis for extended variables for each subsystem individually when hierarchical diagonalization is used.
- Can instantiate `Circuit` instance with a symbolic Hamiltonian.
- Flux grouping when external flux is time dependent for superconducting loops in a circuit.
- New info method to give a description of the `Circuit` instance.
- Make certain attributes read-only, which need to be changed using the `configure` method.
- Ability to change the spanning tree by defining a custom set of `closure_branches`.
- The `plot_wavefunction` now supports options to plot the real, imaginary, absolute-square and absolute value of a wavefunction when applicable.

**BUG FIXES**
- Fix diagonalization for purely harmonic systems using the `Circuit` module
- Fix bugs in `Circuit` plotting routines.
- `Circuit` module supports parallel processing.
- Fix bugs when defining custom variable transformation in `Circuit` module.
- Fix typos in `ZeroPi` related to custom diagonalization
- Fixed a bug in `plot_wavefunction`  method `Circuit` , where the user-provided `grids_dict` argument was not applied in the plot.

**UNDER THE HOOD**
- More efficient evaluation of eigenvalues for purely harmonic circuits.
- More efficient attribute updates for the `Circuit` instance.
- Using `pyparsing` instead of `pyyaml` to parse the input string for the `Circuit` module.
- Initial work on making the `Circuit` instance writable to file.
- Refactoring and improving code quality.
- Improve the accuracy of `_evaluate_symbolic_expr`

3.3

**ADDITIONS**

* The custom diagonalization module now also supports the `jax` library.
* Custom diagonalization is now possible for the `FullZeroPi` qubit.

**BUG FIXES**

* Fixed how `op_in_dressed_eigenbasis` sets operator dimensions.

**UNDER THE HOOD**

* Initial work on QuTiP 5 compatibility
* Initial work to allow for custom diagonalization in the `Circuit` module in the near future.
* Updates on how annotations are handled in some cases.
* Automatic generation of `__all__` list in the `__init__.py`.

3.2

**ADDITIONS**
* New diagonalization module: customize your eigensolver by determining which library, what solvers, and what solver options to use to calculate the eigenvalues and eigenvectors of the various problems scqubits addresses (single qubit or composite system; support for custom Circuits and FullZeroPi to be added). Both sparse and dense diagonalization procedures from libraries such as scipy, primme, and cupy (which offers GPU support), are exposed, and can be easily selected with different sets of predefined options and parameters. In principle, completely arbitrary diagonalization functions can be set by the user.
* Added support for 1/f flux noise dephasing time calculation to the `FluxQubit` class.
* Overhaul of the graphical user interfaces, including `scqubits.GUI`, `scqubits.Explorer`, and `scqubits.HilbertSpace.create`

**BUG FIXES**
* Fixed a bug affecting numerical results in certain `ParameterSweep` cases. The problem arises in cases where the
operators appearing in `InteractionTerm` need updating under parameter changes. (Not applicable to `Transmon`, `TunableTransmon`,
or `Oscillator`, but relevant for `Fluxonium`, for example.)
* Fixed a bug that could result in repeated Matplotlib warnings about missing fonts
* Fixed bug that could prevent progress bar visibility settings to take effect
* Fixed a bug that could change how the T1 coherence time due to a flux bias line was calculated in a `TunableTransmon` qubit.

**UNDER THE HOOD**
* Added missing flux-noise support to `FluxQubit`
* Docstring fixes and additions, improvements to type annotations

Page 1 of 5

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.