This repository contains three Python classes designed to implement shadow spectroscopy. Shadow spectroscopy is a simulator-agnostic quantum algorithm for estimating energy gaps using very few circuit repetitions (shots) and no extra resources (ancilla qubits) beyond performing time evolution and measurement [https://arxiv.org/abs/2212.11036]
The classes included in this repository are:
-
ClassicalShadow
- Implements the functionality to generate classical shadow snapshot, a data-efficient representation of quantum states.
-
Spectroscopy
- Provides tools for spectral analysis of quantum systems, including eigenvector extraction and frequency domain analysis.
-
ShadowSpectro
- Combines the features of classical shadows and spectroscopy to perform shadow spectroscopy on quantum systems. It integrates functionalities from the
ClassicalShadow
andSpectroscopy
classes.
- Combines the features of classical shadows and spectroscopy to perform shadow spectroscopy on quantum systems. It integrates functionalities from the
The ClassicalShadow
class provides tools for efficiently storing and extracting properties of quantum states based on random measurements and Clifford operations.
The Spectroscopy
class includes methods for analyzing the spectral properties of a quantum system. It focuses on extracting key frequencies and their associated amplitudes from a system's correlation matrix.
The ShadowSpectro
class integrates classical shadow techniques with spectral analysis to perform shadow spectroscopy. This involves generating classical snapshots, constructing correlation matrices, and performing spectral analysis to extract key frequencies.
The shadow spectroscopy process consists of the following steps:
- Using classical shadow, calculate for Nt time stepes the expectation value of all the k-pauli observable. The results can be represented in a Matrix with
$N_o$ column representing the expectation value of all the No observables and$N_t$ lines representing the time evolution of the expectation value of the$N_o$ observables. We call D that matrix. - Standardize the columns of the matrix D
- Compute the correlation matrix.
$C=DD^T$ - Extract the dominant eigenvectors.
- Perform spectral analysis to identify key frequencies and amplitudes.
- The highest peak represent the energy difference between the energy level of the hamiltonian
numpy
itertools
qiskit
This project is licensed under the MIT License.
For any issues or questions, feel free to reach out!