Skip to main content

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.

Reader

Full Reader API reference: API_REF_READER.md

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.

Collector

Usage of Data Collector

TODO

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

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.

Release files for databeam-mcap-reader 0.5.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for databeam-mcap-reader 0.5.2
File
databeam_mcap_reader-0.5.2-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
databeam_mcap_reader-0.5.2-cp314-cp314-manylinux_2_34_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.34+ x86-64 Details
databeam_mcap_reader-0.5.2-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
databeam_mcap_reader-0.5.2-cp313-cp313-manylinux_2_34_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.34+ x86-64 Details
databeam_mcap_reader-0.5.2-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
databeam_mcap_reader-0.5.2-cp312-cp312-manylinux_2_34_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.34+ x86-64 Details
databeam_mcap_reader-0.5.2-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
databeam_mcap_reader-0.5.2-cp311-cp311-manylinux_2_34_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.34+ x86-64 Details
databeam_mcap_reader-0.5.2-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
databeam_mcap_reader-0.5.2-cp310-cp310-manylinux_2_34_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.34+ x86-64 Details

Total release size: 100.3 MB

Release files / databeam_mcap_reader-0.5.2-cp314-cp314-win_amd64.whl

Download URL databeam_mcap_reader-0.5.2-cp314-cp314-win_amd64.whl
Size 10.0 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
bc5f6e1b8fff993243996d6f1fb4e25c2f1cde07ed8958e9a265a2c6d5a42af6
BLAKE2b-256 checksum
How to use checksums
47e44df2ce88f55924e248bb9e1d120337c527ede012a4c2192e98a039dfdbf7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / databeam_mcap_reader-0.5.2-cp314-cp314-manylinux_2_34_x86_64.whl

Download URL databeam_mcap_reader-0.5.2-cp314-cp314-manylinux_2_34_x86_64.whl
Size 10.2 MB
Tags CPython 3.14 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
880330286672553f87f488bf58d223f210a5b5e4cd972544ad6c95b5824c278d
BLAKE2b-256 checksum
How to use checksums
c5c5b59fd621038bfdd35ccd3cb3a2175f3e11b2f25a6cb2fba10a8973109de9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / databeam_mcap_reader-0.5.2-cp313-cp313-win_amd64.whl

Download URL databeam_mcap_reader-0.5.2-cp313-cp313-win_amd64.whl
Size 9.8 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
4957c0af3147aec47f09aa8dabe2f5a81da41c94c84713ed420cdced258147e8
BLAKE2b-256 checksum
How to use checksums
7ed32218c4b62be65baacc548a1d0c0e7e7f7721b9690699ef094ac21460db0d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / databeam_mcap_reader-0.5.2-cp313-cp313-manylinux_2_34_x86_64.whl

Download URL databeam_mcap_reader-0.5.2-cp313-cp313-manylinux_2_34_x86_64.whl
Size 10.2 MB
Tags CPython 3.13 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
08d594a5b8a545cae8db60d5231d40e4cdebdd95a3621b913cf09b918f80d165
BLAKE2b-256 checksum
How to use checksums
78e233887c4575bc1b3b2e8e94d663d5f71dd530632f7e8e623111010f3dbb3f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / databeam_mcap_reader-0.5.2-cp312-cp312-win_amd64.whl

Download URL databeam_mcap_reader-0.5.2-cp312-cp312-win_amd64.whl
Size 9.8 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
6f8b8774446b668052477e29e6f2be3b48dc83893ead7ceca25d965cf111fa93
BLAKE2b-256 checksum
How to use checksums
20e5973075ffe6dff4cb73dbe658a788c3a7081ae041641b49cb9d54e5870b35
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / databeam_mcap_reader-0.5.2-cp312-cp312-manylinux_2_34_x86_64.whl

Download URL databeam_mcap_reader-0.5.2-cp312-cp312-manylinux_2_34_x86_64.whl
Size 10.2 MB
Tags CPython 3.12 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
4aeabde1896a121c8a674ec37a9dbba5102ccbaa87a192fbfa7ecdf406d94a8b
BLAKE2b-256 checksum
How to use checksums
c337d2e6f203f2e78043dc7dc447f988b4f9c9f398d686f9cb93cc7179de5708
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / databeam_mcap_reader-0.5.2-cp311-cp311-win_amd64.whl

Download URL databeam_mcap_reader-0.5.2-cp311-cp311-win_amd64.whl
Size 9.8 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
860d8cbee4026a85d873467f74fc5ae0851ede5c5e50d9efe69781be0e462106
BLAKE2b-256 checksum
How to use checksums
3cfae256766378e381aff93a8a94fe33b2f9ef04c1abe2ec3ca55548840998c3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / databeam_mcap_reader-0.5.2-cp311-cp311-manylinux_2_34_x86_64.whl

Download URL databeam_mcap_reader-0.5.2-cp311-cp311-manylinux_2_34_x86_64.whl
Size 10.2 MB
Tags CPython 3.11 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
535aee977d857f7e1cdcee3d47825d60842b6bd25291947110b90b6c5fbab8a6
BLAKE2b-256 checksum
How to use checksums
12e161a03e956d54ee6e8cf7329f0ea40a0e8ad305ee601d6441b85f8121699e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / databeam_mcap_reader-0.5.2-cp310-cp310-win_amd64.whl

Download URL databeam_mcap_reader-0.5.2-cp310-cp310-win_amd64.whl
Size 9.8 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
88c3a63296f833aeb4b178ec9c9e5226cdb81a8c7d45307da7ff45a5b94cfb22
BLAKE2b-256 checksum
How to use checksums
a4b6da8e7d2f90ff043124f6f2c95f552357efb1863c5bea2e4f4c8983a2f977
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / databeam_mcap_reader-0.5.2-cp310-cp310-manylinux_2_34_x86_64.whl

Download URL databeam_mcap_reader-0.5.2-cp310-cp310-manylinux_2_34_x86_64.whl
Size 10.2 MB
Tags CPython 3.10 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
6d7a5564af06d602b2f8e4b297a3e5ab3fa11ed0ffb08021f96fb375c2c47f46
BLAKE2b-256 checksum
How to use checksums
a87e2142ad12317ad0c7ebd3285e319f357ab220d75963ed18660873674ba1df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release history Release notifications | RSS feed

This release

0.5.2 This release

10 release files

0.5.1

10 release files

0.5.0

8 release files

0.4.1

8 release files

0.4.0

8 release files

0.3.2

8 release files

0.3.1

8 release files

0.3.0

8 release files

0.2.1

8 release files

0.2.0

8 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page