2024-06-16 16:22:02 +00:00
|
|
|
"""Spin Echo with Phase Cycling (SEPC) simulation using the quackseq simulator.
|
|
|
|
|
|
|
|
The sample is the default BiPh3 NQR sample.
|
|
|
|
"""
|
|
|
|
|
|
|
|
import logging
|
|
|
|
|
2024-06-18 14:20:03 +00:00
|
|
|
from quackseq.sequences.SEPC import create_SEPC
|
2024-06-16 16:22:02 +00:00
|
|
|
from quackseq_simulator.simulator import Simulator
|
|
|
|
from matplotlib import pyplot as plt
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
logging.basicConfig(level=logging.INFO)
|
|
|
|
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
|
|
sim = Simulator()
|
|
|
|
sim.set_averages(100)
|
|
|
|
|
|
|
|
sim.settings.noise = 1 # microvolts
|
|
|
|
|
2024-06-18 14:20:03 +00:00
|
|
|
SEPC = create_SEPC()
|
|
|
|
|
|
|
|
result = sim.run_sequence(SEPC)
|
2024-06-16 16:22:02 +00:00
|
|
|
# Plot time and frequency domain next to each other
|
|
|
|
plt.subplot(1, 2, 1)
|
|
|
|
plt.title("Time domain Simulation of BiPh3 SEPC")
|
|
|
|
plt.xlabel("Time (µs)")
|
|
|
|
plt.ylabel("Signal (a.u.)")
|
|
|
|
plt.plot(result.tdx[-1], result.tdy[-1].imag, label="imaginary")
|
|
|
|
plt.plot(result.tdx[-1], result.tdy[-1].real, label="real")
|
|
|
|
plt.plot(result.tdx[-1], abs(result.tdy[-1]), label="abs")
|
|
|
|
|
|
|
|
plt.subplot(1, 2, 2)
|
|
|
|
plt.title("Frequency domain Simulation of BiPh3 SEPC")
|
|
|
|
plt.xlabel("Frequency (kHz)")
|
|
|
|
plt.ylabel("Signal (a.u.)")
|
|
|
|
plt.plot(result.fdx[-1], result.fdy[-1].imag, label="imaginary")
|
|
|
|
plt.plot(result.fdx[-1], result.fdy[-1].real, label="real")
|
|
|
|
plt.plot(result.fdx[-1], abs(result.fdy[-1]), label="abs")
|
|
|
|
|
|
|
|
plt.legend()
|
|
|
|
plt.show()
|