Tequila is an Extensible Quantum Information and Learning Architecture where the main goal is to simplify and accelerate implementation of new ideas for quantum algorithms. It operates on abstract data structures allowing the formulation, combination, automatic differentiation and optimization of generalized objectives. Tequila can execute the underlying quantum expectation values on state of the art simulators as well as on real quantum devices.
You can get an overview from this presentation
Get started with our Tutorials
Currently supported
Tequila detects backends automatically if they are installed on your systems.
All of them are available over standard pip installation like for example pip install qulacs
.
For best performance tt is recommended to have qulacs
installed.
Tequila supports Psi4.
In a conda environment this can be installed with
conda install psi4 -c psi4
We recommend installing in editable mode with
git clone https://github.com/aspuru-guzik-group/tequila.git
cd tequila
pip install -e .
Do not install over PyPi (Minecraft lovers excluded)
pip install tequila
Recommended Python version is 3.7 or 3.6
Check out the tutorial notebooks provided in tutorials.
# optimize a one qubit example
# define a variable
a = tq.Variable("a")
# define a simple circuit
U = tq.gates.Ry(angle=a*pi, target=0)
# define an Hamiltonian
H = tq.paulis.X(0)
# define an expectation value
E = tq.ExpectationValue(H=H, U=U)
# optimize the expectation value
result = tq.minimize(method="bfgs", objective=E**2)
# check out the optimized wavefunction
wfn = tq.simulate(U, variables=result.angles)
print("optimized wavefunction = ", wfn)
# plot information about the optimization
result.history.plot("energies")
result.history.plot("angles")
result.history.plot("gradients")
# define a molecule within an active space
active = {"a1": [1], "b1":[0]}
molecule = tq.quantumchemistry.Molecule(geometry="lih.xyz", basis_set='6-31g', active_orbitals=active, transformation="bravyi-kitaev")
# get the qubit hamiltonian
H = molecule.make_hamiltonian()
# make the UCCSD ansatz with cc2 ordering
U = molecule.make_uccsd_ansatz(initial_amplitudes="cc2", trotter_steps=1)
# define the expectationvalue
E = tq.ExpectationValue(H=H, U=U)
# compute reference energies
fci = molecule.compute_energy("fci")
cisd = molecule.compute_energy("detci", options={"detci__ex_level": 2})
# optimize
result = tq.minimize(objective=E, method="BFGS", gradient="2-point", method_options={"eps":1.e-3}, initial_values={k:0.0 for k in E.extract_variables()})
print("VQE : {:+2.8}f".format(result.energy))
print("CISD: {:+2.8}f".format(cisd))
print("FCI : {:+2.8}f".format(fci))
Support for additional optimizers can be activated by intalling them in your environment.
Tequila will then detect them automatically.
Currently those are: Phoenics
and GPyOpt.
You can build the documentation by navigating to docs
and entering make html
.
Open the documentation with a browser over like firefox docs/build/html/index.html
If you experience trouble of any kind or if you either want to implement a new feature or want us to implement a new feature that you need:
don't hesitate to contact us directly or raise an issue here on github
You will need cmake to install the qulacs simulator
pip install cmake
You don't need qulacs
for tequila to run (although is is recommended)
To install without qulacs
just remove the qulacs
line from requirements.txt
It can be replaced by one (or many) of the other supported simulators.
Note that simulators can also be installed on a later point, they don't need to be installed with tequila
.
As long as they are installed within the same python environment tequila
can detect them.
You can in principle use tequila with windows as OS and have almost full functionality.
You will need to replace Jax
with autograd
for it to work.
In order to do so: Remove jax
and jaxlib
from setup.py
and requirements.txt
and add autograd
instead.
In order to install qulacs you will need latest GNU compilers (at least gcc-7).
They can be installed for example over visual studio.
Tequila runs on Macs OSX.
You might get in trouble with installing qulacs since it currently does not work with Apple's clang compiler.
You need to install latest GNU compile (at least gcc-7 and g++7) and set them as default before installing qulacs over pip.