Skip to content

Commit 4ad4479

Browse files
committed
Added tests for Hamiltonians, propagators and signals
1 parent a1bbe63 commit 4ad4479

File tree

2 files changed

+18
-58
lines changed

2 files changed

+18
-58
lines changed

test/test_two_qubits.py

+18-58
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"""
44

55
import copy
6+
import pickle
67
import numpy as np
78

89
# Main C3 objects
@@ -422,6 +423,11 @@
422423

423424
opt.set_exp(exp)
424425

426+
with open("test/two_qubit_data.pickle", "rb") as filename:
427+
test_data = pickle.load(filename)
428+
429+
gen_signal, ts = generator.generate_signals(X90p_q1)
430+
425431

426432
def run_optim() -> float:
427433
"""
@@ -442,65 +448,19 @@ def test_signals() -> None:
442448
"""
443449
Test if the generated signals are correct at the first and last sample and at sample #12.
444450
"""
445-
gen_signal, ts = generator.generate_signals(X90p_q1)
446-
assert np.max(gen_signal["d1"]["values"]) == 442864262.3882865
447-
assert gen_signal["d1"]["values"][0] == 0
448-
assert gen_signal["d1"]["values"][12] == -18838613.771749068
449-
assert gen_signal["d1"]["values"][-1] == 47702706.02427947
450-
assert ts[0] == 5e-12
451-
assert ts[12] == 1.25e-10
452-
assert ts[-1] == 6.995e-09
453-
454-
455-
def test_hamiltonian_of_t() -> None:
456-
signal, ts = generator.generate_signals(X90p_q1)
457-
cflds_t = signal["d1"]["values"][16]
458-
hdrift, hks = model.get_Hamiltonians()
459-
hamiltonian = hdrift.numpy() + cflds_t.numpy() * hks["d1"].numpy()
460-
precomp_hamiltonian = [
461-
[-2.37105674e+05+0.j, -4.39488626e+05+0.j, 6.42557156e-09+0.j,
462-
-1.39929598e+07+0.j, 4.80420449e-08+0.j, -5.12932000e+01+0.j,
463-
-9.18583639e-10+0.j, -7.52868617e+02+0.j, -4.60493681e-10+0.j,],
464-
[-4.39488626e+05+0.j, 3.51895367e+10+0.j, -1.05404930e+06+0.j,
465-
-4.21166702e-06+0.j, -1.39659734e+07+0.j, -3.38001933e-07+0.j,
466-
-1.70280246e+05+0.j, -3.42845091e-07+0.j, -1.12262365e+03+0.j,],
467-
[ 8.21276864e-09+0.j, -1.05404930e+06+0.j, 6.88776096e+10+0.j,
468-
-2.87659692e+01+0.j, -4.35040944e-06+0.j, -1.40273221e+07+0.j,
469-
6.11788641e-06+0.j, -5.67966729e+05+0.j, -5.92691374e-06+0.j,],
470-
[-1.39929598e+07+0.j, -4.06274727e-06+0.j, -2.87659692e+01+0.j,
471-
3.14112585e+10+0.j, -1.97916311e+05+0.j, -2.68973468e-05+0.j,
472-
-1.97926130e+07+0.j, -5.91563241e-06+0.j, -1.02890811e+02+0.j,],
473-
[ 5.04042505e-08+0.j, -1.39659734e+07+0.j, -1.84797479e-06+0.j,
474-
-1.97916311e+05+0.j, 6.65933163e+10+0.j, -2.45595202e+05+0.j,
475-
1.03870858e-05+0.j, -1.97587093e+07+0.j, 1.03713136e-05+0.j,],
476-
[-5.12932000e+01+0.j, -4.57618676e-07+0.j, -1.40273221e+07+0.j,
477-
-2.68926902e-05+0.j, -2.45595202e+05+0.j, 1.00297674e+11+0.j,
478-
3.15118982e+04+0.j, 7.62930650e-06+0.j, -1.97559869e+07+0.j,],
479-
[-1.21110840e-09+0.j, -1.70280246e+05+0.j, 6.09999393e-06+0.j,
480-
-1.97926130e+07+0.j, 1.07057873e-05+0.j, 3.15118982e+04+0.j,
481-
6.15061801e+10+0.j, 6.36236697e+05+0.j, -2.25524516e-05+0.j,],
482-
[-7.52868617e+02+0.j, -3.44707736e-07+0.j, -5.67966729e+05+0.j,
483-
-5.93053357e-06+0.j, -1.97587093e+07+0.j, 8.58298081e-06+0.j,
484-
6.36236697e+05+0.j, 9.66811548e+10+0.j, 1.30140463e+06+0.j,],
485-
[-5.01826729e-10+0.j, -1.12262365e+03+0.j, -5.92318845e-06+0.j,
486-
-1.02890811e+02+0.j, 1.04309182e-05+0.j, -1.97559869e+07+0.j,
487-
-2.25571082e-05+0.j, 1.30140463e+06+0.j, 1.30377086e+11+0.j,],
488-
]
489451

490-
assert (hamiltonian - precomp_hamiltonian < 1e-15).any()
452+
for key in gen_signal:
453+
assert (gen_signal[key]["values"].numpy() == test_data["signal"][key]["values"].numpy()).all()
454+
assert (ts.numpy() == test_data["ts"].numpy()).all()
455+
456+
457+
def test_hamiltonians() -> None:
458+
hdrift, hks = model.get_Hamiltonians()
459+
assert (hdrift.numpy() == test_data["hdrift"].numpy()).any()
460+
for key in hks:
461+
assert (hks[key].numpy() == test_data["hks"][key].numpy()).all()
491462

492463

493464
def test_propagation() -> None:
494-
signal, ts = generator.generate_signals(X90p_q1)
495-
propagator = exp.propagation(signal, ts, "X90p:Id")
496-
precomputed = np.array(
497-
[
498-
[-5.42470209e-02 - 7.55118401e-01j, 1.31475007e-04 - 1.66893081e-04j,
499-
5.81482026e-08 + 4.56344704e-08j, 6.51945328e-01 - 3.21728860e-02j,
500-
1.20669716e-04 + 5.09331324e-05j, 3.19775048e-08 + 1.04614907e-07j,
501-
-9.41458634e-03 - 2.63990622e-02j, 3.55609615e-05 - 2.18958182e-04j,
502-
-6.42952047e-07 - 1.07156481e-06j]
503-
]
504-
)
505-
506-
assert ((propagator.numpy()[3] - precomputed) < 1e-8).all()
465+
propagator = exp.propagation(gen_signal, ts, "X90p:Id")
466+
assert (propagator.numpy() == test_data["propagator"].numpy()).all()

test/two_qubit_data.pickle

16.5 KB
Binary file not shown.

0 commit comments

Comments
 (0)