Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
8f0d7c6
docs(convergence): add Convergence Diagnostics user guide
kochjens May 20, 2026
cbc60af
docs(convergence): fix ambiguous estimate_convergence xref and settin…
kochjens May 20, 2026
efab8ba
docs(convergence): American English (labeled, neighboring, behavior)
kochjens May 21, 2026
08db6e7
docs(convergence): document derived channels as final product docs
kochjens May 21, 2026
69ecb2b
convergence guide: use design-spec channel names in the example
kochjens May 21, 2026
1ddf158
convergence guide: full refresh with per-check equations
kochjens May 22, 2026
d80e8d1
convergence guide: show real report output; refinement-difference naming
kochjens May 22, 2026
f3ba95a
convergence guide: add Coupled subsystems (HilbertSpace) section
kochjens May 23, 2026
282cff1
convergence guide: document FullZeroPi (two-layer hierarchical check)
kochjens May 23, 2026
e08b4a7
convergence guide: add Cos2PhiQubit to the supported-classes note
kochjens May 23, 2026
7d3a042
convergence guide: document Circuit (non-hierarchical, Stage 3a)
kochjens May 23, 2026
9034b53
convergence guide: document hierarchically-diagonalized Circuit (Stag…
kochjens May 23, 2026
7da2294
convergence guide: document ParameterSweep.estimate_convergence
kochjens May 23, 2026
2b66956
convergence guide: rewrite around the falsification verdict scheme
kochjens May 23, 2026
a73b093
docs: add convergence example notebooks (basics + advanced)
kochjens May 24, 2026
7caca15
docs: wire convergence notebooks into the guide and document monotoni…
kochjens May 24, 2026
5aeb949
convergence docs: per-check record + single companion notebook
kochjens May 24, 2026
0257edc
convergence docs: correctness fixes to framing and physics
kochjens May 24, 2026
d01bb34
convergence docs: regenerate report transcripts for the new pretty-print
kochjens May 24, 2026
a60c785
convergence docs: verdict ordering as a displayed inequality (drop 'l…
kochjens May 24, 2026
3e59aea
convergence docs: clarify channel-breakdown label ('error by channel …
kochjens May 24, 2026
8faab1c
docs: feature csc as the convergence quick-start; document the new CS…
kochjens May 27, 2026
8e380b4
docs: rename estimate_convergence -> check_convergence (convergence g…
kochjens May 27, 2026
1b0f0f5
docs: ParameterSweep coverage cleanup in the convergence guide
kochjens May 27, 2026
bd9f12d
docs: copy-edit and correctness pass across guide RST and notebooks
kochjens May 30, 2026
c809381
docs(convergence): define U_N in the cluster-safe-matching section [#…
kochjens Jun 18, 2026
0af0b55
Merge pull request #37 from scqubits/docs/define-UN
kochjens Jun 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions docs/source/acknowledgments.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ Funding
*******

We gratefully acknowledge financial support for the continued development of the scqubits library by the Air Force
Office for Scientific Research under grant no. FA9550-20-1-0271. The scqubits library was additionally supported
Office of Scientific Research under grant no. FA9550-20-1-0271. The scqubits library was additionally supported
by the Army Research Office under grant nos. W911NF-1510421, W911NF-1910016, by the DOE under grant
nos. DE-SC0012704, DE-AC02-07CH113, and by the Northwestern-Fermilab Center for Applied Physics and Superconducting
nos. DE-SC0012704, DE-AC02-07CH11359, and by the Northwestern-Fermilab Center for Applied Physics and Superconducting
Technologies (CAPST).

.. table::
Expand Down
8 changes: 8 additions & 0 deletions docs/source/api-doc/for_developer.rst
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,17 @@ CentralDispatch and related classes
CentralDispatch
---------------

.. toctree::

_autosummary/scqubits.core.central_dispatch.CentralDispatch.rst

.. _classes-dispatchclient:

DispatchClient
---------------

.. toctree::

_autosummary/scqubits.core.central_dispatch.DispatchClient.rst


Expand All @@ -61,11 +65,15 @@ Descriptor classes
WatchedProperty
---------------

.. toctree::

_autosummary/scqubits.core.descriptors.WatchedProperty.rst

.. _classes-readonly:

ReadOnlyProperty
----------------

.. toctree::

_autosummary/scqubits.core.descriptors.ReadOnlyProperty.rst
6 changes: 3 additions & 3 deletions docs/source/bibliography.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@ Refs
****

.. [Brooks2013] Brooks et al., Phys. Rev. A 87, 052306 (2013), https://link.aps.org/doi/10.1103/PhysRevA.87.052306
.. [Catelani2011] Catelani et al., Phys. Rev. B, 84, 064517 (2011), https://journals.aps.org/prb/abstract/10.1103/PhysRevB.84.064517
.. [Catelani2011] Catelani et al., Phys. Rev. B 84, 064517 (2011), https://journals.aps.org/prb/abstract/10.1103/PhysRevB.84.064517
.. [Dempster2014] Dempster et al., Phys. Rev. B 90, 094518 (2014), https://link.aps.org/doi/10.1103/PhysRevB.90.094518
.. [Groszkowski2018] Groszkowski et al., New J. Phys. 20, 043053 (2018), https://doi.org/10.1088/1367-2630/aab7cd
.. [Ithier2005] Ithier et al., Phys. Rev. B 72 134519 (2005), https://journals.aps.org/prb/abstract/10.1103/PhysRevB.72.134519
.. [Koch2007] Koch et al., Phys. Rev. A 76, 042319 (2007), https://link.aps.org/doi/10.1103/PhysRevA.76.042319
.. [Manucharyan2009] Manucharyan et al., Science 326, 113-116 (2009), https://doi.org/10.1126/science.1175552
.. [Nguyen2019] Nguyen et al., Phys. Rev. X 041041 (2019), https://journals.aps.org/prx/abstract/10.1103/PhysRevX.9.041041
.. [Nguyen2019] Nguyen et al., Phys. Rev. X 9, 041041 (2019), https://journals.aps.org/prx/abstract/10.1103/PhysRevX.9.041041
.. [Orlando1999] Orlando et al., Phys. Rev. B 60, 15398 (1999), https://link.aps.org/doi/10.1103/PhysRevB.60.15398
.. [Pop2014] Pop et al., Nature, 508 (7496) (2014), https://www.nature.com/articles/nature13017/
.. [Pop2014] Pop et al., Nature 508 (7496) (2014), https://www.nature.com/articles/nature13017/
.. [Schoelkopf2003] Schoelkopf et al., Quantum noise in mesoscopic physics, pp. 175-203. (2003), https://link.springer.com/chapter/10.1007/978-94-010-0089-5_9
.. [Smith2020] Smith et al., npj Quantum Information 6.1 (2020), https://www.nature.com/articles/s41534-019-0231-2
.. [Zhu2013] Zhu et al., PRB 87, 024510 (2013), https://link.aps.org/doi/10.1103/PhysRevB.87.024510
Expand Down
18 changes: 9 additions & 9 deletions docs/source/changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ Version 4.3
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 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).
Expand All @@ -218,7 +218,7 @@ Version 4.2

**BUG FIXES**

- Fix prefactor for evaluations noise spectral density for quasiparticle noise - adds an additional factor of :math:`\hbar/e^2`.
- Fix prefactor for evaluation of noise spectral density for quasiparticle noise - adds an additional factor of :math:`\hbar/e^2`.
- Fix error in symbolic Hamiltonian for multi-harmonic junctions.

**UNDER THE HOOD**
Expand Down Expand Up @@ -393,7 +393,7 @@ Version 3.0.3

**Under the hood**

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


Version 3.0.2
Expand All @@ -415,7 +415,7 @@ Version 3.0.2
**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.
- When hierarchical diagonalization is used, the bare eigensystems for each subsystem 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.

Expand Down Expand Up @@ -498,8 +498,8 @@ Version 2.2.2
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`
typing_extensions is a new dependency (used for enhanced typing annotations such as
`@overload` and `Literal`)


Version 2.2
Expand All @@ -508,7 +508,7 @@ Version 2.2
**Bug Fixes**
- Use of `<ParameterSweep>.plot_transitions` could previously lead to a spurious
switch of `<ParameterSweep>["evals"]` to transition energies.
- Include the :math:`/frac{1}{1}hbar` omega term when diagonalizing fluxonium in the harmonic
- Include the :math:`\frac{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.
Expand All @@ -534,7 +534,7 @@ Version 2.2
- `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
case of `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.
Expand Down Expand Up @@ -684,7 +684,7 @@ Version 1.1.0
+++++++++++++

- new class ``InteractionTerm`` works in tandem with ``HilbertSpace`` to ease setup of composite systems with pairwise interactions
- new ``ParameterSweep`` class efficiently generates spectral data for performing a scan of a ``HilbertSpace`` object over an external parameters
- new ``ParameterSweep`` class efficiently generates spectral data for performing a scan of a ``HilbertSpace`` object over external parameters
- new ``Explorer`` class introduces interactive plots (see docs and demo ipynb)
- cleaned up implementation of file Serializable operations

Expand Down
2 changes: 1 addition & 1 deletion docs/source/contents.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
Copyright (C) 2019, Jens Koch & Peter Groszkowski


scQubits documentation
scqubits documentation
======================

scqubits is an open-source Python library for simulating superconducting qubits.
Expand Down
2 changes: 1 addition & 1 deletion docs/source/example-notebooks.rst
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Users can easily clone it to their local file system by executing::

git clone https://github.com/scqubits/scqubits-examples

The full contents of `scqubits-examples` can also be explored in a live jupyter
The full contents of `scqubits-examples` can also be explored in a live Jupyter
notebook via Binder:

.. image:: https://mybinder.org/badge_logo.svg
Expand Down
9 changes: 2 additions & 7 deletions docs/source/guide/basics/basics-spectra.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -1249,12 +1249,7 @@
"name": "#%% md\n"
}
},
"source": [
"### Plotting energy dispersion\n",
"The sensitivity of energy levels (or, more specifically, transition energies) to changes in an external parameter like the offset charge are important for qubit's dephasing time. Plots of the energy dispersion, can be obtained easily:\n",
"\n",
"* either for individual energy levels:"
]
"source": "### Plotting energy dispersion\nThe sensitivity of energy levels (or, more specifically, transition energies) to changes in an external parameter like the offset charge is important for the qubit's dephasing time. Plots of the energy dispersion can be obtained easily:\n\n* either for individual energy levels:"
},
{
"cell_type": "code",
Expand Down Expand Up @@ -4979,4 +4974,4 @@
},
"nbformat": 4,
"nbformat_minor": 4
}
}
6 changes: 2 additions & 4 deletions docs/source/guide/basics/basics-wavefunctions.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,7 @@
"name": "#%% md\n"
}
},
"source": [
"For a qubit as simple as the transmon, wavefunctions are one-dimensional and can be plotted easily. The first option, is to employ the discrete charge basis (`n`):"
]
"source": "For a qubit as simple as the transmon, wavefunctions are one-dimensional and can be plotted easily. The first option is to employ the discrete charge basis (`n`):"
},
{
"cell_type": "code",
Expand Down Expand Up @@ -4977,4 +4975,4 @@
},
"nbformat": 4,
"nbformat_minor": 4
}
}
35 changes: 4 additions & 31 deletions docs/source/guide/circuit/ipynb/custom_circuit_bases.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -48,19 +48,7 @@
"name": "#%% md\n"
}
},
"source": [
"### Basis choices\n",
"\n",
"For **periodic degrees of freedom** scqubits employs the discrete charge basis.\n",
"\n",
"For **extended degrees of freedom** two choices are available:\n",
"- `ext_basis = \"discretized\"` (default)<br> Discretizes the variables for extended degrees of freedom.\n",
"- `ext_basis = \"harmonic\"`<br>Employs the harmonic-oscillator basis for th extended degrees of freedom (taking the potential to be the one arising from the geometric inductance).\n",
"\n",
"For instance, the following would switch the treatment of the extended degrees of freedom to using harmonic-oscillator basis:\n",
"\n",
"`zero_pi = scq.Circuit.from_yaml_string(zp_yaml, ext_basis=\"harmonic\")`"
]
"source": "### Basis choices\n\nFor **periodic degrees of freedom** scqubits employs the discrete charge basis.\n\nFor **extended degrees of freedom** two choices are available:\n- `ext_basis = \"discretized\"` (default)<br> Discretizes the variables for extended degrees of freedom.\n- `ext_basis = \"harmonic\"`<br>Employs the harmonic-oscillator basis for the extended degrees of freedom (taking the potential to be the one arising from the geometric inductance).\n\nFor instance, the following would switch the treatment of the extended degrees of freedom to using harmonic-oscillator basis:\n\n`zero_pi = scq.Circuit.from_yaml_string(zp_yaml, ext_basis=\"harmonic\")`"
},
{
"cell_type": "markdown",
Expand Down Expand Up @@ -110,18 +98,7 @@
"name": "#%% md\n"
}
},
"source": [
"These cutoffs must be varied by the user to ensure convergence. \n",
"We distinguish two cutoff types:\n",
"\n",
"#### Cutoffs for periodic degrees of freedom:\n",
"- `cutoff_n_<i>` - use all the integer charge states in the range `[-cutoff_n_<i>, cutoff_n_<i>]` for the periodic degree of freedom $i$.\n",
"\n",
"#### Cutoffs for extended degrees of freedom:\n",
"- `cutoff_ext_<i>` - the meaning of this cutoff differs according to the choice of basis, specified via `ext_basis` upon initialization of the `Circuit` instance.\n",
" - `ext_basis = \"discretized\"`: <br>For discretization of $\\theta_i$, `cutoff_ext_<i>` sets the number of points used to in the \"spatial\" range given by the attribute `discretized_phi_range`.\n",
" - `ext_basis = \"harmonic\"`: <br>When using the harmonic oscillator basis, `cutoff_ext_<i>` sets the number of harmonic oscillator states admitted to the basis set for the extended degree of freedom $i$."
]
"source": "These cutoffs must be varied by the user to ensure convergence. \nWe distinguish two cutoff types:\n\n#### Cutoffs for periodic degrees of freedom:\n- `cutoff_n_<i>` - use all the integer charge states in the range `[-cutoff_n_<i>, cutoff_n_<i>]` for the periodic degree of freedom $i$.\n\n#### Cutoffs for extended degrees of freedom:\n- `cutoff_ext_<i>` - the meaning of this cutoff differs according to the choice of basis, specified via `ext_basis` upon initialization of the `Circuit` instance.\n - `ext_basis = \"discretized\"`: <br>For discretization of $\\theta_i$, `cutoff_ext_<i>` sets the number of points used in the \"spatial\" range given by the attribute `discretized_phi_range`.\n - `ext_basis = \"harmonic\"`: <br>When using the harmonic oscillator basis, `cutoff_ext_<i>` sets the number of harmonic oscillator states admitted to the basis set for the extended degree of freedom $i$."
},
{
"cell_type": "code",
Expand Down Expand Up @@ -262,11 +239,7 @@
"name": "#%% md\n"
}
},
"source": [
"## Choosing basis states for each of the subsystems\n",
"It is also possible to chose a basis states for each of the subsystems independently.\n",
"We start with defining a particular circuit"
]
"source": "## Choosing basis states for each of the subsystems\nIt is also possible to choose basis states for each of the subsystems independently.\nWe start with defining a particular circuit"
},
{
"cell_type": "code",
Expand Down Expand Up @@ -505,4 +478,4 @@
},
"nbformat": 4,
"nbformat_minor": 5
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -62,28 +62,12 @@
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There two important arguments that are passed to `Circuit` constructor which determine if and how noise can calculated:\n",
"\n",
"`generate_noise_methods`: A boolean argument that determines whether methods for estimating coherences are generated for this object. \n",
"\n",
"`use_dynamic_flux_grouping`: A boolean argument that determines if a flux-grouping based on this [You at al. PRB(2019)](https://journals.aps.org/prb/abstract/10.1103/PhysRevB.99.174512) (or [arXiv](https://arxiv.org/abs/1902.04734)) paper is generated. This grouping approach is recommended any time flux is assumed to have time-dependence (due to noise, or otherwise) as it aims to group flux among different branches in a way that would not require a term proportional to the flux-derivative. \n",
"\n",
"\n",
".. warning::\n",
"If `generate_noise_methods` is not set to `True` when building a `Circuit` object, none of the coherence methods will be generated. Users can however, choose to generate them at a later time by executing `circ.configure(generate_noise_methods=True)`. \n",
"\n",
".. warning::\n",
"If `use_dynamic_flux_grouping` is not set to `True` when estimating coherence times, to obtain results related to flux noise, `scqubits` will utilize a more arbitrary grouping, and not the one proposed by [You at al. PRB(2019)](https://journals.aps.org/prb/abstract/10.1103/PhysRevB.99.174512). \n"
]
"source": "There are two important arguments that are passed to the `Circuit` constructor, which determine whether and how noise can be calculated:\n\n`generate_noise_methods`: A boolean argument that determines whether methods for estimating coherences are generated for this object. \n\n`use_dynamic_flux_grouping`: A boolean argument that determines if a flux-grouping based on this [You et al. PRB(2019)](https://journals.aps.org/prb/abstract/10.1103/PhysRevB.99.174512) (or [arXiv](https://arxiv.org/abs/1902.04734)) paper is generated. This grouping approach is recommended any time flux is assumed to have time-dependence (due to noise, or otherwise) as it aims to group flux among different branches in a way that would not require a term proportional to the flux-derivative. \n\n\n.. warning::\nIf `generate_noise_methods` is not set to `True` when building a `Circuit` object, none of the coherence methods will be generated. Users can however, choose to generate them at a later time by executing `circ.configure(generate_noise_methods=True)`. \n\n.. warning::\nIf `use_dynamic_flux_grouping` is not set to `True` when estimating coherence times, to obtain results related to flux noise, `scqubits` will utilize a more arbitrary grouping, and not the one proposed by [You et al. PRB(2019)](https://journals.aps.org/prb/abstract/10.1103/PhysRevB.99.174512). "
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Auto-generated `supported channels`\n",
"The `circ` object now contains a variety of `supported_noise_methods` which can be explicitly listed with:"
]
"source": "### Auto-generated `supported channels`\nThe `circ` object now contains a variety of `supported_noise_channels` which can be explicitly listed with:"
},
{
"cell_type": "code",
Expand Down Expand Up @@ -180,9 +164,7 @@
{
"cell_type": "markdown",
"metadata": {},
"source": [
"and look at the depolarization $T_1$ time, at temperature of 0.1 mK, due to the capacitor between nodes 0 and 3 (i.e., of branch 4), but only including contributions from the downward rate between levels 2 and 1:"
]
"source": "and look at the depolarization $T_1$ time, at a temperature of 0.1 K, due to the capacitor between nodes 0 and 3 (i.e., of branch 4), but only including contributions from the downward rate between levels 2 and 1:"
},
{
"cell_type": "code",
Expand Down Expand Up @@ -2986,4 +2968,4 @@
},
"nbformat": 4,
"nbformat_minor": 4
}
}
Loading