Open-source codes for performing classical shadows, particularly for noisy quantum simulations of fermions and qubits. Based primarily on the following papers:
The base implementation in Python requires OpenFermion and Cirq. The numerical examples additionally require qsimcirq, ReCirq, and the Julia package ITensor.
The files are organized as follows. For either fermion_shadows
or pauli_shadows
, codes in the prediction
directory provide the routines to postprocess the quantum measurement data (description of random unitary and bit string) into numerical estimates of desired observables (using either a Pauli or Majorana operator decomposition). Included are also the robust estimators, using either Symmetry-Adjusted Classical Shadows if the system obeys a U(1) symmetry, or Robust Shadow Estimation from separately obtained calibration data. Codes in the simulation
directory provide examples for running the protocol (i.e., numerically simulating the quantum circuits to obtain samples, which are then postprocessed into observable predictions).
Working examples/test codes are provided for each protocol. If you have any questions, please do not hesitate to reach out.