A comprehensive, user-centric Python API for working with enDAQ data and devices
Project description
endaq-ide
endaq.ide
contains high-level utility functions to aid in importing and inspecting enDAQ IDE recording files. Key functions/features include:
get_channel_table()
: Get summary information about the contents of a file.get_doc()
: Open an IDE, either locally or from a URL.to_pandas()
: Convert IDE data to apandas
DataFrame
, for use with other packages.
Note: This is a component of the endaq
package; it is separate to allow users to install it independently, avoiding the core endaq-python
dependencies. It is included in a full endaq
install.
endaq.ide
usage examples
Here are a few examples of endaq.ide
in use. For more information, see the full documentation.
For brevity, the following examples assume everything has been imported from endaq.ide
:
from endaq.ide import *
Opening IDE files: endaq.ide.get_doc()
endaq.ide
includes a convenient shortcut for importing IDE data: get_doc()
. It can load data from local files, or read data directly from a URL.
doc = get_doc("tests/test.ide")
doc1 = get_doc("https://info.endaq.com/hubfs/data/surgical-instrument.ide")
IDE files can be retrieved directly from Google Drive using a Drive 'sharable link' URL. The file must be set to allow access to "Anyone with the link."
doc2 = get_doc("https://drive.google.com/file/d/1t3JqbZGhuZbIK9agH24YZIdVE26-NOF5/view?usp=sharing")
Whether opening a local file or a URL, get_doc()
can be used to import only a specific interval by way of its start
and end
parameters:
doc3 = get_doc("tests/test.ide", start="5s", end="10s")
Summarizing IDE files: endaq.ide.get_channel_table()
Once an IDE file has been loaded, endaq.ide.get_channel_table()
will retrieve basic summary information about its contents.
Some environments, such as Jupyter Notebook or Colab, will automatically display the channel table data. From inside the
Python Console, use get_channel_table(doc).data
to display the information, or to access the table's contents directly as a pandas DataFrame
.
get_channel_table(doc)
channel | name | type | units | start | end | duration | samples | rate | |
---|---|---|---|---|---|---|---|---|---|
0 | 32.0 | X (16g) | Acceleration | g | 00:00.0952 | 00:19.0012 | 00:18.0059 | 7113 | 393.86 Hz |
1 | 32.1 | Y (16g) | Acceleration | g | 00:00.0952 | 00:19.0012 | 00:18.0059 | 7113 | 393.86 Hz |
2 | 32.2 | Z (16g) | Acceleration | g | 00:00.0952 | 00:19.0012 | 00:18.0059 | 7113 | 393.86 Hz |
3 | 80.0 | X (8g) | Acceleration | g | 00:00.0948 | 00:19.0013 | 00:18.0064 | 9070 | 502.09 Hz |
4 | 80.1 | Y (8g) | Acceleration | g | 00:00.0948 | 00:19.0013 | 00:18.0064 | 9070 | 502.09 Hz |
5 | 80.2 | Z (8g) | Acceleration | g | 00:00.0948 | 00:19.0013 | 00:18.0064 | 9070 | 502.09 Hz |
6 | 36.0 | Pressure/Temperature:00 | Pressure | Pa | 00:00.0945 | 00:19.0175 | 00:18.0230 | 20 | 1.10 Hz |
7 | 36.1 | Pressure/Temperature:01 | Temperature | °C | 00:00.0945 | 00:19.0175 | 00:18.0230 | 20 | 1.10 Hz |
8 | 70.0 | X | Quaternion | q | 00:01.0132 | 00:18.0954 | 00:17.0821 | 1755 | 98.47 Hz |
9 | 70.1 | Y | Quaternion | q | 00:01.0132 | 00:18.0954 | 00:17.0821 | 1755 | 98.47 Hz |
10 | 70.2 | Z | Quaternion | q | 00:01.0132 | 00:18.0954 | 00:17.0821 | 1755 | 98.47 Hz |
11 | 70.3 | W | Quaternion | q | 00:01.0132 | 00:18.0954 | 00:17.0821 | 1755 | 98.47 Hz |
12 | 59.0 | Control Pad Pressure | Pressure | Pa | 00:00.0979 | 00:18.0910 | 00:17.0931 | 180 | 10.04 Hz |
13 | 59.1 | Control Pad Temperature | Temperature | °C | 00:00.0979 | 00:18.0910 | 00:17.0931 | 180 | 10.04 Hz |
14 | 76.0 | Lux | Light | Ill | 00:00.0000 | 00:18.0737 | 00:18.0737 | 71 | 3.79 Hz |
15 | 76.1 | UV | Light | Index | 00:00.0000 | 00:18.0737 | 00:18.0737 | 71 | 3.79 Hz |
The results can be filtered by measurement type:
get_channel_table(doc, ACCELERATION)
channel | name | type | units | start | end | duration | samples | rate | |
---|---|---|---|---|---|---|---|---|---|
0 | 32.0 | X (16g) | Acceleration | g | 00:00.0952 | 00:19.0012 | 00:18.0059 | 7113 | 393.86 Hz |
1 | 32.1 | Y (16g) | Acceleration | g | 00:00.0952 | 00:19.0012 | 00:18.0059 | 7113 | 393.86 Hz |
2 | 32.2 | Z (16g) | Acceleration | g | 00:00.0952 | 00:19.0012 | 00:18.0059 | 7113 | 393.86 Hz |
3 | 80.0 | X (8g) | Acceleration | g | 00:00.0948 | 00:19.0013 | 00:18.0064 | 9070 | 502.09 Hz |
4 | 80.1 | Y (8g) | Acceleration | g | 00:00.0948 | 00:19.0013 | 00:18.0064 | 9070 | 502.09 Hz |
5 | 80.2 | Z (8g) | Acceleration | g | 00:00.0948 | 00:19.0013 | 00:18.0064 | 9070 | 502.09 Hz |
Measurement types can be combined to retrieve more than one:
get_channel_table(doc, ACCELERATION+TEMPERATURE)
channel | name | type | units | start | end | duration | samples | rate | |
---|---|---|---|---|---|---|---|---|---|
0 | 32.0 | X (16g) | Acceleration | g | 00:00.0952 | 00:19.0012 | 00:18.0059 | 7113 | 393.86 Hz |
1 | 32.1 | Y (16g) | Acceleration | g | 00:00.0952 | 00:19.0012 | 00:18.0059 | 7113 | 393.86 Hz |
2 | 32.2 | Z (16g) | Acceleration | g | 00:00.0952 | 00:19.0012 | 00:18.0059 | 7113 | 393.86 Hz |
3 | 80.0 | X (8g) | Acceleration | g | 00:00.0948 | 00:19.0013 | 00:18.0064 | 9070 | 502.09 Hz |
4 | 80.1 | Y (8g) | Acceleration | g | 00:00.0948 | 00:19.0013 | 00:18.0064 | 9070 | 502.09 Hz |
5 | 80.2 | Z (8g) | Acceleration | g | 00:00.0948 | 00:19.0013 | 00:18.0064 | 9070 | 502.09 Hz |
6 | 36.1 | Pressure/Temperature:01 | Temperature | °C | 00:00.0945 | 00:19.0175 | 00:18.0230 | 20 | 1.10 Hz |
7 | 59.1 | Control Pad Temperature | Temperature | °C | 00:00.0979 | 00:18.0910 | 00:17.0931 | 180 | 10.04 Hz |
Information about a specific interval can be retrieved by using the start
and/or end
arguments. Note that due to different sampling rates, the start and end times for slower channels may not precisely match the specified start
or end
.
get_channel_table(doc, ACCELERATION+TEMPERATURE, start="0:05", end="0:10")
channel | name | type | units | start | end | duration | samples | rate | |
---|---|---|---|---|---|---|---|---|---|
0 | 32.0 | X (16g) | Acceleration | g | 00:05.0000 | 00:10.0001 | 00:05.0000 | 1969 | 393.75 Hz |
1 | 32.1 | Y (16g) | Acceleration | g | 00:05.0000 | 00:10.0001 | 00:05.0000 | 1969 | 393.75 Hz |
2 | 32.2 | Z (16g) | Acceleration | g | 00:05.0000 | 00:10.0001 | 00:05.0000 | 1969 | 393.75 Hz |
3 | 80.0 | X (8g) | Acceleration | g | 00:05.0000 | 00:10.0001 | 00:05.0000 | 2510 | 501.98 Hz |
4 | 80.1 | Y (8g) | Acceleration | g | 00:05.0000 | 00:10.0001 | 00:05.0000 | 2510 | 501.98 Hz |
5 | 80.2 | Z (8g) | Acceleration | g | 00:05.0000 | 00:10.0001 | 00:05.0000 | 2510 | 501.98 Hz |
6 | 36.1 | Pressure/Temperature:01 | Temperature | °C | 00:04.0954 | 00:10.0966 | 00:06.0011 | 6 | 1.00 Hz |
7 | 59.1 | Control Pad Temperature | Temperature | °C | 00:05.0086 | 00:10.0095 | 00:05.0008 | 50 | 9.98 Hz |
Extracting intervals: endaq.ide.extract_time()
A portion of an IDE file can be saved to another, new IDE. The source can be a local filename or an opened IDE (from a file or URL).
extract_time("tests/test.ide", "doc_extracted.ide", start="0:05", end="0:10")
extract_time(doc1, "doc1_extracted.ide", start="0:05", end="0:10")
Additional sample IDE recording files
Here are a number of example IDE files, which may be used with endaq.ide
:
file_urls = ['https://info.endaq.com/hubfs/data/surgical-instrument.ide',
'https://info.endaq.com/hubfs/data/97c3990f-Drive-Home_70-1616632444.ide',
'https://info.endaq.com/hubfs/data/High-Drop.ide',
'https://info.endaq.com/hubfs/data/HiTest-Shock.ide',
'https://info.endaq.com/hubfs/data/Drive-Home_01.ide',
'https://info.endaq.com/hubfs/data/Tower-of-Terror.ide',
'https://info.endaq.com/hubfs/data/Punching-Bag.ide',
'https://info.endaq.com/hubfs/data/Gun-Stock.ide',
'https://info.endaq.com/hubfs/data/Seat-Base_21.ide',
'https://info.endaq.com/hubfs/data/Seat-Top_09.ide',
'https://info.endaq.com/hubfs/data/Bolted.ide',
'https://info.endaq.com/hubfs/data/Motorcycle-Car-Crash.ide',
'https://info.endaq.com/hubfs/data/train-passing.ide',
'https://info.endaq.com/hubfs/data/baseball.ide',
'https://info.endaq.com/hubfs/data/Clean-Room-VC.ide',
'https://info.endaq.com/hubfs/data/enDAQ_Cropped.ide',
'https://info.endaq.com/hubfs/data/Drive-Home_07.ide',
'https://info.endaq.com/hubfs/data/ford_f150.ide',
'https://info.endaq.com/hubfs/data/Drive-Home.ide',
'https://info.endaq.com/hubfs/data/Mining-Data.ide',
'https://info.endaq.com/hubfs/data/Mide-Airport-Drive-Lexus-Hybrid-Dash-W8.ide']
These can be directly read from endaq.com using endaq.ide.get_doc()
, as previously described.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file endaq-ide-1.1.0.tar.gz
.
File metadata
- Download URL: endaq-ide-1.1.0.tar.gz
- Upload date:
- Size: 28.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e7b724f570625788a8ec0dcd357460ae828b9a51b9ee0a8d84034c13deb623df |
|
MD5 | 78f89532e96dc993d862eb3c18af1736 |
|
BLAKE2b-256 | 419ec94dd232e30f9086638de4cb266d6235338b626de54479acc7ea149b9a1e |
File details
Details for the file endaq_ide-1.1.0-py3-none-any.whl
.
File metadata
- Download URL: endaq_ide-1.1.0-py3-none-any.whl
- Upload date:
- Size: 20.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | adab63306578c60b9e76d964230ad99c53011efe1fd6182c97db64dd1314ed06 |
|
MD5 | 72784d7f042b0a4a0b153e46afa1935d |
|
BLAKE2b-256 | 6ab33020757813304e4c655791e41259fc96c24ce876359dc3cdbba90f094dfb |