import numpy as np


# Default is 1 sweep, 2 layers

# ResNet-18, 5 classes, 25,000 images, 100 linear probing epochs, quantum, statevector simulator,
# sim_cir_14_half, null activation function, no batchnorm, sigmoid with {0,π} bounding.

def results_sim_circ_14_half_null_AF_statevector():
    accs = np.array([[(35.06, (0, 0)), (36.42, (0, 13)), (41.04, (0, 26)), (38.88, (0, 39)), (39.54, (0, 52)),
                      (41.14, (0, 65)), (41.3, (0, 78)), (43.04, (0, 91)), (42.46, (1, 0)), (44.28, (1, 13)),
                      (44.68, (1, 26)), (47.14, (1, 39)), (45.98, (1, 52)), (45.92, (1, 65)), (46.04, (1, 78))],
                     [(33.22, (0, 0)), (33.82, (0, 13)), (38.42, (0, 26)), (38.7, (0, 39)), (40.52, (0, 52)),
                      (40.64, (0, 65)), (40.66, (0, 78)), (40.88, (0, 91)), (42.58, (1, 0)), (44.32, (1, 13)),
                      (44.84, (1, 26)), (46.7, (1, 39)), (45.1, (1, 52)), (45.76, (1, 65)), (47.3, (1, 78))],
                     [(32.58, (0, 0)), (36.08, (0, 13)), (41.0, (0, 26)), (40.74, (0, 39)), (42.98, (0, 52)),
                      (43.78, (0, 65)), (45.02, (0, 78)), (45.88, (0, 91)), (45.24, (1, 0)), (44.94, (1, 13)),
                      (44.86, (1, 26)), (45.0, (1, 39)), (46.92, (1, 52)), (46.56, (1, 65)), (47.8, (1, 78))],
                     [(32.83, (0, 0)), (35.56, (0, 13)), (40.9, (0, 26)), (44.0, (0, 39)), (43.36, (0, 52)),
                      (43.48, (0, 65)),
                      (43.36, (0, 78)), (43.3, (0, 91)), (43.38, (1, 0)), (43.84, (1, 13)), (44.54, (1, 26)),
                      (43.72, (1, 39)), (45.5, (1, 52)), (44.22, (1, 65)), (45.64, (1, 78))],
                     [(32.42, (0, 0)), (35.92, (0, 13)), (37.74, (0, 26)), (37.82, (0, 39)), (40.94, (0, 52)),
                      (41.7, (0, 65)), (40.4, (0, 78)), (44.34, (0, 91)), (43.16, (1, 0)), (44.06, (1, 13)),
                      (45.06, (1, 26)), (43.82, (1, 39)), (44.32, (1, 52)), (44.82, (1, 65)), (44.18, (1, 78))],
                     [(35.44, (0, 0)), (38.5, (0, 13)), (40.76, (0, 26)), (42.06, (0, 39)), (43.36, (0, 52)),
                      (44.68, (0, 65)), (45.38, (0, 78)), (45.86, (0, 91)), (46.28, (1, 0)), (47.26, (1, 13)),
                      (46.94, (1, 26)), (46.82, (1, 39)), (47.86, (1, 52)), (47.64, (1, 65)), (48.12, (1, 78))]])
    return accs


# ResNet-18, 5 classes, 25,000 images, 100 linear probing epochs, quantum, qasm simulator, 100 shots,
# sim_cir_14_half, null activation function, no batchnorm, sigmoid with {0,π} bounding.

def results_sim_circ_14_half_null_AF_qasm_100_shots():
    accs = np.array([[(30.36, (0, 0)), (34.22, (0, 13)), (34.2, (0, 26)), (33.46, (0, 39)), (34.96, (0, 52)),
                      (36.4, (0, 65)), (37.16, (0, 78)), (37.64, (0, 91)), (38.38, (1, 0)), (38.92, (1, 13)),
                      (39.7, (1, 26)), (41.86, (1, 39)), (42.36, (1, 52)), (43.06, (1, 65)), (43.14, (1, 78)),
                      (44.16, (1, 91))],
                     [(28.64, (0, 0)), (37.2, (0, 13)), (40.04, (0, 26)), (39.98, (0, 39)), (41.48, (0, 52)),
                      (41.88, (0, 65)), (43.0, (0, 78)), (43.24, (0, 91)), (43.8, (1, 0)), (45.44, (1, 13)),
                      (46.26, (1, 26)), (47.46, (1, 39)),
                      (47.58, (1, 52)), (46.7, (1, 65)), (47.32, (1, 78)), (47.7, (1, 91))],
                     [(27.24, (0, 0)), (37.46, (0, 13)), (37.68, (0, 26)), (38.84, (0, 39)), (39.64, (0, 52)),
                      (41.0, (0, 65)), (40.94, (0, 78)), (42.18, (0, 91)), (42.46, (1, 0)), (43.18, (1, 13)),
                      (41.96, (1, 26)), (44.6, (1, 39)), (45.26, (1, 52)), (45.9, (1, 65)), (44.56, (1, 78)),
                      (45.82, (1, 91))],
                     [(32.18, (0, 0)), (35.86, (0, 13)), (39.42, (0, 26)), (41.4, (0, 39)), (42.26, (0, 52)),
                      (43.34, (0, 65)), (44.0, (0, 78)), (45.14, (0, 91)), (44.26, (1, 0)), (45.38, (1, 13)),
                      (45.84, (1, 26)), (46.4, (1, 39)), (46.2, (1, 52)), (47.22, (1, 65)), (46.32, (1, 78)),
                      (47.56, (1, 91))],
                     [(29.92, (0, 0)), (33.72, (0, 13)), (35.52, (0, 26)), (37.66, (0, 39)), (40.08, (0, 52)),
                      (41.12, (0, 65)), (40.46, (0, 78)), (44.0, (0, 91)), (43.96, (1, 0)), (44.28, (1, 13)),
                      (46.42, (1, 26)), (45.96, (1, 39)), (45.46, (1, 52)), (45.6, (1, 65)), (47.04, (1, 78)),
                      (47.16, (1, 91))],
                     [(29.16, (0, 0)), (35.62, (0, 13)), (38.48, (0, 26)), (40.96, (0, 39)), (42.5, (0, 52)),
                      (44.08, (0, 65)), (44.88, (0, 78)), (44.68, (0, 91)), (44.64, (1, 0)), (45.76, (1, 13)),
                      (46.84, (1, 26)), (47.2, (1, 39)), (48.66, (1, 52)), (47.22, (1, 65)), (49.64, (1, 78)),
                      (47.76, (1, 91))]])
    return accs


# ResNet-18, 5 classes, 25,000 images, 100 linear probing epochs, quantum, qasm simulator, 100 shots,
# sim_cir_14_half, partial measurement half activation function, no batchnorm, sigmoid with {0,π} bounding.

def results_sim_circ_14_half_partial_measurement_half_AF_qasm_100_shots():
    accs = np.array([[(30.5, (0, 0)), (34.64, (0, 13)), (36.18, (0, 26)), (38.86, (0, 39)), (39.86, (0, 52)),
                      (40.44, (0, 65)), (41.8, (0, 78)), (43.18, (0, 91)), (43.26, (1, 0)), (42.28, (1, 13)),
                      (42.9, (1, 26)), (43.5, (1, 39)), (43.86, (1, 52)), (44.78, (1, 65)), (46.08, (1, 78)),
                      (45.34, (1, 91))],
                     [(31.88, (0, 0)), (37.94, (0, 13)), (40.26, (0, 26)), (40.4, (0, 39)), (42.96, (0, 52)),
                      (41.58, (0, 65)), (42.54, (0, 78)), (43.62, (0, 91)), (45.46, (1, 0)), (45.0, (1, 13)),
                      (45.84, (1, 26)), (45.12, (1, 39)), (45.54, (1, 52)), (47.04, (1, 65)), (48.26, (1, 78)),
                      (48.7, (1, 91))],
                     [(33.0, (0, 0)), (36.64, (0, 13)), (37.46, (0, 26)), (39.82, (0, 39)), (40.58, (0, 52)),
                      (42.54, (0, 65)), (42.6, (0, 78)), (43.24, (0, 91)), (43.9, (1, 0)), (42.96, (1, 13)),
                      (43.0, (1, 26)), (43.3, (1, 39)), (44.04, (1, 52)), (43.74, (1, 65)), (46.18, (1, 78)),
                      (45.42, (1, 91))],
                     [(28.58, (0, 0)), (38.92, (0, 13)), (39.54, (0, 26)), (38.58, (0, 39)), (42.4, (0, 52)),
                      (43.92, (0, 65)), (42.32, (0, 78)), (43.82, (0, 91)), (42.02, (1, 0)), (43.5, (1, 13)),
                      (41.74, (1, 26)), (43.58, (1, 39)), (45.82, (1, 52)), (46.24, (1, 65)), (45.14, (1, 78)),
                      (47.22, (1, 91))],
                     [(30.72, (0, 0)), (38.38, (0, 13)), (39.18, (0, 26)), (41.62, (0, 39)), (40.2, (0, 52)),
                      (41.68, (0, 65)), (42.4, (0, 78)), (41.6, (0, 91)), (39.46, (1, 0)), (40.08, (1, 13)),
                      (39.8, (1, 26)), (42.42, (1, 39)), (44.88, (1, 52)), (44.18, (1, 65)), (44.98, (1, 78)),
                      (42.74, (1, 91))]])
    return accs


# ResNet-18, 5 classes, 25,000 images, 100 linear probing epochs, quantum, statevector simulator,
# abbas ansatz, 3 layers, null activation function, no batchnorm, sigmoid with {0,π} bounding.

def results_abbas_3_layers_null_AF_statevector():
    accs = np.array([[(29.66, (0, 0)), (35.14, (0, 13)), (37.86, (0, 26)), (38.4, (0, 39)), (38.56, (0, 52)),
                      (39.88, (0, 65)), (40.88, (0, 78)), (42.06, (0, 91)), (42.34, (1, 0)), (40.68, (1, 13)),
                      (42.96, (1, 26)), (44.38, (1, 39)), (42.94, (1, 52)), (43.52, (1, 65)), (44.54, (1, 78)),
                      (44.84, (1, 91))],
                     [(29.98, (0, 0)), (33.38, (0, 13)), (32.76, (0, 26)), (35.54, (0, 39)), (36.24, (0, 52)),
                      (36.28, (0, 65)), (37.38, (0, 78)), (37.14, (0, 91)), (37.62, (1, 0)), (38.62, (1, 13)),
                      (38.4, (1, 26)), (40.1, (1, 39)), (40.76, (1, 52)), (42.18, (1, 65)), (43.1, (1, 78)),
                      (44.56, (1, 91))],
                     [(32.06, (0, 0)), (35.68, (0, 13)), (40.84, (0, 26)), (40.86, (0, 39)), (40.7, (0, 52)),
                      (43.0, (0, 65)), (43.14, (0, 78)), (43.48, (0, 91)), (43.62, (1, 0)), (44.56, (1, 13)),
                      (45.12, (1, 26)), (45.98, (1, 39)), (45.34, (1, 52)), (45.66, (1, 65)), (46.1, (1, 78)),
                      (45.3, (1, 91))],
                     [(29.52, (0, 0)), (32.76, (0, 13)), (32.74, (0, 26)), (34.82, (0, 39)), (35.46, (0, 52)),
                      (35.2, (0, 65)), (35.32, (0, 78)), (35.66, (0, 91)), (35.56, (1, 0)), (36.34, (1, 13)),
                      (37.42, (1, 26)), (36.44, (1, 39)), (40.84, (1, 52)), (37.96, (1, 65)), (39.34, (1, 78)),
                      (38.3, (1, 91))],
                     [(32.98, (0, 0)), (31.34, (0, 13)), (36.16, (0, 26)), (36.48, (0, 39)), (37.66, (0, 52)),
                      (40.54, (0, 65)), (41.1, (0, 78)), (40.72, (0, 91)), (39.8, (1, 0)), (40.46, (1, 13)),
                      (40.08, (1, 26)), (39.92, (1, 39)), (40.04, (1, 52)), (42.38, (1, 65)), (42.14, (1, 78)),
                      (40.38, (1, 91))],
                     [(30.72, (0, 0)), (34.9, (0, 13)), (32.52, (0, 26)), (35.54, (0, 39)), (35.78, (0, 52)),
                      (35.94, (0, 65)), (34.86, (0, 78)), (35.98, (0, 91)), (37.02, (1, 0)), (39.16, (1, 13)),
                      (40.58, (1, 26)), (41.18, (1, 39)), (40.68, (1, 52)), (39.7, (1, 65)), (41.44, (1, 78)),
                      (41.68, (1, 91))]])
    return accs
