import numpy as np
import Hybrid_embedding_accuracy

best_params_AE12_1 = np.array([-0.2291373,  -0.50155557, -1.59247677, -0.72832542, -0.30422235, -0.92627882,
  1.24700552,  1.30503354,  1.35506516,  0.91254374, -0.47094015, -0.16747956,
  1.18360927,  0.39397264,  1.46964729])
best_params_AE12_2 = np.array([-1.74042181,  0.69506545,  1.83685555, -0.8276748,  -1.13964231, -0.45924123,
  1.9449807,  -1.06651912, -1.20765873, -1.14371511,  2.07707629, -0.954091,
  0.35652963, -0.43082732,  1.45604684])
best_params_AE12_3 = np.array([-0.03440789, -0.8676452,  -0.21863677, -0.39726592,  0.68341955, -0.90401936,
  0.04295971,  0.0653011,  -0.03676902,  0.80234804,  0.33087476, -0.10398207,
 -1.06432913,  0.67312491, -0.24216831])
best_params_AE12_4 = np.array([0.83577363,  0.50255523, -1.5288921,   0.24772996,  0.32098796,  0.38339935,
  0.62174126, -0.11215299,  0.9258395,   0.8075693,   0.43491095,  0.39574582,
 -0.67888804, -0.65598496, -0.14940387])

best_params_AE16_1 = np.array([-1.34874539e+00,  1.13987978e+00,  5.95210908e-01, -1.39228866e+00,
 -1.03510503e+00,  2.00295364e-01,  7.30727642e-01,  1.19295372e+00,
  9.22846975e-01,  1.94040732e-01,  6.18505139e-01, -1.35865342e+00,
 -3.12127981e-02,  7.25755712e-01, -6.97965504e-01])
best_params_AE16_2 = np.array([0.56772026, -0.16328982, -0.30647197, -0.76100464, -0.93265933, -2.73073813,
 -1.47542241, -0.24167333, -1.92332329,  0.3782433,   0.07087606,  0.90065426,
 -0.51602516,  0.48764169,  0.68168871])
best_params_AE16_3 = np.array([-1.20789778e+00,  3.32947767e-01, -1.75200396e-01, -2.27767533e+00,
 -8.51692773e-01, -2.00880789e+00, -1.03993939e+00, -3.31521130e-01,
  1.32430357e+00,  2.22728639e+00,  7.49011652e-04,  4.31683540e-01,
 -6.85101943e-01, -8.94956285e-01,  2.61001469e+00])
best_params_AE16_4 = np.array([0.30633386,  0.34093614,  0.79625318, -0.17925013, -0.40370746,  0.38918019,
  0.55679519, -0.63952323,  0.64168253,  0.86168119, -0.38992389, -0.55635636,
  0.55262387, -0.4340705,   1.12437291])

best_params_AE30_1 = np.array([0.76336756,  1.32116582, -0.47013023, -0.24060479, -1.40327098,  1.72788041,
 -0.01480778, -0.74527732, -0.69516815,  0.09723525, -1.85210761, -1.33355078,
 -0.25971198, -0.10729879, -1.36778146])
best_params_AE30_2 = np.array([-1.15105208, -1.72056526, -0.16854764,  0.49859384,  0.17110982,  0.42907582,
 -1.59666634,  1.58819273, -1.65140069,  1.17851365, -1.23510851, -0.25639309,
  1.0224125,   1.87550315,  0.0411888])
best_params_AE30_3 = np.array([-0.02464203, -0.32094907, -1.13937159, -1.0261212,   0.49564905, -0.47176651,
  0.20951333, -1.36502499,  0.42933914, -0.80416167, -0.48889709,  1.42771436,
 -2.38092516,  0.50371564,  0.96013338])
best_params_AE30_4 = np.array([-1.98938326,  0.30873103,  0.34022052, -1.54458371, -0.49782503,  0.60202554,
  1.12758678,  1.66166528,  1.49738717, -0.40150359,  0.749974,   -0.44150051,
  0.12722308,  1.45646,     0.48640367])

best_params_AE32_1 = np.array([-1.79396026, -0.71054619, -0.84731487, -0.75804311, -1.15082493, -0.62887641,
 -0.82396885,  1.04061931,  0.23506203,  0.90028759,  0.06102536,  1.60127295,
  1.26501351,  0.68764931, -0.48125241])
best_params_AE32_2 = np.array([0.65857515,  0.80956881,  1.19211008,  0.22976837,  0.10138586, -1.15385785,
 -0.24589822,  0.56822728, -0.55316298, -0.48956367,  0.01468495, -0.8122145,
 -0.91297736,  0.29331579, -0.0556852 ])
best_params_AE32_3 = np.array([-1.96703299, -1.22214621,  1.56769926,  0.35580684, -0.5277014,  -0.99716665,
 -0.37306852,  0.95875143, -0.6897225,   0.79283973, -1.09992855, -0.18199761,
 -1.28101713, -0.86535475,  1.64485711])
best_params_AE32_4 = np.array([-1.78897221,  1.39584835, -0.01160421,  1.26873759, -0.98038144,  0.1665987,
 -0.34687644,  0.28152022, -0.4502975,   0.8296372,  -0.51875568, -1.83134283,
 -0.66723626,  0.34849014,  0.00580857])

best_params_PCA12_1 = np.array([-0.11251048,  0.53359429, -0.30556497, -0.35471082,  0.59269178, -0.4926036,
 -0.12882617,  1.33261728, -0.53223554,  0.28647812,  0.19684606, -0.84910632,
  0.54563345,  0.07336386, -1.43099691])
best_params_PCA12_2 = np.array([-0.30117196,  0.82480085, -0.14842331, -1.7474413,  -0.43386878,  0.00867582,
 -1.56067907,  0.8629161,   1.55535491, -0.00733101, -1.04815031, -0.12103117,
  0.86531375,  1.70545463,  1.99497879])
best_params_PCA12_3 = np.array([-0.0133776,  -0.23370119, -0.08660242, -0.71664573,  0.48877891, -0.34651155,
 -1.46942818, -0.79918598,  1.67058495, -0.43547183,  0.3599047,   0.53622399,
  2.23447266, -2.07804138, -1.70998166])
best_params_PCA12_4 = np.array([-0.4830829,   0.57391758, -0.94282489, -1.85644386, -0.1844125,  -0.74913582,
  1.57723055, -1.23599536,  1.60755587,  0.74359781, -0.0861662,   1.46748925,
 -0.30905661,  0.13281447, -1.07403903])

best_params_PCA16_1 = np.array([1.13872964, -0.03814745,  1.5483282,  -0.03157166, -0.53614131, -0.61531695,
 -2.29482914,  1.69764499, -0.53007543, -0.37675239,  1.27694746,  1.16284852,
 -1.4529512,   0.51892962,  0.0186648])
best_params_PCA16_2 = np.array([2.30407591,  2.32086088,  0.1209812,   1.95081685, -1.65969587, -0.80171379,
 -1.46719071,  1.39189568,  1.5796832,   1.17032194,  0.70115158, -2.22667442,
 -0.26573561,  0.60570216, -0.42002725])
best_params_PCA16_3 = np.array([0.57023811, -0.44640516,  1.77250927, -0.74701739,  1.33255227,  0.43708924,
  0.44352121,  0.69105102,  0.71000276, -2.23604972,  0.1269407,   1.74048933,
  1.5065805,  -0.68565294, -0.51051558])
best_params_PCA16_4 = np.array([1.16190767, -0.42174763, -0.3312747,   0.5839351,   0.93781797, -0.24625159,
  0.26500926, -0.12517509,  0.46140039,  0.66823251, -1.36899102,  1.01885236,
 -1.45938484,  0.42113582,  0.75944196])

best_params_PCA30_1 = np.array([-0.89064013, -0.35061341,  0.80095694,  0.03909031, -0.01996213, -0.20399648,
 -1.51154405,  1.14238721,  1.45377774,  1.06258963,  0.46465276, -0.3261253,
  0.655526,   -0.44888483,  0.26260435])
best_params_PCA30_2 = np.array([ 2.43506253, -0.32153071,  0.24001771, -0.62703399,  0.55088345, -0.37806734,
  1.74372333, -1.39636669,  0.79642653, -0.55758798, -0.06579364,  0.57601656,
  0.08483931,  0.76007879,  0.75109102])
best_params_PCA30_3 = np.array([1.21476003,  0.32720413,  2.50386797, -2.36785478,  0.47085287,  0.30190437,
  1.53390926, -1.73831232, -1.41347909, -0.15446451, -0.54777105,  0.47828381,
  1.18725967, -1.10907874, -1.07637663])
best_params_PCA30_4 = np.array([-1.36505942,  2.74654828,  0.03682613, -0.1090202,   1.7684897,   1.32214228,
  1.47574083,  1.21114999,  1.39008047, -1.45793995, -1.5432773,  -0.92998889,
 -0.50709988,  0.59743069, -0.33844155])

best_params_PCA32_1 = np.array([-0.16640111, -0.0694947,   1.60101918,  1.38253849, -1.86222323,  0.31978046,
  0.55809713, -0.94410347, -0.10313602, -0.1546791,   1.17943772,  1.14641145,
  0.74186151, -1.24019943, -0.38031535])
best_params_PCA32_2 = np.array([1.10663679, -0.42236886, -1.45230432, -1.58113698, -0.12381343, -0.6052184,
 -1.51124444,  0.83093043,  1.03050811,  0.15510413, -1.17599541, 0.81694884,
 -0.86201613,  0.24792473, -0.29408193])
best_params_PCA32_3 = np.array([-1.62683828, -0.98948593, -1.59759869,  0.23754839,  0.2386601,   1.45264618,
 -0.16562646, -1.32868701,  0.67591056, -0.51733596,  1.29116311,  0.13547257,
  0.89795299,  0.82224998,  2.29515356])
best_params_PCA32_4 = np.array([0.4230195,   2.7286911,  -0.41256235,  1.31270551,  1.06896986,  1.36342177,
  0.48718606,  0.38478032, -1.10212535, -0.24763978, -1.50454953, -0.58996708,
  0.07422592, -0.52233659, -1.9150038])

#Encodings = ['pca30-1', 'autoencoder30-1', 'pca12-1', 'autoencoder12-1', 'pca32-1', 'autoencoder32-1', 'pca16-1', 'autoencoder16-1',
#             'pca30-2', 'autoencoder30-2', 'pca12-2', 'autoencoder12-2', 'pca32-2', 'autoencoder32-2', 'pca16-2', 'autoencoder16-2',
#             'pca30-3', 'autoencoder30-3', 'pca12-3', 'autoencoder12-3', 'pca32-3', 'autoencoder32-3', 'pca16-3', 'autoencoder16-3',
#             'pca30-4', 'autoencoder30-4', 'pca12-4', 'autoencoder12-4', 'pca32-4', 'autoencoder32-4', 'pca16-4', 'autoencoder16-4']

#best_params = [best_params_PCA30_1, best_params_AE30_1, best_params_PCA12_1, best_params_AE12_1, best_params_PCA32_1, best_params_AE32_1, best_params_PCA16_1, best_params_AE16_1,
#               best_params_PCA30_2, best_params_AE30_2, best_params_PCA12_2, best_params_AE12_2, best_params_PCA32_2, best_params_AE32_2, best_params_PCA16_2, best_params_AE16_2,
#               best_params_PCA30_3, best_params_AE30_3, best_params_PCA12_3, best_params_AE12_3, best_params_PCA32_3, best_params_AE32_3, best_params_PCA16_3, best_params_AE16_3,
#               best_params_PCA30_4, best_params_AE30_4, best_params_PCA12_4, best_params_AE12_4, best_params_PCA32_4, best_params_AE32_4, best_params_PCA16_4, best_params_AE16_4]

Encodings = ['autoencoder16-4']
best_params = [best_params_AE16_4]
dataset = 'mnist'
classes = [0,1]
Unitary = 'U_SU4'
U_num_param = 15
circuit = 'QCNN'
N_samples = 5000

Hybrid_embedding_accuracy.Benchmarking_Hybrid_Entanglement(dataset, classes, Encodings, N_samples, best_params)