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.

1582 lines
187 KiB

1 year ago
  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-23571205-fef2-11ed-8994-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;\">3caf8456</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-7358e8cb-f1c0-435a-b9a6-1ae89646703d</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:52558\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:52603\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:52607/status\" target=\"_blank\">http://127.0.0.1:52607/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:52561\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-_emdmb6_\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:52604\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:52606/status\" target=\"_blank\">http://127.0.0.1:52606/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:52562\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-ztl68fct\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:52590\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:52595/status\" target=\"_blank\">http://127.0.0.1:52595/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:52563\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-55i03qxs\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:52597\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:52599/status\" target=\"_blank\">http://127.0.0.1:52599/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:52564\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-a9s2v84x\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:52605\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:52610/status\" target=\"_blank\">http://127.0.0.1:52610/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:52565\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-jb353de7\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:52617\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:52618/status\" target=\"_blank\">http://127.0.0.1:52618/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:52566\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-g3juqn2t\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:52612\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:52613/status\" target=\"_blank\">http://127.0.0.1:52613/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:52567\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-xu67jkqc\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:52598\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:52601/status\" target=\"_blank\">http://127.0.0.1:52601/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:52568\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-kdvp5zu9\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:52558' 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. "## Set global path for experiment"
  563. ]
  564. },
  565. {
  566. "cell_type": "code",
  567. "execution_count": 3,
  568. "metadata": {},
  569. "outputs": [],
  570. "source": [
  571. "groupList = [\n",
  572. " \"images/MOT_3D_Camera/in_situ_absorption\",\n",
  573. " \"images/ODT_1_Axis_Camera/in_situ_absorption\",\n",
  574. " \"images/ODT_2_Axis_Camera/in_situ_absorption\",\n",
  575. "]\n",
  576. "\n",
  577. "dskey = {\n",
  578. " \"images/MOT_3D_Camera/in_situ_absorption\": \"camera_0\",\n",
  579. " \"images/ODT_1_Axis_Camera/in_situ_absorption\": \"camera_1\",\n",
  580. " \"images/ODT_2_Axis_Camera/in_situ_absorption\": \"camera_2\",\n",
  581. "}\n"
  582. ]
  583. },
  584. {
  585. "cell_type": "code",
  586. "execution_count": 4,
  587. "metadata": {},
  588. "outputs": [],
  589. "source": [
  590. "img_dir = '//DyLabNAS/Data/'\n",
  591. "SequenceName = \"Repetition_scan\" + \"/\"\n",
  592. "folderPath = img_dir + SequenceName + get_date()"
  593. ]
  594. },
  595. {
  596. "attachments": {},
  597. "cell_type": "markdown",
  598. "metadata": {},
  599. "source": [
  600. "# Repetition Scans"
  601. ]
  602. },
  603. {
  604. "attachments": {},
  605. "cell_type": "markdown",
  606. "metadata": {},
  607. "source": [
  608. "## scan MOT freq - Z Comp 0"
  609. ]
  610. },
  611. {
  612. "cell_type": "code",
  613. "execution_count": null,
  614. "metadata": {
  615. "scrolled": false
  616. },
  617. "outputs": [],
  618. "source": [
  619. "shotNum = \"0000\"\n",
  620. "filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
  621. "\n",
  622. "dataSetDict = {\n",
  623. " dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i])\n",
  624. " for i in range(len(groupList))\n",
  625. "}\n",
  626. "\n",
  627. "dataSet = dataSetDict[\"camera_1\"]\n",
  628. "\n",
  629. "print_scanAxis(dataSet)\n",
  630. "\n",
  631. "scanAxis = get_scanAxis(dataSet)\n",
  632. "\n",
  633. "dataSet = auto_rechunk(dataSet)\n",
  634. "\n",
  635. "dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
  636. "\n",
  637. "imageAnalyser.center = (310, 825)\n",
  638. "imageAnalyser.span = (550, 1200)\n",
  639. "imageAnalyser.fraction = (0.1, 0.1)\n",
  640. "\n",
  641. "dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
  642. "dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
  643. "\n",
  644. "Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
  645. "Ncount_mean = Ncount.mean(dim='runs')\n",
  646. "Ncount_std = Ncount.std(dim='runs')\n",
  647. "\n",
  648. "fig = plt.figure()\n",
  649. "ax = fig.gca()\n",
  650. "Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
  651. "plt.xlabel('MOT AOM Freq (MHz)')\n",
  652. "plt.ylabel('NCount')\n",
  653. "plt.tight_layout()\n",
  654. "plt.grid(visible=1)\n",
  655. "plt.show()"
  656. ]
  657. },
  658. {
  659. "attachments": {},
  660. "cell_type": "markdown",
  661. "metadata": {},
  662. "source": [
  663. "## scan Push freq"
  664. ]
  665. },
  666. {
  667. "cell_type": "code",
  668. "execution_count": null,
  669. "metadata": {},
  670. "outputs": [],
  671. "source": [
  672. "shotNum = \"0001\"\n",
  673. "filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
  674. "\n",
  675. "dataSetDict = {\n",
  676. " dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i])\n",
  677. " for i in range(len(groupList))\n",
  678. "}\n",
  679. "\n",
  680. "dataSet = dataSetDict[\"camera_1\"]\n",
  681. "\n",
  682. "print_scanAxis(dataSet)\n",
  683. "\n",
  684. "scanAxis = get_scanAxis(dataSet)\n",
  685. "\n",
  686. "dataSet = auto_rechunk(dataSet)\n",
  687. "\n",
  688. "dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
  689. "\n",
  690. "imageAnalyser.center = (310, 825)\n",
  691. "imageAnalyser.span = (550, 1200)\n",
  692. "imageAnalyser.fraction = (0.1, 0.1)\n",
  693. "\n",
  694. "dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
  695. "dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
  696. "\n",
  697. "Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
  698. "Ncount_mean = Ncount.mean(dim='runs')\n",
  699. "Ncount_std = Ncount.std(dim='runs')\n",
  700. "\n",
  701. "fig = plt.figure()\n",
  702. "ax = fig.gca()\n",
  703. "Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
  704. "plt.xlabel('Push AOM Freq (MHz)')\n",
  705. "plt.ylabel('NCount')\n",
  706. "plt.tight_layout()\n",
  707. "plt.grid(visible=1)\n",
  708. "plt.show()"
  709. ]
  710. },
  711. {
  712. "attachments": {},
  713. "cell_type": "markdown",
  714. "metadata": {},
  715. "source": [
  716. "## scan cMOT final Amp"
  717. ]
  718. },
  719. {
  720. "cell_type": "code",
  721. "execution_count": null,
  722. "metadata": {},
  723. "outputs": [],
  724. "source": [
  725. "shotNum = \"0003\"\n",
  726. "filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
  727. "\n",
  728. "dataSetDict = {\n",
  729. " dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i])\n",
  730. " for i in range(len(groupList))\n",
  731. "}\n",
  732. "\n",
  733. "dataSet = dataSetDict[\"camera_1\"]\n",
  734. "\n",
  735. "print_scanAxis(dataSet)\n",
  736. "\n",
  737. "scanAxis = get_scanAxis(dataSet)\n",
  738. "\n",
  739. "dataSet = auto_rechunk(dataSet)\n",
  740. "\n",
  741. "dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
  742. "\n",
  743. "imageAnalyser.center = (306, 874)\n",
  744. "imageAnalyser.span = (550, 500)\n",
  745. "imageAnalyser.fraction = (0.1, 0.1)\n",
  746. "\n",
  747. "dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
  748. "dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
  749. "\n",
  750. "Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
  751. "Ncount_mean = Ncount.mean(dim='runs')\n",
  752. "Ncount_std = Ncount.std(dim='runs')\n",
  753. "\n",
  754. "fig = plt.figure()\n",
  755. "ax = fig.gca()\n",
  756. "Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
  757. "plt.xlabel('cMOT final Amp (%)')\n",
  758. "plt.ylabel('NCount')\n",
  759. "#plt.ylim([0, 25000])\n",
  760. "plt.tight_layout()\n",
  761. "plt.grid(visible=1)\n",
  762. "plt.show()"
  763. ]
  764. },
  765. {
  766. "attachments": {},
  767. "cell_type": "markdown",
  768. "metadata": {},
  769. "source": [
  770. "## scan Z comp current"
  771. ]
  772. },
  773. {
  774. "cell_type": "code",
  775. "execution_count": null,
  776. "metadata": {},
  777. "outputs": [],
  778. "source": [
  779. "shotNum = \"0004\"\n",
  780. "filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
  781. "\n",
  782. "dataSetDict = {\n",
  783. " dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i])\n",
  784. " for i in range(len(groupList))\n",
  785. "}\n",
  786. "\n",
  787. "dataSet = dataSetDict[\"camera_1\"]\n",
  788. "\n",
  789. "print_scanAxis(dataSet)\n",
  790. "\n",
  791. "scanAxis = get_scanAxis(dataSet)\n",
  792. "\n",
  793. "dataSet = auto_rechunk(dataSet)\n",
  794. "\n",
  795. "dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
  796. "\n",
  797. "imageAnalyser.center = (310, 825)\n",
  798. "imageAnalyser.span = (550, 1200)\n",
  799. "imageAnalyser.fraction = (0.1, 0.1)\n",
  800. "\n",
  801. "dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
  802. "dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
  803. "\n",
  804. "Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
  805. "Ncount_mean = Ncount.mean(dim='runs')\n",
  806. "Ncount_std = Ncount.std(dim='runs')\n",
  807. "\n",
  808. "fig = plt.figure()\n",
  809. "ax = fig.gca()\n",
  810. "Ncount_mean.plot.errorbar(ax=ax, yerr = Ncount_std, fmt='ob')\n",
  811. "plt.xlabel('comp Z current (A)')\n",
  812. "plt.ylabel('NCount')\n",
  813. "plt.tight_layout()\n",
  814. "plt.grid(visible=1)\n",
  815. "plt.show()"
  816. ]
  817. },
  818. {
  819. "attachments": {},
  820. "cell_type": "markdown",
  821. "metadata": {},
  822. "source": [
  823. "# Evaporative Cooling"
  824. ]
  825. },
  826. {
  827. "cell_type": "code",
  828. "execution_count": 5,
  829. "metadata": {},
  830. "outputs": [],
  831. "source": [
  832. "img_dir = '//DyLabNAS/Data/'\n",
  833. "SequenceName = \"Evaporative_Cooling\" + \"/\"\n",
  834. "folderPath = img_dir + SequenceName + get_date()"
  835. ]
  836. },
  837. {
  838. "attachments": {},
  839. "cell_type": "markdown",
  840. "metadata": {},
  841. "source": [
  842. "# Check our BEC"
  843. ]
  844. },
  845. {
  846. "cell_type": "code",
  847. "execution_count": null,
  848. "metadata": {
  849. "scrolled": false
  850. },
  851. "outputs": [],
  852. "source": [
  853. "shotNum = \"0001\"\n",
  854. "filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
  855. "\n",
  856. "# datesetOfGlobal = xr.Dataset(\n",
  857. "# data_vars={}\n",
  858. "# )\n",
  859. "\n",
  860. "# datesetOfGlobal.attrs['scanAxis'] = ['sin_mod_freq']\n",
  861. "# datesetOfGlobal.attrs['sin_mod_freq'] = [40.0, 40.5, 41.0, 41.5, 42.0, 42.5, 43.0, 43.5, 44.0, 44.5, 45.0, 45.5, 46.0, 46.5, 47.0, 47.5, 48.0, 48.5, 49.0, 49.5, 50.0, 50.5, 51.0, 51.5, 52.0, 52.5, 53.0, 53.5, 54.0, 54.5, 55.0, 55.5, 56.0, 56.5, 57.0, 57.5, 58.0, 58.5, 59.0, 59.5, 60.0]\n",
  862. "dataSetDict = {\n",
  863. " dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i], excludeAxis = ['sweep_start_freq', 'sweep_stop_freq'])\n",
  864. " for i in [0]\n",
  865. "}\n",
  866. "\n",
  867. "dataSet = dataSetDict[\"camera_0\"]\n",
  868. "\n",
  869. "print_scanAxis(dataSet)\n",
  870. "\n",
  871. "scanAxis = get_scanAxis(dataSet)\n",
  872. "\n",
  873. "dataSet = auto_rechunk(dataSet)\n",
  874. "\n",
  875. "dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
  876. "\n",
  877. "imageAnalyser.center = (884, 953)\n",
  878. "imageAnalyser.span = (100, 100)\n",
  879. "imageAnalyser.fraction = (0.1, 0.1)\n",
  880. "\n",
  881. "dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
  882. "dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
  883. "\n",
  884. "Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
  885. "Ncount_mean = Ncount# .mean(dim='runs')\n",
  886. "Ncount_std = Ncount# .std(dim='runs')\n",
  887. "\n",
  888. "fig = plt.figure()\n",
  889. "ax = fig.gca()\n",
  890. "\n",
  891. "Ncount_mean.plot.errorbar(ax=ax, yerr = None, fmt='ob')\n",
  892. "\n",
  893. "plt.ylabel('NCount')\n",
  894. "plt.tight_layout()\n",
  895. "#plt.ylim([0, 500])\n",
  896. "plt.grid(visible=1)\n",
  897. "plt.show()"
  898. ]
  899. },
  900. {
  901. "cell_type": "code",
  902. "execution_count": null,
  903. "metadata": {},
  904. "outputs": [],
  905. "source": [
  906. "dataSet_cropOD.plot.pcolormesh(cmap='jet', vmin=0, col=scanAxis[0], row=scanAxis[1])\n",
  907. "\n",
  908. "plt.show()"
  909. ]
  910. },
  911. {
  912. "cell_type": "code",
  913. "execution_count": null,
  914. "metadata": {
  915. "scrolled": false
  916. },
  917. "outputs": [],
  918. "source": [
  919. "fitModel = DensityProfileBEC2dModel()\n",
  920. "fitAnalyser = FitAnalyser(fitModel, fitDim=2)\n",
  921. "params = fitAnalyser.guess(dataSet_cropOD, guess_kwargs=dict(pureBECThreshold=0.3), dask=\"parallelized\")\n",
  922. "# params = fitAnalyser_1.fitModel.make_params()\n",
  923. "# params.add(name=\"amplitude\", value= -4000, max=np.inf, min=-np.inf, vary=True)\n",
  924. "# params.add(name=\"center\", value= 0.435, max=np.inf, min=-np.inf, vary=True)\n",
  925. "# params.add(name=\"sigma\", value= 0.01, max=np.inf, min= 0, vary=True)\n",
  926. "# params.add(name=\"offset\", value= 1000, max=np.inf, min=-np.inf, vary=True)\n",
  927. "\n",
  928. "fitResult = fitAnalyser.fit(dataSet_cropOD, params).load()\n",
  929. "\n",
  930. "val = fitAnalyser.get_fit_value(fitResult)\n",
  931. "std = fitAnalyser.get_fit_std(fitResult)\n",
  932. "\n",
  933. "fitCurve = fitAnalyser.eval(fitResult, x=np.arange(100), y=np.arange(100), dask=\"parallelized\").load()\n",
  934. "\n",
  935. "fitCurve.plot.pcolormesh(cmap='jet', vmin=0, col=scanAxis[0], row=scanAxis[1])"
  936. ]
  937. },
  938. {
  939. "cell_type": "code",
  940. "execution_count": null,
  941. "metadata": {},
  942. "outputs": [],
  943. "source": [
  944. "val"
  945. ]
  946. },
  947. {
  948. "attachments": {},
  949. "cell_type": "markdown",
  950. "metadata": {},
  951. "source": [
  952. "# Measure trap frequency at the end of evap. 3, blink off time = 275 µs"
  953. ]
  954. },
  955. {
  956. "cell_type": "code",
  957. "execution_count": 48,
  958. "metadata": {
  959. "scrolled": false
  960. },
  961. "outputs": [
  962. {
  963. "name": "stdout",
  964. "output_type": "stream",
  965. "text": [
  966. "The detected scaning axes and values are: \n",
  967. "\n",
  968. "{'blink_on_time': array([0.005 , 0.0057, 0.0064, 0.0071, 0.0078, 0.0085, 0.0092, 0.0099,\n",
  969. " 0.0106, 0.0113, 0.012 , 0.0127, 0.0134, 0.0141, 0.0148, 0.0155,\n",
  970. " 0.0162, 0.0169, 0.0176, 0.0183, 0.019 , 0.0197, 0.0204, 0.0211,\n",
  971. " 0.0218, 0.0225, 0.0232, 0.0239, 0.0246, 0.0253, 0.026 , 0.0267,\n",
  972. " 0.0274, 0.0281, 0.0288, 0.0295, 0.0302, 0.0309, 0.0316, 0.0323,\n",
  973. " 0.033 , 0.0337, 0.0344, 0.0351, 0.0358, 0.0365, 0.0372, 0.0379,\n",
  974. " 0.0386, 0.0393, 0.04 ]), 'runs': array([0., 1., 2.])}\n"
  975. ]
  976. },
  977. {
  978. "data": {
  979. "image/png": "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
  980. "text/plain": [
  981. "<Figure size 640x480 with 1 Axes>"
  982. ]
  983. },
  984. "metadata": {},
  985. "output_type": "display_data"
  986. }
  987. ],
  988. "source": [
  989. "shotNum = \"0015\"\n",
  990. "filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
  991. "\n",
  992. "dataSetDict = {\n",
  993. " dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i], maxFileNum=153, excludeAxis = ['sweep_start_freq', 'sweep_stop_freq'])\n",
  994. " for i in [0]\n",
  995. "}\n",
  996. "\n",
  997. "dataSet = dataSetDict[\"camera_0\"]\n",
  998. "\n",
  999. "print_scanAxis(dataSet)\n",
  1000. "\n",
  1001. "scanAxis = get_scanAxis(dataSet)\n",
  1002. "\n",
  1003. "dataSet = auto_rechunk(dataSet)\n",
  1004. "\n",
  1005. "dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
  1006. "\n",
  1007. "imageAnalyser.center = (180, 958)\n",
  1008. "imageAnalyser.span = (100, 100)\n",
  1009. "imageAnalyser.fraction = (0.1, 0.1)\n",
  1010. "\n",
  1011. "dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
  1012. "dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
  1013. "\n",
  1014. "Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
  1015. "Ncount_mean = Ncount.mean(dim='runs')\n",
  1016. "Ncount_std = Ncount.std(dim='runs')\n",
  1017. "\n",
  1018. "fig = plt.figure()\n",
  1019. "ax = fig.gca()\n",
  1020. "\n",
  1021. "Ncount_mean.plot.errorbar(ax=ax, yerr = None, fmt='ob')\n",
  1022. "\n",
  1023. "plt.ylabel('NCount')\n",
  1024. "plt.tight_layout()\n",
  1025. "#plt.ylim([0, 500])\n",
  1026. "plt.grid(visible=1)\n",
  1027. "plt.show()"
  1028. ]
  1029. },
  1030. {
  1031. "cell_type": "code",
  1032. "execution_count": null,
  1033. "metadata": {
  1034. "scrolled": false
  1035. },
  1036. "outputs": [],
  1037. "source": [
  1038. "dataSet_cropOD.plot.pcolormesh(cmap='jet', vmin=0, col=scanAxis[0], row=scanAxis[1])\n",
  1039. "\n",
  1040. "plt.show()"
  1041. ]
  1042. },
  1043. {
  1044. "cell_type": "code",
  1045. "execution_count": 49,
  1046. "metadata": {
  1047. "scrolled": false
  1048. },
  1049. "outputs": [],
  1050. "source": [
  1051. "fitAnalyser = FitAnalyser(\"Gaussian-2D\", fitDim=2)\n",
  1052. "params = fitAnalyser.guess(dataSet_cropOD, dask=\"parallelized\")\n",
  1053. "# params = fitAnalyser_1.fitModel.make_params()\n",
  1054. "# params.add(name=\"amplitude\", value= -4000, max=np.inf, min=-np.inf, vary=True)\n",
  1055. "# params.add(name=\"center\", value= 0.435, max=np.inf, min=-np.inf, vary=True)\n",
  1056. "# params.add(name=\"sigma\", value= 0.01, max=np.inf, min= 0, vary=True)\n",
  1057. "# params.add(name=\"offset\", value= 1000, max=np.inf, min=-np.inf, vary=True)\n",
  1058. "\n",
  1059. "fitResult = fitAnalyser.fit(dataSet_cropOD, params).load()\n",
  1060. "\n",
  1061. "val = fitAnalyser.get_fit_value(fitResult)\n",
  1062. "std = fitAnalyser.get_fit_std(fitResult)\n",
  1063. "\n",
  1064. "fitCurve = fitAnalyser.eval(fitResult, x=np.arange(100), y=np.arange(100), dask=\"parallelized\").load()\n",
  1065. "\n",
  1066. "# fitCurve.plot.pcolormesh(cmap='jet', vmin=0, col=scanAxis[0], row=scanAxis[1])"
  1067. ]
  1068. },
  1069. {
  1070. "cell_type": "code",
  1071. "execution_count": 50,
  1072. "metadata": {},
  1073. "outputs": [
  1074. {
  1075. "data": {
  1076. "image/png": "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
  1077. "text/plain": [
  1078. "<Figure size 640x480 with 1 Axes>"
  1079. ]
  1080. },
  1081. "metadata": {},
  1082. "output_type": "display_data"
  1083. }
  1084. ],
  1085. "source": [
  1086. "dataKey = 'sigmax'\n",
  1087. "# dataKey = 'centerx'\n",
  1088. "# dataKey = 'sigmay'\n",
  1089. "# dataKey = 'centery'\n",
  1090. "\n",
  1091. "val_mean = val[dataKey].mean(dim='runs')\n",
  1092. "std_mean = val[dataKey].std(dim='runs')\n",
  1093. "\n",
  1094. "fig = plt.figure()\n",
  1095. "ax = fig.gca()\n",
  1096. "\n",
  1097. "val_mean.plot.errorbar(ax=ax, yerr=std_mean, fmt='--ob')\n",
  1098. "\n",
  1099. "plt.grid()\n",
  1100. "plt.show()"
  1101. ]
  1102. },
  1103. {
  1104. "cell_type": "code",
  1105. "execution_count": 51,
  1106. "metadata": {},
  1107. "outputs": [],
  1108. "source": [
  1109. "def dampingOscillation(x, center=0, amplitude=1.0, frequency=1.0, decay=1.0, slope=1.0, intercept=0.0):\n",
  1110. " return amplitude * np.exp(-decay*x)*np.sin(2*np.pi*frequency*(x-center)) + (slope * x + intercept)\n",
  1111. "\n",
  1112. "fitModel = NewFitModel(dampingOscillation)\n",
  1113. "\n",
  1114. "fitAnalyser = FitAnalyser(fitModel, fitDim=1)\n",
  1115. "\n",
  1116. "params = fitAnalyser.fitModel.make_params()\n",
  1117. "params.add(name=\"center\", value= 0, max=np.inf, min=-np.inf, vary=True)\n",
  1118. "params.add(name=\"amplitude\", value= 1, max=np.inf, min=-np.inf, vary=True)\n",
  1119. "params.add(name=\"frequency\", value= 260, max=np.inf, min=-np.inf, vary=True)\n",
  1120. "params.add(name=\"decay\", value= 0.1, max=np.inf, min=-np.inf, vary=True)\n",
  1121. "params.add(name=\"slope\", value= 30, max=np.inf, min=-np.inf, vary=True)\n",
  1122. "params.add(name=\"intercept\", value= 5.5, max=np.inf, min=-np.inf, vary=True)\n",
  1123. "\n",
  1124. "fitResult = fitAnalyser.fit(val_mean, params, x=scanAxis[0]).load()\n",
  1125. "\n",
  1126. "x = np.linspace(val_mean[scanAxis[0]][0], val_mean[scanAxis[0]][-1], 500)\n",
  1127. "fitCurve = fitAnalyser.eval(fitResult, x=x, dask=\"parallelized\").load()"
  1128. ]
  1129. },
  1130. {
  1131. "cell_type": "code",
  1132. "execution_count": 52,
  1133. "metadata": {},
  1134. "outputs": [
  1135. {
  1136. "data": {
  1137. "image/png": "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
  1138. "text/plain": [
  1139. "<Figure size 640x480 with 1 Axes>"
  1140. ]
  1141. },
  1142. "metadata": {},
  1143. "output_type": "display_data"
  1144. },
  1145. {
  1146. "name": "stdout",
  1147. "output_type": "stream",
  1148. "text": [
  1149. "f_y = 126.5119 ± 0.7136 kHz\n"
  1150. ]
  1151. }
  1152. ],
  1153. "source": [
  1154. "fig = plt.figure()\n",
  1155. "ax = fig.gca()\n",
  1156. "\n",
  1157. "val_mean.plot.errorbar(ax=ax, yerr=std_mean, fmt='or')\n",
  1158. "fitCurve.plot.errorbar(ax=ax, yerr=None, fmt='--g')\n",
  1159. "\n",
  1160. "plt.grid()\n",
  1161. "\n",
  1162. "plt.xlabel('hold time after switch on the trap (s)')\n",
  1163. "plt.ylabel('y center (pixels)')\n",
  1164. "\n",
  1165. "plt.show()\n",
  1166. "\n",
  1167. "val = fitAnalyser.get_fit_full_result(fitResult)\n",
  1168. "f = val.frequency.item() / 2\n",
  1169. "\n",
  1170. "print('f_y = %.4f \\u00B1 %.4f kHz'% tuple([f.n,f.s]))"
  1171. ]
  1172. },
  1173. {
  1174. "cell_type": "code",
  1175. "execution_count": null,
  1176. "metadata": {},
  1177. "outputs": [],
  1178. "source": [
  1179. "from lmfit.models import LinearModel\n",
  1180. "from Analyser.FitAnalyser import DampingOscillationModel\n",
  1181. "\n",
  1182. "fitModel = LinearModel() * DampingOscillationModel()\n",
  1183. "\n",
  1184. "fitAnalyser = FitAnalyser(fitModel, fitDim=1)\n",
  1185. "\n",
  1186. "params = fitAnalyser.fitModel.make_params()\n",
  1187. "params.add(name=\"slope\", value= 30, max=np.inf, min=-np.inf, vary=True)\n",
  1188. "params.add(name=\"intercept\", value= 5.5, max=np.inf, min=-np.inf, vary=True)\n",
  1189. "params.add(name=\"center\", value= 0, max=np.inf, min=-np.inf, vary=True)\n",
  1190. "params.add(name=\"amplitude\", value= 1, max=np.inf, min=-np.inf, vary=True)\n",
  1191. "params.add(name=\"frequency\", value= 260, max=np.inf, min=-np.inf, vary=True)\n",
  1192. "params.add(name=\"decay\", value= 0.1, max=np.inf, min=-np.inf, vary=True)\n",
  1193. "params.add(name=\"offset\", value= 0, max=np.inf, min=-np.inf, vary=False)\n",
  1194. "\n",
  1195. "fitResult = fitAnalyser.fit(val_mean, params, x=scanAxis[0]).load()\n",
  1196. "\n",
  1197. "fitCurve = fitAnalyser.eval(fitResult, x=np.arange(100), y=np.arange(100), dask=\"parallelized\").load()\n",
  1198. "\n",
  1199. "# fitCurve.plot.pcolormesh(cmap='jet', vmin=0, col=scanAxis[0], row=scanAxis[1])"
  1200. ]
  1201. },
  1202. {
  1203. "cell_type": "code",
  1204. "execution_count": null,
  1205. "metadata": {},
  1206. "outputs": [],
  1207. "source": [
  1208. "val_mean = val[dataKey].mean(dim='runs')\n",
  1209. "std_mean = val[dataKey].std(dim='runs')\n",
  1210. "val"
  1211. ]
  1212. },
  1213. {
  1214. "cell_type": "code",
  1215. "execution_count": null,
  1216. "metadata": {
  1217. "scrolled": false
  1218. },
  1219. "outputs": [],
  1220. "source": [
  1221. "def damp_osci(t, t0, A, B, nu, gamma):\n",
  1222. " return A * np.exp(-gamma*t)*np.sin(2*np.pi*nu*(t-t0)) + B\n",
  1223. "\n",
  1224. "fitted_qtys_1 = val_mean.to_numpy()\n",
  1225. "fitted_qtys_err_1 = std_mean.to_numpy()\n",
  1226. "scan_para = dataSet_cropOD[scanAxis[0]].to_numpy()\n",
  1227. "\n",
  1228. "# fitted_qtys_1 = np.delete(fitted_qtys_1, 27)\n",
  1229. "# fitted_qtys_err_1 = np.delete(fitted_qtys_err_1, 27)\n",
  1230. "# scan_para = np.delete(scan_para, 27)\n",
  1231. "\n",
  1232. "plt.figure()\n",
  1233. "popt_x, pcov_x = curve_fit(damp_osci, scan_para, fitted_qtys_1, np.array([0, 7.5, 42.5, 1.3e2, 0.1]))\n",
  1234. "freqdata = np.linspace(0.005, 40e-3, 500)\n",
  1235. "plt.plot(freqdata, damp_osci(freqdata, *popt_x), 'g--',label='fit: t0=%5.3f, A=%5.3f, B=%5.3f, nu=%5.3f, Gamma=%5.3f' % tuple(popt_x))\n",
  1236. "plt.errorbar(scan_para, fitted_qtys_1, yerr=fitted_qtys_err_1, fmt='or')\n",
  1237. "plt.xlabel('hold time after switch on the trap (s)')\n",
  1238. "plt.ylabel('y center (pixels)')\n",
  1239. "plt.tight_layout()\n",
  1240. "plt.grid(visible=1)\n",
  1241. "#plt.ylim([0,750])\n",
  1242. "#plt.xlim([90, 121])\n",
  1243. "#plt.legend(prop={'size': 14})\n",
  1244. "plt.show()\n",
  1245. "\n",
  1246. "f_x = popt_x[3] / 1000\n",
  1247. "df_x = pcov_x[3][3]**0.5 / 1000\n",
  1248. "\n",
  1249. "print('f_y = %.4f \\u00B1 %.4f kHz'% tuple([np.abs(f_x),df_x]))"
  1250. ]
  1251. },
  1252. {
  1253. "attachments": {},
  1254. "cell_type": "markdown",
  1255. "metadata": {},
  1256. "source": [
  1257. "# Measure trap frequency at the end of evap. 3, blink off time = 250 µs"
  1258. ]
  1259. },
  1260. {
  1261. "cell_type": "code",
  1262. "execution_count": null,
  1263. "metadata": {
  1264. "scrolled": false
  1265. },
  1266. "outputs": [],
  1267. "source": [
  1268. "%matplotlib notebook\n",
  1269. "shotNum = \"0015\"\n",
  1270. "filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
  1271. "\n",
  1272. "dataSetDict = {\n",
  1273. " dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i], maxFileNum=102, excludeAxis = ['sweep_start_freq', 'sweep_stop_freq'])\n",
  1274. " for i in [0]\n",
  1275. "}\n",
  1276. "\n",
  1277. "dataSet = dataSetDict[\"camera_0\"]\n",
  1278. "\n",
  1279. "print_scanAxis(dataSet)\n",
  1280. "\n",
  1281. "scanAxis = get_scanAxis(dataSet)\n",
  1282. "\n",
  1283. "dataSet = auto_rechunk(dataSet)\n",
  1284. "\n",
  1285. "dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
  1286. "\n",
  1287. "imageAnalyser.center = (180, 958)\n",
  1288. "imageAnalyser.span = (100, 100)\n",
  1289. "imageAnalyser.fraction = (0.1, 0.1)\n",
  1290. "\n",
  1291. "dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
  1292. "dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
  1293. "\n",
  1294. "Ncount = imageAnalyser.get_Ncount(dataSet_cropOD)\n",
  1295. "Ncount_mean = Ncount.mean(dim='runs')\n",
  1296. "Ncount_std = Ncount.std(dim='runs')\n",
  1297. "\n",
  1298. "fig = plt.figure()\n",
  1299. "ax = fig.gca()\n",
  1300. "\n",
  1301. "Ncount_mean.plot.errorbar(ax=ax, yerr = None, fmt='ob')\n",
  1302. "\n",
  1303. "plt.ylabel('NCount')\n",
  1304. "plt.tight_layout()\n",
  1305. "#plt.ylim([0, 500])\n",
  1306. "plt.grid(visible=1)\n",
  1307. "plt.show()"
  1308. ]
  1309. },
  1310. {
  1311. "cell_type": "code",
  1312. "execution_count": null,
  1313. "metadata": {
  1314. "scrolled": false
  1315. },
  1316. "outputs": [],
  1317. "source": [
  1318. "dataSet_cropOD.plot.pcolormesh(cmap='jet', vmin=0, col=scanAxis[0], row=scanAxis[1])\n",
  1319. "\n",
  1320. "plt.show()"
  1321. ]
  1322. },
  1323. {
  1324. "cell_type": "code",
  1325. "execution_count": null,
  1326. "metadata": {
  1327. "scrolled": false
  1328. },
  1329. "outputs": [],
  1330. "source": [
  1331. "fitAnalyser = FitAnalyser(\"Gaussian-2D\", fitDim=2)\n",
  1332. "params = fitAnalyser.guess(dataSet_cropOD, dask=\"parallelized\")\n",
  1333. "# params = fitAnalyser_1.fitModel.make_params()\n",
  1334. "# params.add(name=\"amplitude\", value= -4000, max=np.inf, min=-np.inf, vary=True)\n",
  1335. "# params.add(name=\"center\", value= 0.435, max=np.inf, min=-np.inf, vary=True)\n",
  1336. "# params.add(name=\"sigma\", value= 0.01, max=np.inf, min= 0, vary=True)\n",
  1337. "# params.add(name=\"offset\", value= 1000, max=np.inf, min=-np.inf, vary=True)\n",
  1338. "\n",
  1339. "fitResult = fitAnalyser.fit(dataSet_cropOD, params).load()\n",
  1340. "\n",
  1341. "val = fitAnalyser.get_fit_value(fitResult)\n",
  1342. "std = fitAnalyser.get_fit_std(fitResult)\n",
  1343. "\n",
  1344. "fitCurve = fitAnalyser.eval(fitResult, x=np.arange(100), y=np.arange(100), dask=\"parallelized\").load()\n",
  1345. "\n",
  1346. "# fitCurve.plot.pcolormesh(cmap='jet', vmin=0, col=scanAxis[0], row=scanAxis[1])"
  1347. ]
  1348. },
  1349. {
  1350. "cell_type": "code",
  1351. "execution_count": null,
  1352. "metadata": {},
  1353. "outputs": [],
  1354. "source": [
  1355. "# dataKey = 'sigmax'\n",
  1356. "dataKey = 'centerx'\n",
  1357. "# dataKey = 'sigmay'\n",
  1358. "# dataKey = 'centery'\n",
  1359. "\n",
  1360. "val_mean = val[dataKey].mean(dim='runs')\n",
  1361. "std_mean = val[dataKey].std(dim='runs')\n",
  1362. "\n",
  1363. "fig = plt.figure()\n",
  1364. "ax = fig.gca()\n",
  1365. "\n",
  1366. "val_mean.plot.errorbar(yerr=std_mean, fmt='--ob')\n",
  1367. "\n",
  1368. "plt.grid()\n",
  1369. "plt.show()"
  1370. ]
  1371. },
  1372. {
  1373. "cell_type": "code",
  1374. "execution_count": null,
  1375. "metadata": {
  1376. "scrolled": false
  1377. },
  1378. "outputs": [],
  1379. "source": [
  1380. "def damp_osci(t, t0, A, B, nu, gamma):\n",
  1381. " return A * np.exp(-gamma*t)*np.sin(2*np.pi*nu*(t-t0)) + B\n",
  1382. "\n",
  1383. "fitted_qtys_1 = val_mean.to_numpy()\n",
  1384. "fitted_qtys_err_1 = std_mean.to_numpy()\n",
  1385. "scan_para = dataSet_cropOD[scanAxis[0]].to_numpy()\n",
  1386. "\n",
  1387. "# fitted_qtys_1 = np.delete(fitted_qtys_1, 27)\n",
  1388. "# fitted_qtys_err_1 = np.delete(fitted_qtys_err_1, 27)\n",
  1389. "# scan_para = np.delete(scan_para, 27)\n",
  1390. "\n",
  1391. "plt.figure()\n",
  1392. "popt_x, pcov_x = curve_fit(damp_osci, scan_para, fitted_qtys_1, np.array([0, 7.5, 42.5, 1.3e2, 0.1]))\n",
  1393. "freqdata = np.linspace(0.005, 40e-3, 500)\n",
  1394. "plt.plot(freqdata, damp_osci(freqdata, *popt_x), 'g--',label='fit: t0=%5.3f, A=%5.3f, B=%5.3f, nu=%5.3f, Gamma=%5.3f' % tuple(popt_x))\n",
  1395. "plt.errorbar(scan_para, fitted_qtys_1, yerr=fitted_qtys_err_1, fmt='or')\n",
  1396. "plt.xlabel('hold time after switch on the trap (s)')\n",
  1397. "plt.ylabel('y center (pixels)')\n",
  1398. "plt.tight_layout()\n",
  1399. "plt.grid(visible=1)\n",
  1400. "#plt.ylim([0,750])\n",
  1401. "#plt.xlim([90, 121])\n",
  1402. "#plt.legend(prop={'size': 14})\n",
  1403. "plt.show()\n",
  1404. "\n",
  1405. "f_x = popt_x[3] / 1000\n",
  1406. "df_x = pcov_x[3][3]**0.5 / 1000\n",
  1407. "\n",
  1408. "print('f_y = %.4f \\u00B1 %.4f kHz'% tuple([np.abs(f_x),df_x]))"
  1409. ]
  1410. },
  1411. {
  1412. "cell_type": "code",
  1413. "execution_count": null,
  1414. "metadata": {},
  1415. "outputs": [],
  1416. "source": []
  1417. },
  1418. {
  1419. "cell_type": "code",
  1420. "execution_count": null,
  1421. "metadata": {},
  1422. "outputs": [],
  1423. "source": []
  1424. },
  1425. {
  1426. "cell_type": "code",
  1427. "execution_count": null,
  1428. "metadata": {},
  1429. "outputs": [],
  1430. "source": []
  1431. },
  1432. {
  1433. "cell_type": "code",
  1434. "execution_count": null,
  1435. "metadata": {},
  1436. "outputs": [],
  1437. "source": []
  1438. },
  1439. {
  1440. "cell_type": "code",
  1441. "execution_count": null,
  1442. "metadata": {},
  1443. "outputs": [],
  1444. "source": []
  1445. },
  1446. {
  1447. "cell_type": "code",
  1448. "execution_count": null,
  1449. "metadata": {},
  1450. "outputs": [],
  1451. "source": []
  1452. },
  1453. {
  1454. "cell_type": "code",
  1455. "execution_count": null,
  1456. "metadata": {},
  1457. "outputs": [],
  1458. "source": [
  1459. "np.sqrt(0.091**2 + 0.334**2 + 0.447**2)"
  1460. ]
  1461. },
  1462. {
  1463. "cell_type": "code",
  1464. "execution_count": null,
  1465. "metadata": {},
  1466. "outputs": [],
  1467. "source": [
  1468. "muB = 9.274e-24\n",
  1469. "hbar = 6.626e-34 / (2 * np.pi)\n",
  1470. "gJ = 1.24\n",
  1471. "Delta = 2 * np.pi * 579.12 * 1e3\n",
  1472. "\n",
  1473. "Bz = (Delta*hbar) / (muB*gJ)\n",
  1474. "print(Bz * 1e4)"
  1475. ]
  1476. },
  1477. {
  1478. "cell_type": "code",
  1479. "execution_count": null,
  1480. "metadata": {},
  1481. "outputs": [],
  1482. "source": [
  1483. "(fitted_SlopeInkHz * 0.5) + fitted_offsetInkHz"
  1484. ]
  1485. },
  1486. {
  1487. "cell_type": "code",
  1488. "execution_count": null,
  1489. "metadata": {
  1490. "scrolled": false
  1491. },
  1492. "outputs": [],
  1493. "source": [
  1494. "l = list(np.arange(0.005, 0.04, 0.0007))\n",
  1495. "# l = np.logspace(np.log10(250e-6), np.log10(500e-3), num=15)\n",
  1496. "\n",
  1497. "l = [round(item, 7) for item in l]\n",
  1498. "#random.shuffle(l)\n",
  1499. "\n",
  1500. "print(l)\n",
  1501. "print(len(l))\n",
  1502. "np.mean(l)"
  1503. ]
  1504. },
  1505. {
  1506. "attachments": {},
  1507. "cell_type": "markdown",
  1508. "metadata": {},
  1509. "source": [
  1510. "## ODT 1 Calibration"
  1511. ]
  1512. },
  1513. {
  1514. "cell_type": "code",
  1515. "execution_count": null,
  1516. "metadata": {},
  1517. "outputs": [],
  1518. "source": [
  1519. "v_high = 2.7\n",
  1520. "\"\"\"High Power\"\"\"\n",
  1521. "P_arm1_high = 5.776 * v_high - 0.683\n",
  1522. "\n",
  1523. "v_mid = 0.2076\n",
  1524. "\"\"\"Intermediate Power\"\"\"\n",
  1525. "P_arm1_mid = 5.815 * v_mid - 0.03651\n",
  1526. "\n",
  1527. "v_low = 0.0587\n",
  1528. "\"\"\"Low Power\"\"\"\n",
  1529. "P_arm1_low = 5271 * v_low - 27.5\n",
  1530. "\n",
  1531. "print(round(P_arm1_high, 3))\n",
  1532. "print(round(P_arm1_mid, 3))\n",
  1533. "print(round(P_arm1_low, 3))"
  1534. ]
  1535. },
  1536. {
  1537. "attachments": {},
  1538. "cell_type": "markdown",
  1539. "metadata": {},
  1540. "source": [
  1541. "## ODT 2 Power Calibration"
  1542. ]
  1543. },
  1544. {
  1545. "cell_type": "code",
  1546. "execution_count": null,
  1547. "metadata": {},
  1548. "outputs": [],
  1549. "source": [
  1550. "v = 0.7607\n",
  1551. "P_arm2 = 2.302 * v - 0.06452\n",
  1552. "print(round(P_arm2, 3))"
  1553. ]
  1554. }
  1555. ],
  1556. "metadata": {
  1557. "kernelspec": {
  1558. "display_name": "Python 3 (ipykernel)",
  1559. "language": "python",
  1560. "name": "python3"
  1561. },
  1562. "language_info": {
  1563. "codemirror_mode": {
  1564. "name": "ipython",
  1565. "version": 3
  1566. },
  1567. "file_extension": ".py",
  1568. "mimetype": "text/x-python",
  1569. "name": "python",
  1570. "nbconvert_exporter": "python",
  1571. "pygments_lexer": "ipython3",
  1572. "version": "3.9.13"
  1573. },
  1574. "vscode": {
  1575. "interpreter": {
  1576. "hash": "c05913ad4f24fdc6b2418069394dc5835b1981849b107c9ba6df693aafd66650"
  1577. }
  1578. }
  1579. },
  1580. "nbformat": 4,
  1581. "nbformat_minor": 2
  1582. }