From 8d2d98c6b5aaade704f1b072174cb1609872f585 Mon Sep 17 00:00:00 2001
From: Samuel Jackson
Date: Thu, 15 Aug 2024 13:13:36 +0100
Subject: [PATCH 1/8] Remove segfault handling and add jobscripts
---
README.md | 24 +++++++++++++++++++++---
jobs/ingest.csd3.slurm.sh | 23 +++++++++++++++++++++++
jobs/metadata.csd3.slurm.sh | 22 ++++++++++++++++++++++
src/main.py | 2 +-
src/mast.py | 21 ---------------------
src/task.py | 7 +++++++
6 files changed, 74 insertions(+), 25 deletions(-)
create mode 100644 jobs/ingest.csd3.slurm.sh
create mode 100644 jobs/metadata.csd3.slurm.sh
diff --git a/README.md b/README.md
index d8cfb50..ec6f3a9 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,7 @@
### FAIR MAST Data Ingestion
-## Installation on CSD3
+## Running on CSD3
+### Installation on CSD3
After logging into your CSD3 account (on Icelake node), first load the correct Python module:
@@ -45,7 +46,23 @@ source ~/rds/rds-ukaea-mast-sPGbyCAPsJI/uda-ssl.sh
You should now be able to run the following commands.
-## Local Ingestion
+### Submitting runs on CSD3
+
+1. First submit a job to collect all the metadata:
+
+```sh
+qsub ./jobs/metadata.csd3.slurm.sh
+```
+
+2. Then submit an ingestion job
+
+```sh
+qsub ./jobs/ingest.csd3.slurm.sh campaign_shots/tiny_campaign.csv s3://mast/test/shots/ amc
+```
+
+## Manually Running Ingestor
+
+### Local Ingestion
The following section details how to ingest data into a local folder on freia with UDA.
@@ -61,7 +78,7 @@ mpirun -np 16 python3 -m src.main data/local campaign_shots/tiny_campaign.csv --
Files will be output in the NetCDF format to `data/local`.
-## Ingestion to S3
+### Ingestion to S3
The following section details how to ingest data into the s3 storage on freia with UDA.
@@ -80,3 +97,4 @@ mpirun -np 16 python3 -m src.main data/local campaign_shots/tiny_campaign.csv --
```
This will submit a job to the freia job queue that will ingest all of the shots in the tiny campaign and push them to the s3 bucket.
+
diff --git a/jobs/ingest.csd3.slurm.sh b/jobs/ingest.csd3.slurm.sh
new file mode 100644
index 0000000..b5747eb
--- /dev/null
+++ b/jobs/ingest.csd3.slurm.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+#SBATCH -A UKAEA-AP002-CPU
+#SBATCH -p icelake
+#SBATCH --job-name=fair-mast-ingest
+#SBATCH --output=fair-mast-ingest_%A.out
+#SBATCH --time=5:00:00
+#SBATCH --mem=256G
+#SBATCH --ntasks=128
+#SBATCH -N 2
+
+
+summary_file=$1
+bucket_path=$2
+num_workers=$SLURM_NTASKS
+
+random_string=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 16)
+temp_dir="/rds/project/rds-sPGbyCAPsJI/local_cache/$random_string"
+metadata_dir="/rds/project/rds-sPGbyCAPsJI/data/uda"
+
+source /rds/project/rds-sPGbyCAPsJI/uda-ssl.sh
+
+mpirun -np $num_workers \
+ python3 -m src.main $temp_dir $summary_file --metadata_dir $metadata_dir --bucket_path $bucket_path --upload --force --source_names ${@:3}
diff --git a/jobs/metadata.csd3.slurm.sh b/jobs/metadata.csd3.slurm.sh
new file mode 100644
index 0000000..a67556b
--- /dev/null
+++ b/jobs/metadata.csd3.slurm.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+#SBATCH -A UKAEA-AP002-CPU
+#SBATCH -p icelake
+#SBATCH --job-name=fair-mast-ingest
+#SBATCH --output=%A_%a.out
+#SBATCH --time=0:20:00
+#SBATCH --mem=60G
+#SBATCH --ntasks=128
+#SBATCH -N 2
+
+num_workers=$SLURM_NTASKS
+
+uda_path="/rds/project/rds-sPGbyCAPsJI/data/uda"
+source /rds/project/rds-sPGbyCAPsJI/uda-ssl.sh
+
+# Parse Signal and Source metadata from UDA
+mpirun -n $num_workers python3 -m src.create_uda_metadata $uda_path campaign_shots/M9.csv
+mpirun -n $num_workers python3 -m src.create_uda_metadata $uda_path campaign_shots/M8.csv
+mpirun -n $num_workers python3 -m src.create_uda_metadata $uda_path campaign_shots/M7.csv
+mpirun -n $num_workers python3 -m src.create_uda_metadata $uda_path campaign_shots/M6.csv
+mpirun -n $num_workers python3 -m src.create_uda_metadata $uda_path campaign_shots/M5.csv
+
diff --git a/src/main.py b/src/main.py
index 5e907a3..a390782 100644
--- a/src/main.py
+++ b/src/main.py
@@ -27,7 +27,7 @@ def main():
parser.add_argument("--force", action="store_true")
parser.add_argument("--signal_names", nargs="*", default=[])
parser.add_argument("--source_names", nargs="*", default=[])
- parser.add_argument("--file_format", choices=['zarr', 'nc', 'h5'])
+ parser.add_argument("--file_format", choices=['zarr', 'nc', 'h5'], default='zarr')
parser.add_argument("--facility", choices=['MAST', 'MASTU'], default='MAST')
args = parser.parse_args()
diff --git a/src/mast.py b/src/mast.py
index d91790d..af67459 100644
--- a/src/mast.py
+++ b/src/mast.py
@@ -156,27 +156,6 @@ def get_signal(self, shot_num: int, name: str, format: str) -> xr.Dataset:
else:
signal_name = name
- # Pull the signal on a seperate process first.
- # Sometimes this segfaults, so first we need to check that we can pull it safely
- # To do this we pull the signal on a serperate process and check the error code.
- def _get_signal(signal_name, shot_num):
- client = self._get_client()
- try:
- client.get(signal_name, shot_num)
- except pyuda.ServerException:
- pass
-
- p = Process(target=_get_signal, args=(signal_name, shot_num))
- p.start()
- p.join()
- code = p.exitcode
-
- if code < 0:
- raise RuntimeError(
- f"Failed to get data for {signal_name}/{shot_num}. Possible segfault with exitcode: {code}"
- )
-
- # Now we know it is safe to access the signal and we will not get a segfault
signal = client.get(signal_name, shot_num)
dataset = self._convert_signal_to_dataset(name, signal)
dataset.attrs["shot_id"] = shot_num
diff --git a/src/task.py b/src/task.py
index 2cafde5..bb234bd 100644
--- a/src/task.py
+++ b/src/task.py
@@ -35,7 +35,12 @@ def __init__(self, local_file: Path, config: UploadConfig):
def __call__(self):
logging.info(f"Uploading {self.local_file} to {self.config.url}")
+
+ if not Path(self.config.credentials_file).exists():
+ raise RuntimeError(f"Credentials file {self.config.credentials_file} does not exist!")
+
env = os.environ.copy()
+
args = [
"s5cmd",
"--credentials-file",
@@ -48,7 +53,9 @@ def __call__(self):
str(self.local_file),
self.config.url,
]
+
logging.debug(' ' .join(args))
+
subprocess.run(
args,
stdout=subprocess.DEVNULL,
From bf334b7cbe0d949f7a40fea82d68984cf6cb1409 Mon Sep 17 00:00:00 2001
From: Samuel Jackson
Date: Thu, 15 Aug 2024 13:20:54 +0100
Subject: [PATCH 2/8] Fix for ruff
---
src/mast.py | 1 -
src/workflow.py | 6 ++----
2 files changed, 2 insertions(+), 5 deletions(-)
diff --git a/src/mast.py b/src/mast.py
index af67459..99e8a74 100644
--- a/src/mast.py
+++ b/src/mast.py
@@ -1,5 +1,4 @@
import re
-from multiprocessing import Process
import typing as t
import numpy as np
import xarray as xr
diff --git a/src/workflow.py b/src/workflow.py
index a41737d..0836718 100644
--- a/src/workflow.py
+++ b/src/workflow.py
@@ -107,8 +107,6 @@ def __init__(
def __call__(self, shot: int):
self.data_dir.mkdir(exist_ok=True, parents=True)
- local_path = self.data_dir / f"{shot}.{self.file_format}"
-
create = CreateDatasetTask(
self.metadata_dir,
@@ -123,7 +121,7 @@ def __call__(self, shot: int):
try:
create()
except Exception as e:
- import traceback; traceback.print_exc();
+ import traceback
print(traceback.format_exc())
logging.error(f"Failed to run workflow with error {type(e)}: {e}")
@@ -145,7 +143,7 @@ def run_workflows(self, shot_list: list[int], parallel=True):
def _run_workflows_serial(self, shot_list: list[int]):
n = len(shot_list)
for i, shot in enumerate(shot_list):
- result = self.workflow(shot)
+ self.workflow(shot)
logging.info(f"Done shot {i+1}/{n} = {(i+1)/n*100:.2f}%")
def _run_workflows_parallel(self, shot_list: list[int]):
From 168814393eaf8c3431ab59217c1e5b28f63f5867 Mon Sep 17 00:00:00 2001
From: Samuel Jackson
Date: Thu, 15 Aug 2024 13:37:51 +0100
Subject: [PATCH 3/8] Update README.md
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 17c48fc..919055e 100644
--- a/README.md
+++ b/README.md
@@ -51,13 +51,13 @@ You should now be able to run the following commands.
1. First submit a job to collect all the metadata:
```sh
-qsub ./jobs/metadata.csd3.slurm.sh
+sbatch ./jobs/metadata.csd3.slurm.sh
```
2. Then submit an ingestion job
```sh
-qsub ./jobs/ingest.csd3.slurm.sh campaign_shots/tiny_campaign.csv s3://mast/test/shots/ amc
+sbatch ./jobs/ingest.csd3.slurm.sh campaign_shots/tiny_campaign.csv s3://mast/test/shots/ amc
```
## Manually Running Ingestor
From c1b4e77ef6cbe526afea2e58c0113f6cd4e90adc Mon Sep 17 00:00:00 2001
From: Samuel Jackson
Date: Thu, 15 Aug 2024 13:59:41 +0100
Subject: [PATCH 4/8] remove notebook
---
notebooks/signal_summary.ipynb | 733 ---------------------------------
1 file changed, 733 deletions(-)
delete mode 100644 notebooks/signal_summary.ipynb
diff --git a/notebooks/signal_summary.ipynb b/notebooks/signal_summary.ipynb
deleted file mode 100644
index 03ae0cc..0000000
--- a/notebooks/signal_summary.ipynb
+++ /dev/null
@@ -1,733 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "code",
- "execution_count": 221,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "application/javascript": "/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */\n!function(e,t){\"use strict\";\"object\"==typeof module&&\"object\"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error(\"jQuery requires a window with a document\");return t(e)}:t(e)}(\"undefined\"!=typeof window?window:this,function(C,e){\"use strict\";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return\"function\"==typeof e&&\"number\"!=typeof e.nodeType&&\"function\"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement(\"script\");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+\"\":\"object\"==typeof e||\"function\"==typeof e?n[o.call(e)]||\"object\":typeof e}var f=\"3.6.0\",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&\"length\"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&(\"array\"===n||0===t||\"number\"==typeof t&&0+~]|\"+M+\")\"+M+\"*\"),U=new RegExp(M+\"|>\"),X=new RegExp(F),V=new RegExp(\"^\"+I+\"$\"),G={ID:new RegExp(\"^#(\"+I+\")\"),CLASS:new RegExp(\"^\\\\.(\"+I+\")\"),TAG:new RegExp(\"^(\"+I+\"|[*])\"),ATTR:new RegExp(\"^\"+W),PSEUDO:new RegExp(\"^\"+F),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+M+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+M+\"*(?:([+-]|)\"+M+\"*(\\\\d+)|))\"+M+\"*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+R+\")$\",\"i\"),needsContext:new RegExp(\"^\"+M+\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+M+\"*((?:-\\\\d)?\\\\d*)\"+M+\"*\\\\)|)(?=[^-]|$)\",\"i\")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\\d$/i,K=/^[^{]+\\{\\s*\\[native \\w/,Z=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,ee=/[+~]/,te=new RegExp(\"\\\\\\\\[\\\\da-fA-F]{1,6}\"+M+\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\",\"g\"),ne=function(e,t){var n=\"0x\"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,ie=function(e,t){return t?\"\\0\"===e?\"\\ufffd\":e.slice(0,-1)+\"\\\\\"+e.charCodeAt(e.length-1).toString(16)+\" \":\"\\\\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&\"fieldset\"===e.nodeName.toLowerCase()},{dir:\"parentNode\",next:\"legend\"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],\"string\"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+\" \"]&&(!v||!v.test(t))&&(1!==p||\"object\"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute(\"id\"))?s=s.replace(re,ie):e.setAttribute(\"id\",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?\"#\"+s:\":scope\")+\" \"+xe(l[o]);c=l.join(\",\")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute(\"id\")}}}return g(t.replace($,\"$1\"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+\" \")>b.cacheLength&&delete e[r.shift()],e[t+\" \"]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement(\"fieldset\");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split(\"|\"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return\"input\"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return(\"input\"===t||\"button\"===t)&&e.type===n}}function ge(t){return function(e){return\"form\"in e?e.parentNode&&!1===e.disabled?\"label\"in e?\"label\"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:\"label\"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&\"undefined\"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||\"HTML\")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener(\"unload\",oe,!1):n.attachEvent&&n.attachEvent(\"onunload\",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement(\"div\")),\"undefined\"!=typeof e.querySelectorAll&&!e.querySelectorAll(\":scope fieldset div\").length}),d.attributes=ce(function(e){return e.className=\"i\",!e.getAttribute(\"className\")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment(\"\")),!e.getElementsByTagName(\"*\").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute(\"id\")===t}},b.find.ID=function(e,t){if(\"undefined\"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t=\"undefined\"!=typeof e.getAttributeNode&&e.getAttributeNode(\"id\");return t&&t.value===n}},b.find.ID=function(e,t){if(\"undefined\"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return\"undefined\"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if(\"*\"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if(\"undefined\"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML=\" \",e.querySelectorAll(\"[msallowcapture^='']\").length&&v.push(\"[*^$]=\"+M+\"*(?:''|\\\"\\\")\"),e.querySelectorAll(\"[selected]\").length||v.push(\"\\\\[\"+M+\"*(?:value|\"+R+\")\"),e.querySelectorAll(\"[id~=\"+S+\"-]\").length||v.push(\"~=\"),(t=C.createElement(\"input\")).setAttribute(\"name\",\"\"),e.appendChild(t),e.querySelectorAll(\"[name='']\").length||v.push(\"\\\\[\"+M+\"*name\"+M+\"*=\"+M+\"*(?:''|\\\"\\\")\"),e.querySelectorAll(\":checked\").length||v.push(\":checked\"),e.querySelectorAll(\"a#\"+S+\"+*\").length||v.push(\".#.+[+~]\"),e.querySelectorAll(\"\\\\\\f\"),v.push(\"[\\\\r\\\\n\\\\f]\")}),ce(function(e){e.innerHTML=\" \";var t=C.createElement(\"input\");t.setAttribute(\"type\",\"hidden\"),e.appendChild(t).setAttribute(\"name\",\"D\"),e.querySelectorAll(\"[name=d]\").length&&v.push(\"name\"+M+\"*[*^$|!~]?=\"),2!==e.querySelectorAll(\":enabled\").length&&v.push(\":enabled\",\":disabled\"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(\":disabled\").length&&v.push(\":enabled\",\":disabled\"),e.querySelectorAll(\"*,:x\"),v.push(\",.*:\")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,\"*\"),c.call(e,\"[s!='']:x\"),s.push(\"!=\",F)}),v=v.length&&new RegExp(v.join(\"|\")),s=s.length&&new RegExp(s.join(\"|\")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+\" \"]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||\"\").replace(te,ne),\"~=\"===e[2]&&(e[3]=\" \"+e[3]+\" \"),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),\"nth\"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*(\"even\"===e[3]||\"odd\"===e[3])),e[5]=+(e[7]+e[8]||\"odd\"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||\"\":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(\")\",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return\"*\"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+\" \"];return t||(t=new RegExp(\"(^|\"+M+\")\"+e+\"(\"+M+\"|$)\"))&&m(e,function(e){return t.test(\"string\"==typeof e.className&&e.className||\"undefined\"!=typeof e.getAttribute&&e.getAttribute(\"class\")||\"\")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?\"!=\"===r:!r||(t+=\"\",\"=\"===r?t===i:\"!=\"===r?t!==i:\"^=\"===r?i&&0===t.indexOf(i):\"*=\"===r?i&&-1\",\"#\"===e.firstChild.getAttribute(\"href\")})||fe(\"type|href|height|width\",function(e,t,n){if(!n)return e.getAttribute(t,\"type\"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML=\" \",e.firstChild.setAttribute(\"value\",\"\"),\"\"===e.firstChild.getAttribute(\"value\")})||fe(\"value\",function(e,t,n){if(!n&&\"input\"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute(\"disabled\")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[\":\"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):\"string\"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,\"string\"==typeof e){if(!(r=\"<\"===e[0]&&\">\"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\\x20\\t\\r\\n\\f]*)/i,he=/^$|^module$|\\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement(\"div\")),(fe=E.createElement(\"input\")).setAttribute(\"type\",\"radio\"),fe.setAttribute(\"checked\",\"checked\"),fe.setAttribute(\"name\",\"t\"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML=\"\",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML=\" \",y.option=!!ce.lastChild;var ge={thead:[1,\"\"],col:[2,\"\"],tr:[2,\"\"],td:[3,\"\"],_default:[0,\"\",\"\"]};function ve(e,t){var n;return n=\"undefined\"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||\"*\"):\"undefined\"!=typeof e.querySelectorAll?e.querySelectorAll(t||\"*\"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n\",\"\"]);var me=/<|?\\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\\s*$/g;function je(e,t){return A(e,\"table\")&&A(11!==t.nodeType?t:t.firstChild,\"tr\")&&S(e).children(\"tbody\")[0]||e}function De(e){return e.type=(null!==e.getAttribute(\"type\"))+\"/\"+e.type,e}function qe(e){return\"true/\"===(e.type||\"\").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute(\"type\"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,\"handle events\"),s)for(n=0,r=s[i].length;n\").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on(\"load error\",i=function(e){r.remove(),i=null,e&&t(\"error\"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\\?(?=&|$)|\\?\\?/;S.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var e=zt.pop()||S.expando+\"_\"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter(\"json jsonp\",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?\"url\":\"string\"==typeof e.data&&0===(e.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&Ut.test(e.data)&&\"data\");if(a||\"jsonp\"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,\"$1\"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?\"&\":\"?\")+e.jsonp+\"=\"+r),e.converters[\"script json\"]=function(){return o||S.error(r+\" was not called\"),o[0]},e.dataTypes[0]=\"json\",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),\"script\"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument(\"\").body).innerHTML=\"\",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return\"string\"!=typeof e?[]:(\"boolean\"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument(\"\")).createElement(\"base\")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(\" \");return-1\").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,\"position\"),c=S(e),f={};\"static\"===l&&(e.style.position=\"relative\"),s=c.offset(),o=S.css(e,\"top\"),u=S.css(e,\"left\"),(\"absolute\"===l||\"fixed\"===l)&&-1<(o+u).indexOf(\"auto\")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),\"using\"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if(\"fixed\"===S.css(r,\"position\"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&\"static\"===S.css(e,\"position\"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,\"borderTopWidth\",!0),i.left+=S.css(e,\"borderLeftWidth\",!0))}return{top:t.top-i.top-S.css(r,\"marginTop\",!0),left:t.left-i.left-S.css(r,\"marginLeft\",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&\"static\"===S.css(e,\"position\"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(t,i){var o=\"pageYOffset\"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each([\"top\",\"left\"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+\"px\":t})}),S.each({Height:\"height\",Width:\"width\"},function(a,s){S.each({padding:\"inner\"+a,content:s,\"\":\"outer\"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||\"boolean\"!=typeof e),i=r||(!0===e||!0===t?\"margin\":\"border\");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf(\"outer\")?e[\"inner\"+a]:e.document.documentElement[\"client\"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body[\"scroll\"+a],r[\"scroll\"+a],e.body[\"offset\"+a],r[\"offset\"+a],r[\"client\"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each([\"ajaxStart\",\"ajaxStop\",\"ajaxComplete\",\"ajaxError\",\"ajaxSuccess\",\"ajaxSend\"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,\"**\"):this.off(t,e||\"**\",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each(\"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu\".split(\" \"),function(e,n){S.fn[n]=function(e,t){return 0"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "\n",
- "\n"
- ],
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- ""
- ],
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "import pandas as pd\n",
- "import seaborn as sns\n",
- "import matplotlib.pyplot as plt\n",
- "from functools import partial\n",
- "from pint import UnitRegistry\n",
- "import json\n",
- "from pathlib import Path\n",
- "from itables import init_notebook_mode, show\n",
- "init_notebook_mode(all_interactive=True)\n",
- "\n",
- "pd.set_option('display.max_rows', 1000)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 212,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " shot_nums \n",
- " name \n",
- " uri \n",
- " shape \n",
- " rank \n",
- " signal_status \n",
- " source_alias \n",
- " units \n",
- " description \n",
- " label \n",
- " dimensions \n",
- " \n",
- " Loading... (need help ?)
\n",
- "\n",
- "
\n"
- ],
- "text/plain": [
- " shot_nums name \\\n",
- "0 28617 ABM_CALIB_SHOT \n",
- "1 28618 ABM_CALIB_SHOT \n",
- "2 28619 ABM_CALIB_SHOT \n",
- "3 28620 ABM_CALIB_SHOT \n",
- "4 28621 ABM_CALIB_SHOT \n",
- "... ... ... \n",
- "1290907 30467 ESX_UPPER_INV_RADIUS \n",
- "1290908 30468 ESX_UPPER_INV_RADIUS \n",
- "1290909 30469 ESX_UPPER_INV_RADIUS \n",
- "1290910 30470 ESX_UPPER_INV_RADIUS \n",
- "1290911 30471 ESX_UPPER_INV_RADIUS \n",
- "\n",
- " uri shape rank \\\n",
- "0 /home/ir-jack5/rds/rds-ukaea-mast-sPGbyCAPsJI/... [1] 1 \n",
- "1 /home/ir-jack5/rds/rds-ukaea-mast-sPGbyCAPsJI/... [1] 1 \n",
- "2 /home/ir-jack5/rds/rds-ukaea-mast-sPGbyCAPsJI/... [1] 1 \n",
- "3 /home/ir-jack5/rds/rds-ukaea-mast-sPGbyCAPsJI/... [1] 1 \n",
- "4 /home/ir-jack5/rds/rds-ukaea-mast-sPGbyCAPsJI/... [1] 1 \n",
- "... ... ... ... \n",
- "1290907 /home/ir-jack5/rds/rds-ukaea-mast-sPGbyCAPsJI/... [2] 1 \n",
- "1290908 /home/ir-jack5/rds/rds-ukaea-mast-sPGbyCAPsJI/... [2] 1 \n",
- "1290909 /home/ir-jack5/rds/rds-ukaea-mast-sPGbyCAPsJI/... [2] 1 \n",
- "1290910 /home/ir-jack5/rds/rds-ukaea-mast-sPGbyCAPsJI/... [2] 1 \n",
- "1290911 /home/ir-jack5/rds/rds-ukaea-mast-sPGbyCAPsJI/... [2] 1 \n",
- "\n",
- " signal_status source_alias units \\\n",
- "0 1 abm \n",
- "1 1 abm \n",
- "2 1 abm \n",
- "3 1 abm \n",
- "4 1 abm \n",
- "... ... ... ... \n",
- "1290907 1 esx cm \n",
- "1290908 1 esx cm \n",
- "1290909 1 esx cm \n",
- "1290910 1 esx cm \n",
- "1290911 1 esx cm \n",
- "\n",
- " description label dimensions \n",
- "0 Shot used for calibration (obsolete) Calibration Shot [time] \n",
- "1 Shot used for calibration (obsolete) Calibration Shot [time] \n",
- "2 Shot used for calibration (obsolete) Calibration Shot [time] \n",
- "3 Shot used for calibration (obsolete) Calibration Shot [time] \n",
- "4 Shot used for calibration (obsolete) Calibration Shot [time] \n",
- "... ... ... ... \n",
- "1290907 cm [time] \n",
- "1290908 cm [time] \n",
- "1290909 cm [time] \n",
- "1290910 cm [time] \n",
- "1290911 cm [time] \n",
- "\n",
- "[1290912 rows x 11 columns]"
- ]
- },
- "execution_count": 212,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "df = pd.read_parquet('~/mast-data/raw/sample_summary_metadata.parquet')\n",
- "df"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Overview of shapes & ranks"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 84,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- ""
- ]
- },
- "execution_count": 84,
- "metadata": {},
- "output_type": "execute_result"
- },
- {
- "data": {
- "image/png": "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YJr58ccfl81m89ri4uI8x4Np1nOqq6t1xx136PLLL9ell16qa665Rjt37vQcD7aZe/bs2ehvbLPZlJWVJSn45j19+rQeffRRJScnKyIiQr169dJvfvMbNTQ0eGo6dGYDL2vWrDFhYWHmz3/+s/nss8/M/PnzTefOnc2XX37p69Yu2saNG82vfvUrU1RUZCSZ9evXex1/8sknTWRkpCkqKjIff/yxmTlzpomPjzdut9tTc//995uf/OQnprS01Hz44Ydm3LhxZtCgQeb06dMdPE3zJk2aZFauXGk++eQTU1FRYW688UaTlJRkjh8/7qkJpnmNMaakpMS8/vrrprKy0lRWVpqFCxeasLAw88knnxhjgm/e873//vumZ8+eZuDAgWb+/Pme9WCaedGiRaZ///7G5XJ5tsOHD3uOB9OsxhjzzTffmB49epg5c+aY7du3mwMHDpjNmzeb/fv3e2qCbebDhw97/X1LS0uNJLNlyxZjTPDN+7vf/c5cfvnl5n//93/NgQMHzKuvvmq6dOli8vLyPDUdOTMB6HuGDx9u7r//fq+1fv36mUceecRHHbWN7weghoYGExcXZ5588knP2okTJ4zD4TDPPfecMcaYo0ePmrCwMLNmzRpPTXV1tQkJCTFvvvlmh/XeGocPHzaSjNPpNMYE/7znXHbZZebFF18M6nmPHTtm+vTpY0pLS811113nCUDBNvOiRYvMoEGDmjwWbLMaY8yCBQvMmDFjLng8GGf+vvnz55vevXubhoaGoJz3xhtvNHfddZfX2s0332zuuOMOY0zH/415Cew8J0+e1M6dO5WRkeG1npGRoXfffddHXbWPAwcOqKamxmtWu92u6667zjPrzp07derUKa+ahIQEDRgwwO9/H7W1tZL+3xfbBvu8Z86c0Zo1a1RXV6e0tLSgnjcrK0s33nijJkyY4LUejDPv27dPCQkJSk5O1m233aYvvvhCUnDOWlJSoqFDh+rWW29VTEyMUlNT9ec//9lzPBhnPt/Jkyf18ssv66677pLNZgvKeceMGaO3335bn3/+uSRp9+7d2rZtm6ZMmSKp4//GfBnqeY4cOaIzZ84oNjbWaz02NlY1NTU+6qp9nJunqVm//PJLT02nTp102WWXNarx59+HMUbZ2dkaM2aMBgwYICl45/3444+VlpamEydOqEuXLlq/fr1SUlI8/yEI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",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "sns.histplot(df[['name', 'rank']].drop_duplicates(), y='rank')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 215,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " size \n",
- " \n",
- " \n",
- " name \n",
- " \n",
- " \n",
- " Loading... (need help ?)
\n",
- "\n",
- "
\n"
- ],
- "text/plain": [
- "name\n",
- "ABM_R_TCO_EMIS 2\n",
- "ABM_TCO_EMIS 2\n",
- "ACT_C_PLA_CUTOFF 12\n",
- "ACT_C_PLA_CUTOFFTIME 12\n",
- "ACT_C_SS_CUTOFF 12\n",
- "ACT_C_SS_CUTOFFTIME 12\n",
- "ACT_C_SW_CUTOFF 8\n",
- "ACT_C_SW_CUTOFFTIME 8\n",
- "ACT__C_PLB_CUTOFF 12\n",
- "ACT__C_PLB_CUTOFFTIME 12\n",
- "AIR_QPROFILE_ISP 5\n",
- "AIR_QPROFILE_ISP_ELM 5\n",
- "AIR_QPROFILE_OSP 5\n",
- "AIR_QPROFILE_OSP_ELM 5\n",
- "AIR_RCOORD_ISP 5\n",
- "AIR_RCOORD_OSP 5\n",
- "AIR_TPROFILE_ISP 5\n",
- "AIR_TPROFILE_OSP 5\n",
- "AIT_QPROFILE_ISP 2\n",
- "AIT_QPROFILE_ISP_ELM 2\n",
- "AIT_QPROFILE_OSP 5\n",
- "AIT_QPROFILE_OSP_ELM 5\n",
- "AIT_RCOORD_ISP 2\n",
- "AIT_RCOORD_OSP 5\n",
- "AIT_TPROFILE_ISP 2\n",
- "AIT_TPROFILE_OSP 5\n",
- "ALP_INNER_LO_CHISQ 11\n",
- "ALP_INNER_LO_DENSITY 11\n",
- "ALP_INNER_LO_JSAT 11\n",
- "ALP_INNER_LO_JSOL 11\n",
- "ALP_INNER_LO_POWER 11\n",
- "ALP_INNER_LO_R 2\n",
- "ALP_INNER_LO_RAW_VFLOAT 11\n",
- "ALP_INNER_LO_TE 11\n",
- "ALP_INNER_LO_TIME 10\n",
- "ALP_INNER_LO_TIMEMID 11\n",
- "ALP_INNER_LO_VFLOAT 11\n",
- "ALP_INNER_LO_Z 2\n",
- "ALP_INNER_UP_CHISQ 8\n",
- "ALP_INNER_UP_DENSITY 8\n",
- "ALP_INNER_UP_JSAT 8\n",
- "ALP_INNER_UP_JSOL 8\n",
- "ALP_INNER_UP_POWER 8\n",
- "ALP_INNER_UP_RAW_VFLOAT 8\n",
- "ALP_INNER_UP_TE 8\n",
- "ALP_INNER_UP_TIME 8\n",
- "ALP_INNER_UP_TIMEMID 8\n",
- "ALP_INNER_UP_VFLOAT 8\n",
- "ALP_OUL_SEC4_CHISQ 8\n",
- "ALP_OUL_SEC4_DENSITY 8\n",
- "ALP_OUL_SEC4_JSAT 8\n",
- "ALP_OUL_SEC4_JSOL 8\n",
- "ALP_OUL_SEC4_POWER 8\n",
- "ALP_OUL_SEC4_RAW_VFLOAT 8\n",
- "ALP_OUL_SEC4_TE 8\n",
- "ALP_OUL_SEC4_TIME 8\n",
- "ALP_OUL_SEC4_TIMEMID 8\n",
- "ALP_OUL_SEC4_VFLOAT 8\n",
- "ALP_OUL_SEC6_CHISQ 8\n",
- "ALP_OUL_SEC6_DENSITY 8\n",
- "ALP_OUL_SEC6_JSAT 8\n",
- "ALP_OUL_SEC6_JSOL 8\n",
- "ALP_OUL_SEC6_POWER 8\n",
- "ALP_OUL_SEC6_RAW_VFLOAT 8\n",
- "ALP_OUL_SEC6_TE 8\n",
- "ALP_OUL_SEC6_TIME 8\n",
- "ALP_OUL_SEC6_TIMEMID 8\n",
- "ALP_OUL_SEC6_VFLOAT 8\n",
- "ALP_OUP_SEC4_CHISQ 8\n",
- "ALP_OUP_SEC4_DENSITY 8\n",
- "ALP_OUP_SEC4_JSAT 8\n",
- "ALP_OUP_SEC4_JSOL 8\n",
- "ALP_OUP_SEC4_POWER 8\n",
- "ALP_OUP_SEC4_RAW_VFLOAT 8\n",
- "ALP_OUP_SEC4_TE 8\n",
- "ALP_OUP_SEC4_TIME 8\n",
- "ALP_OUP_SEC4_TIMEMID 8\n",
- "ALP_OUP_SEC4_VFLOAT 8\n",
- "ALP_OUP_SEC6_CHISQ 8\n",
- "ALP_OUP_SEC6_DENSITY 8\n",
- "ALP_OUP_SEC6_JSAT 8\n",
- "ALP_OUP_SEC6_JSOL 8\n",
- "ALP_OUP_SEC6_POWER 8\n",
- "ALP_OUP_SEC6_RAW_VFLOAT 8\n",
- "ALP_OUP_SEC6_TE 8\n",
- "ALP_OUP_SEC6_TIME 8\n",
- "ALP_OUP_SEC6_TIMEMID 8\n",
- "ALP_OUP_SEC6_VFLOAT 8\n",
- "ALP_OUTER_LO_CHISQ 12\n",
- "ALP_OUTER_LO_DENSITY 12\n",
- "ALP_OUTER_LO_JSAT 12\n",
- "ALP_OUTER_LO_JSOL 12\n",
- "ALP_OUTER_LO_POWER 12\n",
- "ALP_OUTER_LO_R 2\n",
- "ALP_OUTER_LO_RAW_VFLOAT 12\n",
- "ALP_OUTER_LO_TE 12\n",
- "ALP_OUTER_LO_TIME 10\n",
- "ALP_OUTER_LO_TIMEMID 12\n",
- "ALP_OUTER_LO_VFLOAT 12\n",
- "ALP_OUTER_LO_Z 2\n",
- "ALP_OUTER_UP_CHISQ 12\n",
- "ALP_OUTER_UP_DENSITY 12\n",
- "ALP_OUTER_UP_JSAT 12\n",
- "ALP_OUTER_UP_JSOL 12\n",
- "ALP_OUTER_UP_POWER 12\n",
- "ALP_OUTER_UP_R 2\n",
- "ALP_OUTER_UP_RAW_VFLOAT 12\n",
- "ALP_OUTER_UP_TE 12\n",
- "ALP_OUTER_UP_TIME 10\n",
- "ALP_OUTER_UP_TIMEMID 12\n",
- "ALP_OUTER_UP_VFLOAT 12\n",
- "ALP_OUTER_UP_Z 2\n",
- "AMS_ACOEFF 7\n",
- "AMS_CH 7\n",
- "AMS_COSBEAM 7\n",
- "AMS_CPF 7\n",
- "AMS_CPFNOISE 7\n",
- "AMS_CWL 7\n",
- "AMS_FILTERPN 7\n",
- "AMS_FWHM 7\n",
- "AMS_GAMMA 7\n",
- "AMS_GAMMANOISE 7\n",
- "AMS_LPF 7\n",
- "AMS_LPFNOISE 7\n",
- "AMS_MD 7\n",
- "AMS_OFFSET 7\n",
- "AMS_PHASE1 7\n",
- "AMS_PHASE2 7\n",
- "AMS_PITCHA 7\n",
- "AMS_PITCHANOISE 7\n",
- "AMS_RETAR1 7\n",
- "AMS_RETAR2 7\n",
- "AMS_RPOS 7\n",
- "AMS_S0 7\n",
- "AMS_S0NOISE 7\n",
- "AMS_S1 7\n",
- "AMS_S1NOISE 7\n",
- "AMS_S2 7\n",
- "AMS_S2NOISE 7\n",
- "AMS_S3 7\n",
- "AMS_S3NOISE 7\n",
- "AMS_TRANS 7\n",
- "AMS_VX0 7\n",
- "AMS_VY0 7\n",
- "ESM_R_LARMOR_MULTI 2\n",
- "ESM_V_ION_MULTI 2\n",
- "Name: size, dtype: int64"
- ]
- },
- "execution_count": 215,
- "metadata": {},
- "output_type": "execute_result"
- },
- {
- "data": {
- "image/png": "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",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "shapes = df[['name', 'shape']]\n",
- "shapes.loc[:, 'shape'] = shapes['shape'].map(lambda x: tuple(x)[1:])\n",
- "shapes = shapes.drop_duplicates()\n",
- "\n",
- "shapes = shapes.groupby('name').size()\n",
- "shapes.name = 'size'\n",
- "# shapes.name = 'num'\n",
- "sns.histplot(shapes)\n",
- "shapes.loc[shapes > 1]"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Overview of signal status"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Get a list of the units"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 225,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " name \n",
- " label \n",
- " description \n",
- " old_units \n",
- " new_units \n",
- " long_name \n",
- " \n",
- " Loading... (need help ?)
\n",
- "\n",
- "
\n"
- ],
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "ureg = UnitRegistry()\n",
- "ureg.define('@alias tesla = Tesla')\n",
- "ureg.define('@alias watt = Watts')\n",
- "\n",
- "unit_map = json.load(Path('~/mast-data/mappings/units.json').expanduser().open('r'))\n",
- "\n",
- "def parse_unit(name, mode='compact'):\n",
- " name = unit_map[name] if name in unit_map else name\n",
- " try:\n",
- " quantity = ureg.parse_expression(name)\n",
- " if mode == 'compact':\n",
- " return \"{:~C}\".format(quantity.u)\n",
- " else:\n",
- " return \"{}\".format(quantity.u)\n",
- " except:\n",
- " return ''\n",
- "\n",
- "units_summary = df[['name', 'label', 'description', 'units']].drop_duplicates().reset_index(drop=True)\n",
- "units_summary['description'] = units_summary.description.astype(str)\n",
- "units_summary = units_summary.rename(dict(units='old_units'), axis=1)\n",
- "units_summary['new_units'] = units_summary['old_units'].map(parse_unit)\n",
- "units_summary['long_name'] = units_summary['old_units'].map(partial(parse_unit, mode='verbose'))\n",
- "units_summary.to_parquet('~/mast-data/mappings/units.parquet')\n",
- "units_summary\n",
- "show(units_summary, style=\"table-layout:auto;width:50%;float:left\")"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Look at the unique dimension names, see what we can combine:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 190,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " name \n",
- " old_dimension \n",
- " new_dimensions \n",
- " \n",
- " Loading... (need help ?)
\n",
- "\n",
- "
\n"
- ],
- "text/plain": [
- " name old_dimension new_dimensions\n",
- "0 ABM_CALIB_SHOT time time\n",
- "1 ABM_CHANNEL_STATUS time time\n",
- "2 ABM_CHANNEL_STATUS dim_0 dim_0\n",
- "3 ABM_CHANNEL_TYPE time time\n",
- "4 ABM_CHANNEL_TYPE dim_0 dim_0\n",
- "... ... ... ...\n",
- "1675 ESX_LOWER_INV_RADIUS time time\n",
- "1676 ESX_PASSNUMBER time time\n",
- "1677 ESX_STATUS time time\n",
- "1678 ESX_UPPER_INV_PSI time time\n",
- "1679 ESX_UPPER_INV_RADIUS time time\n",
- "\n",
- "[1680 rows x 3 columns]"
- ]
- },
- "execution_count": 190,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "dims = df[['name', 'dimensions']]\n",
- "dims.loc[:, 'dimensions'] = dims.dimensions.map(lambda x: tuple(x))\n",
- "dims = dims.drop_duplicates()\n",
- "dim_names = []\n",
- "for key, item in dims.iterrows():\n",
- " for dim in item.dimensions:\n",
- " dim_names.append((item['name'], dim, dim))\n",
- "\n",
- "dim_map = json.load(Path('~/mast-data/mappings/dimensions.json').expanduser().open('r'))\n",
- "\n",
- "def parse_dimensions(dim_name):\n",
- " return dim_map.get(dim_name, dim_name)\n",
- "\n",
- "dims = pd.DataFrame(dim_names, columns=['name', 'old_dimension', 'new_dimensions'])\n",
- "dims['new_dimensions'] = dims['new_dimensions'].map(parse_dimensions)\n",
- "dims.to_parquet('~/mast-data/mappings/dimensions.parquet')\n",
- "dims"
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "mast",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.9.16"
- },
- "orig_nbformat": 4
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
From 942ed46ae56a0c1f4f60f757c91204f244d03c25 Mon Sep 17 00:00:00 2001
From: Samuel Jackson
Date: Thu, 15 Aug 2024 14:06:03 +0100
Subject: [PATCH 5/8] Remove notebooks
---
notebooks/data-structure-report.ipynb | 5510 -
notebooks/images/schema.png | Bin 43392 -> 0 bytes
notebooks/images/website1.PNG | Bin 221282 -> 0 bytes
notebooks/images/website2.PNG | Bin 88454 -> 0 bytes
notebooks/map_signals.ipynb | 124338 -----------------------
notebooks/sample_hdf.ipynb | 2634 -
6 files changed, 132482 deletions(-)
delete mode 100644 notebooks/data-structure-report.ipynb
delete mode 100644 notebooks/images/schema.png
delete mode 100644 notebooks/images/website1.PNG
delete mode 100644 notebooks/images/website2.PNG
delete mode 100644 notebooks/map_signals.ipynb
delete mode 100644 notebooks/sample_hdf.ipynb
diff --git a/notebooks/data-structure-report.ipynb b/notebooks/data-structure-report.ipynb
deleted file mode 100644
index 26706e6..0000000
--- a/notebooks/data-structure-report.ipynb
+++ /dev/null
@@ -1,5510 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "id": "41361f6c",
- "metadata": {
- "toc": true
- },
- "source": [
- "Table of Contents \n",
- ""
- ]
- },
- {
- "cell_type": "markdown",
- "id": "7e7d5c7f-d8ef-400b-9162-b90965ed864c",
- "metadata": {},
- "source": [
- "# Introduction"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "694f8456-f8cc-45a7-b4d0-3ca03b06a9b5",
- "metadata": {},
- "source": [
- "This document will describe a general overview of the MAST dataset, particularly its data structure. We will access or retrieve the data structure using the Python [UDA](https://users.mastu.ukaea.uk/data-access-and-tools) and [CPF](https://users.mastu.ukaea.uk/sites/default/files/uploads/CPF.pdf) APIs provided by the UKAEA. The Python packages can only be accessed from the UKAEA's internal Linux cluster called Freia. The scope of this document is limited to the data structure we retrieve via these APIs. We shall discuss the MAST data in a separate document.\n",
- "\n",
- "Each MAST experiment is around 5 GB. Therefore the whole MAST dataset could weigh more than 150 TB. The last experiment was performed on the 27th of September, 2013, with shot number 30473."
- ]
- },
- {
- "cell_type": "markdown",
- "id": "e68158df",
- "metadata": {},
- "source": [
- "## Conventions used in this report"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "c117b452",
- "metadata": {},
- "source": [
- "`Code type` "
- ]
- },
- {
- "cell_type": "markdown",
- "id": "9f230ab0",
- "metadata": {},
- "source": [
- "denotion is used to emphasize variables, objects or classes (eg. `Signal` would refer to a signal class)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "fce82927",
- "metadata": {},
- "source": [
- "`CODE_TYPE` with capital letters"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "64341eaf",
- "metadata": {},
- "source": [
- " is used for ListType values: `SOURCE`/`SOURCES`, `SIGNAL`/`SIGNALS`, `SHOT`/`SHOTS`"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "39ee1706",
- "metadata": {},
- "source": [
- "**Shots** or **Shot**"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "f1f4c2e7",
- "metadata": {},
- "source": [
- "is used to refer to a single experiment"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "5cfcc0c8",
- "metadata": {},
- "source": [
- "**_Bold italics_**"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "623fd87d",
- "metadata": {},
- "source": [
- "is used for `SOURCE` types : **_Raw_**, **_Analysed_**, **_Image_**"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "659e7450",
- "metadata": {},
- "source": [
- "*Italics*"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "e74a2922",
- "metadata": {},
- "source": [
- "is used for `SOURCE` formats, such as *TIF*, *IPX*, *IDA3* etc."
- ]
- },
- {
- "cell_type": "markdown",
- "id": "644e70fd",
- "metadata": {},
- "source": [
- "# Overview of Dataset"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "96282397-ed50-42b9-8e5a-25a509e55d85",
- "metadata": {},
- "source": [
- "## Web UI"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "544bdc4e",
- "metadata": {},
- "source": [
- "The UKAEA has developed a [Web UI](https://users.mastu.ukaea.uk/internal/shot/27933) to browse the MAST dataset. Fig. 1 and 2 are screenshots of an example shot and its data from the web link.\n",
- " \n",
- "\n",
- " \n",
- "
\n",
- "\n",
- "
Figure 1. Example screenshot showing the source information of the shot number 27933.
\n",
- "
\n",
- "\n",
- "\n",
- "
\n",
- "\n",
- "
\n",
- "
Figure 2. Example screenshot showing the metadata information of the shot number 27933.
\n",
- "\n"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "864655a8",
- "metadata": {},
- "source": [
- "\n",
- "Note: We can retrieve more information using the UDA and CPF APIs. We noticed minor inconsistencies with the CPF information displayed in the Web UI.\n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "ddc7d2d9",
- "metadata": {},
- "source": [
- "\n",
- " \n",
- "
\n",
- "\n",
- "
Figure 3. A high-level schema.
\n",
- " \n",
- "\n",
- "\n",
- "Each experiment in the dataset is called a **shot**. Fig. 1 illustrates a high-level schema. Each shot (in UDA API defined using enumerator symbol `SHOTS`) consists of sources (`SOURCES`). There are three types of sources:\n",
- "1. **_Raw_** - unprocessed data,\n",
- "2. **_Analysed_** - processed data, and\n",
- "3. **_Image_** - video or image.\n",
- "\n",
- "The **_Raw_** and **_Analysed_** types of `SOURCES` are also defined additionally as `SIGNALS`. \n",
- "\n",
- "In the following section, we will use the UDA API and retrieve and discuss an example shot's `SOURCES` and `SIGNALS` information. The metadata information of shots is stored in *CPF* (central physics file) files; we will discuss this in the final section of this document. "
- ]
- },
- {
- "cell_type": "markdown",
- "id": "e0bd94ac",
- "metadata": {},
- "source": [
- "## Import Python Packages"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "3d530c27",
- "metadata": {},
- "source": [
- "In this section, we import the required Python, UDA and CPF packages."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "id": "c83d3fb8",
- "metadata": {},
- "outputs": [],
- "source": [
- "import pyuda\n",
- "from mast.mast_client import ListType\n",
- "from pycpf import pycpf"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "2aee7813",
- "metadata": {},
- "source": [
- "Import other relavant Python packages used in this document."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "id": "a554274e",
- "metadata": {},
- "outputs": [],
- "source": [
- "import matplotlib.pyplot as plt\n",
- "import pandas as pd\n",
- "from rich import inspect, print"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "857fde37",
- "metadata": {},
- "source": [
- "Create the `pyuda` client for fetching the data. Please see the UDA document for more details."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "id": "656b22c3",
- "metadata": {},
- "outputs": [],
- "source": [
- "client = pyuda.Client()\n",
- "client.set_property(\"get_meta\", True)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "b27c1bfe",
- "metadata": {},
- "source": [
- "# **Shot**"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "0e5b2755",
- "metadata": {},
- "source": [
- "\n",
- "As mentioned earlier, `SHOT` is a single experiment from the MAST dataset. Each shot is assigned a unique number. The numbers are assigned chronologically as the experiments are performed. \n",
- "\n"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "e7c488f5",
- "metadata": {},
- "source": [
- "\n",
- "Note: Although there are officially more than 30000 shots, there is no information about the shots with a value <11700, which is accessible on the MAST website. Currently, no data from shots <8000 is accessible through UDA API\n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "72f7a7f5-a039-411e-b54b-d7923d74bbe0",
- "metadata": {},
- "source": [
- "To access a shot and its data, the shot number is required. For example,"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 11,
- "id": "26f38ec9",
- "metadata": {},
- "outputs": [],
- "source": [
- "shot_1 = 27933"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "20267059",
- "metadata": {},
- "source": [
- "The `ListType` defines two enumerator values `SOURCES` and `SIGNALS`. The UDA client takes an enumerator as an argument to fetch the relavant data."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 12,
- "id": "4b312efb",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "╭────────────────────────────────── < enum 'ListType' > ──────────────────────────────────╮ \n",
- "│ class ListType ( value, names =None , *, module =None , qualname =None , type =None , start =1 ) : │ \n",
- "│ │ \n",
- "│ SHOTS = < ListType.SHOTS: 3 > │ \n",
- "│ SIGNALS = < ListType.SIGNALS: 1 > │ \n",
- "│ SOURCES = < ListType.SOURCES: 2 > │ \n",
- "╰───────────────────────────────────────────────────────────────────────────────────────╯ \n",
- " \n"
- ],
- "text/plain": [
- "\u001b[34m╭─\u001b[0m\u001b[34m───────────────────────────────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95menum\u001b[0m\u001b[39m \u001b[0m\u001b[32m'ListType'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ─────────────────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;96mclass \u001b[0m\u001b[1;31mListType\u001b[0m\u001b[1m(\u001b[0mvalue, \u001b[33mnames\u001b[0m=\u001b[3;35mNone\u001b[0m, *, \u001b[33mmodule\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[33mqualname\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[33mtype\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[33mstart\u001b[0m=\u001b[1;36m1\u001b[0m\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mSHOTS\u001b[0m = \u001b[1m<\u001b[0m\u001b[1;95mListType.SHOTS:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m3\u001b[0m\u001b[1m>\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mSIGNALS\u001b[0m = \u001b[1m<\u001b[0m\u001b[1;95mListType.SIGNALS:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m1\u001b[0m\u001b[1m>\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mSOURCES\u001b[0m = \u001b[1m<\u001b[0m\u001b[1;95mListType.SOURCES:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m2\u001b[0m\u001b[1m>\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m╰───────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "inspect(ListType, docs=False)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "e36c5e16",
- "metadata": {},
- "source": [
- "\n",
- "Note: SHOT is shown as a ListType but it might be an incorrect representation.\n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "92d48ac7",
- "metadata": {},
- "source": [
- "## Retrieve `SOURCES` of a Shot"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "72074f89",
- "metadata": {},
- "source": [
- "A shot contains a list of sources (`SOURCES`) as a list or array of `ListData`. For example fetch the list of sources of a shot:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 39,
- "id": "d934bc39",
- "metadata": {
- "tags": []
- },
- "outputs": [],
- "source": [
- "sources_1 = client.list(ListType.SOURCES, shot_1)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 40,
- "id": "b828d7f3-b6fb-4800-a811-cbcfcf64e30a",
- "metadata": {
- "tags": []
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "Number of sources in shot 27933 = 81 \n",
- " \n"
- ],
- "text/plain": [
- "Number of sources in shot \u001b[1;36m27933\u001b[0m = \u001b[1;36m81\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "print(f\"Number of sources in shot {shot_1} = {len(sources_1)}\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 41,
- "id": "eab46f29",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "╭───── < class 'mast.mast_client.ListData' > ─────╮ \n",
- "│ ╭───────────────────────────────────────────╮ │ \n",
- "│ │ ListData ( │ │ \n",
- "│ │ │ shot =27933 , │ │ \n",
- "│ │ │ pass_ =0 , │ │ \n",
- "│ │ │ status =1 , │ │ \n",
- "│ │ │ source_alias ='abm' , │ │ \n",
- "│ │ │ format ='IDA3' , │ │ \n",
- "│ │ │ filename ='abm0279.33' , │ │ \n",
- "│ │ │ type ='Analysed' , │ │ \n",
- "│ │ │ description ='multi-chord bolometers' , │ │ \n",
- "│ │ │ run_id =-1 │ │ \n",
- "│ │ ) │ │ \n",
- "│ ╰───────────────────────────────────────────╯ │ \n",
- "│ │ \n",
- "│ description = 'multi-chord bolometers' │ \n",
- "│ filename = 'abm0279.33' │ \n",
- "│ format = 'IDA3' │ \n",
- "│ pass_ = 0 │ \n",
- "│ run_id = -1 │ \n",
- "│ shot = 27933 │ \n",
- "│ source_alias = 'abm' │ \n",
- "│ status = 1 │ \n",
- "│ type = 'Analysed' │ \n",
- "╰───────────────────────────────────────────────╯ \n",
- " \n"
- ],
- "text/plain": [
- "\u001b[34m╭─\u001b[0m\u001b[34m──── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'mast.mast_client.ListData'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ────\u001b[0m\u001b[34m─╮\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╭───────────────────────────────────────────╮\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1;35mListData\u001b[0m\u001b[1m(\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33mshot\u001b[0m=\u001b[1;36m27933\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33mpass_\u001b[0m=\u001b[1;36m0\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33mstatus\u001b[0m=\u001b[1;36m1\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33msource_alias\u001b[0m=\u001b[32m'abm'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33mformat\u001b[0m=\u001b[32m'IDA3'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33mfilename\u001b[0m=\u001b[32m'abm0279.33'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'Analysed'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33mdescription\u001b[0m=\u001b[32m'multi-chord bolometers'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33mrun_id\u001b[0m=\u001b[1;36m-1\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m)\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╰───────────────────────────────────────────╯\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdescription\u001b[0m = \u001b[32m'multi-chord bolometers'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mfilename\u001b[0m = \u001b[32m'abm0279.33'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mformat\u001b[0m = \u001b[32m'IDA3'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mpass_\u001b[0m = \u001b[1;36m0\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mrun_id\u001b[0m = \u001b[1;36m-1\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mshot\u001b[0m = \u001b[1;36m27933\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33msource_alias\u001b[0m = \u001b[32m'abm'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mstatus\u001b[0m = \u001b[1;36m1\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mtype\u001b[0m = \u001b[32m'Analysed'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m╰───────────────────────────────────────────────╯\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "# inspect the first source data\n",
- "inspect(sources_1[0], docs=False)\n",
- "\n",
- "# inspect all the sources\n",
- "# this will print a long list of ListData objects, uncomment the line below and run to check\n",
- "# inspect(sources)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "4108b5f1",
- "metadata": {
- "tags": []
- },
- "source": [
- "A tabular view of the list of `SOURCES`."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 42,
- "id": "b01e5c86-50ec-47c6-ac8d-fb9cdf03f50b",
- "metadata": {
- "tags": []
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " shot \n",
- " pass_ \n",
- " status \n",
- " source_alias \n",
- " format \n",
- " filename \n",
- " type \n",
- " description \n",
- " run_id \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 \n",
- " 27933 \n",
- " 0 \n",
- " 1 \n",
- " abm \n",
- " IDA3 \n",
- " abm0279.33 \n",
- " Analysed \n",
- " multi-chord bolometers \n",
- " -1 \n",
- " \n",
- " \n",
- " 1 \n",
- " 27933 \n",
- " 0 \n",
- " 1 \n",
- " ada \n",
- " IDA3 \n",
- " ada0279.33 \n",
- " Analysed \n",
- " Linear D-Alpha Camera \n",
- " -1 \n",
- " \n",
- " \n",
- " 2 \n",
- " 27933 \n",
- " 0 \n",
- " 1 \n",
- " adg \n",
- " IDA3 \n",
- " adg0279.33 \n",
- " Analysed \n",
- " Plasma Edge Density gradient from the linear D... \n",
- " -1 \n",
- " \n",
- " \n",
- " 3 \n",
- " 27933 \n",
- " 1 \n",
- " 1 \n",
- " aga \n",
- " IDA3 \n",
- " aga0279.33 \n",
- " Analysed \n",
- " molecular deuterium pressure, neutral gas pres... \n",
- " -1 \n",
- " \n",
- " \n",
- " 4 \n",
- " 27933 \n",
- " 0 \n",
- " 1 \n",
- " aga \n",
- " IDA3 \n",
- " aga0279.33 \n",
- " Analysed \n",
- " molecular deuterium pressure, neutral gas pres... \n",
- " -1 \n",
- " \n",
- " \n",
- " ... \n",
- " ... \n",
- " ... \n",
- " ... \n",
- " ... \n",
- " ... \n",
- " ... \n",
- " ... \n",
- " ... \n",
- " ... \n",
- " \n",
- " \n",
- " 76 \n",
- " 27933 \n",
- " -1 \n",
- " 1 \n",
- " xtb \n",
- " IDA3 \n",
- " xtb0279.33 \n",
- " Raw \n",
- " Thomson scattering background data \n",
- " -1 \n",
- " \n",
- " \n",
- " 77 \n",
- " 27933 \n",
- " -1 \n",
- " 1 \n",
- " xtm \n",
- " IDA3 \n",
- " xtm0279.33 \n",
- " Raw \n",
- " Edge Thomson scattering data \n",
- " -1 \n",
- " \n",
- " \n",
- " 78 \n",
- " 27933 \n",
- " -1 \n",
- " 1 \n",
- " xtp \n",
- " IDA3 \n",
- " xtp0279.33 \n",
- " Raw \n",
- " Langmuir Probes - top \n",
- " -1 \n",
- " \n",
- " \n",
- " 79 \n",
- " 27933 \n",
- " -1 \n",
- " 1 \n",
- " xyc \n",
- " CDF \n",
- " xyc027933.nc \n",
- " Raw \n",
- " Core Thomson scattering data \n",
- " -1 \n",
- " \n",
- " \n",
- " 80 \n",
- " 27933 \n",
- " -1 \n",
- " 1 \n",
- " xyr \n",
- " CDF \n",
- " xyr027933.nc \n",
- " Raw \n",
- " Real time Thomson scattering data \n",
- " -1 \n",
- " \n",
- " \n",
- "
\n",
- "
81 rows × 9 columns
\n",
- "
"
- ],
- "text/plain": [
- " shot pass_ status source_alias format filename type \\\n",
- "0 27933 0 1 abm IDA3 abm0279.33 Analysed \n",
- "1 27933 0 1 ada IDA3 ada0279.33 Analysed \n",
- "2 27933 0 1 adg IDA3 adg0279.33 Analysed \n",
- "3 27933 1 1 aga IDA3 aga0279.33 Analysed \n",
- "4 27933 0 1 aga IDA3 aga0279.33 Analysed \n",
- ".. ... ... ... ... ... ... ... \n",
- "76 27933 -1 1 xtb IDA3 xtb0279.33 Raw \n",
- "77 27933 -1 1 xtm IDA3 xtm0279.33 Raw \n",
- "78 27933 -1 1 xtp IDA3 xtp0279.33 Raw \n",
- "79 27933 -1 1 xyc CDF xyc027933.nc Raw \n",
- "80 27933 -1 1 xyr CDF xyr027933.nc Raw \n",
- "\n",
- " description run_id \n",
- "0 multi-chord bolometers -1 \n",
- "1 Linear D-Alpha Camera -1 \n",
- "2 Plasma Edge Density gradient from the linear D... -1 \n",
- "3 molecular deuterium pressure, neutral gas pres... -1 \n",
- "4 molecular deuterium pressure, neutral gas pres... -1 \n",
- ".. ... ... \n",
- "76 Thomson scattering background data -1 \n",
- "77 Edge Thomson scattering data -1 \n",
- "78 Langmuir Probes - top -1 \n",
- "79 Core Thomson scattering data -1 \n",
- "80 Real time Thomson scattering data -1 \n",
- "\n",
- "[81 rows x 9 columns]"
- ]
- },
- "execution_count": 42,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "df_1 = pd.DataFrame(sources_1)\n",
- "df_1"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "9670dc54",
- "metadata": {
- "tags": []
- },
- "source": [
- "A `SOURCE` attributes are:\n",
- "\n",
- "* `shot` - the unique number of a `SHOT`\n",
- "* `pass_` - for **_Analysed_** type it would mean how many processing iterations it went through, the first - number 0, for **_Raw_** we would see -1\n",
- "* `status` - internal data status set by responsible officer:\n",
- " * -1 Poor Data: do not use\n",
- " * 0 Something is wrong in the Data\n",
- " * 1 either **_Raw_** data not checked or **_Analysed_** data quality is Unknown\n",
- " * 2 Data has been checked - no known problems\n",
- " * 3 Data was validated\n",
- "* `source_alias` - three letter alias name, which can be used for a separate source inspection\n",
- "* `format` - file format: *IDA3*, *CBF*, *JPG*, *TIF* etc. \n",
- "* `filename` - name in the internal data system we don't have access to\n",
- "* `type` - e.g., **_Analysed_**, **_Raw_** or **_Image_**\n",
- "* `description` - text description of the source\n",
- "* `run_id` - [TODO: For Nathan] \n"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "c2c8eb71",
- "metadata": {},
- "source": [
- "### Source type, format, & alias\n",
- " \n"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "936d25ed",
- "metadata": {},
- "source": [
- "There are three different types of source, e.g., **_Image_**, **_Raw_**, and **_Analysed_**. "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 43,
- "id": "95277df0",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "Source types are { 'Raw' , 'Analysed' , 'Image' } \n",
- " \n"
- ],
- "text/plain": [
- "Source types are \u001b[1m{\u001b[0m\u001b[32m'Raw'\u001b[0m, \u001b[32m'Analysed'\u001b[0m, \u001b[32m'Image'\u001b[0m\u001b[1m}\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "types = set([source.type for source in sources_1 if source.type is not None])\n",
- "print(f\"Source types are {types}\")"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "888e2518",
- "metadata": {},
- "source": [
- "`SOURCES` are saved as numerous formats. For example, the sources of the `shot_1` use the following formats:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 44,
- "id": "ee49e967",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "The formats of the sources of shot 27933 are { 'CDF' , 'IDA3' , 'NIDA' , 'ASCII' , 'IPX' , 'TIF' } \n",
- " \n"
- ],
- "text/plain": [
- "The formats of the sources of shot \u001b[1;36m27933\u001b[0m are \u001b[1m{\u001b[0m\u001b[32m'CDF'\u001b[0m, \u001b[32m'IDA3'\u001b[0m, \u001b[32m'NIDA'\u001b[0m, \u001b[32m'ASCII'\u001b[0m, \u001b[32m'IPX'\u001b[0m, \u001b[32m'TIF'\u001b[0m\u001b[1m}\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "formats = set([source.format for source in sources_1 if source.format is not None])\n",
- "print(f\"The formats of the sources of shot {shot_1} are {formats}\")"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "211ecc4d",
- "metadata": {},
- "source": [
- "There are other formats available in different shots. \n",
- "\n",
- "Some formats are more likely to be used in a certain source types. For example, *JPG*, *IPX* and *TIF* are more likely to be an **_Image_** type, while *IDA3* is **_Analysed_** type."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 45,
- "id": "b9a58656-6b59-40c7-82d0-74846db2fec5",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " type \n",
- " formats \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 \n",
- " Analysed \n",
- " {IDA3} \n",
- " \n",
- " \n",
- " 1 \n",
- " Image \n",
- " {TIF, IPX} \n",
- " \n",
- " \n",
- " 2 \n",
- " Raw \n",
- " {CDF, NIDA, ASCII, IDA3} \n",
- " \n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " type formats\n",
- "0 Analysed {IDA3}\n",
- "1 Image {TIF, IPX}\n",
- "2 Raw {CDF, NIDA, ASCII, IDA3}"
- ]
- },
- "execution_count": 45,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "df_1.groupby(\"type\", as_index=False).agg(formats=(\"format\", lambda x: set(x)))"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "672771c6",
- "metadata": {},
- "source": [
- "Aliases use three letter names. Usually, the **_Raw_** types use aliases with first letter `x`, **_Analysed_** use `a`, and **_Image_** use `r`. However, it is not always true. There might be some exceptions, which will be discussed later."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 46,
- "id": "edacd996-4c7d-4ab2-812e-96b01d7c3a53",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " type \n",
- " aliases \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 \n",
- " Analysed \n",
- " {air, amc, amb, lim, asm, ait, ahx, anu, aga, ... \n",
- " \n",
- " \n",
- " 1 \n",
- " Image \n",
- " {rda, rdb, rir, rit, rgb, rba, rbc, rzz, rbb, ... \n",
- " \n",
- " \n",
- " 2 \n",
- " Raw \n",
- " {xmp, xim, xlp, xcm, xfi, xpc, xsx, pcs, xmw, ... \n",
- " \n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " type aliases\n",
- "0 Analysed {air, amc, amb, lim, asm, ait, ahx, anu, aga, ...\n",
- "1 Image {rda, rdb, rir, rit, rgb, rba, rbc, rzz, rbb, ...\n",
- "2 Raw {xmp, xim, xlp, xcm, xfi, xpc, xsx, pcs, xmw, ..."
- ]
- },
- "execution_count": 46,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "df_1.groupby(\"type\", as_index=False).agg(aliases=(\"source_alias\", lambda x: set(x)))"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "f27ec8c0",
- "metadata": {},
- "source": [
- "Below we discuss **_Raw_** and **_Analysed_** sources together, while **_Image_** sources separately. This is due to the former sharing similarities in data access."
- ]
- },
- {
- "cell_type": "markdown",
- "id": "b0acec38",
- "metadata": {},
- "source": [
- "### **_Raw_** & **_Analysed_** types"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "199e85cc",
- "metadata": {},
- "source": [
- "The **_Raw_** and **_Analysed_** types have `SOURCE` names and additionally they also have `SIGNAL` names. These are used to access the source `SIGNAL`. UDA uses a class named `Signal` for **_Raw_** and **_Analysed_** type data.\n",
- "\n",
- "The unanalysed or unprocessed data are categorised as **_Raw_** types. **_Raw_** type data are mostly saved in *CDF* or *IDA3* format. In some cases it is also saved in *NIDA* format (which is an image or video file) and *ASCII* format. These formats are commonly used throughout the whole dataset."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 47,
- "id": "c48f7e98-4478-46bc-bb18-2530c4b51a0a",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " type \n",
- " format \n",
- " aliases \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 \n",
- " Raw \n",
- " ASCII \n",
- " {msf} \n",
- " \n",
- " \n",
- " 1 \n",
- " Raw \n",
- " CDF \n",
- " {xmp, xfi, xsx, rcb, xsm, xyc, xmc, xyr, xms, ... \n",
- " \n",
- " \n",
- " 2 \n",
- " Raw \n",
- " IDA3 \n",
- " {xim, xlp, xcm, xpc, pcs, xtm, xdc, xmd, xax, ... \n",
- " \n",
- " \n",
- " 3 \n",
- " Raw \n",
- " NIDA \n",
- " {xmw} \n",
- " \n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " type format aliases\n",
- "0 Raw ASCII {msf}\n",
- "1 Raw CDF {xmp, xfi, xsx, rcb, xsm, xyc, xmc, xyr, xms, ...\n",
- "2 Raw IDA3 {xim, xlp, xcm, xpc, pcs, xtm, xdc, xmd, xax, ...\n",
- "3 Raw NIDA {xmw}"
- ]
- },
- "execution_count": 47,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "df_1.loc[df_1[\"type\"] == \"Raw\"].groupby([\"type\", \"format\"], as_index=False).agg(\n",
- " aliases=(\"source_alias\", lambda x: set(x))\n",
- ")"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "078e5472",
- "metadata": {},
- "source": [
- "The processed or analysed data are categorised as **_Analysed_** types and they usually use *IDA3* format."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 48,
- "id": "b457b371-5520-4933-b88e-f718e7283ad6",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " type \n",
- " format \n",
- " aliases \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 \n",
- " Analysed \n",
- " IDA3 \n",
- " {air, amc, amb, lim, asm, ait, ahx, anu, aga, ... \n",
- " \n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " type format aliases\n",
- "0 Analysed IDA3 {air, amc, amb, lim, asm, ait, ahx, anu, aga, ..."
- ]
- },
- "execution_count": 48,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "df_1.loc[df_1[\"type\"] == \"Analysed\"].groupby([\"type\", \"format\"], as_index=False).agg(\n",
- " aliases=(\"source_alias\", lambda x: set(x))\n",
- ")"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "0a7bdd62",
- "metadata": {},
- "source": [
- "We also noticed that some shots use *BINARY* format, as demonstrated below."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 49,
- "id": "d861c2a6",
- "metadata": {},
- "outputs": [],
- "source": [
- "shot_2 = 12000\n",
- "sources_2 = client.list(ListType.SOURCES, shot_2)\n",
- "df_2 = pd.DataFrame(sources_2)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 50,
- "id": "e52e45c8-177b-4550-a1b9-966a4a2c1cbe",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " type \n",
- " format \n",
- " aliases \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 \n",
- " Raw \n",
- " BINARY \n",
- " {rcb, rts, rcc, rbm, pcs} \n",
- " \n",
- " \n",
- " 1 \n",
- " Raw \n",
- " IDA3 \n",
- " {xim, xlp, xcm, xpc, xsx, xmw, xvs, xtm, xmc, ... \n",
- " \n",
- " \n",
- " 2 \n",
- " Raw \n",
- " NIDA \n",
- " {rir, xpx} \n",
- " \n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " type format aliases\n",
- "0 Raw BINARY {rcb, rts, rcc, rbm, pcs}\n",
- "1 Raw IDA3 {xim, xlp, xcm, xpc, xsx, xmw, xvs, xtm, xmc, ...\n",
- "2 Raw NIDA {rir, xpx}"
- ]
- },
- "execution_count": 50,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "df_2.loc[df_2[\"type\"] == \"Raw\"].groupby([\"type\", \"format\"], as_index=False).agg(\n",
- " aliases=(\"source_alias\", lambda x: set(x))\n",
- ")"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "19148948",
- "metadata": {},
- "source": [
- "Here we can see, there might be exceptions to more commonly used *IDA3*, like *ASCII*. "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 51,
- "id": "dc39d538-d89b-4743-ac8f-08089942798d",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " type \n",
- " format \n",
- " aliases \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 \n",
- " Analysed \n",
- " ASCII \n",
- " {lim} \n",
- " \n",
- " \n",
- " 1 \n",
- " Analysed \n",
- " IDA3 \n",
- " {amc, amb, asm, anu, atm, asj, aga, abm, ane, ... \n",
- " \n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " type format aliases\n",
- "0 Analysed ASCII {lim}\n",
- "1 Analysed IDA3 {amc, amb, asm, anu, atm, asj, aga, abm, ane, ..."
- ]
- },
- "execution_count": 51,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "df_2.loc[df_2[\"type\"] == \"Analysed\"].groupby([\"type\", \"format\"], as_index=False).agg(\n",
- " aliases=(\"source_alias\", lambda x: set(x))\n",
- ")"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "f8907548",
- "metadata": {},
- "source": [
- "It is demonstrated above, using the client, that **_Analysed_** and **_Raw_** types have source names and what they look like. It is also shown that there are particular file formats associated with these types. Data access description using `SIGNAL` names can be found in 3.2 and 3.3."
- ]
- },
- {
- "cell_type": "markdown",
- "id": "1fb15ba2-0a85-4ea9-b6af-0e2b187b0168",
- "metadata": {},
- "source": [
- "#### Retrieve data (as `SIGNALS` or `Signal`)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "a00e7f1f",
- "metadata": {},
- "source": [
- "We can specify the UDA client to fetch the `SIGNALS` of a shot, which will return a list\n",
- "A shot contains a list of sources (`SOURCES`) as a list or array of `ListData`. For example fetch the list of sources of a shot:\n",
- "\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 52,
- "id": "e9e7cf83",
- "metadata": {
- "tags": []
- },
- "outputs": [],
- "source": [
- "signals_1 = client.list(ListType.SIGNALS, shot_1)\n",
- "# aliases = set([signal.source_alias for signal in signals])"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 53,
- "id": "e0784f10-0814-49d3-a3e0-cbdff5eaa717",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "Number of signals in shot 27933 = 10594 \n",
- " \n"
- ],
- "text/plain": [
- "Number of signals in shot \u001b[1;36m27933\u001b[0m = \u001b[1;36m10594\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "print(f\"Number of signals in shot {shot_1} = {len(signals_1)}\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 55,
- "id": "4d87f59e-eb7d-4025-95d9-bb05e6ba7492",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "╭──────────── < class 'mast.mast_client.ListData' > ────────────╮ \n",
- "│ ╭─────────────────────────────────────────────────────────╮ │ \n",
- "│ │ ListData ( │ │ \n",
- "│ │ │ shot =27933 , │ │ \n",
- "│ │ │ pass_ =0 , │ │ \n",
- "│ │ │ signal_name ='ABM_CALIB_SHOT' , │ │ \n",
- "│ │ │ generic_name ='' , │ │ \n",
- "│ │ │ source_alias ='abm' , │ │ \n",
- "│ │ │ type ='Analysed' , │ │ \n",
- "│ │ │ description ='Shot used for calibration (obsolete)' , │ │ \n",
- "│ │ │ signal_status =1 , │ │ \n",
- "│ │ │ mds_name ='\\\\TOP.ANALYSED.ABM:CALIB_SHOT' │ │ \n",
- "│ │ ) │ │ \n",
- "│ ╰─────────────────────────────────────────────────────────╯ │ \n",
- "│ │ \n",
- "│ description = 'Shot used for calibration (obsolete)' │ \n",
- "│ generic_name = '' │ \n",
- "│ mds_name = '\\\\TOP.ANALYSED.ABM:CALIB_SHOT' │ \n",
- "│ pass_ = 0 │ \n",
- "│ shot = 27933 │ \n",
- "│ signal_name = 'ABM_CALIB_SHOT' │ \n",
- "│ signal_status = 1 │ \n",
- "│ source_alias = 'abm' │ \n",
- "│ type = 'Analysed' │ \n",
- "╰─────────────────────────────────────────────────────────────╯ \n",
- " \n"
- ],
- "text/plain": [
- "\u001b[34m╭─\u001b[0m\u001b[34m─────────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'mast.mast_client.ListData'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ───────────\u001b[0m\u001b[34m─╮\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╭─────────────────────────────────────────────────────────╮\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1;35mListData\u001b[0m\u001b[1m(\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33mshot\u001b[0m=\u001b[1;36m27933\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33mpass_\u001b[0m=\u001b[1;36m0\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33msignal_name\u001b[0m=\u001b[32m'ABM_CALIB_SHOT'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33mgeneric_name\u001b[0m=\u001b[32m''\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33msource_alias\u001b[0m=\u001b[32m'abm'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'Analysed'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33mdescription\u001b[0m=\u001b[32m'Shot used for calibration \u001b[0m\u001b[32m(\u001b[0m\u001b[32mobsolete\u001b[0m\u001b[32m)\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33msignal_status\u001b[0m=\u001b[1;36m1\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33mmds_name\u001b[0m=\u001b[32m'\\\\TOP.ANALYSED.ABM:CALIB_SHOT'\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m)\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╰─────────────────────────────────────────────────────────╯\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdescription\u001b[0m = \u001b[32m'Shot used for calibration \u001b[0m\u001b[32m(\u001b[0m\u001b[32mobsolete\u001b[0m\u001b[32m)\u001b[0m\u001b[32m'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mgeneric_name\u001b[0m = \u001b[32m''\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mmds_name\u001b[0m = \u001b[32m'\\\\TOP.ANALYSED.ABM:CALIB_SHOT'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mpass_\u001b[0m = \u001b[1;36m0\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mshot\u001b[0m = \u001b[1;36m27933\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33msignal_name\u001b[0m = \u001b[32m'ABM_CALIB_SHOT'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33msignal_status\u001b[0m = \u001b[1;36m1\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33msource_alias\u001b[0m = \u001b[32m'abm'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mtype\u001b[0m = \u001b[32m'Analysed'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m╰─────────────────────────────────────────────────────────────╯\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "# inspect the first signal\n",
- "inspect(signals_1[0], docs=False)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "64bb169e",
- "metadata": {},
- "source": [
- "Note that, given `SOURCES` or `SIGNALS` as an input argument to the UDA client API, it fetched a list of sources (`SOURCES`) or list of signals (`SIGNALS`). Although the objects or entries of both the lists are encoded in`ListData` object, the attributes are different."
- ]
- },
- {
- "cell_type": "markdown",
- "id": "5c21d4a2-c3fd-4979-b704-94cc309aaf0d",
- "metadata": {},
- "source": [
- "A tabular view of the list of signals."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 56,
- "id": "f01bdb91-eccf-42a9-a4cc-a38db4a2f61d",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " shot \n",
- " pass_ \n",
- " signal_name \n",
- " generic_name \n",
- " source_alias \n",
- " type \n",
- " description \n",
- " signal_status \n",
- " mds_name \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 \n",
- " 27933 \n",
- " 0 \n",
- " ABM_CALIB_SHOT \n",
- " \n",
- " abm \n",
- " Analysed \n",
- " Shot used for calibration (obsolete) \n",
- " 1 \n",
- " \\TOP.ANALYSED.ABM:CALIB_SHOT \n",
- " \n",
- " \n",
- " 1 \n",
- " 27933 \n",
- " 0 \n",
- " ABM_CHANNEL_STATUS \n",
- " \n",
- " abm \n",
- " Analysed \n",
- " Failed = 0, OK = 1 \n",
- " 1 \n",
- " \\TOP.ANALYSED.ABM.CHANNEL:STATUS \n",
- " \n",
- " \n",
- " 2 \n",
- " 27933 \n",
- " 0 \n",
- " ABM_CHANNEL_TYPE \n",
- " \n",
- " abm \n",
- " Analysed \n",
- " Channel type (0 = poloidal, 1 = co-tangential,... \n",
- " 1 \n",
- " \\TOP.ANALYSED.ABM:CHANNEL_TYPE \n",
- " \n",
- " \n",
- " 3 \n",
- " 27933 \n",
- " 0 \n",
- " ABM_GAIN \n",
- " \n",
- " abm \n",
- " Analysed \n",
- " Gain of pre-amplifiers \n",
- " 1 \n",
- " \\TOP.ANALYSED.ABM:GAIN \n",
- " \n",
- " \n",
- " 4 \n",
- " 27933 \n",
- " 0 \n",
- " ABM_I-BOL \n",
- " \n",
- " abm \n",
- " Analysed \n",
- " Incident powers (x - channel) \n",
- " 1 \n",
- " \\TOP.ANALYSED.ABM:I_BOL \n",
- " \n",
- " \n",
- " ... \n",
- " ... \n",
- " ... \n",
- " ... \n",
- " ... \n",
- " ... \n",
- " ... \n",
- " ... \n",
- " ... \n",
- " ... \n",
- " \n",
- " \n",
- " 10589 \n",
- " 27933 \n",
- " -1 \n",
- " /XYR/RTTE \n",
- " \n",
- " xyr \n",
- " Raw \n",
- " \n",
- " 1 \n",
- " \\TOP.RAW.XYR:RTTE \n",
- " \n",
- " \n",
- " 10590 \n",
- " 27933 \n",
- " -1 \n",
- " /XYR/SEGMENT1 \n",
- " \n",
- " xyr \n",
- " Raw \n",
- " \n",
- " 1 \n",
- " \\TOP.RAW.XYR:SEGMENT1 \n",
- " \n",
- " \n",
- " 10591 \n",
- " 27933 \n",
- " -1 \n",
- " /XYR/SEGMENTTIME \n",
- " \n",
- " xyr \n",
- " Raw \n",
- " \n",
- " 1 \n",
- " \\TOP.RAW.XYR:SEGMENTTIME \n",
- " \n",
- " \n",
- " 10592 \n",
- " 27933 \n",
- " -1 \n",
- " /XYR/SENTTIME \n",
- " \n",
- " xyr \n",
- " Raw \n",
- " \n",
- " 1 \n",
- " \\TOP.RAW.XYR:SENTTIME \n",
- " \n",
- " \n",
- " 10593 \n",
- " 27933 \n",
- " -1 \n",
- " /XYR/TIME1 \n",
- " \n",
- " xyr \n",
- " Raw \n",
- " \n",
- " 1 \n",
- " \\TOP.RAW.XYR:TIME1 \n",
- " \n",
- " \n",
- "
\n",
- "
10594 rows × 9 columns
\n",
- "
"
- ],
- "text/plain": [
- " shot pass_ signal_name generic_name source_alias type \\\n",
- "0 27933 0 ABM_CALIB_SHOT abm Analysed \n",
- "1 27933 0 ABM_CHANNEL_STATUS abm Analysed \n",
- "2 27933 0 ABM_CHANNEL_TYPE abm Analysed \n",
- "3 27933 0 ABM_GAIN abm Analysed \n",
- "4 27933 0 ABM_I-BOL abm Analysed \n",
- "... ... ... ... ... ... ... \n",
- "10589 27933 -1 /XYR/RTTE xyr Raw \n",
- "10590 27933 -1 /XYR/SEGMENT1 xyr Raw \n",
- "10591 27933 -1 /XYR/SEGMENTTIME xyr Raw \n",
- "10592 27933 -1 /XYR/SENTTIME xyr Raw \n",
- "10593 27933 -1 /XYR/TIME1 xyr Raw \n",
- "\n",
- " description signal_status \\\n",
- "0 Shot used for calibration (obsolete) 1 \n",
- "1 Failed = 0, OK = 1 1 \n",
- "2 Channel type (0 = poloidal, 1 = co-tangential,... 1 \n",
- "3 Gain of pre-amplifiers 1 \n",
- "4 Incident powers (x - channel) 1 \n",
- "... ... ... \n",
- "10589 1 \n",
- "10590 1 \n",
- "10591 1 \n",
- "10592 1 \n",
- "10593 1 \n",
- "\n",
- " mds_name \n",
- "0 \\TOP.ANALYSED.ABM:CALIB_SHOT \n",
- "1 \\TOP.ANALYSED.ABM.CHANNEL:STATUS \n",
- "2 \\TOP.ANALYSED.ABM:CHANNEL_TYPE \n",
- "3 \\TOP.ANALYSED.ABM:GAIN \n",
- "4 \\TOP.ANALYSED.ABM:I_BOL \n",
- "... ... \n",
- "10589 \\TOP.RAW.XYR:RTTE \n",
- "10590 \\TOP.RAW.XYR:SEGMENT1 \n",
- "10591 \\TOP.RAW.XYR:SEGMENTTIME \n",
- "10592 \\TOP.RAW.XYR:SENTTIME \n",
- "10593 \\TOP.RAW.XYR:TIME1 \n",
- "\n",
- "[10594 rows x 9 columns]"
- ]
- },
- "execution_count": 56,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "dfs_1 = pd.DataFrame(signals_1)\n",
- "dfs_1"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "a4bfdd7a",
- "metadata": {},
- "source": [
- "A `SIGNAL` attributes are:\n",
- "\n",
- "* `shot` - the unique number of a `SHOT`\n",
- "* `pass_` - for **_Analysed_** type it would mean how many processing iterations it went through, the first - number 0, for **_Raw_** we would see -1\n",
- "* `signal_name` - the name of a signal \n",
- "* `generic_signal` - usually left blank, but can contain a shorter type of alias for common signals for easy access. Example: 'AMC_PLASMA CURRENT' has the alias 'ip'.\n",
- "* `source_alias` - three letter alias name, which can be used for a separate source inspection\n",
- "* `type` - e.g., **_Analysed_**, **_Raw_** or **_Image_**\n",
- "* `description` - text description of the signal\n",
- "* `signal_status` - internal data status set by responsible officer:\n",
- " * -1 Poor Data: do not use\n",
- " * 0 Something is wrong in the Data\n",
- " * 1 either **_Raw_** data not checked or **_Analysed_** data quality is Unknown\n",
- " * 2 Data has been checked - no known problems\n",
- " * 3 Data was validated\n",
- "* `mds_name` - MDS refers to an older technology called MDSPLUS that attempted to provide a universal data model and access mechanism.\n"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "50dd4eea",
- "metadata": {},
- "source": [
- "#### `SIGNAL` Name as Alias Dictionary\n",
- " \n"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "14ae0a98",
- "metadata": {},
- "source": [
- "We can build a `SOURCE` dictionary, where an alias (three letter name) and `SIGNAL` name are organised as a set. This is done for convenience - grouping aliases with corresponding signals makes data exploration easier. To *inspect* each `SOURCE` we can use an alias and it will provide us with meta information, but to access the `SIGNAL` itself, one needs a separate `SIGNAL` name contained in such a set.\n",
- "\n",
- "**_Image_** `SOURCES` don't belong to `SIGNALS` and their access is different from **_Raw_** and **_Analysed_**, therefore, they cannot be found in `alias_signal_dict` below."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 57,
- "id": "090158cc",
- "metadata": {},
- "outputs": [],
- "source": [
- "aliases_1 = set([signal.source_alias for signal in signals_1])\n",
- "\n",
- "alias_signal_dict = {\n",
- " source: set(\n",
- " [signal.signal_name for signal in signals_1 if signal.source_alias == source]\n",
- " )\n",
- " for source in aliases_1\n",
- "}"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 58,
- "id": "4e2c26e8",
- "metadata": {
- "tags": []
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "╭─────────────────────── < class 'dict' > ───────────────────────╮ \n",
- "│ ╭──────────────────────────────────────────────────────────╮ │ \n",
- "│ │ { │ │ \n",
- "│ │ │ 'air' : { │ │ \n",
- "│ │ │ │ 'AIR_PTOT_OSP_ELM' , │ │ \n",
- "│ │ │ │ 'AIR_PHI_START_OSP' , │ │ \n",
- "│ │ │ │ 'AIR_PKPOWER_DENSITY_ISP' , │ │ \n",
- "│ │ │ │ 'AIR_PASSNUMBER' , │ │ \n",
- "│ │ │ │ 'AIR_TEMPERATURE_OSP' , │ │ \n",
- "│ │ │ │ 'AIR_Z_EXTENT_ISP' , │ │ \n",
- "│ │ │ │ 'AIR_QPROFILE_ISP' , │ │ \n",
- "│ │ │ │ 'AIR_ETOTSUM_ISP_ELM' , │ │ \n",
- "│ │ │ │ 'AIR_QPROFILE_ISP_ELM' , │ │ \n",
- "│ │ │ │ 'AIR_PTOT_ISP_ELM' , │ │ \n",
- "│ │ │ │ ... +49 │ │ \n",
- "│ │ │ } , │ │ \n",
- "│ │ │ 'xmp' : { │ │ \n",
- "│ │ │ │ '/XMP/DEVICES/D2_ADC103/RANGE' , │ │ \n",
- "│ │ │ │ '/XMP/REF20' , │ │ \n",
- "│ │ │ │ '/XMP/REF23' , │ │ \n",
- "│ │ │ │ '/XMP/DEVICES/LIMIT' , │ │ \n",
- "│ │ │ │ '/XMP/DEVICES/D2_ADC103/CHANNEL' , │ │ \n",
- "│ │ │ │ '/XMP/TIME1' │ │ \n",
- "│ │ │ } , │ │ \n",
- "│ │ │ 'amc' : { │ │ \n",
- "│ │ │ │ 'AMC_P2IU FEED CURRENT' , │ │ \n",
- "│ │ │ │ 'AMC_P4L CURRENT' , │ │ \n",
- "│ │ │ │ 'AMC_P5U CASE CURRENT' , │ │ \n",
- "│ │ │ │ 'AMC_P4L COIL CURRENT' , │ │ \n",
- "│ │ │ │ 'AMC_P5L CURRENT' , │ │ \n",
- "│ │ │ │ 'AMC_P3U FEED CURRENT' , │ │ \n",
- "│ │ │ │ 'AMC_P4L CASE CURRENT' , │ │ \n",
- "│ │ │ │ 'AMC_P3L CASE CURRENT' , │ │ \n",
- "│ │ │ │ 'AMC_P5U CURRENT' , │ │ \n",
- "│ │ │ │ 'AMC_VERSION' , │ │ \n",
- "│ │ │ │ ... +36 │ │ \n",
- "│ │ │ } , │ │ \n",
- "│ │ │ 'xim' : { │ │ \n",
- "│ │ │ │ 'XIM_DA/BO10' , │ │ \n",
- "│ │ │ │ 'XIM_MASS_END' , │ │ \n",
- "│ │ │ │ 'XIM_DA/HU10/R1' , │ │ \n",
- "│ │ │ │ 'XIM_PELLET_HALPHA/2' , │ │ \n",
- "│ │ │ │ 'XIM_PREION_TRIG' , │ │ \n",
- "│ │ │ │ 'XIM_DA/HL11/L1' , │ │ \n",
- "│ │ │ │ 'XIM_CII/HU10/U' , │ │ \n",
- "│ │ │ │ 'XIM_DA/HU10/U1' , │ │ \n",
- "│ │ │ │ 'XIM_DA/HL11/R1' , │ │ \n",
- "│ │ │ │ 'XIM_TRIGGER' , │ │ \n",
- "│ │ │ │ ... +14 │ │ \n",
- "│ │ │ } , │ │ \n",
- "│ │ │ 'xlp' : { │ │ \n",
- "│ │ │ │ 'XLP_V8' , │ │ \n",
- "│ │ │ │ 'XLP_I10' , │ │ \n",
- "│ │ │ │ 'XLP_V1' , │ │ \n",
- "│ │ │ │ 'XLP_M8' , │ │ \n",
- "│ │ │ │ 'XLP_V9' , │ │ \n",
- "│ │ │ │ 'XLP_I4' , │ │ \n",
- "│ │ │ │ 'XLP_V7' , │ │ \n",
- "│ │ │ │ 'XLP_I12' , │ │ \n",
- "│ │ │ │ 'XLP_V2' , │ │ \n",
- "│ │ │ │ 'XLP_M1' , │ │ \n",
- "│ │ │ │ ... +30 │ │ \n",
- "│ │ │ } , │ │ \n",
- "│ │ │ 'xcm' : { │ │ \n",
- "│ │ │ │ 'XCM_MFPS RELEASE' , │ │ \n",
- "│ │ │ │ 'XCM_TC_TH3' , │ │ \n",
- "│ │ │ │ 'XCM_P1PS I' , │ │ \n",
- "│ │ │ │ 'XCM_L8212A#4' , │ │ \n",
- "│ │ │ │ 'XCM_S4 POSITION' , │ │ \n",
- "│ │ │ │ 'XCM_TEST_CH16' , │ │ \n",
- "│ │ │ │ 'XCM_MFPS VOLTS' , │ │ \n",
- "│ │ │ │ 'XCM_TC_REFBOT' , │ │ \n",
- "│ │ │ │ 'XCM_TC_BH3' , │ │ \n",
- "│ │ │ │ 'XCM_33KV SUPPLY' , │ │ \n",
- "│ │ │ │ ... +60 │ │ \n",
- "│ │ │ } , │ │ \n",
- "│ │ │ 'xfi' : { │ │ \n",
- "│ │ │ │ '/XFI/DEVICES/D2_FIDA/SERSIZE' , │ │ \n",
- "│ │ │ │ '/XFI/DEVICES/D2_FIDA/CHIPNAME' , │ │ \n",
- "│ │ │ │ '/XFI/DEVICES/D2_FIDA/CLEARCYCLES' , │ │ \n",
- "│ │ │ │ '/XFI/BIN/8' , │ │ \n",
- "│ │ │ │ '/XFI/PIXEL1' , │ │ \n",
- "│ │ │ │ '/XFI/BIN/1' , │ │ \n",
- "│ │ │ │ '/XFI/BIN/2' , │ │ \n",
- "│ │ │ │ '/XFI/DEVICES/D2_FIDA/READOUT' , │ │ \n",
- "│ │ │ │ '/XFI/BIN/6' , │ │ \n",
- "│ │ │ │ '/XFI/BIN/3' , │ │ \n",
- "│ │ │ │ ... +20 │ │ \n",
- "│ │ │ } , │ │ \n",
- "│ │ │ 'amb' : { │ │ \n",
- "│ │ │ │ 'AMB_OBR14' , │ │ \n",
- "│ │ │ │ 'AMB_CCBV19' , │ │ \n",
- "│ │ │ │ 'AMB_CCBV11' , │ │ \n",
- "│ │ │ │ 'AMB_CCBV20' , │ │ \n",
- "│ │ │ │ 'AMB_OBR18' , │ │ \n",
- "│ │ │ │ 'AMB_CCBV05' , │ │ \n",
- "│ │ │ │ 'AMB_OBR15' , │ │ \n",
- "│ │ │ │ 'AMB_CCBV21' , │ │ \n",
- "│ │ │ │ 'AMB_OBR12' , │ │ \n",
- "│ │ │ │ 'AMB_FL/P5U/1' , │ │ \n",
- "│ │ │ │ ... +74 │ │ \n",
- "│ │ │ } , │ │ \n",
- "│ │ │ 'xpc' : { │ │ \n",
- "│ │ │ │ 'XPC_TRCF_0104_11' , │ │ \n",
- "│ │ │ │ 'XPC_GAS IBFUA DRIVE' , │ │ \n",
- "│ │ │ │ 'XPC_GAS HM12B REF' , │ │ \n",
- "│ │ │ │ 'XPC_LINCAM2' , │ │ \n",
- "│ │ │ │ 'XPC_GAS TC5B REF' , │ │ \n",
- "│ │ │ │ 'XPC_GAS BC5 REF' , │ │ \n",
- "│ │ │ │ 'XPC_NBI SS CURRENT' , │ │ \n",
- "│ │ │ │ 'XPC_TRCF_0104_6' , │ │ \n",
- "│ │ │ │ 'XPC_GAS TC5B DRIVE' , │ │ \n",
- "│ │ │ │ 'XPC_GAS IBFUB REF' , │ │ \n",
- "│ │ │ │ ... +60 │ │ \n",
- "│ │ │ } , │ │ \n",
- "│ │ │ 'xsx' : { │ │ \n",
- "│ │ │ │ '/XSX/HCAM/U/17' , │ │ \n",
- "│ │ │ │ '/XSX/HCAM/U/14' , │ │ \n",
- "│ │ │ │ '/XSX/TCAM/17' , │ │ \n",
- "│ │ │ │ '/XSX/TCAM/9' , │ │ \n",
- "│ │ │ │ '/XSX/TCAM/2' , │ │ \n",
- "│ │ │ │ '/XSX/HCAM/L/14' , │ │ \n",
- "│ │ │ │ '/XSX/HCAM/L/3' , │ │ \n",
- "│ │ │ │ '/XSX/HCAM/L/16' , │ │ \n",
- "│ │ │ │ '/XSX/HCAM/U/10' , │ │ \n",
- "│ │ │ │ '/XSX/HCAM/U/18' , │ │ \n",
- "│ │ │ │ ... +49 │ │ \n",
- "│ │ │ } , │ │ \n",
- "│ │ │ ... +54 │ │ \n",
- "│ │ } │ │ \n",
- "│ ╰──────────────────────────────────────────────────────────╯ │ \n",
- "│ │ \n",
- "│ 29 attribute(s) not shown. Run inspect ( inspect) for options. │ \n",
- "╰──────────────────────────────────────────────────────────────╯ \n",
- " \n"
- ],
- "text/plain": [
- "\u001b[34m╭─\u001b[0m\u001b[34m────────────────────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'dict'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ──────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╭──────────────────────────────────────────────────────────╮\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m{\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[32m'air'\u001b[0m: \u001b[1m{\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'AIR_PTOT_OSP_ELM'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'AIR_PHI_START_OSP'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'AIR_PKPOWER_DENSITY_ISP'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'AIR_PASSNUMBER'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'AIR_TEMPERATURE_OSP'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'AIR_Z_EXTENT_ISP'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'AIR_QPROFILE_ISP'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'AIR_ETOTSUM_ISP_ELM'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'AIR_QPROFILE_ISP_ELM'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'AIR_PTOT_ISP_ELM'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33m...\u001b[0m +\u001b[1;36m49\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1m}\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[32m'xmp'\u001b[0m: \u001b[1m{\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'/XMP/DEVICES/D2_ADC103/RANGE'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'/XMP/REF20'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'/XMP/REF23'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'/XMP/DEVICES/LIMIT'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'/XMP/DEVICES/D2_ADC103/CHANNEL'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'/XMP/TIME1'\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1m}\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[32m'amc'\u001b[0m: \u001b[1m{\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'AMC_P2IU FEED CURRENT'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'AMC_P4L CURRENT'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'AMC_P5U CASE CURRENT'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'AMC_P4L COIL CURRENT'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'AMC_P5L CURRENT'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'AMC_P3U FEED CURRENT'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'AMC_P4L CASE CURRENT'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'AMC_P3L CASE CURRENT'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'AMC_P5U CURRENT'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'AMC_VERSION'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33m...\u001b[0m +\u001b[1;36m36\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1m}\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[32m'xim'\u001b[0m: \u001b[1m{\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XIM_DA/BO10'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XIM_MASS_END'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XIM_DA/HU10/R1'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XIM_PELLET_HALPHA/2'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XIM_PREION_TRIG'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XIM_DA/HL11/L1'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XIM_CII/HU10/U'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XIM_DA/HU10/U1'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XIM_DA/HL11/R1'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XIM_TRIGGER'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33m...\u001b[0m +\u001b[1;36m14\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1m}\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[32m'xlp'\u001b[0m: \u001b[1m{\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XLP_V8'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XLP_I10'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XLP_V1'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XLP_M8'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XLP_V9'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XLP_I4'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XLP_V7'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XLP_I12'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XLP_V2'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XLP_M1'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33m...\u001b[0m +\u001b[1;36m30\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1m}\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[32m'xcm'\u001b[0m: \u001b[1m{\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XCM_MFPS RELEASE'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XCM_TC_TH3'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XCM_P1PS I'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XCM_L8212A#4'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XCM_S4 POSITION'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XCM_TEST_CH16'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XCM_MFPS VOLTS'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XCM_TC_REFBOT'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XCM_TC_BH3'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XCM_33KV SUPPLY'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33m...\u001b[0m +\u001b[1;36m60\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1m}\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[32m'xfi'\u001b[0m: \u001b[1m{\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'/XFI/DEVICES/D2_FIDA/SERSIZE'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'/XFI/DEVICES/D2_FIDA/CHIPNAME'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'/XFI/DEVICES/D2_FIDA/CLEARCYCLES'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'/XFI/BIN/8'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'/XFI/PIXEL1'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'/XFI/BIN/1'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'/XFI/BIN/2'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'/XFI/DEVICES/D2_FIDA/READOUT'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'/XFI/BIN/6'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'/XFI/BIN/3'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33m...\u001b[0m +\u001b[1;36m20\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1m}\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[32m'amb'\u001b[0m: \u001b[1m{\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'AMB_OBR14'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'AMB_CCBV19'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'AMB_CCBV11'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'AMB_CCBV20'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'AMB_OBR18'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'AMB_CCBV05'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'AMB_OBR15'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'AMB_CCBV21'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'AMB_OBR12'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'AMB_FL/P5U/1'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33m...\u001b[0m +\u001b[1;36m74\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1m}\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[32m'xpc'\u001b[0m: \u001b[1m{\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XPC_TRCF_0104_11'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XPC_GAS IBFUA DRIVE'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XPC_GAS HM12B REF'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XPC_LINCAM2'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XPC_GAS TC5B REF'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XPC_GAS BC5 REF'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XPC_NBI SS CURRENT'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XPC_TRCF_0104_6'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XPC_GAS TC5B DRIVE'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'XPC_GAS IBFUB REF'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33m...\u001b[0m +\u001b[1;36m60\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1m}\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[32m'xsx'\u001b[0m: \u001b[1m{\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'/XSX/HCAM/U/17'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'/XSX/HCAM/U/14'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'/XSX/TCAM/17'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'/XSX/TCAM/9'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'/XSX/TCAM/2'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'/XSX/HCAM/L/14'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'/XSX/HCAM/L/3'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'/XSX/HCAM/L/16'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'/XSX/HCAM/U/10'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[32m'/XSX/HCAM/U/18'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33m...\u001b[0m +\u001b[1;36m49\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1m}\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33m...\u001b[0m +\u001b[1;36m54\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m}\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╰──────────────────────────────────────────────────────────╯\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m29\u001b[0m\u001b[3m attribute(s) not shown.\u001b[0m Run \u001b[1;35minspect\u001b[0m\u001b[1m(\u001b[0minspect\u001b[1m)\u001b[0m for options. \u001b[34m│\u001b[0m\n",
- "\u001b[34m╰──────────────────────────────────────────────────────────────╯\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "inspect(alias_signal_dict, docs=False)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "4d1ca948",
- "metadata": {},
- "source": [
- "For example, 'xss' will give us meta information"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 71,
- "id": "e1b027b5",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "╭─────────────────────── < class 'list' > ───────────────────────╮ \n",
- "│ ╭──────────────────────────────────────────────────────────╮ │ \n",
- "│ │ [ │ │ \n",
- "│ │ │ ListData ( │ │ \n",
- "│ │ │ │ shot =27933 , │ │ \n",
- "│ │ │ │ pass_ =-1 , │ │ \n",
- "│ │ │ │ status =1 , │ │ \n",
- "│ │ │ │ source_alias ='xss' , │ │ \n",
- "│ │ │ │ format ='CDF' , │ │ \n",
- "│ │ │ │ filename ='xss027933.nc' , │ │ \n",
- "│ │ │ │ type ='Raw' , │ │ \n",
- "│ │ │ │ description ='Ocean Optics system' , │ │ \n",
- "│ │ │ │ run_id =-1 │ │ \n",
- "│ │ │ ) │ │ \n",
- "│ │ ] │ │ \n",
- "│ ╰──────────────────────────────────────────────────────────╯ │ \n",
- "│ │ \n",
- "│ 35 attribute(s) not shown. Run inspect ( inspect) for options. │ \n",
- "╰──────────────────────────────────────────────────────────────╯ \n",
- " \n"
- ],
- "text/plain": [
- "\u001b[34m╭─\u001b[0m\u001b[34m────────────────────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'list'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ──────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╭──────────────────────────────────────────────────────────╮\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m[\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1;35mListData\u001b[0m\u001b[1m(\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mshot\u001b[0m=\u001b[1;36m27933\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mpass_\u001b[0m=\u001b[1;36m-1\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mstatus\u001b[0m=\u001b[1;36m1\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33msource_alias\u001b[0m=\u001b[32m'xss'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mformat\u001b[0m=\u001b[32m'CDF'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mfilename\u001b[0m=\u001b[32m'xss027933.nc'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'Raw'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mdescription\u001b[0m=\u001b[32m'Ocean Optics system'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mrun_id\u001b[0m=\u001b[1;36m-1\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1m)\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m]\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╰──────────────────────────────────────────────────────────╯\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m35\u001b[0m\u001b[3m attribute(s) not shown.\u001b[0m Run \u001b[1;35minspect\u001b[0m\u001b[1m(\u001b[0minspect\u001b[1m)\u001b[0m for options. \u001b[34m│\u001b[0m\n",
- "\u001b[34m╰──────────────────────────────────────────────────────────────╯\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "xss_source = [source for source in sources_1 if source.source_alias == \"xss\"]\n",
- "inspect(xss_source, docs=False)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "5463c590",
- "metadata": {},
- "source": [
- "but '/XSS/SPEC1' or '/XSS/WAVELENGTH4' contains `SIGNAL` itself, which belongs to the `SOURCE` name/alias 'xss'."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 37,
- "id": "f069cd19",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "'/XSS/WAVELENGTH2' , '/XSS/TIME1' , '/XSS/SPEC2' , '/XSS/SPEC6' , '/XSS/TIME2' , '/XSS/TIME3' , '/XSS/WAVELENGTH1' , \n",
- "'/XSS/SPEC1' , '/XSS/SPEC4' , '/XSS/WAVELENGTH4' , '/XSS/SPEC3' , '/XSS/TIME5' , '/XSS/WAVELENGTH3' , '/XSS/TIME4' , \n",
- "'/XSS/WAVELENGTH5' \n",
- " \n"
- ],
- "text/plain": [
- "\u001b[32m'/XSS/WAVELENGTH2'\u001b[0m, \u001b[32m'/XSS/TIME1'\u001b[0m, \u001b[32m'/XSS/SPEC2'\u001b[0m, \u001b[32m'/XSS/SPEC6'\u001b[0m, \u001b[32m'/XSS/TIME2'\u001b[0m, \u001b[32m'/XSS/TIME3'\u001b[0m, \u001b[32m'/XSS/WAVELENGTH1'\u001b[0m, \n",
- "\u001b[32m'/XSS/SPEC1'\u001b[0m, \u001b[32m'/XSS/SPEC4'\u001b[0m, \u001b[32m'/XSS/WAVELENGTH4'\u001b[0m, \u001b[32m'/XSS/SPEC3'\u001b[0m, \u001b[32m'/XSS/TIME5'\u001b[0m, \u001b[32m'/XSS/WAVELENGTH3'\u001b[0m, \u001b[32m'/XSS/TIME4'\u001b[0m, \n",
- "\u001b[32m'/XSS/WAVELENGTH5'\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "print(str(alias_signal_dict[\"xss\"])[1:-1])"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "fe561f32",
- "metadata": {},
- "source": [
- "### **_Image_** type"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "73ee6616",
- "metadata": {},
- "source": [
- "**_Image_** type sources are video or image data saved in *JPG*, *TIF*, *NIDA* and *IPX* format."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 35,
- "id": "f7f798ae-1349-461e-8707-a2a8ac76ff8b",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " type \n",
- " format \n",
- " aliases \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 \n",
- " Image \n",
- " IPX \n",
- " {rir, rda, rgb, rbb, rba, rdb, rit, rbc} \n",
- " \n",
- " \n",
- " 1 \n",
- " Image \n",
- " TIF \n",
- " {rzz, rbe} \n",
- " \n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " type format aliases\n",
- "0 Image IPX {rir, rda, rgb, rbb, rba, rdb, rit, rbc}\n",
- "1 Image TIF {rzz, rbe}"
- ]
- },
- "execution_count": 35,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "df_1.loc[df_1[\"type\"] == \"Image\"].groupby([\"type\", \"format\"], as_index=False).agg(\n",
- " aliases=(\"source_alias\", lambda x: set(x))\n",
- ")"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "20cca233",
- "metadata": {},
- "source": [
- "There are consistencies in different experiments or `SHOTS`, for example, the other `SHOT` has *JPG* format."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "b7af8652",
- "metadata": {},
- "outputs": [],
- "source": [
- "df_2.loc[df_2[\"type\"] == \"Image\"].groupby([\"type\", \"format\"], as_index=False).agg(\n",
- " aliases=(\"source_alias\", lambda x: set(x))\n",
- ")"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "491ea786",
- "metadata": {
- "tags": []
- },
- "source": [
- "## **_Raw_**"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "6ae6eeb1",
- "metadata": {},
- "source": [
- "**_Raw_** sources can be of several formats: *CDF*, *IDA3*, *ASCII*, *BINARY* and *NIDA*. However,we suspectt that *NIDA* format belongs to the **_Raw_** `SOURCES`incorrectly, because it should be in the **_Image_** `SOURCES`. There might be other irregularities with formats, such as **_Raw_** `SHOTS` with numbers between 27000 and 27500 names xyc,xbt can also be of *NCDF* format. "
- ]
- },
- {
- "cell_type": "markdown",
- "id": "ff4b81f2",
- "metadata": {},
- "source": [
- "### *CDF* format"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "01c8a53c",
- "metadata": {},
- "source": [
- " *CDF* format is commonly used for **_Raw_** images. *NCDF* format can be inspected and accessed the same way as *CDF* . In the cell below is shown what one of the *CDF* `SOURCES` looks like. It follows the same structure as any other **_Raw_**, **_Analysed_** or **_Image_** format. This is what is referred as the `SOURCE` meta information in this document. "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 37,
- "id": "4baf39c5",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "╭─────────────────────── < class 'list' > ───────────────────────╮ \n",
- "│ ╭──────────────────────────────────────────────────────────╮ │ \n",
- "│ │ [ │ │ \n",
- "│ │ │ ListData ( │ │ \n",
- "│ │ │ │ shot =27933 , │ │ \n",
- "│ │ │ │ pass_ =-1 , │ │ \n",
- "│ │ │ │ status =1 , │ │ \n",
- "│ │ │ │ source_alias ='xms' , │ │ \n",
- "│ │ │ │ format ='CDF' , │ │ \n",
- "│ │ │ │ filename ='xms027933.nc' , │ │ \n",
- "│ │ │ │ type ='Raw' , │ │ \n",
- "│ │ │ │ description ='Multi-channel MSE' , │ │ \n",
- "│ │ │ │ run_id =-1 │ │ \n",
- "│ │ │ ) │ │ \n",
- "│ │ ] │ │ \n",
- "│ ╰──────────────────────────────────────────────────────────╯ │ \n",
- "│ │ \n",
- "│ 35 attribute(s) not shown. Run inspect ( inspect) for options. │ \n",
- "╰──────────────────────────────────────────────────────────────╯ \n",
- " \n"
- ],
- "text/plain": [
- "\u001b[34m╭─\u001b[0m\u001b[34m────────────────────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'list'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ──────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╭──────────────────────────────────────────────────────────╮\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m[\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1;35mListData\u001b[0m\u001b[1m(\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mshot\u001b[0m=\u001b[1;36m27933\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mpass_\u001b[0m=\u001b[1;36m-1\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mstatus\u001b[0m=\u001b[1;36m1\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33msource_alias\u001b[0m=\u001b[32m'xms'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mformat\u001b[0m=\u001b[32m'CDF'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mfilename\u001b[0m=\u001b[32m'xms027933.nc'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'Raw'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mdescription\u001b[0m=\u001b[32m'Multi-channel MSE'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mrun_id\u001b[0m=\u001b[1;36m-1\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1m)\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m]\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╰──────────────────────────────────────────────────────────╯\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m35\u001b[0m\u001b[3m attribute(s) not shown.\u001b[0m Run \u001b[1;35minspect\u001b[0m\u001b[1m(\u001b[0minspect\u001b[1m)\u001b[0m for options. \u001b[34m│\u001b[0m\n",
- "\u001b[34m╰──────────────────────────────────────────────────────────────╯\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "data = [source for source in sources_1 if source.source_alias == \"xms\"]\n",
- "inspect(data, docs=False)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "4b0d6c58",
- "metadata": {},
- "source": [
- "*CDF* format is unique in the way of `SIGNAL` access, because data of this `SOURCE` type can be accessed both as StructuredData or a `Signal`. At first, we demonstrate data access as StructuredData using the `SOURCE` name/aliase 'xms'. Ibn this case data has hyrarchical organisation as `children`. "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 38,
- "id": "d4b39f25",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "╭─ < class 'pyuda._structured.StructuredData' > ─╮ \n",
- "│ ╭──────────────────────────────────────────╮ │ \n",
- "│ │ < Structured Data: data > │ │ \n",
- "│ ╰──────────────────────────────────────────╯ │ \n",
- "│ │ \n",
- "│ children = [ │ \n",
- "│ < Structured Data: ch00 > , │ \n",
- "│ < Structured Data: ch01 > , │ \n",
- "│ < Structured Data: ch02 > , │ \n",
- "│ < Structured Data: ch03 > , │ \n",
- "│ < Structured Data: ch04 > , │ \n",
- "│ < Structured Data: ch05 > , │ \n",
- "│ < Structured Data: ch06 > , │ \n",
- "│ < Structured Data: ch07 > , │ \n",
- "│ < Structured Data: ch08 > , │ \n",
- "│ < Structured Data: ch09 > , │ \n",
- "│ < Structured Data: ch10 > , │ \n",
- "│ < Structured Data: ch11 > , │ \n",
- "│ < Structured Data: ch12 > , │ \n",
- "│ < Structured Data: ch13 > , │ \n",
- "│ < Structured Data: ch14 > , │ \n",
- "│ < Structured Data: ch15 > , │ \n",
- "│ < Structured Data: ch16 > , │ \n",
- "│ < Structured Data: ch17 > , │ \n",
- "│ < Structured Data: ch18 > , │ \n",
- "│ < Structured Data: ch19 > , │ \n",
- "│ < Structured Data: ch20 > , │ \n",
- "│ < Structured Data: ch21 > , │ \n",
- "│ < Structured Data: ch22 > , │ \n",
- "│ < Structured Data: ch23 > , │ \n",
- "│ < Structured Data: ch24 > , │ \n",
- "│ < Structured Data: ch25 > , │ \n",
- "│ < Structured Data: ch26 > , │ \n",
- "│ < Structured Data: ch27 > , │ \n",
- "│ < Structured Data: ch28 > , │ \n",
- "│ < Structured Data: ch29 > , │ \n",
- "│ < Structured Data: ch30 > , │ \n",
- "│ < Structured Data: ch31 > , │ \n",
- "│ < Structured Data: ch32 > , │ \n",
- "│ < Structured Data: ch33 > , │ \n",
- "│ < Structured Data: ch34 > , │ \n",
- "│ < Structured Data: ch35 > , │ \n",
- "│ < Structured Data: ch36 > , │ \n",
- "│ < Structured Data: ch37 > , │ \n",
- "│ < Structured Data: ch38 > , │ \n",
- "│ < Structured Data: ch39 > , │ \n",
- "│ < Structured Data: ch40 > , │ \n",
- "│ < Structured Data: ch41 > , │ \n",
- "│ < Structured Data: test > │ \n",
- "│ ] │ \n",
- "│ name = 'data' │ \n",
- "╰──────────────────────────────────────────────╯ \n",
- " \n"
- ],
- "text/plain": [
- "\u001b[34m╭─\u001b[0m\u001b[34m \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'pyuda._structured.StructuredData'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m \u001b[0m\u001b[34m─╮\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╭──────────────────────────────────────────╮\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: data\u001b[0m\u001b[1m>\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╰──────────────────────────────────────────╯\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mchildren\u001b[0m = \u001b[1m[\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch00\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch01\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch02\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch03\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch04\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch05\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch06\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch07\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch08\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch09\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch10\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch11\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch12\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch13\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch14\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch15\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch16\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch17\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch18\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch19\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch20\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch21\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch22\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch23\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch24\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch25\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch26\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch27\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch28\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch29\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch30\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch31\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch32\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch33\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch34\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch35\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch36\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch37\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch38\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch39\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch40\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch41\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: test\u001b[0m\u001b[1m>\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m]\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mname\u001b[0m = \u001b[32m'data'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m╰──────────────────────────────────────────────╯\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "data = client.get(\"xms\", shot_1)\n",
- "inspect(data, docs=False)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "f4cab185",
- "metadata": {},
- "source": [
- "In this case data can be accesses as data.children[i], while in some cases data.children[i].children[j] might be required. \n",
- "Data in this `children` also belongs to a class `StructuredData`."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 39,
- "id": "39e50338",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "╭───────────── < class 'pyuda._structured.StructuredData' > ─────────────╮ \n",
- "│ ╭──────────────────────────────────────────────────────────────────╮ │ \n",
- "│ │ < Structured Data: ch11 > │ │ \n",
- "│ ╰──────────────────────────────────────────────────────────────────╯ │ \n",
- "│ │ \n",
- "│ channel = array ([ 4 ] , dtype =int32 ) │ \n",
- "│ children = [] │ \n",
- "│ data = array ([ -60 , 8 , -36 , ... , -36 , -52 , 4 ] , dtype =int16 ) │ \n",
- "│ device = '/devices/d3_pxi6133' │ \n",
- "│ dimensions = 'time1=650000' │ \n",
- "│ name = 'ch11' │ \n",
- "│ offset = array ([ 0 .] , dtype =float32 ) │ \n",
- "│ scale = array ([ 3.8147555e-05 ] , dtype =float32 ) │ \n",
- "│ title = 'Volt' │ \n",
- "│ units = 'V' │ \n",
- "╰──────────────────────────────────────────────────────────────────────╯ \n",
- " \n"
- ],
- "text/plain": [
- "\u001b[34m╭─\u001b[0m\u001b[34m──────────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'pyuda._structured.StructuredData'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ────────────\u001b[0m\u001b[34m─╮\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╭──────────────────────────────────────────────────────────────────╮\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mStructured\u001b[0m\u001b[39m Data: ch11\u001b[0m\u001b[1m>\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╰──────────────────────────────────────────────────────────────────╯\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mchannel\u001b[0m = \u001b[1;35marray\u001b[0m\u001b[1m(\u001b[0m\u001b[1m[\u001b[0m\u001b[1;36m4\u001b[0m\u001b[1m]\u001b[0m, \u001b[33mdtype\u001b[0m=\u001b[35mint32\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mchildren\u001b[0m = \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdata\u001b[0m = \u001b[1;35marray\u001b[0m\u001b[1m(\u001b[0m\u001b[1m[\u001b[0m\u001b[1;36m-60\u001b[0m, \u001b[1;36m8\u001b[0m, \u001b[1;36m-36\u001b[0m, \u001b[33m...\u001b[0m, \u001b[1;36m-36\u001b[0m, \u001b[1;36m-52\u001b[0m, \u001b[1;36m4\u001b[0m\u001b[1m]\u001b[0m, \u001b[33mdtype\u001b[0m=\u001b[35mint16\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdevice\u001b[0m = \u001b[32m'/devices/d3_pxi6133'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdimensions\u001b[0m = \u001b[32m'\u001b[0m\u001b[32mtime1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m650000\u001b[0m\u001b[32m'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mname\u001b[0m = \u001b[32m'ch11'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33moffset\u001b[0m = \u001b[1;35marray\u001b[0m\u001b[1m(\u001b[0m\u001b[1m[\u001b[0m\u001b[1;36m0\u001b[0m.\u001b[1m]\u001b[0m, \u001b[33mdtype\u001b[0m=\u001b[35mfloat32\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mscale\u001b[0m = \u001b[1;35marray\u001b[0m\u001b[1m(\u001b[0m\u001b[1m[\u001b[0m\u001b[1;36m3.8147555e-05\u001b[0m\u001b[1m]\u001b[0m, \u001b[33mdtype\u001b[0m=\u001b[35mfloat32\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mtitle\u001b[0m = \u001b[32m'Volt'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33munits\u001b[0m = \u001b[32m'V'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m╰──────────────────────────────────────────────────────────────────────╯\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "inspect(data.children[11], docs=False)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "bcd85b74",
- "metadata": {},
- "source": [
- "Here we access data together with scale, as shown below (method 2) - data accessed as `Signal` is provided as an already scaled array. It worth noticing that data here is of int16 type, which seems a bit curious, after scaling it becomes a float32 (the same as we get accessing it with `SIGNAL` name). "
- ]
- },
- {
- "cell_type": "markdown",
- "id": "853e0a3b",
- "metadata": {},
- "source": [
- "\n",
- "Note: In this case data is accessed unscaled, with scale available as an array within `data.children`. Another curios thing is the data being an array of int16, while scale is a float32. When data accessed as a Signal, it is available scaled and having a type float32.\n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "e837310e",
- "metadata": {},
- "source": [
- "Below is demonstrated the second and the recommended method for data access which uses the `SIGNAL` name.\n",
- "Data in this case belongs to the class `Signal`. In this example we are retrieving exactly the same data array as above. One can observe that array of the data is different from the previous, because it is automatically scaled."
- ]
- },
- {
- "cell_type": "markdown",
- "id": "3cb3f7ea",
- "metadata": {},
- "source": [
- "Previously, we accessed xms alias with `data.children[11]` which is the channel 11(ch11) of the `SOURCE`. To be able to retrieve the exact same signal, `alias_signal_dict` in Sec. [3.1.2.2] can be useful. We can see which `SIGNALS` belong to xms `SOURCE`. "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 42,
- "id": "da0f8d6f-09e9-4ee2-96af-4754566c99fe",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "'/XMS/CH22' , '/XMS/CH06' , '/XMS/CH29' , '/XMS/DEVICES/D3_PXI6133/RANGE' , '/XMS/DEVICES/D4_PXI6133/RANGE' , \n",
- "'/XMS/CH16' , '/XMS/DEVICES/D3_PXI6133/CHANNEL' , '/XMS/CH26' , '/XMS/DEVICES/D6_PXI6133/CHANNEL' , '/XMS/CH04' , \n",
- "'/XMS/CH05' , '/XMS/CH01' , '/XMS/CH09' , '/XMS/CH23' , '/XMS/CH33' , '/XMS/CH40' , '/XMS/DEVICES/D5_PXI6133/RANGE' , \n",
- "'/XMS/DEVICES/D4_PXI6133/CHANNEL' , '/XMS/CH18' , '/XMS/CH12' , '/XMS/DEVICES/D7_PXI6133/CHANNEL' , \n",
- "'/XMS/DEVICES/D6_PXI6133/RANGE' , '/XMS/CH11' , '/XMS/CH13' , '/XMS/CH39' , '/XMS/CH03' , '/XMS/CH35' , \n",
- "'/XMS/DEVICES/D5_PXI6133/CHANNEL' , '/XMS/DEVICES/D2_PXI6133/CHANNEL' , '/XMS/CH00' , '/XMS/CH31' , '/XMS/CH10' , \n",
- "'/XMS/CH37' , '/XMS/CH27' , '/XMS/CH20' , '/XMS/CH24' , '/XMS/CH28' , '/XMS/CH30' , '/XMS/CH07' , '/XMS/TEST' , \n",
- "'/XMS/CH34' , '/XMS/CH25' , '/XMS/CH08' , '/XMS/CH17' , '/XMS/CH41' , '/XMS/CH36' , '/XMS/DEVICES/LIMIT' , '/XMS/CH02' , \n",
- "'/XMS/CH21' , '/XMS/DEVICES/D2_PXI6133/RANGE' , '/XMS/CH14' , '/XMS/CH15' , '/XMS/CH32' , '/XMS/TIME1' , \n",
- "'/XMS/DEVICES/D7_PXI6133/RANGE' , '/XMS/CH38' , '/XMS/CH19' \n",
- " \n"
- ],
- "text/plain": [
- "\u001b[32m'/XMS/CH22'\u001b[0m, \u001b[32m'/XMS/CH06'\u001b[0m, \u001b[32m'/XMS/CH29'\u001b[0m, \u001b[32m'/XMS/DEVICES/D3_PXI6133/RANGE'\u001b[0m, \u001b[32m'/XMS/DEVICES/D4_PXI6133/RANGE'\u001b[0m, \n",
- "\u001b[32m'/XMS/CH16'\u001b[0m, \u001b[32m'/XMS/DEVICES/D3_PXI6133/CHANNEL'\u001b[0m, \u001b[32m'/XMS/CH26'\u001b[0m, \u001b[32m'/XMS/DEVICES/D6_PXI6133/CHANNEL'\u001b[0m, \u001b[32m'/XMS/CH04'\u001b[0m, \n",
- "\u001b[32m'/XMS/CH05'\u001b[0m, \u001b[32m'/XMS/CH01'\u001b[0m, \u001b[32m'/XMS/CH09'\u001b[0m, \u001b[32m'/XMS/CH23'\u001b[0m, \u001b[32m'/XMS/CH33'\u001b[0m, \u001b[32m'/XMS/CH40'\u001b[0m, \u001b[32m'/XMS/DEVICES/D5_PXI6133/RANGE'\u001b[0m, \n",
- "\u001b[32m'/XMS/DEVICES/D4_PXI6133/CHANNEL'\u001b[0m, \u001b[32m'/XMS/CH18'\u001b[0m, \u001b[32m'/XMS/CH12'\u001b[0m, \u001b[32m'/XMS/DEVICES/D7_PXI6133/CHANNEL'\u001b[0m, \n",
- "\u001b[32m'/XMS/DEVICES/D6_PXI6133/RANGE'\u001b[0m, \u001b[32m'/XMS/CH11'\u001b[0m, \u001b[32m'/XMS/CH13'\u001b[0m, \u001b[32m'/XMS/CH39'\u001b[0m, \u001b[32m'/XMS/CH03'\u001b[0m, \u001b[32m'/XMS/CH35'\u001b[0m, \n",
- "\u001b[32m'/XMS/DEVICES/D5_PXI6133/CHANNEL'\u001b[0m, \u001b[32m'/XMS/DEVICES/D2_PXI6133/CHANNEL'\u001b[0m, \u001b[32m'/XMS/CH00'\u001b[0m, \u001b[32m'/XMS/CH31'\u001b[0m, \u001b[32m'/XMS/CH10'\u001b[0m, \n",
- "\u001b[32m'/XMS/CH37'\u001b[0m, \u001b[32m'/XMS/CH27'\u001b[0m, \u001b[32m'/XMS/CH20'\u001b[0m, \u001b[32m'/XMS/CH24'\u001b[0m, \u001b[32m'/XMS/CH28'\u001b[0m, \u001b[32m'/XMS/CH30'\u001b[0m, \u001b[32m'/XMS/CH07'\u001b[0m, \u001b[32m'/XMS/TEST'\u001b[0m, \n",
- "\u001b[32m'/XMS/CH34'\u001b[0m, \u001b[32m'/XMS/CH25'\u001b[0m, \u001b[32m'/XMS/CH08'\u001b[0m, \u001b[32m'/XMS/CH17'\u001b[0m, \u001b[32m'/XMS/CH41'\u001b[0m, \u001b[32m'/XMS/CH36'\u001b[0m, \u001b[32m'/XMS/DEVICES/LIMIT'\u001b[0m, \u001b[32m'/XMS/CH02'\u001b[0m, \n",
- "\u001b[32m'/XMS/CH21'\u001b[0m, \u001b[32m'/XMS/DEVICES/D2_PXI6133/RANGE'\u001b[0m, \u001b[32m'/XMS/CH14'\u001b[0m, \u001b[32m'/XMS/CH15'\u001b[0m, \u001b[32m'/XMS/CH32'\u001b[0m, \u001b[32m'/XMS/TIME1'\u001b[0m, \n",
- "\u001b[32m'/XMS/DEVICES/D7_PXI6133/RANGE'\u001b[0m, \u001b[32m'/XMS/CH38'\u001b[0m, \u001b[32m'/XMS/CH19'\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "# the signals\n",
- "print(str(alias_signal_dict[\"xms\"])[1:-1])"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "45b32097",
- "metadata": {},
- "source": [
- "Retrieved data `XMS/CH11` belongs to the class `Signal`."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 43,
- "id": "5b98510f",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "╭─────────────────────────────────── < class 'pyuda._signal.Signal' > ───────────────────────────────────╮ \n",
- "│ ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮ │ \n",
- "│ │ < Signal: Volt > │ │ \n",
- "│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯ │ \n",
- "│ │ \n",
- "│ data = array ([ -0.00228885 , 0.00030518 , -0.00137331 , ... , -0.00137331 , │ \n",
- "│ -0.00198367 , 0.00015259 ] , dtype =float32 ) │ \n",
- "│ description = '' │ \n",
- "│ dims = [< Dim: Time >] │ \n",
- "│ errors = array ([ 0 ., 0 ., 0 ., ... , 0 ., 0 ., 0 .] , dtype =float32 ) │ \n",
- "│ label = 'Volt' │ \n",
- "│ meta = { │ \n",
- "│ 'signal_name' : b'/xms/ch11' , │ \n",
- "│ 'signal_alias' : b'/XMS/CH11' , │ \n",
- "│ 'path' : b'/net/mustrgsrvr1/export/mastu/data/MAST_Data/27933/LATEST/xms027933.nc' , │ \n",
- "│ 'filename' : b'xms027933.nc' , │ \n",
- "│ 'format' : b'CDF' , │ \n",
- "│ 'exp_number' : 27933 , │ \n",
- "│ 'pass' : -1 , │ \n",
- "│ 'pass_date' : b'2011-12-15' │ \n",
- "│ } │ \n",
- "│ rank = 1 │ \n",
- "│ shape = ( 650000 ,) │ \n",
- "│ time = < Dim: Time > │ \n",
- "│ time_index = 0 │ \n",
- "│ units = 'V' │ \n",
- "╰──────────────────────────────────────────────────────────────────────────────────────────────────────╯ \n",
- " \n"
- ],
- "text/plain": [
- "\u001b[34m╭─\u001b[0m\u001b[34m────────────────────────────────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'pyuda._signal.Signal'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ──────────────────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╭──────────────────────────────────────────────────────────────────────────────────────────────────╮\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mSignal:\u001b[0m\u001b[39m Volt\u001b[0m\u001b[1m>\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╰──────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdata\u001b[0m = \u001b[1;35marray\u001b[0m\u001b[1m(\u001b[0m\u001b[1m[\u001b[0m\u001b[1;36m-0.00228885\u001b[0m, \u001b[1;36m0.00030518\u001b[0m, \u001b[1;36m-0.00137331\u001b[0m, \u001b[33m...\u001b[0m, \u001b[1;36m-0.00137331\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m-0.00198367\u001b[0m, \u001b[1;36m0.00015259\u001b[0m\u001b[1m]\u001b[0m, \u001b[33mdtype\u001b[0m=\u001b[35mfloat32\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdescription\u001b[0m = \u001b[32m''\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdims\u001b[0m = \u001b[1m[\u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mDim:\u001b[0m\u001b[39m Time\u001b[0m\u001b[1m>\u001b[0m\u001b[1m]\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33merrors\u001b[0m = \u001b[1;35marray\u001b[0m\u001b[1m(\u001b[0m\u001b[1m[\u001b[0m\u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[33m...\u001b[0m, \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m.\u001b[1m]\u001b[0m, \u001b[33mdtype\u001b[0m=\u001b[35mfloat32\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mlabel\u001b[0m = \u001b[32m'Volt'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mmeta\u001b[0m = \u001b[1m{\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'signal_name'\u001b[0m: \u001b[32mb'/xms/ch11'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'signal_alias'\u001b[0m: \u001b[32mb'/XMS/CH11'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'path'\u001b[0m: \u001b[32mb'/net/mustrgsrvr1/export/mastu/data/MAST_Data/27933/LATEST/xms027933.nc'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'filename'\u001b[0m: \u001b[32mb'xms027933.nc'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'format'\u001b[0m: \u001b[32mb'CDF'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'exp_number'\u001b[0m: \u001b[1;36m27933\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'pass'\u001b[0m: \u001b[1;36m-1\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'pass_date'\u001b[0m: \u001b[32mb'2011-12-15'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m}\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mrank\u001b[0m = \u001b[1;36m1\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mshape\u001b[0m = \u001b[1m(\u001b[0m\u001b[1;36m650000\u001b[0m,\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mtime\u001b[0m = \u001b[1m<\u001b[0m\u001b[1;95mDim:\u001b[0m\u001b[39m Time\u001b[0m\u001b[1m>\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mtime_index\u001b[0m = \u001b[1;36m0\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33munits\u001b[0m = \u001b[32m'V'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m╰──────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "data = client.get(\"/XMS/CH11\", shot_1)\n",
- "inspect(data, docs=False)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "438a42b7",
- "metadata": {},
- "source": [
- "To access Time axis, one needs to call `.time.data` in addition to the `SIGNAL` name. "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 45,
- "id": "dbb548a5",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "╭─────────────────────────── < class 'numpy.ndarray' > ───────────────────────────╮ \n",
- "│ ╭───────────────────────────────────────────────────────────────────────────╮ │ \n",
- "│ │ array ([ -0.05 , -0.049999 , -0.049998 , ... , 0.599997 , 0.599998 , │ │ \n",
- "│ │ │ │ 0.599999 ]) │ │ \n",
- "│ ╰───────────────────────────────────────────────────────────────────────────╯ │ \n",
- "│ │ \n",
- "│ base = 1 │ \n",
- "│ ctypes = < numpy.core._internal._ctypes object at 0x7f8eb51d4198 > │ \n",
- "│ data = < memory at 0x7f8eb520d1c8 > │ \n",
- "│ dtype = dtype ( 'float64' ) │ \n",
- "│ flags = C_CONTIGUOUS : True │ \n",
- "│ F_CONTIGUOUS : True │ \n",
- "│ OWNDATA : False │ \n",
- "│ WRITEABLE : True │ \n",
- "│ ALIGNED : True │ \n",
- "│ WRITEBACKIFCOPY : False │ \n",
- "│ UPDATEIFCOPY : False │ \n",
- "│ │ \n",
- "│ flat = < numpy.flatiter object at 0x560d0b963e50 > │ \n",
- "│ imag = array ([ 0 ., 0 ., 0 ., ... , 0 ., 0 ., 0 .]) │ \n",
- "│ itemsize = 8 │ \n",
- "│ nbytes = 5200000 │ \n",
- "│ ndim = 1 │ \n",
- "│ real = array ([ -0.05 , -0.049999 , -0.049998 , ... , 0.599997 , 0.599998 , │ \n",
- "│ 0.599999 ]) │ \n",
- "│ shape = ( 650000 ,) │ \n",
- "│ size = 650000 │ \n",
- "│ strides = ( 8 ,) │ \n",
- "│ T = array ([ -0.05 , -0.049999 , -0.049998 , ... , 0.599997 , 0.599998 , │ \n",
- "│ 0.599999 ]) │ \n",
- "╰───────────────────────────────────────────────────────────────────────────────╯ \n",
- " \n"
- ],
- "text/plain": [
- "\u001b[34m╭─\u001b[0m\u001b[34m────────────────────────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'numpy.ndarray'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ──────────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╭───────────────────────────────────────────────────────────────────────────╮\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1;35marray\u001b[0m\u001b[1m(\u001b[0m\u001b[1m[\u001b[0m\u001b[1;36m-0.05\u001b[0m , \u001b[1;36m-0.049999\u001b[0m, \u001b[1;36m-0.049998\u001b[0m, \u001b[33m...\u001b[0m, \u001b[1;36m0.599997\u001b[0m, \u001b[1;36m0.599998\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.599999\u001b[0m\u001b[1m]\u001b[0m\u001b[1m)\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╰───────────────────────────────────────────────────────────────────────────╯\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mbase\u001b[0m = \u001b[1;36m1\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mctypes\u001b[0m = \u001b[1m<\u001b[0m\u001b[1;95mnumpy.core._internal._ctypes\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eb51d4198\u001b[0m\u001b[1m>\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdata\u001b[0m = \u001b[1m<\u001b[0m\u001b[1;95mmemory\u001b[0m\u001b[39m at \u001b[0m\u001b[1;36m0x7f8eb520d1c8\u001b[0m\u001b[1m>\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdtype\u001b[0m = \u001b[1;35mdtype\u001b[0m\u001b[1m(\u001b[0m\u001b[32m'float64'\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mflags\u001b[0m = C_CONTIGUOUS : \u001b[3;92mTrue\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m F_CONTIGUOUS : \u001b[3;92mTrue\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m OWNDATA : \u001b[3;91mFalse\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m WRITEABLE : \u001b[3;92mTrue\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m ALIGNED : \u001b[3;92mTrue\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m WRITEBACKIFCOPY : \u001b[3;91mFalse\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m UPDATEIFCOPY : \u001b[3;91mFalse\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mflat\u001b[0m = \u001b[1m<\u001b[0m\u001b[1;95mnumpy.flatiter\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x560d0b963e50\u001b[0m\u001b[1m>\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mimag\u001b[0m = \u001b[1;35marray\u001b[0m\u001b[1m(\u001b[0m\u001b[1m[\u001b[0m\u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[33m...\u001b[0m, \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m.\u001b[1m]\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mitemsize\u001b[0m = \u001b[1;36m8\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mnbytes\u001b[0m = \u001b[1;36m5200000\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mndim\u001b[0m = \u001b[1;36m1\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mreal\u001b[0m = \u001b[1;35marray\u001b[0m\u001b[1m(\u001b[0m\u001b[1m[\u001b[0m\u001b[1;36m-0.05\u001b[0m , \u001b[1;36m-0.049999\u001b[0m, \u001b[1;36m-0.049998\u001b[0m, \u001b[33m...\u001b[0m, \u001b[1;36m0.599997\u001b[0m, \u001b[1;36m0.599998\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0.599999\u001b[0m\u001b[1m]\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mshape\u001b[0m = \u001b[1m(\u001b[0m\u001b[1;36m650000\u001b[0m,\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33msize\u001b[0m = \u001b[1;36m650000\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mstrides\u001b[0m = \u001b[1m(\u001b[0m\u001b[1;36m8\u001b[0m,\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mT\u001b[0m = \u001b[1;35marray\u001b[0m\u001b[1m(\u001b[0m\u001b[1m[\u001b[0m\u001b[1;36m-0.05\u001b[0m , \u001b[1;36m-0.049999\u001b[0m, \u001b[1;36m-0.049998\u001b[0m, \u001b[33m...\u001b[0m, \u001b[1;36m0.599997\u001b[0m, \u001b[1;36m0.599998\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0.599999\u001b[0m\u001b[1m]\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m╰───────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "time_axis = data.time.data\n",
- "inspect(time_axis, docs=False)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "3efc5eab",
- "metadata": {},
- "source": [
- "### Sources & Data in *IDA3* format"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "85d2a3f9",
- "metadata": {},
- "source": [
- "*IDA3* is the second most commonly used format in **_Raw_** and it is used as the main `SIGNAL` format in **_Analysed_**. Unlike *CBF*, it cannot be accessed via `SOURCE` name/alias. Here we demonstrate it for 'xmd' `SOURCE`, but all the other are structured the same way."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 46,
- "id": "80cf024e",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "╭────────────────────────────────────── < class 'list' > ──────────────────────────────────────╮ \n",
- "│ ╭────────────────────────────────────────────────────────────────────────────────────────╮ │ \n",
- "│ │ [ │ │ \n",
- "│ │ │ ListData ( │ │ \n",
- "│ │ │ │ shot =27933 , │ │ \n",
- "│ │ │ │ pass_ =-1 , │ │ \n",
- "│ │ │ │ status =1 , │ │ \n",
- "│ │ │ │ source_alias ='xmd' , │ │ \n",
- "│ │ │ │ format ='IDA3' , │ │ \n",
- "│ │ │ │ filename ='xmd0279.33' , │ │ \n",
- "│ │ │ │ type ='Raw' , │ │ \n",
- "│ │ │ │ description ='Magnetic Field Measurements: Centre Column Toroidal Array of' +35 , │ │ \n",
- "│ │ │ │ run_id =-1 │ │ \n",
- "│ │ │ ) │ │ \n",
- "│ │ ] │ │ \n",
- "│ ╰────────────────────────────────────────────────────────────────────────────────────────╯ │ \n",
- "│ │ \n",
- "│ 35 attribute(s) not shown. Run inspect ( inspect) for options. │ \n",
- "╰────────────────────────────────────────────────────────────────────────────────────────────╯ \n",
- " \n"
- ],
- "text/plain": [
- "\u001b[34m╭─\u001b[0m\u001b[34m───────────────────────────────────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'list'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ─────────────────────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╭────────────────────────────────────────────────────────────────────────────────────────╮\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m[\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1;35mListData\u001b[0m\u001b[1m(\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mshot\u001b[0m=\u001b[1;36m27933\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mpass_\u001b[0m=\u001b[1;36m-1\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mstatus\u001b[0m=\u001b[1;36m1\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33msource_alias\u001b[0m=\u001b[32m'xmd'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mformat\u001b[0m=\u001b[32m'IDA3'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mfilename\u001b[0m=\u001b[32m'xmd0279.33'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'Raw'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mdescription\u001b[0m=\u001b[32m'Magnetic Field Measurements: Centre Column Toroidal Array of'\u001b[0m+\u001b[1;36m35\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mrun_id\u001b[0m=\u001b[1;36m-1\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1m)\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m]\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╰────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m35\u001b[0m\u001b[3m attribute(s) not shown.\u001b[0m Run \u001b[1;35minspect\u001b[0m\u001b[1m(\u001b[0minspect\u001b[1m)\u001b[0m for options. \u001b[34m│\u001b[0m\n",
- "\u001b[34m╰────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "data = [source for source in sources_1 if source.source_alias == \"xmd\"]\n",
- "inspect(data, docs=False)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "b133c0c2",
- "metadata": {},
- "source": [
- "Data can only be accessed as class `Signal`, using the name. We can also observe that units of the measurement are always shown in top left corner. It is possible, that we cannot rely on this, because for this `SOURCE` they are usually measured as volt second (Vs), also Weber (Wb) or Maxwell (Mx). "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 47,
- "id": "41ad2af7",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "╭─────────────────────── < class 'pyuda._signal.Signal' > ────────────────────────╮ \n",
- "│ ╭───────────────────────────────────────────────────────────────────────────╮ │ \n",
- "│ │ < Signal: V > │ │ \n",
- "│ ╰───────────────────────────────────────────────────────────────────────────╯ │ \n",
- "│ │ \n",
- "│ data = array ([ 0 . , -0.0390625 , -0.04150391 , ... , -0.29785156 , │ \n",
- "│ -0.00732422 , -0.12451172 ] , dtype =float32 ) │ \n",
- "│ description = '' │ \n",
- "│ dims = [< Dim: Time >] │ \n",
- "│ errors = array ([ 0 ., 0 ., 0 ., ... , 0 ., 0 ., 0 .] , dtype =float32 ) │ \n",
- "│ label = 'V' │ \n",
- "│ meta = { │ \n",
- "│ 'signal_name' : b'XMD_NTM/FPGA/01' , │ \n",
- "│ 'signal_alias' : b'XMD_NTM/FPGA/01' , │ \n",
- "│ 'path' : b'' , │ \n",
- "│ 'filename' : b'xmd0279.33' , │ \n",
- "│ 'format' : b'IDA3' , │ \n",
- "│ 'exp_number' : 27933 , │ \n",
- "│ 'pass' : -1 , │ \n",
- "│ 'pass_date' : b'2011-12-15' │ \n",
- "│ } │ \n",
- "│ rank = 1 │ \n",
- "│ shape = ( 132096 ,) │ \n",
- "│ time = < Dim: Time > │ \n",
- "│ time_index = 0 │ \n",
- "│ units = 'V' │ \n",
- "╰───────────────────────────────────────────────────────────────────────────────╯ \n",
- " \n"
- ],
- "text/plain": [
- "\u001b[34m╭─\u001b[0m\u001b[34m────────────────────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'pyuda._signal.Signal'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ───────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╭───────────────────────────────────────────────────────────────────────────╮\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mSignal:\u001b[0m\u001b[39m V\u001b[0m\u001b[1m>\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╰───────────────────────────────────────────────────────────────────────────╯\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdata\u001b[0m = \u001b[1;35marray\u001b[0m\u001b[1m(\u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m0\u001b[0m. , \u001b[1;36m-0.0390625\u001b[0m , \u001b[1;36m-0.04150391\u001b[0m, \u001b[33m...\u001b[0m, \u001b[1;36m-0.29785156\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m-0.00732422\u001b[0m, \u001b[1;36m-0.12451172\u001b[0m\u001b[1m]\u001b[0m, \u001b[33mdtype\u001b[0m=\u001b[35mfloat32\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdescription\u001b[0m = \u001b[32m''\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdims\u001b[0m = \u001b[1m[\u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mDim:\u001b[0m\u001b[39m Time\u001b[0m\u001b[1m>\u001b[0m\u001b[1m]\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33merrors\u001b[0m = \u001b[1;35marray\u001b[0m\u001b[1m(\u001b[0m\u001b[1m[\u001b[0m\u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[33m...\u001b[0m, \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m.\u001b[1m]\u001b[0m, \u001b[33mdtype\u001b[0m=\u001b[35mfloat32\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mlabel\u001b[0m = \u001b[32m'V'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mmeta\u001b[0m = \u001b[1m{\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'signal_name'\u001b[0m: \u001b[32mb'XMD_NTM/FPGA/01'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'signal_alias'\u001b[0m: \u001b[32mb'XMD_NTM/FPGA/01'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'path'\u001b[0m: \u001b[32mb''\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'filename'\u001b[0m: \u001b[32mb'xmd0279.33'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'format'\u001b[0m: \u001b[32mb'IDA3'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'exp_number'\u001b[0m: \u001b[1;36m27933\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'pass'\u001b[0m: \u001b[1;36m-1\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'pass_date'\u001b[0m: \u001b[32mb'2011-12-15'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m}\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mrank\u001b[0m = \u001b[1;36m1\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mshape\u001b[0m = \u001b[1m(\u001b[0m\u001b[1;36m132096\u001b[0m,\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mtime\u001b[0m = \u001b[1m<\u001b[0m\u001b[1;95mDim:\u001b[0m\u001b[39m Time\u001b[0m\u001b[1m>\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mtime_index\u001b[0m = \u001b[1;36m0\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33munits\u001b[0m = \u001b[32m'V'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m╰───────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "data = client.get(\"XMD_NTM/FPGA/01\", shot_1)\n",
- "inspect(data, docs=False)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "3396fc28",
- "metadata": {},
- "source": [
- "Here is demonstrated that *IDA3* files are not accessible via `SOURCE` names."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 48,
- "id": "3f677478",
- "metadata": {},
- "outputs": [
- {
- "ename": "ServerException",
- "evalue": "No IDA Signal in IDA Source File. Could not translate logical name IDA3_ERR_MESS_FILE",
- "output_type": "error",
- "traceback": [
- "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
- "\u001b[0;31mServerException\u001b[0m Traceback (most recent call last)",
- "\u001b[0;32m/tmp/ipykernel_22687/2461860100.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mclient\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"xmd\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mshot_1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0minspect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
- "\u001b[0;32m/usr/local/depot/uda-2.5.3/python/pyuda/_client.py\u001b[0m in \u001b[0;36mget\u001b[0;34m(self, signal, source, time_first, time_last, **kwargs)\u001b[0m\n\u001b[1;32m 168\u001b[0m \"\"\"\n\u001b[1;32m 169\u001b[0m \u001b[0;31m# Standard signal\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 170\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcpyuda\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msignal\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msource\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 171\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_unpack\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtime_first\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtime_last\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 172\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
- "\u001b[0;32mpyuda/cpyuda/cpyuda.pyx\u001b[0m in \u001b[0;36mcpyuda.get_data\u001b[0;34m()\u001b[0m\n",
- "\u001b[0;31mServerException\u001b[0m: No IDA Signal in IDA Source File. Could not translate logical name IDA3_ERR_MESS_FILE"
- ]
- }
- ],
- "source": [
- "data = client.get(\"xmd\", shot_1)\n",
- "inspect(data)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "8e0c9c5a",
- "metadata": {},
- "source": [
- "#### Errors & Exceptions"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "27599f3c",
- "metadata": {},
- "source": [
- "An exception where data in **_Raw_** can be accessed only as a `Video` rather than a `Signal` is demonstrated below."
- ]
- },
- {
- "cell_type": "markdown",
- "id": "c886de8e",
- "metadata": {},
- "source": [
- "One cannot fund this `SOURCE` 'rcc' in source dictionary, see below. "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 49,
- "id": "3c24dd9b",
- "metadata": {},
- "outputs": [],
- "source": [
- "shot_3 = 30420\n",
- "\n",
- "sources_3 = client.list(ListType.SOURCES, shot_3)\n",
- "signals_3 = client.list(ListType.SIGNALS, shot_3)\n",
- "\n",
- "aliases_3 = set([signal.source_alias for signal in signals_3])\n",
- "\n",
- "alias_signal_dict_3 = {\n",
- " source: set(\n",
- " [signal.signal_name for signal in signals_3 if signal.source_alias == source]\n",
- " )\n",
- " for source in aliases_3\n",
- "}"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 50,
- "id": "29d6ba48",
- "metadata": {
- "tags": []
- },
- "outputs": [],
- "source": [
- "# commented as this will print a very big dictionary\n",
- "# print(alias_signal_dict_3)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "a0414fba",
- "metadata": {},
- "source": [
- "At the same time we can see that the `SOURCE` is *IDA3* and belongs to type **_Raw_**."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 51,
- "id": "a078d137",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "╭──────────────────────────────── < class 'list' > ────────────────────────────────╮ \n",
- "│ ╭────────────────────────────────────────────────────────────────────────────╮ │ \n",
- "│ │ [ │ │ \n",
- "│ │ │ ListData ( │ │ \n",
- "│ │ │ │ shot =30420 , │ │ \n",
- "│ │ │ │ pass_ =-1 , │ │ \n",
- "│ │ │ │ status =1 , │ │ \n",
- "│ │ │ │ source_alias ='rcc' , │ │ \n",
- "│ │ │ │ format ='IDA3' , │ │ \n",
- "│ │ │ │ filename ='rcc0304.20' , │ │ \n",
- "│ │ │ │ type ='Raw' , │ │ \n",
- "│ │ │ │ description ='CELESTE-3: core charge exchange (CXRS) spectrometer' , │ │ \n",
- "│ │ │ │ run_id =-1 │ │ \n",
- "│ │ │ ) │ │ \n",
- "│ │ ] │ │ \n",
- "│ ╰────────────────────────────────────────────────────────────────────────────╯ │ \n",
- "│ │ \n",
- "│ 35 attribute(s) not shown. Run inspect ( inspect) for options. │ \n",
- "╰────────────────────────────────────────────────────────────────────────────────╯ \n",
- " \n"
- ],
- "text/plain": [
- "\u001b[34m╭─\u001b[0m\u001b[34m─────────────────────────────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'list'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ───────────────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╭────────────────────────────────────────────────────────────────────────────╮\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m[\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1;35mListData\u001b[0m\u001b[1m(\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mshot\u001b[0m=\u001b[1;36m30420\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mpass_\u001b[0m=\u001b[1;36m-1\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mstatus\u001b[0m=\u001b[1;36m1\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33msource_alias\u001b[0m=\u001b[32m'rcc'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mformat\u001b[0m=\u001b[32m'IDA3'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mfilename\u001b[0m=\u001b[32m'rcc0304.20'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'Raw'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mdescription\u001b[0m=\u001b[32m'CELESTE-3: core charge exchange \u001b[0m\u001b[32m(\u001b[0m\u001b[32mCXRS\u001b[0m\u001b[32m)\u001b[0m\u001b[32m spectrometer'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mrun_id\u001b[0m=\u001b[1;36m-1\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1m)\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m]\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╰────────────────────────────────────────────────────────────────────────────╯\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m35\u001b[0m\u001b[3m attribute(s) not shown.\u001b[0m Run \u001b[1;35minspect\u001b[0m\u001b[1m(\u001b[0minspect\u001b[1m)\u001b[0m for options. \u001b[34m│\u001b[0m\n",
- "\u001b[34m╰────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "source_3_rcc = [source for source in sources_3 if source.source_alias == \"rcc\"]\n",
- "inspect(source_3_rcc, docs=False)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "c115e68d",
- "metadata": {},
- "source": [
- "Surprisingly, it is possible to access the data as a Video object."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 52,
- "id": "7a122c45",
- "metadata": {
- "tags": []
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "╭─────────────────────────────── < class 'pyuda._video.Video' > ───────────────────────────────╮ \n",
- "│ ╭────────────────────────────────────────────────────────────────────────────────────────╮ │ \n",
- "│ │ < pyuda._video.Video object at 0x7f8eb41afa90 > │ │ \n",
- "│ ╰────────────────────────────────────────────────────────────────────────────────────────╯ │ \n",
- "│ │ \n",
- "│ camera = 'Pluto PS482, PixCam 1.6' │ \n",
- "│ ccd_height = 270 │ \n",
- "│ ccd_width = 342 │ \n",
- "│ close_flc = 0 │ \n",
- "│ close_flc_delay = 0 │ \n",
- "│ date_time = '25/09/2013 12:32' │ \n",
- "│ depth = 14 │ \n",
- "│ exp_mode = 3.0 │ \n",
- "│ file_format = 'RCC' │ \n",
- "│ frame_times = array ([ -50000 , -45008 , -40008 , -35006 , -30008 , -25008 , -20008 , -15008 , │ \n",
- "│ -10008 , -5008 , -6 , 4995 , 9994 , 14994 , 93737 , 98735 , │ \n",
- "│ 103735 , 34979 , 113739 , 118735 , 123734 , 55002 , 59991 , 64990 , │ \n",
- "│ 69991 , 74990 , 79990 , 84991 , 89993 , 94994 , 99994 , 104994 , │ \n",
- "│ 109992 , 114992 , 119992 , 124992 , 129993 , 134992 , 139992 , 144995 , │ \n",
- "│ 149992 , 154992 , 159993 , 164992 , 169992 , 174992 , 179994 , 184991 , │ \n",
- "│ 189992 , 194992 , 199992 , 204991 , 209992 , 214994 , 219993 , 224995 , │ \n",
- "│ 229994 , 234990 , 239991 , 244990 , 249990 , 254991 , 259990 , 264990 , │ \n",
- "│ 269991 , 274990 , 279990 , 284991 , 289990 , 294990 , 299990 , 304994 , │ \n",
- "│ 309993 , 314993 , 319994 , 324991 , 329991 , 334992 , 339992 , 344991 , │ \n",
- "│ 349981 , 355002 , 359992 , 364993 , 369992 , 374991 , 379993 , 384991 , │ \n",
- "│ 389994 , 394992 , 399991 , 404992 , 409992 , 414992 , 419991 , 424992 , │ \n",
- "│ 429994 , 434993 , 439993 , 444994 , 449990 , 454990 , 459990 , 464990 , │ \n",
- "│ 469990 , 474991 , 479990 , 484990 , 489990 , 494990 , 499990 , 504990 , │ \n",
- "│ 509990 , 514990 , 519995 , 524993 , 529993 , 534994 , 539991 , 544992 , │ \n",
- "│ 549992 , 554992 , 559991 , 564991 , 569994 , 574992 , 579992 , 584993 , │ \n",
- "│ 589992 , 595138 ] , dtype =int32 ) │ \n",
- "│ frames = [ │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadcdc860 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadcdc8d0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8d630 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8d668 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8d6a0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8d6d8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8d710 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8d748 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8d780 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8d7b8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8d7f0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8d828 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8d860 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8d898 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8d8d0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8d908 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8d940 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8d978 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8d9b0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8d9e8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8da20 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8da58 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8da90 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8dac8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8db00 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8db38 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8db70 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8dba8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8dbe0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8dc18 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8dc50 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8dc88 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8dcc0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8dcf8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8dd30 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8dd68 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8dda0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8ddd8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8de10 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8de48 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8de80 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8deb8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8def0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8df28 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8df60 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8df98 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc8dfd0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90048 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90080 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc900b8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc900f0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90128 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90160 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90198 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc901d0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90208 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90240 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90278 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc902b0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc902e8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90320 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90358 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90390 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc903c8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90400 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90438 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90470 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc904a8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc904e0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90518 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90550 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90588 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc905c0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc905f8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90630 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90668 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc906a0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc906d8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90710 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90748 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90780 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc907b8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc907f0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90828 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90860 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90898 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc908d0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90908 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90940 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90978 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc909b0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc909e8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90a20 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90a58 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90a90 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90ac8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90b00 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90b38 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90b70 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90ba8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90be0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90c18 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90c50 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90c88 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90cc0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90cf8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90d30 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90d68 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90da0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90dd8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90e10 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90e48 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90e80 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90eb8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90ef0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90f28 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90f60 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90f98 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc90fd0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc95048 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc95080 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc950b8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc950f0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc95128 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc95160 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc95198 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc951d0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc95208 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc95240 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc95278 > │ \n",
- "│ ] │ \n",
- "│ height = 36 │ \n",
- "│ id = 'CXR 01' │ \n",
- "│ is_color = 0 │ \n",
- "│ n_channels = 4 │ \n",
- "│ n_frames = 130 │ \n",
- "│ n_i2m_rows = 250 │ \n",
- "│ n_notch_pulses = 0 │ \n",
- "│ n_roi = 5 │ \n",
- "│ open_flc = 0 │ \n",
- "│ open_flc_delay = 0 │ \n",
- "│ orientation = 2231306 │ \n",
- "│ prom_set = array ([ 254 , 1 , 1 , 0 ] , dtype =int32 ) │ \n",
- "│ read_out = 3.3844000000000003 │ \n",
- "│ shot = 30420 │ \n",
- "│ temp_set = 96 │ \n",
- "│ time_out = 10000 │ \n",
- "│ trig_pulse = 999983.0 │ \n",
- "│ width = 684 │ \n",
- "│ x_roi = array ([ 0 , 342 , 1 ] , dtype =int32 ) │ \n",
- "│ y_roi = array ([[ 0 , 0 , 1 , 1 , 0 , 11 , 11 , 1 , 11 , 105 , 15 , 1 , 116 , │ \n",
- "│ 32 , 16 , 1 , 148 , 120 , 15 , 2 , 0 , 0 , 0 , 0 , 0 , 0 , │ \n",
- "│ 0 , 0 , 0 , 0 , 0 , 0 ] , │ \n",
- "│ [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , │ \n",
- "│ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , │ \n",
- "│ 0 , 0 , 0 , 0 , 0 , 0 ] , │ \n",
- "│ [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , │ \n",
- "│ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , │ \n",
- "│ 0 , 0 , 0 , 0 , 0 , 0 ] , │ \n",
- "│ [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , │ \n",
- "│ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , │ \n",
- "│ 0 , 0 , 0 , 0 , 0 , 0 ]] , dtype =int32 ) │ \n",
- "╰────────────────────────────────────────────────────────────────────────────────────────────╯ \n",
- " \n"
- ],
- "text/plain": [
- "\u001b[34m╭─\u001b[0m\u001b[34m────────────────────────────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'pyuda._video.Video'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ──────────────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╭────────────────────────────────────────────────────────────────────────────────────────╮\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Video\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eb41afa90\u001b[0m\u001b[1m>\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╰────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mcamera\u001b[0m = \u001b[32m'Pluto PS482, PixCam 1.6'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mccd_height\u001b[0m = \u001b[1;36m270\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mccd_width\u001b[0m = \u001b[1;36m342\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mclose_flc\u001b[0m = \u001b[1;36m0\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mclose_flc_delay\u001b[0m = \u001b[1;36m0\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdate_time\u001b[0m = \u001b[32m'25/09/2013 12:32'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdepth\u001b[0m = \u001b[1;36m14\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mexp_mode\u001b[0m = \u001b[1;36m3.0\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mfile_format\u001b[0m = \u001b[32m'RCC'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mframe_times\u001b[0m = \u001b[1;35marray\u001b[0m\u001b[1m(\u001b[0m\u001b[1m[\u001b[0m\u001b[1;36m-50000\u001b[0m, \u001b[1;36m-45008\u001b[0m, \u001b[1;36m-40008\u001b[0m, \u001b[1;36m-35006\u001b[0m, \u001b[1;36m-30008\u001b[0m, \u001b[1;36m-25008\u001b[0m, \u001b[1;36m-20008\u001b[0m, \u001b[1;36m-15008\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m-10008\u001b[0m, \u001b[1;36m-5008\u001b[0m, \u001b[1;36m-6\u001b[0m, \u001b[1;36m4995\u001b[0m, \u001b[1;36m9994\u001b[0m, \u001b[1;36m14994\u001b[0m, \u001b[1;36m93737\u001b[0m, \u001b[1;36m98735\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m103735\u001b[0m, \u001b[1;36m34979\u001b[0m, \u001b[1;36m113739\u001b[0m, \u001b[1;36m118735\u001b[0m, \u001b[1;36m123734\u001b[0m, \u001b[1;36m55002\u001b[0m, \u001b[1;36m59991\u001b[0m, \u001b[1;36m64990\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m69991\u001b[0m, \u001b[1;36m74990\u001b[0m, \u001b[1;36m79990\u001b[0m, \u001b[1;36m84991\u001b[0m, \u001b[1;36m89993\u001b[0m, \u001b[1;36m94994\u001b[0m, \u001b[1;36m99994\u001b[0m, \u001b[1;36m104994\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m109992\u001b[0m, \u001b[1;36m114992\u001b[0m, \u001b[1;36m119992\u001b[0m, \u001b[1;36m124992\u001b[0m, \u001b[1;36m129993\u001b[0m, \u001b[1;36m134992\u001b[0m, \u001b[1;36m139992\u001b[0m, \u001b[1;36m144995\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m149992\u001b[0m, \u001b[1;36m154992\u001b[0m, \u001b[1;36m159993\u001b[0m, \u001b[1;36m164992\u001b[0m, \u001b[1;36m169992\u001b[0m, \u001b[1;36m174992\u001b[0m, \u001b[1;36m179994\u001b[0m, \u001b[1;36m184991\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m189992\u001b[0m, \u001b[1;36m194992\u001b[0m, \u001b[1;36m199992\u001b[0m, \u001b[1;36m204991\u001b[0m, \u001b[1;36m209992\u001b[0m, \u001b[1;36m214994\u001b[0m, \u001b[1;36m219993\u001b[0m, \u001b[1;36m224995\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m229994\u001b[0m, \u001b[1;36m234990\u001b[0m, \u001b[1;36m239991\u001b[0m, \u001b[1;36m244990\u001b[0m, \u001b[1;36m249990\u001b[0m, \u001b[1;36m254991\u001b[0m, \u001b[1;36m259990\u001b[0m, \u001b[1;36m264990\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m269991\u001b[0m, \u001b[1;36m274990\u001b[0m, \u001b[1;36m279990\u001b[0m, \u001b[1;36m284991\u001b[0m, \u001b[1;36m289990\u001b[0m, \u001b[1;36m294990\u001b[0m, \u001b[1;36m299990\u001b[0m, \u001b[1;36m304994\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m309993\u001b[0m, \u001b[1;36m314993\u001b[0m, \u001b[1;36m319994\u001b[0m, \u001b[1;36m324991\u001b[0m, \u001b[1;36m329991\u001b[0m, \u001b[1;36m334992\u001b[0m, \u001b[1;36m339992\u001b[0m, \u001b[1;36m344991\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m349981\u001b[0m, \u001b[1;36m355002\u001b[0m, \u001b[1;36m359992\u001b[0m, \u001b[1;36m364993\u001b[0m, \u001b[1;36m369992\u001b[0m, \u001b[1;36m374991\u001b[0m, \u001b[1;36m379993\u001b[0m, \u001b[1;36m384991\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m389994\u001b[0m, \u001b[1;36m394992\u001b[0m, \u001b[1;36m399991\u001b[0m, \u001b[1;36m404992\u001b[0m, \u001b[1;36m409992\u001b[0m, \u001b[1;36m414992\u001b[0m, \u001b[1;36m419991\u001b[0m, \u001b[1;36m424992\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m429994\u001b[0m, \u001b[1;36m434993\u001b[0m, \u001b[1;36m439993\u001b[0m, \u001b[1;36m444994\u001b[0m, \u001b[1;36m449990\u001b[0m, \u001b[1;36m454990\u001b[0m, \u001b[1;36m459990\u001b[0m, \u001b[1;36m464990\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m469990\u001b[0m, \u001b[1;36m474991\u001b[0m, \u001b[1;36m479990\u001b[0m, \u001b[1;36m484990\u001b[0m, \u001b[1;36m489990\u001b[0m, \u001b[1;36m494990\u001b[0m, \u001b[1;36m499990\u001b[0m, \u001b[1;36m504990\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m509990\u001b[0m, \u001b[1;36m514990\u001b[0m, \u001b[1;36m519995\u001b[0m, \u001b[1;36m524993\u001b[0m, \u001b[1;36m529993\u001b[0m, \u001b[1;36m534994\u001b[0m, \u001b[1;36m539991\u001b[0m, \u001b[1;36m544992\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m549992\u001b[0m, \u001b[1;36m554992\u001b[0m, \u001b[1;36m559991\u001b[0m, \u001b[1;36m564991\u001b[0m, \u001b[1;36m569994\u001b[0m, \u001b[1;36m574992\u001b[0m, \u001b[1;36m579992\u001b[0m, \u001b[1;36m584993\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m589992\u001b[0m, \u001b[1;36m595138\u001b[0m\u001b[1m]\u001b[0m, \u001b[33mdtype\u001b[0m=\u001b[35mint32\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mframes\u001b[0m = \u001b[1m[\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadcdc860\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadcdc8d0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8d630\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8d668\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8d6a0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8d6d8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8d710\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8d748\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8d780\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8d7b8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8d7f0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8d828\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8d860\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8d898\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8d8d0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8d908\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8d940\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8d978\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8d9b0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8d9e8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8da20\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8da58\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8da90\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8dac8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8db00\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8db38\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8db70\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8dba8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8dbe0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8dc18\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8dc50\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8dc88\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8dcc0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8dcf8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8dd30\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8dd68\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8dda0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8ddd8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8de10\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8de48\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8de80\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8deb8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8def0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8df28\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8df60\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8df98\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc8dfd0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90048\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90080\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc900b8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc900f0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90128\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90160\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90198\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc901d0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90208\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90240\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90278\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc902b0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc902e8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90320\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90358\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90390\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc903c8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90400\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90438\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90470\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc904a8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc904e0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90518\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90550\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90588\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc905c0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc905f8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90630\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90668\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc906a0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc906d8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90710\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90748\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90780\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc907b8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc907f0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90828\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90860\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90898\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc908d0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90908\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90940\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90978\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc909b0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc909e8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90a20\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90a58\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90a90\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90ac8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90b00\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90b38\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90b70\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90ba8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90be0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90c18\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90c50\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90c88\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90cc0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90cf8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90d30\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90d68\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90da0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90dd8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90e10\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90e48\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90e80\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90eb8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90ef0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90f28\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90f60\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90f98\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc90fd0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc95048\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc95080\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc950b8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc950f0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc95128\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc95160\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc95198\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc951d0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc95208\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc95240\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc95278\u001b[0m\u001b[1m>\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m]\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mheight\u001b[0m = \u001b[1;36m36\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mid\u001b[0m = \u001b[32m'CXR 01'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mis_color\u001b[0m = \u001b[1;36m0\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mn_channels\u001b[0m = \u001b[1;36m4\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mn_frames\u001b[0m = \u001b[1;36m130\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mn_i2m_rows\u001b[0m = \u001b[1;36m250\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mn_notch_pulses\u001b[0m = \u001b[1;36m0\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mn_roi\u001b[0m = \u001b[1;36m5\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mopen_flc\u001b[0m = \u001b[1;36m0\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mopen_flc_delay\u001b[0m = \u001b[1;36m0\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33morientation\u001b[0m = \u001b[1;36m2231306\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mprom_set\u001b[0m = \u001b[1;35marray\u001b[0m\u001b[1m(\u001b[0m\u001b[1m[\u001b[0m\u001b[1;36m254\u001b[0m, \u001b[1;36m1\u001b[0m, \u001b[1;36m1\u001b[0m, \u001b[1;36m0\u001b[0m\u001b[1m]\u001b[0m, \u001b[33mdtype\u001b[0m=\u001b[35mint32\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mread_out\u001b[0m = \u001b[1;36m3.3844000000000003\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mshot\u001b[0m = \u001b[1;36m30420\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mtemp_set\u001b[0m = \u001b[1;36m96\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mtime_out\u001b[0m = \u001b[1;36m10000\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mtrig_pulse\u001b[0m = \u001b[1;36m999983.0\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mwidth\u001b[0m = \u001b[1;36m684\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mx_roi\u001b[0m = \u001b[1;35marray\u001b[0m\u001b[1m(\u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m0\u001b[0m, \u001b[1;36m342\u001b[0m, \u001b[1;36m1\u001b[0m\u001b[1m]\u001b[0m, \u001b[33mdtype\u001b[0m=\u001b[35mint32\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33my_roi\u001b[0m = \u001b[1;35marray\u001b[0m\u001b[1m(\u001b[0m\u001b[1m[\u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m1\u001b[0m, \u001b[1;36m1\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m11\u001b[0m, \u001b[1;36m11\u001b[0m, \u001b[1;36m1\u001b[0m, \u001b[1;36m11\u001b[0m, \u001b[1;36m105\u001b[0m, \u001b[1;36m15\u001b[0m, \u001b[1;36m1\u001b[0m, \u001b[1;36m116\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m32\u001b[0m, \u001b[1;36m16\u001b[0m, \u001b[1;36m1\u001b[0m, \u001b[1;36m148\u001b[0m, \u001b[1;36m120\u001b[0m, \u001b[1;36m15\u001b[0m, \u001b[1;36m2\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m\u001b[1m]\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m[\u001b[0m \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m\u001b[1m]\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m[\u001b[0m \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m\u001b[1m]\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m[\u001b[0m \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m\u001b[1m]\u001b[0m\u001b[1m]\u001b[0m, \u001b[33mdtype\u001b[0m=\u001b[35mint32\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m╰────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "data = client.get_images(\"rcc\", shot_3)\n",
- "inspect(data, docs=False)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "d1bb76f9",
- "metadata": {},
- "source": [
- "### Sources & Data in *NIDA* format"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "11ed7c76",
- "metadata": {},
- "source": [
- "*NIDA* should not be in **_Raw_** `SOURCE` types. Following the same approach as for other formats, one can see that some of such `SOURCES` don't have meaningful description, when we inspect it. UDA API is also not able to access the data, although can get some mets file information, which involves path to the data. Unfortunately, currently, we cannot access this either."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 53,
- "id": "45bb3a9a",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "╭──────────────────────────────────── < class 'list' > ─────────────────────────────────────╮ \n",
- "│ ╭─────────────────────────────────────────────────────────────────────────────────────╮ │ \n",
- "│ │ [ │ │ \n",
- "│ │ │ ListData ( │ │ \n",
- "│ │ │ │ shot =27933 , │ │ \n",
- "│ │ │ │ pass_ =-1 , │ │ \n",
- "│ │ │ │ status =1 , │ │ \n",
- "│ │ │ │ source_alias ='xmw' , │ │ \n",
- "│ │ │ │ format ='NIDA' , │ │ \n",
- "│ │ │ │ filename ='xmw0279.33' , │ │ \n",
- "│ │ │ │ type ='Raw' , │ │ \n",
- "│ │ │ │ description ='Share the knowledge - If you know what this is, let me know!' , │ │ \n",
- "│ │ │ │ run_id =-1 │ │ \n",
- "│ │ │ ) │ │ \n",
- "│ │ ] │ │ \n",
- "│ ╰─────────────────────────────────────────────────────────────────────────────────────╯ │ \n",
- "│ │ \n",
- "│ 35 attribute(s) not shown. Run inspect ( inspect) for options. │ \n",
- "╰─────────────────────────────────────────────────────────────────────────────────────────╯ \n",
- " \n"
- ],
- "text/plain": [
- "\u001b[34m╭─\u001b[0m\u001b[34m─────────────────────────────────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'list'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ────────────────────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╭─────────────────────────────────────────────────────────────────────────────────────╮\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m[\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1;35mListData\u001b[0m\u001b[1m(\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mshot\u001b[0m=\u001b[1;36m27933\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mpass_\u001b[0m=\u001b[1;36m-1\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mstatus\u001b[0m=\u001b[1;36m1\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33msource_alias\u001b[0m=\u001b[32m'xmw'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mformat\u001b[0m=\u001b[32m'NIDA'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mfilename\u001b[0m=\u001b[32m'xmw0279.33'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'Raw'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mdescription\u001b[0m=\u001b[32m'Share the knowledge - If you know what this is, let me know!'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mrun_id\u001b[0m=\u001b[1;36m-1\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1m)\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m]\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╰─────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m35\u001b[0m\u001b[3m attribute(s) not shown.\u001b[0m Run \u001b[1;35minspect\u001b[0m\u001b[1m(\u001b[0minspect\u001b[1m)\u001b[0m for options. \u001b[34m│\u001b[0m\n",
- "\u001b[34m╰─────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "source = [source for source in sources_1 if source.source_alias == \"xmw\"]\n",
- "inspect(source, docs=False)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "a54d8db9",
- "metadata": {},
- "source": [
- "The alias is not in the source directory in 2.2.1 and cannot be accessed.\n",
- "If one uses `get` and the alias, such as `xmw`, only meta data can be accesses but not the data itself."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 54,
- "id": "6266e87c",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "╭─────── < class 'pyuda._signal.Signal' > ───────╮ \n",
- "│ ╭──────────────────────────────────────────╮ │ \n",
- "│ │ < Signal > │ │ \n",
- "│ ╰──────────────────────────────────────────╯ │ \n",
- "│ │ \n",
- "│ data = None │ \n",
- "│ description = '' │ \n",
- "│ dims = [] │ \n",
- "│ errors = None │ \n",
- "│ label = '' │ \n",
- "│ meta = { │ \n",
- "│ 'signal_name' : b'xmw' , │ \n",
- "│ 'signal_alias' : b'xmw' , │ \n",
- "│ 'path' : b'/xmw0279.33' , │ \n",
- "│ 'filename' : b'xmw0279.33' , │ \n",
- "│ 'format' : b'NIDA' , │ \n",
- "│ 'exp_number' : 27933 , │ \n",
- "│ 'pass' : -1 , │ \n",
- "│ 'pass_date' : b'2011-12-15' │ \n",
- "│ } │ \n",
- "│ rank = 0 │ \n",
- "│ shape = () │ \n",
- "│ time = None │ \n",
- "│ time_index = None │ \n",
- "│ units = '' │ \n",
- "╰──────────────────────────────────────────────╯ \n",
- " \n"
- ],
- "text/plain": [
- "\u001b[34m╭─\u001b[0m\u001b[34m────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'pyuda._signal.Signal'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ──────\u001b[0m\u001b[34m─╮\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╭──────────────────────────────────────────╮\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mSignal\u001b[0m\u001b[1m>\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╰──────────────────────────────────────────╯\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdata\u001b[0m = \u001b[3;35mNone\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdescription\u001b[0m = \u001b[32m''\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdims\u001b[0m = \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33merrors\u001b[0m = \u001b[3;35mNone\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mlabel\u001b[0m = \u001b[32m''\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mmeta\u001b[0m = \u001b[1m{\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'signal_name'\u001b[0m: \u001b[32mb'xmw'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'signal_alias'\u001b[0m: \u001b[32mb'xmw'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'path'\u001b[0m: \u001b[32mb'/xmw0279.33'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'filename'\u001b[0m: \u001b[32mb'xmw0279.33'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'format'\u001b[0m: \u001b[32mb'NIDA'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'exp_number'\u001b[0m: \u001b[1;36m27933\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'pass'\u001b[0m: \u001b[1;36m-1\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'pass_date'\u001b[0m: \u001b[32mb'2011-12-15'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m}\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mrank\u001b[0m = \u001b[1;36m0\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mshape\u001b[0m = \u001b[1m(\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mtime\u001b[0m = \u001b[3;35mNone\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mtime_index\u001b[0m = \u001b[3;35mNone\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33munits\u001b[0m = \u001b[32m''\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m╰──────────────────────────────────────────────╯\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "data = client.get(\"xmw\", shot_1)\n",
- "inspect(data, docs=False)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "7c774999",
- "metadata": {},
- "source": [
- "### Sources & Data in *ASCII*"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "e7f1c454",
- "metadata": {},
- "source": [
- "Although, there are *ASCII* files, we cannot access their `Signal` as demonstrated below."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 56,
- "id": "fc20432e",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "╭────────────────────────────────────── < class 'list' > ──────────────────────────────────────╮ \n",
- "│ ╭────────────────────────────────────────────────────────────────────────────────────────╮ │ \n",
- "│ │ [ │ │ \n",
- "│ │ │ ListData ( │ │ \n",
- "│ │ │ │ shot =27933 , │ │ \n",
- "│ │ │ │ pass_ =-1 , │ │ \n",
- "│ │ │ │ status =1 , │ │ \n",
- "│ │ │ │ source_alias ='msf' , │ │ \n",
- "│ │ │ │ format ='ASCII' , │ │ \n",
- "│ │ │ │ filename ='msf027933.csv' , │ │ \n",
- "│ │ │ │ type ='Raw' , │ │ \n",
- "│ │ │ │ description ='MAST shot file, a .csv file containing OPC parameters from t' +59 , │ │ \n",
- "│ │ │ │ run_id =-1 │ │ \n",
- "│ │ │ ) │ │ \n",
- "│ │ ] │ │ \n",
- "│ ╰────────────────────────────────────────────────────────────────────────────────────────╯ │ \n",
- "│ │ \n",
- "│ 35 attribute(s) not shown. Run inspect ( inspect) for options. │ \n",
- "╰────────────────────────────────────────────────────────────────────────────────────────────╯ \n",
- " \n"
- ],
- "text/plain": [
- "\u001b[34m╭─\u001b[0m\u001b[34m───────────────────────────────────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'list'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ─────────────────────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╭────────────────────────────────────────────────────────────────────────────────────────╮\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m[\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1;35mListData\u001b[0m\u001b[1m(\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mshot\u001b[0m=\u001b[1;36m27933\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mpass_\u001b[0m=\u001b[1;36m-1\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mstatus\u001b[0m=\u001b[1;36m1\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33msource_alias\u001b[0m=\u001b[32m'msf'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mformat\u001b[0m=\u001b[32m'ASCII'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mfilename\u001b[0m=\u001b[32m'msf027933.csv'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'Raw'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mdescription\u001b[0m=\u001b[32m'MAST shot file, a .csv file containing OPC parameters from t'\u001b[0m+\u001b[1;36m59\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mrun_id\u001b[0m=\u001b[1;36m-1\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1m)\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m]\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╰────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m35\u001b[0m\u001b[3m attribute(s) not shown.\u001b[0m Run \u001b[1;35minspect\u001b[0m\u001b[1m(\u001b[0minspect\u001b[1m)\u001b[0m for options. \u001b[34m│\u001b[0m\n",
- "\u001b[34m╰────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "data = [source for source in sources_1 if source.source_alias == \"msf\"]\n",
- "inspect(data, docs=False)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "45d6e104",
- "metadata": {},
- "source": [
- "No data is available via UDA API."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 57,
- "id": "66f62c68",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "╭──────── < class 'pyuda._signal.Signal' > ─────────╮ \n",
- "│ ╭─────────────────────────────────────────────╮ │ \n",
- "│ │ < Signal > │ │ \n",
- "│ ╰─────────────────────────────────────────────╯ │ \n",
- "│ │ \n",
- "│ data = None │ \n",
- "│ description = '' │ \n",
- "│ dims = [] │ \n",
- "│ errors = None │ \n",
- "│ label = '' │ \n",
- "│ meta = { │ \n",
- "│ 'signal_name' : b'msf' , │ \n",
- "│ 'signal_alias' : b'msf' , │ \n",
- "│ 'path' : b'/msf027933.csv' , │ \n",
- "│ 'filename' : b'msf027933.csv' , │ \n",
- "│ 'format' : b'ASCII' , │ \n",
- "│ 'exp_number' : 27933 , │ \n",
- "│ 'pass' : -1 , │ \n",
- "│ 'pass_date' : b'2011-12-15' │ \n",
- "│ } │ \n",
- "│ rank = 0 │ \n",
- "│ shape = () │ \n",
- "│ time = None │ \n",
- "│ time_index = None │ \n",
- "│ units = '' │ \n",
- "╰─────────────────────────────────────────────────╯ \n",
- " \n"
- ],
- "text/plain": [
- "\u001b[34m╭─\u001b[0m\u001b[34m─────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'pyuda._signal.Signal'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ────────\u001b[0m\u001b[34m─╮\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╭─────────────────────────────────────────────╮\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mSignal\u001b[0m\u001b[1m>\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╰─────────────────────────────────────────────╯\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdata\u001b[0m = \u001b[3;35mNone\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdescription\u001b[0m = \u001b[32m''\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdims\u001b[0m = \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33merrors\u001b[0m = \u001b[3;35mNone\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mlabel\u001b[0m = \u001b[32m''\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mmeta\u001b[0m = \u001b[1m{\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'signal_name'\u001b[0m: \u001b[32mb'msf'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'signal_alias'\u001b[0m: \u001b[32mb'msf'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'path'\u001b[0m: \u001b[32mb'/msf027933.csv'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'filename'\u001b[0m: \u001b[32mb'msf027933.csv'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'format'\u001b[0m: \u001b[32mb'ASCII'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'exp_number'\u001b[0m: \u001b[1;36m27933\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'pass'\u001b[0m: \u001b[1;36m-1\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'pass_date'\u001b[0m: \u001b[32mb'2011-12-15'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m}\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mrank\u001b[0m = \u001b[1;36m0\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mshape\u001b[0m = \u001b[1m(\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mtime\u001b[0m = \u001b[3;35mNone\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mtime_index\u001b[0m = \u001b[3;35mNone\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33munits\u001b[0m = \u001b[32m''\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m╰─────────────────────────────────────────────────╯\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "data = client.get(\"msf\", shot_1)\n",
- "inspect(data, docs=False)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "43a11ad8",
- "metadata": {},
- "source": [
- "### Sources in *BINARY*"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "6bad8782",
- "metadata": {},
- "source": [
- "*BINARY* files are not accessible via UDA API. \n",
- "\n",
- "Here, we inspect sources of `shot_2` as the `shot_1` does not have any *BINARY* data in it."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 60,
- "id": "defb1f8e",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "╭────────────────────────────────────── < class 'list' > ──────────────────────────────────────╮ \n",
- "│ ╭────────────────────────────────────────────────────────────────────────────────────────╮ │ \n",
- "│ │ [ │ │ \n",
- "│ │ │ ListData ( │ │ \n",
- "│ │ │ │ shot =12000 , │ │ \n",
- "│ │ │ │ pass_ =0 , │ │ \n",
- "│ │ │ │ status =0 , │ │ \n",
- "│ │ │ │ source_alias ='pcs' , │ │ \n",
- "│ │ │ │ format ='BINARY' , │ │ \n",
- "│ │ │ │ filename ='pcs0120.00' , │ │ \n",
- "│ │ │ │ type ='Raw' , │ │ \n",
- "│ │ │ │ description ='Plasma control system shot file, and is in the same format a' +83 , │ │ \n",
- "│ │ │ │ run_id =-1 │ │ \n",
- "│ │ │ ) , │ │ \n",
- "│ │ │ ListData ( │ │ \n",
- "│ │ │ │ shot =12000 , │ │ \n",
- "│ │ │ │ pass_ =-1 , │ │ \n",
- "│ │ │ │ status =1 , │ │ \n",
- "│ │ │ │ source_alias ='pcs' , │ │ \n",
- "│ │ │ │ format ='BINARY' , │ │ \n",
- "│ │ │ │ filename ='pcs0120.00' , │ │ \n",
- "│ │ │ │ type ='Raw' , │ │ \n",
- "│ │ │ │ description ='Plasma control system shot file, and is in the same format a' +83 , │ │ \n",
- "│ │ │ │ run_id =-1 │ │ \n",
- "│ │ │ ) │ │ \n",
- "│ │ ] │ │ \n",
- "│ ╰────────────────────────────────────────────────────────────────────────────────────────╯ │ \n",
- "│ │ \n",
- "│ 35 attribute(s) not shown. Run inspect ( inspect) for options. │ \n",
- "╰────────────────────────────────────────────────────────────────────────────────────────────╯ \n",
- " \n"
- ],
- "text/plain": [
- "\u001b[34m╭─\u001b[0m\u001b[34m───────────────────────────────────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'list'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ─────────────────────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╭────────────────────────────────────────────────────────────────────────────────────────╮\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m[\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1;35mListData\u001b[0m\u001b[1m(\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mshot\u001b[0m=\u001b[1;36m12000\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mpass_\u001b[0m=\u001b[1;36m0\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mstatus\u001b[0m=\u001b[1;36m0\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33msource_alias\u001b[0m=\u001b[32m'pcs'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mformat\u001b[0m=\u001b[32m'BINARY'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mfilename\u001b[0m=\u001b[32m'pcs0120.00'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'Raw'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mdescription\u001b[0m=\u001b[32m'Plasma control system shot file, and is in the same format a'\u001b[0m+\u001b[1;36m83\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mrun_id\u001b[0m=\u001b[1;36m-1\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1;35mListData\u001b[0m\u001b[1m(\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mshot\u001b[0m=\u001b[1;36m12000\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mpass_\u001b[0m=\u001b[1;36m-1\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mstatus\u001b[0m=\u001b[1;36m1\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33msource_alias\u001b[0m=\u001b[32m'pcs'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mformat\u001b[0m=\u001b[32m'BINARY'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mfilename\u001b[0m=\u001b[32m'pcs0120.00'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'Raw'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mdescription\u001b[0m=\u001b[32m'Plasma control system shot file, and is in the same format a'\u001b[0m+\u001b[1;36m83\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mrun_id\u001b[0m=\u001b[1;36m-1\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1m)\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m]\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╰────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m35\u001b[0m\u001b[3m attribute(s) not shown.\u001b[0m Run \u001b[1;35minspect\u001b[0m\u001b[1m(\u001b[0minspect\u001b[1m)\u001b[0m for options. \u001b[34m│\u001b[0m\n",
- "\u001b[34m╰────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "data = [source for source in sources_2 if source.source_alias == \"pcs\"]\n",
- "# rts,pcs,rcb,rbm,rcc\n",
- "inspect(data, docs=False)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "1b2d66c4",
- "metadata": {},
- "source": [
- "This alias ('pcs') contains two `SOURCES` associated with it, which seems to be an error."
- ]
- },
- {
- "cell_type": "markdown",
- "id": "11dc0a92",
- "metadata": {},
- "source": [
- "### Data in *ASCII* format."
- ]
- },
- {
- "cell_type": "markdown",
- "id": "aa9202b9",
- "metadata": {},
- "source": [
- "Above was demonstrated that currently only meta data can be retrieved using UDA API for *BINARY* and *NIDA* types, the same holds for *ASCII*."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 61,
- "id": "cec7819e",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "╭─────── < class 'pyuda._signal.Signal' > ───────╮ \n",
- "│ ╭──────────────────────────────────────────╮ │ \n",
- "│ │ < Signal > │ │ \n",
- "│ ╰──────────────────────────────────────────╯ │ \n",
- "│ │ \n",
- "│ data = None │ \n",
- "│ description = '' │ \n",
- "│ dims = [] │ \n",
- "│ errors = None │ \n",
- "│ label = '' │ \n",
- "│ meta = { │ \n",
- "│ 'signal_name' : b'pcs' , │ \n",
- "│ 'signal_alias' : b'pcs' , │ \n",
- "│ 'path' : b'/pcs0120.00' , │ \n",
- "│ 'filename' : b'pcs0120.00' , │ \n",
- "│ 'format' : b'BINARY' , │ \n",
- "│ 'exp_number' : 12000 , │ \n",
- "│ 'pass' : 0 , │ \n",
- "│ 'pass_date' : b'1980-02-10' │ \n",
- "│ } │ \n",
- "│ rank = 0 │ \n",
- "│ shape = () │ \n",
- "│ time = None │ \n",
- "│ time_index = None │ \n",
- "│ units = '' │ \n",
- "╰──────────────────────────────────────────────╯ \n",
- " \n"
- ],
- "text/plain": [
- "\u001b[34m╭─\u001b[0m\u001b[34m────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'pyuda._signal.Signal'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ──────\u001b[0m\u001b[34m─╮\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╭──────────────────────────────────────────╮\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mSignal\u001b[0m\u001b[1m>\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╰──────────────────────────────────────────╯\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdata\u001b[0m = \u001b[3;35mNone\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdescription\u001b[0m = \u001b[32m''\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdims\u001b[0m = \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33merrors\u001b[0m = \u001b[3;35mNone\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mlabel\u001b[0m = \u001b[32m''\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mmeta\u001b[0m = \u001b[1m{\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'signal_name'\u001b[0m: \u001b[32mb'pcs'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'signal_alias'\u001b[0m: \u001b[32mb'pcs'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'path'\u001b[0m: \u001b[32mb'/pcs0120.00'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'filename'\u001b[0m: \u001b[32mb'pcs0120.00'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'format'\u001b[0m: \u001b[32mb'BINARY'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'exp_number'\u001b[0m: \u001b[1;36m12000\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'pass'\u001b[0m: \u001b[1;36m0\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'pass_date'\u001b[0m: \u001b[32mb'1980-02-10'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m}\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mrank\u001b[0m = \u001b[1;36m0\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mshape\u001b[0m = \u001b[1m(\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mtime\u001b[0m = \u001b[3;35mNone\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mtime_index\u001b[0m = \u001b[3;35mNone\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33munits\u001b[0m = \u001b[32m''\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m╰──────────────────────────────────────────────╯\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "data = client.get(\"pcs\", shot_2)\n",
- "inspect(data, docs=False)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "d63bfd9f",
- "metadata": {},
- "source": [
- "## **_Analysed_**"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "e084b9b9",
- "metadata": {},
- "source": [
- "As discussed in Sec. [3.1.1](#source_type_format_and_alias), **_Analysed_** sources mainly use *IDA3* format. We found some expections, such as *ASCII* and *NIDA* are used in in shot 8000-8200, and *CDF* is used in shot 23862. \n",
- "\n",
- "It was demonstrated previously, that from these data formats only *IDA3* currently can be accessed. Data retrieval is the same as in [3.2.2](#Sources-&-Data-in-IDA3-format)."
- ]
- },
- {
- "cell_type": "markdown",
- "id": "fc85d137",
- "metadata": {},
- "source": [
- "### `SOURCES` & Data in *IDA3*"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 62,
- "id": "8b18d157",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "╭─────────────────────── < class 'list' > ───────────────────────╮ \n",
- "│ ╭──────────────────────────────────────────────────────────╮ │ \n",
- "│ │ [ │ │ \n",
- "│ │ │ ListData ( │ │ \n",
- "│ │ │ │ shot =27933 , │ │ \n",
- "│ │ │ │ pass_ =0 , │ │ \n",
- "│ │ │ │ status =1 , │ │ \n",
- "│ │ │ │ source_alias ='ams' , │ │ \n",
- "│ │ │ │ format ='IDA3' , │ │ \n",
- "│ │ │ │ filename ='ams0279.33' , │ │ \n",
- "│ │ │ │ type ='Analysed' , │ │ \n",
- "│ │ │ │ description ='Multi-channel MSE' , │ │ \n",
- "│ │ │ │ run_id =-1 │ │ \n",
- "│ │ │ ) │ │ \n",
- "│ │ ] │ │ \n",
- "│ ╰──────────────────────────────────────────────────────────╯ │ \n",
- "│ │ \n",
- "│ 35 attribute(s) not shown. Run inspect ( inspect) for options. │ \n",
- "╰──────────────────────────────────────────────────────────────╯ \n",
- " \n"
- ],
- "text/plain": [
- "\u001b[34m╭─\u001b[0m\u001b[34m────────────────────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'list'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ──────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╭──────────────────────────────────────────────────────────╮\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m[\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1;35mListData\u001b[0m\u001b[1m(\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mshot\u001b[0m=\u001b[1;36m27933\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mpass_\u001b[0m=\u001b[1;36m0\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mstatus\u001b[0m=\u001b[1;36m1\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33msource_alias\u001b[0m=\u001b[32m'ams'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mformat\u001b[0m=\u001b[32m'IDA3'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mfilename\u001b[0m=\u001b[32m'ams0279.33'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'Analysed'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mdescription\u001b[0m=\u001b[32m'Multi-channel MSE'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mrun_id\u001b[0m=\u001b[1;36m-1\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1m)\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m]\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╰──────────────────────────────────────────────────────────╯\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m35\u001b[0m\u001b[3m attribute(s) not shown.\u001b[0m Run \u001b[1;35minspect\u001b[0m\u001b[1m(\u001b[0minspect\u001b[1m)\u001b[0m for options. \u001b[34m│\u001b[0m\n",
- "\u001b[34m╰──────────────────────────────────────────────────────────────╯\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "data = [source for source in sources_1 if source.source_alias == \"ams\"]\n",
- "inspect(data, docs=False)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "9a656695",
- "metadata": {},
- "source": [
- "The method of fetching **_Analysed_** data is same as discussed for **_Raw_**. We use `SIGNAL` names (see the `alias_signal_dict` in Sec. [3.1.2.2](#group_signal_name_as_alias)) and shot number to fetch the data."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 63,
- "id": "2fb950ab",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "╭──────────────────────────── < class 'pyuda._signal.Signal' > ────────────────────────────╮ \n",
- "│ ╭────────────────────────────────────────────────────────────────────────────────────╮ │ \n",
- "│ │ < Signal: > │ │ \n",
- "│ ╰────────────────────────────────────────────────────────────────────────────────────╯ │ \n",
- "│ │ \n",
- "│ data = array ([[ 0 ., 2 ., 5 ., 6 ., 7 ., 8 ., 9 ., 10 ., 11 ., 12 ., 13 ., 14 ., 15 ., │ \n",
- "│ 23 ., 16 ., 17 ., 18 ., 20 ., 21 ., 22 ., 24 ., 25 ., 27 ., 30 ., 28 ., 29 ., │ \n",
- "│ 31 ., 32 ., 33 ., 35 ., 38 ., 37 ., 39 ., 40 ., 41 .]] , dtype =float32 ) │ \n",
- "│ description = '' │ \n",
- "│ dims = [< Dim: Time > , < Dim: >] │ \n",
- "│ errors = array ([[ 0 ., 0 ., 0 ., 0 ., 0 ., 0 ., 0 ., 0 ., 0 ., 0 ., 0 ., 0 ., 0 ., 0 ., 0 ., 0 ., │ \n",
- "│ 0 ., 0 ., 0 ., 0 ., 0 ., 0 ., 0 ., 0 ., 0 ., 0 ., 0 ., 0 ., 0 ., 0 ., 0 ., 0 ., │ \n",
- "│ 0 ., 0 ., 0 .]] , dtype =float32 ) │ \n",
- "│ label = ' ' │ \n",
- "│ meta = { │ \n",
- "│ 'signal_name' : b'AMS_CH' , │ \n",
- "│ 'signal_alias' : b'AMS_CH' , │ \n",
- "│ 'path' : b'' , │ \n",
- "│ 'filename' : b'ams0279.33' , │ \n",
- "│ 'format' : b'IDA3' , │ \n",
- "│ 'exp_number' : 27933 , │ \n",
- "│ 'pass' : 0 , │ \n",
- "│ 'pass_date' : b'2011-12-15' │ \n",
- "│ } │ \n",
- "│ rank = 2 │ \n",
- "│ shape = ( 1 , 35 ) │ \n",
- "│ time = < Dim: Time > │ \n",
- "│ time_index = 0 │ \n",
- "│ units = ' ' │ \n",
- "╰────────────────────────────────────────────────────────────────────────────────────────╯ \n",
- " \n"
- ],
- "text/plain": [
- "\u001b[34m╭─\u001b[0m\u001b[34m─────────────────────────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'pyuda._signal.Signal'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ───────────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╭────────────────────────────────────────────────────────────────────────────────────╮\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mSignal:\u001b[0m\u001b[39m \u001b[0m\u001b[1m>\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╰────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdata\u001b[0m = \u001b[1;35marray\u001b[0m\u001b[1m(\u001b[0m\u001b[1m[\u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m0\u001b[0m., \u001b[1;36m2\u001b[0m., \u001b[1;36m5\u001b[0m., \u001b[1;36m6\u001b[0m., \u001b[1;36m7\u001b[0m., \u001b[1;36m8\u001b[0m., \u001b[1;36m9\u001b[0m., \u001b[1;36m10\u001b[0m., \u001b[1;36m11\u001b[0m., \u001b[1;36m12\u001b[0m., \u001b[1;36m13\u001b[0m., \u001b[1;36m14\u001b[0m., \u001b[1;36m15\u001b[0m., \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m23\u001b[0m., \u001b[1;36m16\u001b[0m., \u001b[1;36m17\u001b[0m., \u001b[1;36m18\u001b[0m., \u001b[1;36m20\u001b[0m., \u001b[1;36m21\u001b[0m., \u001b[1;36m22\u001b[0m., \u001b[1;36m24\u001b[0m., \u001b[1;36m25\u001b[0m., \u001b[1;36m27\u001b[0m., \u001b[1;36m30\u001b[0m., \u001b[1;36m28\u001b[0m., \u001b[1;36m29\u001b[0m., \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m31\u001b[0m., \u001b[1;36m32\u001b[0m., \u001b[1;36m33\u001b[0m., \u001b[1;36m35\u001b[0m., \u001b[1;36m38\u001b[0m., \u001b[1;36m37\u001b[0m., \u001b[1;36m39\u001b[0m., \u001b[1;36m40\u001b[0m., \u001b[1;36m41\u001b[0m.\u001b[1m]\u001b[0m\u001b[1m]\u001b[0m, \u001b[33mdtype\u001b[0m=\u001b[35mfloat32\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdescription\u001b[0m = \u001b[32m''\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdims\u001b[0m = \u001b[1m[\u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mDim:\u001b[0m\u001b[39m Time\u001b[0m\u001b[1m>\u001b[0m, \u001b[1m<\u001b[0m\u001b[1;95mDim:\u001b[0m\u001b[39m \u001b[0m\u001b[1m>\u001b[0m\u001b[1m]\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33merrors\u001b[0m = \u001b[1;35marray\u001b[0m\u001b[1m(\u001b[0m\u001b[1m[\u001b[0m\u001b[1m[\u001b[0m\u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m.\u001b[1m]\u001b[0m\u001b[1m]\u001b[0m, \u001b[33mdtype\u001b[0m=\u001b[35mfloat32\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mlabel\u001b[0m = \u001b[32m' '\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mmeta\u001b[0m = \u001b[1m{\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'signal_name'\u001b[0m: \u001b[32mb'AMS_CH'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'signal_alias'\u001b[0m: \u001b[32mb'AMS_CH'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'path'\u001b[0m: \u001b[32mb''\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'filename'\u001b[0m: \u001b[32mb'ams0279.33'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'format'\u001b[0m: \u001b[32mb'IDA3'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'exp_number'\u001b[0m: \u001b[1;36m27933\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'pass'\u001b[0m: \u001b[1;36m0\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'pass_date'\u001b[0m: \u001b[32mb'2011-12-15'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m}\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mrank\u001b[0m = \u001b[1;36m2\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mshape\u001b[0m = \u001b[1m(\u001b[0m\u001b[1;36m1\u001b[0m, \u001b[1;36m35\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mtime\u001b[0m = \u001b[1m<\u001b[0m\u001b[1;95mDim:\u001b[0m\u001b[39m Time\u001b[0m\u001b[1m>\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mtime_index\u001b[0m = \u001b[1;36m0\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33munits\u001b[0m = \u001b[32m' '\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m╰────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "data = client.get(\"AMS_CH\", shot_1)\n",
- "inspect(data, docs=False)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "d69fa368",
- "metadata": {},
- "source": [
- "## **_Image_**"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "1addfebb",
- "metadata": {},
- "source": [
- "**_Image_**(s) use *IPX*, *NIDA*, *JPG*, *TIF* format. *JPG* and *TIF* were used in earlier shots (until 12000). After that, *IPX* and *NIDA* were used. *JPG* stopped being used around 17000, while *TIF* can be seen throughout the experiments. \n",
- "\n",
- "The *IPX* format **_Image_** type sources are stored in the `Video` object. The other formats are not currently accessible by UDA. The UDA API for reading image or video data can be found in [this doc](https://users.mastu.ukaea.uk/data-access-and-tools/uda/ipx)."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 65,
- "id": "36d0d773-42b4-48fe-9943-412e68be04e0",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " type \n",
- " format \n",
- " aliases \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 \n",
- " Image \n",
- " IPX \n",
- " {rir, rda, rgb, rbb, rba, rdb, rit, rbc} \n",
- " \n",
- " \n",
- " 1 \n",
- " Image \n",
- " TIF \n",
- " {rzz, rbe} \n",
- " \n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " type format aliases\n",
- "0 Image IPX {rir, rda, rgb, rbb, rba, rdb, rit, rbc}\n",
- "1 Image TIF {rzz, rbe}"
- ]
- },
- "execution_count": 65,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "df_1.loc[df_1[\"type\"] == \"Image\"].groupby([\"type\", \"format\"], as_index=False).agg(\n",
- " aliases=(\"source_alias\", lambda x: set(x))\n",
- ")"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "87877088",
- "metadata": {},
- "source": [
- "### **_Image_** `SOURCE` & Data"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 66,
- "id": "c7e71257",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "╭─────────────────────── < class 'list' > ───────────────────────╮ \n",
- "│ ╭──────────────────────────────────────────────────────────╮ │ \n",
- "│ │ [ │ │ \n",
- "│ │ │ ListData ( │ │ \n",
- "│ │ │ │ shot =27933 , │ │ \n",
- "│ │ │ │ pass_ =-1 , │ │ \n",
- "│ │ │ │ status =1 , │ │ \n",
- "│ │ │ │ source_alias ='rba' , │ │ \n",
- "│ │ │ │ format ='IPX' , │ │ \n",
- "│ │ │ │ filename ='rba027933.ipx' , │ │ \n",
- "│ │ │ │ type ='Image' , │ │ \n",
- "│ │ │ │ description ='Photron bullet camera A' , │ │ \n",
- "│ │ │ │ run_id =-1 │ │ \n",
- "│ │ │ ) │ │ \n",
- "│ │ ] │ │ \n",
- "│ ╰──────────────────────────────────────────────────────────╯ │ \n",
- "│ │ \n",
- "│ 35 attribute(s) not shown. Run inspect ( inspect) for options. │ \n",
- "╰──────────────────────────────────────────────────────────────╯ \n",
- " \n"
- ],
- "text/plain": [
- "\u001b[34m╭─\u001b[0m\u001b[34m────────────────────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'list'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ──────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╭──────────────────────────────────────────────────────────╮\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m[\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1;35mListData\u001b[0m\u001b[1m(\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mshot\u001b[0m=\u001b[1;36m27933\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mpass_\u001b[0m=\u001b[1;36m-1\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mstatus\u001b[0m=\u001b[1;36m1\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33msource_alias\u001b[0m=\u001b[32m'rba'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mformat\u001b[0m=\u001b[32m'IPX'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mfilename\u001b[0m=\u001b[32m'rba027933.ipx'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'Image'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mdescription\u001b[0m=\u001b[32m'Photron bullet camera A'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mrun_id\u001b[0m=\u001b[1;36m-1\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1m)\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m]\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╰──────────────────────────────────────────────────────────╯\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m35\u001b[0m\u001b[3m attribute(s) not shown.\u001b[0m Run \u001b[1;35minspect\u001b[0m\u001b[1m(\u001b[0minspect\u001b[1m)\u001b[0m for options. \u001b[34m│\u001b[0m\n",
- "\u001b[34m╰──────────────────────────────────────────────────────────────╯\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "data = [source for source in sources_1 if source.source_alias == \"rba\"]\n",
- "inspect(data, docs=False)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "60ded376",
- "metadata": {},
- "source": [
- "**_Image_** type `SOURCES` don't have `SIGNAL` names and can only be accessed using `SOURCE` alias as an argument. In order to read the *IPX* format we use the `get_images` function, and the `get` function for reading the other image formats. "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 67,
- "id": "ee509775",
- "metadata": {
- "tags": []
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "╭────────────────────────── < class 'pyuda._video.Video' > ───────────────────────────╮ \n",
- "│ ╭───────────────────────────────────────────────────────────────────────────────╮ │ \n",
- "│ │ < pyuda._video.Video object at 0x7f8eb57cd860 > │ │ \n",
- "│ ╰───────────────────────────────────────────────────────────────────────────────╯ │ \n",
- "│ │ \n",
- "│ board_temp = 0.0 │ \n",
- "│ bottom = 952 │ \n",
- "│ camera = '' │ \n",
- "│ ccd_temp = 0.0 │ \n",
- "│ codex = 'JP2' │ \n",
- "│ date_time = '2011-12-15T16:00:12Z' │ \n",
- "│ depth = 8 │ \n",
- "│ exposure = 1667.0 │ \n",
- "│ file_format = 'IPX-1' │ \n",
- "│ filter = '' │ \n",
- "│ frame_times = array ([ 0.001673 , 0.021673 , 0.041673 , 0.061673 , 0.081673 , 0.101673 , │ \n",
- "│ 0.103673 , 0.105673 , 0.107673 , 0.109673 , 0.111673 , 0.113673 , │ \n",
- "│ 0.115673 , 0.117673 , 0.119673 , 0.121673 , 0.123673 , 0.125673 , │ \n",
- "│ 0.127673 , 0.129673 , 0.131673 , 0.133673 , 0.135673 , 0.137673 , │ \n",
- "│ 0.139673 , 0.141673 , 0.143673 , 0.145673 , 0.147673 , 0.149673 , │ \n",
- "│ 0.151673 , 0.153673 , 0.155673 , 0.157673 , 0.159673 , 0.161673 , │ \n",
- "│ 0.163673 , 0.165673 , 0.167673 , 0.169673 , 0.171673 , 0.173673 , │ \n",
- "│ 0.175673 , 0.177673 , 0.179673 , 0.181673 , 0.183673 , 0.185673 , │ \n",
- "│ 0.187673 , 0.189673 , 0.191673 , 0.193673 , 0.195673 , 0.197673 , │ \n",
- "│ 0.199673 , 0.201673 , 0.203673 , 0.205673 , 0.207673 , 0.209673 , │ \n",
- "│ 0.211673 , 0.213673 , 0.215673 , 0.217673 , 0.219673 , 0.221673 , │ \n",
- "│ 0.223673 , 0.225673 , 0.227673 , 0.229673 , 0.231673 , 0.233673 , │ \n",
- "│ 0.235673 , 0.237673 , 0.239673 , 0.241673 , 0.243673 , 0.245673 , │ \n",
- "│ 0.247673 , 0.249673 , 0.251673 , 0.253673 , 0.255673 , 0.257673 , │ \n",
- "│ 0.259673 , 0.261673 , 0.263673 , 0.265673 , 0.267673 , 0.269673 , │ \n",
- "│ 0.271673 , 0.273673 , 0.275673 , 0.277673 , 0.279673 , 0.281673 , │ \n",
- "│ 0.283673 , 0.285673 , 0.287673 , 0.289673 , 0.291673 , 0.293673 , │ \n",
- "│ 0.295673 , 0.297673 , 0.299673 , 0.301673 , 0.303673 , 0.305673 , │ \n",
- "│ 0.307673 , 0.309673 , 0.311673 , 0.313673 , 0.315673 , 0.317673 , │ \n",
- "│ 0.319673 , 0.321673 , 0.323673 , 0.325673 , 0.327673 , 0.329673 , │ \n",
- "│ 0.331673 , 0.333673 , 0.335673 , 0.337673 , 0.339673 , 0.341673 , │ \n",
- "│ 0.343673 , 0.345673 , 0.347673 , 0.349673 , 0.351673 , 0.353673 , │ \n",
- "│ 0.355673 , 0.357673 , 0.359673 , 0.361673 , 0.363673 , 0.365673 , │ \n",
- "│ 0.367673 , 0.369673 , 0.371673 , 0.373673 , 0.375673 , 0.377673 , │ \n",
- "│ 0.379673 , 0.381673 , 0.383673 , 0.385673 , 0.387673 , 0.389673 ]) │ \n",
- "│ frames = [ │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadce9710 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadce96a0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54400 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54438 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54470 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc544a8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc544e0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54518 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54550 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54588 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc545c0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc545f8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54630 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54668 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc546a0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc546d8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54710 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54748 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54780 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc547b8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc547f0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54828 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54860 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54898 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc548d0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54908 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54940 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54978 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc549b0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc549e8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54a20 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54a58 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54a90 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54ac8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54b00 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54b38 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54b70 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54ba8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54be0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54c18 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54c50 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54c88 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54cc0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54cf8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54d30 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54d68 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54da0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54dd8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54e10 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54e48 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54e80 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54eb8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54ef0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54f28 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54f60 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54f98 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc54fd0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a048 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a080 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a0b8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a0f0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a128 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a160 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a198 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a1d0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a208 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a240 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a278 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a2b0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a2e8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a320 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a358 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a390 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a3c8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a400 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a438 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a470 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a4a8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a4e0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a518 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a550 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a588 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a5c0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a5f8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a630 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a668 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a6a0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a6d8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a710 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a748 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a780 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a7b8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a7f0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a828 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a860 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a898 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a8d0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a908 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a940 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a978 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a9b0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6a9e8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6aa20 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6aa58 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6aa90 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6aac8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6ab00 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6ab38 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6ab70 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6aba8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6abe0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6ac18 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6ac50 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6ac88 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6acc0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6acf8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6ad30 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6ad68 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6ada0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6add8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6ae10 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6ae48 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6ae80 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6aeb8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6aef0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6af28 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6af60 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6af98 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc6afd0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc67048 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc67080 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc670b8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc670f0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc67128 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc67160 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc67198 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc671d0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc67208 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc67240 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc67278 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc672b0 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc672e8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc67320 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc67358 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc67390 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc673c8 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc67400 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc67438 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc67470 > , │ \n",
- "│ < pyuda._video.Frame object at 0x7f8eadc674a8 > │ \n",
- "│ ] │ \n",
- "│ gain = array ([ 2 ., 0 .]) │ \n",
- "│ hbin = 0 │ \n",
- "│ height = 704 │ \n",
- "│ is_color = 0 │ \n",
- "│ left = 1 │ \n",
- "│ lens = '' │ \n",
- "│ n_frames = 150 │ \n",
- "│ offset = array ([ 0 ., 0 .]) │ \n",
- "│ orientation = 0 │ \n",
- "│ pre_exp = 0.0 │ \n",
- "│ right = 768 │ \n",
- "│ shot = 27933 │ \n",
- "│ strobe = 0 │ \n",
- "│ taps = 0 │ \n",
- "│ top = 249 │ \n",
- "│ trigger = -0.10000000149011612 │ \n",
- "│ vbin = 0 │ \n",
- "│ view = 'HL07 + 25mm lens + HeII 468nm filter' │ \n",
- "│ width = 768 │ \n",
- "╰───────────────────────────────────────────────────────────────────────────────────╯ \n",
- " \n"
- ],
- "text/plain": [
- "\u001b[34m╭─\u001b[0m\u001b[34m───────────────────────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'pyuda._video.Video'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ──────────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╭───────────────────────────────────────────────────────────────────────────────╮\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Video\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eb57cd860\u001b[0m\u001b[1m>\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╰───────────────────────────────────────────────────────────────────────────────╯\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mboard_temp\u001b[0m = \u001b[1;36m0.0\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mbottom\u001b[0m = \u001b[1;36m952\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mcamera\u001b[0m = \u001b[32m''\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mccd_temp\u001b[0m = \u001b[1;36m0.0\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mcodex\u001b[0m = \u001b[32m'JP2'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdate_time\u001b[0m = \u001b[32m'2011-12-15T16:00:12Z'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdepth\u001b[0m = \u001b[1;36m8\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mexposure\u001b[0m = \u001b[1;36m1667.0\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mfile_format\u001b[0m = \u001b[32m'IPX-1'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mfilter\u001b[0m = \u001b[32m''\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mframe_times\u001b[0m = \u001b[1;35marray\u001b[0m\u001b[1m(\u001b[0m\u001b[1m[\u001b[0m\u001b[1;36m0.001673\u001b[0m, \u001b[1;36m0.021673\u001b[0m, \u001b[1;36m0.041673\u001b[0m, \u001b[1;36m0.061673\u001b[0m, \u001b[1;36m0.081673\u001b[0m, \u001b[1;36m0.101673\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0.103673\u001b[0m, \u001b[1;36m0.105673\u001b[0m, \u001b[1;36m0.107673\u001b[0m, \u001b[1;36m0.109673\u001b[0m, \u001b[1;36m0.111673\u001b[0m, \u001b[1;36m0.113673\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0.115673\u001b[0m, \u001b[1;36m0.117673\u001b[0m, \u001b[1;36m0.119673\u001b[0m, \u001b[1;36m0.121673\u001b[0m, \u001b[1;36m0.123673\u001b[0m, \u001b[1;36m0.125673\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0.127673\u001b[0m, \u001b[1;36m0.129673\u001b[0m, \u001b[1;36m0.131673\u001b[0m, \u001b[1;36m0.133673\u001b[0m, \u001b[1;36m0.135673\u001b[0m, \u001b[1;36m0.137673\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0.139673\u001b[0m, \u001b[1;36m0.141673\u001b[0m, \u001b[1;36m0.143673\u001b[0m, \u001b[1;36m0.145673\u001b[0m, \u001b[1;36m0.147673\u001b[0m, \u001b[1;36m0.149673\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0.151673\u001b[0m, \u001b[1;36m0.153673\u001b[0m, \u001b[1;36m0.155673\u001b[0m, \u001b[1;36m0.157673\u001b[0m, \u001b[1;36m0.159673\u001b[0m, \u001b[1;36m0.161673\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0.163673\u001b[0m, \u001b[1;36m0.165673\u001b[0m, \u001b[1;36m0.167673\u001b[0m, \u001b[1;36m0.169673\u001b[0m, \u001b[1;36m0.171673\u001b[0m, \u001b[1;36m0.173673\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0.175673\u001b[0m, \u001b[1;36m0.177673\u001b[0m, \u001b[1;36m0.179673\u001b[0m, \u001b[1;36m0.181673\u001b[0m, \u001b[1;36m0.183673\u001b[0m, \u001b[1;36m0.185673\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0.187673\u001b[0m, \u001b[1;36m0.189673\u001b[0m, \u001b[1;36m0.191673\u001b[0m, \u001b[1;36m0.193673\u001b[0m, \u001b[1;36m0.195673\u001b[0m, \u001b[1;36m0.197673\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0.199673\u001b[0m, \u001b[1;36m0.201673\u001b[0m, \u001b[1;36m0.203673\u001b[0m, \u001b[1;36m0.205673\u001b[0m, \u001b[1;36m0.207673\u001b[0m, \u001b[1;36m0.209673\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0.211673\u001b[0m, \u001b[1;36m0.213673\u001b[0m, \u001b[1;36m0.215673\u001b[0m, \u001b[1;36m0.217673\u001b[0m, \u001b[1;36m0.219673\u001b[0m, \u001b[1;36m0.221673\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0.223673\u001b[0m, \u001b[1;36m0.225673\u001b[0m, \u001b[1;36m0.227673\u001b[0m, \u001b[1;36m0.229673\u001b[0m, \u001b[1;36m0.231673\u001b[0m, \u001b[1;36m0.233673\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0.235673\u001b[0m, \u001b[1;36m0.237673\u001b[0m, \u001b[1;36m0.239673\u001b[0m, \u001b[1;36m0.241673\u001b[0m, \u001b[1;36m0.243673\u001b[0m, \u001b[1;36m0.245673\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0.247673\u001b[0m, \u001b[1;36m0.249673\u001b[0m, \u001b[1;36m0.251673\u001b[0m, \u001b[1;36m0.253673\u001b[0m, \u001b[1;36m0.255673\u001b[0m, \u001b[1;36m0.257673\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0.259673\u001b[0m, \u001b[1;36m0.261673\u001b[0m, \u001b[1;36m0.263673\u001b[0m, \u001b[1;36m0.265673\u001b[0m, \u001b[1;36m0.267673\u001b[0m, \u001b[1;36m0.269673\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0.271673\u001b[0m, \u001b[1;36m0.273673\u001b[0m, \u001b[1;36m0.275673\u001b[0m, \u001b[1;36m0.277673\u001b[0m, \u001b[1;36m0.279673\u001b[0m, \u001b[1;36m0.281673\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0.283673\u001b[0m, \u001b[1;36m0.285673\u001b[0m, \u001b[1;36m0.287673\u001b[0m, \u001b[1;36m0.289673\u001b[0m, \u001b[1;36m0.291673\u001b[0m, \u001b[1;36m0.293673\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0.295673\u001b[0m, \u001b[1;36m0.297673\u001b[0m, \u001b[1;36m0.299673\u001b[0m, \u001b[1;36m0.301673\u001b[0m, \u001b[1;36m0.303673\u001b[0m, \u001b[1;36m0.305673\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0.307673\u001b[0m, \u001b[1;36m0.309673\u001b[0m, \u001b[1;36m0.311673\u001b[0m, \u001b[1;36m0.313673\u001b[0m, \u001b[1;36m0.315673\u001b[0m, \u001b[1;36m0.317673\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0.319673\u001b[0m, \u001b[1;36m0.321673\u001b[0m, \u001b[1;36m0.323673\u001b[0m, \u001b[1;36m0.325673\u001b[0m, \u001b[1;36m0.327673\u001b[0m, \u001b[1;36m0.329673\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0.331673\u001b[0m, \u001b[1;36m0.333673\u001b[0m, \u001b[1;36m0.335673\u001b[0m, \u001b[1;36m0.337673\u001b[0m, \u001b[1;36m0.339673\u001b[0m, \u001b[1;36m0.341673\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0.343673\u001b[0m, \u001b[1;36m0.345673\u001b[0m, \u001b[1;36m0.347673\u001b[0m, \u001b[1;36m0.349673\u001b[0m, \u001b[1;36m0.351673\u001b[0m, \u001b[1;36m0.353673\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0.355673\u001b[0m, \u001b[1;36m0.357673\u001b[0m, \u001b[1;36m0.359673\u001b[0m, \u001b[1;36m0.361673\u001b[0m, \u001b[1;36m0.363673\u001b[0m, \u001b[1;36m0.365673\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0.367673\u001b[0m, \u001b[1;36m0.369673\u001b[0m, \u001b[1;36m0.371673\u001b[0m, \u001b[1;36m0.373673\u001b[0m, \u001b[1;36m0.375673\u001b[0m, \u001b[1;36m0.377673\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1;36m0.379673\u001b[0m, \u001b[1;36m0.381673\u001b[0m, \u001b[1;36m0.383673\u001b[0m, \u001b[1;36m0.385673\u001b[0m, \u001b[1;36m0.387673\u001b[0m, \u001b[1;36m0.389673\u001b[0m\u001b[1m]\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mframes\u001b[0m = \u001b[1m[\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadce9710\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadce96a0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54400\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54438\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54470\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc544a8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc544e0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54518\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54550\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54588\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc545c0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc545f8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54630\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54668\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc546a0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc546d8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54710\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54748\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54780\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc547b8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc547f0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54828\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54860\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54898\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc548d0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54908\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54940\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54978\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc549b0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc549e8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54a20\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54a58\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54a90\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54ac8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54b00\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54b38\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54b70\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54ba8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54be0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54c18\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54c50\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54c88\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54cc0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54cf8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54d30\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54d68\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54da0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54dd8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54e10\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54e48\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54e80\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54eb8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54ef0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54f28\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54f60\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54f98\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc54fd0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a048\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a080\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a0b8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a0f0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a128\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a160\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a198\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a1d0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a208\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a240\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a278\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a2b0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a2e8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a320\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a358\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a390\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a3c8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a400\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a438\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a470\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a4a8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a4e0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a518\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a550\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a588\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a5c0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a5f8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a630\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a668\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a6a0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a6d8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a710\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a748\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a780\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a7b8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a7f0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a828\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a860\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a898\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a8d0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a908\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a940\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a978\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a9b0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6a9e8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6aa20\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6aa58\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6aa90\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6aac8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6ab00\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6ab38\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6ab70\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6aba8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6abe0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6ac18\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6ac50\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6ac88\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6acc0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6acf8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6ad30\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6ad68\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6ada0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6add8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6ae10\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6ae48\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6ae80\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6aeb8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6aef0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6af28\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6af60\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6af98\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc6afd0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc67048\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc67080\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc670b8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc670f0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc67128\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc67160\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc67198\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc671d0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc67208\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc67240\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc67278\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc672b0\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc672e8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc67320\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc67358\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc67390\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc673c8\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc67400\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc67438\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc67470\u001b[0m\u001b[1m>\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mpyuda._video.Frame\u001b[0m\u001b[39m object at \u001b[0m\u001b[1;36m0x7f8eadc674a8\u001b[0m\u001b[1m>\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m]\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mgain\u001b[0m = \u001b[1;35marray\u001b[0m\u001b[1m(\u001b[0m\u001b[1m[\u001b[0m\u001b[1;36m2\u001b[0m., \u001b[1;36m0\u001b[0m.\u001b[1m]\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mhbin\u001b[0m = \u001b[1;36m0\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mheight\u001b[0m = \u001b[1;36m704\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mis_color\u001b[0m = \u001b[1;36m0\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mleft\u001b[0m = \u001b[1;36m1\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mlens\u001b[0m = \u001b[32m''\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mn_frames\u001b[0m = \u001b[1;36m150\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33moffset\u001b[0m = \u001b[1;35marray\u001b[0m\u001b[1m(\u001b[0m\u001b[1m[\u001b[0m\u001b[1;36m0\u001b[0m., \u001b[1;36m0\u001b[0m.\u001b[1m]\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33morientation\u001b[0m = \u001b[1;36m0\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mpre_exp\u001b[0m = \u001b[1;36m0.0\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mright\u001b[0m = \u001b[1;36m768\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mshot\u001b[0m = \u001b[1;36m27933\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mstrobe\u001b[0m = \u001b[1;36m0\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mtaps\u001b[0m = \u001b[1;36m0\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mtop\u001b[0m = \u001b[1;36m249\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mtrigger\u001b[0m = \u001b[1;36m-0.10000000149011612\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mvbin\u001b[0m = \u001b[1;36m0\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mview\u001b[0m = \u001b[32m'HL07 + 25mm lens + HeII 468nm filter'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mwidth\u001b[0m = \u001b[1;36m768\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m╰───────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "data = client.get_images(\"rba\", shot_1)\n",
- "inspect(data, docs=False)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "5f0346f0",
- "metadata": {},
- "source": [
- "**_Image_** data is encoded in the `Frame` object of the `Video`."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 68,
- "id": "3ccd1066",
- "metadata": {},
- "outputs": [],
- "source": [
- "frame_im = data.frames[11].k"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "23c4609f",
- "metadata": {},
- "source": [
- "Then we can see an image it is a grey image with shape 704x768."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 69,
- "id": "409f69f3",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(704, 768)"
- ]
- },
- "execution_count": 69,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "frame_im.shape"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 70,
- "id": "56d66cb7",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- ""
- ]
- },
- "execution_count": 70,
- "metadata": {},
- "output_type": "execute_result"
- },
- {
- "data": {
- "image/png": "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",
- "text/plain": [
- ""
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "plt.imshow(frame_im, cmap=\"gray\")"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "c49fbcc4",
- "metadata": {},
- "source": [
- "If we use the `get` function to fetch *IPX* (of alias `rba`) format, it may not throw any error or exception, however, the data would be empty. For example,"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 71,
- "id": "79419ec3",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "╭──────── < class 'pyuda._signal.Signal' > ─────────╮ \n",
- "│ ╭─────────────────────────────────────────────╮ │ \n",
- "│ │ < Signal > │ │ \n",
- "│ ╰─────────────────────────────────────────────╯ │ \n",
- "│ │ \n",
- "│ data = None │ \n",
- "│ description = '' │ \n",
- "│ dims = [] │ \n",
- "│ errors = None │ \n",
- "│ label = '' │ \n",
- "│ meta = { │ \n",
- "│ 'signal_name' : b'rba' , │ \n",
- "│ 'signal_alias' : b'rba' , │ \n",
- "│ 'path' : b'/rba027933.ipx' , │ \n",
- "│ 'filename' : b'rba027933.ipx' , │ \n",
- "│ 'format' : b'IPX' , │ \n",
- "│ 'exp_number' : 27933 , │ \n",
- "│ 'pass' : -1 , │ \n",
- "│ 'pass_date' : b'2011-12-15' │ \n",
- "│ } │ \n",
- "│ rank = 0 │ \n",
- "│ shape = () │ \n",
- "│ time = None │ \n",
- "│ time_index = None │ \n",
- "│ units = '' │ \n",
- "╰─────────────────────────────────────────────────╯ \n",
- " \n"
- ],
- "text/plain": [
- "\u001b[34m╭─\u001b[0m\u001b[34m─────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'pyuda._signal.Signal'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ────────\u001b[0m\u001b[34m─╮\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╭─────────────────────────────────────────────╮\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mSignal\u001b[0m\u001b[1m>\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╰─────────────────────────────────────────────╯\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdata\u001b[0m = \u001b[3;35mNone\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdescription\u001b[0m = \u001b[32m''\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdims\u001b[0m = \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33merrors\u001b[0m = \u001b[3;35mNone\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mlabel\u001b[0m = \u001b[32m''\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mmeta\u001b[0m = \u001b[1m{\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'signal_name'\u001b[0m: \u001b[32mb'rba'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'signal_alias'\u001b[0m: \u001b[32mb'rba'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'path'\u001b[0m: \u001b[32mb'/rba027933.ipx'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'filename'\u001b[0m: \u001b[32mb'rba027933.ipx'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'format'\u001b[0m: \u001b[32mb'IPX'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'exp_number'\u001b[0m: \u001b[1;36m27933\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'pass'\u001b[0m: \u001b[1;36m-1\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'pass_date'\u001b[0m: \u001b[32mb'2011-12-15'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m}\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mrank\u001b[0m = \u001b[1;36m0\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mshape\u001b[0m = \u001b[1m(\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mtime\u001b[0m = \u001b[3;35mNone\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mtime_index\u001b[0m = \u001b[3;35mNone\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33munits\u001b[0m = \u001b[32m''\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m╰─────────────────────────────────────────────────╯\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "data = client.get(\"rba\", shot_1)\n",
- "inspect(data, docs=False)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "00aa4ce6",
- "metadata": {},
- "source": [
- "### Erros & Exceptions"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "2ea83100",
- "metadata": {},
- "source": [
- "In some cases, meta data can be fetched if using `get`, but without any data."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 85,
- "id": "b9e2506d",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "╭──────── < class 'pyuda._signal.Signal' > ─────────╮ \n",
- "│ ╭─────────────────────────────────────────────╮ │ \n",
- "│ │ < Signal > │ │ \n",
- "│ ╰─────────────────────────────────────────────╯ │ \n",
- "│ │ \n",
- "│ data = None │ \n",
- "│ description = '' │ \n",
- "│ dims = [] │ \n",
- "│ errors = None │ \n",
- "│ label = '' │ \n",
- "│ meta = { │ \n",
- "│ 'signal_name' : b'rzz' , │ \n",
- "│ 'signal_alias' : b'rzz' , │ \n",
- "│ 'path' : b'/rzz027933.tif' , │ \n",
- "│ 'filename' : b'rzz027933.tif' , │ \n",
- "│ 'format' : b'TIF' , │ \n",
- "│ 'exp_number' : 27933 , │ \n",
- "│ 'pass' : -1 , │ \n",
- "│ 'pass_date' : b'2011-12-15' │ \n",
- "│ } │ \n",
- "│ rank = 0 │ \n",
- "│ shape = () │ \n",
- "│ time = None │ \n",
- "│ time_index = None │ \n",
- "│ units = '' │ \n",
- "╰─────────────────────────────────────────────────╯ \n",
- " \n"
- ],
- "text/plain": [
- "\u001b[34m╭─\u001b[0m\u001b[34m─────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'pyuda._signal.Signal'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ────────\u001b[0m\u001b[34m─╮\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╭─────────────────────────────────────────────╮\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mSignal\u001b[0m\u001b[1m>\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╰─────────────────────────────────────────────╯\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdata\u001b[0m = \u001b[3;35mNone\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdescription\u001b[0m = \u001b[32m''\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdims\u001b[0m = \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33merrors\u001b[0m = \u001b[3;35mNone\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mlabel\u001b[0m = \u001b[32m''\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mmeta\u001b[0m = \u001b[1m{\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'signal_name'\u001b[0m: \u001b[32mb'rzz'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'signal_alias'\u001b[0m: \u001b[32mb'rzz'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'path'\u001b[0m: \u001b[32mb'/rzz027933.tif'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'filename'\u001b[0m: \u001b[32mb'rzz027933.tif'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'format'\u001b[0m: \u001b[32mb'TIF'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'exp_number'\u001b[0m: \u001b[1;36m27933\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'pass'\u001b[0m: \u001b[1;36m-1\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'pass_date'\u001b[0m: \u001b[32mb'2011-12-15'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m}\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mrank\u001b[0m = \u001b[1;36m0\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mshape\u001b[0m = \u001b[1m(\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mtime\u001b[0m = \u001b[3;35mNone\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mtime_index\u001b[0m = \u001b[3;35mNone\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33munits\u001b[0m = \u001b[32m''\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m╰─────────────────────────────────────────────────╯\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "# it is a TIF image, but only meta data is accessible.\n",
- "data = client.get(\"rzz\", shot_1)\n",
- "inspect(data, docs=False)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 86,
- "id": "58e687d9",
- "metadata": {},
- "outputs": [
- {
- "ename": "ServerException",
- "evalue": "Can't open file /net/mustrgsrvr1/export/mastu/data/MAST_Data/27933/LATEST/rzz027933.ipx",
- "output_type": "error",
- "traceback": [
- "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
- "\u001b[0;31mServerException\u001b[0m Traceback (most recent call last)",
- "\u001b[0;32m/tmp/ipykernel_25138/3110243593.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# error output with get_images\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mclient\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_images\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'rzz'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mshot_1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0minspect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdocs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
- "\u001b[0;32m/usr/local/depot/uda-mast-1.3.6/python/mast/mast_client.py\u001b[0m in \u001b[0;36mget_images\u001b[0;34m(self, signal, source, first_frame, last_frame, stride, frame_number, header_only, rcc_calib_path)\u001b[0m\n\u001b[1;32m 94\u001b[0m \u001b[0mcomm\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;34m')'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 95\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 96\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcpyuda\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcomm\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 97\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0merror_code\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 98\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0merror_message\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
- "\u001b[0;32mpyuda/cpyuda/cpyuda.pyx\u001b[0m in \u001b[0;36mcpyuda.get_data\u001b[0;34m()\u001b[0m\n",
- "\u001b[0;31mServerException\u001b[0m: Can't open file /net/mustrgsrvr1/export/mastu/data/MAST_Data/27933/LATEST/rzz027933.ipx"
- ]
- }
- ],
- "source": [
- "# error output with get_images\n",
- "data = client.get_images(\"rzz\", shot_1)\n",
- "inspect(data, docs=False)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "35cb5ea8",
- "metadata": {},
- "source": [
- "For the other shot, which has *JPG* format image."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 87,
- "id": "2611bfb9",
- "metadata": {},
- "outputs": [
- {
- "ename": "ServerException",
- "evalue": "Can't open file /net/mustrgsrvr1/export/mastu/data/MAST_Data/12000/LATEST/mhd012000.ipx",
- "output_type": "error",
- "traceback": [
- "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
- "\u001b[0;31mServerException\u001b[0m Traceback (most recent call last)",
- "\u001b[0;32m/tmp/ipykernel_25138/2073778830.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# error output with get_images\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mclient\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_images\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'mhd'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mshot_2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0minspect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdocs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
- "\u001b[0;32m/usr/local/depot/uda-mast-1.3.6/python/mast/mast_client.py\u001b[0m in \u001b[0;36mget_images\u001b[0;34m(self, signal, source, first_frame, last_frame, stride, frame_number, header_only, rcc_calib_path)\u001b[0m\n\u001b[1;32m 94\u001b[0m \u001b[0mcomm\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;34m')'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 95\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 96\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcpyuda\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcomm\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 97\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0merror_code\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 98\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0merror_message\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
- "\u001b[0;32mpyuda/cpyuda/cpyuda.pyx\u001b[0m in \u001b[0;36mcpyuda.get_data\u001b[0;34m()\u001b[0m\n",
- "\u001b[0;31mServerException\u001b[0m: Can't open file /net/mustrgsrvr1/export/mastu/data/MAST_Data/12000/LATEST/mhd012000.ipx"
- ]
- }
- ],
- "source": [
- "# error output with get_images\n",
- "data = client.get_images(\"mhd\", shot_2)\n",
- "inspect(data, docs=False)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "8769061c",
- "metadata": {},
- "source": [
- "In this situation use `get` to fetch metadata information and path."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 72,
- "id": "c3ea9047",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "╭────────────────────────── < class 'pyuda._signal.Signal' > ───────────────────────────╮ \n",
- "│ ╭─────────────────────────────────────────────────────────────────────────────────╮ │ \n",
- "│ │ < Signal > │ │ \n",
- "│ ╰─────────────────────────────────────────────────────────────────────────────────╯ │ \n",
- "│ │ \n",
- "│ data = None │ \n",
- "│ description = '' │ \n",
- "│ dims = [] │ \n",
- "│ errors = None │ \n",
- "│ label = '' │ \n",
- "│ meta = { │ \n",
- "│ 'signal_name' : b'mhd' , │ \n",
- "│ 'signal_alias' : b'mhd' , │ \n",
- "│ 'path' : b'/net/fuslsa/data/MAST_Data/12000/Pass0/mhd0120.00_jpg' , │ \n",
- "│ 'filename' : b'mhd0120.00_jpg' , │ \n",
- "│ 'format' : b'JPG' , │ \n",
- "│ 'exp_number' : 12000 , │ \n",
- "│ 'pass' : 0 , │ \n",
- "│ 'pass_date' : b'1980-02-10' │ \n",
- "│ } │ \n",
- "│ rank = 0 │ \n",
- "│ shape = () │ \n",
- "│ time = None │ \n",
- "│ time_index = None │ \n",
- "│ units = '' │ \n",
- "╰─────────────────────────────────────────────────────────────────────────────────────╯ \n",
- " \n"
- ],
- "text/plain": [
- "\u001b[34m╭─\u001b[0m\u001b[34m───────────────────────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'pyuda._signal.Signal'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ──────────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╭─────────────────────────────────────────────────────────────────────────────────╮\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m<\u001b[0m\u001b[1;95mSignal\u001b[0m\u001b[1m>\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m╰─────────────────────────────────────────────────────────────────────────────────╯\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdata\u001b[0m = \u001b[3;35mNone\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdescription\u001b[0m = \u001b[32m''\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mdims\u001b[0m = \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33merrors\u001b[0m = \u001b[3;35mNone\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mlabel\u001b[0m = \u001b[32m''\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mmeta\u001b[0m = \u001b[1m{\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'signal_name'\u001b[0m: \u001b[32mb'mhd'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'signal_alias'\u001b[0m: \u001b[32mb'mhd'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'path'\u001b[0m: \u001b[32mb'/net/fuslsa/data/MAST_Data/12000/Pass0/mhd0120.00_jpg'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'filename'\u001b[0m: \u001b[32mb'mhd0120.00_jpg'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'format'\u001b[0m: \u001b[32mb'JPG'\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'exp_number'\u001b[0m: \u001b[1;36m12000\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'pass'\u001b[0m: \u001b[1;36m0\u001b[0m, \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[32m'pass_date'\u001b[0m: \u001b[32mb'1980-02-10'\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[1m}\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mrank\u001b[0m = \u001b[1;36m0\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mshape\u001b[0m = \u001b[1m(\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mtime\u001b[0m = \u001b[3;35mNone\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33mtime_index\u001b[0m = \u001b[3;35mNone\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m│\u001b[0m \u001b[3;33munits\u001b[0m = \u001b[32m''\u001b[0m \u001b[34m│\u001b[0m\n",
- "\u001b[34m╰─────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "data = client.get(\"mhd\", shot_2)\n",
- "inspect(data, docs=False)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "ed3f90a1",
- "metadata": {},
- "source": [
- "# Accessing Shot Metadata (CPF)\n",
- "\n"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "a0081a0b",
- "metadata": {},
- "source": [
- "CPF (central physics file) - Metadata of the **Shot**. It is accessed using pycpf package.\n"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "d2639bc8",
- "metadata": {},
- "source": [
- "\n",
- "Note: There is a mismatch with the data on the website, especially in the values of CPF Data Summary table: https://users.mastu.ukaea.uk/internal/shot/27933 . Current information: cpf values available via pycpf are the correct ones. Information about data contained can be found in the https://users.mastu.ukaea.uk/sites/default/files/uploads/CPF.pdf\n",
- "
"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 73,
- "id": "68bb0dc2",
- "metadata": {
- "code_folding": []
- },
- "outputs": [],
- "source": [
- "def retrieve_cpf(shot):\n",
- " cpf = {}\n",
- " for field in pycpf.columns():\n",
- " name = field[0]\n",
- " entry = pycpf.query(name, f\"shot = {shot}\")\n",
- " if entry:\n",
- " cpf[name] = {\n",
- " \"data\": entry[name][0],\n",
- " \"description\": field[1],\n",
- " }\n",
- " else:\n",
- " cpf[name] = {\n",
- " \"data\": None,\n",
- " \"description\": field[1],\n",
- " }\n",
- " return cpf"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "e27e5534",
- "metadata": {},
- "source": [
- "CPF files can be presented as a table, where it has a name of a row (Name-first column in the table below), data and description of the data available for each of the rows. "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 76,
- "id": "a0d3fccc",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " data \n",
- " description \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " P12450 \n",
- " None \n",
- " CP3c Set Volts \n",
- " \n",
- " \n",
- " P15202 \n",
- " None \n",
- " Additive Gas Plenum \n",
- " \n",
- " \n",
- " q95_truby \n",
- " 0.0 \n",
- " q-95 at time of Ruby TS \n",
- " \n",
- " \n",
- " area_max \n",
- " 1.610378 \n",
- " Maximum Poloidal Cross-Sectional Area \n",
- " \n",
- " \n",
- " tipmax \n",
- " 0.2679 \n",
- " Time of Maximum Plasma Current \n",
- " \n",
- " \n",
- " creation \n",
- " '2011-12-15' \n",
- " Data Dictionary Entry Creation Date \n",
- " \n",
- " \n",
- " P21083 \n",
- " None \n",
- " FA1 enable Duration \n",
- " \n",
- " \n",
- " P21087 \n",
- " None \n",
- " FA3 enable Duration \n",
- " \n",
- " \n",
- " wmhd_truby \n",
- " 0.0 \n",
- " Stored Energy at time of Ruby TS \n",
- " \n",
- " \n",
- " P21078 \n",
- " None \n",
- " P1PS Positive I Limit (Max. +ve Current from P... \n",
- " \n",
- " \n",
- " P21052 \n",
- " None \n",
- " MFPS set enable Start Time (Offset by 5s) \n",
- " \n",
- " \n",
- " P05016 \n",
- " None \n",
- " Select FA3 \n",
- " \n",
- " \n",
- " li_3_max \n",
- " 1.074974 \n",
- " li(3) Maximum value \n",
- " \n",
- " \n",
- " tzeff_max \n",
- " None \n",
- " Time of Maximum Plasma Z-Effective \n",
- " \n",
- " \n",
- " P21084 \n",
- " None \n",
- " FA2 enable Start Time (Offset by 5s) (Normally... \n",
- " \n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " data description\n",
- "P12450 None CP3c Set Volts\n",
- "P15202 None Additive Gas Plenum\n",
- "q95_truby 0.0 q-95 at time of Ruby TS\n",
- "area_max 1.610378 Maximum Poloidal Cross-Sectional Area\n",
- "tipmax 0.2679 Time of Maximum Plasma Current\n",
- "creation '2011-12-15' Data Dictionary Entry Creation Date\n",
- "P21083 None FA1 enable Duration\n",
- "P21087 None FA3 enable Duration\n",
- "wmhd_truby 0.0 Stored Energy at time of Ruby TS\n",
- "P21078 None P1PS Positive I Limit (Max. +ve Current from P...\n",
- "P21052 None MFPS set enable Start Time (Offset by 5s)\n",
- "P05016 None Select FA3\n",
- "li_3_max 1.074974 li(3) Maximum value\n",
- "tzeff_max None Time of Maximum Plasma Z-Effective\n",
- "P21084 None FA2 enable Start Time (Offset by 5s) (Normally..."
- ]
- },
- "execution_count": 76,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "df = pd.DataFrame(retrieve_cpf(shot_1)).transpose()\n",
- "df.head(15)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "9d57618e",
- "metadata": {},
- "source": [
- "In this table there are 265 rows, some of them have data value equal to None, such rows typically have Names starting with P and followed by 5 numbers. Other Names are typically having physics nomenclature. CPF file contains the most important experiment values, both experimental conditions as well as results of the analysis. It has information in string format (descriptions,scientist names, summary, postshot, time and date), float and int."
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.7.1"
- },
- "toc": {
- "base_numbering": 1,
- "nav_menu": {},
- "number_sections": true,
- "sideBar": true,
- "skip_h1_title": false,
- "title_cell": "Table of Contents",
- "title_sidebar": "Contents",
- "toc_cell": true,
- "toc_position": {
- "height": "calc(100% - 180px)",
- "left": "10px",
- "top": "150px",
- "width": "254px"
- },
- "toc_section_display": true,
- "toc_window_display": true
- },
- "toc-autonumbering": true,
- "toc-showcode": false,
- "toc-showmarkdowntxt": false,
- "toc-showtags": true,
- "vscode": {
- "interpreter": {
- "hash": "680ed88218a14d2dfce1bc66d2a8371bdb9ce540b550b6ada06872ce9370cc47"
- }
- }
- },
- "nbformat": 4,
- "nbformat_minor": 5
-}
diff --git a/notebooks/images/schema.png b/notebooks/images/schema.png
deleted file mode 100644
index a0f999f3a74c30438c95e0a89949288e5d083c86..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 43392
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
diff --git a/notebooks/images/website1.PNG b/notebooks/images/website1.PNG
deleted file mode 100644
index 3b5ce99aa9a53c5620a4f0b9d2eb5e2800b3c4f6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 221282
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