Showing content from https://github.com/qutip/qutip/releases below:
Website Navigation
Releases · qutip/qutip · GitHub
QuTiP 5.2.0 Features Improvements to Environment
- Two 'DrudeLorentzPadeBath' can be added with complex conjugate 'gammas' to create a Shifted-DrudeLorentzPadeBath. (#2574, by Akhil Bhartiya)
- Adds extra fitting methods (power spectrum, prony, esprit, aaa, espira-I, espira-II) for bosonic environments (#2594, by Gerardo Jose Suarez)
- Add support for
FermionicEnvironment
in Bloch Redfield tensor and solver. (#2628)
New experimental solver
- Add a first version of Dysolve solver as
dysolve_propagator
.
A perturbation solver for Schrödinger equation optimized for driven systems.
(#2648, #2679, by Mathis)
Better matrix format control
- Add "default_dtype_scope" option.
Add dtype
to Qobj
initialization method.
Give more control on matrix format used by operations. (#2519)
- Creating operator from dense ket.proj return CSR when appropriate (#2700)
|ket> @ <bra|
create sparse matrix per default. (#2611)
- Tensor product of sparse and dense matrices return sparse matrix per default. (#2391)
Other improvements
- Add the calculation of the third cumulant to the functions of countstat.py.
I use a result of "Electrons in nanostructures" C. Flindt, PhD Thesis (#2435, by Daniel Moreno Galán)
- Support pretty-printing of basis expansion for states (e.g.
(0.5+0j) |0010> + ...
). (#2620, by Sola85)
- Added QuTiP family package information to qutip.about().
The information is provided by a new QuTiP family package entry point. (#2604)
- Speed up ptrace for kets (by several orders of magnitude for large states). (#2657, by Sola85)
- Implement partial trace and tensor product for states in excitation-number restricted space. (#2696, magzpavz)
Bug Fixes
- Fix arc behind hidden behind the wireframe. (#2467, by PositroniumJS)
- Update mkl finding to support the 'emscripten' sys.platform. (#2606)
- Make sure that dims of rand_ket output are set correctly. (#2613, reported by Mário Filho)
- Allow np.int as targets in expand_operator (#2634, by Sola85)
- Fix coefficient
args
not being properly updated
when initiated from another coefficient. (#2646, reported by Kyle Wamer)
- Fix equality operators for diagonal format Qobj. (#2669, reported by Richard Dong)
- Enable again to plot a state as a point on the Bloch sphere with a RGBA tuple.
Enable to do the same as a vector. (#2678, by PositroniumJS)
- Added missing abs when checking hermiticity (#2680, by Tanuj Rai, reported by tuureorell)
- Fix types and exceptions (#2701, Emmanuel Ferdman)
Documentation
- Docstrings, typing, guide page for distributions. (#2599, by Mathis)
- Guide for qutip.distributions (#2600, by Mathis)
- Removes the Quantum Optimal Control page in the Users Guide and adds Family guide page in Users guide. (#2616, by Kavya Rambhia)
- Fix small typo in docstring for
sesolve
. (#2677, by Sarang Joshi)
Miscellaneous
- Removed WignerDistribution, QDistribution from distributions with their tests.
Added plot_qfunc to plot Husimi-Q function with tests and animation. (#2607, by Mathis)
- Specialized A @ B.dag() operation. (#2610)
- Set auto_tidyup_dims default to True (#2623)
- Change default ode method for mcsolve (#2643)
- Fix parameter name inconsistency in qsave (#2688, by Andrey Rakhubovsky)
- Add tests for qdiags and phasegate Hermitian fix (#2698, by Tanuj Rai)
- Changed type hints in function visualize in distributions.py (tests failed if mpl not installed). (#2607, by Mathis)
QuTiP 5.1.1 QuTiP 5.1.1
Patch to add support for scipy 1.15.
Features
Bug Fixes
- Fix support for calculating the eigenstates of ENR operators (#2595).
- Update various functions to use sph_harm_y when using scipy >= 1.15 (#2593).
- Update mkl finding to support the 'emscripten' sys.platform. (#2606)
QuTiP 5.1.0 QuTiP 5.1.0 Features
- It adds odd parity support to HEOM's fermionic solver (#2261, by Gerardo Jose Suarez)
- Create
SMESolver.run_from_experiment
, which allows to run stochastic evolution from know noise or measurements. (#2318)
- Add types hints. (#2327, #2473)
- Weighted trajectories in trajectory solvers (enables improved sampling for nm_mcsolve) (#2369, by Paul Menczel)
- Updated
qutip.core.metrics.dnorm
to have an efficient speedup when finding the difference of two unitaries. We use a result on page 18 of
D. Aharonov, A. Kitaev, and N. Nisan, (1998). (#2416, by owenagnel)
- Allow mixed initial conditions for mcsolve and nm_mcsolve. (#2437, by Paul Menczel)
- Add support for
jit
and grad
in qutip.core.metrics (#2461, by Rochisha Agarwal)
- Allow merging results from stochastic solvers. (#2474)
- Support measurement statistics for
jax
and jaxdia
dtypes (#2493, by Rochisha Agarwal)
- Enable mcsolve with jax.grad using numpy_backend (#2499, by Rochisha Agarwal)
- Add propagator method to steadystate (#2508)
- Introduces the qutip.core.environment module, which contains classes that characterize bosonic and fermionic thermal environments. (#2534, by Gerardo Jose Suarez)
- Implements a
einsum
function for Qobj dimensions (Evaluates the Einstein summation convention on the operands.) (#2545, by Franco Mayo)
- Wave function calculations have been sped up with a Cython implementation.
It optimizes the update method of the HarmonicOscillatorWaveFunction class in distribution.py. (#2553, by Matheus Gomes Cordeiro)
- Speed up
kraus_to_super
by adding a sparse
option. (#2569, by Sola85)
Bug Fixes
- Fix a dimension problem for the argument color of Bloch.add_states
Clean-up of the code in Bloch.add_state
Add Bloch.add_arc and Bloch.add_line in the guide on Bloch class (#2445, by PositroniumJS)
- Fix HTMLProgressBar display (#2475)
- Make expm, cosm, sinm work with jax. (#2484, by Rochisha Agarwal)
- Fix stochastic solver step method (#2491)
clip
gives deprecation warning, that might be a problem in the future. Hence switch to where
(#2507, by Rochisha Agarwal)
- Fix brmesolve detection of contant vs time-dependent system. (#2530)
propagator
now accepts list format c_ops
like mesolve
does. (#2532)
- Fix compatibility issue with matplotlib>=3.9 in matrix_histogram (#2544, by Andreas Maeder)
- Resolve incompatibility of TwoModeQuadratureCorrelation class (#2548, by quantum-menace)
- Fix sparse eigen solver issue with many degenerate eigen values. (#2586)
- Fix getting tensor permutation for uneven super operators. (#2561)
Documentation
- Improve guide-settings page. (#2403)
- Tidy up formatting of type aliases in the api documentation (#2436, by Paul Menczel)
- Update documentation
- Update contributors
- Improve apidoc readability (#2523)
- Fix error in simdiag docstring (#2585, by Sola85)
Miscellaneous
- Add auto_real_casting options. (#2329)
- Add dispatcher for sqrtm (#2453, by Rochisha Agarwal)
- Make
e_ops
, args
and options
keyword only.
Solver were inconsistent with e_ops
usually following c_ops
but sometime
preceding it. Setting it as keyword only remove the need to memorize the
signature of each solver. (#2489)
- Introduces a new
NumpyBackend
class that enables dynamic selection of the numpy_backend used in qutip
.
The class facilitates switching between different numpy implementations ( numpy
and jax.numpy
mainly ) based on the configuration specified in settings.core
. (#2490, by Rochisha Agarwal)
- Improve mkl lookup function. (#2497)
- Deterministic trajectories are not counted in
ntraj
. (#2502)
- Allow tests to be executed multiple times in one Python session (#2538, by Zhang Maiyun)
- Improve performance of qutip.Qobj by using static numpy version check (#2557, by Pieter Eendebak)
- Fix towncrier check (#2542)
QuTiP 5.0.4
Micro release to add support for numpy 2.1
Bug Fixes
- Fixed rounding error in dicke_trace_function that resulted in negative eigenvalues. (#2466, by Andrey Nikitin)
QuTiP 5.0.3
Micro release to add support for numpy 2.
Bug Fixes
- Bug Fix in Process Matrix Rendering. (#2400, by Anush Venkatakrishnan)
- Fix steadystate permutation being reversed. (#2443)
- Add parallelizing support for
vernN
methods with mcsolve
. (#2454 by Utkarsh)
Documentation
- Added
qutip.core.gates
to apidoc/functions.rst and a Gates section to guide-states.rst. (#2441, by alan-nala)
Miscellaneous
QuTiP 5.0.2
Patch release with a lot of fixes, optimization for QuTiP 5.
Bug Fixes
- Use CSR as the default for expand_operator (#2380, by BoxiLi)
- Fix import of the partial_transpose function.
Ensures that the negativity function can handle both kets and density operators as input. (#2371, by vikas-chaudhary-2802)
- Ensure that end_condition of mcsolve result doesn't say target tolerance reached when it hasn't (#2382, by magzpavz)
- Fix two bugs in steadystate floquet solver, and adjust tests to be sensitive to this issue. (#2393, by Neill Lambert)
Documentation
- Correct a mistake in the doc (#2401, by PositroniumJS)
- Fix #2156: Correct a sample of code in the doc (#2409, by PositroniumJS)
Miscellaneous
- Better metadata management in operators creation functions (#2388)
- Set minimum python version to 3.9 (#2413)
Qobj.__eq__
uses core's settings rtol. (#2425)
- Only normalize solver states when the initial state is already normalized. (#2427)
QuTiP 4.7.6
Release to avoid issues related to scipy 1.13
QuTiP 4.7.6 (2024-04-05) Bug Fixes
- Increase countstat stability. (#2323)
Miscellaneous
- Exclude scipy 1.13 from in the requirements (#2383)
QuTiP 5.0.1
Patch release fixing small issues, mostly with the migration from self hosting the documentation to using readthedocs.
- Fix broken links in the documentation when migrating to readthedocs
- Fix readthedocs search feature
- Add setuptools to runtime compilation requirements
- Fix mcsolve documentation for open systems
- Fix OverFlowError in progress bars
QuTiP 5.0.0 QuTiP 5.0.0
QuTiP 5 is a redesign of many of the core components of QuTiP (Qobj
,
QobjEvo
, solvers) to make them more consistent and more flexible.
Qobj
may now be stored in either sparse or dense representations,
and the two may be mixed sensibly as needed. QobjEvo
is now used
consistently throughout QuTiP, and the implementation has been
substantially cleaned up. A new Coefficient
class is used to
represent the time-dependent factors inside QobjEvo
.
The solvers have been rewritten to work well with the new data layer
and the concept of Integrators
which solve ODEs has been introduced.
In future, new data layers may provide their own Integrators
specialized to their representation of the underlying data.
Much of the user-facing API of QuTiP remains familiar, but there have
had to be many small breaking changes. If we can make changes to
easy migrating code from QuTiP 4 to QuTiP 5, please let us know.
A notebook to help with migration is available on colab.
An extensive list of changes follows.
Contributors
QuTiP 5 has been a large effort by many people over the last three years.
In particular:
- Jake Lishman led the implementation of the new data layer and coefficients.
- Eric Giguère led the implementation of the new QobjEvo interface and solvers.
- Boxi Li led the updating of QuTiP's QIP support and the creation of
qutip_qip
.
Other members of the QuTiP Admin team have been heavily involved in reviewing,
testing and designing QuTiP 5:
- Alexander Pitchford
- Asier Galicia
- Nathan Shammah
- Shahnawaz Ahmed
- Neill Lambert
- Simon Cross
- Paul Menczel
Two Google Summer of Code contributors updated the tutorials and benchmarks to
QuTiP 5:
During an internship at RIKEN, Patrick Hopf created a new quantum control method and
improved the existing methods interface:
Four experimental data layers backends were written either as part of Google Summer
of Code or as separate projects. While these are still alpha quality, they helped
significantly to test the data layer API:
Finally, Yuji Tamakoshi updated the visualization function and added animation
functions as part of Google Summer of Code project.
We have also had many other contributors, whose specific contributions are
detailed below:
- Pieter Eendebak (updated the required SciPy to 1.5+, #1982)
- Pieter Eendebak (reduced import times by setting logger names, #1981)
- Pieter Eendebak (Allow scipy 1.12 to be used with qutip, #2354)
- Xavier Sproken (included C header files in the source distribution, #1971)
- Christian Staufenbiel (added support for multiple collapse operators to the Floquet solver, #1962)
- Christian Staufenbiel (fixed the basis used in the Floquet Master Equation solver, #1952)
- Christian Staufenbiel (allowed the
bloch_redfield_tensor
function to accept strings and callables for a_ops
, #1951)
- Christian Staufenbiel (Add a guide on Superoperators, Pauli Basis and Channel Contraction, #1984)
- Henrique Silvéro (allowed
qutip_qip
to be imported as qutip.qip
, #1920)
- Florian Hopfmueller (added a vastly improved implementations of
process_fidelity
and average_gate_fidelity
, #1712, #1748 , #1788)
- Felipe Bivort Haiek (fixed inaccuracy in docstring of the dense implementation of negation, #1608)
- Rajath Shetty (added support for specifying colors for individual points, vectors and states display by
qutip.Bloch
, #1335)
- Rochisha Agarwal (Add dtype to printed ouput of qobj, #2352)
- Kosuke Mizuno (Add arguments of plot_wigner() and plot_wigner_fock_distribution() to specify parameters for wigner(), #2057)
- Matt Ord (Only pre-compute density matrices if keep_runs_results is False, #2303)
- Daniel Moreno Galán (Add the possibility to customize point colors as in V4 and fix point plot behavior for 'l' style, #2303)
- Sola85 (Fixed simdiag not returning orthonormal eigenvectors, #2269)
- Edward Thomas (Fix LaTeX display of Qobj state in Jupyter cell outputs, #2272)
- Bogdan Reznychenko (Rework
kraus_to_choi
making it faster, #2284)
- gabbence95 (Fix typos in
expect
documentation, #2331)
- lklivingstone (Added repr to QobjEvo, #2111)
- Yuji Tamakoshi (Improve print(qutip.settings) by make it shorter, #2113)
- khnikhil (Added fermionic annihilation and creation operators, #2166)
- Daniel Weiss (Improved sampling algorithm for mcsolve, #2218)
- SJUW (Increase missing colorbar padding for matrix_histogram_complex() from 0 to 0.05, #2181)
- Valan Baptist Mathuranayagam (Changed qutip-notebooks to qutip-tutorials and fixed the typo in the link redirecting to the changelog section in the PR template, #2107)
- Gerardo Jose Suarez (Added information on sec_cutoff to the documentation, #2136)
- Cristian Emiliano Godinez Ramirez (Added inherited members to API doc of MESolver, SMESolver, SSESolver, NonMarkovianMCSolver, #2167)
- Andrey Rakhubovsky (Corrected grammar in Bloch-Redfield master equation documentation, #2174)
- Rushiraj Gadhvi (qutip.ipynbtools.version_table() can now be called without Cython installed, #2110)
- Harsh Khilawala (Moved HTMLProgressBar from qutip/ipynbtools.py to qutip/ui/progressbar.py, #2112)
- Avatar Srinidhi P V (Added new argument bc_type to take boundary conditions when creating QobjEvo, #2114)
- Andrey Rakhubovsky (Fix types in docstring of projection(), #2363)
Qobj changes
Previously Qobj
data was stored in a SciPy-like sparse matrix. Now the
representation is flexible. Implementations for dense and sparse formats are
included in QuTiP and custom implementations are possible. QuTiP's performance
on dense states and operators is significantly improved as a result.
Some highlights:
- The data is still acessible via the
.data
attribute, but is now an
instance of the underlying data type instead of a SciPy-like sparse matrix.
The operations available in qutip.core.data
may be used on .data
,
regardless of the data type.
Qobj
with different data types may be mixed in arithmetic and other
operations. A sensible output type will be automatically determined.
- The new
.to(...)
method may be used to convert a Qobj
from one data type
to another. E.g. .to("dense")
will convert to the dense representation and
.to("csr")
will convert to the sparse type.
- Many
Qobj
methods and methods that create Qobj
now accepted a dtype
parameter that allows the data type of the returned Qobj
to specified.
- The new
&
operator may be used to obtain the tensor product.
- The new
@
operator may be used to obtain the matrix / operator product.
bar @ ket
returns a scalar.
- The new
.contract()
method will collapse 1D subspaces of the dimensions of
the Qobj
.
- The new
.logm()
method returns the matrix logarithm of an operator.
- The methods
.set_data
, .get_data
, .extract_state
, .eliminate_states
,
.evaluate
and .check_isunitary
have been removed.
- The property
dtype
return the representation of the data used.
- The new
data_as
allow to obtain the data as a common python formats:
numpy array, scipy sparse matrix, JAX Array, etc.
QobjEvo changes
The QobjEvo
type for storing time-dependent quantum objects has been
significantly expanded, standardized and extended. The time-dependent
coefficients are now represented using a new Coefficient
type that
may be independently created and manipulated if required.
Some highlights:
- The
.compile()
method has been removed. Coefficients specified as
strings are automatically compiled if possible and the compilation is
cached across different Python runs and instances.
- Mixing coefficient types within a single
Qobj
is now supported.
- Many new attributes were added to
QobjEvo
for convenience. Examples
include .dims
, .shape
, .superrep
and .isconstant
.
- Many old attributes such as
.cte
, .use_cython
, .type
, .const
,
and .coeff_file
were removed.
- A new
Spline
coefficient supports spline interpolations of different
orders. The old Cubic_Spline
coefficient has been removed.
- The new
.arguments(...)
method allows additional arguments to the
underlying coefficient functions to be updated.
- The
_step_func_coeff
argument has been replaced by the order
parameter. _step_func_coeff=False
is equivalent to order=3
.
_step_func_coeff=True
is equivalent to order=0
. Higher values
of order
gives spline interpolations of higher orders.
- The spline type can take
bc_type
to control the boundary conditions.
- QobjEvo can be creating from the multiplication of a Qobj with a coefficient:
oper * qutip.coefficient(f, args=args)
is equivalent to
qutip.QobjEvo([[oper, f]], args=args)
.
- Coefficient function can be defined in a pythonic manner:
def f(t, A, w)
.
The dictionary args
second argument is no longer needed.
Function using the exact f(t, args)
signature will use the old method for
backward compatibility.
Solver changes
The sol...
Read more QuTiP 5.0.0b1 Features
- Create a Dimension class (#1996)
- Add arguments of plot_wigner() and plot_wigner_fock_distribution() to specify parameters for wigner(). (#2057, by Kosuke Mizuno)
- Restore feedback to solvers (#2210)
- Added mpi_pmap, which uses the mpi4py module to run computations in parallel through the MPI interface. (#2296, by Paul)
- Only pre-compute density matrices if keep_runs_results is False (#2303, by Matt Ord)
Bug Fixes
- Add the possibility to customize point colors as in V4 and fix point plot behavior for 'l' style (#1974, by Daniel Moreno Galán)
- Disabled broken "improved sampling" for
nm_mcsolve
. (#2234, by Paul)
- Fixed result objects storing a reference to the solver through options._feedback. (#2262, by Paul)
- Fixed simdiag not returning orthonormal eigenvectors. (#2269, by Sola85)
- Fix LaTeX display of Qobj state in Jupyter cell outputs (#2272, by Edward Thomas)
- Improved behavior of
parallel_map
and loky_pmap
in the case of timeouts, errors or keyboard interrupts (#2280, by Paul)
- Ignore deprecation warnings from cython 0.29.X in tests. (#2288)
- Fixed two problems with the steady_state() solver in the HEOM method. (#2333)
Miscellaneous
- Improve fidelity doc-string (#2257)
- Improve documentation in guide/dynamics (#2271)
- Improve states and operator parameters documentation. (#2289)
- Rework
kraus_to_choi
making it faster (#2284, by Bogdan Reznychenko)
- Remove Bloch3D: redundant to Bloch (#2306)
- Allow tests to run without matplotlib and ipython. (#2311)
- Add too small step warnings in fixed dt SODE solver (#2313)
- Add
dtype
to Qobj
and QobjEvo
(#2325)
- Fix typos in
expect
documentation (#2331, by gabbence95)
- Allow measurement functions to support degenerate operators. (#2342)
RetroSearch is an open source project built by @garambo
| Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4