2024-05-29 06:36:34 +00:00
|
|
|
import unittest
|
|
|
|
import logging
|
|
|
|
import matplotlib.pyplot as plt
|
|
|
|
from quackseq.pulsesequence import QuackSequence
|
|
|
|
from quackseq.event import Event
|
|
|
|
from quackseq.functions import RectFunction
|
|
|
|
from quackseq_simulator.simulator import Simulator
|
|
|
|
|
|
|
|
# logging.basicConfig(level=logging.DEBUG)
|
|
|
|
|
|
|
|
|
|
|
|
class TestQuackSequence(unittest.TestCase):
|
|
|
|
|
|
|
|
def test_event_creation(self):
|
|
|
|
seq = QuackSequence("test - event creation")
|
|
|
|
seq.add_pulse_event("tx", "10u", 1, 0, RectFunction())
|
|
|
|
seq.add_blank_event("blank", "3u")
|
|
|
|
seq.add_readout_event("rx", "100u")
|
|
|
|
seq.add_blank_event("TR", "1m")
|
|
|
|
|
|
|
|
json = seq.to_json()
|
|
|
|
print(json)
|
|
|
|
|
|
|
|
sim = Simulator()
|
|
|
|
sim.set_averages(100)
|
|
|
|
|
2024-05-29 08:22:08 +00:00
|
|
|
sim.settings.noise = 0
|
|
|
|
|
2024-05-29 06:36:34 +00:00
|
|
|
result = sim.run_sequence(seq)
|
|
|
|
self.assertIsNotNone(result)
|
|
|
|
self.assertTrue(hasattr(result, "tdx"))
|
|
|
|
self.assertTrue(hasattr(result, "tdy"))
|
|
|
|
self.assertGreater(len(result.tdx), 0)
|
|
|
|
self.assertGreater(len(result.tdy), 0)
|
|
|
|
|
|
|
|
# Plotting the result can be useful for visual inspection during development
|
|
|
|
plt.plot(result.tdx, abs(result.tdy))
|
|
|
|
plt.show()
|
|
|
|
|
|
|
|
def test_simulation_run_sequence(self):
|
|
|
|
seq = QuackSequence("test - simulation run sequence")
|
|
|
|
|
|
|
|
tx = Event("tx", "10u", seq)
|
|
|
|
seq.add_event(tx)
|
|
|
|
seq.set_tx_amplitude(tx, 1)
|
|
|
|
seq.set_tx_phase(tx, 0)
|
|
|
|
|
|
|
|
json = seq.to_json()
|
|
|
|
print(json)
|
|
|
|
|
|
|
|
rect = RectFunction()
|
|
|
|
seq.set_tx_shape(tx, rect)
|
|
|
|
|
|
|
|
blank = Event("blank", "3u", seq)
|
|
|
|
seq.add_event(blank)
|
|
|
|
|
|
|
|
rx = Event("rx", "100u", seq)
|
|
|
|
seq.set_rx(rx, True)
|
|
|
|
seq.add_event(rx)
|
|
|
|
|
|
|
|
TR = Event("TR", "1m", seq)
|
|
|
|
seq.add_event(TR)
|
|
|
|
|
|
|
|
sim = Simulator()
|
|
|
|
sim.set_averages(100)
|
|
|
|
|
|
|
|
result = sim.run_sequence(seq)
|
|
|
|
self.assertIsNotNone(result)
|
|
|
|
self.assertTrue(hasattr(result, "tdx"))
|
|
|
|
self.assertTrue(hasattr(result, "tdy"))
|
|
|
|
self.assertGreater(len(result.tdx), 0)
|
|
|
|
self.assertGreater(len(result.tdy), 0)
|
|
|
|
|
|
|
|
# Plotting the result can be useful for visual inspection during development
|
|
|
|
plt.plot(result.tdx, abs(result.tdy))
|
|
|
|
plt.show()
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
unittest.main()
|