Changelog
v1.12.5
Update bibtex with publications, add zenodo package for v1.12.x (being in preparation).
Fix sphinx build breaking (type checking, cyclic imports)
Small fixes sphinx (broken links, short underlining)
Reduce number of table of contents entries in sphinx for changelog (group by minor current minor version).
Update readme (removing outdated information).
v1.12.4
Bugfix: fixing a bug in
qtealeaves.emulator.mps_simulator.MPS.meas_bond_entropy()where casting to a numpy array made problems in GPU computations.
v1.12.3
Bugfix: removing tracking of singular values for
oqs_mode=3for now.
v1.12.2
v1.12.1
Definetly removed the deprecated
set_subtensor_entrymethod.Fixed
test_batched_tensordotto be compatible with GPU.Fixed
test_dynamics_tunneling_mode_1_DenseMPO.Fixed
einsumto handle the case where output is a scalar (gets converted to a 0-dim array).
v1.12.0
Added
squeeze_updatemethod to theqtealeaves.tensors._AbstractQteaTensor(and derived) class, which allows to squeeze the tensor in-place, mimicking thenp.squeezemethod. It is similar to.remove_dummy_link(), but it accepts alsoNoneor a list of dimensions to be squeezed.Fixed the logic of
qtealeaves.abstracttns.abstract_tn._AbstractQteaTensor.move_pos(), to handle both iterable and non-iterable effective operators on links. This required the addition ofqtealeaves.tensors._AbstractQteaTensor.__init_subclass__()to raise an error if someone tries to implement__iter__in derived classes.Added
__truediv__abstract method to theqtealeaves.tensors._AbstractQteaTensorto force implementing the division of a tensor by a scalar in derived classes.Added
__pow__and__ipow__methods to theqtealeaves.tensors._AbstractQteaBaseTensor. (Useful for qchaitea).Removed deprecated machine learning methods. This removes just the
ml_...methods, but some logic related to machine learning was still present in the code, e.g., in theiso_towards. This is a breaking change, removing of the remaining logic should not.
Summary for versions v1.11.x
v1.11.4
v1.11.3
typing for ansaetze.
v1.11.2
Added
dimandsizeattributes toHilbertCurveMapfor easier access.Fixed
Ellipsishandling in_AbstractQteaBaseTensor.__getitem__.Fixed issue with
QteaTensor.convert_singvalswhere passing a dtype as a scalar type would lead to an error. Now it handles allnp.typing.DTypeLikeinputs.Fixed
_AbstractQteaTensor.__eq__to returnFalsewhen comparing with non-tensor objects.
v1.11.1
Tracking of cut singular values implemented for the
_AbstractMatrixTNclass.Fixed
_AbstractMatrixTN.apply_one_site_operatorand_AbstractMatrixTN.apply_two_site_operatorto pass correct arguments to.tensordot.Added
.current_kraus_dimto LPTNFixed
_initialize_lptnto set singvals in the correct backend.
v1.11.0
Improved tracking of singular values cut during two-site gate application, both nearest-neighbor and long-range, and multi-site MPO application for MPS, TTN, TTO. All methods involving truncation now return the truncated singular values.
Summary for versions v1.10.x
v1.10.5
Implemented effective operators for DenseMPOs for ground state search.
Added the fit_mpo() method: variationally find a new state representation of the contraction of a DenseMPO with an existing state. For MPS and TTN.
v1.10.4
Open system dynamics (
oqs_mode=3) now available for LPTN.New convergence parameter
cut_ratio_krausused in application of Kraus channels.
v1.10.3
Replaced np.bool with bool, as the former is deprecated in newer numpy versions.
v1.10.2
Introduced the
batched_tensordotmethod for efficient tensor contraction in cases where one or more links are associated with batch dimensions.
v1.10.1
typing checked by
mypyalso forqtealeaves/observables.Improvements to changelog.
v1.10.0
All observables save in HDF5 format. Fortran-style read/write functions are removed.
input directory removed. Simulation hash goes to output directory.
Static and dynamic observables are returned as time-ordered arrays. The user is returned a dictionary with observable names as keys and arrays of time-ordered results as values.
Implementing bond entropy measurement on left/right boundary partitions of a TTO.
TTO log negativity mode “A” updated to “N” for native partitions.
Summary for versions v1.9.x
v1.9.1
Convergence parameters are specified when the
read_pickle()function is called, otherwise a warning is raised.
v1.9.0
Major improvements to QUBOSolver. Key new features include support for reading from and writing to QUBO problems as standard LP files for combinatorial optimization, and a redesigned interface for QUBO convergence parameters that inherits from the qtealeaves base convergence parameters object.
Summary for versions v1.8.x
v1.8.4
typing checked by
mypyforqtealeaves/tensorssubmodule passingmypy --disallow-untyped-defs qtealeaves/tensors/. | grep "qtealeaves/tensors"Extending some docstring, moving some methods to abstract base tensor.
Non-backwards compatible changes include interface of
convert,attach_dummy_link,remove_dummy_link(relying on undocumented return).
v1.8.3
v1.8.2
Fix observables tests on other QTEA applications, revert build server toolkit to develop
v1.8.1
Revamped the observables for more clarity and better code quality. To migrate from old code, rename the observables according to the new names:
TNObsBondEntropy->BondEntropyTNObsCorr->CorrelationTNObsCustom->CustomCorrelationTNCustomFunctionObs->CustomFunctionTNObsDenseMPOList->GenericMPOTNObsLocal->LocalTNObsLogNegativity->LogNegativityTNObsDistance2Pure->OverlapTNObsProbability->ProbabilityTNObsProjective->ProjectiveTNState2File->State2FileTNObsTensorProduct->TensorProductTNObsTZeroCorr->TimeCorrTNObsVarE->VarETNObsWeightedSum->WeightedSum
Added a
measuremethod to the observables, which is now the main method to call for measurements.run_tn_measurementis still advisable when measuring multiple observables at once, since it introduces some performance optimizations.Bugfix for appending
CustomCorrelationinstances to each other.Bugfix for
TTO.from_statevectorwhen the input state has a number of sites that is not a power of two.Bugfix for
TTO.from_statevectornot setting thetensor_backendcorrectly.Bugfix for
TTO.log_negativitynot returning the tensor on cpu.Bugfix for
_AbstractTN.mpi_send_tensor()and_AbstractTN.mpi_receive_tensor()passing too many arguments.Bugfix for
.flatten()not available for TensorFlow backend.Changed how
CustomFunctionhandleskwargs: they have to match the input arguments of the callable.Added a test case for measuring a bunch of observables all together.
Added
TTOto the observables test casesAdded typing to observables.
Added a
baseparameter toBondEntropyandX.meas_bond_entropy, which allows to specify the logarithm base for the entropy calculation.TTO.entropy()now acceptsbaseinstead oflocal_dimto specify the logarithm base.Removed the tn type and tensor backend input args from
run_tn_measurement: they are automatically inferred through from the input state.Added type hints to
observablesmodule.
v1.8.0
Version bump to separate new develop from master.
Summary for versions v1.7.x
v1.7.34
Minimal changes to Gitlab CI/CD configuration, to fix some issue for the public version.
v1.7.33
Improve einsum performance for contractions of two tensors.
v1.7.32
Switch to Gitlab CI/CD.
v1.7.31
Hotfix for mixed device mode and asynchronous data movement causing race conditions. Issue opened for better implementation handling extreme cases.
v1.7.30
Bugfix logger not writing to file when running in Jupyter notebook or simulations in for-loop
v1.7.29
Do not check dtype in
_AbstractQteaBaseTensor.__setitem__()if attribute not available.
v1.7.28
Allow true two-tensor update in variational ground state search via statics_method=6.
Skip same tensors pairs in two-site variational updates.
v1.7.27
Modernized the build system by relying solely on
pyproject.toml.setup.pyis now a thin wrapper aroundsetuptools.setup(). This andconanfile.pywill be removed once we switch to Gitlab CI/CD.Removed
requirements.txtas dependencies are now specified inpyproject.toml.
v1.7.26
Fix bug moving tensors to memory device in to_statevector in MPS class.
v1.7.25
Boolean flag to allow convergence parameters to be copied (in rare cases where the convergence parameters cannot be pickled, deepcopy might also be prevented and the error will be raised during the copy).
_add (MPS) deepcopies convergence parameters instead of creating them from scratch. Same fix for kron (TTN).
Summation of TTN takes convergence parameters from first state in the sum instead of the default ones.
v1.7.24
Allow to skip duplicate checks when creating a DenseMPO.
v1.7.23
Updates to documentation (no version bump in version.py and conanfile.py).
v1.7.22
Update year 2025 to 2026.
Update bibliography file in docs.
v1.7.21
Bugfix MPI calls (no more TN_MPI_TYPES necessary for _AbstractQteaTensor)
v1.7.20
Allow to inject custom ansatz via tn_type for tensor network as well as using our ansatz and pass it. This allows to make tn_type as integer deprecated in the future.
Allow to choose ansatz via string.
v1.7.19
Fixed bug in __mul__ function in mps_simulator.
Fixed typo in mps_simulator.
v1.7.18
Implement set_subtensor_entry via slices and copy-paste unittest back for set_subtensor_entry.
v1.7.17
Removing potential dangerous default arguments TNOperators and TensorBackend triggered mainly by TNOperators fulfilling the role of a dictionary.
v1.7.16
Bugfix: snapshot of SparseMPO matrix no more accesses identity (which is not always defined).
Additional feature to return only diagonal of SparseMPO matrix.
v1.7.15
Re-introduce
set_subtensor_entrybecause it is still needed for symmetries. (Deprecated warning is raised to not add it to new implementations.)Finite-T simulation will write to the log that they are converged, but not exit (as the user requested a temperature grid, not one final state).
v1.7.14
Removed the sorting of the excited states in get_static_obs.
Bugfix: generalized TTN.apply_mpo() to work with all tensor backends.
v1.7.13
Provide snapshot of SparseMPO as matrix on full Hilbert space to facilitate debugging.
Fix inefficient
__imul__and__itruediv__; now without copy for MPS. (Comment: apparently, no other ansatz has this implemented.)Fix
_addin MPS not usingcls.Fix
DenseMPOand calls tomove_posFix TTNs
dot, now<self|other>consistent with tensors and MPS.MPS
add_siteaccepts nownp.ndarrayfor state.MPS
get_substatewithout truncation does only minimal shifting of iso center.DenseMPO and its
from_tensor_listcan acceptnp.ndarray.Intermediate abstract class
_AbstractEffectiveProjectorand_AbstractEffectiveMpoforisinstancechecks.Modeling by layout avoids relying on 2d float position and uses integer indices of the lattice now (allowing for more flexibility on how the 2d system is encoded, e.g., fake-2d system being 1d).
Insert full path for autoclass of TNConvergenceParameters.
v1.7.12
Implement TTO “batched” measurement for each eigenstate for single-site reduced density matrix, local observables, and overlap to a pure state.
Bugfix TTO measurement
meas_tensor_productandmeas_weighted_sum.Fix order checks
local_measin abstract TN.
v1.7.11
Updated dockerfile.
v1.7.10
Prepare public version
Import v1.5.21 changes from
master(stable branch).
v1.7.9
Method
renyi_negativity()now available for theTTOclass
v1.7.8
Example of CustomSiteTerm added.
v1.7.7
Updated html documentation for dense MPOs and iTPOs.
Updated docstrings for dense MPO and iTPO functions.
print()now prints meaningful output for dense MPO and iTPO objects.Added MPOSite function
from_operator()which allows to generate MPOSite directly from a passed operator.Bugfix in aTTN check for convergence of disentangler optimization which was failing for symmetric tensors and
"mera"disentangler optimization.Bugfix in applying disentangler layer to Hamiltonian which was sometimes not compressing the horizontal link bond dimension.
Removed throwing an error when running symmetric tensor simulation with automatic
mpo_mode, as the automatic value falls to iTPO.
v1.7.6
Added convergence parameter
solver_reorthogonalizefor eigen/exponantiation solver which controls with respect to how many vectors in the Krylov basis is a current vector reorthogonalized, in each iteration.
v1.7.5
Removed
set_subtensor_entry(). Numpy-like indexing is now used throughout the library.
v1.7.4
Fixing versions for Jenkins
v1.7.3
Updated dockerfile.
v1.7.2
v1.7.1
Improvement of
get_local_kraus_operators()with new numpy-like indexing feature
v1.7.0
The measurable observables are no longer specified in the ansatz class but in the observables, individually, through a whitelist of ansatzes.
Introducing abstract
eigvalshin_AbstractQteaBaseTensor.
Summary for versions v1.6.x
v1.6.26
Bugfix in
get_eigenstates()for TTO.
v1.6.25
Enabled batches for custom correlators.
Fixed a bug where creating a TTN with num_sites not a power of two in TTN.product_state_from_local did not correctly mask the unused tensors.
Fixed the check of convergence in TTN.sum_approximate().
Fixed a bug where the result of sum_approximate() would get an additional overall phase if the size was not a power of two.
v1.6.24
Switch build server to GPUs; unittest run now as well on GPU.
v1.6.23
Implemented gradient-descent based disentangler optimization for aTTNs. The optimization method can be choosed via convergence parameter
de_opt_strategyBugfix optimization failing with the new GPU torch solver
DenseTensorEigenSolverHBugfix aTTNs: now running on mixed device mode
Bugfix: symmetric tensor identity initialization
Bugfix aTTNs: explicitly handle contractions that destroy the local Hilbert space, which breaks the disentangler optimization (like annihilation operator on an empty site).
v1.6.22
Overwritten
__str__()function forAbstractQteaBaseTensorto print a tensor class with its elements, shape, dtype, and device.Added
_repr_html_()function forAbstractQteaBaseTensorfor print output in Jupyter Notebook.
v1.6.21
Now every tensor inheriting from
AbstractQteaBaseTensorcan be indexed with__getitem__and__setitem__methods. This allows to use the same syntax as for numpy arrays, e.g.,tensor[0, 1] = 1.0. This covers all types of tensors, excluding symmetric ones.
v1.6.20
show_map method added in HilbertCurveMap
GeneralizedHilbertCurveMap class added.
The new class is inherited from HilbertCurveMap.
It alllows to use the Hilbert Curvature for lattices with linear sizes which are not powers of two.
The input lattice is centered in an embedding one, with power-of-two sizes.
It is implemented for 2d and 3d.
hilbert_curvature.py renamed in mapping.py
test_hilbert_curvature.py renamed in test_mapping.py
test_GeneralizedHilbertCurveMap.py added
v1.6.19
New observable
TNObsLogNegativityfor theTTOallowing to measure the logarithmic negativity for various partitions.Bugfixes for
save_pickle()andload_pickle()with mixed devide mode
v1.6.18
Spin-1 operators now available
New model: spin-1 XYZ model in 1D, i.e,
get_spin1_xyz_1d()
v1.6.17
CustomSiteTerm class added.
The new class allows one to add a n-body term (n is generic) by specifying its coordinates.
The class is independent from the dimensionality of the problem.
v1.6.16
Fortran logic removed.
tensor_backend parameter of GreenTeaSimulation is now deprecated.
disentangler_file, qgreentea_exe and verbosity parameters of GreenTeaSimulation were deprecated and now are removed.
TensorProductOperator class is removed.
v1.6.15
Added Conjugate gradient descent as optimization method to
ml_optimize(). To use it, settn_ml_mode = "labellink_conj"or"linkfree_conj".
v1.6.14
Import seeding via tensor backend from master branch and v1.5.18.
Make
set_seedan abstract method for the base tensor class.
v1.6.13
Added the new observable
TNObsVarEthat measures the energy variance of a state VarE = <H^2> - <H>^2. Equally, other MPOs can be measured.Added functions
trace()andmpo_product()forDenseMPOListandITPOAdded functions for measuring expectation value directly on the state
Bugfix in
DenseMPO._sort_sites_chi_one()not setting operator string after sorting.
v1.6.12
Added arbitrary precision sampling for meas_unbiased_probabilites.
v1.6.11
v1.6.10
v1.6.9
Restructure tensors a bit (abstract classes)
No MPI types to be passed to tensors.
v1.6.8
Implemented the MPSProjector class, which allows iterative calculation of excited states. Set ‘num_excited_states’ = x in your params dictionary for x + 1 iterations (ground state and x excited).
Added a new MPS method
sum_approximate. It takes a list of MPSs and a list of amplitudes, and efficiently calculates an optimal MPS representation of their sum.
v1.6.7
Added an option to add noise in the ground state search.
noiseis a new convergence parameter. Can be a number (defaults to zero), or a list, with a value for each sweep.
v1.6.6
v1.6.5
New eigensolver targeting dense tensors; optimized for reducing kernel calls on GPU.
Abstract checks for eigensolver
Abstract solver class unifying dimension of problem, iterations, tolerance etc.
v1.6.4
Added tolerance in abstract checks, based on
dtype_eps.Tolerance coherent across tests.
Added
subTestcontext in for loops for abstract tensor checks.
v1.6.3
Removed unnecessary warning in custom correlation. The measurement works for terms of 3+ operators.
v1.6.2
Deprecation warnings added for machine learning methods.
v1.6.1
Import changes from v1.5.9 and one fix of credentials.
Update developers readme.
v1.6.0
New minor version; identical to v1.5.8.
Summary for versions v1.5.x
v1.5.21
Bugfixes for computational device, e.g., MPS initialization and context manager.
Small changes towards a fix for symmetric tensors.
kronfunctions allowing to install isometry center directly in the new wave functionImplement
get_substatefor TTN (working only for subsystems being subtree of the current tree).Implement
flipfor MPS inverting the order.Enabling SVD via eigenvalue as well on CPU; allowing to enforce SVD via eigenvalue on unfavorable rectangular matrices (no speedup observed).
v1.5.20
Update in the publication data.
v1.5.19
Bugfix in
get_eigenstates()for TTO.
v1.5.18
Set seed via tensor backend allowing to also set seeed of backend (for now if available).
v1.5.17
Bugfix: enforce normalization of a random TTN due to accumulated floating point errors (especially for single precision, normalization was given up to four digits, but a second call gets it to around seven digits. Also be aware of accumulating errors in single-precision simulations for large bond dimensions).
v1.5.16
Bugfix unittest
tto.from_lptn.
v1.5.15
Bugfix checkpoints could not restart when running with GPUs.
Bugfix convert function not converting all the attributes when doing the conversion.
v1.5.14
Bugfix: correct the expected norm in
test_set_subtensor_entryand check absolute difference.
v1.5.13
Bugfix: enforcing the local_dims to be a python list.
Replaced
np.repeat()with python lists for local_dims in many places.
v1.5.12
bugfix: changed the method for randomizing the initial state for excited state search.
v1.5.11
Allowing
meas_unbiased_probabilityandprobabilityobservable to work with different precision.Bugfix in probability observable.
v1.5.10
Fixing import checks to be compatible with cluster environments that have cupy but are running without GPU.
v1.5.9
Switch to new build server.
Update references with new zenodo packages.
v1.5.8
Prepare public version with
python3.11.Changes up to 1.5.0 - 1.5.7 can break backwards compatability.
Bugfix probability measurements with torch (or non-numpy backend).
Improve unittests MPI and tensors, e.g., protect with timeout.
v1.5.7
Fixed a bug in probability observable.
Imaginary time evolution with real dtype improved and generalized to be compatible with torch tensors.
v1.5.6
More general
MLDataMPO.from_matrixand_ml_predict_label_link_via_mpo
v1.5.5
Memory-friendly measurement of two-point correlators; user can specify batch size in the observable as optional argument (breaks backwards compatibility of
to_itpowhich is now an iterator).
v1.5.4
In
QuantumGreenTeaSimulation, the defaulttn_typeis now 6 (MPS), and thetensor_backendis 2 (non-symmetric simulation).Fixing errors in several unittests.
Fixing failing documentation autoclasses.
Fixing probability type in MPS
apply_projective_operator.Patching
tensordotby automatic (warned) switching to left-tensor device.meas_localnow converts numpy/cupy observable operators to backend tensors.
v1.5.3
Fixed a bug where the cpu+gpu mode failed for systems with masked tensors (when size is not power of two) because tensors were moved incorrectly.
Added the get_unmasked_positions method for the TTN.
v1.5.2
Bugfixes probability observable, especially confusing default values.
Probability observable with “U” returns count now as well.
Detect complex numbers with imaginary part equal to zero in
QteaTensorsmultiplication (allowing in-place updates).
v1.5.1
Update official version for build server to python3.11 via new dockerfile.
Introduce unittests for MPI checking tensor’s methods; improve MPI tooling.
Improve abstract checks for tensor classes.
v1.5.0
Version bump on minor (no changes).
Summary for versions v1.4.x
v1.4.38
Implemented sorting of the overlaps with native Python functions, because pytorch’s argsort() does not support lists.
Bugfix normalization of the projected tensors.
v1.4.37
Bugfix for unnormalized state after space-link expansion and truncation.
v1.4.36
Prepare public version (just version bump and merge conflicts).
v1.4.35
Method
product_state_from_local_states_2d()for the TTO class.
v1.4.34
Mixed device update, new mixed device notation is
cpu+gpu.GPU switch decorator to allow choosing GPU via index, e.g.,
gpu:1. As mixed devicecpu+gpu:0is allowed.Small fixes: small fixes in conversion data types, devices to be consistent.
Remove in tensor
get_sqrt_funcandget_argsort_funcwhich can be replaced withget_attr.
v1.4.33
Fixed a bug where local measurements would not update when loading a pickled state. Pickling now removes the cache of local density matrices.
v1.4.32
Reorder some unittest to match submodule structure of qtealeaves.
Update bibtex collection for Quantum TEA.
v1.4.31
Minor refactor & typo in convergence parameters.
v1.4.30
Introduce new tensor network machine learning modes, e.g., using backpropagation.
Quantum mutual information and reduced two-site density matrices for TTN.
Temporary folders for more unittests
Decall method for unittest class goes into tooling.
Bugfixes mixed device, reading files, extension attribute of TN.
v1.4.29
New
oqs_mode=3for open system dynamics with density operators (TTO)New
AbstractTNmethodapply_local_kraus_channeland its implementation for theTTOclassObservable
meas_bond_entropynow available for theTTOclassNew method
get_local_kraus_operatorsin theITPOclass, which constructs Kraus operators from input (local) Lindblad operatorsNew method
eig, which return eigenvalues and eigenvectors of a two-leg tensorNew method
expm, which returns the exponential of a tensorGeneralized method
diagsuch that it allows to pass a vector
v1.4.28
Bugfix for local measurements for the mixed device (cgpu) mode.
Bugfixes for ttn_projectors for the mixed device mode.
v1.4.27
Bugfix
LPTNread() method was not reading pickled statesBugfix in
TTO._probabilitiesto make compatible with qredtea backendsEnabled
static_methodinTNConvergenceParametersFiniteTto be a list of different imaginary time evolution methods.
v1.4.26
Update convergence parameters for python, restructure order and docstring.
v1.4.25
Implemented a randomize method for all tensor networks.
v1.4.23
Implemented
from_xfeature to construct a desired tn from another tn ansatz.
v1.4.22
Special handling of linter settings removed.
v1.4.21
Bugfix for pytest test discovery
v1.4.20
Fixing TTO initialization argument to interface correctly with matcha.
v1.4.19
License copyright update and year update.
v1.4.18
Bugfix convert cached local density matrices.
v1.4.17
Added
AbstractTNfunctionget_substateand its implementation for MPS.Added
kronas the abstract method of_AbstractTN, implementation was present
for MPS and _AbstractMatrixTN, now implemented as well for TTN.
* Bugfix MPS random initialization was not imposing dummy link on last site.
v1.4.16
Bugfix generation example tensor with symmetries (added argument to generate base tensor class).
Enforce normalization during measurements; catch missing normalization in one imaginary time evolution mode.
v1.4.15
Bugfix for SPO when running with backend different than numpy
Bugfix OPES, improved error handling for OPES.
v1.4.14
Second round of streams enabling them iTPO loops. Few use-cases with benefit according to benchmark.
v1.4.13
Tensor network machine learning: enable label-link, decomposition-free iso-shift only for TN-ML.
Implement RQ (default is QR with permutation, but tensors can overwrite now for performance, scipy’s RQ does not seem to work).
v1.4.12
Bugfix for operator sets (Lindblad term)
Product state from local states allows different local dimension enabling list of vectors.
Bugfix attribute check in quantum model.
v1.4.11
Added
get_eigenstatesmethod to theTTOclass. It extracts a number of selected eigenstates in the TTN format and the respective probabilities from a given TTO.
v1.4.10
Autoselection of disentangler positions now only takes positions which lay fully on any MPO term of Hamiltonian.
Bugfix in aTTN checkpoints: the disentanglers were optimized in every sweep even if there was checkpoint to be loaded after.
v1.4.9
Enable complex time evolution with dt having real and imaginary part.
v1.4.8
Fixed a bug that wrote the string and the json version of the overlaps between excited states into the same file.
Overlaps are only written in json format.
1.4.7
Implemented an abstract stream method to generalize streams for all backends (streams can be enabled for cupy/GPU by the user, but are not enabled by default).
v1.4.6
Implemented the TTNProjector class, which allows iterative calculation of excited states. Set ‘num_excited_states’ = x in your params dictionary for x + 1 iterations (ground state and x excited).
Added a new TTN method
sum_approximate. It takes a list of TTNs and a list of amplitudes, and efficiently calculates an optimal TTN representation of their sum.Fixed a bug in the distance2pure measurement. Now supports pickled states, and MPS.
v1.4.5
Work on
from_local_statesto make it consistent across all ansätze.
v1.4.4
Bugfix tensor-backend-related function
sqrtin mps_simulator.py was used on numpy array.
v1.4.3
Added a tensor-network based QUBO solver in the new submodule
qtealeaves.optimization. The solver takes a QUBO problem in a common format and returns the solution via qtealeaves tensor network methods. Propagated this new submodule through the infrastructure, including unittest and example on a small set of small-size integer random instances.
v1.4.2
Fixed convergence issue with arpack: if the conditions are not met with
arnoldi_min_tolerance, thearnoldi_max_toleranceis used. If even this tolerance is too big, the optimization of the tensor is carried out by qtealeaves solver.Added
MPS.product_state_from_local_statesas inTTN.
v1.4.1
Update tooling to pylint==3.2.4 and black=24.4.2.
Custom error class
QTeaErrorandQTeaLeavesErrorallowing to tailor try-except statements to quantum tea.
v1.4.0
Introduces major diff with minimal changes (import paths) to the code logic.
Version bump minor to 1.4.0 as not compatible with 1.3.x in qmatchatea due to imports.
Include isort as a git (pre-commit) hook.
Resolves circular imports in library code by using full import paths.
Full import paths are now required when importing names with a leading underscore, in both library and user code.
Summary for versions v1.3.x
v1.3.17
added the test_check_completeness() to the test_examples.py file, to check that are the examples in the Examples folder are properly unittested
v1.3.16
Bugfix
assert_int_valueshad inplace update (discovered when generating mapping for irreps and original Hilbert space, not clear where the inplace update happens).
v1.3.15
renamed the DELayer() methods extend() and append() as they were overwriting the pickle() layers and messing up unpickling.
moved the get_default_datamover() to base_tensor_class
solved the sum() bugfix appearing when using aTTNs with non-numpy symmetric tensors
v1.3.14
Move observables unittests into qtealeaves as abstract class
Bugfixes to make all backends pass the observables unittests
v1.3.13
Added singlet fission 1d model as one of the pre-defined default models
Added singlet fission 1d example
v1.3.12
Bugfix integer padding for product states.
Added get_default_datamover() method for tensor classes.
v1.3.11
Einsum optimization level as static function
stack first and last link as abstract method
Bugfix MPS addition not passing tensor backend
v1.3.10
Bugfix logger not writing the output if simulation was starting from checkpoint - this was due to logger setup being outside the checkpoint if-case in simulation_setup.py.
Bugfix simulation not removing old checkpoints, so if simulation had more than one checkpoint it would always start from the oldest one, i.e. the one from the lowest sweep. Fixed by enforcing the removing.
v1.3.9
ML MPS with effective operators and einsum, threading mostly removed, initial guess.
ML TTO is enabled.
Tensor class coming with new methods, e.g.,
einsumSmall fixes in initialization (TTO, vacuum vs ground keyword).
v1.3.8
Examples are now tested;
Negative probabilities from
unbiased_probabilitiesset to zero with a warning on the precision.
v1.3.7
Fixed bug in add_identity method of DenseMPO that made the symmetric aTTNs fail.
Bugfix aTTN: typo integer key, property bond dimension cannot resolve parameterization.
Bugifx: get site tensor in the MPI-MPS uses mapping now.
Bugfix for local symmetries / to-dense: new keyword for global sector is “global”;
to_denseneeds to adapt tensor class for tensor backend.
v1.3.6
Adapted ordering convention for input disentangler positions to Python-side logic
Enabled disentangler position autoselection for Python aTTNs, autoselection now favours disentanglers that lay on interaction terms
aTTN can now measure local observables
Bugfix new LPTN to TTO conversion setup
tensor_backenddefault argument, setting theconv_k0inlptn_to_tto_move_tensors.
v1.3.5
Import bugfixes from
masterbranch and version v1.2.30
v1.3.4
Enable and test finite-T imaginary time evolution for LPTNs
Change how truncated norm is tracked (all decompositions)
New conversion for LPTN to TTO combined all in
from_lptnnow. Returns norm considering losses always, now.Enable two-tensor update for imaginary time evolution
Tensors can be initialized with “1” meaning identity (rank-2 square matrix only).
Convert
_AbstractMatrixTNwith symmetries into matrix (rank-3 tensor)Bugfix mismatch links due to invalid fast return in DenseMPO.
Update how we call measurements due to finite temperature (
run_tn_measurementneeds a function to be passed).iso_centerisNone | int | tuple;listno longer accepted due to comparisons. Useself.iso_centeror comply toNone | int | tuple.
v1.3.3
Enabled groundstate search for symmetric MPS
Enforced the canonization in MPS bond entropy measurement to ensure that the singular values are updated
Merge bugfixes up to v1.2.19 into here
v1.3.2
Implemented aTTNs ground state search.
v1.3.1
Added Raise ValueError when
from_state_vector()has a zero vector
v1.3.0
Version bump for new develop.
Summary for versions v1.2.x
v1.2.32
Exception for bug discovered with iTPO and symmetric tensors in ground state search. (Ticket is open)
v1.2.31
Bugfix in
LPTN.write()function, disabled overwriting initializediso_centerin case inputiso_centerisNone.Fix sphinx reference to abstract tensor networks.
Update bibtex.
v1.2.30
Iteration for fixing integration tests in qgreentea.
Bugfix multiple custom correlation measurements.
Bugfix
DenseMPO: reordering strategy when sorting sites.No use of cached singular values for measurements.
Update in abstract tensors and tensors:
__matmul__,restrict_irreps,split_link_deg_chargeTNOperatorscan be used with pickle, which was prevented by default mapping function.Wrapper for
logger.warningto avoid repetition of warnings.Bugfix truncation LPTN to TTO.
v1.2.29
Provide
__contains__for TNOperators.Bugfix parsing SVD control and tuning setting.
Avoid conversion warning for complex to real singular values.
Lindblad via quantum trajectories with weak symmetries for TTN
Bugfix Krylov (non-hermitian) solver
Small fixes (MPS raising error if not initialized, norm via singular values, time-dependent coupling Lindblad)
New method
is_identical_irrep
v1.2.28
Bugfix orthogonalization eigensolver for complex vectors.
v1.2.27
Bugfix time evolution with measurement period.
v1.2.26
Bugfix eigensolver not actually resolving abs with self.abs in v1.2.25
Bugfix
None.__ne__not available in python3.12
v1.2.25
Bugfix
absis no attribute for numpy.
v1.2.24
Bugfix in measuring entanglement entropy; taking into account that TTN uppermost layer has only one link and enabled measurement with symmetric tensors.
v1.2.23
Integrate commits from master v1.1.12
v1.2.22
DenseMPOandLPTNnow inherits both from the new_AbstractMatrixTNclass, since they shared multiple routinesImplemented
__add__method for_AbstractMatrixTNthat enables sum of MPOs;Implemented application of one/two/multi sites operators to an
_AbstractMatrixTN, which can be applied from the top or from the bottom;Implemented multiplication between two MPS
mps_multiply_mps(the bond dimension fo the product is the product of the bond dimensions)Implemented
optimize_two_tensorsin the_AbstractTNclassAdded
maxiterparameter in the greedy probability measurements forMPSto avoid an infinite loopFixed bug in SVD arising in very specific cases;
v1.2.21
Bugfix einsum (cupy has no out argument), normalization enforced, eigensolver assignment
Property linear algebra library
v1.2.20
Enabled custom correlation measurements for qtealeaves.
Bugfix in
ITPOSitesfunctionadd_dense_mpo_listfor initializing the tensor backend based on the first non-empty term instead of just the first term.
v1.2.19
Fix calls to
numpy.productwithnumpy.prodto prepare for numpy v2.0.0
v1.2.18
Bugfix random SVD (data type, dimensions)
Potential bugfix in optimize with link expansion on quick return
Introduce
concatenate_vectorsas common interface for all backend libraries.
v1.2.17
Enable coupling of individual terms in SumOfLocal Lindblad.
v1.2.16
Bugfix in initializing the MPS with a general tensor backend instead of only the numpy one.
Bugfix for initializing TTN and TTO from a product state with general tensor backend.
Implemented the
padmethod using theexpand_tensormethod. Padding is only possible at the end of the tensor.Implemented
kronfunction forAbstractQTeaTensorandQTeaTensor.Implemented
ctrl=scalarinitialization forQTeaTensor, where the tensor is filled with that scalar value. This initialization now overlaps withctrl="O"andctrl="Z".
v1.2.15
Incorporated python’s built-in logging functionality, removed internal logging setup code.
Deprecated
verbosityoption inQuantumGreenTeaSimulation.Moved simultion-related modules to new namespace
.simulation(helps filtering logs).Added example on logging configuration (optional, works out of the box).
Track and propagate up Krylov convergence during time evolution.
Improved some log and exception messages, removed print statements.
v1.2.14
Bugfix: attribute
sumis not available for all tensorbackends and their singular values, e.g., tensorflow.Convert norm-error in eigensolver into warning.
v1.2.13
Broadcasting TTN states via MPI and parallel sampling via MPI.
v1.2.12
Introduced the
LocalKrausTerm, which maps a Kraus map to a set of Lindblad operators with a first-order approximation.Notice that the timestep with which you define your Kraus operator should be comparable to the timestep of the simulation. When passing the Kraus operators, the first operator should be the closest to the identity. The Kraus operator can be numerically unstable when the timestep is too small, i.e. when the resulting lindblad have entries >1
v1.2.11
Merge bugfixes in master (v1.1.11) into develop branch.
v1.2.10
Enabled time-evolution (``tevo_mode``=1-4) for TTOs (``tn_type``=8)
Added
product_state_from_local_statesfor TTOsAdded
ttn_to_tto, a function that converts a given TTN to a TTO (projector)Added
to_ttn, a function that converts a given TTO (projector) to a TTNAdded
to_statevectorfor TTOsBugfix in
compute_energyandleg_towards, where in both cases the input given tomove_pos(which expects a tuple) could result in errorsBugfix in
ttn_simulator.build_effective_operators; removed the exception if the iso_center is not the default iso_center. This could result in the termination of the simulation (time-evolution), if only local measurements are performed. Now the iso_center is installed at the default position in this case. The function was further slightly changed such that correlation measurements also work on TTOs.
v1.2.9
Bugfixes for statics and mixed device (mostly passing cgpu as actual device).
v1.2.8
Enable skipping RG tensors which are tensors without truncation and therefore representing only a unitary transformation. Idea from renormalization group (RG).
v1.2.7
Fix inconsistencies discovered when running qgreentea integration tests
Fix problems with symmetric links.
Fix problems with conversion into symmetric tensors for operator sets.
Fix problem with bond entropy measurement (qgreentea-fortran measures top link of TTN and all lowest layers by default).
Eigensolver cannot rely on
realattribute (for future tensorflow backend).
v1.2.6
add
SumLindbladTermto enable the term to be a sum of local Lindblad
operators.
iTPO logic can also support other non-local Lindblads now.
v1.2.5
Allow to overrule bond dimension to reach “good” settings for hardware. Default setting does not change behavior in comparison to < v1.2.5.
v1.2.4
Bugfix typo in test for convergence parameters at finite temperature.
v1.2.3
Enable different Hilbert spaces via operator sets, e.g., a mixture of qubits and qudits.
v1.2.2
TTN for systems with a non-power-of-two number of degrees of freedom via trivial legs.
v1.2.1
Require tensor backend for python to be passed from the outside.
Tensor backend allows injection of properties of the symmetry.
Changes to abstract tensor in preparation for alternative to numpy/cupy.
Start using einsum notation for certain contractions, e.g., scale link.
Version bump minor to v1.2.x anticipating merge of master and increase to v1.1.x for master.
Summary for versions v1.1.x
v1.1.12
Fix build of documentation (importlib, path, code-blocks, missing chapters)
v1.1.11
Bugfix checkpoints: optimize did not return state, so loading did not have an effect.
v1.1.10
Bugfix energy not json serializable (float32).
Customizable json encoder via tooling, where common unsupported cases can be added.
Remove print statement.
v1.1.9
Bugfix of convergence parameters that could not be parameterized.
v1.1.8
Bugfix on the
ml_get_gradient_tensormethod. Adding missing multiplication of the gradient by the label.
v1.1.7
Bugfix on the
QteaTensor._eigvl_svdmethod. Now matrices that are smaller than a3x3are treated by the dense solver even if"X"is the chosen method for stability of the arpack methods
v1.1.6
Bugfix enabling MPS loading pkl files, iso center check with None.
Bugfix data type
vector_with_zeros_likeBugfix
conv_paramsnot required for SVD via SVD control.Bugfix TTN evolution with chi=1 (throws warning, we can set minimal chi).
Bugfix TDVP imag time evo with space-link expansion: less aggressive expansion strategy to avoid issue with decompositions.
Avoid warning for inconsistency with two or more quenches (retrieving ground state parameters for couplings not present in quench).
v1.1.5
Added the missing autodoc statements.
v1.1.4
Bugfix for MPS initialization of singular values when starting from the
|00...0>state;Changed
np.productinnp.prodbecause of numpy deprecations;
v1.1.3
Bugfix loading states and for imaginary TDVP missing solver.
v1.1.2
Bugfix for combined operators and unittest to check their use in a simulation.
v1.1.1
Update master branch to version v1.1.1 which includes the new major version v1.x.x
Changes contain everything up to version 1.0.20
Summary for versions v1.0.x
v1.0.21
ITPOandSparseMPOhave now an__iter__method, that iterates through all the tensorsTensorBackendnow supports mixed device for simulation, having two additional properties:self.computational_deviceandself.memory_device. These two devices are the same if we select a single device, i.e.device in ("cpu", "gpu"), but differs for mixed devices. For example, isdevice="cgpu", thenself.computational_device="gpu"andself.memory_device="cpu".Implemented mixed device for simulation. Now it is possible to keep all the tensors but the one we are updating on one device (cpu), and the other on the accelerating device (gpu). The movement is mostly done on the level of the
iso_towards()method, since in this way we are able to overlap computations and communications. The mixed device is tested for MPS and TTN. The method that is actually doing the movement ismove_pos, which converts the tensor and the effective operators insisting on that tensor.Implemented correct convergence stats
v1.0.20
Bugfix setting auto-disentangler
Bugfix nml file for convergence parameters and fortran; skipping python-only entries now.
Bugfix iso-center set as well to (0, 0) for empty TTN.
v1.0.19
Implement checkpoints for statics after each sweep, intrasweep, and for dynamics after each time step.
New restriction on
delete_existing_folderandstore_checkpoints; they cannot both beTrueas checkpoints can never be used with this combination.New function for
QuantumGreenTeaSimulationreturning status of simulations.Generation of hash for simulations leading to the fact that unhashable objects have to be excluded.
Update all examples and make them working with qtealeaves (no code fragments for symmetries, fortran code)
Warning that fortran quenches is not consistent with time-dependent quenches in python for two and more quenches.
v1.0.18
Bugfix for
require_singvalsstill present inrun_tn_simulationBugfix in contraction 43 in
ITPOBugfix for
MPSrandom initialization, there was an hardcoded local dimenison 2Bugfix for
QteaTensor.read, the device was not passed giving rise to an errorSeveral bugfixes for machine learning MPS
Bugfix for multiplication with a
QteaTensor:__mul__was implemented, but not__rmul__, and sotens*aworked, buta*tensdid not. Added__rmul__in the abstract tensor class.Added
__add__and__iadd__methods forQteaTensorand the abstract class. Elementwise addition.
v1.0.17
Introduced the ATTN and DELayer class
Implemented aTTN correlation measurements
Initial state in
continue_filecan now be passed directly from python instead of as a fileBugfix in
TTN.from_state_vector()Allowed to enforce SVD to have singular values on each available link of the tensor network
Implemented applying a two-site gate on a state vector.
v1.0.16
Implemented exact diagonalization with the Krylov solver. This method avoids creating the full Hamiltonian matrix.
Added
apply_ham_to_statemethod to QuantumModel, which computes H|psi>.Changed the default time_evolve_modes for exact diagonalisation: 10 is with matrix construction, 11 with Krylov. 0 (default) points to 10.
v1.0.15
Added modeling.stringterm1d and tests.modeling.tests_string_term
Bugfix for tests.modeling.tests_block_term
Bugfix for modeling.tensorproductoperator
Same changes as v0.5.13
v1.0.14
Bugfix device
None, tensors now enforce device being notNonewhen creating tensor (For converting tensors, it will still be allowed).Pass device through in TTN initialization.
v0.1.13
Implement quantum trajectories.
v1.0.12
Moved the public attribute
QteaTensor.elemto the privateQteaTensor._elem. The attribute can still be accessed with theQteaTensor.elemproperty, but cannot be set.Added warning if you try to initialize a
QteaTensor.from_elem_arrayusing an integer array passingdtype=None. The cases where you want to use integer arithmetic in TNs are very rare (please let me know if you find one).Implemented
apply_mpomethod for MPS and TTN that let you apply a general MPO to the state. It can be used to apply n-qubits gates with n>=2. It takes aDenseMPOas input.Implemented
matrix_to_tensorlistmethod for the _abstractTN, to map a generic matrix to an MPO form.Implemented a
from_matrixmethod for theDenseMPOFixed bug in
copy()method ofQTeaTensorwhen using gpu.Fixed bug in
MPS.swap_qubits.Added in the
DevelopersREADME.mdhow to run only tests affected by your changes using pytest (no need of migrating the unittests).Moved
TNObservables.result_bufferinside the__init__method;Changed the
TNObsWeightedSum.from_pauli_stringinto aclass_method;Fixed bug for
QteaTensor.readFixed bug for converting singular values (someone accidentally deleted the fact that singvals are reals. This messes up with mpi)
v1.0.11
Fixed the leg order in
TTO.trunc_probabilities()
v1.0.10
Add missing methods to abstract tensor class.
Read method for tensor class (format F90 compatible), requires now tensor backend.
Modify
to_densemethod returning dense tensor without symmetry.Bugfix continue file, bugfix theta tensor contraction, bond entropy measure.
v1.0.9
Pickle TN states for continue file State2File
Enable flex-TDVP time evolution for python as in Fortran
Enable iTPO modes 2 and 4 (updated, compressed and updated)
Bugfixes (MPS Corr not enable, SPO two-tensor update, Corr measurement singular values)
Separate SPO into two classes for F90 and PY.
Start testing models.
v1.0.8
Implemented single-site link expansion imaginary time evolution.
Improved docs of
TTN;Fixed bug for MPI communications due to the wrong type of singular values;
Fixed bug in the eigenvalue decomposition for SVDs;
Fixed the
MPIMPSclass for MPI simulations in qmatchatea.
v1.0.7
Typos in
TNConvergenceParametersdocstring.
v1.0.6
Bugfix weighted sum measurement via iTPO for MPS and TTN.
v1.0.5
Enable log file in python simulator
Bugfix parameterization (tn type, mpo mode, disentangler, …)
Bugfix SPO matrices (building them, trace)
Bugfix TTN parent tensors
Add comments convergence parameters for python-only variables.
v1.0.4
Implemented single-site imaginary time evolution.
Implemented eigenvalue decomposition svd (
"E"), sparse eigenvalue decomposition svd ("X"), random svd ("R") for QTeaTensor.Operators for
MPS.meas_tensor_prodshould now be general rank-4 operators, i.e. general MPO. For the old tensor product just use bond dimension 1 MPOs.TTN.meas_tensor_prodaccept rank-4 operators, but only for bond dimension 1.Added
qiskit_conventionoptional argument inTNObsProjective, TNObsProbabilitythat is used only in python to avoid an hardcoded ordering.Added a
to_itpomethod toTNObsCorrelationandTNObsWeightedSumto have a more readablerun_measurementfunction.Implemented ITPO measurement for weighted sum. Works only for two-bodies interactions at the moment.
Added tests for observables computed in
run_measurement
v1.0.3
Small changes suggested in v1.0.2 code review.
Fix qtealeaves solvers, now using
norm_sqrt(equivalent to Fortran code wherenormwas whatnorm_sqrtis now).ATTNSimulation to QuantumGreenTeaSimulation (deprecated warning for ATTNSimulation).
Enable half-precision real (via single in LinAlg), enable switching precisions.
Time evolution methods tested up to constant local terms (no interaction, no time-dependency).
Compression for iTPO
TPO via iTPO, other TPO as
mpo_mode=21still available for debugging.
v1.0.2
Bugfix for the symmetry sector being initialized as maximum bond dimenison instead of 1
Added stop on python statics based on
convergence_parameters.abs_deviationandconvergence_parameters.rel_deviationAdded possible stop only after
convergence_parameters.n_points_conv_checksweepsAdded selection of device and data type through the convergence parameters in python
Added the
convergence_parameters.ini_bond_dimensionin python, such that you can initialize a random tensor network (either TTN or MPS) at a bond dimension that is smaller than the maximum bond dimension of the simulation
v1.0.1
Implemented Ground state search for the MPS ansatz
Effective operators are now carried over in the MPS if present
The MPS is now a backend in the ATTNSimulation for tn_type=6
The ttn_simulation and ttn_measurement functions have been Removed
Added a new file emulator/tn_simulation that takes care of a general python simulation independently from the TN ansatz
Added the physical_links method to TTN and MPS for interoperability with the TensorProductOperators
Added new initialization method for MPS. Now it can be initialized as a random mps at a given bond dimension
timestep is now an
_AbstractTNfunctionImproved docs
TTN and MPS unittests now inherits from the AbstractTN unittests
Fixed the xp checks at any time
v1.0.0
Introduce abstract class for tensors.
python: link expansion, iTPO, SPO, sketch single-tensor time evolution
Summary for versions v0.5.x
v0.5.14
Add bibtex files for all articles and theses involving Quantum TEA, its precessors, and the flexmps fork of the library.
v0.5.13
Added modeling.stringterm1d and tests.modeling.tests_string_term
Bugfix for tests.modeling.tests_block_term
Bugfix for modeling.tensorproductoperator
v0.5.12
Include changes from v0.4.48 to v0.4.54 in develop branch
v0.5.11
Catch the ‘file not found’ error when trying to read partial results of time evolution.
v0.5.10
Added check which prevents users from accidentally deleting current or parent folder when running the simulations.
v0.5.9
Added new modeling term BlockTerm2D
v0.5.8
Added methods to read from the hdf5 files for the local and correlation observables.
This enables reading/writing to hdf5 for energy, norm, time and local and correlation observables.
Bugfix for continue file, now allowing parameterization.
v0.5.7
Added the new observable type TNObsCustom which can measure correlations on the customly chosen positions.
v0.5.6
Add write method and to_tensor_list_mps for the LPTN emulator.
Move spinglass operators from Contrib to quantumtealeaves.
Add example for LPTN via MPS.
v0.5.5
Second caching strategy for sampling and TTN.
Bugfix during estimating size of current cache
Bugfix writing data type of finite-temperature convergence parameters (now considering data type)
v0.5.4
Fixed online generation of the documentation by installing the mpmath and joblib libraries on the gitlab server
v0.5.3
Bugfix for unbiased (OPES) sampling with low precision (numpy). In particular, the
np.isclosefunction was impaired by the relative tolerance, now set to 0.
v0.5.2
Implemented measurement of magic for MPS emulator
The OPES (unbiased) sampling now uses numpy if a low enough precision is asked, being numpy much faster than mpmath.
ATTNSimulationcan now use the python backend for TTN ground state searches with single-site update and no symmetry.
v0.5.1
Implemented machine learning MPS, computing the gradient of the tensors as in this work: https://arxiv.org/pdf/1605.05775.pdf
The
MPS.dotmethod can now contract only subsections of the MPS
v0.5.0
New develop version
Summary for versions v0.4.x
v0.4.54
requirements as a static list in
setup.py.
v0.4.53
Fix requirements in package setup.
v0.4.52
Update descriptions for PyPi package delivery.
v0.4.51
Setup PyPi deployment to testpypi for master branch, i.e., the conan channel
stable.
v0.4.50
Update exporting of conan packages
Small updates docs
v0.4.49
Bugfix for docs not showing
v0.4.48
Update to stable master branch
Solved bug in
get_rho_ifor theMPSclass
v0.4.47
The singular values are updated when the isometry is moved through SVD
Added plotting option for the TTN for visualizng, for example, the entanglement.
v0.4.46
Implemented data_type as new simulation parameter to pass the options for data precision C/D/S/Z.
v0.4.45
Bugfix conversion LPTN to TTO, i.e., number of layers, QR on top layer, factor 100.
v0.4.44
Bugfix for occasionally missing left/right operator in 1d system with symmetries.
Bugfixes sampling TTN.
Add automatic cleaning of TTN cache during sampling.
v0.4.43
Enable parameterization of
tn_type, e.g., TTN vs MPS in one simulation.
v0.4.42
Add combined operators.
v0.4.41
Enable sparse MPO for local terms and 1d nearest-neighbor terms.
v0.4.40
Enable caching strategy for sampling from TTN for superiterations (in the unbiased sampling).
Fix unittest with random results testing fortran interface writing operators.
v0.4.39
Construction of Hamiltonian as a sparse matrix for ED.
Exectuable of quantum green tea can be specified.
Fix some additional linter checks raised by difference in function call.
Fix unittest with mpi4py present, but not running with MPI.
v0.4.38
Add mpi send/recv tensor function in
_AbstractTNAdd support for MPI simulations with the MPS backend with the MPIMPS simulator
v0.4.37
Added masks in the
PlaquetteTerm2D.Moved
PlaquetteTermtoqtealeaves.modelingand renamed toPlaquetteTerm2D.
v0.4.36
Negativity of TTO density matrix can now be computed via the eigenvalues of partially transposed density matrix.
Upgraded the error message in aTTN disentangler position check.
v0.4.35
Add support for data parallel MPI simulations in quantum green tea.
Parse CPU time from log file if available.
v0.4.34
Bugfix for the padding introduced in 0.4.33. It is now possible to pass a
Nonevalue without an error.
v0.4.33
The TTN function for generating product TTN state from local states can now pad the TTN tensors with zeros.
v0.4.32
Added the option for automatic disentangler position selection for aTTN simulations.
v0.4.31
Enabled setting the initial state with
continue_filefor exact diagonalization methods.
v0.4.30
Enabled cupy for TTO/TTNs: now you can run them on GPU.
Enable singular values cut track in TTNs.
Added
trnc_tracking_modeinTNConvergenceParametersfor handling the ttn cut singvals in pythonrenamed
to_tensorlisttoto_mps_tensorlistsince it was misleading, you could not callTTN.from_tensorlist(ttn.to_tensorlist())to obtain the same TTN. Now the functionTTN().to_tensorlist()returns the input offrom_tensorlist()bugfix in
TTN().apply_two_sites_operator()Removed automatic swap in
MPS().apply_two_sites_operator()
v0.4.29
Added check for disentangler position which prevents the fortran error when working with Plaquette terms.
v0.4.28
Removed print statements from Hilbert curvature unittest.
v0.4.27
Automatic generation of simulation for quantum trajectories.
Add subfolders for input and output of quantum trajectories run.
Add quantum trajectory_id and seed.
Read and average observables for quantum trajectories.
v0.4.26
Provide 3d quantum Ising model as one of the default models
Extend HilbertCurve with function to backmap observables.
Allow passing new variables now available in the input reader.
v0.4.25
Modified leg order for the TTO, now it follows leg order of TTN
TTO now inherits from TTN, so all the functions are freely available
TTN is more flexible now, does not always have two tensors on top
Added
get_rho_imethod to MPSMoved
meas_localto the_AbstractTN
v0.4.24
Implemented shifting of a selected link through the TTN.
Implemented applying the 2-site operators to TTN.
Implemented swapping of two sites in TTN.
Added the possibility to truncate the singular values throughout the isometry shifting procedure.
v0.4.23
Improve description bond entropy to distinguish between MPS and TTN implementation.
v0.4.22
Implemented measurement of local operators for TTNs
Implemented measurement of tensor product operators for TTNs
Implemented measurement of weighted sum operators for TTNs
Implemented measurement of bond entropy for TTNs
Added
singvalsattribute toTTNLayerto keep track of the singular values on each link of the TTNModified the ouput of
meas_entanglementin the mps simulator such that it is the same of the ttn emulator, i.e. a dict where the key is the bipartition and the value is the Von Neumann entanglement.Added checks for observables in
_AbstractTNAdded automatic removal of singvals in
qr_towards_topmethod ofTTNLayerAdded optional removal of singvals in
iso_towardsImplemented possible
Nonevalues in the singvals also for the MPS
v0.4.21
Fixed broken 3D masked terms.
v0.4.20
Added new checks for the choice of disentangler positions.
v0.4.19
Added missing documentation to lptn_to_tto_iso function in TTO simulator.
v0.4.18
Implemented unbiased sampling at arbitrary precision through the mpmath library.
v0.4.17
Allow to set seed from the python side, e.g., for quantum trajectories.
v0.4.16
Documented TTN time evolution workflow in
ATTNSimulation.runfunction.
v0.4.15
Fixed typo in README file.
v0.4.14
Implemented constructing a separable state TTN given the local states of each of the sites for 1d and 2d grid. The 2d case is handled by mapping the particle positions from 2d to 1d.
v0.4.13
Added new class of operators: effective operators
Added rules to update the effective operators along a TNN when the isometry is moved.
Added local optimization of tensor in the TTN
Added neighbors, sites, op_neighbors attributes to TTNLayer mimicking fortran
Ground state searches are now possible for hamiltonians that are tensor product operators
The TTN class is going towards supporting a general TTN, not only a binary one, even though at the moment the only topology still supported is the binary
The TTN is now not initialized empty but with a random isometry
v0.4.12
Added the missing import of
timecorrelatorobservable to the corresponding __init__.py file.
v0.4.11
Fixed bug in the
from_paulimethod of WeightedSumOperators.
v0.4.10
Added a new method for the expansion of the bond dimension of a link through a QR decomposition following https://arxiv.org/pdf/2212.09782.pdf in the
AbstractTNclass.Moved the truncation of the singular values in its own method instead of being inside the
tSVDfunctionAdded new possible truncation scheme using the norm truncated in the singular values
Added new parameters to control the singular values cut in
TNConvergenceParametersModified the diagonal matrix multiplication with broadcast in
tSVD
v0.4.9
Bugfix in computing the isometrization path in TTN simulator
v0.4.8
Update reading and writing of TTN for updated TTN attributes on the fortran side, e.g.,
op_neighbors.
v0.4.7
Bugfix shifting isometry center in TTN emulator.
Convert isometry center from F90 file to python indices
v0.4.6
Allow trivial mapping for 1d case and zigzag.
v0.4.5
Generate symmetric operators for fortran which can be contracted over the columns. Backwards compatibility broken for python-fortran interface.
Bugfix writing symmetric tensors of a zero-matrix. Add unit test for spin 1/2 operators and bosonic operators.
v0.4.4
Start mirroring stable, i.e., master to public repository.
Change link to documentation.
v0.4.3
Documentation for new
State2Filemeasurement option saving TN without symmetriesRemove superfluous print
v0.4.2
Breaks backwards compatibility
Remove input version v1 and v2
Remove other deprecated input, e.g.,
bcfor boundary condition which is nowhas_obc.Remove integration test out of this repository.
v0.4.1
Introduces major diff without changing code logic
Include pre-commit in requirements.
Include black as a git (pre-commit) hook.
v0.4.0
Breaks backwards compatibility
Rename package in qtealeaves.
We suggest import qtealeaves as
import qtealeaves as qtl
Summary for versions v0.3.x
v0.3.39
Allow custom maps derived from Hilbert curvature.
v0.3.38
Replace Hilbert curve encoded only for selected cubes by function generating Hilbert curve on the fly.
v0.3.37
Bugfix when building Hamiltonian (operators defined as functions where not correctly resolved).
v0.3.36
Bugfix writing observables from ED simulations, which requires setting boolean for what observables are measured.
Bugfix in vector of system sizes.
v0.3.35
Fixed the bug for importing models and operators.
v0.3.34
Bugfix for linear combinations of MPSs states. Before, the shape of the tensor used was always the same. Now, it uses left and right tensor correctly.
v0.3.33
A finite temperature density matrix can now be computed for a given model.
v0.3.32
Fixed bugs in TTO simulator.
Added isometrized LPTN to TTO conversion.
Added aditional SVD in LPTN to TTO conversion function.
Implemented norm tracking and added the option for changing K_0 in LPTN to TTO conversion.
Added function for truncating the TTO probabilities to TTO simulator.
v0.3.31
Implement periodic boundary conditions for plaquette term classes, methods “get_interactions”. Added keywork argument ‘has_obc’ to init method
v0.3.30
Fixed resolution of system sizes in qed_models. PlaquetteTerm methods are made compatible with system sizes specified as per v0.3.28.
v0.3.29
Introduce new measurement of time correlator to the initial state at t=0. The correlator is measured between two operators A and B as
<A(t=0) B(t)>.Introduce new measurement of four-body correlator of the type
<O_1 O_2 O_3 O_4>.The implementation of new observables depends on the backend; an availability on the python frontend does not indicate that they will be measured on the backend.
v0.3.28
Bugfix for rectangular or cubed systems in the modeling of Hamiltonians. The assumption of equal dimensions was removed. System sizes can be passed as parameter and are resolved correctly.
v0.3.27
Fixed bug for reset operation in MPSs
Added scipy SVD when numpy fails
Added possibility of performing the canonization through SVDs to reduce the bond dimension
v0.3.26
Migrate CI/CD to docker; update linter version.
v0.3.25
Enable projective measurements and unbiased projective measurements to the TTN
v0.3.24
Now user can install and shift the gauge center of the LPTN.
Added function for computing the reduced density matrix from the LPTN for single or neighbour sites.
TTO functions for installing and shifting the gauge center are no longer staticmethods, but methods.
Added the gauge center attribute to TTO.
v0.3.23
Implemented functions for computing the entanglement monotones of a TTO density matrix.
Replaced QR decomposition with SVD in conversion from LPTN to TTO.
Fixed bug of indentation error in read_tensor() function in fortran_interfaces.py.
v0.3.22
Update reading results with version number of results.
Bugfix writing real parameters, which is required for gfortran compiler.
Bugfix missing write of version number when writing observables from python.
Remove integration tests from this repository.
v0.3.21
Solved error in plaquette coordinates, methods “get_interactions” in file “qed_models.py”
v0.3.20
Now qtealeaves can read the latest version of
tn_api_input_reader, that also shows the version of the input reader.
v0.3.20
Implemented function for reading LPTN from fortran output file.
v0.3.19
Move convergence parameters into an extra folder; old simulation require to modify the import statements.
Provide convergence parameters for finite-temperature simulations.
v0.3.18
Update links in readme and docs to baltig.
v0.3.17
Solved bug for reading TNObsBondEntropy from fortran
v0.3.16
Implemented tSVD on GPU using cupy library on the AbstractTN class
Implemented fully working MPS simulator on GPU using cupy
v0.3.15
Change conan user for deployment.
v0.3.14
Remove fortran dependencies; move integration tests to different folder. (to be removed later from this repository.)
v0.3.13
Added function for Kronecker product of two LPTNs.
v0.3.12
Solved bug on time_offset for saving time-dependent parameters into a dict.
v0.3.11
Solved bug on 4 Levels qudit operators.
v0.3.10
Fixed bug: before when adding sites to the MPS the gauge center was always always moved one step to the right, even if the site was added after the gauge center. Now it is moved only when the site is added to the left of the gauge center, as expected.
v0.3.9
Update fortran dependency: changes in cmake structure and module names.
Export license files into conan package.
v0.3.8
added class for LPTN, class for TTO and function for converting LPTN to TTO
v0.3.7
Solved bug on add/remove site on mps simulator. The methods previously were not modifying the lists handling the singular values.
v0.3.6
Solved circular input problems
v0.3.5
Enable LPTN as backend for TN simulations. Restrictions are still in place, i.e., no symmetries, only nearest-neighbor interactions in 1d, no dynamics (new git submodule/module in dependency).
Bugfix vector of convergence parameters
v0.3.4
Improved documentation for observables.
Added support for sphinx-gallery and examples are now in the docs.
v0.3.3
Import of operators has to be fixed to use old scripts.
v0.3.2
Introduce function to
QuantumModelto extract time-dependent pulses.
v0.3.1
Import of the
QuantumModeland model terms has to be fixed to use old scripts.The
RydbergModelhas been removed.The deprecated variable specifying the boundary conditions of the
QuantumModelhas been converted to an optional argument.Short-cuts to common models have been introduced, e.g., the quantum Ising model.
v0.3.0
Import of observables has to be fixed to use old scripts.
New observables are available, mainly implemented for quantum circuit MPS.