Release Notes

InQuanto 4.1.0

17 December 2024

  • Added preoptimize_passes to SparseStatevectorProtocol to address ansatz inconsistencies from v4 refactor.

  • Fix for PMSV due to changes in tket’s opgroup labelling.

InQuanto 4.0.1

28 November 2024

  • Improved statevector caching performance.

InQuanto 4.0.0

19 November 2024

  • General changes

    • InQuanto API is now standardiZed to use American English spelling (optimiZe, diagonaliZe, etc.).

    • [SymbolDict] and [SymbolSet] have been replaced with Python dictionaries. This is most noticeable in ansatz and protocols, for example to_dict and from_dict methods have been removed.

    • Two new extensions: inquanto-nexus and inquanto-cutensornet

    • InQuanto now supports Numpy v2+, along with other related dependency updates.

    • Default numerical tolerances are now defined only in core.

  • Protocols have had a major refactor to enable better interaction with circuit compilation using tket passes. See e.g. compile_circuits() and the protocols manual.

    • Circuit protocols must now explicitly be compiled. Therefore the circuit protocol workflow involves: instancing, building, compiling, running, and evaluation.

    • build methods now creates the set of uncompiled measurement circuits.

    • We recommend compile_circuits as the only place to apply circuit compression, and therefore some implicit pytket passes which were applied in (e.g.) ansatz construction are now carried to the protocol as preoptimize_passes

    • Because of the above, state circuits contained in ansatz classes may contain undecomposed circuit boxes. Therefore, certain metrics of the ansatz (such as from using ansatz.state_circuit.n_2qb_gates) may not accurately reflect the final circuits in the protocol.

    • SPAM calibrate() method now has an option to be performed asynchronously, to manage job delivery.

    • HadamardTestDerivative has been refactored for easier computation of real, imaginary, or complex components.

    • Statevector protocols have been refactored to generalize for tensor network based protocols. Use of hashing has been made more efficient.

    • Modified protocols to allow Quantinuum Nexus client instances through the inquanto-nexus extension.

  • Operators

    • Operator mappings are now performed using C++ routines.

    • Added FCIDumpRestricted and FCIDumpUnrestricted for importing systems from other chemistry codes.

    • Double factorization classes have been refactored.

      • Added double factorization for unrestricted-spin systems (see double_factorization_h3.py in examples) double_factorize().

      • Added ‘core tensor’ method for double factorization XDFCoreTensor

    • InQuanto’s QubitOperator has been fully separated from pytket’s QubitPauliOperator (see: pytket docs).

  • Ansatzes

    • Added unsympify() to convert from sympy to floats to avoid symbolic circuit submission. For example it will replace instances of sympy.pi with float(3.14..).

    • Improved performance of ansatz hashing and comparison operations.

    • to_QubitState() uses efficient implementation by default.

    • State circuits contained in ansatz classes may now contain undecomposed circuit boxes.

    • As such, approximate state resource estimation should be performed with circuit_resources()

    • SHSV problem is solved.

InQuanto-PySCF 2.0.0

19 November 2024

  • [SymbolDict] and [SymbolSet] have been replaced with Python dictionaries.

  • API is now standardiZed to use American English spellings of words.

  • Added an example for computing oscillator strengths between VQE ground states and VQD excited states.

  • Performance improvements through better use of numpy.einsum and in-memory pyscf ao2mo usage.

InQuanto-NGLView 0.8.0

19 November 2024

  • API is now standardiZed to use American English spelling.

  • Update pint version dependency due to numpy compatibility.

InQuanto-Phayes 0.3.0

19 November 2024

  • Align dependencies with other packages.

InQuanto-Nexus 0.1.0

19 November 2024

  • Added support for the Quantinuum Nexus client for storing and managing projects, and compilation and execution jobs.

InQuanto-cuTensorNet 0.0.0

19 November 2024

InQuanto 3.7.0

22 October 2024

  • Added asynchronous calibration to SPAM so hardware delivery is controllable

  • Licensing modified for improved Quantinuum Nexus usage

InQuanto 3.6.1

3 September 2024

InQuanto 3.5.8

23 August 2024

  • Hotfix release latest pytket version

InQuanto 3.5.7

2 August 2024

  • Hotfix pytket v1.31 dependency issues

InQuanto 3.5.6

10 July 2024

  • Hotfix sympy v1.13 dependency issues

InQuanto 3.5.5

4 June 2024

  • Upgraded Zeus dependency to v0.0.1b6

InQuanto 3.5.4

13 May 2024

  • Upgraded Sourcedefender dependency to v14.0

InQuanto 3.5.3

10 May 2024

  • Upgraded Sourcedefender dependency to v13.0

InQuanto 3.5.2

10 May 2024

  • Upgraded Sourcedefender dependency to v12.0

InQuanto 3.5.1

07 May 2024

  • Resolved scipy dependency conflict.

  • Bug fixes:

    • Fixed a slowdown in qubit mappings caused in 3.5.0. Mapping speed should now be consistent with InQuanto versions <3.5.0.

    • qubit_encode() for integral operators now takes the qubits argument, allowing QubitMappingBravyiKitaev support.

InQuanto 3.5.0

24 April 2024

InQuanto 3.4.2

11 April 2024

InQuanto 3.4.1

08 March 2024

  • Upgrade Sourcedefender dependency

InQuanto 3.4.0

07 March 2024

InQuanto 3.3.1

31 January 2024

  • Bug fix relating to non-symbolic computables in PauliAveraging protocol runner

InQuanto 3.3.0

30 January 2024

  • Support for Python 3.12. Drop support for Python 3.9

  • New method dataframe_partitioning() in PauliAveraging protocol for seeing relation between Pauli words and circuits.

  • Driver for generating transverse-field Ising model hamiltonians (for example DriverIsing1D)

  • Introducing ProtocolList. Basic support for collecting PauliAveraging protocols with different states.

  • Bug fix relating to qubit indexing error in symmetry analysis of QubitOperators

  • Other bug fixes and development improvements

InQuanto-PySCF 1.5.0

30 January 2024

InQuanto-NGLView v0.7.1

30 January 2024

  • Python 3.12 support and deprecate 3.9

  • Hotfix dependency update qcelemental

InQuanto-Phayes v0.2.0

30 January 2024

  • Python 3.12 support and deprecate 3.9

InQuanto 3.2.1

19 January 2024

  • Bug fix relating to symbol substitution in PauliAveraging protocol runner

InQuanto 3.2.0

12 January 2024

  • New protocol added ProjectiveMeasurements for measuring the probabilities of the basis states

  • Added the simultaneous perturbation stochastic approximation (SPSA) minimizer MinimizerSPSA

  • Added trotterize_as_linear_combination() to support second order

  • pd_safe_eigh() utility method now available to solve generalized eigenvalue problem \(HC = SCE\)

  • Express files added for Purvis’ BeH2 potential energy surface (see the express manual page)

  • Added method to report point_group from a FermionSpace point_group()

  • Added Cholesky decomposition option to double factorization

  • Added ensure_hermitian() to truncate non-hermitian matrix elements

  • Minor fix to DMET typing

  • Added launching and retrieving methods to QPE algorithms and protocols

  • Improved state hashing and comparison methods

  • Allow Pauli partitioning in HadamardTestOverlap to reduce measurement circuits (direct option)

  • Improved symbol substitution (parameter) errors and flexibility

  • Various other minor bug-fixes and improvements

InQuanto-PySCF 1.4.0

14 December 2023

  • Functions to get RDMs and PDMs from CASCI wavefunctions (e.g. get_casci_12rdms() )

  • Bug fixes

InQuanto 3.1.2

28 November 2023

  • Hotfix for PMSV by adding stabilizer tolerances

  • Support for error mitigation when using protocol.build_from()

  • Clarified the qubit_operator.eigenspectrum method

InQuanto 3.1.1

15 November 2023

  • Hotfix: added unitary check options to the DMETRHF embedding class

InQuanto 3.1.0

14 November 2023

InQuanto 3.0.2

17 October 2023

  • Added support for pytket 1.21

  • Updated GeometryMolecular to accept xyz strings

  • Fixes for FCIDump reader

  • Added exact diagonalization helper method to QubitOperators eigenspectrum()

InQuanto 3.0.1

10 October 2023

  • Improved license activation workflow

  • Improved API documentation

InQuanto 3.0.0

19 September 2023

InQuanto-PySCF 1.3.0

  • Upgraded to PySCF 2.3.0

  • Many more configurable options for drivers

  • More memory-efficient DMET calculations with inquanto-pyscf integral operators

  • Support for starting calculations from checkpoint files

  • CAS-AC0 calculations via pyscf-ac0 https://github.com/CQCL/pyscf-ac0

  • WFT-in-DFT embedding, for molecular and periodic systems

  • Compatibility with InQuanto 3.0

2.1.1

27 April 2023

  • Some performance improvements

  • Fixed networkx dependence

  • Fixed numpy errors due to _typing

  • Other small fixes

A PDF version of InQuanto Version 2 documentation is also available: InQuanto-v211-PDF.

2.1.0

27 March 2023

2.0.0

5 December 2022

  • Re-designed ansatzes to provide more uniform interface, allow multireference calculations and easier custom ansatz development.

  • New ansatz classes added. CircuitAnsatz, TrotterAnsatz, GivensAnsatz, MultiReferenceState, LayeredAnsatz..

  • ProtocolStateVectorSparse now caches results.

  • New ProtocolSymbolic class allows for evaluation of expressions with symbolic ansatzes.

  • Implementation of the QRDM-NEVPT2 method. Several new computables for RDM calculations.

  • Add support for real-time evolution in AlgorithmVQS.

  • New CompactTwoBodyIntegralsS8 for eight-fold symmetric compact integrals.

  • Computable.cost_estimate and cost_estimate_elementwise for circuit cost estimation on Quantinuum hardware.

  • kupCCGSpD refactored to kUpCCGSDSinglet.

  • Pyscf refactored to PySCF.

1.3.0

22 November 2022

  • Fix FermionSpace.construct_number_alpha_operator and FermionSpace.construct_number_beta_operator.

  • Add FermionOperator.to_latex and QubitOperator.to_latex.

  • Add descriptions to files listed by inquanto.express.list_h5.

  • Fix bug where the PMSV supporter was sometimes not applied.

  • Add QubitOperatorList.all_qubits and QubitOperatorList.to_sparse_matrices.

  • Allow ChemistryRestrictedIntegralOperator and FermionOperator to be constructed from FCI files.

  • Add QubitState.from_ndarray.

  • Remove QubitSpace.generate_qubit_trotter_operator.

  • Add exponentiation and Trotterization functionality to QubitOperator and QubitOperatorList.

1.2.2

22 September 2022

  • Fixed a typo in auxiliary expressions in ADAPT and VQS.

1.2.1

21 September 2022

  • Added import for QubitMappingParity at module level.

1.2.0

16 September 2022

  • Added optional compiler_passes argument to Computable.run().

  • Logger configured.

  • Workflow to synchronize branches develop and research-develop improved.

  • Compact 2-body integrals implemented.

  • ChemistryUnrestrictedIntegralOperator._freeze() implemented.

  • Ansatzes deep copy implemented.

  • HVA fixed.

  • Convenience method to convert FermionOperator to integral operators implemented.

  • Imaginary gradients sign fixed in protocols.

  • Various FermionOperator helper methods implemented (is_hermitian, is_antihermitian, is_self_inverse etc.).

  • Disable QubitOperatorString to be constructed with two Paulis on the same qubit.

  • save_h5 and load_h5 implemented for spaces classes.

  • Added custom_prefix for circuit names to Computable.run(), .launch() and .generate_circuits().

  • Improvements to API documentation and type hints: Ansatzes, Algorithms, Mappings, Core, Geometries, Operators, Symmetry, Embeddings.

  • Fix exponent order issue in FermionSpaceStateExpChemicallyAware.

1.1.0

29 July 2022

  • toeplitz_decomposition added for QubitOperator.

  • ProtocolSymbolic added for symbolic evaluation of expectation values and computables.

  • Fixed a bug in Gradients (State vector protocols, ProtocolPhaseShift() and ProtocolHadamardDirectPauliY())

  • Fixed triplet excitations generator (can be used in QSE now)

  • General improvements in express module

    • MetricTensor can now be used as part of Computables objects

  • Padding methods added to QubitOperator

  • Improved documentation

1.0.5

04 July 2022

  • Added ability for authentication by password.

  • Enabled support for any pytket v1.x release.

1.0.4

15 June 2022

  • Various minor bugfixes.

  • Improved validation output.

  • Updated sourcedefender dependency version.

1.0.3

10 June 2022

  • Added additional tests for parameter classes.

  • Fix for type safety in trigonometric methods.

  • Allowed api-key to be fetched from keyring or environment variable.

1.0.2

01 June 2022

  • Fixed bug in contracted systems symmetries.

  • Added finite difference metric tensor tests.

1.0.1

25 May 2022

  • Fixed bug in contracted systems symmetries.

  • Fixed bug in AlgorithmVQE property.

  • Fixed time-limit issue on decryption.