class TestFrameIt(unittest.TestCase): q1 = Q([1, 1, 3, 4]) q2 = Q([2, 2, -3, -4]) q3 = Q([3, 3, 3, 4]) q4 = Q([4, 4, 3, 2]) tri_state = Qs([q1, q2, q3]) five_state = Qs([q1, q2, q3, q4, conj(q3)]) def test_1000_opt(self): FIt = FrameIt(self.tri_state) self.assertTrue(FIt.opt.start == 1) self.assertTrue(FIt.opt.end == 3) self.assertTrue(FIt.opt.frames == 100) def test_1100_split_events(self): fi = FrameIt(self.tri_state) df = fi.split_events() self.assertTrue(df.iloc[0, 0] == 1.0) self.assertTrue(df.iloc[1, 0] == 2.0) self.assertTrue(df.iloc[2, 0] == 3.0) def test_1200_bin_events_by_time(self): fi = FrameIt(self.tri_state, frames=3) df_split = fi.split_events(quiet=True) df_bin = fi.bin_events_by_time(df_split) self.assertTrue(df_bin.shape == (3, 3)) self.assertTrue(df_bin[['t_frames']].iloc[2,0] == pd.Interval(2.0, 3.0, closed='right')) def test_1300_space_bins(self): fi = FrameIt(self.five_state, frames=10) df_split = fi.split_events(quiet=True) df_bin = fi.bin_events_by_time(df_split, quiet=True) df_space_bins = fi.space_bins(df_bin) self.assertTrue(len(df_space_bins[5]) == 2)
def test__1031_subs(): t, x, y, z = sp.symbols("t x y z") q_sym = Qs([Q([t, x, y, x * y * z])]) q_z = q_sym.subs({t: 1, x: 2, y: 3, z: 4}) print("t x y xyz sub 1 2 3 4: ", q_z) assert q_z.equals(Qs([Q([1, 2, 3, 24])]))
def test__1031_subs(): t1, x1, y1, z1 = sp.symbols("t x y z") q_syms = Qs([Q([t1, x1, y1, x1 * y1 * z1])]) q_z = q_syms.subs({t1: 1, x1: 2, y1: 3, z1: 4}) print("t x y xyz sub 1 2 3 4: ", q_z) assert equals(q_z, Qs([Q([1, 2, 3, 24])]))
def test__1581_q_2_qs(): assert equals(q_2_qs(Qs([Q1]), Qs([P])), Qs([Q( [ -0.0197219653530713, -0.2613955437374326, 0.6496281248064009, -0.3265786562423951, ])]))
def test__1130_identity(): I2 = Qs().identity(2, operator=True) print("Operator Identity, diagonal 2x2", I2) assert equals(I2.qs[0], q1()) assert equals(I2.qs[1], q0()) I2 = Qs().identity(2) print("Identity on 2 state ket", I2) assert equals(I2.qs[0], q1()) assert equals(I2.qs[1], q1())
def test__1571_lns(): assert equals(exps(lns(Qs([Q1]))), Qs([Q1])) assert equals(lns(Qs([Q1])), Qs([Q( [ 1.7005986908310777, -0.5151902926640850, -0.7727854389961275, -1.0303805853281700, ])])) assert equals(lns(Qs([P])), Qs([Q([1.6094379124341003, 1.2566370614359172, -0.9424777960769379, 0])])) assert equals(lns(Qs([R])), Qs([Q([1.0986122886681098, 0, 0, 0])])) assert equals(lns(Qs([C])), Qs([Q([1.4978661367769954, 1.1071487177940904, 0, 0])]))
def test__1340_product(): assert equals(products(b, o), Qs([Q([10, 0, 0, 0]), Q([20, 0, 0, 0]), Q([30, 0, 0, 0])])) assert equals(products(b, k), Qs([Q([32, 0, 0, 0])])) assert equals(products(products(b, o), k), Qs([Q([320, 0, 0, 0])])) assert equals(products(b, b), Qs([Q([1, 0, 0, 0]), Q([4, 0, 0, 0]), Q([9, 0, 0, 0])])) assert equals(products(o, k), Qs([Q([40, 0, 0, 0]), Q([50, 0, 0, 0]), Q([60, 0, 0, 0])])) assert equals(products(o, o), Qs([Q([100, 0, 0, 0])])) assert equals(products(k, k), Qs([Q([16, 0, 0, 0]), Q([25, 0, 0, 0]), Q([36, 0, 0, 0])])) assert equals( products(k, b), Qs([ Q([4, 0, 0, 0]), Q([5, 0, 0, 0]), Q([6, 0, 0, 0]), Q([8, 0, 0, 0]), Q([10, 0, 0, 0]), Q([12, 0, 0, 0]), Q([12, 0, 0, 0]), Q([15, 0, 0, 0]), Q([18, 0, 0, 0]), ]))
def test__1561_exps(): assert equals(exps(q0s()), q1s()) assert equals( exps(Qs([Q1])), Qs( [ Q( [ 1.6939227236832994, 0.7895596245415588, 1.1843394368123383, 1.5791192490831176, ] ) ] ), ) assert equals( exps(Qs([P])), Qs([Q([0.2836621854632263, -0.7671394197305108, 0.5753545647978831, 0])]), ) assert equals(exps(Qs([R])), Qs([Q([20.0855369231876679, 0, 0, 0])])) assert equals( exps(Qs([C])), Qs([Q([-4.8298093832693851, -5.5920560936409816, 0, 0])]) )
def test__1250_determinant(): det_v3 = determinant(v3) assert equals(det_v3, v3) v_1123: Qs = Qs([q_1, q_1, q_2, q_3]) det_v1123 = determinant(v_1123) print("det v1123", det_v1123) assert equals(det_v1123, Qs([q_1])) v9.print_state("v9") det_v9 = determinant(v9) print("det_v9", det_v9) assert equals(det_v9, Qs([q_9])) det_vv9 = determinant(vv9) print("det_vv9", det_vv9) assert equals(det_vv9, Qs([qn627]))
def test__1080_determinant(): det_v3 = v3.determinant() assert det_v3.equals(v3) v1123: Qs = Qs([q_1, q_1, q_2, q_3]) det_v1123 = v1123.determinant() print("det v1123", det_v1123) assert det_v1123.equals(Qs([q_1])) v9.print_state("v9") det_v9 = v9.determinant() print("det_v9", det_v9) assert det_v9.equals(Qs([q_9])) det_vv9 = vv9.determinant() print("det_vv9", det_vv9) assert det_vv9.equals(Qs([qn627]))
def test__1151_conj_2(): q_z = conjs(Qs([Q1]), 2) print("q_conj 2: ", q_z) assert q_z.qs[0].t == -1 assert q_z.qs[0].x == 2 assert q_z.qs[0].y == -3 assert q_z.qs[0].z == 4
def test__1141_conjs_1(): q_z = conjs(Qs([Q1]), 1) print("q_conj 1: ", q_z) assert q_z.qs[0].t == -1 assert q_z.qs[0].x == -2 assert q_z.qs[0].y == 3 assert q_z.qs[0].z == 4
def test__1521_tans(): assert equals(tans(q0s()), q0s()) assert equals(tans(Qs([Q1])), Qs([Q([0.0000382163172501, -0.3713971716439372, -0.5570957574659058, -0.7427943432878743, ])])) assert equals(tans(Qs([P])), Qs([Q([0, 0.7999273634100760, -0.5999455225575570, 0])])) assert equals(tans(Qs([R])), Qs([Q([-0.1425465430742778, 0, 0, 0])])) assert equals(tans(Qs([C])), Qs([Q([-0.0005079806234700, 1.0004385132020521, 0, 0])]))
def test__1710_kets(): qz = qss_q_1_q_i.kets() q_1_q_ic = Qs([q1(), qi(-1)]) qss_test = Qss([q_1_q_ic,q_1_q_ic]) qz2 = qss_q_1_q_i.kets().kets() qz3 = qss_q_1_q_i.kets().bras() assert equalss(qz, qss_test) assert equalss(qz2, qss_test) assert equalss(qz3, qss_q_1_q_i)
def test__1511_coss(): assert equals(coss(q0s()), q1s()) assert equals(coss(Qs([Q1])), Qs([Q([ 58.9336461679439481, 34.0861836904655959, 51.1292755356983974, 68.1723673809311919, ])])) assert equals(coss(Qs([P])), Qs([Q([74.2099485247878476, 0, 0, 0])])) assert equals(coss(Qs([R])), Qs([Q([-0.9899924966004454, 0, 0, 0])])) assert equals(coss(Qs([C])), Qs([Q([-11.3642347064010600, -24.8146514856341867, 0, 0])]))
def test__1501_sins(): assert equals(sins(q0s()), q0s()) assert equals(sins(Qs([Q1])), Qs([Q( [ 91.7837157840346691, -21.8864868530291758, -32.8297302795437673, -43.7729737060583517, ])])) assert equals(sins(Qs([P])), Qs([Q([0, 59.3625684622310033, -44.5219263466732542, 0])])) assert equals(sins(Qs([R])), Qs([Q([0.1411200080598672, 0, 0, 0])])) assert equals(sins(Qs([C])), Qs([Q([24.8313058489463785, -11.3566127112181743, 0, 0])]))
def test__1541_coshs(): assert equals(coshs(q0s()), q1s()) assert equals(coshs(Qs([Q1])), Qs([Q( [ 0.9615851176369565, 0.3413521745610167, 0.5120282618415251, 0.6827043491220334, ])])) assert equals(coshs(Qs([P])), Qs([Q([0.2836621854632263, 0, 0, 0])])) assert equals(coshs(Qs([R])), Qs([Q([10.0676619957777653, 0, 0, 0])])) assert equals(coshs(Qs([C])), Qs([Q([-2.4591352139173837, -2.7448170067921538, 0, 0])]))
def test__1531_sinhs(): assert equals(sinhs(q0s()), q0s()) assert equals(sinhs(Qs([Q1])), Qs([Q( [ 0.7323376060463428, 0.4482074499805421, 0.6723111749708131, 0.8964148999610841, ])])) assert equals(sinhs(Qs([P])), Qs([Q([0, -0.7671394197305108, 0.5753545647978831, 0])])) assert equals(sinhs(Qs([R])), Qs([Q([10.0178749274099026, 0, 0, 0])])) assert equals(sinhs(Qs([C])), Qs([Q([-2.3706741693520015, -2.8472390868488278, 0, 0])]))
def test__1551_tanhs(): assert equals(tanhs(q0s()), q0s()) assert equals(tanhs(Qs([Q1])), Qs([Q( [ 1.0248695360556623, 0.1022956817887642, 0.1534435226831462, 0.2045913635775283, ])])) assert equals(tanhs(Qs([P])), Qs([Q([0, -2.7044120049972684, 2.0283090037479505, 0])])) assert equals(tanhs(Qs([R])), Qs([Q([0.9950547536867305, 0, 0, 0])])) assert equals(tanhs(Qs([C])), Qs([Q([1.0046823121902353, 0.0364233692474038, 0, 0])]))
def test__1304_rotation_and_or_boost(): q1_sq = Q_states.square() beta = 0.003 gamma = 1 / math.sqrt(1 - beta ** 2) h = Qs([Q([gamma, gamma * beta, 0, 0])]) q_z = Q_states.rotation_and_or_boost(h) q_z2 = q_z.square() print("q1_sq: ", q1_sq) print("boosted: ", q_z) print("boosted squared: ", q_z2) assert round(q_z2.qs[0].t, 5) == round(q1_sq.qs[0].t, 5)
def test__1471_rotation_and_or_boosts(): q1_sq = squares(Q_states) beta = 0.003 gamma = 1 / math.sqrt(1 - beta ** 2) h = Qs([Q([gamma, gamma * beta, 0, 0])]) q_z = rotation_and_or_boosts(Q_states, h) q_z2 = squares(q_z) print("q1_sq: ", q1_sq) print("boosted: ", q_z) print("boosted squared: ", q_z2) assert round(q_z2.qs[0].t, 5) == round(q1_sq.qs[0].t, 5)
def test__1140_product(): assert b.product(o).equals(Qs([Q([10, 0, 0, 0]), Q([20, 0, 0, 0]), Q([30, 0, 0, 0])])) assert b.product(k).equals(Qs([Q([32, 0, 0, 0])])) assert b.product(o).product(k).equals(Qs([Q([320, 0, 0, 0])])) assert b.product(b).equals(Qs([Q([1, 0, 0, 0]), Q([4, 0, 0, 0]), Q([9, 0, 0, 0])])) assert o.product(k).equals(Qs([Q([40, 0, 0, 0]), Q([50, 0, 0, 0]), Q([60, 0, 0, 0])])) assert o.product(o).equals(Qs([Q([100, 0, 0, 0])])) assert k.product(k).equals(Qs([Q([16, 0, 0, 0]), Q([25, 0, 0, 0]), Q([36, 0, 0, 0])])) assert k.product(b).equals(Qs( [ Q([4, 0, 0, 0]), Q([5, 0, 0, 0]), Q([6, 0, 0, 0]), Q([8, 0, 0, 0]), Q([10, 0, 0, 0]), Q([12, 0, 0, 0]), Q([12, 0, 0, 0]), Q([15, 0, 0, 0]), Q([18, 0, 0, 0]), ] ) )
def test_1473_rotations_onlys(): Q12s, Q1123s = Qs([Q12]), Qs([Q1123]) Q1123s_rot = rotation_onlys(Q1123s, Q12s) print("Q1123s_rot", Q1123s_rot) assert equals(Q1123s, Q1123s_rot, vector=False) assert not equals(Q1123s, Q1123s_rot, scalar=False)
def test__1460_rotates(): q_z = rotations(Q_states, Qs([q_i])) print("rotation: ", q_z) assert equals(q_z, Qs([Q([1, -2, 3, 4])]))
def test__1451_triple_products(): q_z = triple_products(Q_states, P_states, Q_states) print("triple product: ", q_z) assert equals(q_z, Qs([Q([-2, 124, -84, 8])]))
def test__1441_divide_bys(): q_z = divide_bys(Q_states, Q_states) print("divide_by: ", q_z) assert equals(q_z, Qs([q_1]))
def test__1431_inverses(): q_z = inverses(P_states) print("inverse: ", q_z) assert equals(q_z, Qs([Q([0, -0.16, 0.12, 0])]))
def test__1420_product_AOp4iB(): AOp4iB = products(A, products(Op4i, B)) print("A* Op4i B: ", AOp4iB) assert equals(AOp4iB, Qs([Q([-9, 24, 0, 8])]))
def test__1390_product_AOpB(): AOpB = products(A, products(Op, B)) print("A Op B: ", AOpB) assert equals(AOpB, Qs([Q([0, 22, 11, 0])]))
def test__1350_product_AA(): Aket = deepcopy(A).ket() AA = products(A, Aket) print("<A|A>: ", AA) assert equals(AA, Qs([Q([17, 0, 0, 0])]))