Skip to main content

A python module to access binary data files generated by Teledyne WebbResearch gliders

Project description

PyPI version Docs badge License

DBDREADER

Synopsis

Slocum ocean gliders are autonomous underwater vehicles, used for making oceanographic measurements. The data that these devices and their sensors collect, are stored in binary data files. The python module dbdreader provides the utilities to extract the data from the binary files, so that they can be further analysed.

Change log

Version 6.0.1

  • Drops dependency on scipy.

Version 6.0.0

  • Offers a python only implementation, alongside the C-extension to read the binary files. At the expense of processing speed, no compiler is required to use this package.

  • A github workflow is implemented that generates pre-compiled wheels for linux and windows platforms for python version 3.10, 3.11, 3.12 and 3.13.

  • Some speed improvements of the C-extenstion

version 0.5.9

  • Handles reading errors that can occur when a compressed file turns out to be corrupted.

version 0.5.8

  • Changes default location for cache files on linux from $HOME/.dbdreader to $HOME/.local/share/dbdreader

  • Introduces new class DBDCache to manage the location where cache files are looked up. Constructing an object with an arguments (re-)sets a default path, avoiding the need to use the keyword cacheDir when creating objects of DBD and MultiDBD classes.

  • Fixes an issue with MultiDBD when a parameter is requested that is not present in all files, but in at least one. The get() method returns just those data that are present. In case of get_sync and friends, data are interpolated if possible, or padded with nans.

Version 0.5.7

  • Drops dependency on python 3.10+, introduced in 0.5.6, and should work still with python 3.9.

Version 0.5.6

  • Moves data directory under dbdreader, making these files accessible after an pip install

Version 0.5.5

  • Makes MultiDBD's get_CTD_sync method compatible with RBR CTD data.

Version 0.5.4

  • Adds support for reading compressed data files for windows platform.
  • Improved building environment

Version 0.5.1

  • Adds support for reading compressed data files
  • dbdrename now accepts -x and -X options to rename compressed data files as uncompressed data files

Version 0.4.15

  • Modifies sorting key algorithm to the DBDList class. This fixes a bug when glider data filenames are composed of a glider name that contains a dash. For example, filenames such as hereon-amadeus-2019-3-1.sbd would fail, but are valid now.

Version 0.4.14

  • Adds a new option to the get() method of the MultiDBD class, where if the keyword include_sources=True, for each parameter an additional list is returned that has for each data point a reference to the DBD instance that produced the data point. This allows to query the source of a specific data point.

    This merges the (modified) pull request #14 by MCazaly.

Version 0.4.13

  • Modifies behaviour when the user requests a parameter that has no data. If the requested parameter is not a valid glider sensor name, assume a user-error and raise an exception, otherwise return an empty array.

    This behaviour fixes a bug for MultiDBD: each file opened with MultiDBD would fail to produce any data if one or more parameters that are asked for, are not present in the file.

    New behaviour returns data for the exisiting parameters (only); empty array for the missing parameters (or nans if return_nans=True)

    Concludes pull request #16 by jklymak.

Version 0.4.12

  • PatternSelect now accepts the option of a non-standard cache directory. Thanks to hawesie.

  • MultiDBD's get_sync() now returns nan's for those parameters for which no data exist, provided that at least one of the requested parameters contains data.

Version 0.4.11

  • Version 0.4.9 introduced a bug that in some rare circumstances caused segmentation faults. This has been fixed.

  • Merged pull request by roje-bodc with improved error handling in case of missing cache files. If a DbdError occurs due to a missing cache file, detailed information can be obtained from the .data property of the exception instance.

Version 0.4.10

  • Includes pull request by jklymak, which allows dbdreader to deal with empty files, and files capitalised file extensions, as well as a check on the encoding version.

  • Includes a bug fix when raising an exception when handling a prior exception in case of reading problematic files.

  • Assumes that if the first parameter given to MultiDBD is a string, the user did not mean to provide a list of filename strings, but a pattern. An error is raised if pattern is specified explicitly when filenames is given as a string.

Version 0.4.9

  • Bug fix for handling inf values correctly (issue #8). Thanks to jr3cermak for spotting this bug.
  • Bug fix for incorrect behaviour when reading the time parameter explicitly for example xxx.get("m_present_time").

Version 0.4.8

  • Support for reading {demnst}bd files from G3S gliders (issue #6). (Thanks to Owain Jones)

  • Bug fix for correctly throwing an exception when cache file is missing(issue #5)

Version 0.4.7

  • Bug fix for reading dbd files on Windows.

  • a wheel provided for CPython 3.9 on Windows 64 bit.

Version 0.4.6

  • Added get_CTD_sync, a convenience method to retrieve CTD data, and other parameters mapped on the CTD time stamps. Also ensures time stamps are monotonically increasing.

  • Adds bounds to what values of latitude and longitude are considered valid.

Version 0.4.5

  • dbdreader now ignores the first line of data in each binary file

  • dbdreader checks whether the value of the parameters read are finite, ignoring them if they are not.

Installation (linux)

The python module dbdreader can be installed from source, using the standard method to install python code. Note that this method requires an C-extension to be build. (The actual reading from files is done in C for speed.) In order to build the extension successfully, you would need a C-compiler. On Linux, this can be gcc, with supporting development/header files for python. On Fedora you would do sudo dnf install python3-devel, or sudo apt-get install python3-dev on Ubuntu.

Furthermore, as of version 0.5, which adds support for reading compressed files, a dependency on the lz4 library is introduced. If available, the system-wide library will be used (recommended approach). Alternatively, the lz4.[ch] files from the original source (https://github.com/lz4/lz4), and included in this package, will be compiled into the C-extension. To install the system-wide lz4 library on Fedora you would do sudo dnf install lz4-devel lz4-libs. On Ubuntu this can be achieved by sudo apt-get install liblz4-dev liblz4-1.

Alternatively, dbdreader can also be installed from PyPi, using pip3 install dbdreader.

Installation on Windows

If you want to install dbdreader from source, you will need a C compiler as well to compile the C-extension. Besides the Python environment you will need to install the Microsoft Visual Studio Compiler. The community edition will do. When installing MVSC, make sure you tick the box python development during the setup. Once installed dbdreader can be installed, and the C-extension should be compiled automatically.

Installiation using pip, for example as in py -m pip install dbdreader also requires the C compiler. For Python version 3.9, however, a wheel is provided, which can be installed adding the option --only-binary :all: to the pip command:

$ pip install --only-binary :all: dbdreader

Documentation

Comprehensive documentation is provided at https://dbdreader.readthedocs.io/en/latest/

Quick-start

For the impatient...

The dbdreader module implements a class DBD() which provides the machinery to read a single dbd file. The most commonly used methods are:

  • get(parametername)
  • get_sync(parametername, *other_parameternames)

The first method returs a tuple with time and values for requested parameter. The second method, returns a tuple with time and values of the first parameter requested, and of all further listed parameters, all interpolated on the time base of the first parameter.

Mostly, it is not one file that is required to be processed, but a number of them. This interface is implemented by the MultiDBD class. Files can either be specified as a list of filenames, or as a pattern using wildcards.

Examples

To read a single file:

>>> dbd = DBD("00010010.dbd")
>>> t, pitch = dbd.get("m_pitch")
>>> t, hdg, ptch, roll = dbd.get_sync("m_heading", "m_pitch", "m_roll")

Or, doing the same, but using both dbd and ebd files:

>>> dbd = DBD(pattern="00010010.[de]bd")
>>> t, pitch = dbd.get("m_pitch")
>>> t, hdg, ptch, roll = dbd.get_sync("m_heading", "m_pitch", "m_roll")
>>> t, p_ctd, p_nav = dbd.get_sync("sci_water_pressure", "m_water_pressure")

Python 2

Python 2.7 is not supported anymore. However, you should be able to make the code able to run on python2.7 using the future package.

  • pip install future
  • pasteurize dbdreader.

For details see http://python-future.org/pasteurize.html.

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

dbdreader-0.6.1.tar.gz (2.0 MB view details)

Uploaded Source

Built Distributions

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

dbdreader-0.6.1-cp313-cp313-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.13Windows x86-64

dbdreader-0.6.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

dbdreader-0.6.1-cp312-cp312-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.12Windows x86-64

dbdreader-0.6.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

dbdreader-0.6.1-cp311-cp311-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.11Windows x86-64

dbdreader-0.6.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

dbdreader-0.6.1-cp310-cp310-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.10Windows x86-64

dbdreader-0.6.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

File details

Details for the file dbdreader-0.6.1.tar.gz.

File metadata

  • Download URL: dbdreader-0.6.1.tar.gz
  • Upload date:
  • Size: 2.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dbdreader-0.6.1.tar.gz
Algorithm Hash digest
SHA256 bd603a92d234cc71a0ed01ed5fefef96b705b1bf7834835570c6c9d89c4f59fd
MD5 47bb777a6446e8656b203f0ed6d8f5c1
BLAKE2b-256 88d2200da9fddb24bc51aafe64efeadf1c5709328eb805362875778f20cdc975

See more details on using hashes here.

File details

Details for the file dbdreader-0.6.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: dbdreader-0.6.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dbdreader-0.6.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 446dff1a242e1d5ae3c9898ef9970907ce945cfc59750402ad0c48bb69bcb0a0
MD5 e57e7136374d8eecf105014707b9134d
BLAKE2b-256 7b681fac5c6f70dc2d6ac13bd4ec5f8b0ef3ca09466241d88a7a8172fa987c55

See more details on using hashes here.

File details

Details for the file dbdreader-0.6.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dbdreader-0.6.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 72ea80ca5153d7bf1764febcd77cdc112f316ee7758d1e74c2ca346c86d7fa74
MD5 29ac3465dfefaf7b438907b279784063
BLAKE2b-256 a18b051cfcec29738bf0765493fdf9af7666bf625c0f6b0bf68e91914f58b1d9

See more details on using hashes here.

File details

Details for the file dbdreader-0.6.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: dbdreader-0.6.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dbdreader-0.6.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 2f6f8e8cf9058fba06357331a5b7139a52a731a28e7a493460308c4a92d1b357
MD5 6dab3be2bf114effea101788afb4c2c7
BLAKE2b-256 96758f01976f9c9337d11caeae0afff5d6e6d9971886cb5c4eff17087f4bf5a2

See more details on using hashes here.

File details

Details for the file dbdreader-0.6.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dbdreader-0.6.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 45da584cc887be7052ff981dfc640f4e88def8b7d4f1272247f104c12b0c06a7
MD5 d329f24757a73e1d9a76a7979e3b905f
BLAKE2b-256 67756759d0f77fad8942c4c3b5b66b3d8d71ef94404548c4845a8ceadc41c0df

See more details on using hashes here.

File details

Details for the file dbdreader-0.6.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: dbdreader-0.6.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dbdreader-0.6.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 790ad412a286d21c935670fcff97c115bf348d31102bbf8f1b429e7b76e06e87
MD5 d62f5b98c78c84687335d6ed49071750
BLAKE2b-256 ca8e271dda4e892b45fdac0fdd837c77d2b391f1e097c07e8b2e9860c1bce5a2

See more details on using hashes here.

File details

Details for the file dbdreader-0.6.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dbdreader-0.6.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 41bb55f2a445d3b8c61ce963da4c97ac05451cb294c5b885503499905114d994
MD5 f8be499cba6ae2d7410e1ee627a338bb
BLAKE2b-256 ecd437ab45646ce7d729b3acd75507d461945c995426858c96eb3573cf6d3f93

See more details on using hashes here.

File details

Details for the file dbdreader-0.6.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: dbdreader-0.6.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dbdreader-0.6.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 2108af848ce037b05523dd569b16ecdecd98815a17902343d418841a4cb45544
MD5 4bb9501ba92fe4387bb976798f8d9dbb
BLAKE2b-256 18fcf404c8f268cb19201f5e58e999106350a5b01c208d8e7bf8922e689954f5

See more details on using hashes here.

File details

Details for the file dbdreader-0.6.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dbdreader-0.6.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0ea30107387125aedeaec0d6ac6df12ca99e79dcbcce0f3855416a614014760a
MD5 8213dcd2c9c9d73ee4d18a18500eace9
BLAKE2b-256 a2405adeeed2db777c2f0620e05a041482e0004c2b6f0efad6a45cfb2a1ed618

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