def test_clifford_1_qubit_generation(self): """Verify 1-qubit clifford indeed generates the correct group""" clifford_dicts = [ {"stabilizer": ["+Z"], "destabilizer": ["+X"]}, {"stabilizer": ["+X"], "destabilizer": ["+Z"]}, {"stabilizer": ["+Y"], "destabilizer": ["+X"]}, {"stabilizer": ["+X"], "destabilizer": ["+Y"]}, {"stabilizer": ["+Z"], "destabilizer": ["+Y"]}, {"stabilizer": ["+Y"], "destabilizer": ["+Z"]}, {"stabilizer": ["-Z"], "destabilizer": ["+X"]}, {"stabilizer": ["+X"], "destabilizer": ["-Z"]}, {"stabilizer": ["-Y"], "destabilizer": ["+X"]}, {"stabilizer": ["+X"], "destabilizer": ["-Y"]}, {"stabilizer": ["-Z"], "destabilizer": ["-Y"]}, {"stabilizer": ["-Y"], "destabilizer": ["-Z"]}, {"stabilizer": ["-Z"], "destabilizer": ["-X"]}, {"stabilizer": ["-X"], "destabilizer": ["-Z"]}, {"stabilizer": ["+Y"], "destabilizer": ["-X"]}, {"stabilizer": ["-X"], "destabilizer": ["+Y"]}, {"stabilizer": ["-Z"], "destabilizer": ["+Y"]}, {"stabilizer": ["+Y"], "destabilizer": ["-Z"]}, {"stabilizer": ["+Z"], "destabilizer": ["-X"]}, {"stabilizer": ["-X"], "destabilizer": ["+Z"]}, {"stabilizer": ["-Y"], "destabilizer": ["-X"]}, {"stabilizer": ["-X"], "destabilizer": ["-Y"]}, {"stabilizer": ["+Z"], "destabilizer": ["-Y"]}, {"stabilizer": ["-Y"], "destabilizer": ["+Z"]}, ] cliffords = [Clifford.from_dict(i) for i in clifford_dicts] utils = rb.CliffordUtils() for n in range(24): clifford = utils.clifford_1_qubit(n) self.assertEqual(clifford, cliffords[n])
def format_save_type(data, save_type, save_subtype): """Format raw simulator result data based on save type.""" init_fns = { "save_statevector": Statevector, "save_density_matrix": DensityMatrix, "save_unitary": Operator, "save_superop": SuperOp, "save_stabilizer": (lambda data: StabilizerState(Clifford.from_dict(data))), "save_clifford": Clifford.from_dict, "save_probabilities_dict": ProbDistribution, } # Non-handled cases return raw data if save_type not in init_fns: return data if save_subtype in ["list", "c_list"]: def func(data): init_fn = init_fns[save_type] return [init_fn(i) for i in data] else: func = init_fns[save_type] # Conditional save if save_subtype[:2] == "c_": return {key: func(val) for key, val in data.items()} return func(data)