Skip to main content

Python API for accessing IDE data recordings

Project description

Build Status codecov

idelib README

idelib is a Python API for accessing enDAQ's IDE recordings. The IDE format is an EBML encoded file using a custom schema. This library utilizes our ebmlite to parse the files, and provides classes that make reading data simple.

IDE File Basics

What's an IDE file?

An IDE file is a read-only hierarchical data format that stores recording information generated by an enDAQ sensor device. It contains both time-indexed data from several different kinds of sensors (like acceleration, pressure, temperature, etc.), as well as metadata about the recording device (like device serial number, model number, device name, etc.) and recording settings.

Accessing an IDE file

The top-level interface for an IDE file is the Dataset object, through which one can access all of the above-listed information. When you open a file for reading, for example, this is the type of object that is returned.

Opening an IDE File

You can open an IDE file like so:

filename = "your_file.IDE"
with idelib.importFile(filename) as ds:
    print(type(ds))

Note: a Dataset object perfoms lazy-loading, meaning that it only loads information as is needed. As a result, it internally retains a handle to the source file which after use needs to be closed. This can be accomplished by either using Dataset as a context manager (as seen above; this is the recommended method), or by using Dataset as a normal value and calling the close() method manually:

filename = "your_file.IDE"
ds = idelib.importFile(filename)
# use `ds` here
ds.close()  # remember to close the file after use!

Getting recording data

Channels and Subchannels

IDE files organize recording data into channels and subchannels. A channel encapsulates data recorded by a particular individual sensor on the device (e.g., XYZ acceleration from the ADXL375 DC Accelerometer); a subchannel, if present, specifies a particular data stream within a channel (e.g., the X-coordinate acceleration from the ADXL375 DC Accelerometer).

At the top-level, a Dataset object has a channels member, which is a dict of all channels recorded in the file. The dict is keyed by channel id numbers, with Channel objects in the values.

Each Channel object has a subchannels member, which is a list of Subchannel objects. If the channel has no subchannels, this member will be None.

The below table lists current conventions for channels across all enDAQ sensors:

(Abbreviated) Product No. Description Example Product Nos.
S-D enDAQ S-series devices with single digital accelerometers S3-D16, S4-D40
S-DD enDAQ S-series devices with dual digital accelerometers S1-D100D40, S2-D25D16
S-ED enDAQ S-series devices with an analog electrocapacitive and digital accelerometer S5-E25D40, S4-E100D40
S-RD enDAQ S-series devices with an analog piezoresistive and digital accelerometer S4-R500D40, S5-R2000D40
SSX Midé Slam Stick X data recorders SSX
SSC Midé Slam Stick C data recorders SSC
SSS Midé Slam Stick S data recorders SSS

The below table lists channel ID numbers used in a recording file based on the recording device’s product number (device series numbers and accelerometer sensitivity ranges are omitted when applicable to all such devices):

Sensor Channel Valid Devices Suchannels
Main Accelerometer 8 S-RD, S-ED, SSS, SSX X-, Y-, Z-axis Acceleration
16/200g Accelerometer 32 S-DD, SSX, SSS, SSC, S-D16, S-D200 X-, Y-, Z-axis Acceleration
8/40g Accelerometer 80 S-RD, S-DD, S-ED, S-D40, S-D8 X-, Y-, Z-axis Acceleration
IMU Gyroscope 47 All1 X-, Y-, Z-axis Rotation
Absolute Orientation 65 All1 X-, Y-, Z-, W-axis Quaternion; Acc
Relative Orientation 70 All1 X-, Y-, Z-, W-axis Quaternion
MPL3115 36 All1 Pressure, Temperature 2
MS8607 59 All1 Pressure, Temperature, Humidity 3
SI1133 76 All1 Lux, UV

1 excluding early SSC/SSS/SSX models

2 1 Hz Internal Measurements

3 10 Hz Control Pad Measurements

To simply use all recording data, we can iterate through each subchannel in a dataset like so:

for ch in ds.channels.values():
    for sch in ch.subchannels:
        print(sch)

EventArrays and raw data

Each Channel and Subchannel object has a getSession() method, which returns an EventArray object. EventArray is a wrapper around a channel's underlying recording data that loads data on demand from the source file. You can index an EventArray (e.g., eventarray[i] for some index i) to get a numpy ndarray of data. Data is organized in an n-dimensional array.

For subchannels, this will always be a 2-by-n array, where n is the number of samples recorded; eventarray[1] indexes the samples, eventarray[0] indexes the respective timestamps.

For channels, this will be a (c+1)-by-n array, where n is the number of samples recorded and c is the number of subchannels; eventarray[1:] indexes the samples, eventarray[0] indexes the respective timestamps.

Getting metadta

Dataset makes available some basic metadata. Some useful pieces of information are stored directly as members:

>>> ds.filename
'C:\\Users\\Public\\SSX09546_019.IDE'

Other data is stored in the dict member recorderInfo:

>>> ds.recorderInfo['RecorderSerial']
9546
>>> ds.recorderInfo['PartNumber']
'S3-E500D40'

EventArray also stores some sample-specific metadata, like the data's units:

>>> eventarray.units
('Acceleration', u'g')

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

idelib-3.2.0.tar.gz (90.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

idelib-3.2.0-py3-none-any.whl (92.9 kB view details)

Uploaded Python 3

File details

Details for the file idelib-3.2.0.tar.gz.

File metadata

  • Download URL: idelib-3.2.0.tar.gz
  • Upload date:
  • Size: 90.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.5.0.1 requests/2.24.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.7.6

File hashes

Hashes for idelib-3.2.0.tar.gz
Algorithm Hash digest
SHA256 a983b0b5c3b586db4c83d581b607f636c6dbc539044db3402c6634a4b51dea5d
MD5 147633442e210d352a7fcc0997ea6951
BLAKE2b-256 15433c01f145892b7d4d503cec0445c2fe6a25e2717739bb89b789bce7cf2794

See more details on using hashes here.

File details

Details for the file idelib-3.2.0-py3-none-any.whl.

File metadata

  • Download URL: idelib-3.2.0-py3-none-any.whl
  • Upload date:
  • Size: 92.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.5.0.1 requests/2.24.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.7.6

File hashes

Hashes for idelib-3.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 aef342e63c59299d59c5cb30a8082b42ddcf6dcb2acdbc5b0f6165550b8c82ff
MD5 157d51d1411bd445d506ff16c0957cdf
BLAKE2b-256 a81fceff749b30bc816e77566384a074c73a2a7850f28fff6c3d46f69a3a4e31

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page