tequila-basic 1.9.4__py3-none-any.whl → 1.9.5__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- tequila/circuit/qasm.py +25 -11
- tequila/quantumchemistry/__init__.py +2 -0
- tequila/quantumchemistry/chemistry_tools.py +24 -13
- tequila/quantumchemistry/orbital_optimizer.py +10 -4
- tequila/quantumchemistry/pyscf_interface.py +1 -0
- tequila/quantumchemistry/qc_base.py +98 -15
- tequila/version.py +1 -1
- {tequila_basic-1.9.4.dist-info → tequila_basic-1.9.5.dist-info}/METADATA +11 -3
- {tequila_basic-1.9.4.dist-info → tequila_basic-1.9.5.dist-info}/RECORD +12 -12
- {tequila_basic-1.9.4.dist-info → tequila_basic-1.9.5.dist-info}/WHEEL +1 -1
- {tequila_basic-1.9.4.dist-info → tequila_basic-1.9.5.dist-info}/LICENSE +0 -0
- {tequila_basic-1.9.4.dist-info → tequila_basic-1.9.5.dist-info}/top_level.txt +0 -0
tequila/circuit/qasm.py
CHANGED
@@ -313,19 +313,33 @@ def parse_command(command: str, custom_gates_map: Dict[str, QCircuit], qregister
|
|
313
313
|
return apply_custom_gate(custom_circuit=custom_circuit, qregisters_values=qregisters_values)
|
314
314
|
|
315
315
|
if name in ("x", "y", "z", "h", "cx", "cy", "cz", "ch"):
|
316
|
-
|
317
|
-
|
318
|
-
|
316
|
+
target = get_qregister(args[0], qregisters)
|
317
|
+
control = None
|
318
|
+
if name[0].lower() == 'c':
|
319
|
+
control = get_qregister(args[0], qregisters)
|
320
|
+
target = get_qregister(args[1], qregisters)
|
321
|
+
name = name[1]
|
322
|
+
G = getattr(gates, name.upper())
|
323
|
+
return G(control=control, target=target)
|
324
|
+
|
319
325
|
if name in ("ccx", "ccy", "ccz"):
|
320
|
-
|
321
|
-
|
322
|
-
|
326
|
+
G = getattr(gates, name[2].upper())
|
327
|
+
control = [get_qregister(args[0], qregisters), get_qregister(args[1], qregisters)]
|
328
|
+
target = get_qregister(args[2], qregisters)
|
329
|
+
return G(control=control, target=target)
|
330
|
+
|
323
331
|
if name.startswith("rx(") or name.startswith("ry(") or name.startswith("rz(") or \
|
324
332
|
name.startswith("crx(") or name.startswith("cry(") or name.startswith("crz("):
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
333
|
+
angle = get_angle(name)[0]
|
334
|
+
i = name.find('(')
|
335
|
+
name = name[0:i]
|
336
|
+
name = name.upper()
|
337
|
+
name = [x for x in name]
|
338
|
+
name[-1] = name[-1].lower()
|
339
|
+
name = "".join(name)
|
340
|
+
G = getattr(gates, name)
|
341
|
+
return G(angle=angle,control=get_qregister(args[0], qregisters) if name[0] == 'C' else None,target=get_qregister(args[1 if name[0] == 'C' else 0], qregisters))
|
342
|
+
|
329
343
|
if name.startswith("U("):
|
330
344
|
angles = get_angle(name)
|
331
345
|
return gates.U(theta=angles[0], phi=angles[1], lambd=angles[2],
|
@@ -362,7 +376,7 @@ def parse_command(command: str, custom_gates_map: Dict[str, QCircuit], qregister
|
|
362
376
|
control=get_qregister(args[0], qregisters),
|
363
377
|
target=get_qregister(args[1], qregisters))
|
364
378
|
if name in ("s", "t", "sdg", "tdg"):
|
365
|
-
g = gates.Phase(pi / (2 if name.startswith("s") else 4),
|
379
|
+
g = gates.Phase(angle=pi / (2 if name.startswith("s") else 4),
|
366
380
|
control=None,
|
367
381
|
target=get_qregister(args[0], qregisters))
|
368
382
|
if name.find("dg") != -1:
|
@@ -95,6 +95,8 @@ def Molecule(geometry: str = None,
|
|
95
95
|
if backend is None:
|
96
96
|
if basis_set is None or basis_set.lower() in ["madness", "mra", "pno"]:
|
97
97
|
backend = "madness"
|
98
|
+
basis_set = "mra"
|
99
|
+
parameters.basis_set = basis_set
|
98
100
|
if orbital_type is not None and orbital_type.lower() not in ["pno", "mra-pno"]:
|
99
101
|
warnings.warn("only PNOs supported as orbital_type without basis set. Setting to pno - You gave={}".format(orbital_type), TequilaWarning)
|
100
102
|
orbital_type = "pno"
|
@@ -804,20 +804,18 @@ class IntegralManager:
|
|
804
804
|
_one_body_integrals: numpy.ndarray = None
|
805
805
|
_two_body_integrals: NBodyTensor = None
|
806
806
|
_constant_term: float = None
|
807
|
-
_basis_type: str = "unknown"
|
808
807
|
_basis_name: str = "unknown"
|
809
808
|
_orbital_type: str = "unknown" # e.g. "HF", "PNO", "native"
|
810
809
|
_orbital_coefficients: numpy.ndarray = None
|
811
810
|
_active_space: ActiveSpaceData = None
|
812
811
|
_orbitals: typing.List[OrbitalData] = None
|
813
812
|
|
814
|
-
def __init__(self, one_body_integrals, two_body_integrals,
|
813
|
+
def __init__(self, one_body_integrals, two_body_integrals,
|
815
814
|
basis_name="unknown", orbital_type="unknown",
|
816
815
|
constant_term=0.0, orbital_coefficients=None, active_space=None, overlap_integrals=None, orbitals=None, *args, **kwargs):
|
817
816
|
self._one_body_integrals = one_body_integrals
|
818
817
|
self._two_body_integrals = two_body_integrals
|
819
818
|
self._constant_term = constant_term
|
820
|
-
self._basis_type = basis_type
|
821
819
|
self._basis_name = basis_name
|
822
820
|
self._orbital_type = orbital_type
|
823
821
|
|
@@ -956,9 +954,16 @@ class IntegralManager:
|
|
956
954
|
"""
|
957
955
|
c = self.get_orthonormalized_orbital_coefficients()
|
958
956
|
self.orbital_coefficients=c
|
959
|
-
self._orbital_type="orthonormalized-{}-basis".format(self.
|
957
|
+
self._orbital_type="orthonormalized-{}-basis".format(self._basis_name)
|
960
958
|
|
961
|
-
def
|
959
|
+
def is_unitary(self, U):
|
960
|
+
if len(U.shape) != 2: return False
|
961
|
+
if U.shape[0] != U.shape[1]: return False
|
962
|
+
test = (U.conj().T).dot(U) - numpy.eye(U.shape[0])
|
963
|
+
if not numpy.isclose(numpy.linalg.norm(test), 0.0): return False
|
964
|
+
return True
|
965
|
+
|
966
|
+
def transform_orbitals(self, U, name=None):
|
962
967
|
"""
|
963
968
|
Transform orbitals
|
964
969
|
Parameters
|
@@ -969,10 +974,12 @@ class IntegralManager:
|
|
969
974
|
-------
|
970
975
|
updates the structure with new orbitals: c = cU
|
971
976
|
"""
|
972
|
-
|
973
|
-
|
974
|
-
|
975
|
-
|
977
|
+
assert self.is_unitary(U)
|
978
|
+
self.orbital_coefficients = numpy.einsum("ix, xj -> ij", self.orbital_coefficients, U, optimize="greedy")
|
979
|
+
if name is None:
|
980
|
+
self._orbital_type += "-transformed"
|
981
|
+
else:
|
982
|
+
self._orbital_type = name
|
976
983
|
|
977
984
|
def get_integrals(self, orbital_coefficients=None, ordering="openfermion", ignore_active_space=False, *args, **kwargs):
|
978
985
|
"""
|
@@ -1001,7 +1008,9 @@ class IntegralManager:
|
|
1001
1008
|
active_integrals = get_active_space_integrals(one_body_integrals=h, two_body_integrals=g,
|
1002
1009
|
occupied_indices=self._active_space.frozen_reference_orbitals,
|
1003
1010
|
active_indices=self._active_space.active_orbitals)
|
1011
|
+
|
1004
1012
|
c = active_integrals[0] + c
|
1013
|
+
|
1005
1014
|
h = active_integrals[1]
|
1006
1015
|
g = NBodyTensor(elems=active_integrals[2], ordering="openfermion")
|
1007
1016
|
g.reorder(to=ordering)
|
@@ -1069,14 +1078,16 @@ class IntegralManager:
|
|
1069
1078
|
result += str(x) + "\n"
|
1070
1079
|
return result
|
1071
1080
|
|
1072
|
-
def print_basis_info(self, *args, **kwargs) -> None:
|
1073
|
-
print("{:15} : {}".format("basis_type", self._basis_type), *args, **kwargs)
|
1081
|
+
def print_basis_info(self, print_coefficients=True, *args, **kwargs) -> None:
|
1074
1082
|
print("{:15} : {}".format("basis_name", self._basis_name), *args, **kwargs)
|
1075
1083
|
print("{:15} : {}".format("orbital_type", self._orbital_type), *args, **kwargs)
|
1076
|
-
print("{:15} : {}".format("orthogonal", self.basis_is_orthogonal()), *args, **kwargs)
|
1077
|
-
print("{:15} : {}".format("functions", self.one_body_integrals.shape[0]), *args, **kwargs)
|
1084
|
+
print("{:15} : {}".format("orthogonal basis", self.basis_is_orthogonal()), *args, **kwargs)
|
1085
|
+
print("{:15} : {}".format("basis functions", self.one_body_integrals.shape[0]), *args, **kwargs)
|
1086
|
+
print("{:15} : {}".format("active orbitals", [o.idx_total for o in self.active_orbitals]), *args, **kwargs)
|
1078
1087
|
print("{:15} : {}".format("reference", [x.idx_total for x in self.reference_orbitals]), *args, **kwargs)
|
1079
1088
|
|
1089
|
+
if not print_coefficients: return
|
1090
|
+
|
1080
1091
|
print("Current Orbitals", *args, **kwargs)
|
1081
1092
|
for i,x in enumerate(self.orbitals):
|
1082
1093
|
print(x, *args, **kwargs)
|
@@ -37,7 +37,7 @@ class OptimizeOrbitalsResult:
|
|
37
37
|
self.iterations += 1
|
38
38
|
|
39
39
|
def optimize_orbitals(molecule, circuit=None, vqe_solver=None, pyscf_arguments=None, silent=False,
|
40
|
-
vqe_solver_arguments=None, initial_guess=None, return_mcscf=False, use_hcb=False, molecule_factory=None, molecule_arguments=None, *args, **kwargs):
|
40
|
+
vqe_solver_arguments=None, initial_guess=None, return_mcscf=False, use_hcb=False, molecule_factory=None, molecule_arguments=None, restrict_to_active_space=True, *args, **kwargs):
|
41
41
|
"""
|
42
42
|
|
43
43
|
Parameters
|
@@ -78,7 +78,12 @@ def optimize_orbitals(molecule, circuit=None, vqe_solver=None, pyscf_arguments=N
|
|
78
78
|
if pyscf_arguments is None:
|
79
79
|
pyscf_arguments = {"max_cycle_macro": 10, "max_cycle_micro": 3}
|
80
80
|
no = molecule.n_orbitals
|
81
|
-
|
81
|
+
|
82
|
+
if not isinstance(molecule, QuantumChemistryPySCF):
|
83
|
+
pyscf_molecule = QuantumChemistryPySCF.from_tequila(molecule=molecule, transformation=molecule.transformation)
|
84
|
+
else:
|
85
|
+
pyscf_molecule = molecule
|
86
|
+
|
82
87
|
mf = pyscf_molecule._get_hf()
|
83
88
|
result=OptimizeOrbitalsResult()
|
84
89
|
mc = mcscf.CASSCF(mf, pyscf_molecule.n_orbitals, pyscf_molecule.n_electrons)
|
@@ -140,10 +145,11 @@ def optimize_orbitals(molecule, circuit=None, vqe_solver=None, pyscf_arguments=N
|
|
140
145
|
mc.kernel()
|
141
146
|
# make new molecule
|
142
147
|
|
143
|
-
|
148
|
+
mo_coeff = mc.mo_coeff
|
149
|
+
transformed_molecule = pyscf_molecule.transform_orbitals(orbital_coefficients=mo_coeff, name="optimized")
|
144
150
|
result.molecule=transformed_molecule
|
145
151
|
result.old_molecule=molecule
|
146
|
-
result.mo_coeff=
|
152
|
+
result.mo_coeff=mo_coeff
|
147
153
|
result.energy=mc.e_tot
|
148
154
|
|
149
155
|
if return_mcscf:
|
@@ -75,6 +75,7 @@ class QuantumChemistryPySCF(QuantumChemistryBase):
|
|
75
75
|
kwargs["two_body_integrals"] = g_ao
|
76
76
|
kwargs["one_body_integrals"] = h_ao
|
77
77
|
kwargs["orbital_coefficients"] = mo_coeff
|
78
|
+
kwargs["orbital_type"] = "hf"
|
78
79
|
|
79
80
|
if "nuclear_repulsion" not in kwargs:
|
80
81
|
kwargs["nuclear_repulsion"] = mol.energy_nuc()
|
@@ -94,7 +94,7 @@ class QuantumChemistryBase:
|
|
94
94
|
else:
|
95
95
|
self.integral_manager = self.initialize_integral_manager(active_orbitals=active_orbitals,
|
96
96
|
reference_orbitals=reference_orbitals,
|
97
|
-
orbitals=orbitals, frozen_orbitals=frozen_orbitals, orbital_type=orbital_type, *args,
|
97
|
+
orbitals=orbitals, frozen_orbitals=frozen_orbitals, orbital_type=orbital_type, basis_name=self.parameters.basis_set, *args,
|
98
98
|
**kwargs)
|
99
99
|
|
100
100
|
if orbital_type is not None and orbital_type.lower() == "native":
|
@@ -109,15 +109,23 @@ class QuantumChemistryBase:
|
|
109
109
|
|
110
110
|
@classmethod
|
111
111
|
def from_tequila(cls, molecule, transformation=None, *args, **kwargs):
|
112
|
-
c
|
112
|
+
c = molecule.integral_manager.constant_term
|
113
|
+
h1 = molecule.integral_manager.one_body_integrals
|
114
|
+
h2 = molecule.integral_manager.two_body_integrals
|
115
|
+
S = molecule.integral_manager.overlap_integrals
|
116
|
+
active_orbitals = [o.idx_total for o in molecule.integral_manager.active_orbitals]
|
113
117
|
if transformation is None:
|
114
118
|
transformation = molecule.transformation
|
119
|
+
parameters = molecule.parameters
|
115
120
|
return cls(nuclear_repulsion=c,
|
116
121
|
one_body_integrals=h1,
|
117
122
|
two_body_integrals=h2,
|
118
|
-
|
123
|
+
overlap_integrals = S,
|
124
|
+
orbital_coefficients = molecule.integral_manager.orbital_coefficients,
|
125
|
+
active_orbitals= active_orbitals,
|
119
126
|
transformation=transformation,
|
120
|
-
|
127
|
+
orbital_type=molecule.integral_manager._orbital_type,
|
128
|
+
parameters=parameters, *args, **kwargs)
|
121
129
|
|
122
130
|
def supports_ucc(self):
|
123
131
|
"""
|
@@ -543,11 +551,13 @@ class QuantumChemistryBase:
|
|
543
551
|
|
544
552
|
return manager
|
545
553
|
|
546
|
-
def transform_orbitals(self, orbital_coefficients, *args, **kwargs):
|
554
|
+
def transform_orbitals(self, orbital_coefficients, ignore_active_space=False, name=None, *args, **kwargs):
|
547
555
|
"""
|
548
556
|
Parameters
|
549
557
|
----------
|
550
|
-
orbital_coefficients: second index is new orbital indes, first is old orbital index (summed over)
|
558
|
+
orbital_coefficients: second index is new orbital indes, first is old orbital index (summed over), indices are assumed to be defined on the active space
|
559
|
+
ignore_active_space: if true orbital_coefficients are not assumed to be given in the active space
|
560
|
+
name: str, name the new orbitals
|
551
561
|
args
|
552
562
|
kwargs
|
553
563
|
|
@@ -556,9 +566,20 @@ class QuantumChemistryBase:
|
|
556
566
|
New molecule with transformed orbitals
|
557
567
|
"""
|
558
568
|
|
569
|
+
U = numpy.eye(self.integral_manager.orbital_coefficients.shape[0])
|
570
|
+
# mo_coeff by default only acts on the active space
|
571
|
+
active_indices = [o.idx_total for o in self.integral_manager.active_orbitals]
|
572
|
+
|
573
|
+
if ignore_active_space:
|
574
|
+
U = orbital_coefficients
|
575
|
+
else:
|
576
|
+
for kk,k in enumerate(active_indices):
|
577
|
+
for ll,l in enumerate(active_indices):
|
578
|
+
U[k][l] = orbital_coefficients[kk][ll]
|
579
|
+
|
559
580
|
# can not be an instance of a specific backend (otherwise we get inconsistencies with classical methods in the backend)
|
560
581
|
integral_manager = copy.deepcopy(self.integral_manager)
|
561
|
-
integral_manager.transform_orbitals(U=
|
582
|
+
integral_manager.transform_orbitals(U=U, name=name)
|
562
583
|
result = QuantumChemistryBase(parameters=self.parameters, integral_manager=integral_manager, transformation=self.transformation)
|
563
584
|
return result
|
564
585
|
|
@@ -583,7 +604,7 @@ class QuantumChemistryBase:
|
|
583
604
|
else:
|
584
605
|
integral_manager = copy.deepcopy(self.integral_manager)
|
585
606
|
integral_manager.transform_to_native_orbitals()
|
586
|
-
result = QuantumChemistryBase(parameters=self.parameters, integral_manager=integral_manager,
|
607
|
+
result = QuantumChemistryBase(parameters=self.parameters, integral_manager=integral_manager, transformation=self.transformation)
|
587
608
|
return result
|
588
609
|
|
589
610
|
|
@@ -645,6 +666,68 @@ class QuantumChemistryBase:
|
|
645
666
|
"""
|
646
667
|
return 2 * len(self.integral_manager.active_reference_orbitals)
|
647
668
|
|
669
|
+
def make_annihilation_op(self, orbital, coefficient=1.0):
|
670
|
+
"""
|
671
|
+
Compute annihilation operator on spin-orbital in qubit representation
|
672
|
+
Spin-orbital order is always (up,down,up,down,...)
|
673
|
+
"""
|
674
|
+
assert orbital<=self.n_orbitals*2
|
675
|
+
aop = openfermion.ops.FermionOperator(f'{orbital}', coefficient)
|
676
|
+
return self.transformation(aop)
|
677
|
+
|
678
|
+
def make_creation_op(self, orbital, coefficient=1.0):
|
679
|
+
"""
|
680
|
+
Compute creation operator on spin-orbital in qubit representation
|
681
|
+
Spin-orbital order is always (up,down,up,down,...)
|
682
|
+
"""
|
683
|
+
assert orbital<=self.n_orbitals*2
|
684
|
+
cop = openfermion.ops.FermionOperator(f'{orbital}^', coefficient)
|
685
|
+
return self.transformation(cop)
|
686
|
+
|
687
|
+
def make_number_op(self, orbital):
|
688
|
+
"""
|
689
|
+
Compute number operator on spin-orbital in qubit representation
|
690
|
+
Spin-orbital order is always (up,down,up,down,...)
|
691
|
+
"""
|
692
|
+
num_op = self.make_creation_op(orbital) * self.make_annihilation_op(orbital)
|
693
|
+
return num_op
|
694
|
+
|
695
|
+
def make_sz_op(self):
|
696
|
+
"""
|
697
|
+
Compute the spin_z operator of the molecule in qubit representation
|
698
|
+
"""
|
699
|
+
sz = QubitHamiltonian()
|
700
|
+
for i in range(0, self.n_orbitals * 2, 2):
|
701
|
+
one = 0.5 * self.make_creation_op(i) * self.make_annihilation_op(i)
|
702
|
+
two = 0.5 * self.make_creation_op(i+1) * self.make_annihilation_op(i+1)
|
703
|
+
sz += (one - two)
|
704
|
+
return sz
|
705
|
+
|
706
|
+
def make_sp_op(self):
|
707
|
+
"""
|
708
|
+
Compute the spin+ operator of the molecule in qubit representation
|
709
|
+
"""
|
710
|
+
sp = QubitHamiltonian()
|
711
|
+
for i in range(self.n_orbitals):
|
712
|
+
sp += self.make_creation_op(i*2) * self.make_annihilation_op(i*2 + 1)
|
713
|
+
return sp
|
714
|
+
|
715
|
+
def make_sm_op(self):
|
716
|
+
"""
|
717
|
+
Compute the spin- operator of the molecule in qubit representation
|
718
|
+
"""
|
719
|
+
sm = QubitHamiltonian()
|
720
|
+
for i in range(self.n_orbitals):
|
721
|
+
sm += self.make_creation_op(i*2 + 1) * self.make_annihilation_op(i*2)
|
722
|
+
return sm
|
723
|
+
|
724
|
+
def make_s2_op(self):
|
725
|
+
"""
|
726
|
+
Compute the spin^2 operator of the molecule in qubit representation
|
727
|
+
"""
|
728
|
+
s2_op = self.make_sm_op() * self.make_sp_op() + self.make_sz_op() * (self.make_sz_op() + 1)
|
729
|
+
return s2_op
|
730
|
+
|
648
731
|
def make_hamiltonian(self, *args, **kwargs) -> QubitHamiltonian:
|
649
732
|
"""
|
650
733
|
Parameters
|
@@ -805,13 +888,13 @@ class QuantumChemistryBase:
|
|
805
888
|
"""
|
806
889
|
if U is None:
|
807
890
|
U = QCircuit()
|
808
|
-
|
809
|
-
|
810
|
-
|
811
|
-
|
812
|
-
|
813
|
-
|
814
|
-
|
891
|
+
else:
|
892
|
+
ups = [self.transformation.up(i.idx) for i in self.orbitals]
|
893
|
+
consistency = [x in ups for x in U.qubits]
|
894
|
+
if not all(consistency):
|
895
|
+
warnings.warn(
|
896
|
+
"hcb_to_me: given circuit is not defined on all first {} qubits. Is this a HCB circuit?".format(
|
897
|
+
self.n_orbitals))
|
815
898
|
|
816
899
|
# map to alpha qubits
|
817
900
|
if condensed:
|
tequila/version.py
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
__version__ = "1.9.
|
1
|
+
__version__ = "1.9.5"
|
2
2
|
__author__ = "Tequila Developers "
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: tequila-basic
|
3
|
-
Version: 1.9.
|
3
|
+
Version: 1.9.5
|
4
4
|
Summary: A High-Level Abstraction Framework for Quantum Algorithms
|
5
5
|
Home-page: https://github.com/tequilahub/tequila
|
6
6
|
Author: Tequila Developers
|
@@ -32,7 +32,7 @@ Tequila can execute the underlying quantum expectation values on state of the ar
|
|
32
32
|
- [talks and slides](https://kottmanj.github.io/talks_and_material/)
|
33
33
|
|
34
34
|
# Installation
|
35
|
-
Recommended Python version is 3.
|
35
|
+
Recommended Python version is 3.9 - 3.10.
|
36
36
|
Tequila supports linux, osx and windows. However, not all optional dependencies are supported on windows.
|
37
37
|
|
38
38
|
## Install from PyPi
|
@@ -258,6 +258,14 @@ A.G. Cadavid, I. Montalban, A. Dalal, E. Solano, N.N. Hegade
|
|
258
258
|
Efficient DCQO Algorithm within the Impulse Regime for Portfolio Optimization
|
259
259
|
[arxiv:2308.15475](https://arxiv.org/abs/2308.15475)
|
260
260
|
|
261
|
+
A. Anand, K. Brown
|
262
|
+
Hamiltonians, groups, graphs and ansätze
|
263
|
+
[arxiv:2312.17146](https://arxiv.org/abs/2312.17146)
|
264
|
+
|
265
|
+
P.W.K. Jensen, E.R. Kjellgren, P. Reinholdt, K.M. Ziems, S. Coriani, J. Kongsted, S. Sauer
|
266
|
+
Quantum Equation of Motion with Orbital Optimization for Computing Molecular Properties in Near-Term Quantum Computing
|
267
|
+
[arxiv:2312.12386](https://arxiv.org/abs/2312.12386)
|
268
|
+
|
261
269
|
Let us know, if you want your research project and/or tutorial to be included in this list!
|
262
270
|
|
263
271
|
# Dependencies
|
@@ -285,7 +293,7 @@ Currently supported
|
|
285
293
|
### [Psi4](https://github.com/psi4/psi4).
|
286
294
|
In a conda environment this can be installed with
|
287
295
|
```bash
|
288
|
-
conda install psi4 -c
|
296
|
+
conda install psi4 -c conda-forge
|
289
297
|
```
|
290
298
|
Here is a small [tutorial](https://nbviewer.org/github/tequilahub/tequila-tutorials/blob/main/chemistry/ChemistryModule.ipynb) that illustrates the usage.
|
291
299
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
tequila/__init__.py,sha256=FV8-j7GEw_VYadsZUp3M2mGRQxVUYYG3W1jiI6in3CY,1959
|
2
2
|
tequila/autograd_imports.py,sha256=t7V5uYaI0GzjD7pSjkYtiaj3BzSvkm_RL2KcYfNwNhM,1529
|
3
|
-
tequila/version.py,sha256=
|
3
|
+
tequila/version.py,sha256=TrfaFu9jLo_4f8zxqIwjs8NumC_hbB4Op1r-ZZIEnyY,57
|
4
4
|
tequila/apps/__init__.py,sha256=GJb04napv8AAx5EHxS5C1CMv9kxQeu7aA-ZMWk6X_eQ,1623
|
5
5
|
tequila/apps/_unary_state_prep_impl.py,sha256=SzRtI0Nx29ODygvYYdC1NnSTCL70wY7NTAvqhiwpMDs,21757
|
6
6
|
tequila/apps/unary_state_prep.py,sha256=QCrD9Ty2RkXc1Mh_MitFPIdaPs_fLxp_dtWVBZi0tSE,9403
|
@@ -19,7 +19,7 @@ tequila/circuit/gates.py,sha256=pOvX9_vACFyUAZRG4EGW3_aZGXysUJwUV8oFiKyLJ50,3590
|
|
19
19
|
tequila/circuit/gradient.py,sha256=Y4dNL6nkZUEkKJvaA3hxaSEa8_b_3XZwxy3j8tGsOmA,10465
|
20
20
|
tequila/circuit/noise.py,sha256=2LJ7Xq5f78x9p4imIz76l_lABQZwgNteNBFkWmUAQvo,8322
|
21
21
|
tequila/circuit/pyzx.py,sha256=XHhKoklhEcbpYkgkWHBLmKF-vyt_Oz-pX-Ctvd4nAOQ,1472
|
22
|
-
tequila/circuit/qasm.py,sha256=
|
22
|
+
tequila/circuit/qasm.py,sha256=iB5stV6Exo3bAn7ac1PgFKH53XD-57b9lpmzjavJK7k,15418
|
23
23
|
tequila/circuit/qpic.py,sha256=rjNAStvgNtqa89wJ3pmuzPoPWGZVI0gxARZuUnGtJa0,10789
|
24
24
|
tequila/grouping/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
25
25
|
tequila/grouping/binary_rep.py,sha256=VVM2o6B_RC0uH8kqE4yNxTzkGlgUm-CJTZ6z5J7R9I8,19406
|
@@ -47,14 +47,14 @@ tequila/optimizers/optimizer_base.py,sha256=Nc1HwlgfeB6XifoaWdFVLhdyHfeqQuhLvOtm
|
|
47
47
|
tequila/optimizers/optimizer_gd.py,sha256=QF84K2XDn_-0w9htDlEpIaaGGtfudNamIvVCgx1JkuE,39059
|
48
48
|
tequila/optimizers/optimizer_gpyopt.py,sha256=-aVuutZUScyo6_4q4PyvMMa_OVd3L8ev9Ge2fXyWGV8,11280
|
49
49
|
tequila/optimizers/optimizer_scipy.py,sha256=zqRVQ-Whr74KCGP7Zg1jQkl9S3j9s1kS4oCrCtX30gY,18949
|
50
|
-
tequila/quantumchemistry/__init__.py,sha256=
|
51
|
-
tequila/quantumchemistry/chemistry_tools.py,sha256=
|
50
|
+
tequila/quantumchemistry/__init__.py,sha256=KP99PNJYVwBcfQGwL-MB9IBLSBJNRPf-5WN9NLqT-Rg,7424
|
51
|
+
tequila/quantumchemistry/chemistry_tools.py,sha256=2zpQU8p_xV2mDQ6Q1tWqQPdAvt2OqjQV8PcGgiOo0UU,41353
|
52
52
|
tequila/quantumchemistry/encodings.py,sha256=y9h6rjq1K9IPVBMbRFQWXyBuAIZzgh2DVw2IUKtpuIM,8656
|
53
53
|
tequila/quantumchemistry/madness_interface.py,sha256=f5c19Whb9Ene9UnkU1aKFqcGFkvN_TrR1o_G7xuC5dE,36304
|
54
|
-
tequila/quantumchemistry/orbital_optimizer.py,sha256=
|
54
|
+
tequila/quantumchemistry/orbital_optimizer.py,sha256=P_y4Q1qK-C46wgBjL4FBnSHeVSoKlzmkCG5eQWFU4_k,12376
|
55
55
|
tequila/quantumchemistry/psi4_interface.py,sha256=syNaDvlSmCsyB4f7idn3VGbMKyKo83vJHD5y5LpHwaM,29953
|
56
|
-
tequila/quantumchemistry/pyscf_interface.py,sha256=
|
57
|
-
tequila/quantumchemistry/qc_base.py,sha256=
|
56
|
+
tequila/quantumchemistry/pyscf_interface.py,sha256=XgecUnKKg2rGiKqsYCJnDQ89ekkDkKuwc3qHULLMYck,6152
|
57
|
+
tequila/quantumchemistry/qc_base.py,sha256=Bmz2lHsbtiJkb07ZZJ5EPAoW0TywQOxZgwagVHT3rEg,96531
|
58
58
|
tequila/simulators/__init__.py,sha256=VFw4sJIt4Zc0-__eYnksN8Ku9qMhbPpHJEkXMWUiD30,4
|
59
59
|
tequila/simulators/simulator_api.py,sha256=mLYA6GzujaNAGrDq1rtLQrW8tFZsCeyYnOnWRTlU6Eo,24172
|
60
60
|
tequila/simulators/simulator_base.py,sha256=93d-f4fNkJ2CtpL9OpgKcypmZH96Mdd9ESdZYn9jH48,33174
|
@@ -78,8 +78,8 @@ tequila/utils/keymap.py,sha256=RgQzeHEfRVee0-uoH-QsLYsGsXyMhEp3n33KCH-EV2k,3735
|
|
78
78
|
tequila/utils/misc.py,sha256=e62ASkFReaLJQXnBXzyYukzXZnXNoURsM1luoMeIXiE,919
|
79
79
|
tequila/wavefunction/__init__.py,sha256=q4DVL0lGFg03PogRMYA6S8MQqqmLYQiU9VNOF-YQxfQ,50
|
80
80
|
tequila/wavefunction/qubit_wavefunction.py,sha256=16Y9vRj6Yc6sBAKRUHVXJG4lJLDjWyN1b5fugf2LAmI,11881
|
81
|
-
tequila_basic-1.9.
|
82
|
-
tequila_basic-1.9.
|
83
|
-
tequila_basic-1.9.
|
84
|
-
tequila_basic-1.9.
|
85
|
-
tequila_basic-1.9.
|
81
|
+
tequila_basic-1.9.5.dist-info/LICENSE,sha256=oG1FtUav5_xrym9ByiG5emJDQRcbnAfTB08fRV9TCiE,1114
|
82
|
+
tequila_basic-1.9.5.dist-info/METADATA,sha256=dkAMyh6gVEZDDlmGeJ2NFZVvmXbjE3jpxYYrDY-7XbI,19694
|
83
|
+
tequila_basic-1.9.5.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
84
|
+
tequila_basic-1.9.5.dist-info/top_level.txt,sha256=VBH0gl6mDMbcLHKlO0yEAqtcq08DqBHz4gRJ9jafl5w,8
|
85
|
+
tequila_basic-1.9.5.dist-info/RECORD,,
|
File without changes
|
File without changes
|