Changelog

Release notes for quimb.

v1.10.1 (unreleased)

Breaking Changes

  • move belief propagation to quimb.tensor.belief_propagation

Enhancements:

  • MatrixProductState.measure: add a seed kwarg

  • belief propagation, implement DIIS (direct inversion in the iterative subspace)

  • belief propagation, unify various aspects such as message normalization and distance.

  • belief propagation, add a plot method.

  • belief propagation, add a contract_every option.

  • HV1BP: vectorize both contraction and message initialization

  • add qu.plot_multi_series_zoom for plotting multiple series with a zoomed inset, useful for various convergence plots such as BP

  • add info option to tn.gauge_all_simple for tracking extra information such as number of iterations and max gauge difffi

  • Tensor.gate: add transposed option

Bug fixes:

v1.10.0 (2024-12-18)

Enhancements:

  • tensor network fitting: add method="tree" for when ansatz is a tree - tensor_network_fit_tree

  • tensor network fitting: fix method="als" for complex networks

  • tensor network fitting: allow method="als" to use a iterative solver suited to much larger tensors, by default a custom conjugate gradient implementation.

  • tensor_network_distance and fitting: support hyper indices explicitly via output_inds kwarg

  • add tn.make_overlap and tn.overlap for computing the overlap between two tensor networks, \(\langle O |T \rangle\), with explicit handling of outer indices to address hyper networks. Add output_inds to tn.norm and tn.make_norm also, as well as the squared kwarg.

  • replace all numba based paralellism (prange and parallel vectorize) with explicit thread pool based parallelism. Should be more reliable and no need to set NUMBA_NUM_THREADS anymore. Remove env var QUIMB_NUMBA_PAR.

  • Circuit: add dtype and convert_eager options. dtype specifies what the computation should be performed in. convert_eager specifies whether to apply this (and any to_backend calls) as soon as gates are applied (the default for MPS circuit simulation) or just prior to contraction (the default for exact contraction simulation).

  • tn.full_simplify: add check_zero (by default set of "auto") option which explicitly checks for zero tensor norms when equalizing norms to avoid log10(norm) resulting in -inf or nan. Since it creates a data dependency that breaks e.g. jax tracing, it is optional.

  • schematic.Drawing: add shorten kwarg to line drawing and curve drawing and examples to schematic - manual drawing.

  • TensorNetwork: add .backend and .dtype_name properties.

v1.9.0 (2024-11-19)

Breaking Changes

  • renamed MatrixProductState.partial_trace and MatrixProductState.ptr to MatrixProductState.partial_trace_to_mpo to avoid confusion with other partial_trace methods that usually produce a dense matrix.

Enhancements:


v1.8.4 (2024-07-20)

Bug fixes:

  • fix for MPS sampling with fixed seed (GH 247 and PR 248)

  • fix for mps_gate_with_mpo_lazy (GH 246).


v1.8.3 (2024-07-10)

Enhancements:


v1.8.2 (2024-06-12)

Enhancements:

  • TNOptimizer can now accept an arbitrary pytree (nested combination of dicts, lists, tuples, etc. with TensorNetwork, Tensor or raw array_like objects as the leaves) as the target object to optimize.

  • TNOptimizer can now directly optimize Circuit objects, returning a new optimized circuit with updated parameters.

  • Circuit: add .copy(), .get_params() and .set_params() interface methods.

  • Update generic TN optimizer docs.

  • add tn.gen_inds_loops for generating all loops of indices in a TN.

  • add tn.gen_inds_connected for generating all connected sets of indices in a TN.

  • make SVD fallback error catching more generic (PR #238)

  • fix some windows + numba CI issues.

  • approx_spectral_function add plotting and tracking

  • add dispatching to various tensor primitives to allow overriding


v1.8.1 (2024-05-06)

Enhancements:

Bug fixes:


v1.8.0 (2024-04-10)

Breaking Changes

Enhancements:

Bug fixes:

  • fix scipy sparse monkey patch for scipy>=1.13 (GH 222)

  • fix autoblock bug where connected sectors were not being merged (GH 223)


v1.7.3 (2024-02-08)

Enhancements:

  • qu.randn: support dist="rademacher".

  • support dist and other randn options in various TN builders.

Bug fixes:

  • restore fallback (to scipy.linalg.svd with driver=’gesvd’) behavior for truncated SVD with numpy backend.


v1.7.2 (2024-01-30)

Enhancements:

Bug fixes:

  • removed import of deprecated numba.generated_jit decorator.


v1.7.1 (2024-01-30)

Enhancements:

Bug fixes:

  • fix bug in kruas_op when operator spanned multiple subsystems (GH 214)

  • fix bug in qr_stabilized when the diagonal of R has significant imaginary parts.

  • fix bug in quantum discord computation when the state was diagonal (GH 217)


v1.7.0 (2023-12-08)

Breaking Changes

  • Circuit : remove target_size in preparation for all contraction specifications to be encapsulated at the contract level (e.g. with cotengra)

  • some TN drawing options (mainly arrow options) have changed due to the backend change detailed below.

Enhancements:

  • TensorNetwork.draw: use quimb.schematic for main backend="matplotlib" drawing. Enabling:

    1. multi tag coloring for single tensors

    2. arrows and labels on multi-edges

    3. better sizing of tensors using absolute units

    4. neater single tensor drawing, in 2D and 3D

Bug fixes:

  • fixed bug where an output index could be removed by squeezing when performing tensor network simplifications.


v1.6.0 (2023-09-10)

Breaking Changes

  • Quantum circuit RZZ definition corrected (angle changed by -1/2 to match qiskit).

Enhancements:

Bug fixes:

  • fix gauge size check for some backends


v1.5.1 (2023-07-28)

Enhancements:

  • add MPS_COPY().

  • add ‘density matrix’ and ‘zip-up’ MPO-MPS algorithms.

  • add drop_tags option to tensor_contract()

  • compress_all_simple(), allow cutoff.

  • add structure checking debug methods: Tensor.check() and TensorNetwork.check().

  • add several direction contraction utility functions: get_symbol(), inds_to_eq() and array_contract().

Bug fixes:

  • Circuit: use stack for more robust parametrized gate generation

  • fix for gate_with_auto_swap() for i > j.

  • fix bug where calling tn.norm() would mangle indices.


v1.5.0 (2023-05-03)

Enhancements

Bug fixes:


v1.4.2 (2022-11-28)

Enhancements


v1.4.1 (2022-11-28)

Enhancements

  • unify much functionality from 1D, 2D and 3D into general arbitrary geometry class quimb.tensor.tensor_arbgeom.TensorNetworkGen

  • refactor contraction, allowing using cotengra directly

  • add visualize() for visualizing the actual data entries of an arbitrarily high dimensional tensor

  • add Gate class for more robust tracking and manipulation of gates in quantum Circuit simulation

  • tweak TN drawing style and layout

  • tweak default gauging options of compressed contraction

  • add compute_hierarchical_grouping()

  • add as_network()

  • add inds_size()

  • add get_hyperinds()

  • add outer_size()

  • improve group_inds()

  • refactor tensor decompositiona and ‘isometrization’ methods

  • begin supporting pytree specifications in TNOptimizer, e.g. for constants

  • add experimental submodule for new sharing features

  • register tensor and tensor network objects with jax pytree interface (PR 150)

  • update CI infrastructure

Bug fixes:

  • fix force atlas 2 and weight_attr bug (GH 126)

  • allow unpickling of PTensor objects (GH 128, PR 131)


v1.4.0 (2022-06-14)

Enhancements

  • Add 2D tensor network support and algorithms

  • Add 3D tensor network infrastructure

  • Add arbitrary geometry quantum state infrastructure

  • Many changes to TNOptimizer

  • Many changes to TN drawing

  • Many changes to Circuit simulation

  • Many improvements to TN simplification

  • Make all tag and index operations deterministic

  • Add tensor_network_sum(), tensor_network_distance() and fit()

  • Various memory and performance improvements

  • Various graph generators and TN builders


v1.3.0 (2020-02-18)

Enhancements

Bug fixes:

  • Fix consistency of fidelity() by making the unsquared version the default for the case when either state is pure, and always return a real number.

  • Fix a bug in the 2D system example for when j != 1.0

  • Add environment variable QUIMB_NUMBA_PAR to set whether numba should use automatic parallelization - mainly to fix travis segfaults.

  • Make cache import and initilization of petsc4py and slepc4py more robust.


v1.2.0 (2019-06-06)

Enhancements

Bug fixes:

  • Fix pkron for case len(dims) == len(inds) (GH 17, PR 18).

  • Fix qarray printing for older numpy versions

  • Fix TN quantum circuit bug where Z and X rotations were swapped

  • Fix variable bond MPO building (GH 22) and L=2 DMRG

  • Fix norm(X, 'trace') for non-hermitian matrices

  • Add autoray as dependency (GH 21)