Changelog
InQuanto 3.6.1
3 September 2024
Add
QCM4Computable
computable for quantum computed moments up to the 4th orderMake remaining protocol classes compatible with
ProtocolList
by addingbuild_protocols_from()
method definitionsNew examples for the factorized overlap protocol classes (e.g.
FactorizedOverlap
) with comparisons toHadamardTestOverlap
Improve the information given in the dataframe outputted by protocols using the
dataframe_circuit_shot()
functionAdd
to_QubitPauliString()
,from_QubitPauliString()
methods toQubitOperatorString
class, andto_QubitPauliOperator()
, andfrom_QubitPauliOperator()
methods to theQubitOperator
class to allow the conversion ofQubitOperator
to/from the pytket accessiblepytket.utils.QubitPauliOperator
Add
all_nontrivial_qubits()
property toQubitOperator
,QubitOperatorString
, andQubitOperatorList
classesInQuanto now throws a warning when there are dependency conflicts or required upgrades
Ensured calls to
numpy.einsum
correctly scale via optimize keyword argumentMake InQuanto installable with poetry
Bug fixes:
Fixed
load_xyz()
defaulting to Geometry base class when calledFix bug where integer type parameters could cause unwarranted rounding of non-integer quantities giving incorrect results
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 thequbits
argument, allowingQubitMappingBravyiKitaev
support.
InQuanto 3.5.0
24 April 2024
Introducing new protocols:
ComputeUncomputeFactorizedOverlap
andSwapFactorizedOverlap
for computing complex overlaps.Expanded
ProtocolList
support to the following averaging protocols:End-to-end runners for averaging protocols now support symbolic compilation with the
compile_symbolic
argument (seeget_runner()
).Protocols now allow control over pytket
optimisation_level
arg at thebuild()
step.Updated pandas dependency to version 2.2.
Added the
qubit_encode()
method forFermionState
andFermionStateString
.Bug fix: The
complex_type
arg inHadamardTestDerivative
now supports string input.
InQuanto 3.4.2
11 April 2024
Update examples algorithm_vqe_varCI.py and algorithm_vqe_varCI_h3p.py to use up-to-date
MultiConfigurationAnsatz
APIBug fixes:
Corrected Qiskit API usage in
get_noisy_backend()
PMSV
input symmetry validation is now more robustFixed
symbol_substitution()
inFermionSpaceAnsatzChemicallyAwareUCCSD
InQuanto 3.4.1
08 March 2024
Upgrade Sourcedefender dependency
InQuanto 3.4.0
07 March 2024
Significant improvements to circuit depth in
MultiConfigurationState
andMultiConfigurationAnsatz
New ansatz
MultiConfigurationStateBox
, uses pytket’sStatePreparationBox
New composite computable
ExpectationValueSumComputable
New helper methods in
inquanto.ansatzes
:rotate_ansatz_restricted()
andreference_circuit_builder()
New examples for
MultiConfigurationStateBox
,inquanto.operators.ChemistryRestrictedIntegralOperator.double_factorize()
, and using CCSD amplitudes as VQE initial parameters.Note: examples are now split between inquanto examples and inquanto-extension examples
disp
(display) option added forMinimizerSPSA
Major improvements to API documentation throughout
Bug fixes:
Fixed ‘=’ operator for
SymbolDict
Several fixes in
AlgorithmSCEOM
symbol_substitution()
with string maps now works for all ansatzes
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
get_double_factorized_system()
method added for PySCF driversPython 3.12 support and deprecate 3.9
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
Three new computables added
OverlapMatrixComputable
for representing the general overlap matrix between two states \(S_{ij} = <\Psi_i|\hat{O}|\Psi_j>\)NonOrthogonalMatricesComputable
for representing matrices used by the non-orthogonal quantum eigensolver methodSCEOMMatrixComputable
for representing the Quantum Self Consistent Equation of Motion matrix
New protocol added
ProjectiveMeasurements
for measuring the probabilities of the basis statesAdded the simultaneous perturbation stochastic approximation (SPSA) minimizer
MinimizerSPSA
Added
trotterize_as_linear_combination()
to support second orderpd_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 elementsMinor 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
Python 3.11 support
GraphColouringMethod https://cqcl.github.io/tket/pytket/api/partition.html#pytket.partition.GraphColourMethod is now configurable in
PauliAveraging
protocolNew protocol
HadamardTestOverlap
for computing overlapsVarious big fixes and small improvements
Added compilation pass options to ansatz’s
to_CircuitAnsatz
method
InQuanto 3.0.2
17 October 2023
Added support for pytket 1.21
Updated
GeometryMolecular
to accept xyz stringsFixes 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
Quantum phase estimation added
New algorithm class
AlgorithmDeterministicQPE
New protocols for phase estimation:
Green’s functions added
Constructed and run through the use of new composite computables:
Added Qermit integration for quantum error mitigation: https://github.com/CQCL/Qermit
Additions to the
inquanto.express
moduleget_system()
: for quickly retrieving only the hamiltonian, fermion space, and fermion state from an express datafilesave_h5_system()
: for saving a hamiltonian, fermion space, and fermion state to h5 fileget_noisy_backend()
: for generating a simple, configurable, noisy quantum simulator
Overhaul of the
inquanto.computables
moduleComputables no longer have responsibility for building or running circuits. They contain ingredients for computing an observable, and relations to other computables in an expression tree. Many have been renamed, and are now categorised into three submodules (* marks a new computable, and [old name if applicable]):
inquanto.computables.primitive
(primitive objects for building computable expression trees):ComputableTuple
[Computables
]ComputableNDArray
[ComputableArray
]
inquanto.computables.atomic
(these interact directly with inquanto protocols):MetricTensorReal
[ComputableMetricTensorReal] (no longer multiplied by factor of 1/4)
inquanto.computables.composite
(these are composed of atomic computables, and always have “Computable” appended to the end of the name):RestrictedOneBodyRDMComputable
[ComputableRestrictedOneBodyRDM
]UnrestrictedOneBodyRDMComputable
[ComputableUnrestrictedOneBodyRDM
]RestrictedOneBodyRDMRealComputable
[ComputableRestrictedOneBodyRDMReal
]UnrestrictedOneBodyRDMRealComputable
[ComputableUnrestrictedOneBodyRDMReal
]SpinlessNBodyRDMArrayRealComputable
[ComputableSpinlessNBodyRDMTensorReal
]SpinlessNBodyPDMArrayRealComputable
[ComputableSpinlessNBodyPDMTensorReal
]RDM1234RealComputable
[ComputableRDM1234Real
]PDM1234RealComputable
[ComputablePDM1234Real
]CommutatorComputable
[ComputableCommutator
]QSEMatricesComputable
[ComputableQSEMatrices
]
The following computables are no longer available:
ExpectationValueDerivativeReal
OverlapSquaredKetDerivative
Overhaul of the
inquanto.protocols
module.Protocols now have complete responsibility for building and running observable measurement circuits. They’ve also been renamed and refactored to be simpler to use. Many are pickle-able for easy pause-resume of experiments.
New protocol names [old name]:
PauliAveraging
[ProtocolDirect
]HadamardTest
[ProtocolIndirect
]SwapTest
[ProtocolCSP
]DestructiveSwapTest
[ProtocolDSP
]ComputeUncompute
[ProtocolVacuum
]PhaseShift
[ProtocolPhaseShift
]HadamardTestDerivative
[ProtocolHadamardDirectPauliY
,ProtocolHadamardIndirectPauliY
,ProtocolHadamardDirectPauliZ
,ProtocolHadamardIndirectPauliZ
]HadamardTestDerivativeOverlap
[ProtocolHadamardDerivativeOverlap
]SparseStatevectorProtocol
[ProtocolStateVectorSparse
]BackendStatevectorProtocol
[ProtocolStateVectorBackendSupport
]SymbolicProtocol
[ProtocolSymbolic
]
The following protocols are no longer available:
ProtocolMidMeasurementGradient
ProtocolVacuumPhaseShift
inquanto.protocols.supporters
submodule is no longer available.Error mitigation is performed using Qermit or with new noise mitigation classes (available from the
inquanto.protocols
module):
Changes to the
inquanto.ansatzes
moduleRenaming of some ansatzes [old name]:
MultiConfigurationAnsatz
[GivensAnsatz
]MultiConfigurationState
[MultiReferenceState
]
RealBasisRotationAnsatz
is replaced by three new classes, which have improved circuit depths:
QubitState
/FermionState
have been restructured to make their usage more consistent withQubitOperator
/FermionOperator
Many bug fixes
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-ac0WFT-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
Added double factorization
inquanto.operators.DoubleFactorizedHamiltonian
Added Real Basis Rotation Ansatz
inquanto.ansatzes.RealBasisRotationAnsatz
Addition of some C++ components and functionality (speed up compact integrals)
Adding various tools for manipulating
inquanto.operators.QubitOperatorList
Qubitwise commutativity + improved tools for general commutativity
Added
inquanto.operators.OperatorList.sublist()
and someinquanto.algorithms.adapt.AlgorithmFermionicAdaptVQE
convenience methods.Extra
inquanto.algorithms.time_evolution.AlgorithmVQS
examplesUpgrading Python support (up to 3.11) in line with pytket
Remove restriction on pytket-qiskit dependency requirement
inquanto.embeddings.dmet
docstringsImproved Impurity DMET exact diagonalization and VQE solver
Improved API documentation
inquanto-pyscf :
inquanto.extensions.pyscf.fmo.FMO
, NEVPT2 methods e.g.get_nevpt2_correction()
, and fixes.inquanto-nglview: improved API docs and fixes
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
andcost_estimate_elementwise
for circuit cost estimation on Quantinuum hardware.kupCCGSpD
refactored tokUpCCGSDSinglet
.Pyscf
refactored toPySCF
.
1.3.0
22 November 2022
Fix
FermionSpace.construct_number_alpha_operator
andFermionSpace.construct_number_beta_operator
.Add
FermionOperator.to_latex
andQubitOperator.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
andQubitOperatorList.to_sparse_matrices
.Allow
ChemistryRestrictedIntegralOperator
andFermionOperator
to be constructed from FCI files.Add
QubitState.from_ndarray
.Remove
QubitSpace.generate_qubit_trotter_operator
.Add exponentiation and Trotterization functionality to
QubitOperator
andQubitOperatorList
.
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 synchronise 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
andload_h5
implemented for spaces classes.Added
custom_prefix
for circuit names toComputable.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()
andProtocolHadamardDirectPauliY()
)Fixed triplet excitations generator (can be used in QSE now)
General improvements in express module
MetricTensor
can now be used as part ofComputables
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.