You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3129 lines
242 KiB

  1. {
  2. "cells": [
  3. {
  4. "attachments": {},
  5. "cell_type": "markdown",
  6. "metadata": {},
  7. "source": [
  8. "# Import supporting package"
  9. ]
  10. },
  11. {
  12. "cell_type": "code",
  13. "execution_count": 1,
  14. "metadata": {},
  15. "outputs": [],
  16. "source": [
  17. "import xarray as xr\n",
  18. "import numpy as np\n",
  19. "import copy\n",
  20. "\n",
  21. "from uncertainties import ufloat\n",
  22. "from uncertainties import unumpy as unp\n",
  23. "from uncertainties import umath\n",
  24. "import random\n",
  25. "import matplotlib.pyplot as plt\n",
  26. "plt.rcParams['font.size'] = 12\n",
  27. "\n",
  28. "from DataContainer.ReadData import read_hdf5_file\n",
  29. "from Analyser.ImagingAnalyser import ImageAnalyser\n",
  30. "from Analyser.FitAnalyser import FitAnalyser\n",
  31. "from Analyser.FitAnalyser import NewFitModel, DensityProfileBEC2dModel\n",
  32. "from ToolFunction.ToolFunction import *\n",
  33. "\n",
  34. "from scipy.optimize import curve_fit\n",
  35. "\n",
  36. "from ToolFunction.HomeMadeXarrayFunction import errorbar, dataarray_plot_errorbar\n",
  37. "xr.plot.dataarray_plot.errorbar = errorbar\n",
  38. "xr.plot.accessor.DataArrayPlotAccessor.errorbar = dataarray_plot_errorbar\n",
  39. "\n",
  40. "imageAnalyser = ImageAnalyser()\n",
  41. "\n",
  42. "# %matplotlib notebook"
  43. ]
  44. },
  45. {
  46. "attachments": {},
  47. "cell_type": "markdown",
  48. "metadata": {},
  49. "source": [
  50. "## Start a client for parallel computing"
  51. ]
  52. },
  53. {
  54. "cell_type": "code",
  55. "execution_count": 2,
  56. "metadata": {},
  57. "outputs": [
  58. {
  59. "data": {
  60. "text/html": [
  61. "<div>\n",
  62. " <div style=\"width: 24px; height: 24px; background-color: #e1e1e1; border: 3px solid #9D9D9D; border-radius: 5px; position: absolute;\"> </div>\n",
  63. " <div style=\"margin-left: 48px;\">\n",
  64. " <h3 style=\"margin-bottom: 0px;\">Client</h3>\n",
  65. " <p style=\"color: #9D9D9D; margin-bottom: 0px;\">Client-f69f7e77-14be-11ee-a66c-80e82ce2fa8e</p>\n",
  66. " <table style=\"width: 100%; text-align: left;\">\n",
  67. "\n",
  68. " <tr>\n",
  69. " \n",
  70. " <td style=\"text-align: left;\"><strong>Connection method:</strong> Cluster object</td>\n",
  71. " <td style=\"text-align: left;\"><strong>Cluster type:</strong> distributed.LocalCluster</td>\n",
  72. " \n",
  73. " </tr>\n",
  74. "\n",
  75. " \n",
  76. " <tr>\n",
  77. " <td style=\"text-align: left;\">\n",
  78. " <strong>Dashboard: </strong> <a href=\"http://127.0.0.1:8787/status\" target=\"_blank\">http://127.0.0.1:8787/status</a>\n",
  79. " </td>\n",
  80. " <td style=\"text-align: left;\"></td>\n",
  81. " </tr>\n",
  82. " \n",
  83. "\n",
  84. " </table>\n",
  85. "\n",
  86. " \n",
  87. "\n",
  88. " \n",
  89. " <details>\n",
  90. " <summary style=\"margin-bottom: 20px;\"><h3 style=\"display: inline;\">Cluster Info</h3></summary>\n",
  91. " <div class=\"jp-RenderedHTMLCommon jp-RenderedHTML jp-mod-trusted jp-OutputArea-output\">\n",
  92. " <div style=\"width: 24px; height: 24px; background-color: #e1e1e1; border: 3px solid #9D9D9D; border-radius: 5px; position: absolute;\">\n",
  93. " </div>\n",
  94. " <div style=\"margin-left: 48px;\">\n",
  95. " <h3 style=\"margin-bottom: 0px; margin-top: 0px;\">LocalCluster</h3>\n",
  96. " <p style=\"color: #9D9D9D; margin-bottom: 0px;\">cbd5084a</p>\n",
  97. " <table style=\"width: 100%; text-align: left;\">\n",
  98. " <tr>\n",
  99. " <td style=\"text-align: left;\">\n",
  100. " <strong>Dashboard:</strong> <a href=\"http://127.0.0.1:8787/status\" target=\"_blank\">http://127.0.0.1:8787/status</a>\n",
  101. " </td>\n",
  102. " <td style=\"text-align: left;\">\n",
  103. " <strong>Workers:</strong> 8\n",
  104. " </td>\n",
  105. " </tr>\n",
  106. " <tr>\n",
  107. " <td style=\"text-align: left;\">\n",
  108. " <strong>Total threads:</strong> 128\n",
  109. " </td>\n",
  110. " <td style=\"text-align: left;\">\n",
  111. " <strong>Total memory:</strong> 149.01 GiB\n",
  112. " </td>\n",
  113. " </tr>\n",
  114. " \n",
  115. " <tr>\n",
  116. " <td style=\"text-align: left;\"><strong>Status:</strong> running</td>\n",
  117. " <td style=\"text-align: left;\"><strong>Using processes:</strong> True</td>\n",
  118. "</tr>\n",
  119. "\n",
  120. " \n",
  121. " </table>\n",
  122. "\n",
  123. " <details>\n",
  124. " <summary style=\"margin-bottom: 20px;\">\n",
  125. " <h3 style=\"display: inline;\">Scheduler Info</h3>\n",
  126. " </summary>\n",
  127. "\n",
  128. " <div style=\"\">\n",
  129. " <div>\n",
  130. " <div style=\"width: 24px; height: 24px; background-color: #FFF7E5; border: 3px solid #FF6132; border-radius: 5px; position: absolute;\"> </div>\n",
  131. " <div style=\"margin-left: 48px;\">\n",
  132. " <h3 style=\"margin-bottom: 0px;\">Scheduler</h3>\n",
  133. " <p style=\"color: #9D9D9D; margin-bottom: 0px;\">Scheduler-0b555d69-83fd-43e1-9215-9c67aeb6d78c</p>\n",
  134. " <table style=\"width: 100%; text-align: left;\">\n",
  135. " <tr>\n",
  136. " <td style=\"text-align: left;\">\n",
  137. " <strong>Comm:</strong> tcp://127.0.0.1:61752\n",
  138. " </td>\n",
  139. " <td style=\"text-align: left;\">\n",
  140. " <strong>Workers:</strong> 8\n",
  141. " </td>\n",
  142. " </tr>\n",
  143. " <tr>\n",
  144. " <td style=\"text-align: left;\">\n",
  145. " <strong>Dashboard:</strong> <a href=\"http://127.0.0.1:8787/status\" target=\"_blank\">http://127.0.0.1:8787/status</a>\n",
  146. " </td>\n",
  147. " <td style=\"text-align: left;\">\n",
  148. " <strong>Total threads:</strong> 128\n",
  149. " </td>\n",
  150. " </tr>\n",
  151. " <tr>\n",
  152. " <td style=\"text-align: left;\">\n",
  153. " <strong>Started:</strong> Just now\n",
  154. " </td>\n",
  155. " <td style=\"text-align: left;\">\n",
  156. " <strong>Total memory:</strong> 149.01 GiB\n",
  157. " </td>\n",
  158. " </tr>\n",
  159. " </table>\n",
  160. " </div>\n",
  161. " </div>\n",
  162. "\n",
  163. " <details style=\"margin-left: 48px;\">\n",
  164. " <summary style=\"margin-bottom: 20px;\">\n",
  165. " <h3 style=\"display: inline;\">Workers</h3>\n",
  166. " </summary>\n",
  167. "\n",
  168. " \n",
  169. " <div style=\"margin-bottom: 20px;\">\n",
  170. " <div style=\"width: 24px; height: 24px; background-color: #DBF5FF; border: 3px solid #4CC9FF; border-radius: 5px; position: absolute;\"> </div>\n",
  171. " <div style=\"margin-left: 48px;\">\n",
  172. " <details>\n",
  173. " <summary>\n",
  174. " <h4 style=\"margin-bottom: 0px; display: inline;\">Worker: 0</h4>\n",
  175. " </summary>\n",
  176. " <table style=\"width: 100%; text-align: left;\">\n",
  177. " <tr>\n",
  178. " <td style=\"text-align: left;\">\n",
  179. " <strong>Comm: </strong> tcp://127.0.0.1:61792\n",
  180. " </td>\n",
  181. " <td style=\"text-align: left;\">\n",
  182. " <strong>Total threads: </strong> 16\n",
  183. " </td>\n",
  184. " </tr>\n",
  185. " <tr>\n",
  186. " <td style=\"text-align: left;\">\n",
  187. " <strong>Dashboard: </strong> <a href=\"http://127.0.0.1:61794/status\" target=\"_blank\">http://127.0.0.1:61794/status</a>\n",
  188. " </td>\n",
  189. " <td style=\"text-align: left;\">\n",
  190. " <strong>Memory: </strong> 18.63 GiB\n",
  191. " </td>\n",
  192. " </tr>\n",
  193. " <tr>\n",
  194. " <td style=\"text-align: left;\">\n",
  195. " <strong>Nanny: </strong> tcp://127.0.0.1:61755\n",
  196. " </td>\n",
  197. " <td style=\"text-align: left;\"></td>\n",
  198. " </tr>\n",
  199. " <tr>\n",
  200. " <td colspan=\"2\" style=\"text-align: left;\">\n",
  201. " <strong>Local directory: </strong> C:\\Users\\data\\AppData\\Local\\Temp\\dask-worker-space\\worker-vwm7x29k\n",
  202. " </td>\n",
  203. " </tr>\n",
  204. "\n",
  205. " \n",
  206. "\n",
  207. " \n",
  208. "\n",
  209. " </table>\n",
  210. " </details>\n",
  211. " </div>\n",
  212. " </div>\n",
  213. " \n",
  214. " <div style=\"margin-bottom: 20px;\">\n",
  215. " <div style=\"width: 24px; height: 24px; background-color: #DBF5FF; border: 3px solid #4CC9FF; border-radius: 5px; position: absolute;\"> </div>\n",
  216. " <div style=\"margin-left: 48px;\">\n",
  217. " <details>\n",
  218. " <summary>\n",
  219. " <h4 style=\"margin-bottom: 0px; display: inline;\">Worker: 1</h4>\n",
  220. " </summary>\n",
  221. " <table style=\"width: 100%; text-align: left;\">\n",
  222. " <tr>\n",
  223. " <td style=\"text-align: left;\">\n",
  224. " <strong>Comm: </strong> tcp://127.0.0.1:61793\n",
  225. " </td>\n",
  226. " <td style=\"text-align: left;\">\n",
  227. " <strong>Total threads: </strong> 16\n",
  228. " </td>\n",
  229. " </tr>\n",
  230. " <tr>\n",
  231. " <td style=\"text-align: left;\">\n",
  232. " <strong>Dashboard: </strong> <a href=\"http://127.0.0.1:61798/status\" target=\"_blank\">http://127.0.0.1:61798/status</a>\n",
  233. " </td>\n",
  234. " <td style=\"text-align: left;\">\n",
  235. " <strong>Memory: </strong> 18.63 GiB\n",
  236. " </td>\n",
  237. " </tr>\n",
  238. " <tr>\n",
  239. " <td style=\"text-align: left;\">\n",
  240. " <strong>Nanny: </strong> tcp://127.0.0.1:61756\n",
  241. " </td>\n",
  242. " <td style=\"text-align: left;\"></td>\n",
  243. " </tr>\n",
  244. " <tr>\n",
  245. " <td colspan=\"2\" style=\"text-align: left;\">\n",
  246. " <strong>Local directory: </strong> C:\\Users\\data\\AppData\\Local\\Temp\\dask-worker-space\\worker-dsm02jmm\n",
  247. " </td>\n",
  248. " </tr>\n",
  249. "\n",
  250. " \n",
  251. "\n",
  252. " \n",
  253. "\n",
  254. " </table>\n",
  255. " </details>\n",
  256. " </div>\n",
  257. " </div>\n",
  258. " \n",
  259. " <div style=\"margin-bottom: 20px;\">\n",
  260. " <div style=\"width: 24px; height: 24px; background-color: #DBF5FF; border: 3px solid #4CC9FF; border-radius: 5px; position: absolute;\"> </div>\n",
  261. " <div style=\"margin-left: 48px;\">\n",
  262. " <details>\n",
  263. " <summary>\n",
  264. " <h4 style=\"margin-bottom: 0px; display: inline;\">Worker: 2</h4>\n",
  265. " </summary>\n",
  266. " <table style=\"width: 100%; text-align: left;\">\n",
  267. " <tr>\n",
  268. " <td style=\"text-align: left;\">\n",
  269. " <strong>Comm: </strong> tcp://127.0.0.1:61810\n",
  270. " </td>\n",
  271. " <td style=\"text-align: left;\">\n",
  272. " <strong>Total threads: </strong> 16\n",
  273. " </td>\n",
  274. " </tr>\n",
  275. " <tr>\n",
  276. " <td style=\"text-align: left;\">\n",
  277. " <strong>Dashboard: </strong> <a href=\"http://127.0.0.1:61811/status\" target=\"_blank\">http://127.0.0.1:61811/status</a>\n",
  278. " </td>\n",
  279. " <td style=\"text-align: left;\">\n",
  280. " <strong>Memory: </strong> 18.63 GiB\n",
  281. " </td>\n",
  282. " </tr>\n",
  283. " <tr>\n",
  284. " <td style=\"text-align: left;\">\n",
  285. " <strong>Nanny: </strong> tcp://127.0.0.1:61757\n",
  286. " </td>\n",
  287. " <td style=\"text-align: left;\"></td>\n",
  288. " </tr>\n",
  289. " <tr>\n",
  290. " <td colspan=\"2\" style=\"text-align: left;\">\n",
  291. " <strong>Local directory: </strong> C:\\Users\\data\\AppData\\Local\\Temp\\dask-worker-space\\worker-kb6dkrm1\n",
  292. " </td>\n",
  293. " </tr>\n",
  294. "\n",
  295. " \n",
  296. "\n",
  297. " \n",
  298. "\n",
  299. " </table>\n",
  300. " </details>\n",
  301. " </div>\n",
  302. " </div>\n",
  303. " \n",
  304. " <div style=\"margin-bottom: 20px;\">\n",
  305. " <div style=\"width: 24px; height: 24px; background-color: #DBF5FF; border: 3px solid #4CC9FF; border-radius: 5px; position: absolute;\"> </div>\n",
  306. " <div style=\"margin-left: 48px;\">\n",
  307. " <details>\n",
  308. " <summary>\n",
  309. " <h4 style=\"margin-bottom: 0px; display: inline;\">Worker: 3</h4>\n",
  310. " </summary>\n",
  311. " <table style=\"width: 100%; text-align: left;\">\n",
  312. " <tr>\n",
  313. " <td style=\"text-align: left;\">\n",
  314. " <strong>Comm: </strong> tcp://127.0.0.1:61775\n",
  315. " </td>\n",
  316. " <td style=\"text-align: left;\">\n",
  317. " <strong>Total threads: </strong> 16\n",
  318. " </td>\n",
  319. " </tr>\n",
  320. " <tr>\n",
  321. " <td style=\"text-align: left;\">\n",
  322. " <strong>Dashboard: </strong> <a href=\"http://127.0.0.1:61790/status\" target=\"_blank\">http://127.0.0.1:61790/status</a>\n",
  323. " </td>\n",
  324. " <td style=\"text-align: left;\">\n",
  325. " <strong>Memory: </strong> 18.63 GiB\n",
  326. " </td>\n",
  327. " </tr>\n",
  328. " <tr>\n",
  329. " <td style=\"text-align: left;\">\n",
  330. " <strong>Nanny: </strong> tcp://127.0.0.1:61758\n",
  331. " </td>\n",
  332. " <td style=\"text-align: left;\"></td>\n",
  333. " </tr>\n",
  334. " <tr>\n",
  335. " <td colspan=\"2\" style=\"text-align: left;\">\n",
  336. " <strong>Local directory: </strong> C:\\Users\\data\\AppData\\Local\\Temp\\dask-worker-space\\worker-vtzwx9iy\n",
  337. " </td>\n",
  338. " </tr>\n",
  339. "\n",
  340. " \n",
  341. "\n",
  342. " \n",
  343. "\n",
  344. " </table>\n",
  345. " </details>\n",
  346. " </div>\n",
  347. " </div>\n",
  348. " \n",
  349. " <div style=\"margin-bottom: 20px;\">\n",
  350. " <div style=\"width: 24px; height: 24px; background-color: #DBF5FF; border: 3px solid #4CC9FF; border-radius: 5px; position: absolute;\"> </div>\n",
  351. " <div style=\"margin-left: 48px;\">\n",
  352. " <details>\n",
  353. " <summary>\n",
  354. " <h4 style=\"margin-bottom: 0px; display: inline;\">Worker: 4</h4>\n",
  355. " </summary>\n",
  356. " <table style=\"width: 100%; text-align: left;\">\n",
  357. " <tr>\n",
  358. " <td style=\"text-align: left;\">\n",
  359. " <strong>Comm: </strong> tcp://127.0.0.1:61804\n",
  360. " </td>\n",
  361. " <td style=\"text-align: left;\">\n",
  362. " <strong>Total threads: </strong> 16\n",
  363. " </td>\n",
  364. " </tr>\n",
  365. " <tr>\n",
  366. " <td style=\"text-align: left;\">\n",
  367. " <strong>Dashboard: </strong> <a href=\"http://127.0.0.1:61806/status\" target=\"_blank\">http://127.0.0.1:61806/status</a>\n",
  368. " </td>\n",
  369. " <td style=\"text-align: left;\">\n",
  370. " <strong>Memory: </strong> 18.63 GiB\n",
  371. " </td>\n",
  372. " </tr>\n",
  373. " <tr>\n",
  374. " <td style=\"text-align: left;\">\n",
  375. " <strong>Nanny: </strong> tcp://127.0.0.1:61759\n",
  376. " </td>\n",
  377. " <td style=\"text-align: left;\"></td>\n",
  378. " </tr>\n",
  379. " <tr>\n",
  380. " <td colspan=\"2\" style=\"text-align: left;\">\n",
  381. " <strong>Local directory: </strong> C:\\Users\\data\\AppData\\Local\\Temp\\dask-worker-space\\worker-a97vh11n\n",
  382. " </td>\n",
  383. " </tr>\n",
  384. "\n",
  385. " \n",
  386. "\n",
  387. " \n",
  388. "\n",
  389. " </table>\n",
  390. " </details>\n",
  391. " </div>\n",
  392. " </div>\n",
  393. " \n",
  394. " <div style=\"margin-bottom: 20px;\">\n",
  395. " <div style=\"width: 24px; height: 24px; background-color: #DBF5FF; border: 3px solid #4CC9FF; border-radius: 5px; position: absolute;\"> </div>\n",
  396. " <div style=\"margin-left: 48px;\">\n",
  397. " <details>\n",
  398. " <summary>\n",
  399. " <h4 style=\"margin-bottom: 0px; display: inline;\">Worker: 5</h4>\n",
  400. " </summary>\n",
  401. " <table style=\"width: 100%; text-align: left;\">\n",
  402. " <tr>\n",
  403. " <td style=\"text-align: left;\">\n",
  404. " <strong>Comm: </strong> tcp://127.0.0.1:61796\n",
  405. " </td>\n",
  406. " <td style=\"text-align: left;\">\n",
  407. " <strong>Total threads: </strong> 16\n",
  408. " </td>\n",
  409. " </tr>\n",
  410. " <tr>\n",
  411. " <td style=\"text-align: left;\">\n",
  412. " <strong>Dashboard: </strong> <a href=\"http://127.0.0.1:61801/status\" target=\"_blank\">http://127.0.0.1:61801/status</a>\n",
  413. " </td>\n",
  414. " <td style=\"text-align: left;\">\n",
  415. " <strong>Memory: </strong> 18.63 GiB\n",
  416. " </td>\n",
  417. " </tr>\n",
  418. " <tr>\n",
  419. " <td style=\"text-align: left;\">\n",
  420. " <strong>Nanny: </strong> tcp://127.0.0.1:61760\n",
  421. " </td>\n",
  422. " <td style=\"text-align: left;\"></td>\n",
  423. " </tr>\n",
  424. " <tr>\n",
  425. " <td colspan=\"2\" style=\"text-align: left;\">\n",
  426. " <strong>Local directory: </strong> C:\\Users\\data\\AppData\\Local\\Temp\\dask-worker-space\\worker-2jc_h5j9\n",
  427. " </td>\n",
  428. " </tr>\n",
  429. "\n",
  430. " \n",
  431. "\n",
  432. " \n",
  433. "\n",
  434. " </table>\n",
  435. " </details>\n",
  436. " </div>\n",
  437. " </div>\n",
  438. " \n",
  439. " <div style=\"margin-bottom: 20px;\">\n",
  440. " <div style=\"width: 24px; height: 24px; background-color: #DBF5FF; border: 3px solid #4CC9FF; border-radius: 5px; position: absolute;\"> </div>\n",
  441. " <div style=\"margin-left: 48px;\">\n",
  442. " <details>\n",
  443. " <summary>\n",
  444. " <h4 style=\"margin-bottom: 0px; display: inline;\">Worker: 6</h4>\n",
  445. " </summary>\n",
  446. " <table style=\"width: 100%; text-align: left;\">\n",
  447. " <tr>\n",
  448. " <td style=\"text-align: left;\">\n",
  449. " <strong>Comm: </strong> tcp://127.0.0.1:61797\n",
  450. " </td>\n",
  451. " <td style=\"text-align: left;\">\n",
  452. " <strong>Total threads: </strong> 16\n",
  453. " </td>\n",
  454. " </tr>\n",
  455. " <tr>\n",
  456. " <td style=\"text-align: left;\">\n",
  457. " <strong>Dashboard: </strong> <a href=\"http://127.0.0.1:61800/status\" target=\"_blank\">http://127.0.0.1:61800/status</a>\n",
  458. " </td>\n",
  459. " <td style=\"text-align: left;\">\n",
  460. " <strong>Memory: </strong> 18.63 GiB\n",
  461. " </td>\n",
  462. " </tr>\n",
  463. " <tr>\n",
  464. " <td style=\"text-align: left;\">\n",
  465. " <strong>Nanny: </strong> tcp://127.0.0.1:61761\n",
  466. " </td>\n",
  467. " <td style=\"text-align: left;\"></td>\n",
  468. " </tr>\n",
  469. " <tr>\n",
  470. " <td colspan=\"2\" style=\"text-align: left;\">\n",
  471. " <strong>Local directory: </strong> C:\\Users\\data\\AppData\\Local\\Temp\\dask-worker-space\\worker-mvwb15rr\n",
  472. " </td>\n",
  473. " </tr>\n",
  474. "\n",
  475. " \n",
  476. "\n",
  477. " \n",
  478. "\n",
  479. " </table>\n",
  480. " </details>\n",
  481. " </div>\n",
  482. " </div>\n",
  483. " \n",
  484. " <div style=\"margin-bottom: 20px;\">\n",
  485. " <div style=\"width: 24px; height: 24px; background-color: #DBF5FF; border: 3px solid #4CC9FF; border-radius: 5px; position: absolute;\"> </div>\n",
  486. " <div style=\"margin-left: 48px;\">\n",
  487. " <details>\n",
  488. " <summary>\n",
  489. " <h4 style=\"margin-bottom: 0px; display: inline;\">Worker: 7</h4>\n",
  490. " </summary>\n",
  491. " <table style=\"width: 100%; text-align: left;\">\n",
  492. " <tr>\n",
  493. " <td style=\"text-align: left;\">\n",
  494. " <strong>Comm: </strong> tcp://127.0.0.1:61805\n",
  495. " </td>\n",
  496. " <td style=\"text-align: left;\">\n",
  497. " <strong>Total threads: </strong> 16\n",
  498. " </td>\n",
  499. " </tr>\n",
  500. " <tr>\n",
  501. " <td style=\"text-align: left;\">\n",
  502. " <strong>Dashboard: </strong> <a href=\"http://127.0.0.1:61808/status\" target=\"_blank\">http://127.0.0.1:61808/status</a>\n",
  503. " </td>\n",
  504. " <td style=\"text-align: left;\">\n",
  505. " <strong>Memory: </strong> 18.63 GiB\n",
  506. " </td>\n",
  507. " </tr>\n",
  508. " <tr>\n",
  509. " <td style=\"text-align: left;\">\n",
  510. " <strong>Nanny: </strong> tcp://127.0.0.1:61762\n",
  511. " </td>\n",
  512. " <td style=\"text-align: left;\"></td>\n",
  513. " </tr>\n",
  514. " <tr>\n",
  515. " <td colspan=\"2\" style=\"text-align: left;\">\n",
  516. " <strong>Local directory: </strong> C:\\Users\\data\\AppData\\Local\\Temp\\dask-worker-space\\worker-co4d63m7\n",
  517. " </td>\n",
  518. " </tr>\n",
  519. "\n",
  520. " \n",
  521. "\n",
  522. " \n",
  523. "\n",
  524. " </table>\n",
  525. " </details>\n",
  526. " </div>\n",
  527. " </div>\n",
  528. " \n",
  529. "\n",
  530. " </details>\n",
  531. "</div>\n",
  532. "\n",
  533. " </details>\n",
  534. " </div>\n",
  535. "</div>\n",
  536. " </details>\n",
  537. " \n",
  538. "\n",
  539. " </div>\n",
  540. "</div>"
  541. ],
  542. "text/plain": [
  543. "<Client: 'tcp://127.0.0.1:61752' processes=8 threads=128, memory=149.01 GiB>"
  544. ]
  545. },
  546. "execution_count": 2,
  547. "metadata": {},
  548. "output_type": "execute_result"
  549. }
  550. ],
  551. "source": [
  552. "from dask.distributed import Client\n",
  553. "client = Client(n_workers=8, threads_per_worker=16, processes=True, memory_limit='20GB')\n",
  554. "client"
  555. ]
  556. },
  557. {
  558. "attachments": {},
  559. "cell_type": "markdown",
  560. "metadata": {},
  561. "source": [
  562. "## Start a client for Mongo DB"
  563. ]
  564. },
  565. {
  566. "cell_type": "code",
  567. "execution_count": 3,
  568. "metadata": {},
  569. "outputs": [],
  570. "source": [
  571. "import pymongo\n",
  572. "import xarray_mongodb\n",
  573. "\n",
  574. "from DataContainer.MongoDB import MongoDB\n",
  575. "\n",
  576. "mongoClient = pymongo.MongoClient('mongodb://control:DyLab2021@127.0.0.1:27017/?authMechanism=DEFAULT')"
  577. ]
  578. },
  579. {
  580. "attachments": {},
  581. "cell_type": "markdown",
  582. "metadata": {},
  583. "source": [
  584. "## Set global path for experiment"
  585. ]
  586. },
  587. {
  588. "cell_type": "code",
  589. "execution_count": 4,
  590. "metadata": {},
  591. "outputs": [],
  592. "source": [
  593. "groupList = [\n",
  594. " \"images/MOT_3D_Camera/in_situ_absorption\",\n",
  595. " \"images/ODT_1_Axis_Camera/in_situ_absorption\",\n",
  596. " \"images/ODT_2_Axis_Camera/in_situ_absorption\",\n",
  597. "]\n",
  598. "\n",
  599. "dskey = {\n",
  600. " \"images/MOT_3D_Camera/in_situ_absorption\": \"camera_0\",\n",
  601. " \"images/ODT_1_Axis_Camera/in_situ_absorption\": \"camera_1\",\n",
  602. " \"images/ODT_2_Axis_Camera/in_situ_absorption\": \"camera_2\",\n",
  603. "}\n"
  604. ]
  605. },
  606. {
  607. "cell_type": "code",
  608. "execution_count": 5,
  609. "metadata": {},
  610. "outputs": [],
  611. "source": [
  612. "img_dir = 'C:/Users/control/DyLab/Experiments/DyBEC/'\n",
  613. "SequenceName = \"Repetition_scan\"\n",
  614. "folderPath = img_dir + SequenceName + \"/\" + get_date()\n",
  615. "\n",
  616. "mongoDB = mongoClient[SequenceName]\n",
  617. "\n",
  618. "DB = MongoDB(mongoClient, mongoDB, date=get_date())"
  619. ]
  620. },
  621. {
  622. "attachments": {},
  623. "cell_type": "markdown",
  624. "metadata": {},
  625. "source": [
  626. "# Repetition Scans"
  627. ]
  628. },
  629. {
  630. "attachments": {},
  631. "cell_type": "markdown",
  632. "metadata": {},
  633. "source": [
  634. "## scan MOT freq - Z Comp 0"
  635. ]
  636. },
  637. {
  638. "cell_type": "code",
  639. "execution_count": null,
  640. "metadata": {},
  641. "outputs": [],
  642. "source": [
  643. "%matplotlib notebook\n",
  644. "shotNum = \"0001\"\n",
  645. "filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
  646. "\n",
  647. "dataSetDict = {\n",
  648. " dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i])\n",
  649. " for i in range(len(groupList))\n",
  650. "}\n",
  651. "\n",
  652. "dataSet = dataSetDict[\"camera_1\"]\n",
  653. "\n",
  654. "print_scanAxis(dataSet)\n",
  655. "\n",
  656. "scanAxis = get_scanAxis(dataSet)\n",
  657. "\n",
  658. "dataSet = auto_rechunk(dataSet)\n",
  659. "\n",
  660. "dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
  661. "\n",
  662. "imageAnalyser.center = (310, 825)\n",
  663. "imageAnalyser.span = (550, 1200)\n",
  664. "imageAnalyser.fraction = (0.1, 0.1)\n",
  665. "\n",
  666. "dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
  667. "dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
  668. "\n",
  669. "Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
  670. "Ncount_mean = Ncount.mean(dim='runs')\n",
  671. "Ncount_std = Ncount.std(dim='runs')\n",
  672. "\n",
  673. "fig = plt.figure()\n",
  674. "ax = fig.gca()\n",
  675. "Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
  676. "plt.xlabel('MOT AOM Freq (MHz)')\n",
  677. "plt.ylabel('NCount')\n",
  678. "plt.tight_layout()\n",
  679. "plt.grid(visible=1)\n",
  680. "plt.show()\n",
  681. "\n",
  682. "DB.create_global(shotNum, dataSet)\n",
  683. "DB.add_data(shotNum, dataSet_cropOD, engine='xarray')"
  684. ]
  685. },
  686. {
  687. "attachments": {},
  688. "cell_type": "markdown",
  689. "metadata": {},
  690. "source": [
  691. "## scan Push freq"
  692. ]
  693. },
  694. {
  695. "cell_type": "code",
  696. "execution_count": null,
  697. "metadata": {},
  698. "outputs": [],
  699. "source": [
  700. "%matplotlib notebook\n",
  701. "shotNum = \"0002\"\n",
  702. "filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
  703. "\n",
  704. "dataSetDict = {\n",
  705. " dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i])\n",
  706. " for i in range(len(groupList))\n",
  707. "}\n",
  708. "\n",
  709. "dataSet = dataSetDict[\"camera_1\"]\n",
  710. "\n",
  711. "print_scanAxis(dataSet)\n",
  712. "\n",
  713. "scanAxis = get_scanAxis(dataSet)\n",
  714. "\n",
  715. "dataSet = auto_rechunk(dataSet)\n",
  716. "\n",
  717. "dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
  718. "\n",
  719. "imageAnalyser.center = (310, 825)\n",
  720. "imageAnalyser.span = (525, 1255)\n",
  721. "imageAnalyser.fraction = (0.1, 0.1)\n",
  722. "\n",
  723. "dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
  724. "dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
  725. "\n",
  726. "Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
  727. "Ncount_mean = calculate_mean(Ncount)\n",
  728. "Ncount_std = calculate_std(Ncount)\n",
  729. "\n",
  730. "fig = plt.figure()\n",
  731. "ax = fig.gca()\n",
  732. "Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
  733. "plt.xlabel('Push AOM Freq (MHz)')\n",
  734. "plt.ylabel('NCount')\n",
  735. "plt.tight_layout()\n",
  736. "plt.grid(visible=1)\n",
  737. "plt.show()\n",
  738. "\n",
  739. "DB.create_global(shotNum, dataSet)\n",
  740. "DB.add_data(shotNum, dataSet_cropOD, engine='xarray')"
  741. ]
  742. },
  743. {
  744. "attachments": {},
  745. "cell_type": "markdown",
  746. "metadata": {},
  747. "source": [
  748. "## scan Z comp current"
  749. ]
  750. },
  751. {
  752. "cell_type": "code",
  753. "execution_count": null,
  754. "metadata": {},
  755. "outputs": [],
  756. "source": [
  757. "%matplotlib notebook\n",
  758. "shotNum = \"0005\"\n",
  759. "filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
  760. "\n",
  761. "dataSetDict = {\n",
  762. " dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i])\n",
  763. " for i in range(len(groupList))\n",
  764. "}\n",
  765. "\n",
  766. "dataSet = dataSetDict[\"camera_1\"]\n",
  767. "\n",
  768. "print_scanAxis(dataSet)\n",
  769. "\n",
  770. "scanAxis = get_scanAxis(dataSet)\n",
  771. "\n",
  772. "dataSet = auto_rechunk(dataSet)\n",
  773. "\n",
  774. "dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
  775. "\n",
  776. "imageAnalyser.center = (305, 875)\n",
  777. "imageAnalyser.span = (400, 400)\n",
  778. "imageAnalyser.fraction = (0.1, 0.1)\n",
  779. "\n",
  780. "dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
  781. "dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
  782. "\n",
  783. "Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
  784. "Ncount_mean = calculate_mean(Ncount)\n",
  785. "Ncount_std = calculate_std(Ncount)\n",
  786. "\n",
  787. "fig = plt.figure()\n",
  788. "ax = fig.gca()\n",
  789. "Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
  790. "plt.xlabel('comp Z current (A)')\n",
  791. "plt.ylabel('NCount')\n",
  792. "plt.tight_layout()\n",
  793. "plt.grid(visible=1)\n",
  794. "plt.show()\n",
  795. "\n",
  796. "DB.create_global(shotNum, dataSet)\n",
  797. "DB.add_data(shotNum, dataSet_cropOD, engine='xarray')"
  798. ]
  799. },
  800. {
  801. "attachments": {},
  802. "cell_type": "markdown",
  803. "metadata": {},
  804. "source": [
  805. "## scan cMOT final Amp"
  806. ]
  807. },
  808. {
  809. "cell_type": "code",
  810. "execution_count": null,
  811. "metadata": {},
  812. "outputs": [],
  813. "source": [
  814. "shotNum = \"0006\"\n",
  815. "filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
  816. "\n",
  817. "dataSetDict = {\n",
  818. " dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i])\n",
  819. " for i in range(len(groupList))\n",
  820. "}\n",
  821. "\n",
  822. "dataSet = dataSetDict[\"camera_1\"]\n",
  823. "\n",
  824. "print_scanAxis(dataSet)\n",
  825. "\n",
  826. "scanAxis = get_scanAxis(dataSet)\n",
  827. "\n",
  828. "dataSet = auto_rechunk(dataSet)\n",
  829. "\n",
  830. "dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
  831. "\n",
  832. "imageAnalyser.center = (305, 875)\n",
  833. "imageAnalyser.span = (400, 400)\n",
  834. "imageAnalyser.fraction = (0.1, 0.1)\n",
  835. "\n",
  836. "dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
  837. "dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
  838. "\n",
  839. "Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
  840. "Ncount_mean = calculate_mean(Ncount)\n",
  841. "Ncount_std = calculate_std(Ncount)\n",
  842. "\n",
  843. "fig = plt.figure()\n",
  844. "ax = fig.gca()\n",
  845. "Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
  846. "plt.xlabel('cMOT final Amp (%)')\n",
  847. "plt.ylabel('NCount')\n",
  848. "#plt.ylim([0, 25000])\n",
  849. "plt.tight_layout()\n",
  850. "plt.grid(visible=1)\n",
  851. "plt.show()\n",
  852. "\n",
  853. "DB.create_global(shotNum, dataSet)\n",
  854. "DB.add_data(shotNum, dataSet_cropOD, engine='xarray')"
  855. ]
  856. },
  857. {
  858. "cell_type": "code",
  859. "execution_count": null,
  860. "metadata": {},
  861. "outputs": [],
  862. "source": [
  863. "%matplotlib notebook\n",
  864. "shotNum = \"0011\"\n",
  865. "filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
  866. "\n",
  867. "dataSetDict = {\n",
  868. " dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i])\n",
  869. " for i in range(len(groupList))\n",
  870. "}\n",
  871. "\n",
  872. "dataSet = dataSetDict[\"camera_1\"]\n",
  873. "\n",
  874. "print_scanAxis(dataSet)\n",
  875. "\n",
  876. "scanAxis = get_scanAxis(dataSet)\n",
  877. "\n",
  878. "dataSet = auto_rechunk(dataSet)\n",
  879. "\n",
  880. "dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
  881. "\n",
  882. "imageAnalyser.center = (305, 875)\n",
  883. "imageAnalyser.span = (400, 400)\n",
  884. "imageAnalyser.fraction = (0.1, 0.1)\n",
  885. "\n",
  886. "dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
  887. "dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
  888. "\n",
  889. "Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
  890. "Ncount_mean = calculate_mean(Ncount)\n",
  891. "Ncount_std = calculate_std(Ncount)\n",
  892. "\n",
  893. "fig = plt.figure()\n",
  894. "ax = fig.gca()\n",
  895. "Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
  896. "plt.xlabel('comp Z current (A)')\n",
  897. "plt.ylabel('NCount')\n",
  898. "plt.tight_layout()\n",
  899. "plt.grid(visible=1)\n",
  900. "plt.show()\n",
  901. "\n",
  902. "DB.create_global(shotNum, dataSet)\n",
  903. "DB.add_data(shotNum, dataSet_cropOD, engine='xarray')"
  904. ]
  905. },
  906. {
  907. "attachments": {},
  908. "cell_type": "markdown",
  909. "metadata": {},
  910. "source": [
  911. "# Evaporative Cooling"
  912. ]
  913. },
  914. {
  915. "cell_type": "code",
  916. "execution_count": 7,
  917. "metadata": {},
  918. "outputs": [],
  919. "source": [
  920. "img_dir = '//DyLabNAS/Data/'\n",
  921. "SequenceName = \"Evaporative_Cooling\"\n",
  922. "#folderPath = img_dir + SequenceName + \"/\" + get_date()\n",
  923. "folderPath = img_dir + SequenceName + \"/2023/06/20\"\n",
  924. "\n",
  925. "mongoDB = mongoClient[SequenceName]\n",
  926. "\n",
  927. "DB = MongoDB(mongoClient, mongoDB, date=get_date())"
  928. ]
  929. },
  930. {
  931. "attachments": {},
  932. "cell_type": "markdown",
  933. "metadata": {},
  934. "source": [
  935. "# Calibration of the magnetic fields"
  936. ]
  937. },
  938. {
  939. "attachments": {},
  940. "cell_type": "markdown",
  941. "metadata": {},
  942. "source": [
  943. "## Z Offset field = 0.119 A"
  944. ]
  945. },
  946. {
  947. "cell_type": "code",
  948. "execution_count": null,
  949. "metadata": {},
  950. "outputs": [],
  951. "source": [
  952. "%matplotlib notebook\n",
  953. "shotNum = \"0004\"\n",
  954. "filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
  955. "\n",
  956. "dataSetDict = {\n",
  957. " dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i], excludeAxis = ['sweep_start_freq', 'sweep_stop_freq'])\n",
  958. " for i in [0]\n",
  959. "}\n",
  960. "\n",
  961. "dataSet = dataSetDict[\"camera_0\"]\n",
  962. "\n",
  963. "print_scanAxis(dataSet)\n",
  964. "\n",
  965. "scanAxis = get_scanAxis(dataSet)\n",
  966. "\n",
  967. "dataSet = auto_rechunk(dataSet)\n",
  968. "\n",
  969. "dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
  970. "\n",
  971. "imageAnalyser.center = (160, 880)\n",
  972. "imageAnalyser.span = (250, 250)\n",
  973. "imageAnalyser.fraction = (0.1, 0.1)\n",
  974. "\n",
  975. "dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
  976. "dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
  977. "\n",
  978. "Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
  979. "Ncount_mean = calculate_mean(Ncount)\n",
  980. "Ncount_std = calculate_std(Ncount)\n",
  981. "\n",
  982. "fig = plt.figure()\n",
  983. "ax = fig.gca()\n",
  984. "Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
  985. "\n",
  986. "plt.ylabel('NCount')\n",
  987. "plt.tight_layout()\n",
  988. "#plt.ylim([0, 3500])\n",
  989. "plt.grid(visible=1)\n",
  990. "plt.show()"
  991. ]
  992. },
  993. {
  994. "cell_type": "code",
  995. "execution_count": null,
  996. "metadata": {},
  997. "outputs": [],
  998. "source": [
  999. "Ncount_mean_1 = Ncount_mean\n",
  1000. "Ncount_std_1 = Ncount_std\n",
  1001. "\n",
  1002. "fitAnalyser_1 = FitAnalyser(\"Gaussian With Offset\", fitDim=1)\n",
  1003. "# params = fitAnalyser.guess(Ncount_mean_1, x=scanAxis[0], guess_kwargs=dict(negative=True), dask=\"parallelized\")\n",
  1004. "params = fitAnalyser_1.fitModel.make_params()\n",
  1005. "params.add(name=\"amplitude\", value= -6000, max=np.inf, min=-np.inf, vary=True)\n",
  1006. "params.add(name=\"center\", value= 2.9576, max=np.inf, min=-np.inf, vary=True)\n",
  1007. "params.add(name=\"sigma\", value= 0.1, max=np.inf, min= 0, vary=True)\n",
  1008. "params.add(name=\"offset\", value= 6000, max=np.inf, min=-np.inf, vary=True)\n",
  1009. "\n",
  1010. "fitResult_1 = fitAnalyser_1.fit(Ncount_mean_1, params, x=scanAxis[0]).load()\n",
  1011. "freqdata = np.linspace(2.9445, 2.9601, 500)\n",
  1012. "fitCurve_1 = fitAnalyser_1.eval(fitResult_1, x=freqdata, dask=\"parallelized\").load()\n",
  1013. "fitCurve_1 = fitCurve_1.assign_coords({'x':np.array(freqdata)})\n",
  1014. "\n",
  1015. "fig = plt.figure()\n",
  1016. "ax = fig.gca()\n",
  1017. "\n",
  1018. "Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
  1019. "fitCurve_1.plot.errorbar(ax=ax, fmt='--g')\n",
  1020. "plt.xlabel('Center Frequency (MHz)')\n",
  1021. "plt.ylabel('NCount')\n",
  1022. "#plt.ylim([0, 3500])\n",
  1023. "plt.tight_layout()\n",
  1024. "plt.grid(visible=1)\n",
  1025. "plt.show()"
  1026. ]
  1027. },
  1028. {
  1029. "cell_type": "code",
  1030. "execution_count": null,
  1031. "metadata": {},
  1032. "outputs": [],
  1033. "source": [
  1034. "f_1 = fitAnalyser_1.get_fit_value(fitResult_1).center\n",
  1035. "df_1 = fitAnalyser_1.get_fit_std(fitResult_1).center\n",
  1036. "\n",
  1037. "print('f = %.5f \\u00B1 %.5f kHz'% tuple([np.abs(f_1)* 1e3,df_1* 1e3]))\n",
  1038. "\n",
  1039. "s_1 = fitAnalyser_1.get_fit_value(fitResult_1).sigma\n",
  1040. "ds_1 = fitAnalyser_1.get_fit_std(fitResult_1).sigma\n",
  1041. "\n",
  1042. "fwhm_1 = 2.3548200*s_1 * 1e3\n",
  1043. "dfwhm_1 = 2.3548200*ds_1 * 1e3\n",
  1044. "\n",
  1045. "print('fwhm = %.5f \\u00B1 %.5f kHz'% tuple([np.abs(fwhm_1),dfwhm_1]))"
  1046. ]
  1047. },
  1048. {
  1049. "attachments": {},
  1050. "cell_type": "markdown",
  1051. "metadata": {},
  1052. "source": [
  1053. "## Z Offset field = 0.189 A, 0.25 Vpp"
  1054. ]
  1055. },
  1056. {
  1057. "cell_type": "code",
  1058. "execution_count": null,
  1059. "metadata": {},
  1060. "outputs": [],
  1061. "source": [
  1062. "%matplotlib notebook\n",
  1063. "shotNum = \"0008\"\n",
  1064. "filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
  1065. "\n",
  1066. "dataSetDict = {\n",
  1067. " dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i], maxFileNum = 100, excludeAxis = ['sweep_start_freq', 'sweep_stop_freq'])\n",
  1068. " for i in [0]\n",
  1069. "}\n",
  1070. "\n",
  1071. "dataSet = dataSetDict[\"camera_0\"]\n",
  1072. "\n",
  1073. "print_scanAxis(dataSet)\n",
  1074. "\n",
  1075. "scanAxis = get_scanAxis(dataSet)\n",
  1076. "\n",
  1077. "dataSet = auto_rechunk(dataSet)\n",
  1078. "\n",
  1079. "dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
  1080. "\n",
  1081. "imageAnalyser.center = (160, 880)\n",
  1082. "imageAnalyser.span = (250, 250)\n",
  1083. "imageAnalyser.fraction = (0.1, 0.1)\n",
  1084. "\n",
  1085. "dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
  1086. "dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
  1087. "\n",
  1088. "Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
  1089. "Ncount_mean = calculate_mean(Ncount)\n",
  1090. "Ncount_std = calculate_std(Ncount)\n",
  1091. "\n",
  1092. "fig = plt.figure()\n",
  1093. "ax = fig.gca()\n",
  1094. "Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
  1095. "\n",
  1096. "plt.ylabel('NCount')\n",
  1097. "plt.tight_layout()\n",
  1098. "#plt.ylim([0, 3500])\n",
  1099. "plt.grid(visible=1)\n",
  1100. "plt.show()"
  1101. ]
  1102. },
  1103. {
  1104. "cell_type": "code",
  1105. "execution_count": null,
  1106. "metadata": {},
  1107. "outputs": [],
  1108. "source": [
  1109. "Ncount_mean_1 = Ncount_mean\n",
  1110. "Ncount_std_1 = Ncount_std\n",
  1111. "\n",
  1112. "fitAnalyser_1 = FitAnalyser(\"Gaussian With Offset\", fitDim=1)\n",
  1113. "# params = fitAnalyser.guess(Ncount_mean_1, x=scanAxis[0], guess_kwargs=dict(negative=True), dask=\"parallelized\")\n",
  1114. "params = fitAnalyser_1.fitModel.make_params()\n",
  1115. "params.add(name=\"amplitude\", value= -6000, max=np.inf, min=-np.inf, vary=True)\n",
  1116. "params.add(name=\"center\", value= 4.25, max=np.inf, min=-np.inf, vary=True)\n",
  1117. "params.add(name=\"sigma\", value= 0.1, max=np.inf, min= 0, vary=True)\n",
  1118. "params.add(name=\"offset\", value= 6000, max=np.inf, min=-np.inf, vary=True)\n",
  1119. "\n",
  1120. "fitResult_1 = fitAnalyser_1.fit(Ncount_mean_1, params, x=scanAxis[0]).load()\n",
  1121. "freqdata = np.linspace(4.2375, 4.266, 500)\n",
  1122. "fitCurve_1 = fitAnalyser_1.eval(fitResult_1, x=freqdata, dask=\"parallelized\").load()\n",
  1123. "fitCurve_1 = fitCurve_1.assign_coords({'x':np.array(freqdata)})\n",
  1124. "\n",
  1125. "fig = plt.figure()\n",
  1126. "ax = fig.gca()\n",
  1127. "\n",
  1128. "Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
  1129. "fitCurve_1.plot.errorbar(ax=ax, fmt='--g')\n",
  1130. "plt.xlabel('Center Frequency (MHz)')\n",
  1131. "plt.ylabel('NCount')\n",
  1132. "#plt.ylim([0, 3500])\n",
  1133. "plt.tight_layout()\n",
  1134. "plt.grid(visible=1)\n",
  1135. "plt.show()"
  1136. ]
  1137. },
  1138. {
  1139. "cell_type": "code",
  1140. "execution_count": null,
  1141. "metadata": {},
  1142. "outputs": [],
  1143. "source": [
  1144. "f_1 = fitAnalyser_1.get_fit_value(fitResult_1).center\n",
  1145. "df_1 = fitAnalyser_1.get_fit_std(fitResult_1).center\n",
  1146. "\n",
  1147. "print('f = %.5f \\u00B1 %.5f kHz'% tuple([np.abs(f_1)* 1e3,df_1* 1e3]))\n",
  1148. "\n",
  1149. "s_1 = fitAnalyser_1.get_fit_value(fitResult_1).sigma\n",
  1150. "ds_1 = fitAnalyser_1.get_fit_std(fitResult_1).sigma\n",
  1151. "\n",
  1152. "fwhm_1 = 2.3548200*s_1 * 1e3\n",
  1153. "dfwhm_1 = 2.3548200*ds_1 * 1e3\n",
  1154. "\n",
  1155. "print('fwhm = %.5f \\u00B1 %.5f kHz'% tuple([np.abs(fwhm_1),dfwhm_1]))"
  1156. ]
  1157. },
  1158. {
  1159. "attachments": {},
  1160. "cell_type": "markdown",
  1161. "metadata": {},
  1162. "source": [
  1163. "## Z Offset field = 0.189 A, 0.5 Vpp"
  1164. ]
  1165. },
  1166. {
  1167. "cell_type": "code",
  1168. "execution_count": null,
  1169. "metadata": {},
  1170. "outputs": [],
  1171. "source": [
  1172. "%matplotlib notebook\n",
  1173. "shotNum = \"0009\"\n",
  1174. "filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
  1175. "\n",
  1176. "dataSetDict = {\n",
  1177. " dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i], maxFileNum = 100, excludeAxis = ['sweep_start_freq', 'sweep_stop_freq'])\n",
  1178. " for i in [0]\n",
  1179. "}\n",
  1180. "\n",
  1181. "dataSet = dataSetDict[\"camera_0\"]\n",
  1182. "\n",
  1183. "print_scanAxis(dataSet)\n",
  1184. "\n",
  1185. "scanAxis = get_scanAxis(dataSet)\n",
  1186. "\n",
  1187. "dataSet = auto_rechunk(dataSet)\n",
  1188. "\n",
  1189. "dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
  1190. "\n",
  1191. "imageAnalyser.center = (160, 880)\n",
  1192. "imageAnalyser.span = (250, 250)\n",
  1193. "imageAnalyser.fraction = (0.1, 0.1)\n",
  1194. "\n",
  1195. "dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
  1196. "dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
  1197. "\n",
  1198. "Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
  1199. "Ncount_mean = calculate_mean(Ncount)\n",
  1200. "Ncount_std = calculate_std(Ncount)\n",
  1201. "\n",
  1202. "fig = plt.figure()\n",
  1203. "ax = fig.gca()\n",
  1204. "Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
  1205. "\n",
  1206. "plt.ylabel('NCount')\n",
  1207. "plt.tight_layout()\n",
  1208. "#plt.ylim([0, 3500])\n",
  1209. "plt.grid(visible=1)\n",
  1210. "plt.show()"
  1211. ]
  1212. },
  1213. {
  1214. "cell_type": "code",
  1215. "execution_count": null,
  1216. "metadata": {},
  1217. "outputs": [],
  1218. "source": [
  1219. "Ncount_mean_1 = Ncount_mean\n",
  1220. "Ncount_std_1 = Ncount_std\n",
  1221. "\n",
  1222. "fitAnalyser_1 = FitAnalyser(\"Gaussian With Offset\", fitDim=1)\n",
  1223. "# params = fitAnalyser.guess(Ncount_mean_1, x=scanAxis[0], guess_kwargs=dict(negative=True), dask=\"parallelized\")\n",
  1224. "params = fitAnalyser_1.fitModel.make_params()\n",
  1225. "params.add(name=\"amplitude\", value= -6000, max=np.inf, min=-np.inf, vary=True)\n",
  1226. "params.add(name=\"center\", value= 4.25, max=np.inf, min=-np.inf, vary=True)\n",
  1227. "params.add(name=\"sigma\", value= 0.1, max=np.inf, min= 0, vary=True)\n",
  1228. "params.add(name=\"offset\", value= 6000, max=np.inf, min=-np.inf, vary=True)\n",
  1229. "\n",
  1230. "fitResult_1 = fitAnalyser_1.fit(Ncount_mean_1, params, x=scanAxis[0]).load()\n",
  1231. "freqdata = np.linspace(4.23, 4.275, 500)\n",
  1232. "fitCurve_1 = fitAnalyser_1.eval(fitResult_1, x=freqdata, dask=\"parallelized\").load()\n",
  1233. "fitCurve_1 = fitCurve_1.assign_coords({'x':np.array(freqdata)})\n",
  1234. "\n",
  1235. "fig = plt.figure()\n",
  1236. "ax = fig.gca()\n",
  1237. "\n",
  1238. "Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
  1239. "fitCurve_1.plot.errorbar(ax=ax, fmt='--g')\n",
  1240. "plt.xlabel('Center Frequency (MHz)')\n",
  1241. "plt.ylabel('NCount')\n",
  1242. "#plt.ylim([0, 3500])\n",
  1243. "plt.tight_layout()\n",
  1244. "plt.grid(visible=1)\n",
  1245. "plt.show()"
  1246. ]
  1247. },
  1248. {
  1249. "cell_type": "code",
  1250. "execution_count": null,
  1251. "metadata": {},
  1252. "outputs": [],
  1253. "source": [
  1254. "f_1 = fitAnalyser_1.get_fit_value(fitResult_1).center\n",
  1255. "df_1 = fitAnalyser_1.get_fit_std(fitResult_1).center\n",
  1256. "\n",
  1257. "print('f = %.5f \\u00B1 %.5f kHz'% tuple([np.abs(f_1)* 1e3,df_1* 1e3]))\n",
  1258. "\n",
  1259. "s_1 = fitAnalyser_1.get_fit_value(fitResult_1).sigma\n",
  1260. "ds_1 = fitAnalyser_1.get_fit_std(fitResult_1).sigma\n",
  1261. "\n",
  1262. "fwhm_1 = 2.3548200*s_1 * 1e3\n",
  1263. "dfwhm_1 = 2.3548200*ds_1 * 1e3\n",
  1264. "\n",
  1265. "print('fwhm = %.5f \\u00B1 %.5f kHz'% tuple([np.abs(fwhm_1),dfwhm_1]))"
  1266. ]
  1267. },
  1268. {
  1269. "attachments": {},
  1270. "cell_type": "markdown",
  1271. "metadata": {},
  1272. "source": [
  1273. "## Z Offset field = 0.189 A, 1 Vpp"
  1274. ]
  1275. },
  1276. {
  1277. "cell_type": "code",
  1278. "execution_count": null,
  1279. "metadata": {},
  1280. "outputs": [],
  1281. "source": [
  1282. "%matplotlib notebook\n",
  1283. "shotNum = \"0010\"\n",
  1284. "filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
  1285. "\n",
  1286. "dataSetDict = {\n",
  1287. " dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i], maxFileNum = 100, excludeAxis = ['sweep_start_freq', 'sweep_stop_freq'])\n",
  1288. " for i in [0]\n",
  1289. "}\n",
  1290. "\n",
  1291. "dataSet = dataSetDict[\"camera_0\"]\n",
  1292. "\n",
  1293. "print_scanAxis(dataSet)\n",
  1294. "\n",
  1295. "scanAxis = get_scanAxis(dataSet)\n",
  1296. "\n",
  1297. "dataSet = auto_rechunk(dataSet)\n",
  1298. "\n",
  1299. "dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
  1300. "\n",
  1301. "imageAnalyser.center = (160, 880)\n",
  1302. "imageAnalyser.span = (250, 250)\n",
  1303. "imageAnalyser.fraction = (0.1, 0.1)\n",
  1304. "\n",
  1305. "dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
  1306. "dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
  1307. "\n",
  1308. "Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
  1309. "Ncount_mean = calculate_mean(Ncount)\n",
  1310. "Ncount_std = calculate_std(Ncount)\n",
  1311. "\n",
  1312. "fig = plt.figure()\n",
  1313. "ax = fig.gca()\n",
  1314. "Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
  1315. "\n",
  1316. "plt.ylabel('NCount')\n",
  1317. "plt.tight_layout()\n",
  1318. "#plt.ylim([0, 3500])\n",
  1319. "plt.grid(visible=1)\n",
  1320. "plt.show()"
  1321. ]
  1322. },
  1323. {
  1324. "cell_type": "code",
  1325. "execution_count": null,
  1326. "metadata": {},
  1327. "outputs": [],
  1328. "source": [
  1329. "Ncount_mean_1 = Ncount_mean\n",
  1330. "Ncount_std_1 = Ncount_std\n",
  1331. "\n",
  1332. "fitAnalyser_1 = FitAnalyser(\"Gaussian With Offset\", fitDim=1)\n",
  1333. "# params = fitAnalyser.guess(Ncount_mean_1, x=scanAxis[0], guess_kwargs=dict(negative=True), dask=\"parallelized\")\n",
  1334. "params = fitAnalyser_1.fitModel.make_params()\n",
  1335. "params.add(name=\"amplitude\", value= -6000, max=np.inf, min=-np.inf, vary=True)\n",
  1336. "params.add(name=\"center\", value= 4.25, max=np.inf, min=-np.inf, vary=True)\n",
  1337. "params.add(name=\"sigma\", value= 0.1, max=np.inf, min= 0, vary=True)\n",
  1338. "params.add(name=\"offset\", value= 6000, max=np.inf, min=-np.inf, vary=True)\n",
  1339. "\n",
  1340. "fitResult_1 = fitAnalyser_1.fit(Ncount_mean_1, params, x=scanAxis[0]).load()\n",
  1341. "freqdata = np.linspace(4.23, 4.275, 500)\n",
  1342. "fitCurve_1 = fitAnalyser_1.eval(fitResult_1, x=freqdata, dask=\"parallelized\").load()\n",
  1343. "fitCurve_1 = fitCurve_1.assign_coords({'x':np.array(freqdata)})\n",
  1344. "\n",
  1345. "fig = plt.figure()\n",
  1346. "ax = fig.gca()\n",
  1347. "\n",
  1348. "Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
  1349. "fitCurve_1.plot.errorbar(ax=ax, fmt='--g')\n",
  1350. "plt.xlabel('Center Frequency (MHz)')\n",
  1351. "plt.ylabel('NCount')\n",
  1352. "#plt.ylim([0, 3500])\n",
  1353. "plt.tight_layout()\n",
  1354. "plt.grid(visible=1)\n",
  1355. "plt.show()"
  1356. ]
  1357. },
  1358. {
  1359. "cell_type": "code",
  1360. "execution_count": null,
  1361. "metadata": {},
  1362. "outputs": [],
  1363. "source": [
  1364. "f_1 = fitAnalyser_1.get_fit_value(fitResult_1).center\n",
  1365. "df_1 = fitAnalyser_1.get_fit_std(fitResult_1).center\n",
  1366. "\n",
  1367. "print('f = %.5f \\u00B1 %.5f kHz'% tuple([np.abs(f_1)* 1e3,df_1* 1e3]))\n",
  1368. "\n",
  1369. "s_1 = fitAnalyser_1.get_fit_value(fitResult_1).sigma\n",
  1370. "ds_1 = fitAnalyser_1.get_fit_std(fitResult_1).sigma\n",
  1371. "\n",
  1372. "fwhm_1 = 2.3548200*s_1 * 1e3\n",
  1373. "dfwhm_1 = 2.3548200*ds_1 * 1e3\n",
  1374. "\n",
  1375. "print('fwhm = %.5f \\u00B1 %.5f kHz'% tuple([np.abs(fwhm_1),dfwhm_1]))"
  1376. ]
  1377. },
  1378. {
  1379. "attachments": {},
  1380. "cell_type": "markdown",
  1381. "metadata": {},
  1382. "source": [
  1383. "## Z Offset field = 0.189 A, 3 Vpp"
  1384. ]
  1385. },
  1386. {
  1387. "cell_type": "code",
  1388. "execution_count": null,
  1389. "metadata": {},
  1390. "outputs": [],
  1391. "source": [
  1392. "%matplotlib notebook\n",
  1393. "shotNum = \"0011\"\n",
  1394. "filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
  1395. "\n",
  1396. "dataSetDict = {\n",
  1397. " dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i], maxFileNum = 80, excludeAxis = ['sweep_start_freq', 'sweep_stop_freq'])\n",
  1398. " for i in [0]\n",
  1399. "}\n",
  1400. "\n",
  1401. "dataSet = dataSetDict[\"camera_0\"]\n",
  1402. "\n",
  1403. "print_scanAxis(dataSet)\n",
  1404. "\n",
  1405. "scanAxis = get_scanAxis(dataSet)\n",
  1406. "\n",
  1407. "dataSet = auto_rechunk(dataSet)\n",
  1408. "\n",
  1409. "dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
  1410. "\n",
  1411. "imageAnalyser.center = (160, 880)\n",
  1412. "imageAnalyser.span = (250, 250)\n",
  1413. "imageAnalyser.fraction = (0.1, 0.1)\n",
  1414. "\n",
  1415. "dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
  1416. "dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
  1417. "\n",
  1418. "Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
  1419. "Ncount_mean = calculate_mean(Ncount)\n",
  1420. "Ncount_std = calculate_std(Ncount)\n",
  1421. "\n",
  1422. "fig = plt.figure()\n",
  1423. "ax = fig.gca()\n",
  1424. "Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
  1425. "\n",
  1426. "plt.ylabel('NCount')\n",
  1427. "plt.tight_layout()\n",
  1428. "#plt.ylim([0, 3500])\n",
  1429. "plt.grid(visible=1)\n",
  1430. "plt.show()"
  1431. ]
  1432. },
  1433. {
  1434. "cell_type": "code",
  1435. "execution_count": null,
  1436. "metadata": {},
  1437. "outputs": [],
  1438. "source": [
  1439. "Ncount_mean_1 = Ncount_mean\n",
  1440. "Ncount_std_1 = Ncount_std\n",
  1441. "\n",
  1442. "fitAnalyser_1 = FitAnalyser(\"Gaussian With Offset\", fitDim=1)\n",
  1443. "# params = fitAnalyser.guess(Ncount_mean_1, x=scanAxis[0], guess_kwargs=dict(negative=True), dask=\"parallelized\")\n",
  1444. "params = fitAnalyser_1.fitModel.make_params()\n",
  1445. "params.add(name=\"amplitude\", value= -6000, max=np.inf, min=-np.inf, vary=True)\n",
  1446. "params.add(name=\"center\", value= 4.25, max=np.inf, min=-np.inf, vary=True)\n",
  1447. "params.add(name=\"sigma\", value= 0.1, max=np.inf, min= 0, vary=True)\n",
  1448. "params.add(name=\"offset\", value= 6000, max=np.inf, min=-np.inf, vary=True)\n",
  1449. "\n",
  1450. "fitResult_1 = fitAnalyser_1.fit(Ncount_mean_1, params, x=scanAxis[0]).load()\n",
  1451. "freqdata = np.linspace(4.22, 4.275, 500)\n",
  1452. "fitCurve_1 = fitAnalyser_1.eval(fitResult_1, x=freqdata, dask=\"parallelized\").load()\n",
  1453. "fitCurve_1 = fitCurve_1.assign_coords({'x':np.array(freqdata)})\n",
  1454. "\n",
  1455. "fig = plt.figure()\n",
  1456. "ax = fig.gca()\n",
  1457. "\n",
  1458. "Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
  1459. "fitCurve_1.plot.errorbar(ax=ax, fmt='--g')\n",
  1460. "plt.xlabel('Center Frequency (MHz)')\n",
  1461. "plt.ylabel('NCount')\n",
  1462. "#plt.ylim([0, 3500])\n",
  1463. "plt.tight_layout()\n",
  1464. "plt.grid(visible=1)\n",
  1465. "plt.show()"
  1466. ]
  1467. },
  1468. {
  1469. "cell_type": "code",
  1470. "execution_count": null,
  1471. "metadata": {},
  1472. "outputs": [],
  1473. "source": [
  1474. "f_1 = fitAnalyser_1.get_fit_value(fitResult_1).center\n",
  1475. "df_1 = fitAnalyser_1.get_fit_std(fitResult_1).center\n",
  1476. "\n",
  1477. "print('f = %.5f \\u00B1 %.5f kHz'% tuple([np.abs(f_1)* 1e3,df_1* 1e3]))\n",
  1478. "\n",
  1479. "s_1 = fitAnalyser_1.get_fit_value(fitResult_1).sigma\n",
  1480. "ds_1 = fitAnalyser_1.get_fit_std(fitResult_1).sigma\n",
  1481. "\n",
  1482. "fwhm_1 = 2.3548200*s_1 * 1e3\n",
  1483. "dfwhm_1 = 2.3548200*ds_1 * 1e3\n",
  1484. "\n",
  1485. "print('fwhm = %.5f \\u00B1 %.5f kHz'% tuple([np.abs(fwhm_1),dfwhm_1]))"
  1486. ]
  1487. },
  1488. {
  1489. "attachments": {},
  1490. "cell_type": "markdown",
  1491. "metadata": {},
  1492. "source": [
  1493. "## Scan Z offset field during evaporation"
  1494. ]
  1495. },
  1496. {
  1497. "cell_type": "code",
  1498. "execution_count": 8,
  1499. "metadata": {},
  1500. "outputs": [
  1501. {
  1502. "name": "stdout",
  1503. "output_type": "stream",
  1504. "text": [
  1505. "The detected scaning axes and values are: \n",
  1506. "\n",
  1507. "{'compZ_current_sg': array([0.18 , 0.182, 0.184, 0.186, 0.188, 0.19 , 0.192, 0.194, 0.196,\n",
  1508. " 0.198, 0.2 , 0.202, 0.204, 0.206, 0.208, 0.21 , 0.212, 0.214,\n",
  1509. " 0.216, 0.218, 0.22 ]), 'runs': array([0., 1., 2.])}\n"
  1510. ]
  1511. },
  1512. {
  1513. "data": {
  1514. "image/png": "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
  1515. "text/plain": [
  1516. "<Figure size 640x480 with 1 Axes>"
  1517. ]
  1518. },
  1519. "metadata": {},
  1520. "output_type": "display_data"
  1521. }
  1522. ],
  1523. "source": [
  1524. "shotNum = \"0015\"\n",
  1525. "filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
  1526. "\n",
  1527. "dataSetDict = {\n",
  1528. " dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i])\n",
  1529. " for i in [0]\n",
  1530. "}\n",
  1531. "\n",
  1532. "dataSet = dataSetDict[\"camera_0\"]\n",
  1533. "\n",
  1534. "print_scanAxis(dataSet)\n",
  1535. "\n",
  1536. "scanAxis = get_scanAxis(dataSet)\n",
  1537. "\n",
  1538. "dataSet = auto_rechunk(dataSet)\n",
  1539. "\n",
  1540. "dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
  1541. "\n",
  1542. "imageAnalyser.center = (890, 880)\n",
  1543. "imageAnalyser.span = (150, 150)\n",
  1544. "imageAnalyser.fraction = (0.1, 0.1)\n",
  1545. "\n",
  1546. "dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
  1547. "dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
  1548. "\n",
  1549. "Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
  1550. "Ncount_mean = calculate_mean(Ncount)\n",
  1551. "Ncount_std = calculate_std(Ncount)\n",
  1552. "\n",
  1553. "fig = plt.figure()\n",
  1554. "ax = fig.gca()\n",
  1555. "Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='-ob')\n",
  1556. "plt.xlabel('comp Z current (A)')\n",
  1557. "plt.ylabel('NCount')\n",
  1558. "plt.tight_layout()\n",
  1559. "plt.grid(visible=1)\n",
  1560. "plt.show()\n",
  1561. "\n",
  1562. "# DB.create_global(shotNum, dataSet)\n",
  1563. "# DB.add_data(shotNum, dataSet_cropOD, engine='xarray')"
  1564. ]
  1565. },
  1566. {
  1567. "cell_type": "code",
  1568. "execution_count": 10,
  1569. "metadata": {},
  1570. "outputs": [
  1571. {
  1572. "data": {
  1573. "image/png": "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
  1574. "text/plain": [
  1575. "<Figure size 640x480 with 2 Axes>"
  1576. ]
  1577. },
  1578. "metadata": {},
  1579. "output_type": "display_data"
  1580. }
  1581. ],
  1582. "source": [
  1583. "plt.figure()\n",
  1584. "\n",
  1585. "data = dataSet_cropOD.sel(compZ_current_sg = 0.198, runs=0)\n",
  1586. "data = data.assign_coords(x=data.x * 2.352 * 5.86)\n",
  1587. "data = data.assign_coords(y=data.y * 2.352 * 5.86)\n",
  1588. "\n",
  1589. "data.plot.pcolormesh(cmap='jet', vmin=0, vmax=2)\n",
  1590. "\n",
  1591. "plt.title('')\n",
  1592. "plt.xlabel('x ($\\mu m$)')\n",
  1593. "plt.ylabel('y ($\\mu m$)')\n",
  1594. "\n",
  1595. "plt.show()"
  1596. ]
  1597. },
  1598. {
  1599. "cell_type": "code",
  1600. "execution_count": 17,
  1601. "metadata": {},
  1602. "outputs": [
  1603. {
  1604. "name": "stderr",
  1605. "output_type": "stream",
  1606. "text": [
  1607. "f:\\Jianshun\\analyseScript\\Analyser\\FitAnalyser.py:86: RuntimeWarning: invalid value encountered in power\n",
  1608. " res = (1- ((x-centerx)/(sigmax))**2 - ((y-centery)/(sigmay))**2)**(3 / 2)\n"
  1609. ]
  1610. }
  1611. ],
  1612. "source": [
  1613. "data = dataSet_cropOD.sel(compZ_current_sg = 0.198, runs=0)\n",
  1614. "\n",
  1615. "fitModel = DensityProfileBEC2dModel()\n",
  1616. "fitAnalyser_1 = FitAnalyser(fitModel, fitDim=2)\n",
  1617. "\n",
  1618. "params = fitAnalyser_1.guess(data, dask=\"parallelized\")\n",
  1619. "\n",
  1620. "fitResult_1 = fitAnalyser_1.fit(data, params).load()\n",
  1621. "\n",
  1622. "# x = np.linspace(2.7725, 2.822, 500)\n",
  1623. "# y = np.linspace(2.7725, 2.822, 500)\n",
  1624. "# fitCurve_1 = fitAnalyser_1.eval(fitResult_1, x=x, y=y, dask=\"parallelized\").load()"
  1625. ]
  1626. },
  1627. {
  1628. "cell_type": "code",
  1629. "execution_count": 18,
  1630. "metadata": {},
  1631. "outputs": [
  1632. {
  1633. "name": "stderr",
  1634. "output_type": "stream",
  1635. "text": [
  1636. "C:\\Users\\data\\AppData\\Roaming\\Python\\Python39\\site-packages\\numpy\\lib\\function_base.py:2246: RuntimeWarning: invalid value encountered in _get_fit_full_result_single (vectorized)\n",
  1637. " outputs = ufunc(*inputs)\n"
  1638. ]
  1639. },
  1640. {
  1641. "data": {
  1642. "text/html": [
  1643. "<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n",
  1644. "<defs>\n",
  1645. "<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n",
  1646. "<path d=\"M16 0c-8.837 0-16 2.239-16 5v4c0 2.761 7.163 5 16 5s16-2.239 16-5v-4c0-2.761-7.163-5-16-5z\"></path>\n",
  1647. "<path d=\"M16 17c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
  1648. "<path d=\"M16 26c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
  1649. "</symbol>\n",
  1650. "<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n",
  1651. "<path d=\"M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.122 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z\"></path>\n",
  1652. "<path d=\"M23 26h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
  1653. "<path d=\"M23 22h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
  1654. "<path d=\"M23 18h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
  1655. "</symbol>\n",
  1656. "</defs>\n",
  1657. "</svg>\n",
  1658. "<style>/* CSS stylesheet for displaying xarray objects in jupyterlab.\n",
  1659. " *\n",
  1660. " */\n",
  1661. "\n",
  1662. ":root {\n",
  1663. " --xr-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));\n",
  1664. " --xr-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));\n",
  1665. " --xr-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));\n",
  1666. " --xr-border-color: var(--jp-border-color2, #e0e0e0);\n",
  1667. " --xr-disabled-color: var(--jp-layout-color3, #bdbdbd);\n",
  1668. " --xr-background-color: var(--jp-layout-color0, white);\n",
  1669. " --xr-background-color-row-even: var(--jp-layout-color1, white);\n",
  1670. " --xr-background-color-row-odd: var(--jp-layout-color2, #eeeeee);\n",
  1671. "}\n",
  1672. "\n",
  1673. "html[theme=dark],\n",
  1674. "body[data-theme=dark],\n",
  1675. "body.vscode-dark {\n",
  1676. " --xr-font-color0: rgba(255, 255, 255, 1);\n",
  1677. " --xr-font-color2: rgba(255, 255, 255, 0.54);\n",
  1678. " --xr-font-color3: rgba(255, 255, 255, 0.38);\n",
  1679. " --xr-border-color: #1F1F1F;\n",
  1680. " --xr-disabled-color: #515151;\n",
  1681. " --xr-background-color: #111111;\n",
  1682. " --xr-background-color-row-even: #111111;\n",
  1683. " --xr-background-color-row-odd: #313131;\n",
  1684. "}\n",
  1685. "\n",
  1686. ".xr-wrap {\n",
  1687. " display: block !important;\n",
  1688. " min-width: 300px;\n",
  1689. " max-width: 700px;\n",
  1690. "}\n",
  1691. "\n",
  1692. ".xr-text-repr-fallback {\n",
  1693. " /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n",
  1694. " display: none;\n",
  1695. "}\n",
  1696. "\n",
  1697. ".xr-header {\n",
  1698. " padding-top: 6px;\n",
  1699. " padding-bottom: 6px;\n",
  1700. " margin-bottom: 4px;\n",
  1701. " border-bottom: solid 1px var(--xr-border-color);\n",
  1702. "}\n",
  1703. "\n",
  1704. ".xr-header > div,\n",
  1705. ".xr-header > ul {\n",
  1706. " display: inline;\n",
  1707. " margin-top: 0;\n",
  1708. " margin-bottom: 0;\n",
  1709. "}\n",
  1710. "\n",
  1711. ".xr-obj-type,\n",
  1712. ".xr-array-name {\n",
  1713. " margin-left: 2px;\n",
  1714. " margin-right: 10px;\n",
  1715. "}\n",
  1716. "\n",
  1717. ".xr-obj-type {\n",
  1718. " color: var(--xr-font-color2);\n",
  1719. "}\n",
  1720. "\n",
  1721. ".xr-sections {\n",
  1722. " padding-left: 0 !important;\n",
  1723. " display: grid;\n",
  1724. " grid-template-columns: 150px auto auto 1fr 20px 20px;\n",
  1725. "}\n",
  1726. "\n",
  1727. ".xr-section-item {\n",
  1728. " display: contents;\n",
  1729. "}\n",
  1730. "\n",
  1731. ".xr-section-item input {\n",
  1732. " display: none;\n",
  1733. "}\n",
  1734. "\n",
  1735. ".xr-section-item input + label {\n",
  1736. " color: var(--xr-disabled-color);\n",
  1737. "}\n",
  1738. "\n",
  1739. ".xr-section-item input:enabled + label {\n",
  1740. " cursor: pointer;\n",
  1741. " color: var(--xr-font-color2);\n",
  1742. "}\n",
  1743. "\n",
  1744. ".xr-section-item input:enabled + label:hover {\n",
  1745. " color: var(--xr-font-color0);\n",
  1746. "}\n",
  1747. "\n",
  1748. ".xr-section-summary {\n",
  1749. " grid-column: 1;\n",
  1750. " color: var(--xr-font-color2);\n",
  1751. " font-weight: 500;\n",
  1752. "}\n",
  1753. "\n",
  1754. ".xr-section-summary > span {\n",
  1755. " display: inline-block;\n",
  1756. " padding-left: 0.5em;\n",
  1757. "}\n",
  1758. "\n",
  1759. ".xr-section-summary-in:disabled + label {\n",
  1760. " color: var(--xr-font-color2);\n",
  1761. "}\n",
  1762. "\n",
  1763. ".xr-section-summary-in + label:before {\n",
  1764. " display: inline-block;\n",
  1765. " content: '►';\n",
  1766. " font-size: 11px;\n",
  1767. " width: 15px;\n",
  1768. " text-align: center;\n",
  1769. "}\n",
  1770. "\n",
  1771. ".xr-section-summary-in:disabled + label:before {\n",
  1772. " color: var(--xr-disabled-color);\n",
  1773. "}\n",
  1774. "\n",
  1775. ".xr-section-summary-in:checked + label:before {\n",
  1776. " content: '▼';\n",
  1777. "}\n",
  1778. "\n",
  1779. ".xr-section-summary-in:checked + label > span {\n",
  1780. " display: none;\n",
  1781. "}\n",
  1782. "\n",
  1783. ".xr-section-summary,\n",
  1784. ".xr-section-inline-details {\n",
  1785. " padding-top: 4px;\n",
  1786. " padding-bottom: 4px;\n",
  1787. "}\n",
  1788. "\n",
  1789. ".xr-section-inline-details {\n",
  1790. " grid-column: 2 / -1;\n",
  1791. "}\n",
  1792. "\n",
  1793. ".xr-section-details {\n",
  1794. " display: none;\n",
  1795. " grid-column: 1 / -1;\n",
  1796. " margin-bottom: 5px;\n",
  1797. "}\n",
  1798. "\n",
  1799. ".xr-section-summary-in:checked ~ .xr-section-details {\n",
  1800. " display: contents;\n",
  1801. "}\n",
  1802. "\n",
  1803. ".xr-array-wrap {\n",
  1804. " grid-column: 1 / -1;\n",
  1805. " display: grid;\n",
  1806. " grid-template-columns: 20px auto;\n",
  1807. "}\n",
  1808. "\n",
  1809. ".xr-array-wrap > label {\n",
  1810. " grid-column: 1;\n",
  1811. " vertical-align: top;\n",
  1812. "}\n",
  1813. "\n",
  1814. ".xr-preview {\n",
  1815. " color: var(--xr-font-color3);\n",
  1816. "}\n",
  1817. "\n",
  1818. ".xr-array-preview,\n",
  1819. ".xr-array-data {\n",
  1820. " padding: 0 5px !important;\n",
  1821. " grid-column: 2;\n",
  1822. "}\n",
  1823. "\n",
  1824. ".xr-array-data,\n",
  1825. ".xr-array-in:checked ~ .xr-array-preview {\n",
  1826. " display: none;\n",
  1827. "}\n",
  1828. "\n",
  1829. ".xr-array-in:checked ~ .xr-array-data,\n",
  1830. ".xr-array-preview {\n",
  1831. " display: inline-block;\n",
  1832. "}\n",
  1833. "\n",
  1834. ".xr-dim-list {\n",
  1835. " display: inline-block !important;\n",
  1836. " list-style: none;\n",
  1837. " padding: 0 !important;\n",
  1838. " margin: 0;\n",
  1839. "}\n",
  1840. "\n",
  1841. ".xr-dim-list li {\n",
  1842. " display: inline-block;\n",
  1843. " padding: 0;\n",
  1844. " margin: 0;\n",
  1845. "}\n",
  1846. "\n",
  1847. ".xr-dim-list:before {\n",
  1848. " content: '(';\n",
  1849. "}\n",
  1850. "\n",
  1851. ".xr-dim-list:after {\n",
  1852. " content: ')';\n",
  1853. "}\n",
  1854. "\n",
  1855. ".xr-dim-list li:not(:last-child):after {\n",
  1856. " content: ',';\n",
  1857. " padding-right: 5px;\n",
  1858. "}\n",
  1859. "\n",
  1860. ".xr-has-index {\n",
  1861. " font-weight: bold;\n",
  1862. "}\n",
  1863. "\n",
  1864. ".xr-var-list,\n",
  1865. ".xr-var-item {\n",
  1866. " display: contents;\n",
  1867. "}\n",
  1868. "\n",
  1869. ".xr-var-item > div,\n",
  1870. ".xr-var-item label,\n",
  1871. ".xr-var-item > .xr-var-name span {\n",
  1872. " background-color: var(--xr-background-color-row-even);\n",
  1873. " margin-bottom: 0;\n",
  1874. "}\n",
  1875. "\n",
  1876. ".xr-var-item > .xr-var-name:hover span {\n",
  1877. " padding-right: 5px;\n",
  1878. "}\n",
  1879. "\n",
  1880. ".xr-var-list > li:nth-child(odd) > div,\n",
  1881. ".xr-var-list > li:nth-child(odd) > label,\n",
  1882. ".xr-var-list > li:nth-child(odd) > .xr-var-name span {\n",
  1883. " background-color: var(--xr-background-color-row-odd);\n",
  1884. "}\n",
  1885. "\n",
  1886. ".xr-var-name {\n",
  1887. " grid-column: 1;\n",
  1888. "}\n",
  1889. "\n",
  1890. ".xr-var-dims {\n",
  1891. " grid-column: 2;\n",
  1892. "}\n",
  1893. "\n",
  1894. ".xr-var-dtype {\n",
  1895. " grid-column: 3;\n",
  1896. " text-align: right;\n",
  1897. " color: var(--xr-font-color2);\n",
  1898. "}\n",
  1899. "\n",
  1900. ".xr-var-preview {\n",
  1901. " grid-column: 4;\n",
  1902. "}\n",
  1903. "\n",
  1904. ".xr-index-preview {\n",
  1905. " grid-column: 2 / 5;\n",
  1906. " color: var(--xr-font-color2);\n",
  1907. "}\n",
  1908. "\n",
  1909. ".xr-var-name,\n",
  1910. ".xr-var-dims,\n",
  1911. ".xr-var-dtype,\n",
  1912. ".xr-preview,\n",
  1913. ".xr-attrs dt {\n",
  1914. " white-space: nowrap;\n",
  1915. " overflow: hidden;\n",
  1916. " text-overflow: ellipsis;\n",
  1917. " padding-right: 10px;\n",
  1918. "}\n",
  1919. "\n",
  1920. ".xr-var-name:hover,\n",
  1921. ".xr-var-dims:hover,\n",
  1922. ".xr-var-dtype:hover,\n",
  1923. ".xr-attrs dt:hover {\n",
  1924. " overflow: visible;\n",
  1925. " width: auto;\n",
  1926. " z-index: 1;\n",
  1927. "}\n",
  1928. "\n",
  1929. ".xr-var-attrs,\n",
  1930. ".xr-var-data,\n",
  1931. ".xr-index-data {\n",
  1932. " display: none;\n",
  1933. " background-color: var(--xr-background-color) !important;\n",
  1934. " padding-bottom: 5px !important;\n",
  1935. "}\n",
  1936. "\n",
  1937. ".xr-var-attrs-in:checked ~ .xr-var-attrs,\n",
  1938. ".xr-var-data-in:checked ~ .xr-var-data,\n",
  1939. ".xr-index-data-in:checked ~ .xr-index-data {\n",
  1940. " display: block;\n",
  1941. "}\n",
  1942. "\n",
  1943. ".xr-var-data > table {\n",
  1944. " float: right;\n",
  1945. "}\n",
  1946. "\n",
  1947. ".xr-var-name span,\n",
  1948. ".xr-var-data,\n",
  1949. ".xr-index-name div,\n",
  1950. ".xr-index-data,\n",
  1951. ".xr-attrs {\n",
  1952. " padding-left: 25px !important;\n",
  1953. "}\n",
  1954. "\n",
  1955. ".xr-attrs,\n",
  1956. ".xr-var-attrs,\n",
  1957. ".xr-var-data,\n",
  1958. ".xr-index-data {\n",
  1959. " grid-column: 1 / -1;\n",
  1960. "}\n",
  1961. "\n",
  1962. "dl.xr-attrs {\n",
  1963. " padding: 0;\n",
  1964. " margin: 0;\n",
  1965. " display: grid;\n",
  1966. " grid-template-columns: 125px auto;\n",
  1967. "}\n",
  1968. "\n",
  1969. ".xr-attrs dt,\n",
  1970. ".xr-attrs dd {\n",
  1971. " padding: 0;\n",
  1972. " margin: 0;\n",
  1973. " float: left;\n",
  1974. " padding-right: 10px;\n",
  1975. " width: auto;\n",
  1976. "}\n",
  1977. "\n",
  1978. ".xr-attrs dt {\n",
  1979. " font-weight: normal;\n",
  1980. " grid-column: 1;\n",
  1981. "}\n",
  1982. "\n",
  1983. ".xr-attrs dt:hover span {\n",
  1984. " display: inline-block;\n",
  1985. " background: var(--xr-background-color);\n",
  1986. " padding-right: 10px;\n",
  1987. "}\n",
  1988. "\n",
  1989. ".xr-attrs dd {\n",
  1990. " grid-column: 2;\n",
  1991. " white-space: pre-wrap;\n",
  1992. " word-break: break-all;\n",
  1993. "}\n",
  1994. "\n",
  1995. ".xr-icon-database,\n",
  1996. ".xr-icon-file-text2,\n",
  1997. ".xr-no-icon {\n",
  1998. " display: inline-block;\n",
  1999. " vertical-align: middle;\n",
  2000. " width: 1em;\n",
  2001. " height: 1.5em !important;\n",
  2002. " stroke-width: 0;\n",
  2003. " stroke: currentColor;\n",
  2004. " fill: currentColor;\n",
  2005. "}\n",
  2006. "</style><pre class='xr-text-repr-fallback'>&lt;xarray.Dataset&gt;\n",
  2007. "Dimensions: ()\n",
  2008. "Coordinates:\n",
  2009. " compZ_current_sg float64 0.198\n",
  2010. " runs float64 0.0\n",
  2011. "Data variables:\n",
  2012. " BEC_amplitude object 792.7896024042066+/-nan\n",
  2013. " thermal_amplitude object 0.0+/-nan\n",
  2014. " BEC_centerx object 72.03322637975705+/-nan\n",
  2015. " BEC_centery object 74.15709273093088+/-nan\n",
  2016. " thermal_centerx object 73.1219837873983+/-nan\n",
  2017. " thermal_centery object 75.0675362391377+/-nan\n",
  2018. " BEC_sigmax object 25.92336716503899+/-nan\n",
  2019. " BEC_sigmay object 10.643305951751195+/-nan\n",
  2020. " thermal_sigmax object 17.18976684635309+/-nan\n",
  2021. " thermal_sigmay object 14.449859669689275+/-nan\n",
  2022. " thermalAspectRatio object 0.8406082408706373+/-nan\n",
  2023. " condensate_fraction object 1.0+/-nan\n",
  2024. "Attributes:\n",
  2025. " IMAGE_SUBCLASS: IMAGE_GRAYSCALE\n",
  2026. " IMAGE_VERSION: 1.2\n",
  2027. " IMAGE_WHITE_IS_ZERO: 0\n",
  2028. " x_start: 815\n",
  2029. " x_end: 965\n",
  2030. " y_end: 955\n",
  2031. " y_start: 805\n",
  2032. " x_center: 890\n",
  2033. " y_center: 880\n",
  2034. " x_span: 150\n",
  2035. " y_span: 150</pre><div class='xr-wrap' style='display:none'><div class='xr-header'><div class='xr-obj-type'>xarray.Dataset</div></div><ul class='xr-sections'><li class='xr-section-item'><input id='section-ee805def-8782-4ff7-aaa5-0307542091fe' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-ee805def-8782-4ff7-aaa5-0307542091fe' class='xr-section-summary' title='Expand/collapse section'>Dimensions:</label><div class='xr-section-inline-details'></div><div class='xr-section-details'></div></li><li class='xr-section-item'><input id='section-bbeb3fd8-9d26-42ce-a0f6-9e9fccaac797' class='xr-section-summary-in' type='checkbox' checked><label for='section-bbeb3fd8-9d26-42ce-a0f6-9e9fccaac797' class='xr-section-summary' >Coordinates: <span>(2)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span>compZ_current_sg</span></div><div class='xr-var-dims'>()</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>0.198</div><input id='attrs-290bd221-ede4-4895-b984-6361188a7a61' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-290bd221-ede4-4895-b984-6361188a7a61' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-0fc86fa5-f9e1-436b-96fd-ee93ac5da45c' class='xr-var-data-in' type='checkbox'><label for='data-0fc86fa5-f9e1-436b-96fd-ee93ac5da45c' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array(0.198)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>runs</span></div><div class='xr-var-dims'>()</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>0.0</div><input id='attrs-0c115949-5d9f-4808-a73d-8486b09d9ef7' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-0c115949-5d9f-4808-a73d-8486b09d9ef7' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-7240579c-8983-46b8-8df4-f5586e5c5c9d' class='xr-var-data-in' type='checkbox'><label for='data-7240579c-8983-46b8-8df4-f5586e5c5c9d' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array(0.)</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-1b80cf78-e245-4bdf-b9d3-38af0d71eae7' class='xr-section-summary-in' type='checkbox' checked><label for='section-1b80cf78-e245-4bdf-b9d3-38af0d71eae7' class='xr-section-summary' >Data variables: <span>(12)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span>BEC_amplitude</span></div><div class='xr-var-dims'>()</div><div class='xr-var-dtype'>object</div><div class='xr-var-preview xr-preview'>792.7896024042066+/-nan</div><input id='attrs-829f02b0-3ab6-4c29-a25b-a21789ce5b42' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-829f02b0-3ab6-4c29-a25b-a21789ce5b42' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-1ef932b3-726d-43a3-a5de-0dcf8f5a42f6' class='xr-var-data-in' type='checkbox'><label for='data-1ef932b3-726d-43a3-a5de-0dcf8f5a42f6' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array(792.7896024042066+/-nan, dtype=object)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>thermal_amplitude</span></div><div class='xr-var-dims'>()</div><div class='xr-var-dtype'>object</div><div clas
  2036. ],
  2037. "text/plain": [
  2038. "<xarray.Dataset>\n",
  2039. "Dimensions: ()\n",
  2040. "Coordinates:\n",
  2041. " compZ_current_sg float64 0.198\n",
  2042. " runs float64 0.0\n",
  2043. "Data variables:\n",
  2044. " BEC_amplitude object 792.7896024042066+/-nan\n",
  2045. " thermal_amplitude object 0.0+/-nan\n",
  2046. " BEC_centerx object 72.03322637975705+/-nan\n",
  2047. " BEC_centery object 74.15709273093088+/-nan\n",
  2048. " thermal_centerx object 73.1219837873983+/-nan\n",
  2049. " thermal_centery object 75.0675362391377+/-nan\n",
  2050. " BEC_sigmax object 25.92336716503899+/-nan\n",
  2051. " BEC_sigmay object 10.643305951751195+/-nan\n",
  2052. " thermal_sigmax object 17.18976684635309+/-nan\n",
  2053. " thermal_sigmay object 14.449859669689275+/-nan\n",
  2054. " thermalAspectRatio object 0.8406082408706373+/-nan\n",
  2055. " condensate_fraction object 1.0+/-nan\n",
  2056. "Attributes:\n",
  2057. " IMAGE_SUBCLASS: IMAGE_GRAYSCALE\n",
  2058. " IMAGE_VERSION: 1.2\n",
  2059. " IMAGE_WHITE_IS_ZERO: 0\n",
  2060. " x_start: 815\n",
  2061. " x_end: 965\n",
  2062. " y_end: 955\n",
  2063. " y_start: 805\n",
  2064. " x_center: 890\n",
  2065. " y_center: 880\n",
  2066. " x_span: 150\n",
  2067. " y_span: 150"
  2068. ]
  2069. },
  2070. "execution_count": 18,
  2071. "metadata": {},
  2072. "output_type": "execute_result"
  2073. }
  2074. ],
  2075. "source": [
  2076. "fitAnalyser_1.get_fit_full_result(fitResult_1)"
  2077. ]
  2078. },
  2079. {
  2080. "cell_type": "code",
  2081. "execution_count": 19,
  2082. "metadata": {},
  2083. "outputs": [
  2084. {
  2085. "data": {
  2086. "text/plain": [
  2087. "1.1654007155341837"
  2088. ]
  2089. },
  2090. "execution_count": 19,
  2091. "metadata": {},
  2092. "output_type": "execute_result"
  2093. }
  2094. ],
  2095. "source": [
  2096. "792.7896024042066 * 147 /1e5"
  2097. ]
  2098. },
  2099. {
  2100. "attachments": {},
  2101. "cell_type": "markdown",
  2102. "metadata": {},
  2103. "source": [
  2104. "# Calibration of the magnetic fields - after connecting the Z coils to the HiPPS"
  2105. ]
  2106. },
  2107. {
  2108. "attachments": {},
  2109. "cell_type": "markdown",
  2110. "metadata": {},
  2111. "source": [
  2112. "## Z Offset field = 0.119 A"
  2113. ]
  2114. },
  2115. {
  2116. "cell_type": "code",
  2117. "execution_count": null,
  2118. "metadata": {},
  2119. "outputs": [],
  2120. "source": [
  2121. "%matplotlib notebook\n",
  2122. "shotNum = \"0035\"\n",
  2123. "filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
  2124. "\n",
  2125. "dataSetDict = {\n",
  2126. " dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i], excludeAxis = ['sweep_start_freq', 'sweep_stop_freq'])\n",
  2127. " for i in [0]\n",
  2128. "}\n",
  2129. "\n",
  2130. "dataSet = dataSetDict[\"camera_0\"]\n",
  2131. "\n",
  2132. "print_scanAxis(dataSet)\n",
  2133. "\n",
  2134. "scanAxis = get_scanAxis(dataSet)\n",
  2135. "\n",
  2136. "dataSet = auto_rechunk(dataSet)\n",
  2137. "\n",
  2138. "dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
  2139. "\n",
  2140. "imageAnalyser.center = (160, 880)\n",
  2141. "imageAnalyser.span = (250, 250)\n",
  2142. "imageAnalyser.fraction = (0.1, 0.1)\n",
  2143. "\n",
  2144. "dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
  2145. "dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
  2146. "\n",
  2147. "Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
  2148. "Ncount_mean = calculate_mean(Ncount)\n",
  2149. "Ncount_std = calculate_std(Ncount)\n",
  2150. "\n",
  2151. "fig = plt.figure()\n",
  2152. "ax = fig.gca()\n",
  2153. "Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
  2154. "\n",
  2155. "plt.ylabel('NCount')\n",
  2156. "plt.tight_layout()\n",
  2157. "#plt.ylim([0, 3500])\n",
  2158. "plt.grid(visible=1)\n",
  2159. "plt.show()"
  2160. ]
  2161. },
  2162. {
  2163. "cell_type": "code",
  2164. "execution_count": null,
  2165. "metadata": {},
  2166. "outputs": [],
  2167. "source": [
  2168. "Ncount_mean_1 = Ncount_mean\n",
  2169. "Ncount_std_1 = Ncount_std\n",
  2170. "\n",
  2171. "fitAnalyser_1 = FitAnalyser(\"Gaussian With Offset\", fitDim=1)\n",
  2172. "# params = fitAnalyser.guess(Ncount_mean_1, x=scanAxis[0], guess_kwargs=dict(negative=True), dask=\"parallelized\")\n",
  2173. "params = fitAnalyser_1.fitModel.make_params()\n",
  2174. "params.add(name=\"amplitude\", value= -5000, max=np.inf, min=-np.inf, vary=True)\n",
  2175. "params.add(name=\"center\", value= 2.8, max=np.inf, min=-np.inf, vary=True)\n",
  2176. "params.add(name=\"sigma\", value= 0.1, max=np.inf, min= 0, vary=True)\n",
  2177. "params.add(name=\"offset\", value= 5000, max=np.inf, min=-np.inf, vary=True)\n",
  2178. "\n",
  2179. "fitResult_1 = fitAnalyser_1.fit(Ncount_mean_1, params, x=scanAxis[0]).load()\n",
  2180. "freqdata = np.linspace(2.7725, 2.822, 500)\n",
  2181. "fitCurve_1 = fitAnalyser_1.eval(fitResult_1, x=freqdata, dask=\"parallelized\").load()\n",
  2182. "fitCurve_1 = fitCurve_1.assign_coords({'x':np.array(freqdata)})\n",
  2183. "\n",
  2184. "fig = plt.figure()\n",
  2185. "ax = fig.gca()\n",
  2186. "\n",
  2187. "Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
  2188. "fitCurve_1.plot.errorbar(ax=ax, fmt='--g')\n",
  2189. "plt.xlabel('Center Frequency (MHz)')\n",
  2190. "plt.ylabel('NCount')\n",
  2191. "#plt.xlim([2.7828, 2.81625])\n",
  2192. "plt.tight_layout()\n",
  2193. "plt.grid(visible=1)\n",
  2194. "plt.show()"
  2195. ]
  2196. },
  2197. {
  2198. "cell_type": "code",
  2199. "execution_count": null,
  2200. "metadata": {},
  2201. "outputs": [],
  2202. "source": [
  2203. "f_1 = fitAnalyser_1.get_fit_value(fitResult_1).center\n",
  2204. "df_1 = fitAnalyser_1.get_fit_std(fitResult_1).center\n",
  2205. "\n",
  2206. "print('f = %.5f \\u00B1 %.5f kHz'% tuple([np.abs(f_1)* 1e3,df_1* 1e3]))\n",
  2207. "\n",
  2208. "s_1 = fitAnalyser_1.get_fit_value(fitResult_1).sigma\n",
  2209. "ds_1 = fitAnalyser_1.get_fit_std(fitResult_1).sigma\n",
  2210. "\n",
  2211. "fwhm_1 = 2.3548200*s_1 * 1e3\n",
  2212. "dfwhm_1 = 2.3548200*ds_1 * 1e3\n",
  2213. "\n",
  2214. "print('fwhm = %.5f \\u00B1 %.5f kHz'% tuple([np.abs(fwhm_1),dfwhm_1]))"
  2215. ]
  2216. },
  2217. {
  2218. "attachments": {},
  2219. "cell_type": "markdown",
  2220. "metadata": {},
  2221. "source": [
  2222. "## Z Offset field = 0.140 A"
  2223. ]
  2224. },
  2225. {
  2226. "cell_type": "code",
  2227. "execution_count": null,
  2228. "metadata": {},
  2229. "outputs": [],
  2230. "source": [
  2231. "%matplotlib notebook\n",
  2232. "shotNum = \"0044\"\n",
  2233. "filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
  2234. "\n",
  2235. "dataSetDict = {\n",
  2236. " dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i], excludeAxis = ['sweep_start_freq', 'sweep_stop_freq'])\n",
  2237. " for i in [0]\n",
  2238. "}\n",
  2239. "\n",
  2240. "dataSet = dataSetDict[\"camera_0\"]\n",
  2241. "\n",
  2242. "print_scanAxis(dataSet)\n",
  2243. "\n",
  2244. "scanAxis = get_scanAxis(dataSet)\n",
  2245. "\n",
  2246. "dataSet = auto_rechunk(dataSet)\n",
  2247. "\n",
  2248. "dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
  2249. "\n",
  2250. "imageAnalyser.center = (160, 880)\n",
  2251. "imageAnalyser.span = (250, 250)\n",
  2252. "imageAnalyser.fraction = (0.1, 0.1)\n",
  2253. "\n",
  2254. "dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
  2255. "dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
  2256. "\n",
  2257. "Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
  2258. "Ncount_mean = calculate_mean(Ncount)\n",
  2259. "Ncount_std = calculate_std(Ncount)\n",
  2260. "\n",
  2261. "fig = plt.figure()\n",
  2262. "ax = fig.gca()\n",
  2263. "Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
  2264. "\n",
  2265. "plt.ylabel('NCount')\n",
  2266. "plt.tight_layout()\n",
  2267. "#plt.ylim([0, 3500])\n",
  2268. "plt.grid(visible=1)\n",
  2269. "plt.show()"
  2270. ]
  2271. },
  2272. {
  2273. "cell_type": "code",
  2274. "execution_count": null,
  2275. "metadata": {},
  2276. "outputs": [],
  2277. "source": [
  2278. "Ncount_mean_1 = Ncount_mean\n",
  2279. "Ncount_std_1 = Ncount_std\n",
  2280. "\n",
  2281. "fitAnalyser_1 = FitAnalyser(\"Gaussian With Offset\", fitDim=1)\n",
  2282. "# params = fitAnalyser.guess(Ncount_mean_1, x=scanAxis[0], guess_kwargs=dict(negative=True), dask=\"parallelized\")\n",
  2283. "params = fitAnalyser_1.fitModel.make_params()\n",
  2284. "params.add(name=\"amplitude\", value= -2500, max=np.inf, min=-np.inf, vary=True)\n",
  2285. "params.add(name=\"center\", value= 3.177, max=np.inf, min=-np.inf, vary=True)\n",
  2286. "params.add(name=\"sigma\", value= 0.1, max=np.inf, min= 0, vary=True)\n",
  2287. "params.add(name=\"offset\", value= 2500, max=np.inf, min=-np.inf, vary=True)\n",
  2288. "\n",
  2289. "fitResult_1 = fitAnalyser_1.fit(Ncount_mean_1, params, x=scanAxis[0]).load()\n",
  2290. "freqdata = np.linspace(3.158, 3.198, 500)\n",
  2291. "fitCurve_1 = fitAnalyser_1.eval(fitResult_1, x=freqdata, dask=\"parallelized\").load()\n",
  2292. "fitCurve_1 = fitCurve_1.assign_coords({'x':np.array(freqdata)})\n",
  2293. "\n",
  2294. "fig = plt.figure()\n",
  2295. "ax = fig.gca()\n",
  2296. "\n",
  2297. "Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
  2298. "fitCurve_1.plot.errorbar(ax=ax, fmt='--g')\n",
  2299. "plt.xlabel('Center Frequency (MHz)')\n",
  2300. "plt.ylabel('NCount')\n",
  2301. "#plt.xlim([2.7828, 2.81625])\n",
  2302. "plt.tight_layout()\n",
  2303. "plt.grid(visible=1)\n",
  2304. "plt.show()"
  2305. ]
  2306. },
  2307. {
  2308. "cell_type": "code",
  2309. "execution_count": null,
  2310. "metadata": {},
  2311. "outputs": [],
  2312. "source": [
  2313. "f_1 = fitAnalyser_1.get_fit_value(fitResult_1).center\n",
  2314. "df_1 = fitAnalyser_1.get_fit_std(fitResult_1).center\n",
  2315. "\n",
  2316. "print('f = %.5f \\u00B1 %.5f kHz'% tuple([np.abs(f_1)* 1e3,df_1* 1e3]))\n",
  2317. "\n",
  2318. "s_1 = fitAnalyser_1.get_fit_value(fitResult_1).sigma\n",
  2319. "ds_1 = fitAnalyser_1.get_fit_std(fitResult_1).sigma\n",
  2320. "\n",
  2321. "fwhm_1 = 2.3548200*s_1 * 1e3\n",
  2322. "dfwhm_1 = 2.3548200*ds_1 * 1e3\n",
  2323. "\n",
  2324. "print('fwhm = %.5f \\u00B1 %.5f kHz'% tuple([np.abs(fwhm_1),dfwhm_1]))"
  2325. ]
  2326. },
  2327. {
  2328. "attachments": {},
  2329. "cell_type": "markdown",
  2330. "metadata": {},
  2331. "source": [
  2332. "## Z Offset field = 0.200 A"
  2333. ]
  2334. },
  2335. {
  2336. "cell_type": "code",
  2337. "execution_count": null,
  2338. "metadata": {},
  2339. "outputs": [],
  2340. "source": [
  2341. "%matplotlib notebook\n",
  2342. "shotNum = \"0048\"\n",
  2343. "filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
  2344. "\n",
  2345. "dataSetDict = {\n",
  2346. " dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i], excludeAxis = ['sweep_start_freq', 'sweep_stop_freq'])\n",
  2347. " for i in [0]\n",
  2348. "}\n",
  2349. "\n",
  2350. "dataSet = dataSetDict[\"camera_0\"]\n",
  2351. "\n",
  2352. "print_scanAxis(dataSet)\n",
  2353. "\n",
  2354. "scanAxis = get_scanAxis(dataSet)\n",
  2355. "\n",
  2356. "dataSet = auto_rechunk(dataSet)\n",
  2357. "\n",
  2358. "dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
  2359. "\n",
  2360. "imageAnalyser.center = (160, 880)\n",
  2361. "imageAnalyser.span = (250, 250)\n",
  2362. "imageAnalyser.fraction = (0.1, 0.1)\n",
  2363. "\n",
  2364. "dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
  2365. "dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
  2366. "\n",
  2367. "Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
  2368. "Ncount_mean = calculate_mean(Ncount)\n",
  2369. "Ncount_std = calculate_std(Ncount)\n",
  2370. "\n",
  2371. "fig = plt.figure()\n",
  2372. "ax = fig.gca()\n",
  2373. "Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
  2374. "\n",
  2375. "plt.ylabel('NCount')\n",
  2376. "plt.tight_layout()\n",
  2377. "#plt.ylim([0, 3500])\n",
  2378. "plt.grid(visible=1)\n",
  2379. "plt.show()"
  2380. ]
  2381. },
  2382. {
  2383. "cell_type": "code",
  2384. "execution_count": null,
  2385. "metadata": {},
  2386. "outputs": [],
  2387. "source": [
  2388. "Ncount_mean_1 = Ncount_mean\n",
  2389. "Ncount_std_1 = Ncount_std\n",
  2390. "\n",
  2391. "fitAnalyser_1 = FitAnalyser(\"Gaussian With Offset\", fitDim=1)\n",
  2392. "# params = fitAnalyser.guess(Ncount_mean_1, x=scanAxis[0], guess_kwargs=dict(negative=True), dask=\"parallelized\")\n",
  2393. "params = fitAnalyser_1.fitModel.make_params()\n",
  2394. "params.add(name=\"amplitude\", value= -4500, max=np.inf, min=-np.inf, vary=True)\n",
  2395. "params.add(name=\"center\", value= 4.275, max=np.inf, min=-np.inf, vary=True)\n",
  2396. "params.add(name=\"sigma\", value= 0.1, max=np.inf, min= 0, vary=True)\n",
  2397. "params.add(name=\"offset\", value= 4500, max=np.inf, min=-np.inf, vary=True)\n",
  2398. "\n",
  2399. "fitResult_1 = fitAnalyser_1.fit(Ncount_mean_1, params, x=scanAxis[0]).load()\n",
  2400. "freqdata = np.linspace(4.260, 4.289, 500)\n",
  2401. "fitCurve_1 = fitAnalyser_1.eval(fitResult_1, x=freqdata, dask=\"parallelized\").load()\n",
  2402. "fitCurve_1 = fitCurve_1.assign_coords({'x':np.array(freqdata)})\n",
  2403. "\n",
  2404. "fig = plt.figure()\n",
  2405. "ax = fig.gca()\n",
  2406. "\n",
  2407. "Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
  2408. "fitCurve_1.plot.errorbar(ax=ax, fmt='--g')\n",
  2409. "plt.xlabel('Center Frequency (MHz)')\n",
  2410. "plt.ylabel('NCount')\n",
  2411. "#plt.xlim([2.7828, 2.81625])\n",
  2412. "plt.tight_layout()\n",
  2413. "plt.grid(visible=1)\n",
  2414. "plt.show()"
  2415. ]
  2416. },
  2417. {
  2418. "cell_type": "code",
  2419. "execution_count": null,
  2420. "metadata": {},
  2421. "outputs": [],
  2422. "source": [
  2423. "f_1 = fitAnalyser_1.get_fit_value(fitResult_1).center\n",
  2424. "df_1 = fitAnalyser_1.get_fit_std(fitResult_1).center\n",
  2425. "\n",
  2426. "print('f = %.5f \\u00B1 %.5f kHz'% tuple([np.abs(f_1)* 1e3,df_1* 1e3]))\n",
  2427. "\n",
  2428. "s_1 = fitAnalyser_1.get_fit_value(fitResult_1).sigma\n",
  2429. "ds_1 = fitAnalyser_1.get_fit_std(fitResult_1).sigma\n",
  2430. "\n",
  2431. "fwhm_1 = 2.3548200*s_1 * 1e3\n",
  2432. "dfwhm_1 = 2.3548200*ds_1 * 1e3\n",
  2433. "\n",
  2434. "print('fwhm = %.5f \\u00B1 %.5f kHz'% tuple([np.abs(fwhm_1),dfwhm_1]))"
  2435. ]
  2436. },
  2437. {
  2438. "attachments": {},
  2439. "cell_type": "markdown",
  2440. "metadata": {},
  2441. "source": [
  2442. "## Z Offset field = 0.259 A"
  2443. ]
  2444. },
  2445. {
  2446. "cell_type": "code",
  2447. "execution_count": null,
  2448. "metadata": {},
  2449. "outputs": [],
  2450. "source": [
  2451. "%matplotlib notebook\n",
  2452. "shotNum = \"0056\"\n",
  2453. "filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
  2454. "\n",
  2455. "dataSetDict = {\n",
  2456. " dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i], excludeAxis = ['sweep_start_freq', 'sweep_stop_freq'])\n",
  2457. " for i in [0]\n",
  2458. "}\n",
  2459. "\n",
  2460. "dataSet = dataSetDict[\"camera_0\"]\n",
  2461. "\n",
  2462. "print_scanAxis(dataSet)\n",
  2463. "\n",
  2464. "scanAxis = get_scanAxis(dataSet)\n",
  2465. "\n",
  2466. "dataSet = auto_rechunk(dataSet)\n",
  2467. "\n",
  2468. "dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
  2469. "\n",
  2470. "imageAnalyser.center = (160, 880)\n",
  2471. "imageAnalyser.span = (250, 250)\n",
  2472. "imageAnalyser.fraction = (0.1, 0.1)\n",
  2473. "\n",
  2474. "dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
  2475. "dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
  2476. "\n",
  2477. "Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
  2478. "Ncount_mean = calculate_mean(Ncount)\n",
  2479. "Ncount_std = calculate_std(Ncount)\n",
  2480. "\n",
  2481. "fig = plt.figure()\n",
  2482. "ax = fig.gca()\n",
  2483. "Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
  2484. "\n",
  2485. "plt.ylabel('NCount')\n",
  2486. "plt.tight_layout()\n",
  2487. "#plt.ylim([0, 3500])\n",
  2488. "plt.grid(visible=1)\n",
  2489. "plt.show()"
  2490. ]
  2491. },
  2492. {
  2493. "cell_type": "code",
  2494. "execution_count": null,
  2495. "metadata": {},
  2496. "outputs": [],
  2497. "source": [
  2498. "Ncount_mean_1 = Ncount_mean\n",
  2499. "Ncount_std_1 = Ncount_std\n",
  2500. "\n",
  2501. "fitAnalyser_1 = FitAnalyser(\"Gaussian With Offset\", fitDim=1)\n",
  2502. "# params = fitAnalyser.guess(Ncount_mean_1, x=scanAxis[0], guess_kwargs=dict(negative=True), dask=\"parallelized\")\n",
  2503. "params = fitAnalyser_1.fitModel.make_params()\n",
  2504. "params.add(name=\"amplitude\", value= -4500, max=np.inf, min=-np.inf, vary=True)\n",
  2505. "params.add(name=\"center\", value= 5.3, max=np.inf, min=-np.inf, vary=True)\n",
  2506. "params.add(name=\"sigma\", value= 0.1, max=np.inf, min= 0, vary=True)\n",
  2507. "params.add(name=\"offset\", value= 4500, max=np.inf, min=-np.inf, vary=True)\n",
  2508. "\n",
  2509. "fitResult_1 = fitAnalyser_1.fit(Ncount_mean_1, params, x=scanAxis[0]).load()\n",
  2510. "freqdata = np.linspace(5.34, 5.364, 500)\n",
  2511. "fitCurve_1 = fitAnalyser_1.eval(fitResult_1, x=freqdata, dask=\"parallelized\").load()\n",
  2512. "fitCurve_1 = fitCurve_1.assign_coords({'x':np.array(freqdata)})\n",
  2513. "\n",
  2514. "fig = plt.figure()\n",
  2515. "ax = fig.gca()\n",
  2516. "\n",
  2517. "Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
  2518. "fitCurve_1.plot.errorbar(ax=ax, fmt='--g')\n",
  2519. "plt.xlabel('Center Frequency (MHz)')\n",
  2520. "plt.ylabel('NCount')\n",
  2521. "#plt.xlim([2.7828, 2.81625])\n",
  2522. "plt.tight_layout()\n",
  2523. "plt.grid(visible=1)\n",
  2524. "plt.show()"
  2525. ]
  2526. },
  2527. {
  2528. "cell_type": "code",
  2529. "execution_count": null,
  2530. "metadata": {},
  2531. "outputs": [],
  2532. "source": [
  2533. "f_1 = fitAnalyser_1.get_fit_value(fitResult_1).center\n",
  2534. "df_1 = fitAnalyser_1.get_fit_std(fitResult_1).center\n",
  2535. "\n",
  2536. "print('f = %.5f \\u00B1 %.5f kHz'% tuple([np.abs(f_1)* 1e3,df_1* 1e3]))\n",
  2537. "\n",
  2538. "s_1 = fitAnalyser_1.get_fit_value(fitResult_1).sigma\n",
  2539. "ds_1 = fitAnalyser_1.get_fit_std(fitResult_1).sigma\n",
  2540. "\n",
  2541. "fwhm_1 = 2.3548200*s_1 * 1e3\n",
  2542. "dfwhm_1 = 2.3548200*ds_1 * 1e3\n",
  2543. "\n",
  2544. "print('fwhm = %.5f \\u00B1 %.5f kHz'% tuple([np.abs(fwhm_1),dfwhm_1]))"
  2545. ]
  2546. },
  2547. {
  2548. "attachments": {},
  2549. "cell_type": "markdown",
  2550. "metadata": {},
  2551. "source": [
  2552. "## Z Offset field = 0.329 A"
  2553. ]
  2554. },
  2555. {
  2556. "cell_type": "code",
  2557. "execution_count": null,
  2558. "metadata": {},
  2559. "outputs": [],
  2560. "source": [
  2561. "%matplotlib notebook\n",
  2562. "shotNum = \"0059\"\n",
  2563. "filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
  2564. "\n",
  2565. "dataSetDict = {\n",
  2566. " dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i], excludeAxis = ['sweep_start_freq', 'sweep_stop_freq'])\n",
  2567. " for i in [0]\n",
  2568. "}\n",
  2569. "\n",
  2570. "dataSet = dataSetDict[\"camera_0\"]\n",
  2571. "\n",
  2572. "print_scanAxis(dataSet)\n",
  2573. "\n",
  2574. "scanAxis = get_scanAxis(dataSet)\n",
  2575. "\n",
  2576. "dataSet = auto_rechunk(dataSet)\n",
  2577. "\n",
  2578. "dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
  2579. "\n",
  2580. "imageAnalyser.center = (160, 880)\n",
  2581. "imageAnalyser.span = (250, 250)\n",
  2582. "imageAnalyser.fraction = (0.1, 0.1)\n",
  2583. "\n",
  2584. "dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
  2585. "dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
  2586. "\n",
  2587. "Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
  2588. "Ncount_mean = calculate_mean(Ncount)\n",
  2589. "Ncount_std = calculate_std(Ncount)\n",
  2590. "\n",
  2591. "fig = plt.figure()\n",
  2592. "ax = fig.gca()\n",
  2593. "Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
  2594. "\n",
  2595. "plt.ylabel('NCount')\n",
  2596. "plt.tight_layout()\n",
  2597. "#plt.ylim([0, 3500])\n",
  2598. "plt.grid(visible=1)\n",
  2599. "plt.show()"
  2600. ]
  2601. },
  2602. {
  2603. "cell_type": "code",
  2604. "execution_count": null,
  2605. "metadata": {},
  2606. "outputs": [],
  2607. "source": [
  2608. "Ncount_mean_1 = Ncount_mean\n",
  2609. "Ncount_std_1 = Ncount_std\n",
  2610. "\n",
  2611. "fitAnalyser_1 = FitAnalyser(\"Gaussian With Offset\", fitDim=1)\n",
  2612. "# params = fitAnalyser.guess(Ncount_mean_1, x=scanAxis[0], guess_kwargs=dict(negative=True), dask=\"parallelized\")\n",
  2613. "params = fitAnalyser_1.fitModel.make_params()\n",
  2614. "params.add(name=\"amplitude\", value= -4500, max=np.inf, min=-np.inf, vary=True)\n",
  2615. "params.add(name=\"center\", value= 6.636, max=np.inf, min=-np.inf, vary=True)\n",
  2616. "params.add(name=\"sigma\", value= 0.1, max=np.inf, min= 0, vary=True)\n",
  2617. "params.add(name=\"offset\", value= 4500, max=np.inf, min=-np.inf, vary=True)\n",
  2618. "\n",
  2619. "fitResult_1 = fitAnalyser_1.fit(Ncount_mean_1, params, x=scanAxis[0]).load()\n",
  2620. "freqdata = np.linspace(6.62, 6.655, 500)\n",
  2621. "fitCurve_1 = fitAnalyser_1.eval(fitResult_1, x=freqdata, dask=\"parallelized\").load()\n",
  2622. "fitCurve_1 = fitCurve_1.assign_coords({'x':np.array(freqdata)})\n",
  2623. "\n",
  2624. "fig = plt.figure()\n",
  2625. "ax = fig.gca()\n",
  2626. "\n",
  2627. "Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
  2628. "fitCurve_1.plot.errorbar(ax=ax, fmt='--g')\n",
  2629. "plt.xlabel('Center Frequency (MHz)')\n",
  2630. "plt.ylabel('NCount')\n",
  2631. "#plt.xlim([2.7828, 2.81625])\n",
  2632. "plt.tight_layout()\n",
  2633. "plt.grid(visible=1)\n",
  2634. "plt.show()"
  2635. ]
  2636. },
  2637. {
  2638. "cell_type": "code",
  2639. "execution_count": null,
  2640. "metadata": {},
  2641. "outputs": [],
  2642. "source": [
  2643. "f_1 = fitAnalyser_1.get_fit_value(fitResult_1).center\n",
  2644. "df_1 = fitAnalyser_1.get_fit_std(fitResult_1).center\n",
  2645. "\n",
  2646. "print('f = %.5f \\u00B1 %.5f kHz'% tuple([np.abs(f_1)* 1e3,df_1* 1e3]))\n",
  2647. "\n",
  2648. "s_1 = fitAnalyser_1.get_fit_value(fitResult_1).sigma\n",
  2649. "ds_1 = fitAnalyser_1.get_fit_std(fitResult_1).sigma\n",
  2650. "\n",
  2651. "fwhm_1 = 2.3548200*s_1 * 1e3\n",
  2652. "dfwhm_1 = 2.3548200*ds_1 * 1e3\n",
  2653. "\n",
  2654. "print('fwhm = %.5f \\u00B1 %.5f kHz'% tuple([np.abs(fwhm_1),dfwhm_1]))"
  2655. ]
  2656. },
  2657. {
  2658. "attachments": {},
  2659. "cell_type": "markdown",
  2660. "metadata": {},
  2661. "source": [
  2662. "## Z Offset field = 0.419 A"
  2663. ]
  2664. },
  2665. {
  2666. "cell_type": "code",
  2667. "execution_count": null,
  2668. "metadata": {},
  2669. "outputs": [],
  2670. "source": [
  2671. "%matplotlib notebook\n",
  2672. "shotNum = \"0063\"\n",
  2673. "filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
  2674. "\n",
  2675. "dataSetDict = {\n",
  2676. " dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i], excludeAxis = ['sweep_start_freq', 'sweep_stop_freq'])\n",
  2677. " for i in [0]\n",
  2678. "}\n",
  2679. "\n",
  2680. "dataSet = dataSetDict[\"camera_0\"]\n",
  2681. "\n",
  2682. "print_scanAxis(dataSet)\n",
  2683. "\n",
  2684. "scanAxis = get_scanAxis(dataSet)\n",
  2685. "\n",
  2686. "dataSet = auto_rechunk(dataSet)\n",
  2687. "\n",
  2688. "dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
  2689. "\n",
  2690. "imageAnalyser.center = (160, 880)\n",
  2691. "imageAnalyser.span = (250, 250)\n",
  2692. "imageAnalyser.fraction = (0.1, 0.1)\n",
  2693. "\n",
  2694. "dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
  2695. "dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
  2696. "\n",
  2697. "Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
  2698. "Ncount_mean = calculate_mean(Ncount)\n",
  2699. "Ncount_std = calculate_std(Ncount)\n",
  2700. "\n",
  2701. "fig = plt.figure()\n",
  2702. "ax = fig.gca()\n",
  2703. "Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
  2704. "\n",
  2705. "plt.ylabel('NCount')\n",
  2706. "plt.tight_layout()\n",
  2707. "#plt.ylim([0, 3500])\n",
  2708. "plt.grid(visible=1)\n",
  2709. "plt.show()"
  2710. ]
  2711. },
  2712. {
  2713. "cell_type": "code",
  2714. "execution_count": null,
  2715. "metadata": {},
  2716. "outputs": [],
  2717. "source": [
  2718. "Ncount_mean_1 = Ncount_mean\n",
  2719. "Ncount_std_1 = Ncount_std\n",
  2720. "\n",
  2721. "fitAnalyser_1 = FitAnalyser(\"Gaussian With Offset\", fitDim=1)\n",
  2722. "# params = fitAnalyser.guess(Ncount_mean_1, x=scanAxis[0], guess_kwargs=dict(negative=True), dask=\"parallelized\")\n",
  2723. "params = fitAnalyser_1.fitModel.make_params()\n",
  2724. "params.add(name=\"amplitude\", value= -1500, max=np.inf, min=-np.inf, vary=True)\n",
  2725. "params.add(name=\"center\", value= 8.286, max=np.inf, min=-np.inf, vary=True)\n",
  2726. "params.add(name=\"sigma\", value= 0.1, max=np.inf, min= 0, vary=True)\n",
  2727. "params.add(name=\"offset\", value= 1500, max=np.inf, min=-np.inf, vary=True)\n",
  2728. "\n",
  2729. "fitResult_1 = fitAnalyser_1.fit(Ncount_mean_1, params, x=scanAxis[0]).load()\n",
  2730. "freqdata = np.linspace(8.27, 8.305, 500)\n",
  2731. "fitCurve_1 = fitAnalyser_1.eval(fitResult_1, x=freqdata, dask=\"parallelized\").load()\n",
  2732. "fitCurve_1 = fitCurve_1.assign_coords({'x':np.array(freqdata)})\n",
  2733. "\n",
  2734. "fig = plt.figure()\n",
  2735. "ax = fig.gca()\n",
  2736. "\n",
  2737. "Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
  2738. "fitCurve_1.plot.errorbar(ax=ax, fmt='--g')\n",
  2739. "plt.xlabel('Center Frequency (MHz)')\n",
  2740. "plt.ylabel('NCount')\n",
  2741. "#plt.xlim([2.7828, 2.81625])\n",
  2742. "plt.tight_layout()\n",
  2743. "plt.grid(visible=1)\n",
  2744. "plt.show()"
  2745. ]
  2746. },
  2747. {
  2748. "cell_type": "code",
  2749. "execution_count": null,
  2750. "metadata": {},
  2751. "outputs": [],
  2752. "source": [
  2753. "f_1 = fitAnalyser_1.get_fit_value(fitResult_1).center\n",
  2754. "df_1 = fitAnalyser_1.get_fit_std(fitResult_1).center\n",
  2755. "\n",
  2756. "print('f = %.5f \\u00B1 %.5f kHz'% tuple([np.abs(f_1)* 1e3,df_1* 1e3]))\n",
  2757. "\n",
  2758. "s_1 = fitAnalyser_1.get_fit_value(fitResult_1).sigma\n",
  2759. "ds_1 = fitAnalyser_1.get_fit_std(fitResult_1).sigma\n",
  2760. "\n",
  2761. "fwhm_1 = 2.3548200*s_1 * 1e3\n",
  2762. "dfwhm_1 = 2.3548200*ds_1 * 1e3\n",
  2763. "\n",
  2764. "print('fwhm = %.5f \\u00B1 %.5f kHz'% tuple([np.abs(fwhm_1),dfwhm_1]))"
  2765. ]
  2766. },
  2767. {
  2768. "cell_type": "code",
  2769. "execution_count": null,
  2770. "metadata": {},
  2771. "outputs": [],
  2772. "source": [
  2773. "img_dir = 'C:/Users/control/DyLab/Experiments/DyBEC/'\n",
  2774. "SequenceName = \"Evaporative_Cooling\"\n",
  2775. "folderPath = img_dir + SequenceName + \"/\" + get_date()\n",
  2776. "\n",
  2777. "mongoDB = mongoClient[SequenceName]\n",
  2778. "\n",
  2779. "DB = MongoDB(mongoClient, mongoDB, date=get_date())"
  2780. ]
  2781. },
  2782. {
  2783. "attachments": {},
  2784. "cell_type": "markdown",
  2785. "metadata": {},
  2786. "source": [
  2787. "## Z Offset field = 0.489 A"
  2788. ]
  2789. },
  2790. {
  2791. "cell_type": "code",
  2792. "execution_count": null,
  2793. "metadata": {},
  2794. "outputs": [],
  2795. "source": [
  2796. "%matplotlib notebook\n",
  2797. "shotNum = \"0002\"\n",
  2798. "filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
  2799. "\n",
  2800. "dataSetDict = {\n",
  2801. " dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i], excludeAxis = ['sweep_start_freq', 'sweep_stop_freq'])\n",
  2802. " for i in [0]\n",
  2803. "}\n",
  2804. "\n",
  2805. "dataSet = dataSetDict[\"camera_0\"]\n",
  2806. "\n",
  2807. "print_scanAxis(dataSet)\n",
  2808. "\n",
  2809. "scanAxis = get_scanAxis(dataSet)\n",
  2810. "\n",
  2811. "dataSet = auto_rechunk(dataSet)\n",
  2812. "\n",
  2813. "dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
  2814. "\n",
  2815. "imageAnalyser.center = (160, 880)\n",
  2816. "imageAnalyser.span = (250, 250)\n",
  2817. "imageAnalyser.fraction = (0.1, 0.1)\n",
  2818. "\n",
  2819. "dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
  2820. "dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
  2821. "\n",
  2822. "Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
  2823. "Ncount_mean = calculate_mean(Ncount)\n",
  2824. "Ncount_std = calculate_std(Ncount)\n",
  2825. "\n",
  2826. "fig = plt.figure()\n",
  2827. "ax = fig.gca()\n",
  2828. "Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
  2829. "\n",
  2830. "plt.ylabel('NCount')\n",
  2831. "plt.tight_layout()\n",
  2832. "#plt.ylim([0, 3500])\n",
  2833. "plt.grid(visible=1)\n",
  2834. "plt.show()"
  2835. ]
  2836. },
  2837. {
  2838. "cell_type": "code",
  2839. "execution_count": null,
  2840. "metadata": {},
  2841. "outputs": [],
  2842. "source": [
  2843. "Ncount_mean_1 = Ncount_mean\n",
  2844. "Ncount_std_1 = Ncount_std\n",
  2845. "\n",
  2846. "fitAnalyser_1 = FitAnalyser(\"Gaussian With Offset\", fitDim=1)\n",
  2847. "# params = fitAnalyser.guess(Ncount_mean_1, x=scanAxis[0], guess_kwargs=dict(negative=True), dask=\"parallelized\")\n",
  2848. "params = fitAnalyser_1.fitModel.make_params()\n",
  2849. "params.add(name=\"amplitude\", value= -2500, max=np.inf, min=-np.inf, vary=True)\n",
  2850. "params.add(name=\"center\", value= 9.575, max=np.inf, min=-np.inf, vary=True)\n",
  2851. "params.add(name=\"sigma\", value= 0.2, max=np.inf, min= 0, vary=True)\n",
  2852. "params.add(name=\"offset\", value= 2500, max=np.inf, min=-np.inf, vary=True)\n",
  2853. "\n",
  2854. "fitResult_1 = fitAnalyser_1.fit(Ncount_mean_1, params, x=scanAxis[0]).load()\n",
  2855. "freqdata = np.linspace(9.555, 9.595, 500)\n",
  2856. "fitCurve_1 = fitAnalyser_1.eval(fitResult_1, x=freqdata, dask=\"parallelized\").load()\n",
  2857. "fitCurve_1 = fitCurve_1.assign_coords({'x':np.array(freqdata)})\n",
  2858. "\n",
  2859. "fig = plt.figure()\n",
  2860. "ax = fig.gca()\n",
  2861. "\n",
  2862. "Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
  2863. "fitCurve_1.plot.errorbar(ax=ax, fmt='--g')\n",
  2864. "plt.xlabel('Center Frequency (MHz)')\n",
  2865. "plt.ylabel('NCount')\n",
  2866. "#plt.xlim([2.7828, 2.81625])\n",
  2867. "plt.tight_layout()\n",
  2868. "plt.grid(visible=1)\n",
  2869. "plt.show()"
  2870. ]
  2871. },
  2872. {
  2873. "cell_type": "code",
  2874. "execution_count": null,
  2875. "metadata": {},
  2876. "outputs": [],
  2877. "source": [
  2878. "f_1 = fitAnalyser_1.get_fit_value(fitResult_1).center\n",
  2879. "df_1 = fitAnalyser_1.get_fit_std(fitResult_1).center\n",
  2880. "\n",
  2881. "print('f = %.5f \\u00B1 %.5f kHz'% tuple([np.abs(f_1)* 1e3,df_1* 1e3]))\n",
  2882. "\n",
  2883. "s_1 = fitAnalyser_1.get_fit_value(fitResult_1).sigma\n",
  2884. "ds_1 = fitAnalyser_1.get_fit_std(fitResult_1).sigma\n",
  2885. "\n",
  2886. "fwhm_1 = 2.3548200*s_1 * 1e3\n",
  2887. "dfwhm_1 = 2.3548200*ds_1 * 1e3\n",
  2888. "\n",
  2889. "print('fwhm = %.5f \\u00B1 %.5f kHz'% tuple([np.abs(fwhm_1),dfwhm_1]))"
  2890. ]
  2891. },
  2892. {
  2893. "cell_type": "code",
  2894. "execution_count": null,
  2895. "metadata": {},
  2896. "outputs": [],
  2897. "source": []
  2898. },
  2899. {
  2900. "cell_type": "code",
  2901. "execution_count": null,
  2902. "metadata": {},
  2903. "outputs": [],
  2904. "source": []
  2905. },
  2906. {
  2907. "cell_type": "code",
  2908. "execution_count": null,
  2909. "metadata": {},
  2910. "outputs": [],
  2911. "source": []
  2912. },
  2913. {
  2914. "cell_type": "code",
  2915. "execution_count": null,
  2916. "metadata": {},
  2917. "outputs": [],
  2918. "source": []
  2919. },
  2920. {
  2921. "cell_type": "code",
  2922. "execution_count": null,
  2923. "metadata": {},
  2924. "outputs": [],
  2925. "source": [
  2926. "f = [2798.24971, 3178.49790, 4275.39905, 5352.17283, 6637.80418, 8288.35264, 9573.59333]\n",
  2927. "df = [0.36873, 0.29413, 0.20667, 0.20818, 0.21978, 0.20285, 0.18495]\n",
  2928. "z_offset_current = [0.119, 0.140, 0.2, 0.259, 0.329, 0.419, 0.489]\n",
  2929. "\n",
  2930. "f_fit = f\n",
  2931. "df_fit = df\n",
  2932. "z_offset_current_fit = z_offset_current\n",
  2933. "\n",
  2934. "\n",
  2935. "x = np.array(z_offset_current_fit)\n",
  2936. "y = np.array(f_fit)\n",
  2937. "\n",
  2938. "# Degree of the fitting polynomial\n",
  2939. "deg = 1\n",
  2940. "# Parameters from the fit of the polynomial\n",
  2941. "p = np.polyfit(x, y, deg)\n",
  2942. "m = p[0] # Gradient\n",
  2943. "c = p[1] # y-intercept\n",
  2944. "\n",
  2945. "#print(f'The fitted straight line has equation y = {m:.1f}x {c:=+6.1f}')\n",
  2946. "\n",
  2947. "# Model the data using the parameters of the fitted straight line\n",
  2948. "y_model = np.polyval(p, x)\n",
  2949. "\n",
  2950. "# Create the linear (1 degree polynomial) model\n",
  2951. "model = np.poly1d(p)\n",
  2952. "# Fit the model\n",
  2953. "y_model = model(x)\n",
  2954. "\n",
  2955. "# Mean\n",
  2956. "y_bar = np.mean(y)\n",
  2957. "# Coefficient of determination, R²\n",
  2958. "R2 = np.sum((y_model - y_bar)**2) / np.sum((y - y_bar)**2)\n",
  2959. "\n",
  2960. "#print(f'R² = {R2:.2f}')\n",
  2961. "\n",
  2962. "fitted_SlopeInkHz = m\n",
  2963. "fitted_offsetInkHz = c\n",
  2964. "muB = 9.274e-24\n",
  2965. "hbar = 6.626e-34 / (2 * np.pi)\n",
  2966. "gJ = 1.24\n",
  2967. "Slope = (((2 * np.pi * fitted_SlopeInkHz * 1e3)*hbar) / (muB*gJ)) * 1e4\n",
  2968. "Offset = (((2 * np.pi * fitted_offsetInkHz * 1e3)*hbar) / (muB*gJ)) * 1e4\n",
  2969. "\n",
  2970. "def calib_fit(x, B):\n",
  2971. " alpha = ((2 * np.pi * fitted_SlopeInkHz * 1e3)*hbar) / (muB*gJ)\n",
  2972. " beta = ((2 * np.pi * fitted_offsetInkHz * 1e3)*hbar) / (muB*gJ)\n",
  2973. " delta_nu = ((muB * gJ) / hbar) * np.sqrt((B**2-beta**2) + ((alpha * x) + beta)**2)\n",
  2974. " return delta_nu / (2 * np.pi * 1e3)\n",
  2975. "\n",
  2976. "\n",
  2977. "popt, pcov = curve_fit(calib_fit, z_offset_current, f, np.array([0.1*1e-4]))\n",
  2978. "Boffset = popt[0] * 1e4\n",
  2979. "dBoffset = pcov[0][0]**0.5 * 1e4\n",
  2980. "\n",
  2981. "fig = plt.figure()\n",
  2982. "ax = fig.gca()\n",
  2983. "plt.clf\n",
  2984. "#plt.scatter(z_offset_current, f, c='gray', marker='o', edgecolors='k', s=30)\n",
  2985. "plt.errorbar(z_offset_current, f, yerr=df, fmt='o')\n",
  2986. "xvals = np.linspace(0, 0.5, 500)\n",
  2987. "plt.plot(np.array(xvals), p[1] + p[0] * np.array(xvals), label=f'Line Fit')\n",
  2988. "plt.plot(xvals, calib_fit(xvals, *popt), label=f'Curve Fit')\n",
  2989. "plt.text(0.25, 2200, f'Line Slope = {Slope:.3f} G/A', fontsize=12)\n",
  2990. "plt.text(0.25, 1500, f'Line Offset = {Offset:=.3f} G', fontsize=12)\n",
  2991. "plt.text(0.25, 800, f'Bo= {Boffset:=.3f} +/- {dBoffset:=.3f} G', fontsize=12)\n",
  2992. "plt.xlabel('Z Offset Coil Current (A)', fontsize=12)\n",
  2993. "plt.ylabel('Resonance Frequency (kHz)', fontsize=12)\n",
  2994. "plt.xticks(fontsize=12)\n",
  2995. "plt.yticks(fontsize=12)\n",
  2996. "plt.legend(fontsize=12)\n",
  2997. "#plt.xlim(-0.01, 0.04)\n",
  2998. "#plt.ylim(0, 2000)\n",
  2999. "plt.grid(visible=1)\n",
  3000. "plt.tight_layout()\n",
  3001. "plt.show()"
  3002. ]
  3003. },
  3004. {
  3005. "cell_type": "code",
  3006. "execution_count": null,
  3007. "metadata": {
  3008. "scrolled": false
  3009. },
  3010. "outputs": [],
  3011. "source": [
  3012. "l = list(np.arange(9.555, 9.595, 0.002))\n",
  3013. "# l = np.logspace(np.log10(250e-6), np.log10(500e-3), num=15)\n",
  3014. "\n",
  3015. "l = [round(item, 7) for item in l]\n",
  3016. "#random.shuffle(l)\n",
  3017. "\n",
  3018. "print(l)\n",
  3019. "print(len(l))\n",
  3020. "np.mean(l)"
  3021. ]
  3022. },
  3023. {
  3024. "cell_type": "code",
  3025. "execution_count": null,
  3026. "metadata": {},
  3027. "outputs": [],
  3028. "source": [
  3029. "pixel = 5.86e-6\n",
  3030. "M = 0.6827\n",
  3031. "F = (1/(0.3725*8.4743e-14)) * (pixel / M)**2\n",
  3032. "NCount = 85000\n",
  3033. "AtomNumber = NCount * F / 1e8\n",
  3034. "print(AtomNumber)\n"
  3035. ]
  3036. },
  3037. {
  3038. "cell_type": "code",
  3039. "execution_count": null,
  3040. "metadata": {},
  3041. "outputs": [],
  3042. "source": [
  3043. "muB = 9.274e-24\n",
  3044. "hbar = 6.626e-34 / (2 * np.pi)\n",
  3045. "gJ = 1.24\n",
  3046. "Delta = 2 * np.pi * 9573.59333 * 1e3\n",
  3047. "\n",
  3048. "Bz = (Delta*hbar) / (muB*gJ)\n",
  3049. "print(Bz * 1e4)"
  3050. ]
  3051. },
  3052. {
  3053. "attachments": {},
  3054. "cell_type": "markdown",
  3055. "metadata": {},
  3056. "source": [
  3057. "## ODT 1 Calibration"
  3058. ]
  3059. },
  3060. {
  3061. "cell_type": "code",
  3062. "execution_count": null,
  3063. "metadata": {},
  3064. "outputs": [],
  3065. "source": [
  3066. "v_high = 2.7\n",
  3067. "\"\"\"High Power\"\"\"\n",
  3068. "P_arm1_high = 5.776 * v_high - 0.683\n",
  3069. "\n",
  3070. "v_mid = 0.2076\n",
  3071. "\"\"\"Intermediate Power\"\"\"\n",
  3072. "P_arm1_mid = 5.815 * v_mid - 0.03651\n",
  3073. "\n",
  3074. "v_low = 0.0587\n",
  3075. "\"\"\"Low Power\"\"\"\n",
  3076. "P_arm1_low = 5271 * v_low - 27.5\n",
  3077. "\n",
  3078. "print(round(P_arm1_high, 3))\n",
  3079. "print(round(P_arm1_mid, 3))\n",
  3080. "print(round(P_arm1_low, 3))"
  3081. ]
  3082. },
  3083. {
  3084. "attachments": {},
  3085. "cell_type": "markdown",
  3086. "metadata": {},
  3087. "source": [
  3088. "## ODT 2 Power Calibration"
  3089. ]
  3090. },
  3091. {
  3092. "cell_type": "code",
  3093. "execution_count": null,
  3094. "metadata": {},
  3095. "outputs": [],
  3096. "source": [
  3097. "v = 0.7607\n",
  3098. "P_arm2 = 2.302 * v - 0.06452\n",
  3099. "print(round(P_arm2, 3))"
  3100. ]
  3101. }
  3102. ],
  3103. "metadata": {
  3104. "kernelspec": {
  3105. "display_name": "Python 3 (ipykernel)",
  3106. "language": "python",
  3107. "name": "python3"
  3108. },
  3109. "language_info": {
  3110. "codemirror_mode": {
  3111. "name": "ipython",
  3112. "version": 3
  3113. },
  3114. "file_extension": ".py",
  3115. "mimetype": "text/x-python",
  3116. "name": "python",
  3117. "nbconvert_exporter": "python",
  3118. "pygments_lexer": "ipython3",
  3119. "version": "3.9.12"
  3120. },
  3121. "vscode": {
  3122. "interpreter": {
  3123. "hash": "c05913ad4f24fdc6b2418069394dc5835b1981849b107c9ba6df693aafd66650"
  3124. }
  3125. }
  3126. },
  3127. "nbformat": 4,
  3128. "nbformat_minor": 2
  3129. }