Scqubits

Latest version: v4.0.0

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

Scan your dependencies

Page 1 of 4

4.0

**ADDITIONS**
Following changes for `Circuit` module:
- Supports custom diagonalization module.
- 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

3.1.1

**ADDITIONS**
* Enhanced support for interfacing with QuTiP/mesolve: for simulation of time evolution it is often preferable to work with matrices in the dressed eigenenergy basis (in the absence of a time-dependent drive).
To simplify this, all qubits (i.e., `QuantumSystem` children) now offer an `energy_esys` keyword argument, and introduce `HilbertSpace.op_in_dressed_eigenbasis`.
* Add fit method `Transmon.find_EJ_EC` that extracts EJ, EC of a transmon, based on given E01 and anharmonicity.
* Add `E01`, `anharmonicity` as attributes to all qubits inheriting from `QubitBaseClass`.

**BUG FIXES**
* Fixed a bug affecting certain matrix element parameter sweeps that required recomputing of operators under parameter changes (114 and 177).
* Fixed a bug where `energy_by_bare_index` could throw an exception because np.int32 is not recognized by isinstance(myvar, int) (172).
* Fix for inconsistencies in global signs used for harmonic oscillator and discrete charge basis, originating in definitions of charge-basis lowering/raising operators; e^(i theta) is raising operator. Related fix in harm. osc. momentum operator sign (166).
* Corrected `Transmon.d_hamiltonian_d_flux` to account for the shift in generalized flux (178).
* Various GUI bug fixes.
* Various docstring typo fixes (incl. 165).

**UNDER THE HOOD**
* Renamed branch master → main.
* Constrain changes to matplotlib settings to scqubits.
* Account for scipy deprecation: `linalg.eigh` option `eigvals` -> `subset_by_index`.
* Introduce check for existence of lookup in `HilbertSpace` and `ParameterSweep`; emit meaningful exception message otherwise.
* Phase out `HilbertSpace.subsys_list` in favor of `subsystem_list` (160).
* Remove deprecated `HilbertSpace.lookup` interface and corresponding adapter class.
* Distinguish preslicing reset for `ParameterSweep` and `HilbertSpace` (170).
* Changed pytest data for `ZeroPi`, `FullZeroPi`, `Cos2Phi` to account for the sign fix in 3c1c5914e41d944d8234a8cfc8f7ef2f5ae7b67e.
* Increase required pathos version to 0.3.0 to fix the multiprocessing issue in python 3.7.

3.1

**ADDITIONS**
* `GUI` now includes functionality to plot coherence time estimates for various qubits


**UNDER THE HOOD**
* Speedup for diagonalization of `Transmon` and `TunableTransmon` by recognizing the Hamiltonian matrix as tridiagonal.

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.

Page 1 of 4

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.