diff --git a/examples/adcp_example.ipynb b/examples/adcp_example.ipynb index 95d4dd399..1977be4de 100644 --- a/examples/adcp_example.ipynb +++ b/examples/adcp_example.ipynb @@ -1,29 +1,44 @@ { "cells": [ { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "# Reading ADCP Data with MHKiT" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The following example demonstrates a simple workflow for analyzing Acoustic Doppler Current Profiler (ADCP) data using MHKiT. MHKiT has brought the DOLfYN codebase in as an MHKiT module for working with ADCP and Acoustic Doppler Velocimeter (ADV) data.\n", + "# Analyzing ADCP Data with MHKiT\n", + "\n", + "The following example illustrates a straightforward workflow for analyzing Acoustic Doppler Current Profiler (ADCP) data utilizing MHKiT. MHKiT has integrated the DOLfYN codebase as a module to facilitate ADCP and Acoustic Doppler Velocimetry (ADV) data processing.\n", + "\n", + "Here is a standard workflow for ADCP data analysis:\n", "\n", - "A typical ADCP data workflow is broken down into\n", - " 1. Review the raw data\n", - " - Check timestamps\n", - " - Calculate/check that the depth bin locations are correct\n", - " - Look at velocity, beam amplitude and/or beam correlation data quality\n", - " 2. Remove data located above the water surface or below the seafloor\n", - " 3. Check for spurious datapoints and remove if necessary\n", - " 4. If not already done within the instrument, average the data into time bins of a set time length (normally 5 to 10 min)\n", - " 5. Conduct further analysis as required\n", + "1. **Import Data**\n", "\n", - "Start by importing the necessary tools:" + "2. **Review, QC, and Prepare the Raw Data**:\n", + " 1. Calculate or verify the correctness of depth bin locations\n", + " 2. Discard data recorded above the water surface or below the seafloor\n", + " 3. Assess the quality of velocity, beam amplitude, and/or beam correlation data\n", + " 4. Rotate Data Coordinate System\n", + "\n", + "3. **Data Averaging**: \n", + " - If not already executed within the instrument, average the data into time bins of a predetermined duration, typically between 5 and 10 minutes\n", + "\n", + "4. **Speed and Direction**\n", + "\n", + "5. **Plotting**\n", + "\n", + "6. **Saving and Loading DOLfYN datasets**\n", + "\n", + "7. **Turbulence Statistics**\n", + " 1. TI\n", + " 2. Power Spectral Densities\n", + " 3. TKE Dissipation Rate\n", + " 4. TKE Componenets\n", + " 5. ADCP Noise\n", + " 6. TKE Production\n", + " 7. TKE Balance \n", + "\n", + "\n", + "Begin your analysis by importing the requisite tools:" ] }, { @@ -32,32 +47,36 @@ "metadata": { "scrolled": true }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\mcve343\\Anaconda3\\lib\\site-packages\\xarray\\backends\\cfgrib_.py:29: UserWarning: Failed to load cfgrib - most likely there is a problem accessing the ecCodes library. Try `import cfgrib` to get the full error message\n", + " warnings.warn(\n" + ] + } + ], "source": [ "from mhkit import dolfyn\n", "from mhkit.dolfyn.adp import api" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "## Read Raw Instrument Data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The core benefit of DOLfYN is that it can read in raw data directly after transferring it off of the ADCP. The ADCP used here is a Nortek Signature1000, with the file extension '.ad2cp'. This specific dataset contains several hours worth of velocity data collected at 1 Hz from the ADCP mounted on a bottom lander in a tidal inlet. \n", - "The instruments that DOLfYN supports are listed in the [docs](https://mhkit-software.github.io/MHKiT/mhkit-python/api.dolfyn.html).\n", + "## 1. Importing Raw Instrument Data\n", + "\n", + "One of DOLfYN's key features is its ability to directly import raw data from an Acoustic Doppler Current Profiler (ADCP) right after it has been transferred. In this instance, we are using a Nortek Signature1000 ADCP, with the data stored in files with an '.ad2cp' extension. This specific dataset represents several hours of velocity data, captured at 1 Hz by an ADCP mounted on a bottom lander within a tidal inlet. The list of instruments compatible with DOLfYN can be found in the [MHKiT DOLfYN documentation](https://mhkit-software.github.io/MHKiT/mhkit-python/api.dolfyn.html).\n", "\n", - "Start by reading in the raw datafile downloaded from the instrument. The `read` function reads the raw file and dumps the information into an xarray Dataset, which contains a few groups of variables:\n", + "We'll start by importing the raw data file downloaded from the instrument. The `read` function processes the raw file and converts the information into an xarray Dataset. This Dataset includes several groups of variables:\n", "\n", - "1. Velocity in the instrument-saved coordinate system (beam, XYZ, ENU)\n", - "2. Beam amplitude and correlation data\n", - "3. Measurements of the instrument's bearing and environment\n", - "4. Orientation matrices DOLfYN uses for rotating through coordinate frames.\n" + "1. **Velocity**: Recorded in the coordinate system saved by the instrument (beam, XYZ, ENU)\n", + "2. **Beam Data**: Includes amplitude and correlation data\n", + "3. **Instrumental & Environmental Measurements**: Captures the instrument's bearing and environmental conditions\n", + "4. **Orientation Matrices**: Used by DOLfYN for rotating through different coordinate frames.\n" ] }, { @@ -71,7 +90,6 @@ "name": "stdout", "output_type": "stream", "text": [ - "Indexing data/dolfyn/Sig1000_tidal.ad2cp... Done.\n", "Reading file data/dolfyn/Sig1000_tidal.ad2cp ...\n" ] } @@ -81,6 +99,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -126,6 +145,7 @@ "}\n", "\n", "html[theme=dark],\n", + "body[data-theme=dark],\n", "body.vscode-dark {\n", " --xr-font-color0: rgba(255, 255, 255, 1);\n", " --xr-font-color2: rgba(255, 255, 255, 0.54);\n", @@ -138,7 +158,7 @@ "}\n", "\n", ".xr-wrap {\n", - " display: block;\n", + " display: block !important;\n", " min-width: 300px;\n", " max-width: 700px;\n", "}\n", @@ -447,20 +467,22 @@ " fill: currentColor;\n", "}\n", "
<xarray.Dataset>\n",
- "Dimensions: (time: 55000, time_b5: 55000, dirIMU: 3, range_b5: 28, beam: 4, range: 28, dir: 4, earth: 3, inst: 3, q: 4, x: 4, x*: 4)\n",
+ "Dimensions: (time: 55000, dirIMU: 3, dir: 4, range: 28, beam: 4,\n",
+ " earth: 3, inst: 3, q: 4, time_b5: 55000,\n",
+ " range_b5: 28, x1: 4, x2: 4)\n",
"Coordinates:\n",
- " * time (time) datetime64[ns] 2020-08-15T00:20:00.500999 ......\n",
- " * time_b5 (time_b5) datetime64[ns] 2020-08-15T00:20:00.438499 ...\n",
+ " * time (time) datetime64[ns] 2020-08-15T00:20:00.500999927 ...\n",
" * dirIMU (dirIMU) <U1 'E' 'N' 'U'\n",
- " * range_b5 (range_b5) float64 0.6 1.1 1.6 2.1 ... 13.1 13.6 14.1\n",
- " * beam (beam) int32 1 2 3 4\n",
- " * range (range) float64 0.6 1.1 1.6 2.1 ... 12.6 13.1 13.6 14.1\n",
" * dir (dir) <U2 'E' 'N' 'U1' 'U2'\n",
+ " * range (range) float64 0.6 1.1 1.6 2.1 ... 12.6 13.1 13.6 14.1\n",
+ " * beam (beam) int32 1 2 3 4\n",
" * earth (earth) <U1 'E' 'N' 'U'\n",
" * inst (inst) <U1 'X' 'Y' 'Z'\n",
" * q (q) <U1 'w' 'x' 'y' 'z'\n",
- " * x (x) int32 1 2 3 4\n",
- " * x* (x*) int32 1 2 3 4\n",
+ " * time_b5 (time_b5) datetime64[ns] 2020-08-15T00:20:00.4384999...\n",
+ " * range_b5 (range_b5) float64 0.6 1.1 1.6 2.1 ... 13.1 13.6 14.1\n",
+ " * x1 (x1) int32 1 2 3 4\n",
+ " * x2 (x2) int32 1 2 3 4\n",
"Data variables: (12/38)\n",
" c_sound (time) float32 1.502e+03 1.502e+03 ... 1.498e+03\n",
" temp (time) float32 14.55 14.55 14.55 ... 13.47 13.47 13.47\n",
@@ -474,40 +496,40 @@
" heading (time) float32 -12.52 -12.51 -12.51 ... -12.52 -12.5\n",
" pitch (time) float32 -0.065 -0.06 -0.06 ... -0.06 -0.05 -0.05\n",
" roll (time) float32 -7.425 -7.42 -7.42 ... -6.45 -6.45 -6.45\n",
- " beam2inst_orientmat (x, x*) float32 1.183 0.0 -1.183 ... 0.5518 0.0 0.5518\n",
- "Attributes: (12/33)\n",
- " filehead_config: {'CLOCKSTR': {'TIME': '"2020-08-13 13:56:21"'}, 'I...\n",
+ " beam2inst_orientmat (x1, x2) float32 1.183 0.0 -1.183 ... 0.5518 0.0 0.5518\n",
+ "Attributes: (12/34)\n",
+ " filehead_config: {"CLOCKSTR": {"TIME": "\\"2020-08-13 13:56:21\\""}, ...\n",
" inst_model: Signature1000\n",
" inst_make: Nortek\n",
" inst_type: ADCP\n",
- " rotate_vars: ['vel', 'accel', 'accel_b5', 'angrt', 'angrt_b5', ...\n",
- " burst_config: {'press_valid': True, 'temp_valid': True, 'compass...\n",
+ " burst_config: {"press_valid": true, "temp_valid": true, "compass...\n",
+ " n_cells: 28\n",
" ... ...\n",
- " proc_idle_less_3pct: 0\n",
- " proc_idle_less_6pct: 0\n",
" proc_idle_less_12pct: 0\n",
+ " rotate_vars: ['vel', 'accel', 'accel_b5', 'angrt', 'angrt_b5', ...\n",
" coord_sys: earth\n",
+ " fs: 1\n",
" has_imu: 1\n",
- " fs: 1array(['2020-08-15T00:20:00.500999000', '2020-08-15T00:20:01.501100000',\n", - " '2020-08-15T00:20:02.500999000', ..., '2020-08-15T15:36:37.500999000',\n", - " '2020-08-15T15:36:38.500999000', '2020-08-15T15:36:39.500999000'],\n", - " dtype='datetime64[ns]')
array(['2020-08-15T00:20:00.438499000', '2020-08-15T00:20:01.438499000',\n", - " '2020-08-15T00:20:02.438499000', ..., '2020-08-15T15:36:37.438499000',\n", - " '2020-08-15T15:36:38.438499000', '2020-08-15T15:36:39.438499000'],\n", - " dtype='datetime64[ns]')
array(['E', 'N', 'U'], dtype='<U1')
array([ 0.6, 1.1, 1.6, 2.1, 2.6, 3.1, 3.6, 4.1, 4.6, 5.1, 5.6, 6.1,\n", + " beam_angle: 25
array([ 1.2, 1.7, 2.2, 2.7, 3.2, 3.7, 4.2, 4.7, 5.2, 5.7, 6.2, 6.7,\n", + " units: m
<xarray.Dataset>\n",
- "Dimensions: (range: 28, time: 183, dirIMU: 3, dir: 4, beam: 4, earth: 3, inst: 3, q: 4, time_b5: 183, range_b5: 28)\n",
+ "Dimensions: (time: 183, dirIMU: 3, range: 28, dir: 4, beam: 4,\n",
+ " earth: 3, inst: 3, q: 4, time_b5: 183, range_b5: 28)\n",
"Coordinates:\n",
- " * range (range) float64 1.2 1.7 2.2 2.7 3.2 ... 13.2 13.7 14.2 14.7\n",
- " * time (time) datetime64[ns] 2020-08-15T00:22:30.001030206 ... 2...\n",
+ " * time (time) datetime64[ns] 2020-08-15T00:22:30.001030683 ... 2...\n",
" * dirIMU (dirIMU) <U1 'E' 'N' 'U'\n",
+ " * range (range) float64 1.2 1.7 2.2 2.7 3.2 ... 13.2 13.7 14.2 14.7\n",
" * dir (dir) <U2 'E' 'N' 'U1' 'U2'\n",
" * beam (beam) int32 1 2 3 4\n",
" * earth (earth) <U1 'E' 'N' 'U'\n",
" * inst (inst) <U1 'X' 'Y' 'Z'\n",
" * q (q) <U1 'w' 'x' 'y' 'z'\n",
- " * time_b5 (time_b5) datetime64[ns] 2020-08-15T00:22:29.938494443 .....\n",
+ " * time_b5 (time_b5) datetime64[ns] 2020-08-15T00:22:29.938495159 .....\n",
" * range_b5 (range_b5) float64 1.2 1.7 2.2 2.7 ... 13.2 13.7 14.2 14.7\n",
"Data variables: (12/38)\n",
" c_sound (time) float32 1.502e+03 1.502e+03 ... 1.499e+03 1.498e+03\n",
- " U_std (range, time) float64 0.04232 0.04293 0.04402 ... nan nan\n",
+ " U_std (range, time) float32 0.04232 0.04293 0.04402 ... nan nan\n",
" temp (time) float32 14.49 14.59 14.54 14.45 ... 13.62 13.56 13.5\n",
" pressure (time) float32 9.712 9.699 9.685 9.67 ... 9.58 9.584 9.591\n",
- " mag (dirIMU, time) float64 72.37 72.4 72.38 ... -197.1 -197.1\n",
- " accel (dirIMU, time) float64 -0.3584 -0.361 ... 9.714 9.712\n",
+ " mag (dirIMU, time) float32 72.37 72.4 72.38 ... -197.1 -197.1\n",
+ " accel (dirIMU, time) float32 -0.3584 -0.361 ... 9.714 9.712\n",
" ... ...\n",
- " boost_running (time) float64 0.1267 0.1333 0.13 ... 0.2267 0.22 0.22\n",
+ " boost_running (time) float32 0.1267 0.1333 0.13 ... 0.2267 0.22 0.22\n",
" heading (time) float32 3.287 3.261 3.337 3.289 ... 3.331 3.352 3.352\n",
" pitch (time) float32 -0.05523 -0.07217 ... -0.04288 -0.0429\n",
" roll (time) float32 -7.414 -7.424 -7.404 ... -6.446 -6.433 -6.436\n",
" water_density (time) float32 1.023e+03 1.023e+03 ... 1.023e+03 1.023e+03\n",
- " depth (time) float32 10.28 10.26 10.25 10.24 ... 10.14 10.15 10.16\n",
- "Attributes: (12/40)\n",
+ " depth (time) float32 10.28 10.26 10.25 10.23 ... 10.14 10.15 10.15\n",
+ "Attributes: (12/41)\n",
" fs: 1\n",
" n_bin: 300\n",
" n_fft: 300\n",
" description: Binned averages calculated from ensembles of s...\n",
- " filehead_config: {'CLOCKSTR': {'TIME': '"2020-08-13 13:56:21"'}...\n",
+ " filehead_config: {"CLOCKSTR": {"TIME": "\\"2020-08-13 13:56:21\\"...\n",
" inst_model: Signature1000\n",
" ... ...\n",
- " coord_sys: earth\n",
" has_imu: 1\n",
+ " beam_angle: 25\n",
" h_deploy: 0.6\n",
" declination: 15.8\n",
" declination_in_orientmat: 1\n",
- " principal_heading: 11.1897array([ 1.2, 1.7, 2.2, 2.7, 3.2, 3.7, 4.2, 4.7, 5.2, 5.7, 6.2, 6.7,\n", + " principal_heading: 11.1898
array([1023.2506 , 1023.2348 , 1023.2431 , 1023.2559 , 1023.2423 ,\n", + " 1023.21655, 1023.1977 , 1023.2015 , 1023.19476, 1023.19116,\n", + " 1023.194 , 1023.1996 , 1023.20294, 1023.19666, 1023.19336,\n", + " 1023.19763, 1023.205 , 1023.20404, 1023.2148 , 1023.2179 ,\n", + " 1023.23627, 1023.24646, 1023.2652 , 1023.2814 , 1023.2947 ,\n", + " 1023.3131 , 1023.32043, 1023.33435, 1023.3452 , 1023.3554 ,\n", + " 1023.3606 , 1023.366 , 1023.37103, 1023.37616, 1023.38043,\n", + " 1023.38403, 1023.3869 , 1023.3915 , 1023.38855, 1023.3802 ,\n", + " 1023.3759 , 1023.3691 , 1023.3694 , 1023.3698 , 1023.3653 ,\n", + " 1023.3579 , 1023.3548 , 1023.35455, 1023.3548 , 1023.35455,\n", + " 1023.3522 , 1023.3529 , 1023.3504 , 1023.3525 , 1023.3523 ,\n", + " 1023.3569 , 1023.35583, 1023.35565, 1023.35364, 1023.35455,\n", + " 1023.35675, 1023.3567 , 1023.35565, 1023.35364, 1023.35144,\n", + " 1023.3499 , 1023.3452 , 1023.347 , 1023.3427 , 1023.3374 ,\n", + " 1023.3326 , 1023.32874, 1023.3249 , 1023.3244 , 1023.3244 ,\n", + " 1023.3202 , 1023.3271 , 1023.32477, 1023.3281 , 1023.3215 ,\n", + " 1023.3281 , 1023.3284 , 1023.3283 , 1023.3299 , 1023.33887,\n", + " 1023.3277 , 1023.3379 , 1023.343 , 1023.33966, 1023.35315,\n", + " 1023.35333, 1023.34064, 1023.33875, 1023.33 , 1023.3218 ,\n", + " 1023.32404, 1023.32294, 1023.30853, 1023.3122 , 1023.3125 ,\n", + " 1023.3147 , 1023.3218 , 1023.32446, 1023.3674 , 1023.42395,\n", + " 1023.4842 , 1023.5248 , 1023.5321 , 1023.545 , 1023.555 ,\n", + " 1023.5453 , 1023.53784, 1023.5425 , 1023.5531 , 1023.56085,\n", + " 1023.5671 , 1023.5697 , 1023.5727 , 1023.5777 , 1023.5851 ,\n", + " 1023.598 , 1023.61127, 1023.61774, 1023.6253 , 1023.63873,\n", + " 1023.6415 , 1023.64105, 1023.6321 , 1023.6085 , 1023.58875,\n", + " 1023.55664, 1023.53424, 1023.4919 , 1023.4661 , 1023.4329 ,\n", + " 1023.4105 , 1023.3956 , 1023.38354, 1023.3727 , 1023.36206,\n", + " 1023.3528 , 1023.34467, 1023.34357, 1023.345 , 1023.34937,\n", + " 1023.34894, 1023.3448 , 1023.3418 , 1023.3417 , 1023.3436 ,\n", + " 1023.3458 , 1023.3482 , 1023.3505 , 1023.34937, 1023.348 ,\n", + " 1023.34607, 1023.3471 , 1023.3476 , 1023.3501 , 1023.3529 ,\n", + " 1023.35187, 1023.34894, 1023.3476 , 1023.3455 , 1023.3432 ,\n", + " 1023.3432 , 1023.34186, 1023.34094, 1023.3408 , 1023.34 ,\n", + " 1023.33655, 1023.34143, 1023.34155, 1023.34357, 1023.3508 ,\n", + " 1023.3694 , 1023.37335, 1023.3781 , 1023.3796 , 1023.3752 ,\n", + " 1023.3806 , 1023.3899 , 1023.3975 ], dtype=float32)
array([10.275155 , 10.262421 , 10.248638 , 10.233478 , 10.216689 ,\n", + " 10.204074 , 10.188269 , 10.172538 , 10.158512 , 10.140744 ,\n", + " 10.124731 , 10.10534 , 10.088593 , 10.069619 , 10.050677 ,\n", + " 10.028841 , 10.00682 , 9.981041 , 9.958139 , 9.932152 ,\n", + " 9.90408 , 9.8704815, 9.843054 , 9.8099 , 9.782674 ,\n", + " 9.751141 , 9.722181 , 9.688391 , 9.658139 , 9.624396 ,\n", + " 9.591585 , 9.559362 , 9.5206785, 9.487036 , 9.4516325,\n", + " 9.418625 , 9.378983 , 9.347703 , 9.310125 , 9.274782 ,\n", + " 9.240932 , 9.203833 , 9.168937 , 9.127398 , 9.091378 ,\n", + " 9.048801 , 9.012082 , 8.96804 , 8.932783 , 8.890241 ,\n", + " 8.854867 , 8.815892 , 8.781367 , 8.746559 , 8.714514 ,\n", + " 8.678216 , 8.641088 , 8.608247 , 8.566862 , 8.532115 ,\n", + " 8.495453 , 8.461118 , 8.42251 , 8.39378 , 8.36608 ,\n", + " 8.334696 , 8.308269 , 8.283072 , 8.254289 , 8.228873 ,\n", + " 8.203963 , 8.179552 , 8.162701 , 8.144332 , 8.124536 ,\n", + " 8.104092 , 8.085614 , 8.068075 , 8.053603 , 8.043172 ,\n", + " 8.025586 , 8.014922 , 8.00194 , 7.9942083, 7.985075 ,\n", + " 7.9840665, 7.978806 , 7.97339 , 7.9731627, 7.971814 ,\n", + " 7.972329 , 7.9674144, 7.9723177, 7.9744887, 7.9855638,\n", + " 7.991272 , 7.9956956, 8.006041 , 8.023605 , 8.038973 ,\n", + " 8.049008 , 8.066569 , 8.078107 , 8.090951 , 8.110414 ,\n", + " 8.1288595, 8.1531725, 8.172004 , 8.192166 , 8.219532 ,\n", + " 8.241356 , 8.265544 , 8.288776 , 8.314842 , 8.338862 ,\n", + " 8.363347 , 8.388729 , 8.418659 , 8.4457035, 8.479128 ,\n", + " 8.511397 , 8.542225 , 8.57435 , 8.609074 , 8.643846 ,\n", + " 8.674181 , 8.707741 , 8.740917 , 8.776131 , 8.809834 ,\n", + " 8.847663 , 8.883326 , 8.921983 , 8.956591 , 8.994466 ,\n", + " 9.032357 , 9.072943 , 9.107945 , 9.147928 , 9.18505 ,\n", + " 9.218539 , 9.25671 , 9.293107 , 9.324933 , 9.361722 ,\n", + " 9.397845 , 9.436231 , 9.464766 , 9.502145 , 9.534171 ,\n", + " 9.566268 , 9.601108 , 9.627889 , 9.660232 , 9.6932535,\n", + " 9.72142 , 9.752015 , 9.780852 , 9.808266 , 9.838272 ,\n", + " 9.864178 , 9.885547 , 9.914127 , 9.934637 , 9.957427 ,\n", + " 9.972928 , 9.992192 , 10.00496 , 10.023165 , 10.037822 ,\n", + " 10.052144 , 10.058786 , 10.073322 , 10.083076 , 10.093331 ,\n", + " 10.100321 , 10.109131 , 10.117323 , 10.123545 , 10.1341 ,\n", + " 10.142311 , 10.14612 , 10.153638 ], dtype=float32)
<xarray.Dataset>\n",
- "Dimensions: (time: 122912, beam: 3, dir: 3, x: 3, x*: 3, earth: 3, inst: 3)\n",
+ "Dimensions: (x1: 3, x2: 3, time: 122912, dir: 3, beam: 3,\n",
+ " earth: 3, inst: 3)\n",
"Coordinates:\n",
- " * time (time) datetime64[ns] 2012-06-12T12:00:02.968749 ......\n",
- " * beam (beam) int32 1 2 3\n",
+ " * x1 (x1) int32 1 2 3\n",
+ " * x2 (x2) int32 1 2 3\n",
+ " * time (time) datetime64[ns] 2012-06-12T12:00:02.968750238 ...\n",
" * dir (dir) <U1 'X' 'Y' 'Z'\n",
- " * x (x) int32 1 2 3\n",
- " * x* (x*) int32 1 2 3\n",
+ " * beam (beam) int32 1 2 3\n",
" * earth (earth) <U1 'E' 'N' 'U'\n",
" * inst (inst) <U1 'X' 'Y' 'Z'\n",
"Data variables: (12/15)\n",
- " beam2inst_orientmat (x, x*) float64 2.709 -1.34 -1.364 ... -0.3438 -0.3499\n",
+ " beam2inst_orientmat (x1, x2) float64 2.709 -1.34 -1.364 ... -0.3438 -0.3499\n",
" batt (time) float32 13.2 13.2 13.2 13.2 ... nan nan nan nan\n",
" c_sound (time) float32 1.493e+03 1.493e+03 ... nan nan\n",
" heading (time) float32 5.6 10.5 10.51 10.52 ... nan nan nan nan\n",
" pitch (time) float32 -31.5 -31.7 -31.69 ... nan nan nan\n",
" roll (time) float32 0.4 4.2 4.253 4.306 ... nan nan nan nan\n",
" ... ...\n",
+ " orientation_down (time) bool True True True True ... True True True True\n",
" vel (dir, time) float32 -1.002 -1.008 -0.944 ... nan nan\n",
" amp (beam, time) uint8 104 110 111 113 108 ... 0 0 0 0 0\n",
" corr (beam, time) uint8 97 91 97 98 90 95 95 ... 0 0 0 0 0 0\n",
- " orientation_down (time) bool True True True True ... True True True True\n",
" pressure (time) float64 5.448 5.436 5.484 5.448 ... 0.0 0.0 0.0\n",
" orientmat (earth, inst, time) float32 0.0832 0.155 ... -0.7065\n",
"Attributes: (12/39)\n",
@@ -478,25 +492,25 @@
" firmware_version: 3.34\n",
" fs: 32.0\n",
" coord_sys: inst\n",
- " has_imu: 0array(['2012-06-12T12:00:02.968749000', '2012-06-12T12:00:02.999999000',\n", - " '2012-06-12T12:00:03.031249000', ..., '2012-06-12T13:04:03.875001000',\n", - " '2012-06-12T13:04:03.906251000', '2012-06-12T13:04:03.937501000'],\n", - " dtype='datetime64[ns]')
array([1, 2, 3])
array(['X', 'Y', 'Z'], dtype='<U1')
array([1, 2, 3])
array([1, 2, 3])
array(['E', 'N', 'U'], dtype='<U1')
array(['X', 'Y', 'Z'], dtype='<U1')
array([[ 2.70874023, -1.34008789, -1.36376953],\n", + " has_imu: 0
PandasIndex(Int64Index([1, 2, 3], dtype='int64', name='x1'))
PandasIndex(Int64Index([1, 2, 3], dtype='int64', name='x2'))
PandasIndex(DatetimeIndex(['2012-06-12 12:00:02.968750238',\n", + " '2012-06-12 12:00:03.000000238',\n", + " '2012-06-12 12:00:03.031250238',\n", + " '2012-06-12 12:00:03.062500238',\n", + " '2012-06-12 12:00:03.093750238',\n", + " '2012-06-12 12:00:03.125000238',\n", + " '2012-06-12 12:00:03.156250238',\n", + " '2012-06-12 12:00:03.187500238',\n", + " '2012-06-12 12:00:03.218750238',\n", + " '2012-06-12 12:00:03.250000238',\n", + " ...\n", + " '2012-06-12 13:04:03.656250238',\n", + " '2012-06-12 13:04:03.687500238',\n", + " '2012-06-12 13:04:03.718750238',\n", + " '2012-06-12 13:04:03.750000238',\n", + " '2012-06-12 13:04:03.781250238',\n", + " '2012-06-12 13:04:03.812500238',\n", + " '2012-06-12 13:04:03.843750238',\n", + " '2012-06-12 13:04:03.875000238',\n", + " '2012-06-12 13:04:03.906250238',\n", + " '2012-06-12 13:04:03.937500238'],\n", + " dtype='datetime64[ns]', name='time', length=122912, freq=None))
PandasIndex(Index(['X', 'Y', 'Z'], dtype='object', name='dir'))
PandasIndex(Int64Index([1, 2, 3], dtype='int64', name='beam'))
PandasIndex(Index(['E', 'N', 'U'], dtype='object', name='earth'))
PandasIndex(Index(['X', 'Y', 'Z'], dtype='object', name='inst'))