diff --git a/python-quimb.changes b/python-quimb.changes index 330cace..84f0289 100644 --- a/python-quimb.changes +++ b/python-quimb.changes @@ -1,3 +1,79 @@ +------------------------------------------------------------------- +Wed Feb 26 03:56:01 UTC 2025 - Steve Kowalik + +- Update to 1.10.0: + * Breaking Changes + + renamed MatrixProductState.partial_trace and MatrixProductState.ptr to + MatrixProductState.partial_trace_to_mpo to avoid confusion with other + partial_trace methods that usually produce a dense matrix. + * Enhancements: + + tensor network fitting: add method="tree" for when ansatz is a tree - + tensor_network_fit_tree + + tensor network fitting: fix method="als" for complex networks + + tensor network fitting: allow method="als" to use a iterative solver + suited to much larger tensors, by default a custom conjugate gradient + implementation. + + tensor_network_distance and fitting: support hyper indices explicitly + via output_inds kwarg + + add tn.make_overlap and tn.overlap for computing the overlap between + two tensor networks, ⟨ O | T ⟩ , 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 {ref}schematic. + + TensorNetwork: add .backend and .dtype_name properties. + + add Circuit.sample_gate_by_gate and related methods + CircuitMPS.reordered_gates_dfs_clustered and + CircuitMPS.get_qubit_distances for sampling a circuit using the + 'gate by gate' method introduced in https://arxiv.org/abs/2112.08499. + + add Circuit.draw for drawing a very simple circuit schematic. + + Circuit: by default turn on simplify_equalize_norms and use a + group_size=10 for sampling. This should result in faster and more + stable sampling. + + Circuit: use numpy.random.default_rng for random number generation. + + add qtn.circ_a2a_rand for generating random all-to-all circuits. + + expose qtn.edge_coloring as top level function and allow layers to be + returned grouped. + + add docstring for tn.contract_compressed and by default pick up + important settings from the supplied contraction path optimizer + (max_bond and compress_late) + + add Tensor.rand_reduce for randomly removing a tensor index by + contracting a random vector into it. One can also supply the value "r" + to isel selectors to use this. + + add fit-zipup and fit-projector shorthand methods to the general 1d + tensor network compression function + + add MatrixProductState.compute_local_expectation for computing many + local expectations for a MPS at once, to match the interface for this + method elsewhere. These can either be computed via canonicalization + (method="canonical"), or via explicit left and right environment + contraction (method="envs") + + specialize CircuitMPS.local_expectation to make use of the MPS form. + + add PEPS.product_state for constructing a PEPS representing a product + state. + + add PEPS.vacuum for constructing a PEPS representing the vacuum + state | 000 … 0 ⟩ . + + add PEPS.zeros for constructing a PEPS whose entries are all zero. + + tn.gauge_all_simple: improve scheduling and add damping and + touched_tids options. + + qtn.SimpleUpdateGen: add gauge difference update checking and tol and + equilibrate settings. Update .plot() method. Default to a small cutoff. + + add psi.sample_configuration_cluster for sampling a tensor network + using the simple update or cluster style environment approximation. + + add the new doc {ref}ex-circuit-sampling + ------------------------------------------------------------------- Mon Sep 23 19:48:30 UTC 2024 - Ben Greiner diff --git a/python-quimb.spec b/python-quimb.spec index f0cff50..a9be95d 100644 --- a/python-quimb.spec +++ b/python-quimb.spec @@ -1,7 +1,7 @@ # # spec file for package python-quimb # -# Copyright (c) 2024 SUSE LLC +# Copyright (c) 2025 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -29,16 +29,15 @@ ExcludeArch: %{ix86} %{arm} ppc s390x %endif Name: python-quimb%{psuffix} -Version: 1.8.4 +Version: 1.10.0 Release: 0 Summary: Python library for quantum information and many-body calculations License: Apache-2.0 URL: https://quimb.readthedocs.io/ Source: https://github.com/jcmgray/quimb/archive/refs/tags/v%{version}.tar.gz#/quimb-%{version}.tar.gz +BuildRequires: %{python_module hatch_vcs} +BuildRequires: %{python_module hatchling} BuildRequires: %{python_module pip} -BuildRequires: %{python_module setuptools_scm} -BuildRequires: %{python_module setuptools} -BuildRequires: %{python_module wheel} BuildRequires: fdupes BuildRequires: python-rpm-macros Requires: python-autoray >= 0.6.12 @@ -88,21 +87,15 @@ export SETUPTOOLS_SCM_PRETEND_VERSION=%{version} %install %if !%{with test} %pyproject_install -%python_clone -a %{buildroot}%{_bindir}/quimb-mpi-python %python_expand %fdupes %{buildroot}%{$python_sitelib} %endif -%post -%python_install_alternative quimb-mpi-python - -%postun -%python_uninstall_alternative quimb-mpi-python - %if %{with test} %check mv quimb quimb.movedsrc # precision comparison slightly out of tolerance: this one is permament, others are flaky (rerun them) -donttest="(test_subtract_update and float32)" +donttest="(test_subtract_update and float32) or test_contract_double_loopy_approx" +donttest+=" or test_cyclic_solve_big_with_segmenting" %pytest -n auto --reruns 3 -k "not ($donttest)" %endif @@ -110,9 +103,8 @@ donttest="(test_subtract_update and float32)" %files %{python_files} %doc README.md %license LICENSE.txt -%python_alternative %{_bindir}/quimb-mpi-python -%{python_sitelib}/quimb-%{version}.dist-info %{python_sitelib}/quimb +%{python_sitelib}/quimb-%{version}.dist-info %endif %changelog diff --git a/quimb-1.10.0.tar.gz b/quimb-1.10.0.tar.gz new file mode 100644 index 0000000..9db0bdd --- /dev/null +++ b/quimb-1.10.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34d640ddefb0f69e053a4e86086b3a07ec078d8e304f72293598aa56eb9ec00a +size 11575545 diff --git a/quimb-1.8.4.tar.gz b/quimb-1.8.4.tar.gz deleted file mode 100644 index 0ac4461..0000000 --- a/quimb-1.8.4.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b12e3c4741f21435a2c530f8ee963d2d6d935eb6138cf26a2c0db7867e3b3bde -size 11566853