Created
July 1, 2021 07:58
-
-
Save sriharijayaram5/dac313adede587011ef5d7583a526781 to your computer and use it in GitHub Desktop.
Qudi pulsed measurement control notebook 20210701
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "import numpy as np\n", | |
| "import matplotlib.pyplot as plt\n", | |
| "import matplotlib\n", | |
| "from tqdm.autonotebook import tqdm\n", | |
| "import datetime\n", | |
| "import glob\n", | |
| "import logic.pulsed.pulse_objects as po\n", | |
| "import scipy.signal" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "def determine_ideal_mw_power(v0, p0, v1):\n", | |
| " p1 = p0 - 20*np.log10(v0/v1) \n", | |
| " return np.round(p1,2)\n", | |
| "\n", | |
| "v1s = np.linspace(1/4000e-9, 1/10e-9, 1/1e-4)\n", | |
| "\n", | |
| "y = determine_ideal_mw_power(1/(460e-9), -2, v1s)\n", | |
| "plt.ylabel('dBm')\n", | |
| "plt.xlabel('us')\n", | |
| "plt.plot(1/v1s*1e6, y, label='V1')\n", | |
| "\n", | |
| "v2s = np.linspace(1/4000e-9, 1/10e-9, 1/1e-4)\n", | |
| "\n", | |
| "y = determine_ideal_mw_power(1/(2*460e-9), -2, v1s)\n", | |
| "plt.ylabel('dBm')\n", | |
| "plt.xlabel('us')\n", | |
| "plt.plot(1/v1s*1e6, y, label='V2')\n", | |
| "\n", | |
| "plt.legend()\n", | |
| "plt.show()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "# Creating pulse ensemble, uploading, running, collecting images - loop and save" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "### Main classes" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "class PulseClass:\n", | |
| " def __init__(self, rep, pulse_func, rabi_ns):\n", | |
| " self.repetitions = rep\n", | |
| " self.pulse_func_name = pulse_func\n", | |
| " self.two_pi = rabi_ns\n", | |
| " self.pulses = {\n", | |
| " 'Rabi': self.rabi,\n", | |
| " 'Pulsed_ODMR': self.pulsed_odmr,\n", | |
| " 'T1': self.t1,\n", | |
| " 'Hahn_Echo': self.hahn_echo,\n", | |
| " 'Ramsey': self.ramsey,\n", | |
| " 'Trigger': self.trigger,\n", | |
| " 'Wait': self.wait\n", | |
| " }\n", | |
| " \n", | |
| " def __call__(self, tau_ns):\n", | |
| " self.tau_ns = tau_ns\n", | |
| " self._make_pulse_blocks()\n", | |
| " return self._make_pulse_ensemble()\n", | |
| " \n", | |
| " def _make_pulse_blocks(self):\n", | |
| " if self.pulse_func_name not in self.pulses.keys():\n", | |
| " pulsedmeasurement.log.error('Pulse function not found.')\n", | |
| " self.pulse_signal = self.pulses[self.pulse_func_name](True)\n", | |
| " self.pulse_reference = self.pulses[self.pulse_func_name](False)\n", | |
| " self.trigger_signal = self.pulses['Trigger'](26, False)\n", | |
| " self.trigger_reference = self.pulses['Trigger'](26, self.pulse_func_name=='Pulsed_ODMR')\n", | |
| " self.wait_block = self.pulses['Wait'](100)\n", | |
| " self.created_blocks = [self.pulse_signal, self.pulse_reference, self.trigger_signal,\n", | |
| " self.trigger_reference, self.wait_block]\n", | |
| " for block in self.created_blocks:\n", | |
| " sequencegeneratorlogic.save_block(block)\n", | |
| " \n", | |
| " def _make_pulse_ensemble(self):\n", | |
| " block_list = [(self.trigger_signal.name, 1), (self.pulse_signal.name, self.repetitions), (self.wait_block.name, 1),\n", | |
| " (self.trigger_reference.name, 1), (self.pulse_reference.name, self.repetitions)]\n", | |
| " \n", | |
| " auto_pulse_CW = po.PulseBlockEnsemble(name=f'auto_pulse_CW_{self.tau_ns}', block_list=block_list, rotating_frame=False)\n", | |
| "\n", | |
| " ensemble = auto_pulse_CW\n", | |
| " ensemblename = auto_pulse_CW.name\n", | |
| " sequencegeneratorlogic.save_ensemble(ensemble)\n", | |
| " ret,_,_ = sequencegeneratorlogic.sample_pulse_block_ensemble(ensemblename)\n", | |
| " sequencegeneratorlogic.load_ensemble(ensemblename)\n", | |
| " return ret\n", | |
| " \n", | |
| " def rabi(self, not_ref):\n", | |
| " ele = []\n", | |
| " d_ch = {'d_ch1': False, 'd_ch2': True, 'd_ch4': not_ref, 'd_ch3': False}\n", | |
| " ele.append(po.PulseBlockElement(init_length_s=self.tau_ns*1e-9, increment_s=0, pulse_function=None, digital_high=d_ch, laser_on=False))\n", | |
| "\n", | |
| " d_ch = {'d_ch1': True, 'd_ch2': True, 'd_ch4': False, 'd_ch3': False}\n", | |
| " ele.append(po.PulseBlockElement(init_length_s=3e-6, increment_s=0, pulse_function=None, digital_high=d_ch, laser_on=False))\n", | |
| "\n", | |
| " d_ch = {'d_ch1': False, 'd_ch2': True, 'd_ch4': False, 'd_ch3': False}\n", | |
| " ele.append(po.PulseBlockElement(init_length_s=500e-9, increment_s=0, pulse_function=None, digital_high=d_ch, laser_on=False))\n", | |
| "\n", | |
| " d_ch = {'d_ch1': False, 'd_ch2': True, 'd_ch4': False, 'd_ch3': False}\n", | |
| " ele.append(po.PulseBlockElement(init_length_s=1e-6, increment_s=0, pulse_function=None, digital_high=d_ch, laser_on=False))\n", | |
| "\n", | |
| " pulse_block = po.PulseBlock(name=f'auto_rabi_P95B_{self.tau_ns}_{not_ref}', element_list=ele)\n", | |
| "\n", | |
| " return pulse_block\n", | |
| " \n", | |
| " def pulsed_odmr(self, not_ref):\n", | |
| " ele = []\n", | |
| " d_ch = {'d_ch1': False, 'd_ch2': True, 'd_ch4': not_ref, 'd_ch3': False}\n", | |
| " ele.append(po.PulseBlockElement(init_length_s=self.two_pi/2*1e-9, increment_s=0, pulse_function=None, digital_high=d_ch, laser_on=False))\n", | |
| "\n", | |
| " d_ch = {'d_ch1': True, 'd_ch2': True, 'd_ch4': False, 'd_ch3': False}\n", | |
| " ele.append(po.PulseBlockElement(init_length_s=3e-6, increment_s=0, pulse_function=None, digital_high=d_ch, laser_on=False))\n", | |
| "\n", | |
| " d_ch = {'d_ch1': False, 'd_ch2': True, 'd_ch4': False, 'd_ch3': False}\n", | |
| " ele.append(po.PulseBlockElement(init_length_s=500e-9, increment_s=0, pulse_function=None, digital_high=d_ch, laser_on=False))\n", | |
| "\n", | |
| " d_ch = {'d_ch1': False, 'd_ch2': True, 'd_ch4': False, 'd_ch3': False}\n", | |
| " ele.append(po.PulseBlockElement(init_length_s=1e-6, increment_s=0, pulse_function=None, digital_high=d_ch, laser_on=False))\n", | |
| "\n", | |
| " pulse_block = po.PulseBlock(name=f'auto_odmr_P95B_{not_ref}', element_list=ele)\n", | |
| "\n", | |
| " return pulse_block\n", | |
| " \n", | |
| " def t1(self, not_ref):\n", | |
| " ele = []\n", | |
| " d_ch = {'d_ch1': False, 'd_ch2': True, 'd_ch4': not_ref, 'd_ch3': False}\n", | |
| " ele.append(po.PulseBlockElement(init_length_s=self.two_pi/2*1e-9, increment_s=0, pulse_function=None, digital_high=d_ch, laser_on=False))\n", | |
| "\n", | |
| " d_ch = {'d_ch1': False, 'd_ch2': True, 'd_ch4': False, 'd_ch3': False}\n", | |
| " ele.append(po.PulseBlockElement(init_length_s=self.tau_ns*1e-9, increment_s=0, pulse_function=None, digital_high=d_ch, laser_on=False))\n", | |
| "\n", | |
| " d_ch = {'d_ch1': True, 'd_ch2': True, 'd_ch4': False, 'd_ch3': False}\n", | |
| " ele.append(po.PulseBlockElement(init_length_s=3e-6, increment_s=0, pulse_function=None, digital_high=d_ch, laser_on=False))\n", | |
| "\n", | |
| " d_ch = {'d_ch1': False, 'd_ch2': True, 'd_ch4': False, 'd_ch3': False}\n", | |
| " ele.append(po.PulseBlockElement(init_length_s=500e-9, increment_s=0, pulse_function=None, digital_high=d_ch, laser_on=False))\n", | |
| "\n", | |
| " d_ch = {'d_ch1': False, 'd_ch2': True, 'd_ch4': False, 'd_ch3': False}\n", | |
| " ele.append(po.PulseBlockElement(init_length_s=1e-6, increment_s=0, pulse_function=None, digital_high=d_ch, laser_on=False))\n", | |
| "\n", | |
| " pulse_block = po.PulseBlock(name=f'auto_T1_P95B_{self.tau_ns}_{not_ref}', element_list=ele)\n", | |
| "\n", | |
| " return pulse_block\n", | |
| " \n", | |
| " def hahn_echo(self, not_ref):\n", | |
| " if not_ref:\n", | |
| " last_ns = self.two_pi/4\n", | |
| " else:\n", | |
| " last_ns = self.two_pi*3/4\n", | |
| " ele = []\n", | |
| " d_ch = {'d_ch1': False, 'd_ch2': True, 'd_ch4': True, 'd_ch3': False}\n", | |
| " ele.append(po.PulseBlockElement(init_length_s=self.two_pi/4*1e-9, increment_s=0, pulse_function=None, digital_high=d_ch, laser_on=False))\n", | |
| "\n", | |
| " d_ch = {'d_ch1': False, 'd_ch2': True, 'd_ch4': False, 'd_ch3': False}\n", | |
| " ele.append(po.PulseBlockElement(init_length_s=self.tau_ns/2*1e-9, increment_s=0, pulse_function=None, digital_high=d_ch, laser_on=False))\n", | |
| "\n", | |
| " d_ch = {'d_ch1': False, 'd_ch2': True, 'd_ch4': True, 'd_ch3': False}\n", | |
| " ele.append(po.PulseBlockElement(init_length_s=self.two_pi/2*1e-9, increment_s=0, pulse_function=None, digital_high=d_ch, laser_on=False))\n", | |
| "\n", | |
| " d_ch = {'d_ch1': False, 'd_ch2': True, 'd_ch4': False, 'd_ch3': False}\n", | |
| " ele.append(po.PulseBlockElement(init_length_s=self.tau_ns/2*1e-9, increment_s=0, pulse_function=None, digital_high=d_ch, laser_on=False))\n", | |
| "\n", | |
| " d_ch = {'d_ch1': False, 'd_ch2': True, 'd_ch4': True, 'd_ch3': False}\n", | |
| " ele.append(po.PulseBlockElement(init_length_s=last_ns*1e-9, increment_s=0, pulse_function=None, digital_high=d_ch, laser_on=False))\n", | |
| "\n", | |
| " d_ch = {'d_ch1': True, 'd_ch2': True, 'd_ch4': False, 'd_ch3': False}\n", | |
| " ele.append(po.PulseBlockElement(init_length_s=3e-6, increment_s=0, pulse_function=None, digital_high=d_ch, laser_on=False))\n", | |
| "\n", | |
| " d_ch = {'d_ch1': False, 'd_ch2': True, 'd_ch4': False, 'd_ch3': False}\n", | |
| " ele.append(po.PulseBlockElement(init_length_s=500e-9, increment_s=0, pulse_function=None, digital_high=d_ch, laser_on=False))\n", | |
| "\n", | |
| " d_ch = {'d_ch1': False, 'd_ch2': True, 'd_ch4': False, 'd_ch3': False}\n", | |
| " ele.append(po.PulseBlockElement(init_length_s=1e-6, increment_s=0, pulse_function=None, digital_high=d_ch, laser_on=False))\n", | |
| "\n", | |
| " pulse_block = po.PulseBlock(name=f'auto_HEcho_P95B_{self.tau_ns}_{not_ref}', element_list=ele)\n", | |
| "\n", | |
| " return pulse_block\n", | |
| " \n", | |
| " def ramsey(self, not_ref):\n", | |
| " ele = []\n", | |
| " d_ch = {'d_ch1': False, 'd_ch2': True, 'd_ch4': not_ref, 'd_ch3': False}\n", | |
| " ele.append(po.PulseBlockElement(init_length_s=self.two_pi/4*1e-9, increment_s=0, pulse_function=None, digital_high=d_ch, laser_on=False))\n", | |
| "\n", | |
| " d_ch = {'d_ch1': False, 'd_ch2': True, 'd_ch4': False, 'd_ch3': False}\n", | |
| " ele.append(po.PulseBlockElement(init_length_s=self.tau_ns*1e-9, increment_s=0, pulse_function=None, digital_high=d_ch, laser_on=False))\n", | |
| "\n", | |
| " d_ch = {'d_ch1': False, 'd_ch2': True, 'd_ch4': not_ref, 'd_ch3': False}\n", | |
| " ele.append(po.PulseBlockElement(init_length_s=self.two_pi/4*1e-9, increment_s=0, pulse_function=None, digital_high=d_ch, laser_on=False))\n", | |
| "\n", | |
| " d_ch = {'d_ch1': True, 'd_ch2': True, 'd_ch4': False, 'd_ch3': False}\n", | |
| " ele.append(po.PulseBlockElement(init_length_s=3e-6, increment_s=0, pulse_function=None, digital_high=d_ch, laser_on=False))\n", | |
| "\n", | |
| " d_ch = {'d_ch1': False, 'd_ch2': True, 'd_ch4': False, 'd_ch3': False}\n", | |
| " ele.append(po.PulseBlockElement(init_length_s=500e-9, increment_s=0, pulse_function=None, digital_high=d_ch, laser_on=False))\n", | |
| "\n", | |
| " d_ch = {'d_ch1': False, 'd_ch2': True, 'd_ch4': False, 'd_ch3': False}\n", | |
| " ele.append(po.PulseBlockElement(init_length_s=1e-6, increment_s=0, pulse_function=None, digital_high=d_ch, laser_on=False))\n", | |
| "\n", | |
| " pulse_block = po.PulseBlock(name=f'auto_Ramsey_P95B_{ns}_{not_ref}', element_list=ele)\n", | |
| "\n", | |
| " return pulse_block\n", | |
| " \n", | |
| " def trigger(self, ms, podmr):\n", | |
| " ele = []\n", | |
| " d_ch = {'d_ch1': False, 'd_ch2': True, 'd_ch4': False, 'd_ch3': podmr}\n", | |
| " ele.append(po.PulseBlockElement(init_length_s=ms*1e-3, increment_s=0, pulse_function=None, digital_high=d_ch, laser_on=False))\n", | |
| "\n", | |
| " pulse_block = po.PulseBlock(name=f'trigger_cam_{podmr}_{ms}', element_list=ele)\n", | |
| "\n", | |
| " return pulse_block\n", | |
| "\n", | |
| " def wait(self, ms):\n", | |
| " ele = []\n", | |
| " d_ch = {'d_ch1': False, 'd_ch2': False, 'd_ch4': False, 'd_ch3': False}\n", | |
| " ele.append(po.PulseBlockElement(init_length_s=ms*1e-3, increment_s=0, pulse_function=None, digital_high=d_ch, laser_on=False))\n", | |
| "\n", | |
| " pulse_block = po.PulseBlock(name=f'wait_block_{ms}', element_list=ele)\n", | |
| "\n", | |
| " return pulse_block\n", | |
| " \n", | |
| "\n", | |
| " \n", | |
| "class MeasurementClass:\n", | |
| " def __init__(self, start, stop, step, n_runs, rep, power, freq, two_pi, pulse_func, tag, explicit_tau_list=None):\n", | |
| " sequencegeneratorlogic.pulse_generator_settings = {'activation_config':'pulsed_1'}\n", | |
| " self.size = mycamlogic.get_size()\n", | |
| " self.start = start\n", | |
| " self.stop = stop\n", | |
| " self.step = step\n", | |
| " self.power = power\n", | |
| " self.freq = freq\n", | |
| " self.tag = tag\n", | |
| " self.pulse_func_name = pulse_func\n", | |
| " self.podmr = self.pulse_func_name=='Pulsed_ODMR'\n", | |
| " self. two_pi = two_pi\n", | |
| " self.set_MW()\n", | |
| " self.tau_list = explicit_tau_list if explicit_tau_list else np.arange(self.start,self.stop,self.step)\n", | |
| " self.n_runs = n_runs\n", | |
| " self.repetitions = rep\n", | |
| " self.pulse_inst = PulseClass(self.repetitions, self.pulse_func_name, self.two_pi)\n", | |
| " \n", | |
| " self.odmr_imgs = np.zeros((len(self.tau_list), self.n_runs, 2, self.size[1], self.size[0]), dtype = np.float64)\n", | |
| " self.save_array = np.zeros((len(self.tau_list), 2, self.size[1], self.size[0]), dtype = np.float64)\n", | |
| " self.err_array = np.zeros((len(self.tau_list), 2), dtype = np.float32)\n", | |
| " self.plot_array = np.full((len(self.tau_list)), np.nan)\n", | |
| "\n", | |
| " def __call__(self):\n", | |
| " pulsedmeasurement._mw.action_toggle_jupyter.toggle()\n", | |
| " qdplotlogic.add_plot()\n", | |
| " \n", | |
| " for n in range(self.n_runs if self.podmr else 1): \n", | |
| " for tau_idx, tau_ns in enumerate(tqdm(self.tau_list, leave=False, desc=f'Run {n}')):\n", | |
| " if not pulsedmeasurement._mw.action_toggle_jupyter.isChecked():\n", | |
| " pulsedmeasurement.log.error('Measurement interrupted')\n", | |
| " self.err=-1\n", | |
| " break\n", | |
| "\n", | |
| " self.err = self.pulse_inst(tau_ns)\n", | |
| " if self.err==-1:\n", | |
| " pulsedmeasurement.log.error('Memory error')\n", | |
| " break\n", | |
| "\n", | |
| " img = np.zeros((self.n_runs if not self.podmr else 1, 2, self.size[1], self.size[0]), dtype = np.float64)\n", | |
| " for i in range(img.shape[0]):\n", | |
| " img[i] = self.do_measurement()\n", | |
| "\n", | |
| " self.process(img, tau_idx, n)\n", | |
| " \n", | |
| " self.save()\n", | |
| " self.finish()\n", | |
| " \n", | |
| " def process(self, img, tau_idx, n):\n", | |
| " cameragui._mw.counts_label.setText(f'{np.mean(img):.2f}')\n", | |
| " \n", | |
| " if 400<np.mean(img)>60000:\n", | |
| " pulsedmeasurement.log.error('Saturation/Noise floor nearby.')\n", | |
| " self.err=-1\n", | |
| " \n", | |
| " if self.podmr:\n", | |
| " self.odmr_imgs[tau_idx, n] = img\n", | |
| " img[0] = np.mean(self.odmr_imgs[tau_idx], axis=0)\n", | |
| " \n", | |
| " self.save_array[tau_idx] = np.mean(img, axis=0)\n", | |
| " self.err_array[tau_idx] = np.std(np.mean(img, axis=(2,3)), ddof=1, axis=0)/np.sqrt(self.n_runs)\n", | |
| " self.plot_array[tau_idx] = np.mean((self.save_array[tau_idx,1,:,:]-self.save_array[tau_idx,0,:,:])/(self.save_array[tau_idx,1,:,:]+self.save_array[tau_idx,0,:,:])) * 100\n", | |
| " qdplotlogic.set_data(x=self.tau_list, y=self.plot_array, clear_old=True, plot_index=qdplotlogic.number_of_plots-1)\n", | |
| " \n", | |
| " def save(self):\n", | |
| " timestamp = datetime.datetime.now()\n", | |
| " t = timestamp.strftime(\"%Y%m%d-%H%M-%S\")\n", | |
| " self.parameters = {\n", | |
| " 'Tag': self.tag,\n", | |
| " 'Start_ns': self.start,\n", | |
| " 'Step_ns': self.step,\n", | |
| " 'Stop_ns': self.stop,\n", | |
| " 'ROI Size(px)': self.size,\n", | |
| " 'No. of averaging runs': self.n_runs,\n", | |
| " 'Repetitions': self.repetitions,\n", | |
| " 'Pulse function': self.pulse_func_name,\n", | |
| " 'Rabi period(ns)': self.two_pi,\n", | |
| " 'MW Freq': self.freq,\n", | |
| " 'MW power': self.power,\n", | |
| " 'ODMR': self.podmr\n", | |
| " }\n", | |
| " data = {\n", | |
| " 'Tau list (ns or Hz)': self.tau_list\n", | |
| " }\n", | |
| " if self.err!=-1:\n", | |
| " save.save_data(data, filepath=save.get_path_for_module('Pulsed'), parameters=self.parameters, filename=None, filelabel=self.tag, timestamp=timestamp, filetype='text', fmt='%.15e', delimiter='\\t', plotfig=None)\n", | |
| " np.savez_compressed(f'{save.get_path_for_module(\"Pulsed\")}/{t}_{self.tag}_{self.start}_{self.stop}_{self.step}_{self.n_runs}_{self.power}dBm', data=self.save_array, err=self.err_array, x=np.asarray(self.tau_list))\n", | |
| " pulsedmeasurement._mw.action_toggle_jupyter.toggle()\n", | |
| " \n", | |
| " def finish(self):\n", | |
| " pulsedmasterlogic.delete_all_pulse_blocks()\n", | |
| " pulsedmasterlogic.delete_all_block_ensembles()\n", | |
| " pulsedmasterlogic.clear_pulse_generator()\n", | |
| " if self.podmr:\n", | |
| " odmrlogic.reset_sweep()\n", | |
| " pulsedmeasurementlogic.microwave_off()\n", | |
| " mycamera.pulsed_done()\n", | |
| " \n", | |
| " def do_measurement(self):\n", | |
| " mycamera.ready_pulsed(trigger_mode='Trigger Level', mode=2)\n", | |
| "\n", | |
| " pulsedmeasurementlogic.pulse_generator_on()\n", | |
| " mycamlogic.start_trigger_seq(2)\n", | |
| "\n", | |
| " pulsedmeasurementlogic.pulse_generator_off()\n", | |
| " return mycamlogic.get_last_image()\n", | |
| "\n", | |
| " def set_MW(self):\n", | |
| " if self.podmr:\n", | |
| " self.start, self.stop, self.step, self.power = odmrlogic.set_sweep_parameters(self.start, self.stop, self.step, self.power)\n", | |
| " odmrlogic.set_trigger(0, 1)\n", | |
| " odmrlogic.mw_sweep_on()\n", | |
| " odmrlogic.reset_sweep()\n", | |
| " else:\n", | |
| " settings = {\n", | |
| " 'power': self.power,\n", | |
| " 'frequency': self.freq,\n", | |
| " 'use_ext_microwave': True\n", | |
| " }\n", | |
| " pulsedmeasurementlogic.set_microwave_settings(settings_dict=settings)\n", | |
| " pulsedmeasurementlogic.microwave_on()\n", | |
| " \n", | |
| " " | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "### Pulsed ODMR" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "for rabi in np.arange(100,2500,100):\n", | |
| " podmr = MeasurementClass(start=2.88e9, stop=2.92e9, step=1e6, n_runs=5, rep=50000, power=-10, freq=None, two_pi=rabi, \n", | |
| " pulse_func='Pulsed_ODMR', tag=f'podmr_RuCl3_10.5K_4r_map2_{rabi}', explicit_tau_list=None)\n", | |
| " podmr()\n", | |
| " if podmr.err==-1:\n", | |
| " break" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "### Rabi" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "rabi_measurement = MeasurementClass(start=10, stop=100, step=50, n_runs=2, rep=200, power=-2, freq=2.898, two_pi=None, \n", | |
| " \n", | |
| " pulse_func='Rabi', tag='rabi_RuCl3_10.5K_4r', explicit_tau_list=None)\n", | |
| "rabi_measurement()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "for x in range(qdplotlogic.number_of_plots):\n", | |
| " qdplotlogic.remove_plot()" | |
| ] | |
| } | |
| ], | |
| "metadata": { | |
| "kernelspec": { | |
| "display_name": "Qudi", | |
| "language": "python", | |
| "name": "qudi" | |
| }, | |
| "language_info": { | |
| "codemirror_mode": { | |
| "name": "ipython", | |
| "version": "3.6.5" | |
| }, | |
| "file_extension": ".py", | |
| "mimetype": "text/x-python", | |
| "name": "python", | |
| "nbconvert_exporter": "python", | |
| "pygments_lexer": "ipython3", | |
| "version": "3.6.5" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 2 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment