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.

3015 lines
2.5 MiB

1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
  1. {
  2. "cells": [
  3. {
  4. "cell_type": "code",
  5. "execution_count": 1,
  6. "metadata": {},
  7. "outputs": [],
  8. "source": [
  9. "from PyQt5.QtCore import (Qt, pyqtSignal)"
  10. ]
  11. },
  12. {
  13. "cell_type": "code",
  14. "execution_count": 1,
  15. "metadata": {},
  16. "outputs": [],
  17. "source": [
  18. "import pymongo\n",
  19. "import xarray_mongodb\n",
  20. "import bson\n",
  21. "import datetime\n",
  22. "\n",
  23. "# datetime.datetime.utcnow()"
  24. ]
  25. },
  26. {
  27. "cell_type": "code",
  28. "execution_count": 2,
  29. "metadata": {},
  30. "outputs": [],
  31. "source": [
  32. "mongoClient = pymongo.MongoClient('mongodb://control:DyLab2021@127.0.0.1:27017/?authMechanism=DEFAULT')\n",
  33. "mongoDB = mongoClient.testDB\n",
  34. "mongoCollection = mongoDB.testCollection"
  35. ]
  36. },
  37. {
  38. "cell_type": "code",
  39. "execution_count": 3,
  40. "metadata": {},
  41. "outputs": [],
  42. "source": [
  43. "# mongoClient.admin.command(\n",
  44. "# 'createUser', 'control', \n",
  45. "# pwd='DyLab2021',\n",
  46. "# roles=[{'role': 'readWriteAnyDatabase', 'db': 'admin'}]\n",
  47. "# )"
  48. ]
  49. },
  50. {
  51. "cell_type": "code",
  52. "execution_count": 4,
  53. "metadata": {},
  54. "outputs": [],
  55. "source": [
  56. "# mongoClient.admin.command(\n",
  57. "# 'dropUser', 'contorl'\n",
  58. "# )"
  59. ]
  60. },
  61. {
  62. "cell_type": "code",
  63. "execution_count": 5,
  64. "metadata": {},
  65. "outputs": [],
  66. "source": [
  67. "# mongoClient.admin.command('usersInfo')"
  68. ]
  69. },
  70. {
  71. "cell_type": "code",
  72. "execution_count": 6,
  73. "metadata": {},
  74. "outputs": [
  75. {
  76. "name": "stdout",
  77. "output_type": "stream",
  78. "text": [
  79. "Task executing\n",
  80. "Task2 executing \n",
  81. "\n",
  82. "\n",
  83. "Task2 done\n",
  84. "\n",
  85. "Task done\n",
  86. "\n"
  87. ]
  88. }
  89. ],
  90. "source": [
  91. "from time import sleep\n",
  92. "from multiprocessing.pool import ThreadPool\n",
  93. " \n",
  94. "# task executed in a worker thread\n",
  95. "def task():\n",
  96. " # report a message\n",
  97. " print(f'Task executing\\n')\n",
  98. " # block for a moment\n",
  99. " sleep(1)\n",
  100. " # report a message\n",
  101. " print(f'Task done\\n')\n",
  102. " \n",
  103. "def task2():\n",
  104. " # report a message\n",
  105. " print(f'Task2 executing \\n')\n",
  106. " # block for a moment\n",
  107. " sleep(1)\n",
  108. " # report a message\n",
  109. " print(f'Task2 done\\n')\n",
  110. " \n",
  111. "# protect the entry point\n",
  112. "if __name__ == '__main__':\n",
  113. " # create and configure the thread pool\n",
  114. " pool = ThreadPool()\n",
  115. " # issue tasks to the thread pool\n",
  116. " pool.apply_async(task)\n",
  117. " pool.apply_async(task2)\n",
  118. " # close the thread pool\n",
  119. " pool.close()\n",
  120. " # wait for all tasks to finish\n",
  121. " pool.join()"
  122. ]
  123. },
  124. {
  125. "attachments": {},
  126. "cell_type": "markdown",
  127. "metadata": {},
  128. "source": [
  129. "# Import supporting package"
  130. ]
  131. },
  132. {
  133. "cell_type": "code",
  134. "execution_count": 7,
  135. "metadata": {},
  136. "outputs": [],
  137. "source": [
  138. "import xarray as xr\n",
  139. "import pandas as pd\n",
  140. "import numpy as np\n",
  141. "import copy\n",
  142. "\n",
  143. "import glob\n",
  144. "\n",
  145. "import xrft\n",
  146. "import finufft\n",
  147. "\n",
  148. "from uncertainties import ufloat\n",
  149. "from uncertainties import unumpy as unp\n",
  150. "from uncertainties import umath\n",
  151. "\n",
  152. "from datetime import datetime\n",
  153. "\n",
  154. "import matplotlib.pyplot as plt\n",
  155. "plt.rcParams['font.size'] = 18\n",
  156. "\n",
  157. "from DataContainer.ReadData import read_hdf5_file, read_hdf5_global, read_hdf5_run_time, read_csv_file\n",
  158. "from Analyser.ImagingAnalyser import ImageAnalyser\n",
  159. "from Analyser.FitAnalyser import FitAnalyser\n",
  160. "from Analyser.FitAnalyser import ThomasFermi2dModel, DensityProfileBEC2dModel, Polylog22dModel\n",
  161. "from Analyser.FFTAnalyser import fft, ifft, fft_nutou\n",
  162. "from ToolFunction.ToolFunction import *\n",
  163. "\n",
  164. "from ToolFunction.HomeMadeXarrayFunction import errorbar, dataarray_plot_errorbar\n",
  165. "xr.plot.dataarray_plot.errorbar = errorbar\n",
  166. "xr.plot.accessor.DataArrayPlotAccessor.errorbar = dataarray_plot_errorbar\n",
  167. "\n",
  168. "imageAnalyser = ImageAnalyser()"
  169. ]
  170. },
  171. {
  172. "attachments": {},
  173. "cell_type": "markdown",
  174. "metadata": {},
  175. "source": [
  176. "# Import supporting package"
  177. ]
  178. },
  179. {
  180. "cell_type": "code",
  181. "execution_count": 8,
  182. "metadata": {},
  183. "outputs": [],
  184. "source": [
  185. "import xarray as xr\n",
  186. "import numpy as np\n",
  187. "\n",
  188. "from uncertainties import ufloat\n",
  189. "from uncertainties import unumpy as unp\n",
  190. "from uncertainties import umath\n",
  191. "\n",
  192. "import matplotlib.pyplot as plt\n",
  193. "\n",
  194. "from DataContainer.ReadData import read_hdf5_file\n",
  195. "from Analyser.ImagingAnalyser import ImageAnalyser\n",
  196. "from Analyser.FitAnalyser import FitAnalyser\n",
  197. "from Analyser.FitAnalyser import ThomasFermi2dModel, DensityProfileBEC2dModel, Polylog22dModel\n",
  198. "from Analyser.FitAnalyser import NewFitModel\n",
  199. "from ToolFunction.ToolFunction import *\n",
  200. "\n",
  201. "from ToolFunction.HomeMadeXarrayFunction import errorbar, dataarray_plot_errorbar\n",
  202. "xr.plot.dataarray_plot.errorbar = errorbar\n",
  203. "xr.plot.accessor.DataArrayPlotAccessor.errorbar = dataarray_plot_errorbar\n",
  204. "\n",
  205. "imageAnalyser = ImageAnalyser()"
  206. ]
  207. },
  208. {
  209. "cell_type": "code",
  210. "execution_count": 9,
  211. "metadata": {},
  212. "outputs": [
  213. {
  214. "name": "stdout",
  215. "output_type": "stream",
  216. "text": [
  217. "1738.8478693742436\n"
  218. ]
  219. }
  220. ],
  221. "source": [
  222. "sigma = 8.4743e-14 * 0.5\n",
  223. "M = 0.6827\n",
  224. "print(1/sigma*5.86e-6**2 / M**2)"
  225. ]
  226. },
  227. {
  228. "cell_type": "code",
  229. "execution_count": 10,
  230. "metadata": {},
  231. "outputs": [
  232. {
  233. "data": {
  234. "text/plain": [
  235. "8.583565255602754e-06"
  236. ]
  237. },
  238. "execution_count": 10,
  239. "metadata": {},
  240. "output_type": "execute_result"
  241. }
  242. ],
  243. "source": [
  244. "5.86e-6/M"
  245. ]
  246. },
  247. {
  248. "attachments": {},
  249. "cell_type": "markdown",
  250. "metadata": {},
  251. "source": [
  252. "## Start a client for parallel computing"
  253. ]
  254. },
  255. {
  256. "cell_type": "code",
  257. "execution_count": 11,
  258. "metadata": {},
  259. "outputs": [
  260. {
  261. "data": {
  262. "text/html": [
  263. "<div>\n",
  264. " <div style=\"width: 24px; height: 24px; background-color: #e1e1e1; border: 3px solid #9D9D9D; border-radius: 5px; position: absolute;\"> </div>\n",
  265. " <div style=\"margin-left: 48px;\">\n",
  266. " <h3 style=\"margin-bottom: 0px;\">Client</h3>\n",
  267. " <p style=\"color: #9D9D9D; margin-bottom: 0px;\">Client-e928dd09-0a9f-11ee-b50c-80e82ce2fa8e</p>\n",
  268. " <table style=\"width: 100%; text-align: left;\">\n",
  269. "\n",
  270. " <tr>\n",
  271. " \n",
  272. " <td style=\"text-align: left;\"><strong>Connection method:</strong> Cluster object</td>\n",
  273. " <td style=\"text-align: left;\"><strong>Cluster type:</strong> distributed.LocalCluster</td>\n",
  274. " \n",
  275. " </tr>\n",
  276. "\n",
  277. " \n",
  278. " <tr>\n",
  279. " <td style=\"text-align: left;\">\n",
  280. " <strong>Dashboard: </strong> <a href=\"http://127.0.0.1:8787/status\" target=\"_blank\">http://127.0.0.1:8787/status</a>\n",
  281. " </td>\n",
  282. " <td style=\"text-align: left;\"></td>\n",
  283. " </tr>\n",
  284. " \n",
  285. "\n",
  286. " </table>\n",
  287. "\n",
  288. " \n",
  289. "\n",
  290. " \n",
  291. " <details>\n",
  292. " <summary style=\"margin-bottom: 20px;\"><h3 style=\"display: inline;\">Cluster Info</h3></summary>\n",
  293. " <div class=\"jp-RenderedHTMLCommon jp-RenderedHTML jp-mod-trusted jp-OutputArea-output\">\n",
  294. " <div style=\"width: 24px; height: 24px; background-color: #e1e1e1; border: 3px solid #9D9D9D; border-radius: 5px; position: absolute;\">\n",
  295. " </div>\n",
  296. " <div style=\"margin-left: 48px;\">\n",
  297. " <h3 style=\"margin-bottom: 0px; margin-top: 0px;\">LocalCluster</h3>\n",
  298. " <p style=\"color: #9D9D9D; margin-bottom: 0px;\">f62d3f1c</p>\n",
  299. " <table style=\"width: 100%; text-align: left;\">\n",
  300. " <tr>\n",
  301. " <td style=\"text-align: left;\">\n",
  302. " <strong>Dashboard:</strong> <a href=\"http://127.0.0.1:8787/status\" target=\"_blank\">http://127.0.0.1:8787/status</a>\n",
  303. " </td>\n",
  304. " <td style=\"text-align: left;\">\n",
  305. " <strong>Workers:</strong> 6\n",
  306. " </td>\n",
  307. " </tr>\n",
  308. " <tr>\n",
  309. " <td style=\"text-align: left;\">\n",
  310. " <strong>Total threads:</strong> 60\n",
  311. " </td>\n",
  312. " <td style=\"text-align: left;\">\n",
  313. " <strong>Total memory:</strong> 55.88 GiB\n",
  314. " </td>\n",
  315. " </tr>\n",
  316. " \n",
  317. " <tr>\n",
  318. " <td style=\"text-align: left;\"><strong>Status:</strong> running</td>\n",
  319. " <td style=\"text-align: left;\"><strong>Using processes:</strong> True</td>\n",
  320. "</tr>\n",
  321. "\n",
  322. " \n",
  323. " </table>\n",
  324. "\n",
  325. " <details>\n",
  326. " <summary style=\"margin-bottom: 20px;\">\n",
  327. " <h3 style=\"display: inline;\">Scheduler Info</h3>\n",
  328. " </summary>\n",
  329. "\n",
  330. " <div style=\"\">\n",
  331. " <div>\n",
  332. " <div style=\"width: 24px; height: 24px; background-color: #FFF7E5; border: 3px solid #FF6132; border-radius: 5px; position: absolute;\"> </div>\n",
  333. " <div style=\"margin-left: 48px;\">\n",
  334. " <h3 style=\"margin-bottom: 0px;\">Scheduler</h3>\n",
  335. " <p style=\"color: #9D9D9D; margin-bottom: 0px;\">Scheduler-2b02de43-b3ad-400f-ae4c-0914b85d2b71</p>\n",
  336. " <table style=\"width: 100%; text-align: left;\">\n",
  337. " <tr>\n",
  338. " <td style=\"text-align: left;\">\n",
  339. " <strong>Comm:</strong> tcp://127.0.0.1:62759\n",
  340. " </td>\n",
  341. " <td style=\"text-align: left;\">\n",
  342. " <strong>Workers:</strong> 6\n",
  343. " </td>\n",
  344. " </tr>\n",
  345. " <tr>\n",
  346. " <td style=\"text-align: left;\">\n",
  347. " <strong>Dashboard:</strong> <a href=\"http://127.0.0.1:8787/status\" target=\"_blank\">http://127.0.0.1:8787/status</a>\n",
  348. " </td>\n",
  349. " <td style=\"text-align: left;\">\n",
  350. " <strong>Total threads:</strong> 60\n",
  351. " </td>\n",
  352. " </tr>\n",
  353. " <tr>\n",
  354. " <td style=\"text-align: left;\">\n",
  355. " <strong>Started:</strong> Just now\n",
  356. " </td>\n",
  357. " <td style=\"text-align: left;\">\n",
  358. " <strong>Total memory:</strong> 55.88 GiB\n",
  359. " </td>\n",
  360. " </tr>\n",
  361. " </table>\n",
  362. " </div>\n",
  363. " </div>\n",
  364. "\n",
  365. " <details style=\"margin-left: 48px;\">\n",
  366. " <summary style=\"margin-bottom: 20px;\">\n",
  367. " <h3 style=\"display: inline;\">Workers</h3>\n",
  368. " </summary>\n",
  369. "\n",
  370. " \n",
  371. " <div style=\"margin-bottom: 20px;\">\n",
  372. " <div style=\"width: 24px; height: 24px; background-color: #DBF5FF; border: 3px solid #4CC9FF; border-radius: 5px; position: absolute;\"> </div>\n",
  373. " <div style=\"margin-left: 48px;\">\n",
  374. " <details>\n",
  375. " <summary>\n",
  376. " <h4 style=\"margin-bottom: 0px; display: inline;\">Worker: 0</h4>\n",
  377. " </summary>\n",
  378. " <table style=\"width: 100%; text-align: left;\">\n",
  379. " <tr>\n",
  380. " <td style=\"text-align: left;\">\n",
  381. " <strong>Comm: </strong> tcp://127.0.0.1:62781\n",
  382. " </td>\n",
  383. " <td style=\"text-align: left;\">\n",
  384. " <strong>Total threads: </strong> 10\n",
  385. " </td>\n",
  386. " </tr>\n",
  387. " <tr>\n",
  388. " <td style=\"text-align: left;\">\n",
  389. " <strong>Dashboard: </strong> <a href=\"http://127.0.0.1:62787/status\" target=\"_blank\">http://127.0.0.1:62787/status</a>\n",
  390. " </td>\n",
  391. " <td style=\"text-align: left;\">\n",
  392. " <strong>Memory: </strong> 9.31 GiB\n",
  393. " </td>\n",
  394. " </tr>\n",
  395. " <tr>\n",
  396. " <td style=\"text-align: left;\">\n",
  397. " <strong>Nanny: </strong> tcp://127.0.0.1:62762\n",
  398. " </td>\n",
  399. " <td style=\"text-align: left;\"></td>\n",
  400. " </tr>\n",
  401. " <tr>\n",
  402. " <td colspan=\"2\" style=\"text-align: left;\">\n",
  403. " <strong>Local directory: </strong> C:\\Users\\data\\AppData\\Local\\Temp\\dask-worker-space\\worker-3gcis6xr\n",
  404. " </td>\n",
  405. " </tr>\n",
  406. "\n",
  407. " \n",
  408. "\n",
  409. " \n",
  410. "\n",
  411. " </table>\n",
  412. " </details>\n",
  413. " </div>\n",
  414. " </div>\n",
  415. " \n",
  416. " <div style=\"margin-bottom: 20px;\">\n",
  417. " <div style=\"width: 24px; height: 24px; background-color: #DBF5FF; border: 3px solid #4CC9FF; border-radius: 5px; position: absolute;\"> </div>\n",
  418. " <div style=\"margin-left: 48px;\">\n",
  419. " <details>\n",
  420. " <summary>\n",
  421. " <h4 style=\"margin-bottom: 0px; display: inline;\">Worker: 1</h4>\n",
  422. " </summary>\n",
  423. " <table style=\"width: 100%; text-align: left;\">\n",
  424. " <tr>\n",
  425. " <td style=\"text-align: left;\">\n",
  426. " <strong>Comm: </strong> tcp://127.0.0.1:62795\n",
  427. " </td>\n",
  428. " <td style=\"text-align: left;\">\n",
  429. " <strong>Total threads: </strong> 10\n",
  430. " </td>\n",
  431. " </tr>\n",
  432. " <tr>\n",
  433. " <td style=\"text-align: left;\">\n",
  434. " <strong>Dashboard: </strong> <a href=\"http://127.0.0.1:62799/status\" target=\"_blank\">http://127.0.0.1:62799/status</a>\n",
  435. " </td>\n",
  436. " <td style=\"text-align: left;\">\n",
  437. " <strong>Memory: </strong> 9.31 GiB\n",
  438. " </td>\n",
  439. " </tr>\n",
  440. " <tr>\n",
  441. " <td style=\"text-align: left;\">\n",
  442. " <strong>Nanny: </strong> tcp://127.0.0.1:62763\n",
  443. " </td>\n",
  444. " <td style=\"text-align: left;\"></td>\n",
  445. " </tr>\n",
  446. " <tr>\n",
  447. " <td colspan=\"2\" style=\"text-align: left;\">\n",
  448. " <strong>Local directory: </strong> C:\\Users\\data\\AppData\\Local\\Temp\\dask-worker-space\\worker-z8bj7z95\n",
  449. " </td>\n",
  450. " </tr>\n",
  451. "\n",
  452. " \n",
  453. "\n",
  454. " \n",
  455. "\n",
  456. " </table>\n",
  457. " </details>\n",
  458. " </div>\n",
  459. " </div>\n",
  460. " \n",
  461. " <div style=\"margin-bottom: 20px;\">\n",
  462. " <div style=\"width: 24px; height: 24px; background-color: #DBF5FF; border: 3px solid #4CC9FF; border-radius: 5px; position: absolute;\"> </div>\n",
  463. " <div style=\"margin-left: 48px;\">\n",
  464. " <details>\n",
  465. " <summary>\n",
  466. " <h4 style=\"margin-bottom: 0px; display: inline;\">Worker: 2</h4>\n",
  467. " </summary>\n",
  468. " <table style=\"width: 100%; text-align: left;\">\n",
  469. " <tr>\n",
  470. " <td style=\"text-align: left;\">\n",
  471. " <strong>Comm: </strong> tcp://127.0.0.1:62789\n",
  472. " </td>\n",
  473. " <td style=\"text-align: left;\">\n",
  474. " <strong>Total threads: </strong> 10\n",
  475. " </td>\n",
  476. " </tr>\n",
  477. " <tr>\n",
  478. " <td style=\"text-align: left;\">\n",
  479. " <strong>Dashboard: </strong> <a href=\"http://127.0.0.1:62791/status\" target=\"_blank\">http://127.0.0.1:62791/status</a>\n",
  480. " </td>\n",
  481. " <td style=\"text-align: left;\">\n",
  482. " <strong>Memory: </strong> 9.31 GiB\n",
  483. " </td>\n",
  484. " </tr>\n",
  485. " <tr>\n",
  486. " <td style=\"text-align: left;\">\n",
  487. " <strong>Nanny: </strong> tcp://127.0.0.1:62764\n",
  488. " </td>\n",
  489. " <td style=\"text-align: left;\"></td>\n",
  490. " </tr>\n",
  491. " <tr>\n",
  492. " <td colspan=\"2\" style=\"text-align: left;\">\n",
  493. " <strong>Local directory: </strong> C:\\Users\\data\\AppData\\Local\\Temp\\dask-worker-space\\worker-67f2wwr0\n",
  494. " </td>\n",
  495. " </tr>\n",
  496. "\n",
  497. " \n",
  498. "\n",
  499. " \n",
  500. "\n",
  501. " </table>\n",
  502. " </details>\n",
  503. " </div>\n",
  504. " </div>\n",
  505. " \n",
  506. " <div style=\"margin-bottom: 20px;\">\n",
  507. " <div style=\"width: 24px; height: 24px; background-color: #DBF5FF; border: 3px solid #4CC9FF; border-radius: 5px; position: absolute;\"> </div>\n",
  508. " <div style=\"margin-left: 48px;\">\n",
  509. " <details>\n",
  510. " <summary>\n",
  511. " <h4 style=\"margin-bottom: 0px; display: inline;\">Worker: 3</h4>\n",
  512. " </summary>\n",
  513. " <table style=\"width: 100%; text-align: left;\">\n",
  514. " <tr>\n",
  515. " <td style=\"text-align: left;\">\n",
  516. " <strong>Comm: </strong> tcp://127.0.0.1:62797\n",
  517. " </td>\n",
  518. " <td style=\"text-align: left;\">\n",
  519. " <strong>Total threads: </strong> 10\n",
  520. " </td>\n",
  521. " </tr>\n",
  522. " <tr>\n",
  523. " <td style=\"text-align: left;\">\n",
  524. " <strong>Dashboard: </strong> <a href=\"http://127.0.0.1:62802/status\" target=\"_blank\">http://127.0.0.1:62802/status</a>\n",
  525. " </td>\n",
  526. " <td style=\"text-align: left;\">\n",
  527. " <strong>Memory: </strong> 9.31 GiB\n",
  528. " </td>\n",
  529. " </tr>\n",
  530. " <tr>\n",
  531. " <td style=\"text-align: left;\">\n",
  532. " <strong>Nanny: </strong> tcp://127.0.0.1:62765\n",
  533. " </td>\n",
  534. " <td style=\"text-align: left;\"></td>\n",
  535. " </tr>\n",
  536. " <tr>\n",
  537. " <td colspan=\"2\" style=\"text-align: left;\">\n",
  538. " <strong>Local directory: </strong> C:\\Users\\data\\AppData\\Local\\Temp\\dask-worker-space\\worker-g84sd6u2\n",
  539. " </td>\n",
  540. " </tr>\n",
  541. "\n",
  542. " \n",
  543. "\n",
  544. " \n",
  545. "\n",
  546. " </table>\n",
  547. " </details>\n",
  548. " </div>\n",
  549. " </div>\n",
  550. " \n",
  551. " <div style=\"margin-bottom: 20px;\">\n",
  552. " <div style=\"width: 24px; height: 24px; background-color: #DBF5FF; border: 3px solid #4CC9FF; border-radius: 5px; position: absolute;\"> </div>\n",
  553. " <div style=\"margin-left: 48px;\">\n",
  554. " <details>\n",
  555. " <summary>\n",
  556. " <h4 style=\"margin-bottom: 0px; display: inline;\">Worker: 4</h4>\n",
  557. " </summary>\n",
  558. " <table style=\"width: 100%; text-align: left;\">\n",
  559. " <tr>\n",
  560. " <td style=\"text-align: left;\">\n",
  561. " <strong>Comm: </strong> tcp://127.0.0.1:62796\n",
  562. " </td>\n",
  563. " <td style=\"text-align: left;\">\n",
  564. " <strong>Total threads: </strong> 10\n",
  565. " </td>\n",
  566. " </tr>\n",
  567. " <tr>\n",
  568. " <td style=\"text-align: left;\">\n",
  569. " <strong>Dashboard: </strong> <a href=\"http://127.0.0.1:62798/status\" target=\"_blank\">http://127.0.0.1:62798/status</a>\n",
  570. " </td>\n",
  571. " <td style=\"text-align: left;\">\n",
  572. " <strong>Memory: </strong> 9.31 GiB\n",
  573. " </td>\n",
  574. " </tr>\n",
  575. " <tr>\n",
  576. " <td style=\"text-align: left;\">\n",
  577. " <strong>Nanny: </strong> tcp://127.0.0.1:62766\n",
  578. " </td>\n",
  579. " <td style=\"text-align: left;\"></td>\n",
  580. " </tr>\n",
  581. " <tr>\n",
  582. " <td colspan=\"2\" style=\"text-align: left;\">\n",
  583. " <strong>Local directory: </strong> C:\\Users\\data\\AppData\\Local\\Temp\\dask-worker-space\\worker-55nj59xw\n",
  584. " </td>\n",
  585. " </tr>\n",
  586. "\n",
  587. " \n",
  588. "\n",
  589. " \n",
  590. "\n",
  591. " </table>\n",
  592. " </details>\n",
  593. " </div>\n",
  594. " </div>\n",
  595. " \n",
  596. " <div style=\"margin-bottom: 20px;\">\n",
  597. " <div style=\"width: 24px; height: 24px; background-color: #DBF5FF; border: 3px solid #4CC9FF; border-radius: 5px; position: absolute;\"> </div>\n",
  598. " <div style=\"margin-left: 48px;\">\n",
  599. " <details>\n",
  600. " <summary>\n",
  601. " <h4 style=\"margin-bottom: 0px; display: inline;\">Worker: 5</h4>\n",
  602. " </summary>\n",
  603. " <table style=\"width: 100%; text-align: left;\">\n",
  604. " <tr>\n",
  605. " <td style=\"text-align: left;\">\n",
  606. " <strong>Comm: </strong> tcp://127.0.0.1:62790\n",
  607. " </td>\n",
  608. " <td style=\"text-align: left;\">\n",
  609. " <strong>Total threads: </strong> 10\n",
  610. " </td>\n",
  611. " </tr>\n",
  612. " <tr>\n",
  613. " <td style=\"text-align: left;\">\n",
  614. " <strong>Dashboard: </strong> <a href=\"http://127.0.0.1:62793/status\" target=\"_blank\">http://127.0.0.1:62793/status</a>\n",
  615. " </td>\n",
  616. " <td style=\"text-align: left;\">\n",
  617. " <strong>Memory: </strong> 9.31 GiB\n",
  618. " </td>\n",
  619. " </tr>\n",
  620. " <tr>\n",
  621. " <td style=\"text-align: left;\">\n",
  622. " <strong>Nanny: </strong> tcp://127.0.0.1:62767\n",
  623. " </td>\n",
  624. " <td style=\"text-align: left;\"></td>\n",
  625. " </tr>\n",
  626. " <tr>\n",
  627. " <td colspan=\"2\" style=\"text-align: left;\">\n",
  628. " <strong>Local directory: </strong> C:\\Users\\data\\AppData\\Local\\Temp\\dask-worker-space\\worker-s47mqrsf\n",
  629. " </td>\n",
  630. " </tr>\n",
  631. "\n",
  632. " \n",
  633. "\n",
  634. " \n",
  635. "\n",
  636. " </table>\n",
  637. " </details>\n",
  638. " </div>\n",
  639. " </div>\n",
  640. " \n",
  641. "\n",
  642. " </details>\n",
  643. "</div>\n",
  644. "\n",
  645. " </details>\n",
  646. " </div>\n",
  647. "</div>\n",
  648. " </details>\n",
  649. " \n",
  650. "\n",
  651. " </div>\n",
  652. "</div>"
  653. ],
  654. "text/plain": [
  655. "<Client: 'tcp://127.0.0.1:62759' processes=6 threads=60, memory=55.88 GiB>"
  656. ]
  657. },
  658. "execution_count": 11,
  659. "metadata": {},
  660. "output_type": "execute_result"
  661. }
  662. ],
  663. "source": [
  664. "from dask.distributed import Client\n",
  665. "client = Client(n_workers=6, threads_per_worker=10, processes=True, memory_limit='10GB')\n",
  666. "client"
  667. ]
  668. },
  669. {
  670. "attachments": {},
  671. "cell_type": "markdown",
  672. "metadata": {},
  673. "source": [
  674. "## Set global path for experiment"
  675. ]
  676. },
  677. {
  678. "cell_type": "code",
  679. "execution_count": 12,
  680. "metadata": {},
  681. "outputs": [],
  682. "source": [
  683. "# filepath = \"//DyLabNAS/Data/Evaporative_Cooling/2023/05/03/0043/*.h5\"\n",
  684. "# filepath = \"//DyLabNAS/Data/Evaporative_Cooling/2023/04/18/0003/2023-04-18_0003_Evaporative_Cooling_000.h5\"\n",
  685. "\n",
  686. "# filepath = \"//DyLabNAS/Data/Repetition_scan/2023/04/21/0002/*.h5\"\n",
  687. "\n",
  688. "# filepath = r\"./testData/0002/*.h5\"\n",
  689. "\n",
  690. "# filepath = r\"./testData/0002/2023-04-21_0002_Evaporative_Cooling_0.h5\"\n",
  691. "\n",
  692. "# filepath = r'd:/Jianshun Gao/Simulations/analyseScripts/testData/0002/2023-04-21_0002_Evaporative_Cooling_0.h5'\n",
  693. "\n",
  694. "# filepath = \"//DyLabNAS/Data/Evaporative_Cooling/2023/04/18/0003/*.h5\"\n",
  695. "\n",
  696. "# filepath = \"//DyLabNAS/Data/Evaporative_Cooling/2023/05/04/0000/*.h5\"\n",
  697. "\n",
  698. "filepath = './result_from_experiment/2023-04-24/0013/2023-04-24_0013_Evaporative_Cooling_08.h5'"
  699. ]
  700. },
  701. {
  702. "cell_type": "code",
  703. "execution_count": 13,
  704. "metadata": {},
  705. "outputs": [],
  706. "source": [
  707. "groupList = [\n",
  708. " \"images/MOT_3D_Camera/in_situ_absorption\",\n",
  709. " \"images/ODT_1_Axis_Camera/in_situ_absorption\",\n",
  710. " \"images/ODT_2_Axis_Camera/in_situ_absorption\",\n",
  711. "]\n",
  712. "\n",
  713. "dskey = {\n",
  714. " \"images/MOT_3D_Camera/in_situ_absorption\": \"camera_1\",\n",
  715. " \"images/ODT_1_Axis_Camera/in_situ_absorption\": \"camera_2\",\n",
  716. " \"images/ODT_2_Axis_Camera/in_situ_absorption\": \"camera_3\",\n",
  717. "}\n"
  718. ]
  719. },
  720. {
  721. "cell_type": "code",
  722. "execution_count": 14,
  723. "metadata": {},
  724. "outputs": [],
  725. "source": [
  726. "img_dir = '//DyLabNAS/Data/'\n",
  727. "SequenceName = \"Evaporative_Cooling\" + \"/\"\n",
  728. "folderPath = img_dir + SequenceName + '2023/05/23'# get_date()"
  729. ]
  730. },
  731. {
  732. "attachments": {},
  733. "cell_type": "markdown",
  734. "metadata": {},
  735. "source": [
  736. "# An example for one experimental run"
  737. ]
  738. },
  739. {
  740. "attachments": {},
  741. "cell_type": "markdown",
  742. "metadata": {},
  743. "source": [
  744. "## Load the data"
  745. ]
  746. },
  747. {
  748. "cell_type": "code",
  749. "execution_count": 15,
  750. "metadata": {},
  751. "outputs": [
  752. {
  753. "data": {
  754. "text/html": [
  755. "<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n",
  756. "<defs>\n",
  757. "<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n",
  758. "<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",
  759. "<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",
  760. "<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",
  761. "</symbol>\n",
  762. "<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n",
  763. "<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",
  764. "<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",
  765. "<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",
  766. "<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",
  767. "</symbol>\n",
  768. "</defs>\n",
  769. "</svg>\n",
  770. "<style>/* CSS stylesheet for displaying xarray objects in jupyterlab.\n",
  771. " *\n",
  772. " */\n",
  773. "\n",
  774. ":root {\n",
  775. " --xr-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));\n",
  776. " --xr-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));\n",
  777. " --xr-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));\n",
  778. " --xr-border-color: var(--jp-border-color2, #e0e0e0);\n",
  779. " --xr-disabled-color: var(--jp-layout-color3, #bdbdbd);\n",
  780. " --xr-background-color: var(--jp-layout-color0, white);\n",
  781. " --xr-background-color-row-even: var(--jp-layout-color1, white);\n",
  782. " --xr-background-color-row-odd: var(--jp-layout-color2, #eeeeee);\n",
  783. "}\n",
  784. "\n",
  785. "html[theme=dark],\n",
  786. "body[data-theme=dark],\n",
  787. "body.vscode-dark {\n",
  788. " --xr-font-color0: rgba(255, 255, 255, 1);\n",
  789. " --xr-font-color2: rgba(255, 255, 255, 0.54);\n",
  790. " --xr-font-color3: rgba(255, 255, 255, 0.38);\n",
  791. " --xr-border-color: #1F1F1F;\n",
  792. " --xr-disabled-color: #515151;\n",
  793. " --xr-background-color: #111111;\n",
  794. " --xr-background-color-row-even: #111111;\n",
  795. " --xr-background-color-row-odd: #313131;\n",
  796. "}\n",
  797. "\n",
  798. ".xr-wrap {\n",
  799. " display: block !important;\n",
  800. " min-width: 300px;\n",
  801. " max-width: 700px;\n",
  802. "}\n",
  803. "\n",
  804. ".xr-text-repr-fallback {\n",
  805. " /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n",
  806. " display: none;\n",
  807. "}\n",
  808. "\n",
  809. ".xr-header {\n",
  810. " padding-top: 6px;\n",
  811. " padding-bottom: 6px;\n",
  812. " margin-bottom: 4px;\n",
  813. " border-bottom: solid 1px var(--xr-border-color);\n",
  814. "}\n",
  815. "\n",
  816. ".xr-header > div,\n",
  817. ".xr-header > ul {\n",
  818. " display: inline;\n",
  819. " margin-top: 0;\n",
  820. " margin-bottom: 0;\n",
  821. "}\n",
  822. "\n",
  823. ".xr-obj-type,\n",
  824. ".xr-array-name {\n",
  825. " margin-left: 2px;\n",
  826. " margin-right: 10px;\n",
  827. "}\n",
  828. "\n",
  829. ".xr-obj-type {\n",
  830. " color: var(--xr-font-color2);\n",
  831. "}\n",
  832. "\n",
  833. ".xr-sections {\n",
  834. " padding-left: 0 !important;\n",
  835. " display: grid;\n",
  836. " grid-template-columns: 150px auto auto 1fr 20px 20px;\n",
  837. "}\n",
  838. "\n",
  839. ".xr-section-item {\n",
  840. " display: contents;\n",
  841. "}\n",
  842. "\n",
  843. ".xr-section-item input {\n",
  844. " display: none;\n",
  845. "}\n",
  846. "\n",
  847. ".xr-section-item input + label {\n",
  848. " color: var(--xr-disabled-color);\n",
  849. "}\n",
  850. "\n",
  851. ".xr-section-item input:enabled + label {\n",
  852. " cursor: pointer;\n",
  853. " color: var(--xr-font-color2);\n",
  854. "}\n",
  855. "\n",
  856. ".xr-section-item input:enabled + label:hover {\n",
  857. " color: var(--xr-font-color0);\n",
  858. "}\n",
  859. "\n",
  860. ".xr-section-summary {\n",
  861. " grid-column: 1;\n",
  862. " color: var(--xr-font-color2);\n",
  863. " font-weight: 500;\n",
  864. "}\n",
  865. "\n",
  866. ".xr-section-summary > span {\n",
  867. " display: inline-block;\n",
  868. " padding-left: 0.5em;\n",
  869. "}\n",
  870. "\n",
  871. ".xr-section-summary-in:disabled + label {\n",
  872. " color: var(--xr-font-color2);\n",
  873. "}\n",
  874. "\n",
  875. ".xr-section-summary-in + label:before {\n",
  876. " display: inline-block;\n",
  877. " content: 'â–º';\n",
  878. " font-size: 11px;\n",
  879. " width: 15px;\n",
  880. " text-align: center;\n",
  881. "}\n",
  882. "\n",
  883. ".xr-section-summary-in:disabled + label:before {\n",
  884. " color: var(--xr-disabled-color);\n",
  885. "}\n",
  886. "\n",
  887. ".xr-section-summary-in:checked + label:before {\n",
  888. " content: 'â–¼';\n",
  889. "}\n",
  890. "\n",
  891. ".xr-section-summary-in:checked + label > span {\n",
  892. " display: none;\n",
  893. "}\n",
  894. "\n",
  895. ".xr-section-summary,\n",
  896. ".xr-section-inline-details {\n",
  897. " padding-top: 4px;\n",
  898. " padding-bottom: 4px;\n",
  899. "}\n",
  900. "\n",
  901. ".xr-section-inline-details {\n",
  902. " grid-column: 2 / -1;\n",
  903. "}\n",
  904. "\n",
  905. ".xr-section-details {\n",
  906. " display: none;\n",
  907. " grid-column: 1 / -1;\n",
  908. " margin-bottom: 5px;\n",
  909. "}\n",
  910. "\n",
  911. ".xr-section-summary-in:checked ~ .xr-section-details {\n",
  912. " display: contents;\n",
  913. "}\n",
  914. "\n",
  915. ".xr-array-wrap {\n",
  916. " grid-column: 1 / -1;\n",
  917. " display: grid;\n",
  918. " grid-template-columns: 20px auto;\n",
  919. "}\n",
  920. "\n",
  921. ".xr-array-wrap > label {\n",
  922. " grid-column: 1;\n",
  923. " vertical-align: top;\n",
  924. "}\n",
  925. "\n",
  926. ".xr-preview {\n",
  927. " color: var(--xr-font-color3);\n",
  928. "}\n",
  929. "\n",
  930. ".xr-array-preview,\n",
  931. ".xr-array-data {\n",
  932. " padding: 0 5px !important;\n",
  933. " grid-column: 2;\n",
  934. "}\n",
  935. "\n",
  936. ".xr-array-data,\n",
  937. ".xr-array-in:checked ~ .xr-array-preview {\n",
  938. " display: none;\n",
  939. "}\n",
  940. "\n",
  941. ".xr-array-in:checked ~ .xr-array-data,\n",
  942. ".xr-array-preview {\n",
  943. " display: inline-block;\n",
  944. "}\n",
  945. "\n",
  946. ".xr-dim-list {\n",
  947. " display: inline-block !important;\n",
  948. " list-style: none;\n",
  949. " padding: 0 !important;\n",
  950. " margin: 0;\n",
  951. "}\n",
  952. "\n",
  953. ".xr-dim-list li {\n",
  954. " display: inline-block;\n",
  955. " padding: 0;\n",
  956. " margin: 0;\n",
  957. "}\n",
  958. "\n",
  959. ".xr-dim-list:before {\n",
  960. " content: '(';\n",
  961. "}\n",
  962. "\n",
  963. ".xr-dim-list:after {\n",
  964. " content: ')';\n",
  965. "}\n",
  966. "\n",
  967. ".xr-dim-list li:not(:last-child):after {\n",
  968. " content: ',';\n",
  969. " padding-right: 5px;\n",
  970. "}\n",
  971. "\n",
  972. ".xr-has-index {\n",
  973. " font-weight: bold;\n",
  974. "}\n",
  975. "\n",
  976. ".xr-var-list,\n",
  977. ".xr-var-item {\n",
  978. " display: contents;\n",
  979. "}\n",
  980. "\n",
  981. ".xr-var-item > div,\n",
  982. ".xr-var-item label,\n",
  983. ".xr-var-item > .xr-var-name span {\n",
  984. " background-color: var(--xr-background-color-row-even);\n",
  985. " margin-bottom: 0;\n",
  986. "}\n",
  987. "\n",
  988. ".xr-var-item > .xr-var-name:hover span {\n",
  989. " padding-right: 5px;\n",
  990. "}\n",
  991. "\n",
  992. ".xr-var-list > li:nth-child(odd) > div,\n",
  993. ".xr-var-list > li:nth-child(odd) > label,\n",
  994. ".xr-var-list > li:nth-child(odd) > .xr-var-name span {\n",
  995. " background-color: var(--xr-background-color-row-odd);\n",
  996. "}\n",
  997. "\n",
  998. ".xr-var-name {\n",
  999. " grid-column: 1;\n",
  1000. "}\n",
  1001. "\n",
  1002. ".xr-var-dims {\n",
  1003. " grid-column: 2;\n",
  1004. "}\n",
  1005. "\n",
  1006. ".xr-var-dtype {\n",
  1007. " grid-column: 3;\n",
  1008. " text-align: right;\n",
  1009. " color: var(--xr-font-color2);\n",
  1010. "}\n",
  1011. "\n",
  1012. ".xr-var-preview {\n",
  1013. " grid-column: 4;\n",
  1014. "}\n",
  1015. "\n",
  1016. ".xr-index-preview {\n",
  1017. " grid-column: 2 / 5;\n",
  1018. " color: var(--xr-font-color2);\n",
  1019. "}\n",
  1020. "\n",
  1021. ".xr-var-name,\n",
  1022. ".xr-var-dims,\n",
  1023. ".xr-var-dtype,\n",
  1024. ".xr-preview,\n",
  1025. ".xr-attrs dt {\n",
  1026. " white-space: nowrap;\n",
  1027. " overflow: hidden;\n",
  1028. " text-overflow: ellipsis;\n",
  1029. " padding-right: 10px;\n",
  1030. "}\n",
  1031. "\n",
  1032. ".xr-var-name:hover,\n",
  1033. ".xr-var-dims:hover,\n",
  1034. ".xr-var-dtype:hover,\n",
  1035. ".xr-attrs dt:hover {\n",
  1036. " overflow: visible;\n",
  1037. " width: auto;\n",
  1038. " z-index: 1;\n",
  1039. "}\n",
  1040. "\n",
  1041. ".xr-var-attrs,\n",
  1042. ".xr-var-data,\n",
  1043. ".xr-index-data {\n",
  1044. " display: none;\n",
  1045. " background-color: var(--xr-background-color) !important;\n",
  1046. " padding-bottom: 5px !important;\n",
  1047. "}\n",
  1048. "\n",
  1049. ".xr-var-attrs-in:checked ~ .xr-var-attrs,\n",
  1050. ".xr-var-data-in:checked ~ .xr-var-data,\n",
  1051. ".xr-index-data-in:checked ~ .xr-index-data {\n",
  1052. " display: block;\n",
  1053. "}\n",
  1054. "\n",
  1055. ".xr-var-data > table {\n",
  1056. " float: right;\n",
  1057. "}\n",
  1058. "\n",
  1059. ".xr-var-name span,\n",
  1060. ".xr-var-data,\n",
  1061. ".xr-index-name div,\n",
  1062. ".xr-index-data,\n",
  1063. ".xr-attrs {\n",
  1064. " padding-left: 25px !important;\n",
  1065. "}\n",
  1066. "\n",
  1067. ".xr-attrs,\n",
  1068. ".xr-var-attrs,\n",
  1069. ".xr-var-data,\n",
  1070. ".xr-index-data {\n",
  1071. " grid-column: 1 / -1;\n",
  1072. "}\n",
  1073. "\n",
  1074. "dl.xr-attrs {\n",
  1075. " padding: 0;\n",
  1076. " margin: 0;\n",
  1077. " display: grid;\n",
  1078. " grid-template-columns: 125px auto;\n",
  1079. "}\n",
  1080. "\n",
  1081. ".xr-attrs dt,\n",
  1082. ".xr-attrs dd {\n",
  1083. " padding: 0;\n",
  1084. " margin: 0;\n",
  1085. " float: left;\n",
  1086. " padding-right: 10px;\n",
  1087. " width: auto;\n",
  1088. "}\n",
  1089. "\n",
  1090. ".xr-attrs dt {\n",
  1091. " font-weight: normal;\n",
  1092. " grid-column: 1;\n",
  1093. "}\n",
  1094. "\n",
  1095. ".xr-attrs dt:hover span {\n",
  1096. " display: inline-block;\n",
  1097. " background: var(--xr-background-color);\n",
  1098. " padding-right: 10px;\n",
  1099. "}\n",
  1100. "\n",
  1101. ".xr-attrs dd {\n",
  1102. " grid-column: 2;\n",
  1103. " white-space: pre-wrap;\n",
  1104. " word-break: break-all;\n",
  1105. "}\n",
  1106. "\n",
  1107. ".xr-icon-database,\n",
  1108. ".xr-icon-file-text2,\n",
  1109. ".xr-no-icon {\n",
  1110. " display: inline-block;\n",
  1111. " vertical-align: middle;\n",
  1112. " width: 1em;\n",
  1113. " height: 1.5em !important;\n",
  1114. " stroke-width: 0;\n",
  1115. " stroke: currentColor;\n",
  1116. " fill: currentColor;\n",
  1117. "}\n",
  1118. "</style><pre class='xr-text-repr-fallback'>&lt;xarray.Dataset&gt;\n",
  1119. "Dimensions: (compX_final_current: 11, runs: 3, y: 1200, x: 1920)\n",
  1120. "Coordinates:\n",
  1121. " * compX_final_current (compX_final_current) float64 0.0 0.002 ... 0.018 0.02\n",
  1122. " * runs (runs) float64 0.0 1.0 2.0\n",
  1123. "Dimensions without coordinates: y, x\n",
  1124. "Data variables:\n",
  1125. " atoms (compX_final_current, runs, y, x) uint16 dask.array&lt;chunksize=(9, 3, 1200, 1920), meta=np.ndarray&gt;\n",
  1126. " background (compX_final_current, runs, y, x) uint16 dask.array&lt;chunksize=(9, 3, 1200, 1920), meta=np.ndarray&gt;\n",
  1127. " dark (compX_final_current, runs, y, x) uint16 dask.array&lt;chunksize=(9, 3, 1200, 1920), meta=np.ndarray&gt;\n",
  1128. " shotNum (compX_final_current, runs) &lt;U2 dask.array&lt;chunksize=(11, 3), meta=np.ndarray&gt;\n",
  1129. " OD (compX_final_current, runs, y, x) float64 dask.array&lt;chunksize=(9, 3, 1200, 1920), meta=np.ndarray&gt;\n",
  1130. "Attributes: (12/120)\n",
  1131. " TOF_free: 0.022\n",
  1132. " abs_img_freq: 110.858\n",
  1133. " absorption_imaging_flag: True\n",
  1134. " backup_data: True\n",
  1135. " blink_off_time: 0.001\n",
  1136. " blink_on_time: 0.001\n",
  1137. " ... ...\n",
  1138. " z_offset: 0.189\n",
  1139. " z_offset_img: 0.189\n",
  1140. " compX_final_current: [0. 0.002 0.004 0.006 0.008 0.01 0...\n",
  1141. " runs: [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 1...\n",
  1142. " scanAxis: [&#x27;compX_final_current&#x27; &#x27;runs&#x27;]\n",
  1143. " scanAxisLength: [33. 33.]</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-b9ae155a-cf09-4eb8-842a-5e3d68fb091f' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-b9ae155a-cf09-4eb8-842a-5e3d68fb091f' class='xr-section-summary' title='Expand/collapse section'>Dimensions:</label><div class='xr-section-inline-details'><ul class='xr-dim-list'><li><span class='xr-has-index'>compX_final_current</span>: 11</li><li><span class='xr-has-index'>runs</span>: 3</li><li><span>y</span>: 1200</li><li><span>x</span>: 1920</li></ul></div><div class='xr-section-details'></div></li><li class='xr-section-item'><input id='section-17d8eed4-ed1b-4e5a-bcdc-3ad6bea77ff4' class='xr-section-summary-in' type='checkbox' checked><label for='section-17d8eed4-ed1b-4e5a-bcdc-3ad6bea77ff4' 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 class='xr-has-index'>compX_final_current</span></div><div class='xr-var-dims'>(compX_final_current)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>0.0 0.002 0.004 ... 0.018 0.02</div><input id='attrs-863961cf-d72e-46e9-a866-67470bc1388c' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-863961cf-d72e-46e9-a866-67470bc1388c' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-9344fd09-ba24-41d8-90ab-485ade4d6a91' class='xr-var-data-in' type='checkbox'><label for='data-9344fd09-ba24-41d8-90ab-485ade4d6a91' 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. , 0.002, 0.004, 0.006, 0.008, 0.01 , 0.012, 0.014, 0.016, 0.018,\n",
  1144. " 0.02 ])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>runs</span></div><div class='xr-var-dims'>(runs)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>0.0 1.0 2.0</div><input id='attrs-907ea110-b888-4cd7-a485-3ca7076a8dc3' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-907ea110-b888-4cd7-a485-3ca7076a8dc3' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-b6b9aa47-6f8c-484f-af8b-a8cafbff10be' class='xr-var-data-in' type='checkbox'><label for='data-b6b9aa47-6f8c-484f-af8b-a8cafbff10be' 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., 1., 2.])</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-6906b7c8-0730-4704-8b36-2414b062c545' class='xr-section-summary-in' type='checkbox' checked><label for='section-6906b7c8-0730-4704-8b36-2414b062c545' class='xr-section-summary' >Data variables: <span>(5)</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>atoms</span></div><div class='xr-var-dims'>(compX_final_current, runs, y, x)</div><div class='xr-var-dtype'>uint16</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(9, 3, 1200, 1920), meta=np.ndarray&gt;</div><input id='attrs-58fe1a57-5da5-4654-9b36-4d2bb4330969' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-58fe1a57-5da5-4654-9b36-4d2bb4330969' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-add8fc41-8deb-43d6-8742-8f88232b9f88' class='xr-var-data-in' type='checkbox'><label for='data-add8fc41-8deb-43d6-8742-8f88232b9f88' 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'><dt><span>IMAGE_SUBCLASS :</span></dt><dd>IMAGE_GRAYSCALE</dd><dt><span>IMAGE_VERSION :</span></dt><dd>1.2</dd><dt><span>IMAGE_WHITE_IS_ZERO :</span></dt><dd>0</dd></dl></div><div class='xr-var-data'><table>\n",
  1145. " <tr>\n",
  1146. " <td>\n",
  1147. " <table style=\"border-collapse: collapse;\">\n",
  1148. " <thead>\n",
  1149. " <tr>\n",
  1150. " <td> </td>\n",
  1151. " <th> Array </th>\n",
  1152. " <th> Chunk </th>\n",
  1153. " </tr>\n",
  1154. " </thead>\n",
  1155. " <tbody>\n",
  1156. " \n",
  1157. " <tr>\n",
  1158. " <th> Bytes </th>\n",
  1159. " <td> 145.02 MiB </td>\n",
  1160. " <td> 118.65 MiB </td>\n",
  1161. " </tr>\n",
  1162. " \n",
  1163. " <tr>\n",
  1164. " <th> Shape </th>\n",
  1165. " <td> (11, 3, 1200, 1920) </td>\n",
  1166. " <td> (9, 3, 1200, 1920) </td>\n",
  1167. " </tr>\n",
  1168. " <tr>\n",
  1169. " <th> Dask graph </th>\n",
  1170. " <td colspan=\"2\"> 2 chunks in 104 graph layers </td>\n",
  1171. " </tr>\n",
  1172. " <tr>\n",
  1173. " <th> Data type </th>\n",
  1174. " <td colspan=\"2\"> uint16 numpy.ndarray </td>\n",
  1175. " </tr>\n",
  1176. " </tbody>\n",
  1177. " </table>\n",
  1178. " </td>\n",
  1179. " <td>\n",
  1180. " <svg width=\"374\" height=\"139\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n",
  1181. "\n",
  1182. " <!-- Horizontal lines -->\n",
  1183. " <line x1=\"0\" y1=\"0\" x2=\"25\" y2=\"0\" style=\"stroke-width:2\" />\n",
  1184. " <line x1=\"0\" y1=\"25\" x2=\"25\" y2=\"25\" style=\"stroke-width:2\" />\n",
  1185. "\n",
  1186. " <!-- Vertical lines -->\n",
  1187. " <line x1=\"0\" y1=\"0\" x2=\"0\" y2=\"25\" style=\"stroke-width:2\" />\n",
  1188. " <line x1=\"20\" y1=\"0\" x2=\"20\" y2=\"25\" />\n",
  1189. " <line x1=\"25\" y1=\"0\" x2=\"25\" y2=\"25\" style=\"stroke-width:2\" />\n",
  1190. "\n",
  1191. " <!-- Colored Rectangle -->\n",
  1192. " <polygon points=\"0.0,0.0 25.412616514582485,0.0 25.412616514582485,25.412616514582485 0.0,25.412616514582485\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
  1193. "\n",
  1194. " <!-- Text -->\n",
  1195. " <text x=\"12.706308\" y=\"45.412617\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >11</text>\n",
  1196. " <text x=\"45.412617\" y=\"12.706308\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(0,45.412617,12.706308)\">1</text>\n",
  1197. "\n",
  1198. "\n",
  1199. " <!-- Horizontal lines -->\n",
  1200. " <line x1=\"95\" y1=\"0\" x2=\"109\" y2=\"14\" style=\"stroke-width:2\" />\n",
  1201. " <line x1=\"95\" y1=\"75\" x2=\"109\" y2=\"89\" style=\"stroke-width:2\" />\n",
  1202. "\n",
  1203. " <!-- Vertical lines -->\n",
  1204. " <line x1=\"95\" y1=\"0\" x2=\"95\" y2=\"75\" style=\"stroke-width:2\" />\n",
  1205. " <line x1=\"109\" y1=\"14\" x2=\"109\" y2=\"89\" style=\"stroke-width:2\" />\n",
  1206. "\n",
  1207. " <!-- Colored Rectangle -->\n",
  1208. " <polygon points=\"95.0,0.0 109.9485979497544,14.948597949754403 109.9485979497544,89.9485979497544 95.0,75.0\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
  1209. "\n",
  1210. " <!-- Horizontal lines -->\n",
  1211. " <line x1=\"95\" y1=\"0\" x2=\"215\" y2=\"0\" style=\"stroke-width:2\" />\n",
  1212. " <line x1=\"109\" y1=\"14\" x2=\"229\" y2=\"14\" style=\"stroke-width:2\" />\n",
  1213. "\n",
  1214. " <!-- Vertical lines -->\n",
  1215. " <line x1=\"95\" y1=\"0\" x2=\"109\" y2=\"14\" style=\"stroke-width:2\" />\n",
  1216. " <line x1=\"215\" y1=\"0\" x2=\"229\" y2=\"14\" style=\"stroke-width:2\" />\n",
  1217. "\n",
  1218. " <!-- Colored Rectangle -->\n",
  1219. " <polygon points=\"95.0,0.0 215.0,0.0 229.9485979497544,14.948597949754403 109.9485979497544,14.948597949754403\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
  1220. "\n",
  1221. " <!-- Horizontal lines -->\n",
  1222. " <line x1=\"109\" y1=\"14\" x2=\"229\" y2=\"14\" style=\"stroke-width:2\" />\n",
  1223. " <line x1=\"109\" y1=\"89\" x2=\"229\" y2=\"89\" style=\"stroke-width:2\" />\n",
  1224. "\n",
  1225. " <!-- Vertical lines -->\n",
  1226. " <line x1=\"109\" y1=\"14\" x2=\"109\" y2=\"89\" style=\"stroke-width:2\" />\n",
  1227. " <line x1=\"229\" y1=\"14\" x2=\"229\" y2=\"89\" style=\"stroke-width:2\" />\n",
  1228. "\n",
  1229. " <!-- Colored Rectangle -->\n",
  1230. " <polygon points=\"109.9485979497544,14.948597949754403 229.9485979497544,14.948597949754403 229.9485979497544,89.9485979497544 109.9485979497544,89.9485979497544\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
  1231. "\n",
  1232. " <!-- Text -->\n",
  1233. " <text x=\"169.948598\" y=\"109.948598\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >1920</text>\n",
  1234. " <text x=\"249.948598\" y=\"52.448598\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(-90,249.948598,52.448598)\">1200</text>\n",
  1235. " <text x=\"92.474299\" y=\"102.474299\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(45,92.474299,102.474299)\">3</text>\n",
  1236. "</svg>\n",
  1237. " </td>\n",
  1238. " </tr>\n",
  1239. "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span>background</span></div><div class='xr-var-dims'>(compX_final_current, runs, y, x)</div><div class='xr-var-dtype'>uint16</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(9, 3, 1200, 1920), meta=np.ndarray&gt;</div><input id='attrs-4f5a1e6d-f0bf-4445-86fa-05f123bf471c' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-4f5a1e6d-f0bf-4445-86fa-05f123bf471c' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-97971573-5ecd-4996-b065-4771111ac722' class='xr-var-data-in' type='checkbox'><label for='data-97971573-5ecd-4996-b065-4771111ac722' 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'><dt><span>IMAGE_SUBCLASS :</span></dt><dd>IMAGE_GRAYSCALE</dd><dt><span>IMAGE_VERSION :</span></dt><dd>1.2</dd><dt><span>IMAGE_WHITE_IS_ZERO :</span></dt><dd>0</dd></dl></div><div class='xr-var-data'><table>\n",
  1240. " <tr>\n",
  1241. " <td>\n",
  1242. " <table style=\"border-collapse: collapse;\">\n",
  1243. " <thead>\n",
  1244. " <tr>\n",
  1245. " <td> </td>\n",
  1246. " <th> Array </th>\n",
  1247. " <th> Chunk </th>\n",
  1248. " </tr>\n",
  1249. " </thead>\n",
  1250. " <tbody>\n",
  1251. " \n",
  1252. " <tr>\n",
  1253. " <th> Bytes </th>\n",
  1254. " <td> 145.02 MiB </td>\n",
  1255. " <td> 118.65 MiB </td>\n",
  1256. " </tr>\n",
  1257. " \n",
  1258. " <tr>\n",
  1259. " <th> Shape </th>\n",
  1260. " <td> (11, 3, 1200, 1920) </td>\n",
  1261. " <td> (9, 3, 1200, 1920) </td>\n",
  1262. " </tr>\n",
  1263. " <tr>\n",
  1264. " <th> Dask graph </th>\n",
  1265. " <td colspan=\"2\"> 2 chunks in 104 graph layers </td>\n",
  1266. " </tr>\n",
  1267. " <tr>\n",
  1268. " <th> Data type </th>\n",
  1269. " <td colspan=\"2\"> uint16 numpy.ndarray </td>\n",
  1270. " </tr>\n",
  1271. " </tbody>\n",
  1272. " </table>\n",
  1273. " </td>\n",
  1274. " <td>\n",
  1275. " <svg width=\"374\" height=\"139\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n",
  1276. "\n",
  1277. " <!-- Horizontal lines -->\n",
  1278. " <line x1=\"0\" y1=\"0\" x2=\"25\" y2=\"0\" style=\"stroke-width:2\" />\n",
  1279. " <line x1=\"0\" y1=\"25\" x2=\"25\" y2=\"25\" style=\"stroke-width:2\" />\n",
  1280. "\n",
  1281. " <!-- Vertical lines -->\n",
  1282. " <line x1=\"0\" y1=\"0\" x2=\"0\" y2=\"25\" style=\"stroke-width:2\" />\n",
  1283. " <line x1=\"20\" y1=\"0\" x2=\"20\" y2=\"25\" />\n",
  1284. " <line x1=\"25\" y1=\"0\" x2=\"25\" y2=\"25\" style=\"stroke-width:2\" />\n",
  1285. "\n",
  1286. " <!-- Colored Rectangle -->\n",
  1287. " <polygon points=\"0.0,0.0 25.412616514582485,0.0 25.412616514582485,25.412616514582485 0.0,25.412616514582485\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
  1288. "\n",
  1289. " <!-- Text -->\n",
  1290. " <text x=\"12.706308\" y=\"45.412617\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >11</text>\n",
  1291. " <text x=\"45.412617\" y=\"12.706308\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(0,45.412617,12.706308)\">1</text>\n",
  1292. "\n",
  1293. "\n",
  1294. " <!-- Horizontal lines -->\n",
  1295. " <line x1=\"95\" y1=\"0\" x2=\"109\" y2=\"14\" style=\"stroke-width:2\" />\n",
  1296. " <line x1=\"95\" y1=\"75\" x2=\"109\" y2=\"89\" style=\"stroke-width:2\" />\n",
  1297. "\n",
  1298. " <!-- Vertical lines -->\n",
  1299. " <line x1=\"95\" y1=\"0\" x2=\"95\" y2=\"75\" style=\"stroke-width:2\" />\n",
  1300. " <line x1=\"109\" y1=\"14\" x2=\"109\" y2=\"89\" style=\"stroke-width:2\" />\n",
  1301. "\n",
  1302. " <!-- Colored Rectangle -->\n",
  1303. " <polygon points=\"95.0,0.0 109.9485979497544,14.948597949754403 109.9485979497544,89.9485979497544 95.0,75.0\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
  1304. "\n",
  1305. " <!-- Horizontal lines -->\n",
  1306. " <line x1=\"95\" y1=\"0\" x2=\"215\" y2=\"0\" style=\"stroke-width:2\" />\n",
  1307. " <line x1=\"109\" y1=\"14\" x2=\"229\" y2=\"14\" style=\"stroke-width:2\" />\n",
  1308. "\n",
  1309. " <!-- Vertical lines -->\n",
  1310. " <line x1=\"95\" y1=\"0\" x2=\"109\" y2=\"14\" style=\"stroke-width:2\" />\n",
  1311. " <line x1=\"215\" y1=\"0\" x2=\"229\" y2=\"14\" style=\"stroke-width:2\" />\n",
  1312. "\n",
  1313. " <!-- Colored Rectangle -->\n",
  1314. " <polygon points=\"95.0,0.0 215.0,0.0 229.9485979497544,14.948597949754403 109.9485979497544,14.948597949754403\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
  1315. "\n",
  1316. " <!-- Horizontal lines -->\n",
  1317. " <line x1=\"109\" y1=\"14\" x2=\"229\" y2=\"14\" style=\"stroke-width:2\" />\n",
  1318. " <line x1=\"109\" y1=\"89\" x2=\"229\" y2=\"89\" style=\"stroke-width:2\" />\n",
  1319. "\n",
  1320. " <!-- Vertical lines -->\n",
  1321. " <line x1=\"109\" y1=\"14\" x2=\"109\" y2=\"89\" style=\"stroke-width:2\" />\n",
  1322. " <line x1=\"229\" y1=\"14\" x2=\"229\" y2=\"89\" style=\"stroke-width:2\" />\n",
  1323. "\n",
  1324. " <!-- Colored Rectangle -->\n",
  1325. " <polygon points=\"109.9485979497544,14.948597949754403 229.9485979497544,14.948597949754403 229.9485979497544,89.9485979497544 109.9485979497544,89.9485979497544\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
  1326. "\n",
  1327. " <!-- Text -->\n",
  1328. " <text x=\"169.948598\" y=\"109.948598\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >1920</text>\n",
  1329. " <text x=\"249.948598\" y=\"52.448598\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(-90,249.948598,52.448598)\">1200</text>\n",
  1330. " <text x=\"92.474299\" y=\"102.474299\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(45,92.474299,102.474299)\">3</text>\n",
  1331. "</svg>\n",
  1332. " </td>\n",
  1333. " </tr>\n",
  1334. "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span>dark</span></div><div class='xr-var-dims'>(compX_final_current, runs, y, x)</div><div class='xr-var-dtype'>uint16</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(9, 3, 1200, 1920), meta=np.ndarray&gt;</div><input id='attrs-03aad486-7c52-4d72-88c1-26a5ce472582' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-03aad486-7c52-4d72-88c1-26a5ce472582' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-dfe5474a-18e1-4e4a-8e5f-30cd418675c1' class='xr-var-data-in' type='checkbox'><label for='data-dfe5474a-18e1-4e4a-8e5f-30cd418675c1' 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'><dt><span>IMAGE_SUBCLASS :</span></dt><dd>IMAGE_GRAYSCALE</dd><dt><span>IMAGE_VERSION :</span></dt><dd>1.2</dd><dt><span>IMAGE_WHITE_IS_ZERO :</span></dt><dd>0</dd></dl></div><div class='xr-var-data'><table>\n",
  1335. " <tr>\n",
  1336. " <td>\n",
  1337. " <table style=\"border-collapse: collapse;\">\n",
  1338. " <thead>\n",
  1339. " <tr>\n",
  1340. " <td> </td>\n",
  1341. " <th> Array </th>\n",
  1342. " <th> Chunk </th>\n",
  1343. " </tr>\n",
  1344. " </thead>\n",
  1345. " <tbody>\n",
  1346. " \n",
  1347. " <tr>\n",
  1348. " <th> Bytes </th>\n",
  1349. " <td> 145.02 MiB </td>\n",
  1350. " <td> 118.65 MiB </td>\n",
  1351. " </tr>\n",
  1352. " \n",
  1353. " <tr>\n",
  1354. " <th> Shape </th>\n",
  1355. " <td> (11, 3, 1200, 1920) </td>\n",
  1356. " <td> (9, 3, 1200, 1920) </td>\n",
  1357. " </tr>\n",
  1358. " <tr>\n",
  1359. " <th> Dask graph </th>\n",
  1360. " <td colspan=\"2\"> 2 chunks in 104 graph layers </td>\n",
  1361. " </tr>\n",
  1362. " <tr>\n",
  1363. " <th> Data type </th>\n",
  1364. " <td colspan=\"2\"> uint16 numpy.ndarray </td>\n",
  1365. " </tr>\n",
  1366. " </tbody>\n",
  1367. " </table>\n",
  1368. " </td>\n",
  1369. " <td>\n",
  1370. " <svg width=\"374\" height=\"139\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n",
  1371. "\n",
  1372. " <!-- Horizontal lines -->\n",
  1373. " <line x1=\"0\" y1=\"0\" x2=\"25\" y2=\"0\" style=\"stroke-width:2\" />\n",
  1374. " <line x1=\"0\" y1=\"25\" x2=\"25\" y2=\"25\" style=\"stroke-width:2\" />\n",
  1375. "\n",
  1376. " <!-- Vertical lines -->\n",
  1377. " <line x1=\"0\" y1=\"0\" x2=\"0\" y2=\"25\" style=\"stroke-width:2\" />\n",
  1378. " <line x1=\"20\" y1=\"0\" x2=\"20\" y2=\"25\" />\n",
  1379. " <line x1=\"25\" y1=\"0\" x2=\"25\" y2=\"25\" style=\"stroke-width:2\" />\n",
  1380. "\n",
  1381. " <!-- Colored Rectangle -->\n",
  1382. " <polygon points=\"0.0,0.0 25.412616514582485,0.0 25.412616514582485,25.412616514582485 0.0,25.412616514582485\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
  1383. "\n",
  1384. " <!-- Text -->\n",
  1385. " <text x=\"12.706308\" y=\"45.412617\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >11</text>\n",
  1386. " <text x=\"45.412617\" y=\"12.706308\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(0,45.412617,12.706308)\">1</text>\n",
  1387. "\n",
  1388. "\n",
  1389. " <!-- Horizontal lines -->\n",
  1390. " <line x1=\"95\" y1=\"0\" x2=\"109\" y2=\"14\" style=\"stroke-width:2\" />\n",
  1391. " <line x1=\"95\" y1=\"75\" x2=\"109\" y2=\"89\" style=\"stroke-width:2\" />\n",
  1392. "\n",
  1393. " <!-- Vertical lines -->\n",
  1394. " <line x1=\"95\" y1=\"0\" x2=\"95\" y2=\"75\" style=\"stroke-width:2\" />\n",
  1395. " <line x1=\"109\" y1=\"14\" x2=\"109\" y2=\"89\" style=\"stroke-width:2\" />\n",
  1396. "\n",
  1397. " <!-- Colored Rectangle -->\n",
  1398. " <polygon points=\"95.0,0.0 109.9485979497544,14.948597949754403 109.9485979497544,89.9485979497544 95.0,75.0\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
  1399. "\n",
  1400. " <!-- Horizontal lines -->\n",
  1401. " <line x1=\"95\" y1=\"0\" x2=\"215\" y2=\"0\" style=\"stroke-width:2\" />\n",
  1402. " <line x1=\"109\" y1=\"14\" x2=\"229\" y2=\"14\" style=\"stroke-width:2\" />\n",
  1403. "\n",
  1404. " <!-- Vertical lines -->\n",
  1405. " <line x1=\"95\" y1=\"0\" x2=\"109\" y2=\"14\" style=\"stroke-width:2\" />\n",
  1406. " <line x1=\"215\" y1=\"0\" x2=\"229\" y2=\"14\" style=\"stroke-width:2\" />\n",
  1407. "\n",
  1408. " <!-- Colored Rectangle -->\n",
  1409. " <polygon points=\"95.0,0.0 215.0,0.0 229.9485979497544,14.948597949754403 109.9485979497544,14.948597949754403\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
  1410. "\n",
  1411. " <!-- Horizontal lines -->\n",
  1412. " <line x1=\"109\" y1=\"14\" x2=\"229\" y2=\"14\" style=\"stroke-width:2\" />\n",
  1413. " <line x1=\"109\" y1=\"89\" x2=\"229\" y2=\"89\" style=\"stroke-width:2\" />\n",
  1414. "\n",
  1415. " <!-- Vertical lines -->\n",
  1416. " <line x1=\"109\" y1=\"14\" x2=\"109\" y2=\"89\" style=\"stroke-width:2\" />\n",
  1417. " <line x1=\"229\" y1=\"14\" x2=\"229\" y2=\"89\" style=\"stroke-width:2\" />\n",
  1418. "\n",
  1419. " <!-- Colored Rectangle -->\n",
  1420. " <polygon points=\"109.9485979497544,14.948597949754403 229.9485979497544,14.948597949754403 229.9485979497544,89.9485979497544 109.9485979497544,89.9485979497544\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
  1421. "\n",
  1422. " <!-- Text -->\n",
  1423. " <text x=\"169.948598\" y=\"109.948598\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >1920</text>\n",
  1424. " <text x=\"249.948598\" y=\"52.448598\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(-90,249.948598,52.448598)\">1200</text>\n",
  1425. " <text x=\"92.474299\" y=\"102.474299\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(45,92.474299,102.474299)\">3</text>\n",
  1426. "</svg>\n",
  1427. " </td>\n",
  1428. " </tr>\n",
  1429. "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span>shotNum</span></div><div class='xr-var-dims'>(compX_final_current, runs)</div><div class='xr-var-dtype'>&lt;U2</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(11, 3), meta=np.ndarray&gt;</div><input id='attrs-0fe8bb8f-ab0e-401f-a5aa-a4b4ada06ef2' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-0fe8bb8f-ab0e-401f-a5aa-a4b4ada06ef2' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-5dcb4741-d547-41e8-8edd-ccc10624b80a' class='xr-var-data-in' type='checkbox'><label for='data-5dcb4741-d547-41e8-8edd-ccc10624b80a' 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'><table>\n",
  1430. " <tr>\n",
  1431. " <td>\n",
  1432. " <table style=\"border-collapse: collapse;\">\n",
  1433. " <thead>\n",
  1434. " <tr>\n",
  1435. " <td> </td>\n",
  1436. " <th> Array </th>\n",
  1437. " <th> Chunk </th>\n",
  1438. " </tr>\n",
  1439. " </thead>\n",
  1440. " <tbody>\n",
  1441. " \n",
  1442. " <tr>\n",
  1443. " <th> Bytes </th>\n",
  1444. " <td> 264 B </td>\n",
  1445. " <td> 264 B </td>\n",
  1446. " </tr>\n",
  1447. " \n",
  1448. " <tr>\n",
  1449. " <th> Shape </th>\n",
  1450. " <td> (11, 3) </td>\n",
  1451. " <td> (11, 3) </td>\n",
  1452. " </tr>\n",
  1453. " <tr>\n",
  1454. " <th> Dask graph </th>\n",
  1455. " <td colspan=\"2\"> 1 chunks in 1 graph layer </td>\n",
  1456. " </tr>\n",
  1457. " <tr>\n",
  1458. " <th> Data type </th>\n",
  1459. " <td colspan=\"2\"> <U2 numpy.ndarray </td>\n",
  1460. " </tr>\n",
  1461. " </tbody>\n",
  1462. " </table>\n",
  1463. " </td>\n",
  1464. " <td>\n",
  1465. " <svg width=\"93\" height=\"170\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n",
  1466. "\n",
  1467. " <!-- Horizontal lines -->\n",
  1468. " <line x1=\"0\" y1=\"0\" x2=\"43\" y2=\"0\" style=\"stroke-width:2\" />\n",
  1469. " <line x1=\"0\" y1=\"120\" x2=\"43\" y2=\"120\" style=\"stroke-width:2\" />\n",
  1470. "\n",
  1471. " <!-- Vertical lines -->\n",
  1472. " <line x1=\"0\" y1=\"0\" x2=\"0\" y2=\"120\" style=\"stroke-width:2\" />\n",
  1473. " <line x1=\"43\" y1=\"0\" x2=\"43\" y2=\"120\" style=\"stroke-width:2\" />\n",
  1474. "\n",
  1475. " <!-- Colored Rectangle -->\n",
  1476. " <polygon points=\"0.0,0.0 43.2160407718499,0.0 43.2160407718499,120.0 0.0,120.0\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
  1477. "\n",
  1478. " <!-- Text -->\n",
  1479. " <text x=\"21.608020\" y=\"140.000000\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >3</text>\n",
  1480. " <text x=\"63.216041\" y=\"60.000000\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(0,63.216041,60.000000)\">11</text>\n",
  1481. "</svg>\n",
  1482. " </td>\n",
  1483. " </tr>\n",
  1484. "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span>OD</span></div><div class='xr-var-dims'>(compX_final_current, runs, y, x)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(9, 3, 1200, 1920), meta=np.ndarray&gt;</div><input id='attrs-9b7351c0-40ea-46cb-87aa-81e82e2a9bd9' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-9b7351c0-40ea-46cb-87aa-81e82e2a9bd9' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-43315b10-c41f-435d-afd2-182f7bb50ddb' class='xr-var-data-in' type='checkbox'><label for='data-43315b10-c41f-435d-afd2-182f7bb50ddb' 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'><dt><span>IMAGE_SUBCLASS :</span></dt><dd>IMAGE_GRAYSCALE</dd><dt><span>IMAGE_VERSION :</span></dt><dd>1.2</dd><dt><span>IMAGE_WHITE_IS_ZERO :</span></dt><dd>0</dd></dl></div><div class='xr-var-data'><table>\n",
  1485. " <tr>\n",
  1486. " <td>\n",
  1487. " <table style=\"border-collapse: collapse;\">\n",
  1488. " <thead>\n",
  1489. " <tr>\n",
  1490. " <td> </td>\n",
  1491. " <th> Array </th>\n",
  1492. " <th> Chunk </th>\n",
  1493. " </tr>\n",
  1494. " </thead>\n",
  1495. " <tbody>\n",
  1496. " \n",
  1497. " <tr>\n",
  1498. " <th> Bytes </th>\n",
  1499. " <td> 580.08 MiB </td>\n",
  1500. " <td> 474.61 MiB </td>\n",
  1501. " </tr>\n",
  1502. " \n",
  1503. " <tr>\n",
  1504. " <th> Shape </th>\n",
  1505. " <td> (11, 3, 1200, 1920) </td>\n",
  1506. " <td> (9, 3, 1200, 1920) </td>\n",
  1507. " </tr>\n",
  1508. " <tr>\n",
  1509. " <th> Dask graph </th>\n",
  1510. " <td colspan=\"2\"> 2 chunks in 322 graph layers </td>\n",
  1511. " </tr>\n",
  1512. " <tr>\n",
  1513. " <th> Data type </th>\n",
  1514. " <td colspan=\"2\"> float64 numpy.ndarray </td>\n",
  1515. " </tr>\n",
  1516. " </tbody>\n",
  1517. " </table>\n",
  1518. " </td>\n",
  1519. " <td>\n",
  1520. " <svg width=\"374\" height=\"139\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n",
  1521. "\n",
  1522. " <!-- Horizontal lines -->\n",
  1523. " <line x1=\"0\" y1=\"0\" x2=\"25\" y2=\"0\" style=\"stroke-width:2\" />\n",
  1524. " <line x1=\"0\" y1=\"25\" x2=\"25\" y2=\"25\" style=\"stroke-width:2\" />\n",
  1525. "\n",
  1526. " <!-- Vertical lines -->\n",
  1527. " <line x1=\"0\" y1=\"0\" x2=\"0\" y2=\"25\" style=\"stroke-width:2\" />\n",
  1528. " <line x1=\"20\" y1=\"0\" x2=\"20\" y2=\"25\" />\n",
  1529. " <line x1=\"25\" y1=\"0\" x2=\"25\" y2=\"25\" style=\"stroke-width:2\" />\n",
  1530. "\n",
  1531. " <!-- Colored Rectangle -->\n",
  1532. " <polygon points=\"0.0,0.0 25.412616514582485,0.0 25.412616514582485,25.412616514582485 0.0,25.412616514582485\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
  1533. "\n",
  1534. " <!-- Text -->\n",
  1535. " <text x=\"12.706308\" y=\"45.412617\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >11</text>\n",
  1536. " <text x=\"45.412617\" y=\"12.706308\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(0,45.412617,12.706308)\">1</text>\n",
  1537. "\n",
  1538. "\n",
  1539. " <!-- Horizontal lines -->\n",
  1540. " <line x1=\"95\" y1=\"0\" x2=\"109\" y2=\"14\" style=\"stroke-width:2\" />\n",
  1541. " <line x1=\"95\" y1=\"75\" x2=\"109\" y2=\"89\" style=\"stroke-width:2\" />\n",
  1542. "\n",
  1543. " <!-- Vertical lines -->\n",
  1544. " <line x1=\"95\" y1=\"0\" x2=\"95\" y2=\"75\" style=\"stroke-width:2\" />\n",
  1545. " <line x1=\"109\" y1=\"14\" x2=\"109\" y2=\"89\" style=\"stroke-width:2\" />\n",
  1546. "\n",
  1547. " <!-- Colored Rectangle -->\n",
  1548. " <polygon points=\"95.0,0.0 109.9485979497544,14.948597949754403 109.9485979497544,89.9485979497544 95.0,75.0\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
  1549. "\n",
  1550. " <!-- Horizontal lines -->\n",
  1551. " <line x1=\"95\" y1=\"0\" x2=\"215\" y2=\"0\" style=\"stroke-width:2\" />\n",
  1552. " <line x1=\"109\" y1=\"14\" x2=\"229\" y2=\"14\" style=\"stroke-width:2\" />\n",
  1553. "\n",
  1554. " <!-- Vertical lines -->\n",
  1555. " <line x1=\"95\" y1=\"0\" x2=\"109\" y2=\"14\" style=\"stroke-width:2\" />\n",
  1556. " <line x1=\"215\" y1=\"0\" x2=\"229\" y2=\"14\" style=\"stroke-width:2\" />\n",
  1557. "\n",
  1558. " <!-- Colored Rectangle -->\n",
  1559. " <polygon points=\"95.0,0.0 215.0,0.0 229.9485979497544,14.948597949754403 109.9485979497544,14.948597949754403\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
  1560. "\n",
  1561. " <!-- Horizontal lines -->\n",
  1562. " <line x1=\"109\" y1=\"14\" x2=\"229\" y2=\"14\" style=\"stroke-width:2\" />\n",
  1563. " <line x1=\"109\" y1=\"89\" x2=\"229\" y2=\"89\" style=\"stroke-width:2\" />\n",
  1564. "\n",
  1565. " <!-- Vertical lines -->\n",
  1566. " <line x1=\"109\" y1=\"14\" x2=\"109\" y2=\"89\" style=\"stroke-width:2\" />\n",
  1567. " <line x1=\"229\" y1=\"14\" x2=\"229\" y2=\"89\" style=\"stroke-width:2\" />\n",
  1568. "\n",
  1569. " <!-- Colored Rectangle -->\n",
  1570. " <polygon points=\"109.9485979497544,14.948597949754403 229.9485979497544,14.948597949754403 229.9485979497544,89.9485979497544 109.9485979497544,89.9485979497544\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
  1571. "\n",
  1572. " <!-- Text -->\n",
  1573. " <text x=\"169.948598\" y=\"109.948598\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >1920</text>\n",
  1574. " <text x=\"249.948598\" y=\"52.448598\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(-90,249.948598,52.448598)\">1200</text>\n",
  1575. " <text x=\"92.474299\" y=\"102.474299\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(45,92.474299,102.474299)\">3</text>\n",
  1576. "</svg>\n",
  1577. " </td>\n",
  1578. " </tr>\n",
  1579. "</table></div></li></ul></div></li><li class='xr-section-item'><input id='section-a63ebf49-9886-4681-ba1a-6e4718d49545' class='xr-section-summary-in' type='checkbox' ><label for='section-a63ebf49-9886-4681-ba1a-6e4718d49545' class='xr-section-summary' >Indexes: <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-index-name'><div>compX_final_current</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-67fac2f8-b2f6-4fb9-8d02-3c04ac6d24f9' class='xr-index-data-in' type='checkbox'/><label for='index-67fac2f8-b2f6-4fb9-8d02-3c04ac6d24f9' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Float64Index([0.0, 0.002, 0.004, 0.006, 0.008, 0.01, 0.012, 0.014, 0.016,\n",
  1580. " 0.018, 0.02],\n",
  1581. " dtype=&#x27;float64&#x27;, name=&#x27;compX_final_current&#x27;))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>runs</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-fea26cbe-902d-436a-9a27-54039881eb60' class='xr-index-data-in' type='checkbox'/><label for='index-fea26cbe-902d-436a-9a27-54039881eb60' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Float64Index([0.0, 1.0, 2.0], dtype=&#x27;float64&#x27;, name=&#x27;runs&#x27;))</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-5d03d618-2e62-4ba2-9cc6-da9ff33c423f' class='xr-section-summary-in' type='checkbox' ><label for='section-5d03d618-2e62-4ba2-9cc6-da9ff33c423f' class='xr-section-summary' >Attributes: <span>(120)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'><dt><span>TOF_free :</span></dt><dd>0.022</dd><dt><span>abs_img_freq :</span></dt><dd>110.858</dd><dt><span>absorption_imaging_flag :</span></dt><dd>True</dd><dt><span>backup_data :</span></dt><dd>True</dd><dt><span>blink_off_time :</span></dt><dd>0.001</dd><dt><span>blink_on_time :</span></dt><dd>0.001</dd><dt><span>c_duration :</span></dt><dd>0.2</dd><dt><span>carrier_amp :</span></dt><dd>3</dd><dt><span>carrier_freq :</span></dt><dd>0.85</dd><dt><span>carrier_offset :</span></dt><dd>0</dd><dt><span>carrier_phase :</span></dt><dd>0</dd><dt><span>channel_in_use :</span></dt><dd>1</dd><dt><span>cmot_final_current :</span></dt><dd>0.65</dd><dt><span>cmot_hold :</span></dt><dd>0.06</dd><dt><span>cmot_initial_current :</span></dt><dd>0.18</dd><dt><span>compX_current :</span></dt><dd>0</dd><dt><span>compX_current_sg :</span></dt><dd>0.0</dd><dt><span>compX_initial_current :</span></dt><dd>0</dd><dt><span>compY_current :</span></dt><dd>0</dd><dt><span>compY_current_sg :</span></dt><dd>0.0</dd><dt><span>compY_final_current :</span></dt><dd>0</dd><dt><span>compY_initial_current :</span></dt><dd>0</dd><dt><span>compZ_current :</span></dt><dd>0</dd><dt><span>compZ_current_sg :</span></dt><dd>0.189</dd><dt><span>compZ_final_current :</span></dt><dd>0.264</dd><dt><span>compZ_initial_current :</span></dt><dd>0</dd><dt><span>default_camera :</span></dt><dd>0</dd><dt><span>deltaf :</span></dt><dd>0.161</dd><dt><span>evap_1_arm_1_final_pow :</span></dt><dd>0.35</dd><dt><span>evap_1_arm_1_mod_depth_final :</span></dt><dd>0</dd><dt><span>evap_1_arm_1_mod_depth_initial :</span></dt><dd>1.0</dd><dt><span>evap_1_arm_1_mod_ramp_duration :</span></dt><dd>1.15</dd><dt><span>evap_1_arm_1_pow_ramp_duration :</span></dt><dd>1.65</dd><dt><span>evap_1_arm_1_start_pow :</span></dt><dd>7</dd><dt><span>evap_1_arm_2_final_pow :</span></dt><dd>5</dd><dt><span>evap_1_arm_2_ramp_duration :</span></dt><dd>0.5</dd><dt><span>evap_1_arm_2_start_pow :</span></dt><dd>0</dd><dt><span>evap_1_mod_ramp_trunc_value :</span></dt><dd>1</dd><dt><span>evap_1_pow_ramp_trunc_value :</span></dt><dd>1.0</dd><dt><span>evap_1_rate_constant_1 :</span></dt><dd>0.525</dd><dt><span>evap_1_rate_constant_2 :</span></dt><dd>0.51</dd><dt><span>evap_2_arm_1_final_pow :</span></dt><dd>0.037</dd><dt><span>evap_2_arm_1_start_pow :</span></dt><dd>0.35</dd><dt><span>evap_2_arm_2_final_pow :</span></dt><dd>0.09</dd><dt><span>evap_2_arm_2_start_pow :</span></dt><dd>5</dd><dt><span>evap_2_ramp_duration :</span></dt><dd>1.0</dd><dt><span>evap_2_ramp_trunc_value :</span></dt><dd>1.0</dd><dt><span>evap_2_rate_constant_1 :</span></dt><dd>0.37</dd><dt><span>evap_2_rate_constant_2 :</span></dt><dd>0.71</dd><dt><span>evap_3_arm_1_final_pow :</span></dt><dd>0.1038</dd><dt><span>evap_3_arm_1_mod_depth_final :</span></dt><dd>0.43</dd><dt><span>evap_3_arm_1_mod_depth_initial :</span></dt><dd>0</dd><dt><span>evap_3_arm_1_start_pow :</span></dt><dd>0.037</dd><dt><span>evap_3_ramp_duration :</span></dt><dd>0.1</dd><dt><span>evap_3_ramp_trunc_value :</span></dt><dd>1.0</dd><dt><span>evap_3_rate_constant_1 :</sp
  1582. " 0.002 0.004 0.006 0.008 0.01 0.012 0.014 0.016 0.018 0.02 0. 0.002\n",
  1583. " 0.004 0.006 0.008 0.01 0.012 0.014 0.016 0.018 0.02 ]</dd><dt><span>runs :</span></dt><dd>[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 2. 2.\n",
  1584. " 2. 2. 2. 2. 2. 2. 2. 2. 2.]</dd><dt><span>scanAxis :</span></dt><dd>[&#x27;compX_final_current&#x27; &#x27;runs&#x27;]</dd><dt><span>scanAxisLength :</span></dt><dd>[33. 33.]</dd></dl></div></li></ul></div></div>"
  1585. ],
  1586. "text/plain": [
  1587. "<xarray.Dataset>\n",
  1588. "Dimensions: (compX_final_current: 11, runs: 3, y: 1200, x: 1920)\n",
  1589. "Coordinates:\n",
  1590. " * compX_final_current (compX_final_current) float64 0.0 0.002 ... 0.018 0.02\n",
  1591. " * runs (runs) float64 0.0 1.0 2.0\n",
  1592. "Dimensions without coordinates: y, x\n",
  1593. "Data variables:\n",
  1594. " atoms (compX_final_current, runs, y, x) uint16 dask.array<chunksize=(9, 3, 1200, 1920), meta=np.ndarray>\n",
  1595. " background (compX_final_current, runs, y, x) uint16 dask.array<chunksize=(9, 3, 1200, 1920), meta=np.ndarray>\n",
  1596. " dark (compX_final_current, runs, y, x) uint16 dask.array<chunksize=(9, 3, 1200, 1920), meta=np.ndarray>\n",
  1597. " shotNum (compX_final_current, runs) <U2 dask.array<chunksize=(11, 3), meta=np.ndarray>\n",
  1598. " OD (compX_final_current, runs, y, x) float64 dask.array<chunksize=(9, 3, 1200, 1920), meta=np.ndarray>\n",
  1599. "Attributes: (12/120)\n",
  1600. " TOF_free: 0.022\n",
  1601. " abs_img_freq: 110.858\n",
  1602. " absorption_imaging_flag: True\n",
  1603. " backup_data: True\n",
  1604. " blink_off_time: 0.001\n",
  1605. " blink_on_time: 0.001\n",
  1606. " ... ...\n",
  1607. " z_offset: 0.189\n",
  1608. " z_offset_img: 0.189\n",
  1609. " compX_final_current: [0. 0.002 0.004 0.006 0.008 0.01 0...\n",
  1610. " runs: [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 1...\n",
  1611. " scanAxis: ['compX_final_current' 'runs']\n",
  1612. " scanAxisLength: [33. 33.]"
  1613. ]
  1614. },
  1615. "execution_count": 15,
  1616. "metadata": {},
  1617. "output_type": "execute_result"
  1618. }
  1619. ],
  1620. "source": [
  1621. "shotNum = \"0069\"\n",
  1622. "filePath = folderPath + \"/\" + shotNum + \"/*.h5\"\n",
  1623. "# filePath = \"//DyLabNAS/Data/Evaporative_Cooling/2023/05/12/0065/*.h5\"\n",
  1624. "# filePath = './result_from_experiment/2023-04-24/0013/2023-04-24_0013_Evaporative_Cooling_08.h5'\n",
  1625. "\n",
  1626. "dataSetDict = {\n",
  1627. " dskey[groupList[i]]: read_hdf5_file(filePath, groupList[i])\n",
  1628. " for i in [0] # range(len(groupList))\n",
  1629. "}\n",
  1630. "\n",
  1631. "dataSet = dataSetDict[\"camera_1\"]\n",
  1632. "dataSet = swap_xy(dataSet)\n",
  1633. "\n",
  1634. "scanAxis = get_scanAxis(dataSet)\n",
  1635. "\n",
  1636. "dataSet = auto_rechunk(dataSet)\n",
  1637. "\n",
  1638. "dataSet = imageAnalyser.get_absorption_images(dataSet)\n",
  1639. "\n",
  1640. "dataSet"
  1641. ]
  1642. },
  1643. {
  1644. "attachments": {},
  1645. "cell_type": "markdown",
  1646. "metadata": {},
  1647. "source": [
  1648. "## Calculate an plot OD images"
  1649. ]
  1650. },
  1651. {
  1652. "cell_type": "code",
  1653. "execution_count": 18,
  1654. "metadata": {},
  1655. "outputs": [
  1656. {
  1657. "data": {
  1658. "image/png": "iVBORw0KGgoAAAANSUhEUgAAC5oAAANiCAYAAAC691e6AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOy9fXhVxbn+/wkESYBEEiARQYIaBdQgUAU1KKBRoUcsoKKCFS1YsUoVf0rFWmP0VFpqpT1apRWqtAes1GKVtuIxFiiiiHxRwRYUVBARQQxI0CgE1u+PZ541s1b2DgkEkuDc17Wvvfd6mTVv9zwv88yslCAIAjw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDwMmtR3Bjw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PBoWfKC5h4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4dHBD7Q3MPDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDIwIfaO7h4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4RGBDzT38PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PCIwAeae3h4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4ROADzT08PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PCLwgeYeHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4R+EBzDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+PCHyguUeN8OWXX/KTn/yEbt26kZ6eTkpKCikpKbz55psAdO7cmZSUFJ544ol6zWcc/fv3JyUlhXvuuae+s+LhUSt4znl4ND543np4NC54znp4ND543np4HF7wnPbwaHjwvPTwaFzwnPXwaHzwvPXwaFzwnPXwOPzgee3h4eHh4bF/8IHmjQS7d++mR48epKSk0Lt3b/bs2ZP02r1799K3b19SUlI4+eST+frrrw/4+Zdffjn//d//zerVq0lJSSE3N5fc3FyaNWt2wGl7fHPw17/+lXvuuYe//vWv9Z2VfSIZ59577z2uv/56jj32WNLS0sjJyeGCCy6gW7dudcK55cuXc9VVV9GmTZuQc7t37yYrK8tzzqPWaEycS4ZEnLvwwgv5y1/+UuXa/ZWVrVu3pkOHDjRv3pz27dszdOhQ/vnPf9Yof/Pnz2fo0KG0b9+eVq1ahbwNgiCprNy7dy8vvfQSt912G2eddRZt2rShWbNmZGdnc9ZZZ3H//fezbdu22lWUx2GDbxJv95ezxx9/PFdeeSUdO3Y8IN5mZ2dHZG2bNm1qLWvff/99WrZsGToiG5rj0ePg45vEWWg8sjaOZ599lssuu4xOnTqRlpZGmzZtOPXUUxk7diyvvvpqjfLhcfjgm8bb6pCM02qXurJ2yJAhFBQU1MjudXnbvHlzOnbsyFVXXcXy5csj1yXyNbVr147/+Z//oUePHnz44YcAjBs3jgEDBvDwww/XiY/L4/DC4cbp5s2bk5qaSkpKCieccEKd+IATcTqZLHZ5CZCZmUl6ejqjRo2iRYsWrF+/vm4K7XFY43DjZUOya1evXs3vf/97brzxRs4880wyMjJqPG+zZ88e74/ySIhvEmfh0Nq1cc62aNGCli1bHtB8q/dFecA3i7eNSdbG4f1RHopvEmdrgkS8Tma3lpaWVmv3JpK1KiOTIe6PateuHS1atOCKK64gIyMjtHt/9rOfeV+UR1J4Xu8btfFHKYIg4NVXX+Wuu+6if//+ocw98sgj+da3vsXEiRPZuHFjneTPw8NjPxB4NBq89dZbwRFHHBEAwX//938nve7nP/95AASpqanB66+/fsDPXbVqVQAEQPCnP/0p4TXnnntu0KVLl2DOnDkH/Ly6RL9+/QIgKC4uru+seARBMGrUqAAIRo0aVd9ZqRHinPv73/8etGjRIuRDZmZm0KRJk/B/SkpKsHTp0v1+3mOPPRakpqaG6cU/bj/2nPOoCRob5+LYF+euvfbaYO/evZF7aisr3c+RRx4ZpKSkJORcIhQXFyfla2pqavDYY49FrlfeFhUVRa5t0qRJ0Lp168ix3Nzc4NVXX93vuqsNPG8bFr5pvK0tZ5s2bRo0bdr0kPB2X7J27969wYABAyJpPP7447Wqr/2B52zDwjeNs0HQOGSt8nb79u3BBRdcELmvdevWQbNmzcL/N998837VXW3geduw8E3kbXWIczpul8Z526RJk2p9TS5vU1JSgiOPPDIhbxP5ml544YWgVatWVXRl9//JJ58cfPzxxwdWiQcIz+mGhcOR0y7nevXqlZTTNfEB74vTbj+O81L7eqKP90d5VIfDkZcNxa6tjpeJ4OrHY8aMaTD+KM/ZhoVvGmeD4NDZtdVxdn/mW+vLFxUEnrcNDd803jYWWatoCP4oz9mGhW8aZ2sCl9dDhgyp1m6tzu6tLWfjdm/cF9WkSZPI+NFQfFFB4Hnd0OB5XT1q449y8d///d8R/qWkpAStW7eO3JuZmRk8++yz+503Dw+P/YcPNG9k0EH1iCOOCN58880q599+++2gefPmARDcfffddfLM2bNnB0DQpk2bOknvUMIrWw0LjVHZcjmXlpYWAEFhYWHwzjvvBEEQBEuXLo0YGz//+c/36zmvvPJKmM7pp58ecm7r1q3B9ddfH6b/1FNP1WXx6hyecw0LjZFzivfffz9o2bJlFc6Vl5cHd999d7Wcq4msVOeFOjA2bNgQBEFQY8499dRT4TXXX399MH369AAIsrKygiFDhoTOzFdeeaXKvaNGjQpycnKC2267LXjllVeCXbt2hWWbNm1a0KZNmwAIsrOzgy1btux3HdYUnrcNC99E3tZGv1VHwoHyVhd8tGnTJtiwYcM+eZsIU6dODYDgrLPOOqSTe56zDQvfRM4GQcOXtUEQBF999VVw2mmnBUBw1FFHBdOmTQu2bdsWBEEQ7NmzJ/jwww+D3/3ud8Ef//jH/am+WsHztmHhm8rb6qCcbtasWTih4PL25Zdfjti9NeXt1q1bgyAIEsrauK/ps88+C4PdOnXqFPztb38L9eQdO3YEv/rVr8LJiYsvvni/6q+u4DndsHC4ctoNIksUhFITH7Dra6qJLI7z8rzzzgu6desWXHXVVcGDDz4Y3HrrrdVO2NcnPC8bFg5XXjYEu9bl5dVXX73PQBoXDckf5TnbsPBN5GwQHBq7Ni5LL7roogOSpfXliwoCz9uGhm8ibxuDrA2ChuOP8pxtWPgmcrYmiAeUxjl72WWXhecuueSShGnU1m517d7G5IsKAs/rhgbP6+SorT/KRXFxcZCZmRmMHTs2+Oc//xl8+eWXQRAEwZdffhn85S9/CTp16hTqA//5z3/2swY8PDz2Fw3PK+xRLSorK8Mg1FNPPTVUdIIgCHbt2hX06tUrAIKePXtGzh0InnjiiQAI8vLy6iS9QwmvbDUsNEZly+UcyK4u6hBwOaeO+MzMzKCsrKzWz+nbt28ABAUFBcG0adOqcO7CCy8Mj1VWVtZR6eoennMNC42Rc4qrrroqdMQp51x8//vfT8q5mspKIDjllFMSysvqOFdZWRnk5eUFQHDhhRcGQRCVlV9//XVQUFAQAEHfvn2rpL1kyZLQKEqEV155JczffffdV2091QU8bxsWvom8rSln1elRUFBwwLyN67f74m0cH374YZCZmRlkZWUFS5YsOaSTe56zDQvfRM4GQcOXtUEQBD/60Y/CQJn333+/ttVTp/C8bVj4pvK2OsTtXpe3LqczMjJqxVsXcd7GZbH+B4L58+cnzOddd90VgOwu9cUXX9S4fHUNz+mGhcOV05WVlUG7du3CPr958+b
  1659. "text/plain": [
  1660. "<Figure size 3400x900 with 34 Axes>"
  1661. ]
  1662. },
  1663. "metadata": {},
  1664. "output_type": "display_data"
  1665. }
  1666. ],
  1667. "source": [
  1668. "# imageAnalyser.center = (960, 1040)\n",
  1669. "# imageAnalyser.span = (100, 100)\n",
  1670. "# imageAnalyser.fraction = (0.1, 0.1)\n",
  1671. "\n",
  1672. "imageAnalyser.center = (960, 875)\n",
  1673. "imageAnalyser.span = (300, 300)\n",
  1674. "imageAnalyser.fraction = (0.1, 0.1)\n",
  1675. "\n",
  1676. "dataSet_cropOD = imageAnalyser.crop_image(dataSet.OD)\n",
  1677. "dataSet_cropOD = imageAnalyser.substract_offset(dataSet_cropOD).load()\n",
  1678. "\n",
  1679. "dataSet_cropOD.plot.pcolormesh(cmap='jet', vmin=0, col=scanAxis[0], row=scanAxis[1])\n",
  1680. "plt.show()"
  1681. ]
  1682. },
  1683. {
  1684. "cell_type": "code",
  1685. "execution_count": 22,
  1686. "metadata": {},
  1687. "outputs": [],
  1688. "source": [
  1689. "from DataContainer.MongoDB import MongoDB\n",
  1690. "\n",
  1691. "DB = MongoDB(mongoClient, mongoDB, date='2023/05/23')\n",
  1692. "\n",
  1693. "DB.create_global('0069', dataSet)\n",
  1694. "\n",
  1695. "DB.read_global_all('0069')\n",
  1696. "\n",
  1697. "DB.add_data('0069', dataSet_cropOD, engine='xarray')"
  1698. ]
  1699. },
  1700. {
  1701. "cell_type": "code",
  1702. "execution_count": 20,
  1703. "metadata": {},
  1704. "outputs": [
  1705. {
  1706. "data": {
  1707. "text/plain": [
  1708. "{'TOF_free': 0.022,\n",
  1709. " 'abs_img_freq': 110.858,\n",
  1710. " 'absorption_imaging_flag': True,\n",
  1711. " 'backup_data': True,\n",
  1712. " 'blink_off_time': 0.001,\n",
  1713. " 'blink_on_time': 0.001,\n",
  1714. " 'c_duration': 0.2,\n",
  1715. " 'carrier_amp': 3,\n",
  1716. " 'carrier_freq': 0.85,\n",
  1717. " 'carrier_offset': 0,\n",
  1718. " 'carrier_phase': 0,\n",
  1719. " 'channel_in_use': 1,\n",
  1720. " 'cmot_final_current': 0.65,\n",
  1721. " 'cmot_hold': 0.06,\n",
  1722. " 'cmot_initial_current': 0.18,\n",
  1723. " 'compX_current': 0,\n",
  1724. " 'compX_current_sg': 0.0,\n",
  1725. " 'compX_initial_current': 0,\n",
  1726. " 'compY_current': 0,\n",
  1727. " 'compY_current_sg': 0.0,\n",
  1728. " 'compY_final_current': 0,\n",
  1729. " 'compY_initial_current': 0,\n",
  1730. " 'compZ_current': 0,\n",
  1731. " 'compZ_current_sg': 0.189,\n",
  1732. " 'compZ_final_current': 0.264,\n",
  1733. " 'compZ_initial_current': 0,\n",
  1734. " 'default_camera': 0,\n",
  1735. " 'deltaf': 0.161,\n",
  1736. " 'evap_1_arm_1_final_pow': 0.35,\n",
  1737. " 'evap_1_arm_1_mod_depth_final': 0,\n",
  1738. " 'evap_1_arm_1_mod_depth_initial': 1.0,\n",
  1739. " 'evap_1_arm_1_mod_ramp_duration': 1.15,\n",
  1740. " 'evap_1_arm_1_pow_ramp_duration': 1.65,\n",
  1741. " 'evap_1_arm_1_start_pow': 7,\n",
  1742. " 'evap_1_arm_2_final_pow': 5,\n",
  1743. " 'evap_1_arm_2_ramp_duration': 0.5,\n",
  1744. " 'evap_1_arm_2_start_pow': 0,\n",
  1745. " 'evap_1_mod_ramp_trunc_value': 1,\n",
  1746. " 'evap_1_pow_ramp_trunc_value': 1.0,\n",
  1747. " 'evap_1_rate_constant_1': 0.525,\n",
  1748. " 'evap_1_rate_constant_2': 0.51,\n",
  1749. " 'evap_2_arm_1_final_pow': 0.037,\n",
  1750. " 'evap_2_arm_1_start_pow': 0.35,\n",
  1751. " 'evap_2_arm_2_final_pow': 0.09,\n",
  1752. " 'evap_2_arm_2_start_pow': 5,\n",
  1753. " 'evap_2_ramp_duration': 1.0,\n",
  1754. " 'evap_2_ramp_trunc_value': 1.0,\n",
  1755. " 'evap_2_rate_constant_1': 0.37,\n",
  1756. " 'evap_2_rate_constant_2': 0.71,\n",
  1757. " 'evap_3_arm_1_final_pow': 0.1038,\n",
  1758. " 'evap_3_arm_1_mod_depth_final': 0.43,\n",
  1759. " 'evap_3_arm_1_mod_depth_initial': 0,\n",
  1760. " 'evap_3_arm_1_start_pow': 0.037,\n",
  1761. " 'evap_3_ramp_duration': 0.1,\n",
  1762. " 'evap_3_ramp_trunc_value': 1.0,\n",
  1763. " 'evap_3_rate_constant_1': -0.879,\n",
  1764. " 'evap_3_rate_constant_2': -0.297,\n",
  1765. " 'final_amp': 0.00012,\n",
  1766. " 'final_freq': 104.0,\n",
  1767. " 'final_pow_1': 0.1038,\n",
  1768. " 'final_pow_2': 0.09,\n",
  1769. " 'gradCoil_current': 0.18,\n",
  1770. " 'gradCoil_current_sg': 0,\n",
  1771. " 'imaging_method': 'in_situ_absorption',\n",
  1772. " 'imaging_pulse_duration': 2.5e-05,\n",
  1773. " 'imaging_wavelength': 4.21291e-07,\n",
  1774. " 'initial_amp': 0.62,\n",
  1775. " 'initial_freq': 102.13,\n",
  1776. " 'mod_depth_fin': 0.43,\n",
  1777. " 'mod_depth_ini': 0,\n",
  1778. " 'mod_depth_initial': 1.0,\n",
  1779. " 'mot_3d_amp': 0.62,\n",
  1780. " 'mot_3d_camera_trigger_duration': 0.00025,\n",
  1781. " 'mot_3d_freq': 102.13,\n",
  1782. " 'mot_load_duration': 2,\n",
  1783. " 'odt_axis_camera_trigger_duration': 0.002,\n",
  1784. " 'odt_hold_time_1': 0.01,\n",
  1785. " 'odt_hold_time_2': 0.1,\n",
  1786. " 'odt_hold_time_3': 0.1,\n",
  1787. " 'odt_hold_time_4': 1.0,\n",
  1788. " 'odt_hold_time_5': 0.01,\n",
  1789. " 'operation_mode': 'SWEEP',\n",
  1790. " 'pow_arm_1': 7,\n",
  1791. " 'pow_arm_2': 0,\n",
  1792. " 'pulse_delay': 8e-05,\n",
  1793. " 'pulse_width': 0.01,\n",
  1794. " 'push_amp': 0.16,\n",
  1795. " 'push_freq': 102.66,\n",
  1796. " 'ramp_duration': 1,\n",
  1797. " 'recomp_ramp_duration': 0.5,\n",
  1798. " 'recomp_ramp_pow_fin_arm_1': 0.1038,\n",
  1799. " 'recomp_ramp_pow_fin_arm_2': 0.09,\n",
  1800. " 'recomp_ramp_pow_ini_arm_1': 0.1038,\n",
  1801. " 'recomp_ramp_pow_ini_arm_2': 0.09,\n",
  1802. " 'save_results': False,\n",
  1803. " 'sin_mod_amplitude': 0.00519,\n",
  1804. " 'sin_mod_dc_offset': 0.1038,\n",
  1805. " 'sin_mod_duration': nan,\n",
  1806. " 'sin_mod_freq': nan,\n",
  1807. " 'sin_mod_phase': 0.0,\n",
  1808. " 'start_pow_1': 0.037,\n",
  1809. " 'start_pow_2': 0.09,\n",
  1810. " 'stern_gerlach_duration': 0.001,\n",
  1811. " 'sweep_duration': 0.4,\n",
  1812. " 'sweep_start_freq': 0.7695,\n",
  1813. " 'sweep_stop_freq': 0.9305,\n",
  1814. " 'tf_meas_ramp_duration': 0.1,\n",
  1815. " 'wait_after_2dmot_off': 0,\n",
  1816. " 'wait_time_between_images': 0.22,\n",
  1817. " 'wavetype': 'SINE',\n",
  1818. " 'x_offset': 0.0,\n",
  1819. " 'x_offset_img': 0,\n",
  1820. " 'y_offset': 0.0,\n",
  1821. " 'y_offset_img': 0,\n",
  1822. " 'z_offset': 0.189,\n",
  1823. " 'z_offset_img': 0.189,\n",
  1824. " 'compX_final_current': array([0. , 0.002, 0.004, 0.006, 0.008, 0.01 , 0.012, 0.014, 0.016,\n",
  1825. " 0.018, 0.02 , 0. , 0.002, 0.004, 0.006, 0.008, 0.01 , 0.012,\n",
  1826. " 0.014, 0.016, 0.018, 0.02 , 0. , 0.002, 0.004, 0.006, 0.008,\n",
  1827. " 0.01 , 0.012, 0.014, 0.016, 0.018, 0.02 ]),\n",
  1828. " 'runs': array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 1., 1., 1., 1., 1.,\n",
  1829. " 1., 1., 1., 1., 1., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2.]),\n",
  1830. " 'scanAxis': ['compX_final_current', 'runs'],\n",
  1831. " 'scanAxisLength': array([33., 33.])}"
  1832. ]
  1833. },
  1834. "execution_count": 20,
  1835. "metadata": {},
  1836. "output_type": "execute_result"
  1837. }
  1838. ],
  1839. "source": [
  1840. "DB.read_global_all('0069')"
  1841. ]
  1842. },
  1843. {
  1844. "cell_type": "code",
  1845. "execution_count": 27,
  1846. "metadata": {},
  1847. "outputs": [
  1848. {
  1849. "data": {
  1850. "text/plain": [
  1851. "{'OD': <xarray.DataArray 'OD' (y: 300, x: 300)>\n",
  1852. " array([[-0.16156055, -0.05236126, -0.06646893, ..., -0.00193041,\n",
  1853. " -0.04918329, -0.00193041],\n",
  1854. " [-0.05072057, 0.01406993, -0.00193041, ..., 0.04252135,\n",
  1855. " -0.03091795, 0.10034844],\n",
  1856. " [-0.069753 , -0.06862178, -0.12908558, ..., 0.04187221,\n",
  1857. " -0.00193041, -0.07390391],\n",
  1858. " ...,\n",
  1859. " [ 0.12868977, -0.02390931, -0.00193041, ..., 0.01487671,\n",
  1860. " 0.07562783, 0.10343011],\n",
  1861. " [ 0.09570806, 0.11247994, -0.04739278, ..., 0.01288468,\n",
  1862. " -0.04845042, 0.02981829],\n",
  1863. " [ 0.20392165, 0.07039025, -0.04955846, ..., 0.02792256,\n",
  1864. " -0.12976378, -0.03367911]])\n",
  1865. " Coordinates:\n",
  1866. " compX_final_current float64 0.002\n",
  1867. " runs float64 0.0\n",
  1868. " Dimensions without coordinates: y, x\n",
  1869. " Attributes:\n",
  1870. " IMAGE_SUBCLASS: IMAGE_GRAYSCALE\n",
  1871. " IMAGE_VERSION: 1.2\n",
  1872. " IMAGE_WHITE_IS_ZERO: 0\n",
  1873. " x_start: 810\n",
  1874. " x_end: 1110\n",
  1875. " y_end: 1025\n",
  1876. " y_start: 725\n",
  1877. " x_center: 960\n",
  1878. " y_center: 875\n",
  1879. " x_span: 300\n",
  1880. " y_span: 300}"
  1881. ]
  1882. },
  1883. "execution_count": 27,
  1884. "metadata": {},
  1885. "output_type": "execute_result"
  1886. }
  1887. ],
  1888. "source": [
  1889. "res = DB.load_data_single('0069', 1, field={'OD':None})\n",
  1890. "res"
  1891. ]
  1892. },
  1893. {
  1894. "cell_type": "code",
  1895. "execution_count": null,
  1896. "metadata": {},
  1897. "outputs": [],
  1898. "source": []
  1899. },
  1900. {
  1901. "cell_type": "code",
  1902. "execution_count": null,
  1903. "metadata": {},
  1904. "outputs": [],
  1905. "source": [
  1906. "from collections import OrderedDict\n",
  1907. "\n",
  1908. "import numpy as np\n",
  1909. "import pymongo\n",
  1910. "import xarray_mongodb\n",
  1911. "import bson\n",
  1912. "import builtins\n",
  1913. "\n",
  1914. "import xarray as xr\n",
  1915. "\n",
  1916. "from ToolFunction.ToolFunction import get_date\n",
  1917. "\n",
  1918. "\n",
  1919. "npTypeDict = {v: getattr(builtins, k) for k, v in np.sctypeDict.items() if k in vars(builtins)}\n",
  1920. "npArrayType = type(np.array([0]))\n",
  1921. "\n",
  1922. "\n",
  1923. "class MongoDB:\n",
  1924. " \n",
  1925. " def __init__(self, mongoClient, mongoDB, date=None) -> None:\n",
  1926. " self.mongoClient = mongoClient\n",
  1927. " self.mongoDB = mongoDB\n",
  1928. " self.xdb = xarray_mongodb.XarrayMongoDB(mongoDB)\n",
  1929. " \n",
  1930. " if date is None:\n",
  1931. " date= get_date()\n",
  1932. " self.set_date(date)\n",
  1933. " \n",
  1934. " def _convert_numpy_type(self, data):\n",
  1935. " for key in data:\n",
  1936. " typeKey = type(data[key])\n",
  1937. " if typeKey in npTypeDict:\n",
  1938. " data[key] = data[key].item()\n",
  1939. " elif typeKey == npArrayType:\n",
  1940. " data[key] = data[key].tolist()\n",
  1941. " else:\n",
  1942. " try:\n",
  1943. " data[key] = data[key].item()\n",
  1944. " except:\n",
  1945. " pass\n",
  1946. " return data\n",
  1947. " \n",
  1948. " def _break_dataSet(self, dataSet, scanAxis=None):\n",
  1949. " \n",
  1950. " if scanAxis is None:\n",
  1951. " scanAxis = dataSet.attrs['scanAxis'] \n",
  1952. " \n",
  1953. " dataArray = dataSet.shotNum\n",
  1954. " \n",
  1955. " stackedDataArray = dataArray.stack(_scanAxis=tuple(scanAxis)) \n",
  1956. "\n",
  1957. " return stackedDataArray\n",
  1958. " \n",
  1959. " def set_date(self, date):\n",
  1960. " date = date.split(\"/\")\n",
  1961. " self.year = int(date[0])\n",
  1962. " self.month = int(date[1])\n",
  1963. " self.day = int(date[2])\n",
  1964. " \n",
  1965. " def create_global(self, shotNum, dataSet=None, date=None):\n",
  1966. " if not date is None:\n",
  1967. " self.set_date(date)\n",
  1968. " \n",
  1969. " data = {\n",
  1970. " 'year': self.year,\n",
  1971. " 'month': self.month,\n",
  1972. " 'day': self.day,\n",
  1973. " 'shotNum': shotNum,\n",
  1974. " }\n",
  1975. "\n",
  1976. " self.mongoDB['global'].delete_many(data)\n",
  1977. " \n",
  1978. " data = {\n",
  1979. " 'year': self.year,\n",
  1980. " 'month': self.month,\n",
  1981. " 'day': self.day,\n",
  1982. " 'shotNum': shotNum,\n",
  1983. " 'runNum': 0,\n",
  1984. " 'global_parameters' : {},\n",
  1985. " }\n",
  1986. " \n",
  1987. " global_parameters = self._convert_numpy_type(dataSet.attrs)\n",
  1988. " \n",
  1989. " if not dataSet is None:\n",
  1990. " data['global_parameters'].update(global_parameters)\n",
  1991. " \n",
  1992. " data = self._convert_numpy_type(data)\n",
  1993. " \n",
  1994. " if 'scanAxis' in dataSet.attrs:\n",
  1995. " \n",
  1996. " del data['global_parameters']['scanAxis']\n",
  1997. " del data['global_parameters']['scanAxisLength']\n",
  1998. " \n",
  1999. " scanAxis = dataSet.attrs['scanAxis']\n",
  2000. " data['global_parameters'].update(\n",
  2001. " {\n",
  2002. " key:0\n",
  2003. " for key in scanAxis\n",
  2004. " }\n",
  2005. " )\n",
  2006. " \n",
  2007. " stackedDataArray = self._break_dataSet(dataSet)\n",
  2008. " try:\n",
  2009. " stackedDataArray.load()\n",
  2010. " except:\n",
  2011. " pass\n",
  2012. " \n",
  2013. " stackedDataArray = stackedDataArray.groupby('_scanAxis')\n",
  2014. " \n",
  2015. " for i in stackedDataArray:\n",
  2016. " \n",
  2017. " stackedDataArray_single = i[1]\n",
  2018. " \n",
  2019. " data.update(\n",
  2020. " {\n",
  2021. " 'runNum': int(stackedDataArray_single.item())\n",
  2022. " }\n",
  2023. " )\n",
  2024. " \n",
  2025. " data['global_parameters'].update(\n",
  2026. " {\n",
  2027. " key: stackedDataArray_single[key].item()\n",
  2028. " for key in scanAxis\n",
  2029. " }\n",
  2030. " )\n",
  2031. " \n",
  2032. " if '_id' in data:\n",
  2033. " del data['_id']\n",
  2034. " \n",
  2035. " self.mongoDB['global'].insert_one(data)\n",
  2036. " \n",
  2037. " else:\n",
  2038. " self.mongoDB['global'].insert_one(data)\n",
  2039. " \n",
  2040. " def _add_data_normal(self, shotNum, runNum, data):\n",
  2041. " \n",
  2042. " if runNum is None:\n",
  2043. " runNum = 0\n",
  2044. " \n",
  2045. " filter = { \n",
  2046. " 'year': self.year,\n",
  2047. " 'month': self.month,\n",
  2048. " 'day': self.day,\n",
  2049. " 'shotNum': shotNum,\n",
  2050. " 'runNum': runNum,\n",
  2051. " }\n",
  2052. " \n",
  2053. " self.mongoDB['global'].update_one(filter, {\"$set\": data}, upsert=False)\n",
  2054. " \n",
  2055. " def _add_data_xarray_dataArray(self, shotNum, dataArray, name=None, scanAxis=None):\n",
  2056. " \n",
  2057. " if scanAxis is None:\n",
  2058. " scanAxis = list(dataArray.coords)\n",
  2059. " \n",
  2060. " dataArray.attrs = self._convert_numpy_type(dataArray.attrs)\n",
  2061. " \n",
  2062. " stackedDataArray = dataArray.stack(_scanAxis=tuple(scanAxis))\n",
  2063. " stackedDataArray = stackedDataArray.groupby('_scanAxis')\n",
  2064. " \n",
  2065. " filter = { \n",
  2066. " 'year': self.year,\n",
  2067. " 'month': self.month,\n",
  2068. " 'day': self.day,\n",
  2069. " 'shotNum': shotNum,\n",
  2070. " }\n",
  2071. " \n",
  2072. " for i in stackedDataArray:\n",
  2073. " \n",
  2074. " stackedDataArray_single = i[1].drop('_scanAxis')\n",
  2075. " \n",
  2076. " global_parameters = {\n",
  2077. " 'global_parameters.' + key: stackedDataArray_single[key].item()\n",
  2078. " for key in scanAxis\n",
  2079. " }\n",
  2080. "\n",
  2081. " filter.update(global_parameters)\n",
  2082. " \n",
  2083. " mongoID, _ = self.xdb.put(stackedDataArray_single)\n",
  2084. " \n",
  2085. " data_label = {\n",
  2086. " dataArray.name: \n",
  2087. " {\n",
  2088. " 'name': dataArray.name,\n",
  2089. " 'mongoID': mongoID,\n",
  2090. " 'engine': 'xarray',\n",
  2091. " 'dtype': 'dataArray',\n",
  2092. " }\n",
  2093. " }\n",
  2094. " \n",
  2095. " self.mongoDB['global'].update_one(filter, {\"$set\": data_label}, upsert=False)\n",
  2096. " \n",
  2097. " def _add_data_xarray_dataSet(self, shotNum, dataSet, name, scanAxis=None):\n",
  2098. " \n",
  2099. " if scanAxis is None:\n",
  2100. " scanAxis = list(dataSet.coords)\n",
  2101. " \n",
  2102. " dataSet.attrs = self._convert_numpy_type(dataSet.attrs)\n",
  2103. " \n",
  2104. " for key in list(dataSet.data_vars):\n",
  2105. " dataSet[key].attrs = self._convert_numpy_type(dataSet[key].attrs)\n",
  2106. " \n",
  2107. " stackedDataSet = dataSet.stack(_scanAxis=tuple(scanAxis))\n",
  2108. " stackedDataSet = stackedDataSet.groupby('_scanAxis')\n",
  2109. " \n",
  2110. " filter = { \n",
  2111. " 'year': self.year,\n",
  2112. " 'month': self.month,\n",
  2113. " 'day': self.day,\n",
  2114. " 'shotNum': shotNum,\n",
  2115. " }\n",
  2116. " \n",
  2117. " for i in stackedDataSet:\n",
  2118. " \n",
  2119. " stackedDataSet_single = i[1].drop('_scanAxis')\n",
  2120. " \n",
  2121. " global_parameters = {\n",
  2122. " 'global_parameters.' + key: stackedDataSet_single[key].item()\n",
  2123. " for key in scanAxis\n",
  2124. " }\n",
  2125. "\n",
  2126. " filter.update(global_parameters)\n",
  2127. " \n",
  2128. " mongoID, _ = self.xdb.put(dataSet)\n",
  2129. " \n",
  2130. " data_label = {\n",
  2131. " name: \n",
  2132. " {\n",
  2133. " 'name': name,\n",
  2134. " 'mongoID': mongoID,\n",
  2135. " 'engine': 'xarray',\n",
  2136. " 'dtype': 'dataSet',\n",
  2137. " }\n",
  2138. " }\n",
  2139. " \n",
  2140. " self.mongoDB['global'].update_one(filter, {\"$set\": data_label}, upsert=False)\n",
  2141. " \n",
  2142. " def _add_data_additional(self, shotNum, runNum, data, name):\n",
  2143. " \n",
  2144. " if runNum is None:\n",
  2145. " runNum = 0\n",
  2146. " \n",
  2147. " filter = { \n",
  2148. " 'year': self.year,\n",
  2149. " 'month': self.month,\n",
  2150. " 'day': self.day,\n",
  2151. " 'shotNum': shotNum,\n",
  2152. " 'runNum': runNum,\n",
  2153. " }\n",
  2154. " \n",
  2155. " mongoID = self.mongoDB.additional.insert_one(data).inserted_id\n",
  2156. " \n",
  2157. " data_label = {\n",
  2158. " name: \n",
  2159. " {\n",
  2160. " 'name': name,\n",
  2161. " 'mongoID': mongoID,\n",
  2162. " 'engine': 'additional',\n",
  2163. " 'dtype': 'dict',\n",
  2164. " }\n",
  2165. " }\n",
  2166. " \n",
  2167. " self.mongoDB['global'].update_one(filter, {\"$set\": data_label}, upsert=False)\n",
  2168. " \n",
  2169. " def add_data(self, shotNum, data, runNum=None, date=None, name=None, engine='normal'):\n",
  2170. " if not date is None:\n",
  2171. " self.set_date(date)\n",
  2172. " \n",
  2173. " if engine == 'normal':\n",
  2174. " self._add_data_normal(shotNum=shotNum, runNum=runNum, data=data)\n",
  2175. " elif engine == 'xarray':\n",
  2176. " if isinstance(data, type(xr.Dataset())):\n",
  2177. " self._add_data_xarray_dataSet(shotNum=shotNum, dataSet=data, name=name)\n",
  2178. " else:\n",
  2179. " self._add_data_xarray_dataArray(shotNum=shotNum, dataArray=data, name=name)\n",
  2180. " elif engine == 'additional':\n",
  2181. " self._add_data_additional(shotNum=shotNum, runNum=runNum, data=data, name=name)\n",
  2182. " \n",
  2183. " def read_global_single(self, shotNum, runNum, date=None):\n",
  2184. " \n",
  2185. " if not date is None:\n",
  2186. " self.set_date(date)\n",
  2187. " \n",
  2188. " filter = { \n",
  2189. " 'year': self.year,\n",
  2190. " 'month': self.month,\n",
  2191. " 'day': self.day,\n",
  2192. " 'shotNum': shotNum,\n",
  2193. " 'runNum': runNum,\n",
  2194. " }\n",
  2195. " \n",
  2196. " return self.mongoDB['global'].find_one(filter)\n",
  2197. " \n",
  2198. " def read_global_all(self, shotNum, date=None):\n",
  2199. " \n",
  2200. " from xarray.core.utils import equivalent\n",
  2201. " \n",
  2202. " if not date is None:\n",
  2203. " self.set_date(date)\n",
  2204. " \n",
  2205. " filter = { \n",
  2206. " 'year': self.year,\n",
  2207. " 'month': self.month,\n",
  2208. " 'day': self.day,\n",
  2209. " 'shotNum': shotNum,\n",
  2210. " }\n",
  2211. " \n",
  2212. " result = {}\n",
  2213. " dropped_attrs = OrderedDict()\n",
  2214. " \n",
  2215. " docs = self.mongoDB['global'].find(filter).sort('runNum')\n",
  2216. " docs = [doc['global_parameters'] for doc in docs]\n",
  2217. " \n",
  2218. " for doc in docs:\n",
  2219. " \n",
  2220. " global_parameters = doc\n",
  2221. " \n",
  2222. " result.update(\n",
  2223. " {\n",
  2224. " key: value\n",
  2225. " for key, value in global_parameters.items()\n",
  2226. " if key not in result and key not in dropped_attrs.keys()\n",
  2227. " }\n",
  2228. " )\n",
  2229. " \n",
  2230. " result = {\n",
  2231. " key: value\n",
  2232. " for key, value in result.items()\n",
  2233. " if key not in global_parameters or equivalent(global_parameters[key], value)\n",
  2234. " }\n",
  2235. " \n",
  2236. " dropped_attrs.update(\n",
  2237. " {\n",
  2238. " key: []\n",
  2239. " for key in global_parameters if key not in result \n",
  2240. " }\n",
  2241. " )\n",
  2242. " \n",
  2243. " for doc in docs:\n",
  2244. " \n",
  2245. " global_parameters = doc\n",
  2246. " \n",
  2247. " dropped_attrs.update(\n",
  2248. " {\n",
  2249. " key: np.append(dropped_attrs[key], global_parameters[key])\n",
  2250. " for key in dropped_attrs.keys()\n",
  2251. " }\n",
  2252. " ) \n",
  2253. " \n",
  2254. " scan_attrs = OrderedDict()\n",
  2255. " scan_length = []\n",
  2256. " \n",
  2257. " for attrs_key in dropped_attrs.keys():\n",
  2258. " flag = True\n",
  2259. " for key in scan_attrs.keys():\n",
  2260. " if equivalent(scan_attrs[key], dropped_attrs[attrs_key]):\n",
  2261. " flag = False\n",
  2262. " result.update({attrs_key: key})\n",
  2263. " break\n",
  2264. " if flag:\n",
  2265. " scan_attrs.update({\n",
  2266. " attrs_key: dropped_attrs[attrs_key]\n",
  2267. " })\n",
  2268. " scan_length = np.append(scan_length, len(dropped_attrs[attrs_key]))\n",
  2269. "\n",
  2270. " result.update(\n",
  2271. " {\n",
  2272. " key: value\n",
  2273. " for key, value in scan_attrs.items()\n",
  2274. " }\n",
  2275. " )\n",
  2276. "\n",
  2277. " result.update(\n",
  2278. " {\n",
  2279. " \"scanAxis\": list(scan_attrs.keys()),\n",
  2280. " \"scanAxisLength\": scan_length,\n",
  2281. " }\n",
  2282. " )\n",
  2283. "\n",
  2284. " return result\n",
  2285. " \n",
  2286. " def _load_data_single(self, mongoID, engine):\n",
  2287. " if engine == 'xarray':\n",
  2288. " return self.xdb.get(mongoID)\n",
  2289. " if engine == 'additional':\n",
  2290. " return self.mongoDB.additional.find_one({'_id': mongoID})\n",
  2291. " \n",
  2292. " def load_data_single(self, shotNum=None, runNum=None, globalDict=None, date=None, field=None):\n",
  2293. " \n",
  2294. " if not date is None:\n",
  2295. " self.set_date(date)\n",
  2296. " \n",
  2297. " if globalDict is None:\n",
  2298. " globalDict = self.read_global_single(shotNum=shotNum, runNum=runNum)\n",
  2299. " \n",
  2300. " if field is None:\n",
  2301. " field = globalDict\n",
  2302. " \n",
  2303. " res = {}\n",
  2304. " \n",
  2305. " for key in field:\n",
  2306. " if isinstance(globalDict[key], dict) and ('mongoID' in globalDict[key]):\n",
  2307. " mongoID = globalDict[key]['mongoID']\n",
  2308. " engine = globalDict[key]['engine']\n",
  2309. " \n",
  2310. " res.update(\n",
  2311. " {\n",
  2312. " key: self._load_data_single(mongoID=mongoID, engine=engine)\n",
  2313. " }\n",
  2314. " )\n",
  2315. " \n",
  2316. " return res\n",
  2317. " \n",
  2318. " def load_data(self, shotNum=None, globalDict=None, date=None, field=None):\n",
  2319. " pass\n",
  2320. " \n",
  2321. "DB = MongoDB(mongoClient, mongoDB, date='2023/05/23')"
  2322. ]
  2323. },
  2324. {
  2325. "cell_type": "code",
  2326. "execution_count": null,
  2327. "metadata": {},
  2328. "outputs": [],
  2329. "source": [
  2330. "res = DB.load_data_single(shotNum='0069', field=['test'])\n",
  2331. "res"
  2332. ]
  2333. },
  2334. {
  2335. "cell_type": "code",
  2336. "execution_count": null,
  2337. "metadata": {},
  2338. "outputs": [],
  2339. "source": [
  2340. "DB.add_data('0069', dataSet_cropOD, engine='xarray')"
  2341. ]
  2342. },
  2343. {
  2344. "cell_type": "code",
  2345. "execution_count": null,
  2346. "metadata": {},
  2347. "outputs": [],
  2348. "source": [
  2349. "data = {\n",
  2350. " 'test':100\n",
  2351. "}\n",
  2352. "DB._add_data_additional(shotNum, data, name='test')"
  2353. ]
  2354. },
  2355. {
  2356. "cell_type": "code",
  2357. "execution_count": null,
  2358. "metadata": {},
  2359. "outputs": [],
  2360. "source": [
  2361. "DB._add_data_xarray_dataArray(shotNum, dataSet_cropOD)"
  2362. ]
  2363. },
  2364. {
  2365. "cell_type": "code",
  2366. "execution_count": null,
  2367. "metadata": {},
  2368. "outputs": [],
  2369. "source": [
  2370. "test = DB._convert_numpy_type(dataSet.OD.attrs)\n",
  2371. "\n",
  2372. "type(test['IMAGE_WHITE_IS_ZERO'])"
  2373. ]
  2374. },
  2375. {
  2376. "cell_type": "code",
  2377. "execution_count": null,
  2378. "metadata": {},
  2379. "outputs": [],
  2380. "source": [
  2381. "type(dataSet.OD.attrs['IMAGE_WHITE_IS_ZERO'])"
  2382. ]
  2383. },
  2384. {
  2385. "cell_type": "code",
  2386. "execution_count": null,
  2387. "metadata": {},
  2388. "outputs": [],
  2389. "source": [
  2390. "DB._add_data_xarray_dataSet(shotNum, dataSet, 'aaa')"
  2391. ]
  2392. },
  2393. {
  2394. "cell_type": "code",
  2395. "execution_count": null,
  2396. "metadata": {},
  2397. "outputs": [],
  2398. "source": [
  2399. "xdb.put(dataSet_cropOD)"
  2400. ]
  2401. },
  2402. {
  2403. "cell_type": "code",
  2404. "execution_count": null,
  2405. "metadata": {},
  2406. "outputs": [],
  2407. "source": [
  2408. "DB.create_global(shotNum, dataSet)"
  2409. ]
  2410. },
  2411. {
  2412. "cell_type": "code",
  2413. "execution_count": 28,
  2414. "metadata": {},
  2415. "outputs": [
  2416. {
  2417. "data": {
  2418. "text/plain": [
  2419. "{'TOF_free': 0.022,\n",
  2420. " 'abs_img_freq': 110.858,\n",
  2421. " 'absorption_imaging_flag': True,\n",
  2422. " 'backup_data': True,\n",
  2423. " 'blink_off_time': 0.001,\n",
  2424. " 'blink_on_time': 0.001,\n",
  2425. " 'c_duration': 0.2,\n",
  2426. " 'carrier_amp': 3,\n",
  2427. " 'carrier_freq': 0.85,\n",
  2428. " 'carrier_offset': 0,\n",
  2429. " 'carrier_phase': 0,\n",
  2430. " 'channel_in_use': 1,\n",
  2431. " 'cmot_final_current': 0.65,\n",
  2432. " 'cmot_hold': 0.06,\n",
  2433. " 'cmot_initial_current': 0.18,\n",
  2434. " 'compX_current': 0,\n",
  2435. " 'compX_current_sg': 0.0,\n",
  2436. " 'compX_initial_current': 0,\n",
  2437. " 'compY_current': 0,\n",
  2438. " 'compY_current_sg': 0.0,\n",
  2439. " 'compY_final_current': 0,\n",
  2440. " 'compY_initial_current': 0,\n",
  2441. " 'compZ_current': 0,\n",
  2442. " 'compZ_current_sg': 0.189,\n",
  2443. " 'compZ_final_current': 0.264,\n",
  2444. " 'compZ_initial_current': 0,\n",
  2445. " 'default_camera': 0,\n",
  2446. " 'deltaf': 0.161,\n",
  2447. " 'evap_1_arm_1_final_pow': 0.35,\n",
  2448. " 'evap_1_arm_1_mod_depth_final': 0,\n",
  2449. " 'evap_1_arm_1_mod_depth_initial': 1.0,\n",
  2450. " 'evap_1_arm_1_mod_ramp_duration': 1.15,\n",
  2451. " 'evap_1_arm_1_pow_ramp_duration': 1.65,\n",
  2452. " 'evap_1_arm_1_start_pow': 7,\n",
  2453. " 'evap_1_arm_2_final_pow': 5,\n",
  2454. " 'evap_1_arm_2_ramp_duration': 0.5,\n",
  2455. " 'evap_1_arm_2_start_pow': 0,\n",
  2456. " 'evap_1_mod_ramp_trunc_value': 1,\n",
  2457. " 'evap_1_pow_ramp_trunc_value': 1.0,\n",
  2458. " 'evap_1_rate_constant_1': 0.525,\n",
  2459. " 'evap_1_rate_constant_2': 0.51,\n",
  2460. " 'evap_2_arm_1_final_pow': 0.037,\n",
  2461. " 'evap_2_arm_1_start_pow': 0.35,\n",
  2462. " 'evap_2_arm_2_final_pow': 0.09,\n",
  2463. " 'evap_2_arm_2_start_pow': 5,\n",
  2464. " 'evap_2_ramp_duration': 1.0,\n",
  2465. " 'evap_2_ramp_trunc_value': 1.0,\n",
  2466. " 'evap_2_rate_constant_1': 0.37,\n",
  2467. " 'evap_2_rate_constant_2': 0.71,\n",
  2468. " 'evap_3_arm_1_final_pow': 0.1038,\n",
  2469. " 'evap_3_arm_1_mod_depth_final': 0.43,\n",
  2470. " 'evap_3_arm_1_mod_depth_initial': 0,\n",
  2471. " 'evap_3_arm_1_start_pow': 0.037,\n",
  2472. " 'evap_3_ramp_duration': 0.1,\n",
  2473. " 'evap_3_ramp_trunc_value': 1.0,\n",
  2474. " 'evap_3_rate_constant_1': -0.879,\n",
  2475. " 'evap_3_rate_constant_2': -0.297,\n",
  2476. " 'final_amp': 0.00012,\n",
  2477. " 'final_freq': 104.0,\n",
  2478. " 'final_pow_1': 0.1038,\n",
  2479. " 'final_pow_2': 0.09,\n",
  2480. " 'gradCoil_current': 0.18,\n",
  2481. " 'gradCoil_current_sg': 0,\n",
  2482. " 'imaging_method': 'in_situ_absorption',\n",
  2483. " 'imaging_pulse_duration': 2.5e-05,\n",
  2484. " 'imaging_wavelength': 4.21291e-07,\n",
  2485. " 'initial_amp': 0.62,\n",
  2486. " 'initial_freq': 102.13,\n",
  2487. " 'mod_depth_fin': 0.43,\n",
  2488. " 'mod_depth_ini': 0,\n",
  2489. " 'mod_depth_initial': 1.0,\n",
  2490. " 'mot_3d_amp': 0.62,\n",
  2491. " 'mot_3d_camera_trigger_duration': 0.00025,\n",
  2492. " 'mot_3d_freq': 102.13,\n",
  2493. " 'mot_load_duration': 2,\n",
  2494. " 'odt_axis_camera_trigger_duration': 0.002,\n",
  2495. " 'odt_hold_time_1': 0.01,\n",
  2496. " 'odt_hold_time_2': 0.1,\n",
  2497. " 'odt_hold_time_3': 0.1,\n",
  2498. " 'odt_hold_time_4': 1.0,\n",
  2499. " 'odt_hold_time_5': 0.01,\n",
  2500. " 'operation_mode': 'SWEEP',\n",
  2501. " 'pow_arm_1': 7,\n",
  2502. " 'pow_arm_2': 0,\n",
  2503. " 'pulse_delay': 8e-05,\n",
  2504. " 'pulse_width': 0.01,\n",
  2505. " 'push_amp': 0.16,\n",
  2506. " 'push_freq': 102.66,\n",
  2507. " 'ramp_duration': 1,\n",
  2508. " 'recomp_ramp_duration': 0.5,\n",
  2509. " 'recomp_ramp_pow_fin_arm_1': 0.1038,\n",
  2510. " 'recomp_ramp_pow_fin_arm_2': 0.09,\n",
  2511. " 'recomp_ramp_pow_ini_arm_1': 0.1038,\n",
  2512. " 'recomp_ramp_pow_ini_arm_2': 0.09,\n",
  2513. " 'save_results': False,\n",
  2514. " 'sin_mod_amplitude': 0.00519,\n",
  2515. " 'sin_mod_dc_offset': 0.1038,\n",
  2516. " 'sin_mod_duration': nan,\n",
  2517. " 'sin_mod_freq': nan,\n",
  2518. " 'sin_mod_phase': 0.0,\n",
  2519. " 'start_pow_1': 0.037,\n",
  2520. " 'start_pow_2': 0.09,\n",
  2521. " 'stern_gerlach_duration': 0.001,\n",
  2522. " 'sweep_duration': 0.4,\n",
  2523. " 'sweep_start_freq': 0.7695,\n",
  2524. " 'sweep_stop_freq': 0.9305,\n",
  2525. " 'tf_meas_ramp_duration': 0.1,\n",
  2526. " 'wait_after_2dmot_off': 0,\n",
  2527. " 'wait_time_between_images': 0.22,\n",
  2528. " 'wavetype': 'SINE',\n",
  2529. " 'x_offset': 0.0,\n",
  2530. " 'x_offset_img': 0,\n",
  2531. " 'y_offset': 0.0,\n",
  2532. " 'y_offset_img': 0,\n",
  2533. " 'z_offset': 0.189,\n",
  2534. " 'z_offset_img': 0.189,\n",
  2535. " 'compX_final_current': array([0. , 0.002, 0.004, 0.006, 0.008, 0.01 , 0.012, 0.014, 0.016,\n",
  2536. " 0.018, 0.02 , 0. , 0.002, 0.004, 0.006, 0.008, 0.01 , 0.012,\n",
  2537. " 0.014, 0.016, 0.018, 0.02 , 0. , 0.002, 0.004, 0.006, 0.008,\n",
  2538. " 0.01 , 0.012, 0.014, 0.016, 0.018, 0.02 ]),\n",
  2539. " 'runs': array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 1., 1., 1., 1., 1.,\n",
  2540. " 1., 1., 1., 1., 1., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2.]),\n",
  2541. " 'scanAxis': ['compX_final_current', 'runs'],\n",
  2542. " 'scanAxisLength': array([33., 33.])}"
  2543. ]
  2544. },
  2545. "execution_count": 28,
  2546. "metadata": {},
  2547. "output_type": "execute_result"
  2548. }
  2549. ],
  2550. "source": [
  2551. "DB.read_global_all('0069')"
  2552. ]
  2553. },
  2554. {
  2555. "cell_type": "code",
  2556. "execution_count": null,
  2557. "metadata": {},
  2558. "outputs": [],
  2559. "source": [
  2560. "DB.load_data_single(shotNum='0069', runNum=0).keys()"
  2561. ]
  2562. },
  2563. {
  2564. "attachments": {},
  2565. "cell_type": "markdown",
  2566. "metadata": {},
  2567. "source": [
  2568. "## Do a 2D two-peak gaussian fit to the OD images"
  2569. ]
  2570. },
  2571. {
  2572. "attachments": {},
  2573. "cell_type": "markdown",
  2574. "metadata": {},
  2575. "source": [
  2576. "### Do the fit"
  2577. ]
  2578. },
  2579. {
  2580. "cell_type": "code",
  2581. "execution_count": null,
  2582. "metadata": {},
  2583. "outputs": [],
  2584. "source": [
  2585. "from Analyser.FitAnalyser import ThomasFermi2dModel, DensityProfileBEC2dModel, polylog2_2d\n",
  2586. "\n",
  2587. "fitModel = DensityProfileBEC2dModel()\n",
  2588. "# fitModel = ThomasFermi2dModel()\n",
  2589. "\n",
  2590. "fitAnalyser = FitAnalyser(fitModel, fitDim=2)\n",
  2591. "\n",
  2592. "# fitAnalyser = FitAnalyser(\"Gaussian-2D\", fitDim=2)\n",
  2593. "\n",
  2594. "# dataSet_cropOD = dataSet_cropOD.chunk((1,1,100,100))\n",
  2595. "\n",
  2596. "params = fitAnalyser.guess(dataSet_cropOD, guess_kwargs=dict(pureBECThreshold=0.3), dask=\"parallelized\")\n",
  2597. "fitResult = fitAnalyser.fit(dataSet_cropOD, params).load()"
  2598. ]
  2599. },
  2600. {
  2601. "cell_type": "code",
  2602. "execution_count": null,
  2603. "metadata": {},
  2604. "outputs": [],
  2605. "source": [
  2606. "params.compute().item()"
  2607. ]
  2608. },
  2609. {
  2610. "cell_type": "code",
  2611. "execution_count": null,
  2612. "metadata": {},
  2613. "outputs": [],
  2614. "source": [
  2615. "fitCurve = fitAnalyser.eval(fitResult, x=np.arange(300), y=np.arange(300), dask=\"parallelized\").load()\n",
  2616. "\n",
  2617. "fitCurve.plot.pcolormesh(cmap='jet', vmin=0, col=scanAxis[0], row=scanAxis[1])"
  2618. ]
  2619. },
  2620. {
  2621. "cell_type": "code",
  2622. "execution_count": null,
  2623. "metadata": {},
  2624. "outputs": [],
  2625. "source": [
  2626. "fitModel2 = Polylog22dModel(prefix='thermal_')\n",
  2627. "fitAnalyser2 = FitAnalyser(fitModel2, fitDim=2)\n",
  2628. "fitCurve2 = fitAnalyser2.eval(fitResult, x=np.arange(300), y=np.arange(300), dask=\"parallelized\").load()\n",
  2629. "\n",
  2630. "fitModel3 = ThomasFermi2dModel(prefix='BEC_')\n",
  2631. "fitAnalyser3 = FitAnalyser(fitModel3, fitDim=2)\n",
  2632. "fitCurve3 = fitAnalyser3.eval(fitResult, x=np.arange(300), y=np.arange(300), dask=\"parallelized\").load()"
  2633. ]
  2634. },
  2635. {
  2636. "cell_type": "code",
  2637. "execution_count": null,
  2638. "metadata": {},
  2639. "outputs": [],
  2640. "source": [
  2641. "fig = plt.figure()\n",
  2642. "ax = fig.gca()\n",
  2643. "\n",
  2644. "dataSet_cropOD.sum(dim='x').plot(ax=ax, col=scanAxis[0], row=scanAxis[1])\n",
  2645. "fitCurve.sum(dim='x').plot(ax=ax, col=scanAxis[0], row=scanAxis[1])\n",
  2646. "fitCurve2.sum(dim='x').plot(ax=ax, col=scanAxis[0], row=scanAxis[1])\n",
  2647. "fitCurve3.sum(dim='x').plot(ax=ax, col=scanAxis[0], row=scanAxis[1])\n",
  2648. "\n",
  2649. "plt.show()\n",
  2650. "\n",
  2651. "fig = plt.figure()\n",
  2652. "ax = fig.gca()\n",
  2653. "\n",
  2654. "dataSet_cropOD.sum(dim='y').plot(ax=ax, col=scanAxis[0], row=scanAxis[1])\n",
  2655. "fitCurve.sum(dim='y').plot(ax=ax, col=scanAxis[0], row=scanAxis[1])\n",
  2656. "fitCurve2.sum(dim='y').plot(ax=ax, col=scanAxis[0], row=scanAxis[1])\n",
  2657. "fitCurve3.sum(dim='y').plot(ax=ax, col=scanAxis[0], row=scanAxis[1])\n",
  2658. "\n",
  2659. "plt.show()"
  2660. ]
  2661. },
  2662. {
  2663. "cell_type": "code",
  2664. "execution_count": null,
  2665. "metadata": {},
  2666. "outputs": [],
  2667. "source": [
  2668. "value = fitAnalyser.get_fit_value(fitResult)\n",
  2669. "std = fitAnalyser.get_fit_std(fitResult)"
  2670. ]
  2671. },
  2672. {
  2673. "cell_type": "code",
  2674. "execution_count": null,
  2675. "metadata": {},
  2676. "outputs": [],
  2677. "source": [
  2678. "fitResult.item()"
  2679. ]
  2680. },
  2681. {
  2682. "cell_type": "code",
  2683. "execution_count": null,
  2684. "metadata": {},
  2685. "outputs": [],
  2686. "source": [
  2687. "value"
  2688. ]
  2689. },
  2690. {
  2691. "attachments": {},
  2692. "cell_type": "markdown",
  2693. "metadata": {},
  2694. "source": [
  2695. "# upload data to MongoDB"
  2696. ]
  2697. },
  2698. {
  2699. "cell_type": "code",
  2700. "execution_count": null,
  2701. "metadata": {},
  2702. "outputs": [],
  2703. "source": [
  2704. "xdb = xarray_mongodb.XarrayMongoDB(mongoDB)"
  2705. ]
  2706. },
  2707. {
  2708. "cell_type": "code",
  2709. "execution_count": null,
  2710. "metadata": {},
  2711. "outputs": [],
  2712. "source": [
  2713. "value = fitAnalyser.get_fit_value(fitResult)\n",
  2714. "value"
  2715. ]
  2716. },
  2717. {
  2718. "cell_type": "code",
  2719. "execution_count": null,
  2720. "metadata": {},
  2721. "outputs": [],
  2722. "source": [
  2723. "dataSet_cropOD"
  2724. ]
  2725. },
  2726. {
  2727. "cell_type": "code",
  2728. "execution_count": null,
  2729. "metadata": {},
  2730. "outputs": [],
  2731. "source": [
  2732. "dataSet_cropOD.attrs['name'] = 'name'"
  2733. ]
  2734. },
  2735. {
  2736. "cell_type": "code",
  2737. "execution_count": null,
  2738. "metadata": {},
  2739. "outputs": [],
  2740. "source": [
  2741. "dataSet_cropOD.attrs['IMAGE_WHITE_IS_ZERO']"
  2742. ]
  2743. },
  2744. {
  2745. "cell_type": "code",
  2746. "execution_count": null,
  2747. "metadata": {},
  2748. "outputs": [],
  2749. "source": [
  2750. "dataSet_cropOD"
  2751. ]
  2752. },
  2753. {
  2754. "cell_type": "code",
  2755. "execution_count": null,
  2756. "metadata": {},
  2757. "outputs": [],
  2758. "source": [
  2759. "type(dataSet_cropOD.attrs['absorption_imaging_flag'].item())"
  2760. ]
  2761. },
  2762. {
  2763. "cell_type": "code",
  2764. "execution_count": null,
  2765. "metadata": {},
  2766. "outputs": [],
  2767. "source": [
  2768. "del dataSet_cropOD.attrs['IMAGE_WHITE_IS_ZERO']"
  2769. ]
  2770. },
  2771. {
  2772. "cell_type": "code",
  2773. "execution_count": null,
  2774. "metadata": {},
  2775. "outputs": [],
  2776. "source": [
  2777. "import builtins\n",
  2778. "npTypeDict = {v: getattr(builtins, k) for k, v in np.typeDict.items() if k in vars(builtins)}\n",
  2779. "\n",
  2780. "for key in dataSet_cropOD.attrs:\n",
  2781. " typeKey = type(dataSet_cropOD.attrs[key])\n",
  2782. " if typeKey in npTypeDict:\n",
  2783. " dataSet_cropOD.attrs[key] = dataSet_cropOD.attrs[key].item()"
  2784. ]
  2785. },
  2786. {
  2787. "cell_type": "code",
  2788. "execution_count": null,
  2789. "metadata": {},
  2790. "outputs": [],
  2791. "source": [
  2792. "import builtins\n",
  2793. "a = {v: getattr(builtins, k) for k, v in np.typeDict.items() if k in vars(builtins)}\n",
  2794. "a\n",
  2795. "a[type(dataSet_cropOD.attrs['absorption_imaging_flag'])]"
  2796. ]
  2797. },
  2798. {
  2799. "cell_type": "code",
  2800. "execution_count": null,
  2801. "metadata": {},
  2802. "outputs": [],
  2803. "source": [
  2804. "_id, _ = xdb.put(dataSet_cropOD)"
  2805. ]
  2806. },
  2807. {
  2808. "cell_type": "code",
  2809. "execution_count": null,
  2810. "metadata": {},
  2811. "outputs": [],
  2812. "source": [
  2813. "_id"
  2814. ]
  2815. },
  2816. {
  2817. "cell_type": "code",
  2818. "execution_count": null,
  2819. "metadata": {},
  2820. "outputs": [],
  2821. "source": [
  2822. "# _id = '646e3cbbdb91e17db4b4cbd2'"
  2823. ]
  2824. },
  2825. {
  2826. "cell_type": "code",
  2827. "execution_count": null,
  2828. "metadata": {},
  2829. "outputs": [],
  2830. "source": [
  2831. "xdb.get(_id)"
  2832. ]
  2833. },
  2834. {
  2835. "cell_type": "code",
  2836. "execution_count": null,
  2837. "metadata": {},
  2838. "outputs": [],
  2839. "source": [
  2840. "c = bson.objectid.ObjectId('646e4919802812f029b385d7')\n",
  2841. "c"
  2842. ]
  2843. },
  2844. {
  2845. "cell_type": "code",
  2846. "execution_count": null,
  2847. "metadata": {},
  2848. "outputs": [],
  2849. "source": [
  2850. "xdb.get(c)"
  2851. ]
  2852. },
  2853. {
  2854. "cell_type": "code",
  2855. "execution_count": null,
  2856. "metadata": {},
  2857. "outputs": [],
  2858. "source": [
  2859. "import datetime\n",
  2860. "post = {\"author\": \"Mike\",\n",
  2861. " \"data_id\": _id,\n",
  2862. " \"tags\": [\"mongodb\", \"python\", \"pymongo\"],\n",
  2863. " \"date\": datetime.datetime.utcnow(),\n",
  2864. " }\n"
  2865. ]
  2866. },
  2867. {
  2868. "cell_type": "code",
  2869. "execution_count": null,
  2870. "metadata": {},
  2871. "outputs": [],
  2872. "source": [
  2873. "posts = mongoCollection\n",
  2874. "post_id = posts.insert_one(post).inserted_id\n",
  2875. "post_id"
  2876. ]
  2877. },
  2878. {
  2879. "cell_type": "code",
  2880. "execution_count": null,
  2881. "metadata": {},
  2882. "outputs": [],
  2883. "source": [
  2884. "posts.find_one({'_id': bson.objectid.ObjectId('648318ae129ec5a1a24a7353')})"
  2885. ]
  2886. },
  2887. {
  2888. "cell_type": "code",
  2889. "execution_count": null,
  2890. "metadata": {},
  2891. "outputs": [],
  2892. "source": [
  2893. "for i in posts.find_one({'_id': bson.objectid.ObjectId('648318ae129ec5a1a24a7353')}):\n",
  2894. " bb = i\n",
  2895. " \n",
  2896. "bb['test']"
  2897. ]
  2898. },
  2899. {
  2900. "cell_type": "code",
  2901. "execution_count": null,
  2902. "metadata": {},
  2903. "outputs": [],
  2904. "source": [
  2905. "import gridfs\n",
  2906. "\n",
  2907. "fs = gridfs.GridFS(mongoDB, 'xarray')"
  2908. ]
  2909. },
  2910. {
  2911. "cell_type": "code",
  2912. "execution_count": null,
  2913. "metadata": {},
  2914. "outputs": [],
  2915. "source": [
  2916. "f = dataSet_cropOD.to_dict()\n",
  2917. "f"
  2918. ]
  2919. },
  2920. {
  2921. "cell_type": "code",
  2922. "execution_count": null,
  2923. "metadata": {},
  2924. "outputs": [],
  2925. "source": [
  2926. "print(ff)"
  2927. ]
  2928. },
  2929. {
  2930. "cell_type": "code",
  2931. "execution_count": null,
  2932. "metadata": {},
  2933. "outputs": [],
  2934. "source": [
  2935. "import json\n",
  2936. "ff = json.dumps(f) \n",
  2937. "fs.put(ff, encoding='utf-8')"
  2938. ]
  2939. },
  2940. {
  2941. "cell_type": "code",
  2942. "execution_count": null,
  2943. "metadata": {},
  2944. "outputs": [],
  2945. "source": []
  2946. },
  2947. {
  2948. "cell_type": "code",
  2949. "execution_count": null,
  2950. "metadata": {},
  2951. "outputs": [],
  2952. "source": [
  2953. "fs.put(b\"hello world\")"
  2954. ]
  2955. },
  2956. {
  2957. "cell_type": "code",
  2958. "execution_count": null,
  2959. "metadata": {},
  2960. "outputs": [],
  2961. "source": [
  2962. "c = bson.objectid.ObjectId('6482f4a3129ec5a1a24a7342')\n",
  2963. "\n",
  2964. "fs.get(c)"
  2965. ]
  2966. },
  2967. {
  2968. "cell_type": "code",
  2969. "execution_count": null,
  2970. "metadata": {},
  2971. "outputs": [],
  2972. "source": [
  2973. "print(fs.get(c))"
  2974. ]
  2975. },
  2976. {
  2977. "cell_type": "code",
  2978. "execution_count": null,
  2979. "metadata": {},
  2980. "outputs": [],
  2981. "source": [
  2982. "np.sqrt(np.sum([0.061**2, 0.334**2, 0.447**2]))"
  2983. ]
  2984. },
  2985. {
  2986. "cell_type": "code",
  2987. "execution_count": null,
  2988. "metadata": {},
  2989. "outputs": [],
  2990. "source": []
  2991. }
  2992. ],
  2993. "metadata": {
  2994. "kernelspec": {
  2995. "display_name": "py39",
  2996. "language": "python",
  2997. "name": "python3"
  2998. },
  2999. "language_info": {
  3000. "codemirror_mode": {
  3001. "name": "ipython",
  3002. "version": 3
  3003. },
  3004. "file_extension": ".py",
  3005. "mimetype": "text/x-python",
  3006. "name": "python",
  3007. "nbconvert_exporter": "python",
  3008. "pygments_lexer": "ipython3",
  3009. "version": "3.9.12"
  3010. },
  3011. "orig_nbformat": 4
  3012. },
  3013. "nbformat": 4,
  3014. "nbformat_minor": 2
  3015. }