diff --git a/.github/workflows/pypi.yml b/.github/workflows/pypi.yml new file mode 100644 index 000000000..239b3fa1d --- /dev/null +++ b/.github/workflows/pypi.yml @@ -0,0 +1,46 @@ +# Builds mhkit and publishes to testpypi.org on every commit to master. On tagged commits, also publishes to pypi.org. +# https://packaging.python.org/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/ + +name: Build and release 🐍 📦 + +on: + push: + branches: + - master + release: + types: [published] + +jobs: + build-and-publish: + name: Build and release 🐍 📦 + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - uses: actions/setup-python@v2 + with: + python-version: 3.8 + + - run: python -m pip install build --user + - run: python -m build --sdist --wheel --outdir dist/ . + + - name: Upload to Test PyPI + if: github.event_name != 'release' && github.repository_owner == 'MHKiT-Software' + uses: pypa/gh-action-pypi-publish@release/v1 + with: + user: __token__ + password: ${{ secrets.TEST_PYPI_API_TOKEN }} + repository-url: https://test.pypi.org/legacy/ + skip-existing: true + + - name: Upload to PyPI (tagged release only) + if: + github.repository_owner == 'MHKiT-Software' && github.event_name == 'release' && + github.event.action == 'published' + uses: pypa/gh-action-pypi-publish@release/v1 + with: + user: __token__ + password: ${{ secrets.PYPI_API_TOKEN }} diff --git a/.gitignore b/.gitignore index 8a60a1ba3..9063f86c4 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ $ cat .gitignore *.swp *.tws *~ +*.png # Directories **/__pycache__/ diff --git a/README.md b/README.md index 4a61b9446..d4d0833cf 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,20 @@ ![](figures/logo.png) MHKiT-Python ===================================== -[![Py 3.8,3.9 | Windows Mac Linux](https://github.com/MHKiT-Software/MHKiT-Python/actions/workflows/main.yml/badge.svg)](https://github.com/MHKiT-Software/MHKiT-Python/actions/workflows/main.yml) -[![Coverage Status](https://coveralls.io/repos/github/MHKiT-Software/MHKiT-Python/badge.svg?branch=master)](https://coveralls.io/github/MHKiT-Software/MHKiT-Python?branch=master) -[![Downloads](https://pepy.tech/badge/mhkit)](https://pepy.tech/project/mhkit) -[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3924683.svg)](https://doi.org/10.5281/zenodo.3924683) - +
MHKiT-Python is a Python package designed for marine renewable energy applications to assist in data processing and visualization. The software package include functionality for: diff --git a/examples/adcp_example.ipynb b/examples/adcp_example.ipynb index 1977be4de..0c1c77d37 100644 --- a/examples/adcp_example.ipynb +++ b/examples/adcp_example.ipynb @@ -1,4013 +1,4013 @@ { - "cells": [ - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 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", - "1. **Import Data**\n", - "\n", - "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:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "scrolled": true - }, - "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": [ - "## 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", - "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**: 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" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Reading file data/dolfyn/Sig1000_tidal.ad2cp ...\n" - ] - } - ], - "source": [ - "ds = dolfyn.read('data/dolfyn/Sig1000_tidal.ad2cp')" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "There are two ways to see what's in a Dataset. The first is to simply type the dataset's name to see the standard xarray output. To access a particular variable in a dataset, use dict-style (`ds['vel']`) or attribute-style syntax (`ds.vel`). See the [xarray docs](http://xarray.pydata.org/en/stable/getting-started-guide/quick-overview.html) for more details on how to use the xarray format." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<xarray.Dataset>\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.500999927 ...\n", - " * dirIMU (dirIMU) <U1 'E' 'N' 'U'\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", - " * 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", - " pressure (time) float32 9.713 9.718 9.718 ... 9.596 9.594 9.596\n", - " mag (dirIMU, time) float32 72.5 72.7 72.6 ... -197.2 -195.7\n", - " accel (dirIMU, time) float32 -0.00479 -0.01437 ... 9.729\n", - " batt (time) float32 16.6 16.6 16.6 16.6 ... 16.4 16.4 15.2\n", - " ... ...\n", - " telemetry_data (time) uint8 0 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0\n", - " boost_running (time) uint8 0 0 0 0 0 0 0 0 1 0 ... 0 1 0 0 0 0 0 0 1\n", - " 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 (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", - " burst_config: {"press_valid": true, "temp_valid": true, "compass...\n", - " n_cells: 28\n", - " ... ...\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", - " beam_angle: 25
<xarray.DataArray 'range' (range: 28)>\n", - "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", - " 7.2, 7.7, 8.2, 8.7, 9.2, 9.7, 10.2, 10.7, 11.2, 11.7, 12.2, 12.7,\n", - " 13.2, 13.7, 14.2, 14.7])\n", - "Coordinates:\n", - " * range (range) float64 1.2 1.7 2.2 2.7 3.2 ... 12.7 13.2 13.7 14.2 14.7\n", - "Attributes:\n", - " units: m
<xarray.Dataset>\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", - " * 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.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) 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) 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) 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.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", - " inst_model: Signature1000\n", - " ... ...\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.1898
<xarray.Dataset>\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.500999927 ...\n", + " * dirIMU (dirIMU) <U1 'E' 'N' 'U'\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", + " * 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", + " pressure (time) float32 9.713 9.718 9.718 ... 9.596 9.594 9.596\n", + " mag (dirIMU, time) float32 72.5 72.7 72.6 ... -197.2 -195.7\n", + " accel (dirIMU, time) float32 -0.00479 -0.01437 ... 9.729\n", + " batt (time) float32 16.6 16.6 16.6 16.6 ... 16.4 16.4 15.2\n", + " ... ...\n", + " telemetry_data (time) uint8 0 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0\n", + " boost_running (time) uint8 0 0 0 0 0 0 0 0 1 0 ... 0 1 0 0 0 0 0 0 1\n", + " 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 (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", + " burst_config: {"press_valid": true, "temp_valid": true, "compass...\n", + " n_cells: 28\n", + " ... ...\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", + " beam_angle: 25
<xarray.DataArray 'range' (range: 28)>\n", + "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", + " 7.2, 7.7, 8.2, 8.7, 9.2, 9.7, 10.2, 10.7, 11.2, 11.7, 12.2, 12.7,\n", + " 13.2, 13.7, 14.2, 14.7])\n", + "Coordinates:\n", + " * range (range) float64 1.2 1.7 2.2 2.7 3.2 ... 12.7 13.2 13.7 14.2 14.7\n", + "Attributes:\n", + " units: m
<xarray.Dataset>\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", + " * 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.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) 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) 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) 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.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", + " inst_model: Signature1000\n", + " ... ...\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.1898
<xarray.Dataset>\n", - "Dimensions: (x1: 3, x2: 3, time: 122912, dir: 3, beam: 3,\n", - " earth: 3, inst: 3)\n", - "Coordinates:\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", - " * 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 (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", - " 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", - " inst_make: Nortek\n", - " inst_model: Vector\n", - " inst_type: ADV\n", - " rotate_vars: ['vel']\n", - " n_beams: 3\n", - " profile_mode: continuous\n", - " ... ...\n", - " recorder_size_bytes: 4074766336\n", - " vel_range: normal\n", - " firmware_version: 3.34\n", - " fs: 32.0\n", - " coord_sys: inst\n", - " has_imu: 0
<xarray.Dataset>\n", + "Dimensions: (x1: 3, x2: 3, time: 122912, dir: 3, beam: 3,\n", + " earth: 3, inst: 3)\n", + "Coordinates:\n", + " * x1 (x1) int32 1 2 3\n", + " * x2 (x2) int32 1 2 3\n", + " * time (time) datetime64[ns] 2012-06-12T12:00:02.968749046 ...\n", + " * dir (dir) <U1 'X' 'Y' 'Z'\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 (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", + " 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", + " inst_make: Nortek\n", + " inst_model: Vector\n", + " inst_type: ADV\n", + " rotate_vars: ['vel']\n", + " n_beams: 3\n", + " profile_mode: continuous\n", + " ... ...\n", + " recorder_size_bytes: 4074766336\n", + " vel_range: normal\n", + " firmware_version: 3.34\n", + " fs: 32.0\n", + " coord_sys: inst\n", + " has_imu: 0
\n", + " | U_avg | \n", + "U_avg_power_weighted | \n", + "P_avg | \n", + "P_std | \n", + "P_max | \n", + "P_min | \n", + "
---|---|---|---|---|---|---|
U_bins | \n", + "\n", + " | \n", + " | \n", + " | \n", + " | \n", + " | \n", + " |
(0.0, 0.1] | \n", + "0.067459 | \n", + "0.000000 | \n", + "0.000000 | \n", + "0.000000 | \n", + "0.000000 | \n", + "0.000000 | \n", + "
(0.1, 0.2] | \n", + "0.115614 | \n", + "0.000000 | \n", + "0.000000 | \n", + "0.000000 | \n", + "0.000000 | \n", + "0.000000 | \n", + "
(0.2, 0.3] | \n", + "0.249676 | \n", + "0.225639 | \n", + "0.000000 | \n", + "0.000000 | \n", + "0.000000 | \n", + "0.000000 | \n", + "
(0.3, 0.4] | \n", + "0.339600 | \n", + "0.315561 | \n", + "0.000000 | \n", + "0.000000 | \n", + "0.000000 | \n", + "0.000000 | \n", + "
(0.4, 0.5] | \n", + "0.459393 | \n", + "0.437249 | \n", + "2890.724986 | \n", + "2660.810022 | \n", + "5551.535008 | \n", + "229.914964 | \n", + "
(0.5, 0.6] | \n", + "0.548507 | \n", + "0.532974 | \n", + "19677.343518 | \n", + "4645.890936 | \n", + "24323.234454 | \n", + "15031.452582 | \n", + "
(0.6, 0.7] | \n", + "0.671449 | \n", + "0.655362 | \n", + "40369.435517 | \n", + "3679.260135 | \n", + "45506.306677 | \n", + "37083.470337 | \n", + "
(0.7, 0.8] | \n", + "0.726189 | \n", + "0.704845 | \n", + "52413.972024 | \n", + "2856.737142 | \n", + "57360.861473 | \n", + "50670.102583 | \n", + "
(0.8, 0.9] | \n", + "0.843958 | \n", + "0.825916 | \n", + "79944.000855 | \n", + "9798.569674 | \n", + "96206.928025 | \n", + "66531.815452 | \n", + "
(0.9, 1.0] | \n", + "0.938701 | \n", + "0.920960 | \n", + "103970.042175 | \n", + "5828.263891 | \n", + "112163.977434 | \n", + "99100.055332 | \n", + "
(1.0, 1.1] | \n", + "1.046607 | \n", + "1.026293 | \n", + "148511.100008 | \n", + "18809.350864 | \n", + "171583.550611 | \n", + "124179.073981 | \n", + "
(1.1, 1.2] | \n", + "1.147348 | \n", + "1.127691 | \n", + "200340.820581 | \n", + "6299.518554 | \n", + "209073.741656 | \n", + "187772.752668 | \n", + "