tequila-basic 1.9.9__py3-none-any.whl → 1.9.10__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.
Files changed (86) hide show
  1. tequila/__init__.py +29 -14
  2. tequila/apps/__init__.py +14 -5
  3. tequila/apps/_unary_state_prep_impl.py +145 -112
  4. tequila/apps/adapt/__init__.py +9 -1
  5. tequila/apps/adapt/adapt.py +154 -113
  6. tequila/apps/krylov/__init__.py +1 -1
  7. tequila/apps/krylov/krylov.py +23 -21
  8. tequila/apps/robustness/helpers.py +10 -6
  9. tequila/apps/robustness/interval.py +238 -156
  10. tequila/apps/unary_state_prep.py +29 -23
  11. tequila/autograd_imports.py +8 -5
  12. tequila/circuit/__init__.py +2 -1
  13. tequila/circuit/_gates_impl.py +135 -67
  14. tequila/circuit/circuit.py +163 -79
  15. tequila/circuit/compiler.py +114 -105
  16. tequila/circuit/gates.py +288 -120
  17. tequila/circuit/gradient.py +35 -23
  18. tequila/circuit/noise.py +83 -74
  19. tequila/circuit/postselection.py +120 -0
  20. tequila/circuit/pyzx.py +10 -6
  21. tequila/circuit/qasm.py +201 -83
  22. tequila/circuit/qpic.py +63 -61
  23. tequila/grouping/binary_rep.py +148 -146
  24. tequila/grouping/binary_utils.py +84 -75
  25. tequila/grouping/compile_groups.py +334 -230
  26. tequila/grouping/ev_utils.py +77 -41
  27. tequila/grouping/fermionic_functions.py +383 -308
  28. tequila/grouping/fermionic_methods.py +170 -123
  29. tequila/grouping/overlapping_methods.py +69 -52
  30. tequila/hamiltonian/paulis.py +12 -13
  31. tequila/hamiltonian/paulistring.py +1 -1
  32. tequila/hamiltonian/qubit_hamiltonian.py +45 -35
  33. tequila/ml/__init__.py +1 -0
  34. tequila/ml/interface_torch.py +19 -16
  35. tequila/ml/ml_api.py +11 -10
  36. tequila/ml/utils_ml.py +12 -11
  37. tequila/objective/__init__.py +8 -3
  38. tequila/objective/braket.py +55 -47
  39. tequila/objective/objective.py +87 -55
  40. tequila/objective/qtensor.py +36 -27
  41. tequila/optimizers/__init__.py +31 -23
  42. tequila/optimizers/_containers.py +11 -7
  43. tequila/optimizers/optimizer_base.py +111 -83
  44. tequila/optimizers/optimizer_gd.py +258 -231
  45. tequila/optimizers/optimizer_gpyopt.py +56 -42
  46. tequila/optimizers/optimizer_scipy.py +157 -112
  47. tequila/quantumchemistry/__init__.py +66 -38
  48. tequila/quantumchemistry/chemistry_tools.py +393 -209
  49. tequila/quantumchemistry/encodings.py +121 -13
  50. tequila/quantumchemistry/madness_interface.py +170 -96
  51. tequila/quantumchemistry/orbital_optimizer.py +86 -41
  52. tequila/quantumchemistry/psi4_interface.py +166 -97
  53. tequila/quantumchemistry/pyscf_interface.py +70 -23
  54. tequila/quantumchemistry/qc_base.py +866 -414
  55. tequila/simulators/__init__.py +0 -3
  56. tequila/simulators/simulator_api.py +247 -105
  57. tequila/simulators/simulator_aqt.py +102 -0
  58. tequila/simulators/simulator_base.py +147 -53
  59. tequila/simulators/simulator_cirq.py +58 -42
  60. tequila/simulators/simulator_cudaq.py +600 -0
  61. tequila/simulators/simulator_ddsim.py +390 -0
  62. tequila/simulators/simulator_mqp.py +30 -0
  63. tequila/simulators/simulator_pyquil.py +190 -171
  64. tequila/simulators/simulator_qibo.py +95 -87
  65. tequila/simulators/simulator_qiskit.py +119 -107
  66. tequila/simulators/simulator_qlm.py +52 -26
  67. tequila/simulators/simulator_qulacs.py +74 -52
  68. tequila/simulators/simulator_spex.py +95 -60
  69. tequila/simulators/simulator_symbolic.py +6 -5
  70. tequila/simulators/test_spex_simulator.py +8 -11
  71. tequila/tools/convenience.py +4 -4
  72. tequila/tools/qng.py +72 -64
  73. tequila/tools/random_generators.py +38 -34
  74. tequila/utils/bitstrings.py +7 -7
  75. tequila/utils/exceptions.py +19 -5
  76. tequila/utils/joined_transformation.py +8 -10
  77. tequila/utils/keymap.py +0 -5
  78. tequila/utils/misc.py +6 -4
  79. tequila/version.py +1 -1
  80. tequila/wavefunction/qubit_wavefunction.py +47 -28
  81. {tequila_basic-1.9.9.dist-info → tequila_basic-1.9.10.dist-info}/METADATA +13 -16
  82. tequila_basic-1.9.10.dist-info/RECORD +93 -0
  83. {tequila_basic-1.9.9.dist-info → tequila_basic-1.9.10.dist-info}/WHEEL +1 -1
  84. tequila_basic-1.9.9.dist-info/RECORD +0 -88
  85. {tequila_basic-1.9.9.dist-info → tequila_basic-1.9.10.dist-info}/licenses/LICENSE +0 -0
  86. {tequila_basic-1.9.9.dist-info → tequila_basic-1.9.10.dist-info}/top_level.txt +0 -0
@@ -6,6 +6,9 @@ from .qc_base import QuantumChemistryBase
6
6
  from .chemistry_tools import ParametersQC, NBodyTensor
7
7
  from .madness_interface import QuantumChemistryMadness
8
8
 
9
+ # needs pyscf (handeled in call)
10
+ from .orbital_optimizer import optimize_orbitals
11
+
9
12
 
10
13
  SUPPORTED_QCHEMISTRY_BACKENDS = ["base", "psi4", "madness", "pyscf"]
11
14
  INSTALLED_QCHEMISTRY_BACKENDS = {"base": QuantumChemistryBase, "madness": QuantumChemistryMadness}
@@ -35,15 +38,17 @@ def show_supported_modules():
35
38
  print(SUPPORTED_QCHEMISTRY_BACKENDS)
36
39
 
37
40
 
38
- def Molecule(geometry: str = None,
39
- basis_set: str = None,
40
- transformation: typing.Union[str, typing.Callable] = None,
41
- orbital_type: str = None,
42
- backend: str = None,
43
- guess_wfn=None,
44
- name: str = None,
45
- *args,
46
- **kwargs) -> QuantumChemistryBase:
41
+ def Molecule(
42
+ geometry: str = None,
43
+ basis_set: str = None,
44
+ transformation: typing.Union[str, typing.Callable] = None,
45
+ orbital_type: str = None,
46
+ backend: str = None,
47
+ guess_wfn=None,
48
+ name: str = None,
49
+ *args,
50
+ **kwargs,
51
+ ) -> QuantumChemistryBase:
47
52
  """
48
53
 
49
54
  Parameters
@@ -72,11 +77,14 @@ def Molecule(geometry: str = None,
72
77
 
73
78
  # failsafe for common mistake
74
79
  if "basis" in kwargs:
75
- warnings.warn("called molecule with keyword \"basis={0}\" converting it to \"basis_set={0}\"".format(kwargs["basis"]), TequilaWarning)
80
+ warnings.warn(
81
+ 'called molecule with keyword "basis={0}" converting it to "basis_set={0}"'.format(kwargs["basis"]),
82
+ TequilaWarning,
83
+ )
76
84
  if basis_set is not None:
77
- warnings.warn("did not convert as \"basis_set={}\" was already given".format(basis_set), TequilaWarning)
78
- basis_set=kwargs["basis"]
79
-
85
+ warnings.warn('did not convert as "basis_set={}" was already given'.format(basis_set), TequilaWarning)
86
+ basis_set = kwargs["basis"]
87
+
80
88
  keyvals = {}
81
89
  for k, v in kwargs.items():
82
90
  if k in ParametersQC.__dict__.keys():
@@ -98,11 +106,21 @@ def Molecule(geometry: str = None,
98
106
  basis_set = "mra"
99
107
  parameters.basis_set = basis_set
100
108
  if orbital_type is not None and orbital_type.lower() not in ["pno", "mra-pno"]:
101
- warnings.warn("only PNOs supported as orbital_type without basis set. Setting to pno - You gave={}".format(orbital_type), TequilaWarning)
109
+ warnings.warn(
110
+ "only PNOs supported as orbital_type without basis set. Setting to pno - You gave={}".format(
111
+ orbital_type
112
+ ),
113
+ TequilaWarning,
114
+ )
102
115
  orbital_type = "pno"
103
116
  else:
104
117
  if orbital_type is not None and orbital_type.lower() not in ["hf", "native"]:
105
- warnings.warn("only hf and native supported as orbital_type with basis-set. Setting to hf - You gave={}".format(orbital_type), TequilaWarning)
118
+ warnings.warn(
119
+ "only hf and native supported as orbital_type with basis-set. Setting to hf - You gave={}".format(
120
+ orbital_type
121
+ ),
122
+ TequilaWarning,
123
+ )
106
124
  orbital_type = "hf"
107
125
  if orbital_type is None:
108
126
  orbital_type = "hf"
@@ -113,12 +131,14 @@ def Molecule(geometry: str = None,
113
131
  backend = "pyscf"
114
132
  else:
115
133
  raise Exception("No quantum chemistry backends installed on your system")
116
-
134
+
117
135
  elif backend == "base":
118
136
  if not integrals_provided:
119
- raise Exception("No quantum chemistry backends installed on your system\n"
120
- "To use the base functionality you need to pass the following tensors via keyword\n"
121
- "one_body_integrals, two_body_integrals\n")
137
+ raise Exception(
138
+ "No quantum chemistry backends installed on your system\n"
139
+ "To use the base functionality you need to pass the following tensors via keyword\n"
140
+ "one_body_integrals, two_body_integrals\n"
141
+ )
122
142
  else:
123
143
  backend = "base"
124
144
 
@@ -128,7 +148,7 @@ def Molecule(geometry: str = None,
128
148
  if backend not in INSTALLED_QCHEMISTRY_BACKENDS:
129
149
  raise Exception(str(backend) + " was not found on your system")
130
150
 
131
- if guess_wfn is not None and backend != 'psi4':
151
+ if guess_wfn is not None and backend != "psi4":
132
152
  raise Exception("guess_wfn only works for psi4")
133
153
 
134
154
  if basis_set is None and backend.lower() not in ["base", "madness"] and not integrals_provided:
@@ -137,8 +157,14 @@ def Molecule(geometry: str = None,
137
157
  basis_set = "custom"
138
158
  parameters.basis_set = basis_set
139
159
 
140
- return INSTALLED_QCHEMISTRY_BACKENDS[backend.lower()](parameters=parameters, transformation=transformation, orbital_type=orbital_type,
141
- guess_wfn=guess_wfn, *args, **kwargs)
160
+ return INSTALLED_QCHEMISTRY_BACKENDS[backend.lower()](
161
+ parameters=parameters,
162
+ transformation=transformation,
163
+ orbital_type=orbital_type,
164
+ guess_wfn=guess_wfn,
165
+ *args,
166
+ **kwargs,
167
+ )
142
168
 
143
169
 
144
170
  def MoleculeFromTequila(mol, transformation=None, backend=None, *args, **kwargs):
@@ -151,16 +177,21 @@ def MoleculeFromTequila(mol, transformation=None, backend=None, *args, **kwargs)
151
177
  backend = "base"
152
178
  if transformation is None:
153
179
  transformation = mol.transformation
154
- return INSTALLED_QCHEMISTRY_BACKENDS[backend.lower()](parameters=parameters, transformation=transformation,
155
- n_electrons=mol.n_electrons, one_body_integrals=h,
156
- two_body_integrals=g, nuclear_repulsion=c, *args, **kwargs)
157
-
158
-
159
- def MoleculeFromOpenFermion(molecule,
160
- transformation: typing.Union[str, typing.Callable] = None,
161
- backend: str = None,
162
- *args,
163
- **kwargs) -> QuantumChemistryBase:
180
+ return INSTALLED_QCHEMISTRY_BACKENDS[backend.lower()](
181
+ parameters=parameters,
182
+ transformation=transformation,
183
+ n_electrons=mol.n_electrons,
184
+ one_body_integrals=h,
185
+ two_body_integrals=g,
186
+ nuclear_repulsion=c,
187
+ *args,
188
+ **kwargs,
189
+ )
190
+
191
+
192
+ def MoleculeFromOpenFermion(
193
+ molecule, transformation: typing.Union[str, typing.Callable] = None, backend: str = None, *args, **kwargs
194
+ ) -> QuantumChemistryBase:
164
195
  """
165
196
  Initialize a tequila Molecule directly from an openfermion molecule object
166
197
  Parameters
@@ -178,9 +209,6 @@ def MoleculeFromOpenFermion(molecule,
178
209
  if backend is None:
179
210
  return QuantumChemistryBase.from_openfermion(molecule=molecule, transformation=transformation, *args, **kwargs)
180
211
  else:
181
- INSTALLED_QCHEMISTRY_BACKENDS[backend].from_openfermion(molecule=molecule, transformation=transformation, *args,
182
- **kwargs)
183
-
184
-
185
- # needs pyscf (handeled in call)
186
- from .orbital_optimizer import optimize_orbitals
212
+ INSTALLED_QCHEMISTRY_BACKENDS[backend].from_openfermion(
213
+ molecule=molecule, transformation=transformation, *args, **kwargs
214
+ )