1.3.0
Enhancements
- Added time dependent evolutions to :class:
~quimb.evo.Evolutionwhen integrating a pure state - see :ref:time-dependent-evolution- as well as supportingLinearOperatordefined hamiltonians (:pull:40). - Allow the :class:
~quimb.evo.Evolutioncallbackcompute=to optionally access the Hamiltonian (:pull:49). - Added :meth:
quimb.tensor.tensor_core.Tensor.randomizeand :meth:quimb.tensor.tensor_core.TensorNetwork.randomizeto randomize tensor and tensor network entries. - Automatically squeeze tensor networks when rank-simplifying.
- Add :meth:
~quimb.tensor.tensor_1d.TensorNetwork1DFlat.compress_sitefor compressing around single sites of MPS etc. - Add :func:
~quimb.tensor.tensor_gen.MPS_ghz_stateand :func:~quimb.tensor.tensor_gen.MPS_w_statefor 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_bondon top of :meth:quimb.tensor.tensor_core.Tensor.new_indand :meth:quimb.tensor.tensor_core.Tensor.expand_indfor more graph orientated construction of tensor networks, see :ref:tn-creation-graph-style. - Add the :func:
~quimb.gen.operators.fsimgate. - Make the parallel number generation functions use new
numpy 1.17+functionality rather thanrandomgen(which can still be used as the underlying bit generator) (:pull:50) - TN: rename
contraction_complexityto :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_tensorsandnum_indicesattributes, shownum_indicesin__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.PTensorand so trainable, TN based quantum circuits -- see :ref:example-tn-training-circuits.
Bug fixes:
- Fix consistency of :func:
~quimb.calc.fidelityby 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_PARto set whether numba should use automatic parallelization - mainly to fix travis segfaults. - Make cache import and initilization of
petsc4pyandslepc4pymore robust.