Recent Releases of quimb

quimb - v1.11.2

Enhancements:

Bug fixes:

  • fixes for MPS and MPO constructors when L=1, (#314)
  • tensor splitting with absorb="left" now correctly marks left indices.
  • tn.isel: fix bug when value could not be compared to string "r"
  • truncated svd, make n_chi comparison more robust to different backends

Full Changelog: https://github.com/jcmgray/quimb/compare/v1.11.1...v1.11.2

Scientific Software - Peer-reviewed - Python
Published by jcmgray 11 months ago

quimb - v1.11.1

Enhancements:

  • add create_bond to tensor_canonize_bond and tensor_compress_bond for optionally creating a new bond between two tensors if they don't already share one. Add as a flag to TensorNetwork1DFlat.compress and related functions (#294).
  • add ensure_bonds_exist for ensuring that all bonds in a 1D flat tensor network exist. Use this in the permute_arrays methods and optionally in the expand_bond_dimension method.
  • tn.draw(): permit empty network, and allow color=True to automatically color all tags.
  • tn.add_tag: add a record: Optional[dict] kwarg, to allow for easy rewinding of temporary tags without tracking the actual networks.
  • add qu.plot as a quick wrapper for calling matplotlib.pyplot.plot with the quimb style.
  • quimb.schematic: add zorder_delta kwarg for fine adjustments to layering of objects in approximately the same position.
  • operatorbuilder: big performance improvements and fixes for building matrix representations including Z2 symmetry. Add default symmetry and sector options that can be overridden at build time. Add lazy (slow, matrix free) 'apply' method. Add pauli_decompose transformation. Add experimental PEPO builder for nearest neighbor operators. Add unit tests.

Bug fixes:

Full Changelog: https://github.com/jcmgray/quimb/compare/v1.11.0...v1.11.1

Scientific Software - Peer-reviewed - Python
Published by jcmgray 12 months ago

quimb - v1.11.0

Breaking Changes

  • move belief propagation to quimb.tensor.belief_propagation
  • calling tn.contract() when an non-zero value has been accrued into tn.exponent now automatically re-absorbs that exponent.
  • binary tensor operations that would previously have errored now will align and broadcast

Enhancements:

  • Tensor: make binary operations (+, -, *, /, **) automatically align and broadcast indices. This would previously error.
  • 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 diffs
  • Tensor.gate: add transposed option
  • TensorNetwork.contract: add strip_exponent option for return the mantissa and exponent (log10) separately. Compatible with contract_tags, contract_cumulative, contract_compressed sub modes.
  • tensor_split: add matrix_svals option, if True any returned singular values are put into the diagonal of a matrix (by default, False, they are returned as a vector).
  • add Tensor.new_ind_pair_diag for expanding an existing index into a pair of new indices, such that the diagonal of the new tensor on those indices is the old tensor.
  • TNOptimizer: add 'cautious' ADAM
  • TensorNetwork.pop_tensor: allow tid or tags to be specified.
  • add an example notebook for converting hyper tensor networks to normal tensor networks, for approximate contraction - https://quimb.readthedocs.io/en/latest/examples/exhtntotn2d.html#example-htn-to-2d
  • Add SX and SXDG gates by @kevinsung in https://github.com/jcmgray/quimb/pull/277
  • Add XXPLUSYY and XXMINUSYY gates by @kevinsung in https://github.com/jcmgray/quimb/pull/279
  • Added progbar to qsim, and openqasm2 by @edenian in https://github.com/jcmgray/quimb/pull/288
  • quimb.experimental.operatorbuilder: fix MPO building for congested operators (#296 and #301), allow arbitrary dtype (#289). Fix building of sparse and matrix representations for non-translationally symmetric operators and operators with trivial (all identity) terms.

Bug fixes:

  • fix MatrixProductState.measure for cupy backend arrays (#276).
  • fix linalg.expm dispatch (#275)
  • fix 'dm' 1d compress method for disconnected subgraphs
  • fix docs source lookup in quimb.tensor module
  • fix raw gate copying in Circuit (#285)

New Contributors

  • @edenian made their first contribution in https://github.com/jcmgray/quimb/pull/288

Full Changelog: https://github.com/jcmgray/quimb/compare/v1.10.0...v1.11.0

Scientific Software - Peer-reviewed - Python
Published by jcmgray about 1 year ago

quimb - v1.10.0

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 dtype 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 the docs.
  • TensorNetwork: add .backend and .dtype_name properties.

PRs:

  • Circuit: add default dtype and convert_eager options by @jcmgray in https://github.com/jcmgray/quimb/pull/273
  • add fit(method="tree") and fix ALS for complex TNs by @jcmgray in https://github.com/jcmgray/quimb/pull/274

Full Changelog: https://github.com/jcmgray/quimb/compare/v1.9.0...v1.10.0

Scientific Software - Peer-reviewed - Python
Published by jcmgray over 1 year ago

quimb - v1.9.0

Breaking Changes

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

Enhancements:

Scientific Software - Peer-reviewed - Python
Published by jcmgray over 1 year ago

quimb - v1.8.4

What's Changed

  • fix MPS sample handling of RNG seed by @kevinsung in https://github.com/jcmgray/quimb/pull/248
  • fix bug in applying MPO lazily to MPS (#246)

New Contributors

  • @kevinsung made their first contribution in https://github.com/jcmgray/quimb/pull/248

Full Changelog: https://github.com/jcmgray/quimb/compare/v1.8.3...v1.8.4

Scientific Software - Peer-reviewed - Python
Published by jcmgray almost 2 years ago

quimb - v1.8.3

Enhancements:

Full Changelog: https://github.com/jcmgray/quimb/compare/v1.8.2...v1.8.3

Scientific Software - Peer-reviewed - Python
Published by jcmgray almost 2 years ago

quimb - v1.8.2

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 (by @mlxd in https://github.com/jcmgray/quimb/pull/238)
  • fix some windows + numba CI issues.
  • approx_spectral_function add plotting and tracking
  • add dispatching to various tensor primitives to allow overriding

New Contributors

  • @mlxd made their first contribution in https://github.com/jcmgray/quimb/pull/238

Full Changelog: https://github.com/jcmgray/quimb/compare/v1.8.1...v1.8.2

Scientific Software - Peer-reviewed - Python
Published by jcmgray about 2 years ago

quimb - v1.8.1

Enhancements:

Bug fixes:

  • Circuit.apply_gate_raw: fix kwarg bug (https://github.com/jcmgray/quimb/pull/226) by @juliendrapeau
  • fix for retrieving opt_einsum.PathInfo for single scalar contraction (https://github.com/jcmgray/quimb/issues/231).

New Contributors

  • @juliendrapeau made their first contribution in https://github.com/jcmgray/quimb/pull/226

Full Changelog: https://github.com/jcmgray/quimb/compare/v1.8.0...v1.8.1

Scientific Software - Peer-reviewed - Python
Published by jcmgray about 2 years ago

quimb - v1.8.0

Breaking Changes

Enhancements:

And can be accessed via the unified function tensor_network_1d_compress. Boundary contraction in 2D can now utilize any of these methods. - add quimb.tensor.tensor_arbgeom_compress.py with functions for compressing arbitrary geometry tensor networks using various methods. The methods are:

And can be accessed via the unified function tensor_network_ag_compress. 1D compression can also fall back to these methods. - support PBC in tn2d.contract_hotrg, tn2d.contract_ctmrg, tn3d.contract_hotrg and the new function tn3d.contract_ctmrg. - support PBC in gen_2d_bonds and gen_3d_bonds, with cyclic kwarg. - support PBC in TN2D_rand_hidden_loop and TN3D_rand_hidden_loop, with cyclic kwarg. - support PBC in the various base PEPS and PEPO construction methods. - add tensor_network_apply_op_op for applying 'operator' TNs to 'operator' TNs. - tweak tensor_network_apply_op_vec for applying 'operator' TNs to 'vector' or 'state' TNs. - add tnvec.gate_with_op_lazy method for applying 'operator' TNs to 'vector' or 'state' TNs like $x \rightarrow A x$. - add tnop.gate_upper_with_op_lazy method for applying 'operator' TNs to the upper indices of 'operator' TNs like $B \rightarrow A B$. - add tnop.gate_lower_with_op_lazy method for applying 'operator' TNs to the lower indices of 'operator' TNs like $B \rightarrow B A$. - add tnop.gate_sandwich_with_op_lazy method for applying 'operator' TNs to the upper and lower indices of 'operator' TNs like $B \rightarrow A B A^\dagger$. - unify all TN summing routines into tensor_network_ag_sum, which allows summing any two tensor networks with matching site tags and outer indices, replacing specific MPS, MPO, PEPS, PEPO, etc. summing routines. - add rand_symmetric_array, rand_tensor_symmetric TN2D_rand_symmetric for generating random symmetric arrays, tensors and 2D tensor networks.

Bug fixes:

  • fix scipy sparse monkey patch for scipy>=1.13 (#222)
  • fix autoblock bug where connected sectors were not being merged (#223)

Full Changelog: https://github.com/jcmgray/quimb/compare/v1.7.3...v1.8.0

Scientific Software - Peer-reviewed - Python
Published by jcmgray about 2 years ago

quimb - v1.7.3

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.

Full Changelog: https://github.com/jcmgray/quimb/compare/v1.7.2...v1.7.3

Scientific Software - Peer-reviewed - Python
Published by jcmgray over 2 years ago

quimb - v1.7.2

Bug fixes:

  • removed import of deprecated numba.generated_jit decorator.

Enhancements:

Full Changelog: https://github.com/jcmgray/quimb/compare/v1.7.1...v1.7.2

Scientific Software - Peer-reviewed - Python
Published by jcmgray over 2 years ago

quimb - v1.7.1

What's Changed

Enhancements:

Bug fixes:

  • fix bug in kruas_op when operator spanned multiple subsystems (#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 (#217)
  • Fix empty lines in dimacs by @jjcmoon in https://github.com/jcmgray/quimb/pull/215

New Contributors

  • @jjcmoon made their first contribution in https://github.com/jcmgray/quimb/pull/215

Full Changelog: https://github.com/jcmgray/quimb/compare/v1.7.0...v1.7.1

Scientific Software - Peer-reviewed - Python
Published by jcmgray over 2 years ago

quimb - v1.7.0

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:

Multi tag drawing support:

drawing-updates-banner

Bug fixes:

  • fixed bug where an output index could be removed by squeezing when performing tensor network simplifications.
  • Fix deprecation warnings by @king-p3nguin in https://github.com/jcmgray/quimb/pull/209

New Contributors

  • @king-p3nguin made their first contribution in https://github.com/jcmgray/quimb/pull/209

Full Changelog: https://github.com/jcmgray/quimb/compare/v1.6.0...v1.7.0

Scientific Software - Peer-reviewed - Python
Published by jcmgray over 2 years ago

quimb - v1.6.0

Breaking Changes

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

Enhancements:

  • add OpenQASM 2.0 parsing support: :meth:Circuit.from_openqasm2_file
  • :class:Circuit: add RXX, RYY, CRX, CRY, CRZ, toffoli, fredkin, givens gates
  • truncate TN pretty html reprentation to 100 tensors for performance
  • add :meth:Tensor.sum_reduce and :meth:Tensor.vector_reduce
  • :meth:contract_compressed, default to 'virtual-tree' gauge
  • add :func:TN_rand_tree
  • experimental.operatorbuilder: fix parallel and heisenberg builder
  • make parametrized gate generation even more robost (ensure matching types so e.g. tensorflow can be used)

Bug fixes:

  • fix gauge size check for some backends

Full Changelog: https://github.com/jcmgray/quimb/compare/v1.5.1...v1.6.0

Scientific Software - Peer-reviewed - Python
Published by jcmgray almost 3 years ago

quimb - v1.5.1

  • add various MPO-MPS gate methods, including zip-up and density matrix, in the experimental submodule
  • some PTensor refactoring
  • Circuit: more robust parametrized gate generation
  • various new contraction convenience interfaces (incld. array_contract)
  • add Tensor.check() and TensorNetwork.check() for diagnostics
  • add TensorNetwork.isconnected(), TensorNetwork.istree()

Full Changelog: https://github.com/jcmgray/quimb/compare/v1.5.0...v1.5.1

Scientific Software - Peer-reviewed - Python
Published by jcmgray almost 3 years ago

quimb - v1.5.0

Enhancements

  • refactor 'isometrize' methods including new "cayley", "householder" and "torch_householder" methods. See :func:quimb.tensor.decomp.isometrize.
  • add :meth:~quimb.tensor.tensor_core.TensorNetwork.compute_reduced_factor and :meth:~quimb.tensor.tensor_core.TensorNetwork.insert_compressor_between_regions methos, for some RG style algorithms.
  • add the mode="projector" option for 2D tensor network contractions
  • add HOTRG style coarse graining and contraction in 2D and 3D. See :meth:~quimb.tensor.tensor_2d.TensorNetwork2D.coarse_grain_hotrg, :meth:~quimb.tensor.tensor_2d.TensorNetwork2D.contract_hotrg, :meth:~quimb.tensor.tensor_3d.TensorNetwork3D.coarse_grain_hotrg, and :meth:~quimb.tensor.tensor_3d.TensorNetwork3D.contract_hotrg,
  • add CTMRG style contraction for 2D tensor networks: :meth:~quimb.tensor.tensor_2d.TensorNetwork2D.contract_ctmrg
  • add 2D tensor network 'corner double line' (CDL) builders: :func:~quimb.tensor.tensor_builder.TN2D_corner_double_line
  • update the docs to use the furo <https://pradyunsg.me/furo/>_ theme, myst_nb <https://myst-nb.readthedocs.io/en/latest/>_ for notebooks, and several other sphinx extensions.
  • add the 'adabelief' optimizer to :class:~quimb.tensor.optimize.TNOptimizer as well as a quick plotter: :meth:~quimb.tensor.optimize.TNOptimizer.plot
  • add initial 3D plotting methods for tensors networks ( TensorNetwork.draw(dim=3, backend='matplotlib3d') or TensorNetwork.draw(dim=3, backend='plotly') ). The new backend='plotly' can also be used for 2D interactive plots.
  • Update :func:~quimb.tensor.tensor_builder.HTN_from_cnf to handle more weighted model counting formats.
  • Add :func:~quimb.tensor.tensor_builder.cnf_file_parse
  • Add :func:~quimb.tensor.tensor_builder.random_ksat_instance
  • Add :func:~quimb.tensor.tensor_builder.TN_from_strings
  • Add :func:~quimb.tensor.tensor_builder.convert_to_2d
  • Add :func:~quimb.tensor.tensor_builder.TN2D_rand_hidden_loop
  • Add :func:~quimb.tensor.tensor_builder.convert_to_3d
  • Add :func:~quimb.tensor.tensor_builder.TN3D_corner_double_line
  • Add :func:~quimb.tensor.tensor_builder.TN3D_rand_hidden_loop
  • various optimizations for minimizing computational graph size and construction time.
  • add 'lu', 'polar_left' and 'polar_right' methods to :func:~quimb.tensor.tensor_core.tensor_split.
  • add experimental arbitrary hamilotonian MPO building
  • :class:~quimb.tensor.tensor_core.TensorNetwork: allow empty constructor (i.e. no tensors representing simply the scalar 1)
  • :meth:~quimb.tensor.tensor_core.TensorNetwork.drop_tags: allow all tags to be dropped
  • tweaks to compressed contraction and gauging
  • add jax, flax and optax example
  • add 3D and interactive plotting of tensors networks with via plotly.
  • add pygraphiviz layout options
  • add :meth:~quimb.tensor.tensor_core.TensorNetwork.combine for unified handling of combining tensor networks potentially with structure
  • add HTML colored pretty printing of tensor networks for notebooks
  • add quimb.experimental.cluster_update.py

Bug fixes:

  • fix :func:~quimb.tensor.decomp.qr_stabilized bug for strictly upper triangular R factors.

Full Changelog: https://github.com/jcmgray/quimb/compare/1.4.2...v1.5.0

Scientific Software - Peer-reviewed - Python
Published by jcmgray about 3 years ago

quimb - 1.4.2

Add automatic building and publishing of quimb to pypi.

Scientific Software - Peer-reviewed - Python
Published by jcmgray over 3 years ago

quimb - 1.4.1

Enhancements

  • unify much functionality from 1D, 2D and 3D into general arbitrary geometry class :class:quimb.tensor.tensor_arbgeom.TensorNetworkGen
  • refactor contraction, allowing using cotengra directly
  • add :meth:~quimb.tensor.tensor_core.Tensor.visualize for visualizing the actual data entries of an arbitrarily high dimensional tensor
  • add :class:~quimb.tensor.circuit.Gate class for more robust tracking and manipulation of gates in quantum :class:~quimb.tensor.circuit.Circuit simulation
  • tweak TN drawing style and layout
  • tweak default gauging options of compressed contraction
  • add :meth:~quimb.tensor.tensor_core.TensorNetwork.compute_hierarchical_grouping
  • add :meth:~quimb.tensor.tensor_core.Tensor.as_network
  • add :meth:~quimb.tensor.tensor_core.TensorNetwork.inds_size
  • add :meth:~quimb.tensor.tensor_core.TensorNetwork.get_hyperinds
  • add :meth:~quimb.tensor.tensor_core.TensorNetwork.outer_size
  • improve :meth:~quimb.tensor.tensor_core.TensorNetwork.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 (:pull:150)
  • update CI infrastructure

Bug fixes:

  • fix force atlas 2 and weight_attr bug (:issue:126)
  • allow unpickling of PTensor objects (:issue:128, :pull:131)

Scientific Software - Peer-reviewed - Python
Published by jcmgray over 3 years ago

quimb - 1.4.0

Enhancements

  • Add 2D tensor network support and algorithms
  • Add 3D tensor network infrastructure
  • Add arbitrary geometry quantum state infrastructure
  • Many changes to :class:TNOptimizer
  • Many changes to TN drawing
  • Many changes to :class:Circuit simulation
  • Many improvements to TN simplification
  • Make all tag and index operations deterministic
  • Add :func:~quimb.tensor.tensor_core.tensor_network_sum, :func:~quimb.tensor.tensor_core.tensor_network_distance and :meth:~quimb.tensor.tensor_core.TensorNetwork.fit
  • Various memory and performance improvements
  • Various graph generators and TN builders

Scientific Software - Peer-reviewed - Python
Published by jcmgray about 4 years ago

quimb -

Enhancements

  • Added time dependent evolutions to :class:~quimb.evo.Evolution when integrating a pure state - see :ref:time-dependent-evolution - as well as supporting LinearOperator defined hamiltonians (:pull:40).
  • Allow the :class:~quimb.evo.Evolution callback compute= to optionally access the Hamiltonian (:pull:49).
  • Added :meth:quimb.tensor.tensor_core.Tensor.randomize and :meth:quimb.tensor.tensor_core.TensorNetwork.randomize to randomize tensor and tensor network entries.
  • Automatically squeeze tensor networks when rank-simplifying.
  • Add :meth:~quimb.tensor.tensor_1d.TensorNetwork1DFlat.compress_site for compressing around single sites of MPS etc.
  • Add :func:~quimb.tensor.tensor_gen.MPS_ghz_state and :func:~quimb.tensor.tensor_gen.MPS_w_state for building bond dimension 2 open boundary MPS reprentations of those states.
  • Various changes in conjunction with autoray <https://github.com/jcmgray/autoray>_ to improve the agnostic-ness of tensor network operations with respect to the backend array type.
  • Add :func:~quimb.tensor.tensor_core.new_bond on top of :meth:quimb.tensor.tensor_core.Tensor.new_ind and :meth:quimb.tensor.tensor_core.Tensor.expand_ind for more graph orientated construction of tensor networks, see :ref:tn-creation-graph-style.
  • Add the :func:~quimb.gen.operators.fsim gate.
  • Make the parallel number generation functions use new numpy 1.17+ functionality rather than randomgen (which can still be used as the underlying bit generator) (:pull:50)
  • TN: rename contraction_complexity to :meth:~quimb.tensor.tensor_core.TensorNetwork.contraction_width.
  • TN: update :meth:quimb.tensor.tensor_core.TensorNetwork.rank_simplify, to handle hyper-edges.
  • TN: add :meth:quimb.tensor.tensor_core.TensorNetwork.diagonal_reduce, to automatically collapse all diagonal tensor axes in a tensor network, introducing hyper edges.
  • TN: add :meth:quimb.tensor.tensor_core.TensorNetwork.antidiag_gauge, to automatically flip all anti-diagonal tensor axes in a tensor network allowing subsequent diagonal reduction.
  • TN: add :meth:quimb.tensor.tensor_core.TensorNetwork.column_reduce, to automatically identify tensor axes with a single non-zero column, allowing the corresponding index to be cut.
  • TN: add :meth:quimb.tensor.tensor_core.TensorNetwork.full_simplify, to iteratively perform all the above simplifications in a specfied order until nothing is left to be done.
  • TN: add num_tensors and num_indices attributes, show num_indices in __repr__.
  • TN: various improvements to the pytorch optimizer (:pull:34)
  • TN: add some built-in 1D quantum circuit ansatzes: :func:~quimb.tensor.circuit_gen.circ_ansatz_1D_zigzag, :func:~quimb.tensor.circuit_gen.circ_ansatz_1D_brickwork, and :func:~quimb.tensor.circuit_gen.circ_ansatz_1D_rand.
  • TN: add parametrized tensors :class:~quimb.tensor.tensor_core.PTensor and so trainable, TN based quantum circuits -- see :ref:example-tn-training-circuits.

Bug fixes:

  • Fix consistency of :func:~quimb.calc.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.

Scientific Software - Peer-reviewed - Python
Published by jcmgray over 5 years ago

quimb - quimb-1.2.0

Enhancements

  • Added kraus_op for general, noisy quantum operations
  • Added projector for constructing projectors from observables
  • Added measure for measuring and collapsing quantum states
  • Added cprint pretty printing states in computational basis
  • Added simulate_counts for simulating computational basis counts
  • TN: Add TensorNetwork.rank_simplify
  • TN: Add TensorNetwork.isel
  • TN: Add TensorNetwork.cut_iter
  • TN: Add 'split-gate' gate mode
  • TN: Add optimize_tensorflow.TNOptimizer for tensorflow based optimization of arbitrary, contstrained tensor networks.
  • TN: Add Dense1D.rand
  • TN: Add tensor_core.connect to conveniently set a shared index for tensors
  • TN: make many more tensor operations agnostic of the array backend (e.g. numpy, cupy, tensorflow, ...)
  • TN: allow tensor_1d.align_TN_1D to take an MPO as the first argument
  • TN: add SpinHam.build_sparse
  • TN: add Tensor.unitize and TensorNetwork.unitize to impose unitary/isometric constraints on tensors specified using the left_inds kwarg
  • Many updates to tensor network quantum circuit simulation including:

    • CircuitMPS
    • CircuitDense
    • 49-qubit depth 30 circuit simulation example https://quimb.readthedocs.io/en/latest/examples/exquantumcircuit.html
  • Add from quimb.gates import * as shortcut to import X, Z, CNOT, ....

  • Add U_gate for parametrized arbitrary single qubit unitary

Bug fixes:

  • Fix pkron for case len(dims) == len(inds) (#17, #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 (#22) and L=2 DMRG
  • Fix norm(X, 'trace') for non-hermitian matrices
  • Add autoray as dependency (#21)

Scientific Software - Peer-reviewed - Python
Published by jcmgray about 7 years ago