Skip to main content

MCAP file reader for JSON data implemented in C++ and Python.

Project description

Read DataBeam MCAP files with ease.

This Python library provides a high performance parser - implemented in C++ - for MCAP files produced by the DataBeam DAQ software: https://github.com/virtual-vehicle/databeam.

databeam_mcap_reader only works for reading MCAP files with JSON-encoded data containing a mandatory schema.

Unfinalized or damaged MCAP files will get automatically repaired by the MCAP-CLI tool.

See official MCAP documentation for more information.

Usage of Reader

Get a reader instance:

import databeam_mcap_reader as mr
reader = mr.McapReader()

Open a file:

reader.open('path/to/file.mcap')

Fetch details about the file:

# print infos
print(reader.get_info_string())

# dict of topics with field names, data-types and message counts
structure = reader.get_structure()

# list of topic names
topics = reader.get_topic_names()

# total number of messages
count = reader.get_total_message_count()

# start and end time in nanoseconds
start_time_ns = reader.time_start_ns
end_time_ns = reader.time_end_ns

Fetch data from a specific topic:

# get a numpy structured array with data from a topic
data = reader.get_data(topic_name)

Fetch all data:

# get a dict of numpy structured arrays with data from all topics
data = reader.get_all_data()

Fetch a specific amount of data with a start time and number of messages:

data = reader.get_data('testtopic', start_time_ns=0, num_messages=1000)
# fetch next block, starting right after the first
data = reader.get_data('testtopic', start_time_ns=data['ts'][-1] + 1, num_messages=1000)

Example for chunked reader:

for chunk in reader.get_data_chunked("testtopic", chunk_size_megabytes=1000):
    print(f'got {chunk.size} messages')
    # --> process data chunk (numpy structured array)!

Use matplotlib to plot data:

import matplotlib.pyplot as plt
for topic_name in reader.get_topic_names():
    data = reader.get_data(topic_name)
    fields = reader.get_structure()[topic_name]['fields']
    dtypes = reader.get_structure()[topic_name]['dtypes']
    channels = []
    for i, field in enumerate(fields):
        if dtypes[i] != 'boolean' and dtypes[i] != 'string' and dtypes[i] != 'array':
            channels.append(field)
    for ch in [ch for ch in channels if ch != 'ts']:
        plt.plot(data['ts'], data[ch], label=ch)

plt.xlabel('Time')
plt.ylabel('Value')
plt.legend()
plt.title('Channels over Time')
plt.show()

Please see reader.py - there are examples at the end of the file.

Usage of Data Collector

TODO

Configure Logging

import logging
import databeam_mcap_reader as mr
logging.getLogger('databeam_mcap').setLevel(logging.DEBUG)  # or other logging level

Build wheel files

Wheel files must be specifically built for all supported Python versions.

Linux / Docker

Make sure Docker is installed and running: https://docs.docker.com/get-docker/

make linux_wheels

This will run a manylinux Docker container and build the wheel files with the specified Python versions (see Makefile).

Windows

Make sure Python is installed in all required versions and py command is available: https://www.python.org/downloads/windows/

Install Visual Studio 2022 with Python and C++ extensions: https://visualstudio.microsoft.com/downloads/

Install Conan natively: https://conan.io/downloads

conan
conan profile detect --force

Open terminal and run:

.\build_wheels_windows.ps1 <python_version> [<python_version> ...]
Example:
 .\build_wheels_windows.ps1 3.10 3.11 3.12 3.13

Development / Testing (Linux)

Build only c++ extension for development

make dev

python3
import build_dev._core as mr
mr.parse_mcap(...)

Test built wheel

make wheel

python3 -m venv venv_test
. ./venv_test/bin/activate
pip install dist/databeam_mcap_readerXXX.whl

python3 -c "import databeam_mcap_reader as mr; import numpy as np; reader = mr.McapReader(); mr.parse_mcap('whee', 't', np.dtype([]), 1)"

OK, if there are no import-errors and it complains, that whee file is missing.

License

Distributed under the MIT license. See LICENSE.txt file for more information.

Contact

Virtual Vehicle Research GmbH: https://www.v2c2.at

Project Lead: Peter Sammer - peter.sammer@v2c2.at

This repository contains only public open-source components: https://github.com/virtual-vehicle/databeam

We gladly offer support, custom installations and extensions for devices, test-benches, experiments and more.

Acknowledgments

Virtual Vehicle Research GmbH has received funding within COMET Competence Centers for Excellent Technologies from the Austrian Federal Ministry for Climate Action, the Austrian Federal Ministry for Labour and Economy, the Province of Styria (Dept. 12) and the Styrian Business Promotion Agency (SFG). The Austrian Research Promotion Agency (FFG) has been authorised for the programme management.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

databeam_mcap_reader-0.3.2-cp313-cp313-win_amd64.whl (7.6 MB view details)

Uploaded CPython 3.13Windows x86-64

databeam_mcap_reader-0.3.2-cp313-cp313-manylinux_2_34_x86_64.whl (8.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

databeam_mcap_reader-0.3.2-cp312-cp312-win_amd64.whl (7.6 MB view details)

Uploaded CPython 3.12Windows x86-64

databeam_mcap_reader-0.3.2-cp312-cp312-manylinux_2_34_x86_64.whl (8.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

databeam_mcap_reader-0.3.2-cp311-cp311-win_amd64.whl (7.6 MB view details)

Uploaded CPython 3.11Windows x86-64

databeam_mcap_reader-0.3.2-cp311-cp311-manylinux_2_34_x86_64.whl (8.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

databeam_mcap_reader-0.3.2-cp310-cp310-win_amd64.whl (7.6 MB view details)

Uploaded CPython 3.10Windows x86-64

databeam_mcap_reader-0.3.2-cp310-cp310-manylinux_2_34_x86_64.whl (8.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

File details

Details for the file databeam_mcap_reader-0.3.2-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for databeam_mcap_reader-0.3.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 6cdf841d5f93446e0c34e48ff917d2a88f2a7b86b6c8a85e75a8f8fc17ceee4b
MD5 8f056f2733a276dcbe5559730622fc7c
BLAKE2b-256 3a2d7b582b7238257c477b47a368302d6b115d4488200d968fba1dca52573990

See more details on using hashes here.

File details

Details for the file databeam_mcap_reader-0.3.2-cp313-cp313-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for databeam_mcap_reader-0.3.2-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 85fa5ccfd3633cfb880505ef0ee73ce5e6521aeaa034781cc09ae8432372fc10
MD5 060ca6d67210575777e65fc69a709380
BLAKE2b-256 aff2909fa66f5a73e014cf69f8db96ba1db60098f4fd611ad5ebd27124336d64

See more details on using hashes here.

File details

Details for the file databeam_mcap_reader-0.3.2-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for databeam_mcap_reader-0.3.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 6ebc608ce1a1aae6430cf44e76eca452c831bf94550aefa0eb7aef925ad18871
MD5 9652b7118ec28f9846792ad3a540104b
BLAKE2b-256 68ca605fa5c43865dd97a464a3e82cfbc9b09be6a995d2fd19b2d4b8b9c8efe3

See more details on using hashes here.

File details

Details for the file databeam_mcap_reader-0.3.2-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for databeam_mcap_reader-0.3.2-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 9f9ff0c9732eeaa2c8dae0a31fcb7248941435285430f92c2069e381e8a9b666
MD5 238a3af0df171f9e26ff6f7174974e6b
BLAKE2b-256 7ffe3289ab8555fde525305a452b9ba268e4a3ba50dc35c4754c60fcea5dfff5

See more details on using hashes here.

File details

Details for the file databeam_mcap_reader-0.3.2-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for databeam_mcap_reader-0.3.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 4767b7c330a18188352c58c950e42ec10c205c7236bad92f9f557e9f6718d736
MD5 a827e881d4531dc783b4636585ba62d3
BLAKE2b-256 ae3c7fec4d68f0b3c5480d31f8c3e22110841ee7a3c41ab016a139d766d6ccd4

See more details on using hashes here.

File details

Details for the file databeam_mcap_reader-0.3.2-cp311-cp311-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for databeam_mcap_reader-0.3.2-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 021831e14332977d2dc97bb648086b31396f48246a25c700e767cfcb8119f233
MD5 c9cbf3d2a2959e5b2870ac87a995745e
BLAKE2b-256 833fd42394984b8afd9d3f095288e98d3f17731a26c558102ec8614bd3e7d5dc

See more details on using hashes here.

File details

Details for the file databeam_mcap_reader-0.3.2-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for databeam_mcap_reader-0.3.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 edf51101a90a6ef6860012352aa33e9e123ba54ea0e9392b8d7207e94ebed26a
MD5 b2dfe6d9efbc86ce42278d6c3c8935f1
BLAKE2b-256 5a9483e507ad3aac6cfc116d47249fd8c182687842376578f12e421e23de44b7

See more details on using hashes here.

File details

Details for the file databeam_mcap_reader-0.3.2-cp310-cp310-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for databeam_mcap_reader-0.3.2-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 6c2386e062d12bd293761add173b419e41e507607774f32333bdabc80f858ecf
MD5 784e6a113c0177c56ee4b4b7f802b3f3
BLAKE2b-256 a6659561014a68c383c8007a28ce10e5251f1ca6c55214ad20830eb703e28885

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