Recent Releases of qutip

qutip - QuTiP 5.2.1

Features

  • Add tsit5 integration method (#2720)
  • Provided functionality to output Qobj eigenstates as a list of kets or an operator. (#2731, by Hrishikesh Belagali)

Bug Fixes

  • ENR dimension bugfix for when QobjEvo is multiplied by Coefficient (#2713, by ottosalmenkivi)
  • Use the common error definition in the homemade ODE solvers. (#2726) It used to compute rtol on the vector norm, now it's computed per element.
  • Fix a bug with histogram animation showing only one bar. (#2682, by Sneha Uppula)

Miscellaneous

  • Adapt to issues with Scipy 1.16 (#2711)
  • The Liouvillian no longer expects the Hamiltonian to be Hermitian. (#2658)
  • Various improvement for supporting plug-ins. (#2718, #2719, #2723)
  • It's no longer possible to use sparse (CSR, Dia) format for the state in solvers. (#2734)

- Python
Published by Ericgig 9 months ago

qutip - 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 "defaultdtypescope" 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 autotidyupdims 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)

- Python
Published by Ericgig 12 months ago

qutip - QuTiP 5.1.1

QuTiP 5.1.1

Patch to add support for scipy 1.15.

Features

  • qutip.cite() now cites the QuTiP 5 paper, https://arxiv.org/abs/2412.04705 (#2592).
  • Added QuTiP family package information to qutip.about(). (#2604)

Bug Fixes

  • Fix support for calculating the eigenstates of ENR operators (#2595).
  • Update various functions to use sphharmy when using scipy >= 1.15 (#2593).
  • Update mkl finding to support the 'emscripten' sys.platform. (#2606)

- Python
Published by Ericgig over 1 year ago

qutip - 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.addstates Clean-up of the code in Bloch.addstate Add Bloch.addarc and Bloch.addline 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 autorealcasting 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 NumpyBackendclass 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)

- Python
Published by Ericgig over 1 year ago

qutip - QuTiP 5.0.4

Micro release to add support for numpy 2.1

Bug Fixes

  • Fixed rounding error in dicketracefunction that resulted in negative eigenvalues. (#2466, by Andrey Nikitin)

- Python
Published by Ericgig over 1 year ago

qutip - 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

  • Add support for numpy 2 (#2421, #2457)
  • Add support for scipy 1.14 (#2469)

- Python
Published by AGaliciaMartinez almost 2 years ago

qutip - 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)

- Python
Published by Ericgig about 2 years ago

qutip - 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)

- Python
Published by ajgpitch about 2 years ago

qutip - 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

- Python
Published by Ericgig about 2 years ago

qutip - 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:

  • qutip-tensorflow: a TensorFlow backend by Asier Galicia (https://github.com/qutip/qutip-tensorflow)
  • qutip-cupy: a CuPy GPU backend by Felipe Bivort Haiek (https://github.com/qutip/qutip-cupy/)
  • qutip-tensornetwork: a TensorNetwork backend by Asier Galicia (https://github.com/qutip/qutip-tensornetwork)
  • qutip-jax: a JAX backend by Eric Giguère (https://github.com/qutip/qutip-jax/)

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 plotwigner() and plotwignerfockdistribution() to specify parameters for wigner(), #2057)
  • Matt Ord (Only pre-compute density matrices if keeprunsresults 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 matrixhistogramcomplex() 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 solvers in QuTiP have been heavily reworked and standardized. Under the hood solvers now make use of swappable ODE Integrators. Many Integrators are included (see the list below) and custom implementations are possible. Solvers now consistently accept a QobjEvo instance at the Hamiltonian or Liouvillian, or any object which can be passed to the QobjEvo constructor.

A breakdown of highlights follows.

All solvers:

  • Solver options are now supplied in an ordinary Python dict. qutip.Options is deprecated and returns a dict for backwards compatibility.
  • A specific ODE integrator may be selected by supplying a method option.
  • Each solver provides a class interface. Creating an instance of the class allows a solver to be run multiple times for the same system without having to repeatedly reconstruct the right-hand side of the ODE to be integrated.
  • A QobjEvo instance is accepted for most operators, e.g., H, c_ops, e_ops, a_ops.
  • The progress bar is now selected using the progress_bar option. A new progess bar using the tqdm Python library is provided.
  • Dynamic arguments, where the value of an operator depends on the current state of the evolution interface reworked. Now a property of the solver is to be used as an arguments: args={"state": MESolver.StateFeedback(default=rho0)}

Integrators:

  • The SciPy zvode integrator is available with the BDF and Adams methods as bdf and adams.
  • The SciPy dop853 integrator (an eighth order Runge-Kutta method by Dormand & Prince) is available as dop853.
  • The SciPy lsoda integrator is available as lsoda.
  • QuTiP's own implementation of Verner's "most efficient" Runge-Kutta methods of order 7 and 9 are available as vern7 and vern9. See http://people.math.sfu.ca/~jverner/ for a description of the methods.
  • QuTiP's own implementation of a solver that directly diagonalizes the the system to be integrated is available as diag. It only works on time-independent systems and is slow to setup, but once the diagonalization is complete, it generates solutions very quickly.
  • QuTiP's own implementatoin of an approximate Krylov subspace integrator is available as krylov. This integrator is only usable with sesolve.

Result class:

  • A new .e_data attribute provides expectation values as a dictionary. Unlike .expect, the values are provided in a Python list rather than a numpy array, which better supports non-numeric types.
  • The contents of the .stats attribute changed significantly and is now more consistent across solvers.

Monte-Carlo Solver (mcsolve):

  • The system, H, may now be a super-operator.
  • The seed parameter now supports supplying numpy SeedSequence or Generator types.
  • The new timeout and target_tol parameters allow the solver to exit early if a timeout or target tolerance is reached.
  • The ntraj option no longer supports a list of numbers of trajectories. Instead, just run the solver multiple times and use the class MCSolver if setting up the solver uses a significant amount of time.
  • The map_func parameter has been replaced by the map option.
  • A loky based parallel map as been added.
  • A mpi based parallel map as been added.
  • The result returned by mcsolve now supports calculating photocurrents and calculating the steady state over N trajectories.
  • The old parfor parallel execution function has been removed from qutip.parallel. Use parallel_map, loky_map or mpi_pmap instead.
  • Added improved sampling options which converge much faster when the probability of collapse is small.

Non Markovian Monte-Carlo Solver (nm_mcsolve):

  • New Monte-Carlo Solver supporting negative decay rates.
  • Based on the influence martingale approach, Donvil et al., Nat Commun 13, 4140 (2022).
  • Most of the improvements made to the regular Monte-Carlo solver are also available here.
  • The value of the influence martingale is available through the .trace attribute of the result.

Stochastic Equation Solvers (ssesolve, smesolve)

  • Function call greatly changed: many keyword arguments are now options.
  • mops and dWfactors are now changed from the default from the new class interface only.
  • Use the same parallel maps as mcsolve: support for loky and mpi map added.
  • End conditions timeout and target_tol added.
  • The seed parameter now supports supplying numpy SeedSequence.
  • Wiener function is now available as a feedback.

Bloch-Redfield Master Equation Solver (brmesolve):

  • The a_ops and spectra support implementations been heavily reworked to reuse the techniques from the new Coefficient and QobjEvo classes.
  • The use_secular parameter has been removed. Use sec_cutoff=-1 instead.
  • The required tolerance is now read from qutip.settings.

Krylov Subspace Solver (krylovsolve):

  • The Krylov solver is now implemented using SESolver and the krylov ODE integrator. The function krylovsolve is maintained for convenience and now supports many more options.
  • The sparse parameter has been removed. Supply a sparse Qobj for the Hamiltonian instead.

Floquet Solver (fsesolve and fmmesolve):

  • The Floquet solver has been rewritten to use a new FloquetBasis class which manages the transformations from lab to Floquet basis and back.
  • Many of the internal methods used by the old Floquet solvers have been removed. The Floquet tensor may still be retried using the function floquet_tensor.
  • The Floquet Markov Master Equation solver has had many changes and new options added. The environment temperature may be specified using w_th, and the result states are stored in the lab basis and optionally in the Floquet basis using store_floquet_state.
  • The spectra functions supplied to fmmesolve must now be vectorized (i.e. accept and return numpy arrays for frequencies and densities) and must accept negative frequence (i.e. usually include a w > 0 factor so that the returned densities are zero for negative frequencies).
  • The number of sidebands to keep, kmax may only be supplied when using the FMESolver
  • The Tsteps parameter has been removed from both fsesolve and fmmesolve. The precompute option to FloquetBasis may be used instead.

Evolution of State Solver (essovle):

  • The function essolve has been removed. Use the diag integration method with sesolve or mesolve instead.

Steady-state solvers (steadystate module):

  • The method parameter and solver parameters have been separated. Previously they were mixed together in the method parameter.
  • The previous options are now passed as parameters to the steady state solver and mostly passed through to the underlying SciPy functions.
  • The logging and statistics have been removed.

Correlation functions (correlation module):

  • A new correlation_3op function has been added. It supports MESolver or BRMESolver.
  • The correlation, correlation_4op, and correlation_ss functions have been removed.
  • Support for calculating correlation with mcsolve has been removed.

Propagators (propagator module):

  • A class interface, qutip.Propagator, has been added for propagators.
  • Propagation of time-dependent systems is now supported using QobjEvo.
  • The unitary_mode and parallel options have been removed.

Correlation spectra (spectrum module):

  • The functions spectrum_ss and spectrum_pi have been removed and are now internal functions.
  • The use_pinv parameter for spectrum has been removed and the functionality merged into the solver parameter. Use solver="pi" instead.

Hierarchical Equation of Motion Solver (HEOM)

  • Updated the solver to use the new QuTiP integrators and data layer.
  • Updated all the HEOM tutorials to QuTiP 5.
  • Added support for combining bosonic and fermionic baths.
  • Sped up the construction of the RHS of the HEOM solver by a factor of 4x.
  • As in QuTiP 4, the HEOM supports arbitrary spectral densities, bosonic and fermionic baths, Páde and Matsubara expansions of the correlation functions, calculating the Matsubara terminator and inspection of the ADOs (auxiliary density operators).

QuTiP core

There have been numerous other small changes to core QuTiP features:

  • qft(...) the function that returns the quantum Fourier transform operator was moved from qutip.qip.algorithm into qutip.
  • The Bloch-Redfield solver tensor, brtensor, has been moved into qutip.core. See the section above on the Bloch-Redfield solver for details.
  • The functions mat2vec and vec2mat for transforming states to and from super-operator states have been renamed to stack_columns and unstack_columns.
  • The function liouvillian_ref has been removed. Used liouvillian instead.
  • The superoperator transforms super_to_choi, choi_to_super, choi_to_kraus, choi_to_chi and chi_to_choi have been removed. Used to_choi, to_super, to_kraus and to_chi instead.
  • All of the random object creation functions now accepted a numpy Generator as a seed.
  • The dims parameter of all random object creation functions has been removed. Supply the dimensions as the first parameter if explicit dimensions are required.
  • The function rand_unitary_haar has been removed. Use rand_unitary(distribution="haar") instead.
  • The functions rand_dm_hs and rand_dm_ginibre have been removed. Use rand_dm(distribution="hs") and rand_dm(distribution="ginibre") instead.
  • The function rand_ket_haar has been removed. Use rand_ket(distribution="haar") instead.
  • The measurement functions have had the target parameter for expanding the measurement operator removed. Used expand_operator to expand the operator instead.
  • qutip.Bloch now supports applying colours per-point, state or vector in add_point, add_states, and add_vectors.
  • Dimensions use a class instead of layered lists.
  • Allow measurement functions to support degenerate operators.
  • Add qeye_like and qzero_like.
  • Added fermionic annihilation and creation operators.

QuTiP settings

Previously qutip.settings was an ordinary module. Now qutip.settings is an instance of a settings class. All the runtime modifiable settings for core operations are in qutip.settings.core. The other settings are not modifiable at runtime.

  • Removed load. reset and save functions.
  • Removed .debug, .fortran, .openmp_thresh.
  • New .compile stores the compilation options for compiled coefficients.
  • New .core["rtol"] core option gives the default relative tolerance used by QuTiP.
  • The absolute tolerance setting .atol has been moved to .core["atol"].

Visualization

  • Added arguments to plot_wigner and plot_wigner_fock_distribution to specify parameters for wigner.
  • Removed Bloch3D. The same functionality is provided by Bloch.
  • Added fig, ax and cmap keyword arguments to all visualization functions.
  • Most visualization functions now respect the colorblind_safe setting.
  • Added new functions to create animations from a list of Qobj or directly from solver results with saved states.

Package reorganization

  • qutip.qip has been moved into its own package, qutip-qip. Once installed, qutip-qip is available as either qutip.qip or qutip_qip. Some widely useful gates have been retained in qutip.gates.
  • qutip.control has been moved to qutip-qtrl and once installed qutip-qtrl is available as either qutip.control or qutip_qtrl. Note that quitp_qtrl is provided primarily for backwards compatibility. Improvements to optimal control will take place in the new qutip_qoc package.
  • qutip.lattice has been moved into its own package, qutip-lattice. It is available from <https://github.com/qutip/qutip-lattice>.
  • qutip.sparse has been removed. It contained the old sparse matrix representation and is replaced by the new implementation in qutip.data.
  • qutip.piqs functions are no longer available from the qutip namespace. They are accessible from qutip.piqs instead.

Miscellaneous

  • Support has been added for 64-bit integer sparse matrix indices, allowing sparse matrices with up to 2**63 rows and columns. This support needs to be enabled at compilation time by calling setup.py and passing --with-idxint-64.

Feature removals

  • Support for OpenMP has been removed. If there is enough demand and a good plan for how to organize it, OpenMP support may return in a future QuTiP release.
  • The qutip.parfor function has been removed. Use qutip.parallel_map instead.
  • qutip.graph has been removed and replaced by SciPy's graph functions.
  • qutip.topology has been removed. It contained only one function berry_curvature.
  • The ~/.qutip/qutiprc config file is no longer supported. It contained settings for the OpenMP support.
  • Deprecate three_level_atom
  • Deprecate orbital

Changes from QuTiP 5.0.0b1:

Features

  • Add dtype to printed ouput of qobj (#2352 by Rochisha Agarwal)

Miscellaneous

  • Allow scipy 1.12 to be used with qutip. (#2354 by Pieter Eendebak)

- Python
Published by Ericgig about 2 years ago

qutip - QuTiP 5.0.0b1

Features

  • Create a Dimension class (#1996)
  • Add arguments of plotwigner() and plotwignerfockdistribution() 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 keeprunsresults 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)

- Python
Published by Ericgig about 2 years ago

qutip - QuTiP 4.7.5

The is a patch for QuTiP 4.7.X to support scipy 1.12.

Bug Fixes

  • Remove use of scipy. in parallel.py, incompatible with scipy==1.12 (#2305 by Evan McKinney)

- Python
Published by Ericgig over 2 years ago

qutip - QuTiP 4.7.4

This is a bugfix release for QuTiP 4.7.X.

Bug Fixes

  • Adapt to deprecation from matplotlib 3.8 (#2243, reported by Bogdan Reznychenko)
  • Fix name of temp files for removal after use. (#2251, reported by Qile Su)
  • Avoid integer overflow in Qobj creation. (#2252, reported by KianHwee-Lim)
  • Ignore DeprecationWarning from pyximport (#2287)
  • Add partial support and tests for python 3.12. (#2294)

Miscellaneous

  • Rework choi_to_kraus, making it rely on an eigenstates solver that can choose eigh if the Choi matrix is Hermitian, as it is more numerically stable. (#2276, by Bogdan Reznychenko)
  • Rework kraus_to_choi, making it faster (#2283, by Bogdan Reznychenko and Rafael Haenel)

- Python
Published by Ericgig over 2 years ago

qutip - QuTiP 5.0.0a2

This is a pre-release.

Continuation of the QuTiP 5 redesign.

It include fixing bugs and polishing features introduced in the alpha 1 release, updated stochastic solvers, a new solver: nm_mcsolve and animation functions.

Features

  • Add support for different spectra types for blochredfieldtensor (#1951)
  • Improve qutip import times by setting logger names explicitly. (#1981, by Pieter Eendebak)
  • Change the order of parameters in expand_operator (#1991)
  • Add svn and solve to dispatched (#2002)
  • Added nm_mcsolve to provide support for Monte-Carlo simulations of master equations with possibly negative rates. The method implemented here is described in arXiv:2209.08958 [quant-ph]. (#2070 by pmenczel)
  • Add support for combining bosinic and fermionic HEOM baths (#2089)
  • Added repr to QobjEvo (#2111 by lklivingstone)
  • Improve print(qutip.settings) by make it shorter (#2113 by tamakoshi2001)
  • Create the traceoperket operation (#2126)
  • Speed up the construction of the RHS of the HEOM solver by a factor of 4x by converting the final step to Cython. (#2128)
  • Rewrite the stochastic solver to use the v5 solver interface. (#2131)
  • Add Qobj.get to extract underlying data in original format. (#2141)
  • Add qeyelike and qzerolike (#2153)
  • Add capacity to dispatch on Data (#2157)
  • Added fermionic annihilation and creation operators. (#2166 by khnikhil)
  • Changed arguments and applied colorblind_safe to functions in visualization.py (#2170 by Yuji Tamakoshi)
  • Changed arguments and applied colorblindsafe to plotwignersphere and matrixhistogram in visualization.py (#2193 by Yuji Tamakoshi)
  • Added Dia data layer which represents operators as multi-diagonal matrices. (#2196)
  • Added support for animated plots. (#2203 by Yuji Tamakoshi)
  • Improved sampling algorithm for mcsolve (#2218 by Daniel Weiss)
  • Added support for early termination of map functions. (#2222)

Bug Fixes

  • Add missing state transformation to floquetmarkovmesolve (#1952 by christian512)
  • Added default _isherm value (True) for momentum and position operators. (#2032 by Asier Galicia)
  • Changed qutip-notebooks to qutip-tutorials and fixed the typo in the link redirecting to the changelog section in the PR template. (#2107 by Valan Baptist Mathuranayagam)
  • Increase missing colorbar padding for matrixhistogramcomplex() from 0 to 0.05. (#2181 by SJUW)
  • Raise error on insufficient memory. (#2224)
  • Fixed fallback to fsesolve call in fmmesolve (#2225)

Removals

  • Remove qutip.control and replace with qutip_qtrl. (#2116)
  • Deleted _solve in countstat.py and used _data.solve. (#2120 by Yuji Tamakoshi)
  • Deprecate threelevelatom (#2221)
  • Deprecate orbital (#2223)

Documentation

  • Add a guide on Superoperators, Pauli Basis and Channel Contraction. (#1984 by christian512)
  • Added information on sec_cutoff to the documentation (#2136 by Gerardo Jose Suarez)
  • Added inherited members to API doc of MESolver, SMESolver, SSESolver, NonMarkovianMCSolver (#2167 by Cristian Emiliano Godinez Ramirez)
  • Corrected grammar in Bloch-Redfield master equation documentation (#2174 by Andrey Rakhubovsky)

Miscellaneous

  • Update scipy version requirement to 1.5+ (#1982 by Pieter Eendebak)
  • Added all to qutip/measurements.py and qutip/core/semidefinite.py (#2103 by Rushiraj Gadhvi)
  • Restore towncrier check (#2105)
  • qutip.ipynbtools.version_table() can now be called without Cython installed (#2110 by Rushiraj Gadhvi)
  • Moved HTMLProgressBar from qutip/ipynbtools.py to qutip/ui/progressbar.py (#2112 by Harsh Khilawala)
  • Added new argument bc_type to take boundary conditions when creating QobjEvo (#2114 by Avatar Srinidhi P V )
  • Remove Windows build warning suppression. (#2119)
  • Optimize dispatcher by dispatching on positional only args. (#2135)
  • Clean semidefinite (#2138)
  • Migrate transfertensor.py to solver (#2142)
  • Add a test for progress_bar (#2150)
  • Enable cython 3 (#2151)
  • Added tests for visualization.py (#2192 by Yuji Tamakoshi)
  • Sorted arguments of sphereplot so that the order is similar to those of plotspindistribution (#2219 by Yuji Tamakoshi)

- Python
Published by Ericgig over 2 years ago

qutip - QuTiP 4.7.3

This is a bugfix release for QuTiP 4.7.X.

Bug Fixes

  • Non-oper qobj + scalar raise an error. (#2208 reported by vikramkashyap)
  • Fixed issue where extractstates did not preserve hermiticity. Fixed issue where randherm did not set the private attribute _isherm to True. (#2214 by AGaliciaMartinez)
  • ssesolve average states to density matrices (#2216 reported by BenjaminDAnjou)

Miscellaneous

  • Exclude cython 3.0.0 from requirement (#2204)
  • Run in no cython mode with cython >=3.0.0 (#2207)

- Python
Published by Ericgig almost 3 years ago

qutip - QuTiP 4.7.2

This is a bugfix release for QuTiP 4.7.X. It adds support for numpy 1.25 and scipy 1.11.

Bug Fixes - Fix setting of sso.mops in heterodyne smesolver and passing through of scops to photocurrent solver. (#2081 by Bogdan Reznychenko and Simon Cross) - Update calls to SciPy eigvalsh and eigsh to pass the range of eigenvalues to return using subset_by_index=. (#2081 by Simon Cross) - Fixed bug where some matrices were wrongly found to be hermitian. (#2082 by AGaliciaMartinez)

Miscellaneous - Fixed typo in stochastic.py (#2049, by eltociear) - ptrace always return density matrix (#2185, issue by udevd) - mesolve can support mixed callable and Qobj for e_ops (#2184 issue by balopat)

- Python
Published by Ericgig almost 3 years ago

qutip - QuTiP 5.0.0a1

This is a pre-release.

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.

Any 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

Two Google Summer of Code contributors updated the tutorials and benchmarks to QuTiP 5:

  • Christian Staufenbiel updated many of the tutorials (https://github.com/qutip/qutip-tutorials/).
  • Xavier Sproken update the benchmarks (https://github.com/qutip/qutip-benchmark/).

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, the helped significantly to test the data layer API:

  • qutip-tensorflow: a TensorFlow backend by Asier Galicia (https://github.com/qutip/qutip-tensorflow)
  • qutip-cupy: a CuPy GPU backend by Felipe Bivort Haiek (https://github.com/qutip/qutip-cupy)
  • qutip-tensornetwork: a TensorNetwork backend by Asier Galicia (https://github.com/qutip/qutip-tensornetwork)
  • qutip-jax: a JAX backend by Eric Giguère (https://github.com/qutip/qutip-jax)

We have also had many other contributors, whose specific contributions are detailed below:

  • Pieter Eendebak (updated the required SciPy to 1.4+, #1982).
  • Pieter Eendebak (reduced import times by setting logger names, #1981)
  • 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)
  • 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)

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.

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.

Solver changes

The solvers in QuTiP have been heavily reworked and standardized. Under the hood solvers now make use of swappable ODE Integrators. Many Integrators are included (see the list below) and custom implementations are possible. Solvers now consistently accept a QobjEvo instance at the Hamiltonian or Liouvillian, or any object which can be passed to the QobjEvo constructor.

A breakdown of highlights follows.

All solvers:

  • Solver options are now supplied in an ordinary Python dict. qutip.Options is deprecated and returns a dict for backwards compatibility.
  • A specific ODE integrator may be selected by supplying a method option.
  • Each solver provides a class interface. Creating an instance of the class allows a solver to be run multiple times for the same system without having to repeatedly reconstruct the right-hand side of the ODE to be integrated.
  • A QobjEvo instance is accepted for most operators, e.g., H, c_ops, e_ops, a_ops.
  • The progress bar is now selected using the progress_bar option. A new progess bar using the tqdm Python library is provided.
  • Dynamic arguments, where the value of an operator depends on the current state of the evolution, have been removed. They may be re-implemented later if there is demand for them.

Integrators:

  • The SciPy zvode integrator is available with the BDF and Adams methods as bdf and adams.
  • The SciPy dop853 integrator (an eighth order Runge-Kutta method by Dormand & Prince) is available as dop853.
  • The SciPy lsoda integrator is available as lsoda.
  • QuTiP's own implementation of Verner's "most efficient" Runge-Kutta methods of order 7 and 9 are available as vern7 and vern9. See http://people.math.sfu.ca/~jverner/ for a description of the methods.
  • QuTiP's own implementation of a solver that directly diagonalizes the the system to be integrated is available as diag. It only works on time-independent systems and is slow to setup, but once the diagonalization is complete, it generates solutions very quickly.
  • QuTiP's own implementatoin of an approximate Krylov subspace integrator is available as krylov. This integrator is only usable with sesolve.

Result class:

  • A new .e_data attribute provides expectation values as a dictionary. Unlike .expect, the values are provided in a Python list rather than a numpy array, which better supports non-numeric types.
  • The contents of the .stats attribute changed significantly and is now more consistent across solvers.

Monte-Carlo Solver (mcsolve):

  • The system, H, may now be a super-operator.
  • The seed parameter now supports supplying numpy SeedSequence or Generator types.
  • The new timeout and target_tol parameters allow the solver to exit early if a timeout or target tolerance is reached.
  • The ntraj option no longer supports a list of numbers of trajectories. Instead, just run the solver multiple times and use the class MCSolver if setting up the solver uses a significant amount of time.
  • The map_func parameter has been replaced by the map option. In addition to the existing serial and parallel values, the value loky may be supplied to use the loky package to parallelize trajectories.
  • The result returned by mcsolve now supports calculating photocurrents and calculating the steady state over N trajectories.
  • The old parfor parallel execution function has been removed from qutip.parallel. Use parallel_map or loky_map instead.

Bloch-Redfield Master Equation Solver (brmesolve):

  • The a_ops and spectra support implementaitons been heavily reworked to reuse the techniques from the new Coefficient and QobjEvo classes.
  • The use_secular parameter has been removed. Use sec_cutoff=-1 instead.
  • The required tolerance is now read from qutip.settings.

Krylov Subspace Solver (krylovsolve):

  • The Krylov solver is now implemented using SESolver and the krylov ODE integrator. The function krylovsolve is maintained for convenience and now supports many more options.
  • The sparse parameter has been removed. Supply a sparse Qobj for the Hamiltonian instead.

Floquet Solver (fsesolve and fmmesolve):

  • The Floquet solver has been rewritten to use a new FloquetBasis class which manages the transformations from lab to Floquet basis and back.
  • Many of the internal methods used by the old Floquet solvers have been removed. The Floquet tensor may still be retried using the function floquet_tensor.
  • The Floquet Markov Master Equation solver has had many changes and new options added. The environment temperature may be specified using w_th, and the result states are stored in the lab basis and optionally in the Floquet basis using store_floquet_state.
  • The spectra functions supplied to fmmesolve must now be vectorized (i.e. accept and return numpy arrays for frequencies and densities) and must accept negative frequence (i.e. usually include a w > 0 factor so that the returned densities are zero for negative frequencies).
  • The number of sidebands to keep, kmax may only be supplied when using the FMESolver
  • The Tsteps parameter has been removed from both fsesolve and fmmesolve. The precompute option to FloquetBasis may be used instead.

Evolution of State Solver (essovle):

  • The function essolve has been removed. Use the diag integration method with sesolve or mesolve instead.

Steady-state solvers (steadystate module):

  • The method parameter and solver parameters have been separated. Previously they were mixed together in the method parameter.
  • The previous options are now passed as parameters to the steady state solver and mostly passed through to the underlying SciPy functions.
  • The logging and statistics have been removed.

Correlation functions (correlation module):

  • A new correlation_3op function has been added. It supports MESolver or BRMESolver.
  • The correlation, correlation_4op, and correlation_ss functions have been removed.
  • Support for calculating correlation with mcsolve has been removed.

Propagators (propagator module):

  • A class interface, qutip.Propagator, has been added for propagators.
  • Propagation of time-dependent systems is now supported using QobjEvo.
  • The unitary_mode and parallel options have been removed.

Correlation spectra (spectrum module):

  • The functions spectrum_ss and spectrum_pi have been removed and are now internal functions.
  • The use_pinv parameter for spectrum has been removed and the functionality merged into the solver parameter. Use solver="pi" instead.

QuTiP core

There have been numerous other small changes to core QuTiP features:

  • qft(...) the function that returns the quantum Fourier transform operator was moved from qutip.qip.algorithm into qutip.
  • The Bloch-Redfield solver tensor, brtensor, has been moved into qutip.core. See the section above on the Bloch-Redfield solver for details.
  • The functions mat2vec and vec2mat for transforming states to and from super-operator states have been renamed to stack_columns and unstack_columns.
  • The function liouvillian_ref has been removed. Used liouvillian instead.
  • The superoperator transforms super_to_choi, choi_to_super, choi_to_kraus, choi_to_chi and chi_to_choi have been removed. Used to_choi, to_super, to_kraus and to_chi instead.
  • All of the random object creation functions now accepted a numpy Generator as a seed.
  • The dims parameter of all random object creation functions has been removed. Supply the dimensions as the first parameter if explicit dimensions are required.
  • The function rand_unitary_haar has been removed. Use rand_unitary(distribution="haar") instead.
  • The functions rand_dm_hs and rand_dm_ginibre have been removed. Use rand_dm(distribution="hs") and rand_dm(distribution="ginibre") instead.
  • The function rand_ket_haar has been removed. Use rand_ket(distribution="haar") instead.
  • The measurement functions have had the target parameter for expanding the measurement operator removed. Used expand_operator to expand the operator instead.
  • qutip.Bloch now supports applying colours per-point, state or vector in add_point, add_states, and add_vectors.

QuTiP settings

Previously qutip.settings was an ordinary module. Now qutip.settings is an instance of a settings class. All the runtime modifiable settings for core operations are in qutip.settings.core. The other settings are not modifiable at runtime.

  • Removed load. reset and save functions.
  • Removed .debug, .fortran, .openmp_thresh.
  • New .compile stores the compilation options for compiled coefficients.
  • New .core["rtol"] core option gives the default relative tolerance used by QuTiP.
  • The absolute tolerance setting .atol has been moved to .core["atol"].

Package reorganization

  • qutip.qip has been moved into its own package, qutip-qip. Once installed, qutip-qip is available as either qutip.qip or qutip_qip. Some widely useful gates have been retained in qutip.gates.
  • qutip.lattice has been moved into its own package, qutip-lattice. It is available from <https://github.com/qutip/qutip-lattice>.
  • qutip.sparse has been removed. It contained the old sparse matrix representation and is replaced by the new implementation in qutip.data.
  • qutip.piqs functions are no longer available from the qutip namespace. They are accessible from qutip.piqs instead.

Miscellaneous

  • Support has been added for 64-bit integer sparse matrix indices, allowing sparse matrices with up to 2**63 rows and columns. This support needs to be enabled at compilation time by calling setup.py and passing --with-idxint-64.

Feature removals

  • Support for OpenMP has been removed. If there is enough demand and a good plan for how to organize it, OpenMP support may return in a future QuTiP release.
  • The qutip.parfor function has been removed. Use qutip.parallel_map instead.
  • qutip.graph has been removed and replaced by SciPy's graph functions.
  • qutip.topology has been removed. It contained only one function berry_curvature.
  • The ~/.qutip/qutiprc config file is no longer supported. It contained settings for the OpenMP support.

- Python
Published by hodgestar over 3 years ago

qutip - QuTiP 4.7.1

This is a bugfix release for QuTiP 4.7.X. In addition to the minor fixes listed below, the release adds builds for Python 3.11 and support for packaging 22.0.

Features

  • Improve qutip import times by setting logger names explicitly. (#1980 by Pieter Eendebak)

Bug Fixes

  • Change floquetmasterequation_rates(...) to use an adaptive number of time steps scaled by the number of sidebands, kmax. (#1961 by Christian Staufenbiel)
  • Change fidelity(A, B) to use the reduced fidelity formula for pure states which is more numerically efficient and accurate. (#1964 by Pierre Guilmin)
  • Change brmesolve to raise an exception when ode integration is not successful. (#1966 by Eric Giguère)
  • Backport fix for IPython helper Bloch.reprsvg_ from dev.major. Previously the print_figure function returned bytes, but since ipython/ipython#5452 (in 2014) it returns a Unicode string. This fix updates QuTiP's helper to match. (#1970 by Asier Galicia)
  • Fix correlation for case where only the collapse operators are time dependent. (#1979 by Eric Giguère)
  • Fix the hinton visualization method to plot the matrix instead of its transpose. (#2011 by Pierre Guilmin)
  • Fix the hinton visualization method to take into account all the matrix coefficients to set the squares scale, instead of only the diagonal coefficients. (#2012 Pierre Guilmin)
  • Fix parsing of package versions in setup.py to support packaging 22.0. (#2037 by Simon Cross)
  • Add back .qu suffix to objects saved with qsave and loaded with qload. The suffix was accidentally removed in QuTiP 4.7.0. (#2038 by Simon Cross)
  • Add a default max_step to processors. (#2040 by Boxi Li)

Documentation

  • Add towncrier for managing the changelog. (#1927 by Trent Fridey)
  • Update the version of numpy used to build documentation to 1.22.0. (#1940 via dependabot)
  • Clarify returned objects from blochredfieldtensor(). (#1950 by Christian Staufenbiel)
  • Update Floquet Markov solver docs. (#1958 by Christian Staufenbiel)
  • Update the roadmap and ideas to show completed work as of August 2022. (#1967 by Simon Cross)

Miscellaneous

  • Return TypeError instead of Exception for type error in sesolve argument. (#1942 by Pieter Eendebak)
  • Add towncrier draft build of changelog to CI tests. (#1946 by Simon Cross)
  • Add Python 3.11 to builds. (#2041 by Simon Cross)
  • Simplify version parsing by using packaging.version.Version. (#2043 by Simon Cross)
  • Update builds to use cibuildwheel 2.11, and to build with manylinux2014 on Python 3.8 and 3.9, since numpy and SciPy no longer support manylinux2010 on those versions of Python. (#2047 by Simon Cross)

- Python
Published by hodgestar over 3 years ago

qutip - QuTiP 4.7.0

This release sees the addition of two new solvers -- qutip.krylovsolve based on the Krylov subspace approximation and qutip.nonmarkov.heom that reimplements the BoFiN HEOM solver.

Bloch sphere rendering gained support for drawing arcs and lines on the sphere, and for setting the transparency of rendered points and vectors, Hinton plots gained support for specifying a coloring style, and matrix histograms gained better default colors and more flexible styling options.

Other significant improvements include better scaling of the Floquet solver, support for passing Path objects when saving and loading files, support for passing callable functions as e_ops to mesolve and sesolve, and faster state number enumeration and Husimi Q functions.

Import bugfixes include some bugs affecting plotting with matplotlib 3.5 and fixing support for qutrits (and other non-qubit) quantum circuits.

The many other small improvements, bug fixes, documentation enhancements, and behind the scenese development changes are included in the list below.

QuTiP 4.7.X will be the last series of releases for QuTiP 4. Patch releases will continue for the 4.7.X series but the main development effort will move to QuTiP 5.

The many, many contributors who filed issues, submitted or reviewed pull requests, and improved the documentation for this release are listed next to their contributions below. Thank you to all of you.

Improvements

  • MAJOR Added krylovsolve as a new solver based on krylov subspace approximation. (#1739 by Emiliano Fortes)
  • MAJOR Imported BoFiN HEOM (https://github.com/tehruhn/bofin/) into QuTiP and replaced the HEOM solver with a compatibility wrapper around BoFiN bosonic solver. (#1601, #1726, and #1724 by Simon Cross, Tarun Raheja and Neill Lambert)
  • MAJOR Added support for plotting lines and arcs on the Bloch sphere. (#1690 by Gaurav Saxena, Asier Galicia and Simon Cross)
  • Added transparency parameter to the addpoint, addvector and add_states methods in the Bloch and Bloch3d classes. (#1837 by Xavier Spronken)
  • Support Path objects in qutip.fileio. (#1813 by Adrià Labay)
  • Improved the weighting in steadystate solver, so that the default weight matches the documented behaviour and the dense solver applies the weights in the same manner as the sparse solver. (#1275 and #1802 by NS2 Group at LPS and Simon Cross)
  • Added a color_style option to the hinton plotting function. (#1595 by Cassandra Granade)
  • Improved the scaling of floquet_master_equation_rates and floquet_master_equation_tensor and fixed transposition and basis change errors in floquet_master_equation_tensor and floquet_markov_mesolve. (#1248 by Camille Le Calonnec, Jake Lishman and Eric Giguère)
  • Removed linspace_with and view_methods from qutip.utilities. For the former it is far better to use numpy.linspace and for the later Python's in-built help function or other tools. (#1680 by Eric Giguère)
  • Added support for passing callable functions as e_ops to mesolve and sesolve. (#1655 by Marek Narożniak)
  • Added the function steadystate_floquet, which returns the "effective" steadystate of a periodic driven system. (#1660 by Alberto Mercurio)
  • Improved mcsolve memory efficiency by not storing final states when they are not needed. (#1669 by Eric Giguère)
  • Improved the default colors and styling of matrix_histogram and provided additional styling options. (#1573 and #1628 by Mahdi Aslani)
  • Sped up state_number_enumerate, state_number_index, state_index_number, and added some error checking. enr_state_dictionaries now returns a list for idx2state. (#1604 by Johannes Feist)
  • Added new Husimi Q algorithms, improving the speed for density matrices, and giving a near order-of-magnitude improvement when calculating the Q function for many different states, using the new qutip.QFunc class, instead of the qutip.qfunc function. (#934 and #1583 by Daniel Weigand and Jake Lishman)
  • Updated licence holders with regards to new governance model, and remove extraneous licensing information from source files. (#1579 by Jake Lishman)
  • Removed the vendored copy of LaTeX's qcircuit package which is GPL licensed. We now rely on the package being installed by user. It is installed by default with TexLive. (#1580 by Jake Lishman)
  • The signatures of randket and randket_haar were changed to allow N (the size of the random ket) to be determined automatically when dims are specified. (#1509 by Purva Thakre)

Bug Fixes

  • Fix circuit index used when plotting circuits with non-reversed states. (#1847 by Christian Staufenbiel)
  • Changed implementation of qutip.orbital to use scipy.special.spy_harm to remove bugs in angle interpretation. (#1844 by Christian Staufenbiel)
  • Fixed QobjEvo.tidyup to use settings.auto_tidyup_atol when removing small elements in sparse matrices. (#1832 by Eric Giguère)
  • Ensured that tidyup's default tolerance is read from settings at each call. (#1830 by Eric Giguère)
  • Fixed scipy.sparse deprecation warnings raised by qutip.fast_csr_matrix. (#1827 by Simon Cross)
  • Fixed rendering of vectors on the Bloch sphere when using matplotlib 3.5 and above. (#1818 by Simon Cross)
  • Fixed the displaying of Lattice1d instances and their unit cells. Previously calling them raised exceptions in simple cases. (#1819, #1697 and #1702 by Simon Cross and Saumya Biswas)
  • Fixed the displaying of the title for hinton and matrix_histogram plots when a title is given. Previously the supplied title was not displayed. (#1707 by Vladimir Vargas-Calderón)
  • Removed an incorrect check on the initial state dimensions in the QubitCircuit constructor. This allows, for example, the construction of qutrit circuits. (#1807 by Boxi Li)
  • Fixed the checking of method and offset parameters in coherent and coherent_dm. (#1469 and #1741 by Joseph Fox-Rabinovitz and Simon Cross)
  • Removed the Hamiltonian saved in the sesolve solver results. (#1689 by Eric Giguère)
  • Fixed a bug in randherm with ``posdef=Trueanddensity>0.5`` where the diagonal was incorrectly filled. (#1562 by Eric Giguère)

Documentation Improvements

  • Added contributors image to the documentation. (#1828 by Leonard Assis)
  • Fixed the Theory of Quantum Information bibliography link. (#1840 by Anto Luketina)
  • Fixed minor grammar errors in the dynamics guide. (#1822 by Victor Omole)
  • Fixed many small documentation typos. (#1569 by Ashish Panigrahi)
  • Added Pulser to the list of libraries that use QuTiP. (#1570 by Ashish Panigrahi)
  • Corrected typo in the states and operators guide. (#1567 by Laurent Ajdnik)
  • Converted http links to https. (#1555 by Jake Lishamn)

Developer Changes

  • Add GitHub actions test run on windows-latest. (#1853 and #1855 by Simon Cross)
  • Bumped the version of pillow used to build documentation from 9.0.0 to 9.0.1. (#1835 by dependabot)
  • Migrated the qutip.superop_reps tests to pytest. (#1825 by Felipe Bivort Haiek)
  • Migrated the qutip.steadystates tests to pytest. (#1679 by Eric Giguère)
  • Changed the README.md CI badge to the GitHub Actions badge. (#1581 by Jake Lishman)
  • Updated CodeClimate configuration to treat our Python source files as Python 3. (#1577 by Jake Lishman)
  • Reduced cyclomatic complexity in qutip._mkl. (#1576 by Jake Lishman)
  • Fixed PEP8 warnings in qutip.control, qutip.mcsolve, qutip.random_objects, and qutip.stochastic. (#1575 by Jake Lishman)
  • Bumped the version of urllib3 used to build documentation from 1.26.4 to 1.26.5. (#1563 by dependabot)
  • Moved tests to GitHub Actions. (#1551 by Jake Lishman)
  • The GitHub contributing guidelines were re-added and updated to point to the more complete guidelines in the documentation. (#1549 by Jake Lishman)
  • The release documentation was reworked after the initial 4.6.1 to match the actual release process. (#1544 by Jake Lishman)

- Python
Published by hodgestar about 4 years ago

qutip - QuTiP 4.6.3

This minor release adds support for numpy 1.22 and Python 3.10 and removes some blockers for running QuTiP on the Apple M1.

The performance of the enr_destroy, state_number_enumerate and hadamard_transform functions was drastically improved (up to 70x or 200x faster in some common cases), and support for the drift Hamiltonian was added to the qutip.qip Processor.

The qutip.hardware_info module was removed as part of adding support for the Apple M1. We hope the removal of this little-used module does not adversely affect many users -- it was largely unrelated to QuTiP's core functionality and its presence was a continual source of blockers to importing qutip on new or changed platforms.

A new check on the dimensions of Qobj's were added to prevent segmentation faults when invalid shape and dimension combinations were passed to Cython code.

In addition, there were many small bugfixes, documentation improvements, and improvements to our building and testing processes.

Improvements

  • The enr_destroy function was made ~200x faster in many simple cases. (#1593 by Johannes Feist)
  • The state_number_enumerate function was made significantly faster. (#1594 by Johannes Feist)
  • Added the missing drift Hamiltonian to the method run_analytically of Processor. (#1603 Boxi Li)
  • The hadamard_transform was made much faster, e.g., ~70x faster for N=10. (#1688 by Asier Galicia)
  • Added support for computing the power of a scalar-like Qobj. (#1692 by Asier Galicia)
  • Removed the hardware_info module. This module wasn't used inside QuTiP and regularly broke when new operating systems were released, and in particular prevented importing QuTiP on the Apple M1. (#1754, #1758 by Eric Giguère)

Bug Fixes

  • Fixed support for calculating the propagator of a density matrix with collapse operators. QuTiP 4.6.2 introduced extra sanity checks on the dimensions of inputs to mesolve (Fix mesolve segfault with bad initial state #1459), but the propagator function's calls to mesolve violated these checks by supplying initial states with the dimensions incorrectly set. propagator now calls mesolve with the correct dimensions set on the initial state. (#1588 by Simon Cross)
  • Fixed support for calculating the propagator for a superoperator without collapse operators. This functionality was not tested by the test suite and appears to have broken sometime during 2019. Tests have now been added and the code breakages fixed. (#1588 by Simon Cross)
  • Fixed the ignoring of the random number seed passed to rand_dm in the case where pure was set to true. (#1600 by Pontus Wikståhl)
  • Fixed qutip.control.optimizepulse support for sparse eigenvector decomposition with the Qobj operdtype (the Qobj oper_dtype is the default for large systems). (#1621 by Simon Cross)
  • Removed qutip.control.optimizepulse support for scipy.sparse.csrmatrix and generic ndarray-like matrices. Support for these was non-functional. (#1621 by Simon Cross)
  • Fixed errors in the calculation of the Husimi spinqfunction and spin_wigner functions and added tests for them. (#1632 by Mark Johnson)
  • Fixed setting of OpenMP compilation flag on Linux. Previously when compiling the OpenMP functions were compiled without parallelization. (#1693 by Eric Giguère)
  • Fixed tracking the state of the Bloch sphere figure and axes to prevent exceptions during rendering. (#1619 by Simon Cross)
  • Fixed compatibility with numpy configuration in numpy's 1.22.0 release. (#1752 by Matthew Treinish)
  • Added dims checks for eops passed to solvers to prevent hanging the calling process when eops of the wrong dimensions were passed. (#1778 by Eric Giguère)
  • Added a check in Qobj constructor that the respective members of data.shape cannot be larger than what the corresponding dims could contain to prevent a segmentation fault caused by inconsistencies between dims and shapes. (#1783, #1785, #1784 by Lajos Palanki & Eric Giguère)

Documentation Improvements

  • Added docs for the num_cbits parameter of the QubitCircuit class. (#1652 by Jon Crall)
  • Fixed the parameters in the call to fsesolve in the Floquet guide. (#1675 by Simon Cross)
  • Fixed the description of random number usage in the Monte Carlo solver guide. (#1677 by Ian Thorvaldson)
  • Fixed the rendering of equation numbers in the documentation (they now appear on the right as expected, not above the equation). (#1678 by Simon Cross)
  • Updated the installation requirements in the documentation to match what is specified in setup.py. (#1715 by Asier Galicia)
  • Fixed a typo in the chi_to_choi documentation. Previously the documentation mixed up chi and choi. (#1731 by Pontus Wikståhl)
  • Improved the documentation for the stochastic equation solvers. Added links to notebooks with examples, API doumentation and external references. (#1743 by Leonardo Assis)
  • Fixed a typo in qutip.settings in the settings guide. (#1786 by Mahdi Aslani)
  • Made numerous small improvements to the text of the QuTiP basics guide. (#1768 by Anna Naden)
  • Made a small phrasing improvement to the README. (#1790 by Rita Abani)

Developer Changes

  • Improved test coverage of states and operators functions. (#1578 by Eric Giguère)
  • Fixed test_interpolate mcsolve use (#1645 by Eric Giguère)
  • Ensured figure plots are explicitly closed during tests so that the test suite passes when run headless under Xvfb. (#1648 by Simon Cross)
  • Bumped the version of pillow used to build documentation from 8.2.0 to 9.0.0. (#1654, #1760 by dependabot)
  • Bumped the version of babel used to build documentation from 2.9.0 to 2.9.1. (#1695 by dependabot)
  • Bumped the version of numpy used to build documentation from 1.19.5 to 1.21.0. (#1767 by dependabot)
  • Bumped the version of ipython used to build documentation from 7.22.0 to 7.31.1. (#1780 by dependabot)
  • Rename qutip.bib to CITATION.bib to enable GitHub's citation support. (#1662 by Ashish Panigrahi)
  • Added tests for simdiags. (#1681 by Eric Giguère)
  • Added support for specifying the numpy version in the CI test matrix. (#1696 by Simon Cross)
  • Fixed the skipping of the dnorm metric tests if cvxpy is not installed. Previously all metrics tests were skipped by accident. (#1704 by Florian Hopfmueller)
  • Added bug report, feature request and other options to the GitHub issue reporting template. (#1728 by Aryaman Kolhe)
  • Updated the build process to support building on Python 3.10 by removing the build requirement for numpy < 1.20 and replacing it with a requirement on oldest-supported-numpy. (#1747 by Simon Cross)
  • Updated the version of cibuildwheel used to build wheels to 2.3.0. (#1747, #1751 by Simon Cross)
  • Added project urls to linking to the source repository, issue tracker and documentation to setup.cfg. (#1779 by Simon Cross)
  • Added a numpy 1.22 and Python 3.10 build to the CI test matrix. (#1777 by Simon Cross)
  • Ignore deprecation warnings from SciPy 1.8.0 scipy.sparse.X imports in CI tests. (#1797 by Simon Cross)
  • Add building of wheels for Python 3.10 to the cibuildwheel job. (#1796 by Simon Cross)

- Python
Published by hodgestar over 4 years ago

qutip - QuTiP 4.6.2

This minor release adds a function to calculate the quantum relative entropy, fixes a corner case in handling time-dependent Hamiltonians in mesolve and adds back support for a wider range of matplotlib versions when plotting or animating Bloch spheres.

It also adds a section in the README listing the papers which should be referenced while citing QuTiP.

Improvements

  • Added a "Citing QuTiP" section to the README, containing a link to the QuTiP papers. (#1554)
  • Added entropy_relative which returns the quantum relative entropy between two density matrices. (#1553)

Bug Fixes

  • Fixed Bloch sphere distortion when using Matplotlib >= 3.3.0. (#1496)
  • Removed use of integer-like floats in math.factorial since it is deprecated as of Python 3.9. (#1550)
  • Simplified call to ffmpeg used in the the Bloch sphere animation tutorial to work with recent versions of ffmpeg. (#1557)
  • Removed blitting in Bloch sphere FuncAnimation example. (#1558)
  • Added a version checking condition to handle specific functionalities depending on the matplotlib version. (#1556)
  • Fixed mesolve handling of time-dependent Hamiltonian with a custom tlist and c_ops. (#1561)

Developer Changes

  • Read documentation version and release from the VERSION file.

- Python
Published by quantshah almost 5 years ago

qutip - QuTiP 4.6.1

This minor release fixes bugs in QIP gate definitions, fixes building from the source tarball when git is not installed and works around an MKL bug in versions of SciPy <= 1.4.

It also adds the [full] pip install target so that pip install qutip[full] installs qutip and all of its optional and developer dependencies.

Improvements

  • Add the [full] pip install target (by Jake Lishman)

Bug Fixes

  • Work around pointer MKL eigh bug in SciPy <= 1.4 (by Felipe Bivort Haiek)
  • Fix berkeley, swapalpha and cz gate operations (by Boxi Li)
  • Expose the CPHASE control gate (by Boxi Li)
  • Fix building from the sdist when git is not installed (by Jake Lishman)

Developer Changes

  • Move the qutip-doc documentation into the qutip repository (by Jake Lishman)
  • Fix warnings in documentation build (by Jake Lishman)
  • Fix warnings in pytest runs and make pytest treat warnings as errors (by Jake Lishman)
  • Add Simon Cross as author (by Simon Cross)

- Python
Published by hodgestar about 5 years ago

qutip - QuTiP 4.6.0

This release brings improvements for qubit circuits, including a pulse scheduler, measurement statistics, reading/writing OpenQASM and optimisations in the circuit simulations.

This is the first release to have full binary wheel releases on pip; you can now do pip install qutip on almost any machine to get a correct version of the package without needing any compilers set up. The support for Numpy 1.20 that was first added in QuTiP 4.5.3 is present in this version as well, and the same build considerations mentioned there apply here too. If building using the now-supported PEP 517 mechanisms (e.g. python -mbuild /path/to/qutip), all build dependencies will be correctly satisfied.

Improvements

  • MAJOR Add saving, loading and resetting functionality to qutip.settings for easy re-configuration. (by Eric Giguère)
  • MAJOR Add a quantum gate scheduler in qutip.qip.scheduler, to help parallelise the operations of quantum gates. This supports two scheduling modes: as late as possible, and as soon as possible. (by Boxi Li)
  • MAJOR Improved qubit circuit simulators, including OpenQASM support and performance optimisations. (by Sidhant Saraogi)
  • MAJOR Add tools for quantum measurements and their statistics. (by Simon Cross and Sidhant Saraogi)
  • Add support for Numpy 1.20. QuTiP should be compiled against a version of Numpy >= 1.16.6 and < 1.20 (note: does not include 1.20 itself), but such an installation is compatible with any modern version of Numpy. Source installations from pip understand this constraint.
  • Improve the error message when circuit plotting fails. (by Boxi Li)
  • Add support for parsing M1 Mac hardware information. (by Xiaoliang Wu)
  • Add more single-qubit gates and controlled gates. (by Mateo Laguna and Martín Sande Costa)
  • Support decomposition of X, Y and Z gates in circuits. (by Boxi Li)
  • Refactor QubitCircuit.resolve_gate() (by Martín Sande Costa)

Bug Fixes

  • Fix dims in the returns from Qobj.eigenstates on superoperators. (by Jake Lishman)
  • Calling Numpy ufuncs on Qobj will now correctly raise a TypeError rather than returning a nonsense ndarray. (by Jake Lishman)
  • Convert segfault into Python exception when creating too-large tensor products. (by Jake Lishman)
  • Correctly set num_collapse in the output of mesolve. (by Jake Lishman)
  • Fix ptrace when all subspaces are being kept, or the subspaces are passed in order. (by Jake Lishman)
  • Fix sorting bug in Bloch3d.add_points(). (by pschindler)
  • Fix invalid string literals in docstrings and some unclosed files. (by Élie Gouzien)
  • Fix Hermicity tests for matrices with values that are within the tolerance of 0. (by Jake Lishman)
  • Fix the trace norm being incorrectly reported as 0 for small matrices. (by Jake Lishman)
  • Fix issues with dnorm when using CVXPy 1.1 with sparse matrices. (by Felipe Bivort Haiek)
  • Fix segfaults in mesolve when passed a bad initial Qobj as the state. (by Jake Lishman)
  • Fix sparse matrix construction in PIQS when using Scipy 1.6.1. (by Drew Parsons)
  • Fix zspmv_openmp.cpp missing from the pip sdist. (by Christoph Gohlke)
  • Fix correlation functions throwing away imaginary components. (by Asier Galicia Martinez)
  • Fix QubitCircuit.add_circuit() for SWAP gate. (by Canoming)
  • Fix the broken LaTeX image conversion. (by Jake Lishman)
  • Fix gate resolution of the FREDKIN gate. (by Bo Yang)
  • Fix broken formatting in docstrings. (by Jake Lishman)

Deprecations

  • eseries, essolve and ode2es are all deprecated, pending removal in QuTiP 5.0. These are legacy functions and classes that have been left unmaintained for a long time, and their functionality is now better achieved with QobjEvo or mesolve.

Developer Changes

  • MAJOR Overhaul of setup and packaging code to make it satisfy PEP 517, and move the build to a matrix on GitHub Actions in order to release binary wheels on pip for all major platforms and supported Python versions. (by Jake Lishman)
  • Default arguments in Qobj are now None rather than mutable types. (by Jake Lishman)
  • Fixed comsumable iterators being used to parametrise some tests, preventing the testing suite from being re-run within the same session. (by Jake Lishman)
  • Remove unused imports, simplify some floats and remove unnecessary list conversions. (by jakobjakobson13)
  • Improve Travis jobs matrix for specifying the testing containers. (by Jake Lishman)
  • Fix coverage reporting on Travis. (by Jake Lishman)
  • Added a pyproject.toml file. (by Simon Humpohl and Eric Giguère)
  • Add doctests to documentation. (by Sidhant Saraogi)
  • Fix all warnings in the documentation build. (by Jake Lishman)

- Python
Published by jakelishman about 5 years ago

qutip - QuTiP 4.5.3

This patch release adds support for Numpy 1.20, made necessary by changes to how array-like objects are handled. There are no other changes relative to version 4.5.2.

Users building from source should ensure that they build against Numpy versions >= 1.16.6 and < 1.20 (not including 1.20 itself), but after that or for those installing from conda, an installation will support any current Numpy version >= 1.16.6.

- Python
Published by jakelishman over 5 years ago

qutip - Qutip 4.5.2

Bug Fixes

  • zcsr_proj does not fail with unsorted indices (by Jake Lishman)
  • Fixed Milstein's heterodyne errors (by Eric Giguère)
  • Removed risky code (by Jake Lishman)
  • Fix datatype bug in lattice (by Boxi Li)
  • eigh issues on mac with openBLAS fixed (by Eric Giguère)

Improvements

  • Faster zcsr_inner (by Jake Lishman)
  • Support for Scipy 1.5 (by Jake Lishman)
  • Better error message when installing without numpy (by Eric Giguère)

Book keeping

  • Various code style improvements (by Jake Lishman)

- Python
Published by Ericgig almost 6 years ago

qutip - Qutip 4.5.1

Bug Fixes

  • Safer naming for temporary files. (by Eric Giguère)
  • Better error message for failed string coefficient compilation. (issue raised by nohchangsuk)
  • Fix clebsch function for half-integer (by Thomas Walker)
  • Fix randint's dtype to uint32 for compatibility with windows. (issue raised by BoxiLi)
  • Corrected stochastic's heterodyne's m_ops (by eliegenois)
  • Mac pool use spawn. (issue raised by goerz)
  • Fix typos in QobjEvo._shift. (by Eric Giguère)

Improvements

  • Run the python 3.8 test in travis in linux. (by Simon Cross)
  • Moved other tests to 3.8. (by Eric Giguère)
  • Fix travis warning (by Ivan Carvalho)
  • husimi / wigner functions adapted to accept half integer spin. (by maij)

Book keeping

  • Add Boxi Li to authors. (by Alex Pitchford)
  • Deprecate graph function (by Jake Lishman)
  • Skip tests that cause segfault on mac. (by Nathan Shammah and Eric Giguère)

- Python
Published by Ericgig about 6 years ago

qutip - QuTiP 4.5.0

Version 4.5.0 (January 31, 2020) ++++++++++++++++++++++++++++++

Improvements

  • MAJOR FEATURE: Added qip.noise, a module with pulse level description of quantum circuits allowing to model various types of noise and devices (by Boxi Li).

  • MAJOR FEATURE: Added qip.lattice, a module for the study of lattice dynamics in 1D (by Saumya Biswas).

  • Migrated testing from Nose to PyTest (by Tarun Raheja).

  • Optimized testing for PyTest and removed duplicated test runners (by Jake Lishman).

  • Deprecated importing qip functions to the qutip namespace (by Boxi Li).

  • Added the possibility to define non-square superoperators relevant for quantum circuits (by Arne Grimsmo and Josh Combes).

  • Implicit tensor product for qeye, qzero and basis (by Jake Lishman).

  • QObjEvo no longer requires Cython for string coefficient (by Eric Giguère).

  • Added marked tests for faster tests in testing.run() and made faster OpenMP benchmarking in CI (by Eric Giguère).

  • Added entropy and purity for Dicke density matrices, refactored into more general dicke_trace (by Nathan Shammah).

  • Added option for specifying resolution in Bloch.save function (by Tarun Raheja).

  • Added information related to the value of hbar in wigner and continuous_variables (by Nicolas Quesada).

  • Updated requirements for scipy 1.4 (by Eric Giguère).

  • Added previous lead developers to the qutip.about() message (by Nathan Shammah).

  • Added improvements to Qobj introducing the inv method and making the partial trace, ptrace, faster, keeping both sparse and dense methods (by Eric Giguère).

  • Allowed general callable objects to define a time-dependent Hamiltonian (by Eric Giguère).

  • Added feature so that QobjEvo no longer requires Cython for string coefficients (by Eric Giguère).

  • Updated authors list on Github and added my binder link (by Nathan Shammah).

Bug Fixes

  • Fixed PolyDataMapper construction for Bloch3d (by Sam Griffiths).

  • Fixed error checking for null matrix in essolve (by Nathan Shammah).

  • Fixed name collision for parallel propagator (by Nathan Shammah).

  • Fixed dimensional incongruence in propagator (by Nathan Shammah)

  • Fixed bug by rewriting clebsch function based on long integer fraction (by Eric Giguère).

  • Fixed bugs in QobjEvo's args depending on state and added solver tests using them (by Eric Giguère).

  • Fixed bug in sesolve calculation of average states when summing the timeslot states (by Alex Pitchford).

  • Fixed bug in steadystate solver by removing separate arguments for MKL and Scipy (by Tarun Raheja).

  • Fixed Bloch.add_ponts by setting edgecolor = None in plot_points (by Nathan Shammah).

  • Fixed error checking for null matrix in essolve solver affecting also ode2es (by Peter Kirton).

  • Removed unnecessary shebangs in .pyx and .pxd files (by Samesh Lakhotia).

  • Fixed sesolve and import of os in codegen (by Alex Pitchford).

  • Updated plot_fock_distribution by removing the offset value 0.4 in the plot (by Rajiv-B).

- Python
Published by nathanshammah over 6 years ago

qutip - QuTiP 4.4.1

The release of QuTiP 4.4.1

Bug Fixes

  • Fixed the pickling but that made solver unable to run in parallel on Windows. (Thank lrunze for reporting)
  • Removed warning when mesolve fall back on sesolve (by Michael Goerz).
  • Fixed dimension check and confusing documentation in random ket (by Yariv Yanay).
  • Fixed Qobj isherm not working after using Qobj.permute. (Thank llorz1207 for reporting)
  • Correlation functions call now properly handle multiple time dependant functions. (Thank taw181 for reporting)
  • Removed mutable default values in mesolve/sesolve (by Michael Goerz)
  • Fixed simdiag bug (Thank Croydon-Brixton for reporting)
  • Better support of constant QobjEvo. (by Boxi Li)

Improvements

  • QobjEvo do not need to start from 0 anymore. (by Eric Giguere)
  • Add a quantum object purity function. (by Nathan Shammah and Shahnawaz Ahmed)
  • Add step function interpolation for array time-coefficient. (by Boxi Li)

- Python
Published by Ericgig almost 7 years ago

qutip - QuTiP 4.4.0

The release of QuTiP 4.4.0

Improvements

  • MAJOR FEATURE: Added methods and techniques to the stochastic solvers (by Eric Giguère) which allows to use a much broader set of solvers and much more efficiently.

  • MAJOR FEATURE: Optimization of the montecarlo solver (by Eric Giguère). Computation are faster in many cases. Collapse information available to time dependant information.

  • Added the QObjEvo class and methods (by Eric Giguère), which is used behind the scenes by the dynamical solvers, making the code more efficient and tidier. More built-in function available to string coefficients. The coefficients can be made from interpolated array with variable timesteps and can obtain state information more easily. Time-dependant collapse operator can have multiple terms.

  • New wignertransform and plotwigner_sphere function. (by Nithin Ramu).

  • ptrace is faster and work on bigger systems, from 15 Qbits to 30 Qbits.

  • QIP module: added the possibility for user-defined gates, added the possibility to remove or add gates in any point of an already built circuit, added the molmer_sorensen gate, and fixed some bugs (by Boxi Li).

  • Added the quantum Hellinger distance to qutip.metrics (by Wojciech Rzadkowski).

  • Implemented possibility of choosing a random seed (by Marek marekyggdrasil).

  • Added a code of conduct to Github.

Bug Fixes

  • Fixed bug that made QuTiP incompatible with SciPy 1.3.

  • quite.cite() is improved.

  • Added matplotlib as optional dependency and updated numpy and scipy requirements.

  • Fixed matrix generating coherent spin states in qutip.piqs to include complex coefficients.

- Python
Published by Ericgig almost 7 years ago

qutip - QuTiP 4.3.1

The release of QuTiP 4.3.1

Improvements

  • MAJOR FEATURE: Added the Permutational Invariant Quantum Solver (PIQS) module (by Nathan Shammah and Shahnawaz Ahmed) which allows the simluation of large TLSs ensembles including collective and local Lindblad dissipation. Applications range from superradiance to spin squeezing.

  • MAJOR FEATURE: Added a photon scattering module (by Ben Bartlett) which can be used to study scattering in arbitrary driven systems coupled to some configuration of output waveguides.

  • Cubic_Spline functions as time-dependent arguments for the collapse operators in mesolve are now allowed.

  • Added a faster version of blochredfieldtensor, using components from the time-dependent version. About 3x+ faster for secular tensors, and 10x+ faster for non-secular tensors.

  • Computing Q.overlap() [inner product] is now ~30x faster.

  • Added projector method to Qobj class.

  • Added fast projector method, Q.proj().

  • Computing matrix elements, Q.matrix_element is now ~10x faster.

  • Computing expectation values for ket vectors using expect is now ~10x faster.

  • Q.tr() is now faster for small Hilbert space dimensions.

  • Unitary operator evolution added to sesolve

  • Use OPENMP for tidyup if installed.

Bug Fixes

  • Fixed bug that stopped simdiag working for python 3.

  • Fixed semidefinite cvxpy Variable and Parameter.

  • Fixed iterative lu solve atol keyword issue.

  • Fixed unitary op evolution rhs matrix in ssesolve.

  • Fixed interpolating function to return zero outside range.

  • Fixed dnorm complex casting bug.

  • Fixed control.io path checking issue.

  • Fixed ENR fock dimension.

  • Fixed hard coded options in propagator 'batch' mode

  • Fixed bug in trace-norm for non-Hermitian operators.

  • Fixed bug related to args not being passed to coherencefunctiong2

  • Fixed MKL error checking dict key error

- Python
Published by quantshah almost 8 years ago

qutip - QuTiP 4.2.0

Release of QuTiP 4.2.

Improvements

  • MAJOR FEATURE: Initial implementation of time-dependent Bloch-Redfield Solver.
  • Qobj tidyup is now an order of magnitude faster.
  • Time-dependent codegen now generates output NumPy arrays faster.
  • Improved calculation for analytic coefficients in coherent states (Sebastian Kramer).
  • Input array to correlation FFT method now checked for validity.
  • Function-based time-dependent mesolve and sesolve routines now faster.
  • Codegen now makes sure that division is done in C, as opposed to Python.
  • Can now set different controls for a each timeslot in quantum optimization.
  • This allows time-varying controls to be used in pulse optimisation.

Bug Fixes

  • rcsolve importing old Odeoptions Class rather than Options.
  • Non-int issue in spin Q and Wigner functions.
  • Qobj’s should tidyup before determining isherm.
  • Fixed time-dependent RHS function loading on Win.
  • Fixed several issues with compiling with Cython 0.26.
  • Liouvillian superoperators were hard setting isherm=True by default.
  • Fixed an issue with the solver safety checks when inputing a list with Python functions as time-dependence.
  • Fixed non-int issue in Wigner_cmap.
  • MKL solver error handling not working properly.

- Python
Published by nonhermitian almost 9 years ago

qutip - QuTiP 4.1

QuTiP 4.1

- Python
Published by nonhermitian about 9 years ago

qutip - QuTiP-4.0.0

Initial release of QuTiP 4.0

- Python
Published by nonhermitian over 9 years ago