Skip to content

Instantly share code, notes, and snippets.

@gadamc
Created February 2, 2023 22:22
Show Gist options
  • Save gadamc/fe31b3504839cd0c62159cdb62e2d6b1 to your computer and use it in GitHub Desktop.
Save gadamc/fe31b3504839cd0c62159cdb62e2d6b1 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"id": "84edc1c2",
"metadata": {},
"source": [
"# Confocal Scan"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "815ca094",
"metadata": {},
"outputs": [],
"source": [
"import logging\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "7e06f7a3",
"metadata": {},
"outputs": [],
"source": [
"import nipiezojenapy\n",
"import qt3utils.nidaq\n",
"import qt3utils.datagenerators as datasources\n",
"import qt3utils.datagenerators.piezoscanner\n",
"import qt3utils.nidaq.config"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "a7a370ec",
"metadata": {},
"outputs": [],
"source": [
"logging.basicConfig(level = logging.INFO) #set to logging.WARNING to suppress logged information to cells"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "6d6edfb0",
"metadata": {},
"outputs": [],
"source": [
"daq_name='Dev1'\n",
"signal_terminal='PFI0' \n",
"clock_rate=100000\n",
"num_data_samples_per_batch=50 \n",
"clock_terminal=None\n",
"rwtimeout=10\n",
"signal_counter='ctr2' \n",
"piezo_write_channels=['ao0','ao1','ao2'] \n",
"piezo_read_channels=['ai0','ai1','ai2'] \n",
"randomtest=False\n",
"cmap='Greys_r'"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "253aac3f",
"metadata": {},
"outputs": [],
"source": [
"controller = nipiezojenapy.PiezoControl(device_name = daq_name,\n",
" write_channels = piezo_write_channels,\n",
" read_channels = piezo_read_channel)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "adc94f90",
"metadata": {},
"outputs": [],
"source": [
"data_acq = datasources.NiDaqDigitalInputRateCounter(daq_name,\n",
" signal_terminal,\n",
" clock_rate,\n",
" num_data_samples_per_batch,\n",
" clock_terminal,\n",
" rwtimeout,\n",
" signal_counter)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "0bd206d8",
"metadata": {},
"outputs": [],
"source": [
"scanner = datasources.NiDaqPiezoScanner(data_acq, controller)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "5b2cf4e1",
"metadata": {},
"outputs": [],
"source": [
"scanner.set_scan_range(40, 60, 40, 60)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "7f25930e",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'running': False,\n",
" 'current_y': 0,\n",
" 'ymin': 40,\n",
" 'ymax': 60,\n",
" 'xmin': 40,\n",
" 'xmax': 60,\n",
" 'step_size': 0.5,\n",
" 'raster_line_pause': 0.15,\n",
" 'data': [],\n",
" 'controller': <nipiezojenapy.controller.PiezoControl at 0x2016b737400>,\n",
" 'num_daq_batches': 1,\n",
" 'ratecounter': <qt3utils.datagenerators.daqsamplers.NiDaqDigitalInputRateCounter at 0x2016b6b3190>}"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"scanner.__dict__"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "d8b848c3",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[0.04567673118400789, 0.004451061808055372, -0.05223423357139445]"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"controller.get_current_position()"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "15ff65d8-e99f-4493-879b-5e9b97561da8",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:nipiezojenapy.controller:go to position z: 15.00\n"
]
}
],
"source": [
"some_optimal_z = 15 #use the qt3scope tool and the nipiezojenapy tool to find an optimal z\n",
"#OR, maybe can run a large optimize scan across all of z. see the optimize code below.\n",
"controller.go_to_position(z = some_optimal_z)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "d4a565aa",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:nipiezojenapy.controller:go to position x: 40.00 y: 40.00\n"
]
}
],
"source": [
"scanner.set_to_starting_position()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "c78a079c",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[39.97804581427617, 40.04503830190768, 15.03121610872722]"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"controller.get_current_position()"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "8bc7acf9",
"metadata": {},
"outputs": [],
"source": [
"scanner.start()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "467faefe",
"metadata": {},
"outputs": [],
"source": [
"while scanner.still_scanning():\n",
" scanner.scan_x()\n",
" scanner.move_y()\n",
" \n",
"#the output of this cell has been removed. Normally, with loglevel = INFO, each step of the scan prints a few lines of information"
]
},
{
"cell_type": "code",
"execution_count": 51,
"id": "696d822c",
"metadata": {},
"outputs": [],
"source": [
"scanner.stop()"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "82e5580f",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x20109aad760>"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.imshow(scanner.data, cmap='Reds', extent = [40, 60, 60, 40])"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "3666b0d1",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:nipiezojenapy.controller:go to position x: 46.00 y: 43.00\n"
]
}
],
"source": [
"#perform some computational magic to locate a position of interest.\n",
"#for example, perform a convolution of the image with a mask that\n",
"#represents your interest (for example, a single NV center that is \n",
"#significantly isolated from other NV centers in the sample\n",
"#https://en.wikipedia.org/wiki/Kernel_(image_processing)\n",
"\n",
"#x_opt, y_opt = find_best_nv_center(scanner.data)\n",
"x_opt = 46\n",
"y_opt = 43\n",
"controller.go_to_position(x_opt, y_opt)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "66e8a17f-1eb3-4c18-ad8b-748939be89fd",
"metadata": {},
"outputs": [],
"source": [
"data, scanvals, x_opt, fit_coef = scanner.optimize_position('x', x_opt, width = 2, step_size = 0.25)\n",
"controller.go_to_position(x = x_opt)\n",
"\n",
"data, scanvals, y_opt, fit_coef = scanner.optimize_position('y', y_opt)\n",
"controller.go_to_position(y = y_opt)\n",
"\n",
"data, scanvals, z_opt, fit_coef = scanner.optimize_position('z', controller.get_current_position()[2], width = 10)\n",
"controller.go_to_position(z = z_opt)\n",
"\n",
"data, scanvals, x_opt, fit_coef = scanner.optimize_position('x', x_opt)\n",
"controller.go_to_position(x = x_opt)\n",
"\n",
"data, scanvals, y_opt, fit_coef = scanner.optimize_position('y', y_opt)\n",
"controller.go_to_position(y = y_opt)\n",
"\n",
"#the log output of this cell has been omitted"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "335e39bb-3382-4fc8-ac07-adf03e578403",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[44.38667251599523, 43.42043245163783, 15.049252369319495]"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"controller.get_current_position()"
]
},
{
"cell_type": "markdown",
"id": "4840df30-2b6d-4e11-8cba-1013f622021a",
"metadata": {},
"source": [
"#### Now at an optimized position, one could then perform other experiments"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "372e9cfa-e8ff-4500-93df-8b3d377f5148",
"metadata": {},
"outputs": [],
"source": [
"# pulser = qcsapphire.Pulser('COM4')\n",
"# rfsynth = qt3rfsynthcontrol.QT3SynthHD('COM5')\n",
"# nidaq_config = qt3utils.nidaq.EdgeCounter('Dev1')\n",
"\n",
"# experiment = qt3utils.experiments.podmr.PulsedODMR(pulser, rfsynth, nidaq_config, \n",
"# photon_counter_nidaq_terminal = 'PFI0',\n",
"# clock_nidaq_terminal = 'PFI12',\n",
"# rf_pulse_duration = 1e-6, \n",
"# rf_power = -25, \n",
"# aom_width = 5e-6)\n",
"# pulsed_odmr_scan_data = experiment.run(N_cycles=10000)"
]
},
{
"cell_type": "markdown",
"id": "bd62f50b-45d4-45c5-b4fc-e2dcc9a7553a",
"metadata": {},
"source": [
"# Save Data"
]
},
{
"cell_type": "code",
"execution_count": 47,
"id": "fc77c271",
"metadata": {},
"outputs": [],
"source": [
"scan_data = {'ymin':scanner.ymin, 'ymax':scanner.ymax, \n",
" 'xmin':scanner.xmin, 'xmax':scanner.xmax,\n",
" 'confocal_scan_data':scanner.data}\n",
"\n",
"#scan_data['podmr'] = pulsed_odmr_scan_data"
]
},
{
"cell_type": "code",
"execution_count": 48,
"id": "1ba7a334",
"metadata": {},
"outputs": [],
"source": [
"import pickle \n",
"myfilename = 'ppm_sample_oct4_2022_1mW.pickle'\n",
"with open(myfilename, 'wb') as handle:\n",
" pickle.dump(scan_data, handle, protocol=pickle.HIGHEST_PROTOCOL)"
]
},
{
"cell_type": "markdown",
"id": "8f318254-c29e-4242-be39-bc3f0cf99167",
"metadata": {},
"source": [
"# Load and Plot Data"
]
},
{
"cell_type": "code",
"execution_count": 49,
"id": "17421779",
"metadata": {},
"outputs": [],
"source": [
"with open(myfilename, 'rb') as handle:\n",
" loaded_scan_data = pickle.load(handle)"
]
},
{
"cell_type": "code",
"execution_count": 50,
"id": "fa0ab85b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x2010a2c4970>"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"xmin = loaded_scan_data['xmin']\n",
"xmax = loaded_scan_data['xmax']\n",
"ymin = loaded_scan_data['ymin']\n",
"ymax = loaded_scan_data['ymax']\n",
"\n",
"plt.imshow(loaded_scan_data['confocal_scan_data'], cmap='Reds', extent = [xmin, xmax, ymax, ymin])"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "cb8761b5",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.13"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment