IMCtermite
IMCtermite provides access to proprietary IMC measurement file formats introduced and developed by imc Test & Measurement GmbH. The library currently supports both the legacy IMC2 Data Format and the newer IMC3 Data Format, which are commonly encountered with the file extensions .raw and .dat. These formats are employed i.a. by the measurement hardware imc CRONOSflex to dump and store data and the software packages imc Studio & imc FAMOS for measurement data control and analysis. Thanks to the integrated Python module, the extracted measurement data can be stored in any open-source file format accessible by Python like i.a. csv, json or parquet.
On the Record Evolution Platform, the library can be used both as a command line tool for interactive usage and as a Python module to integrate IMC measurement files into any ETL workflow.
Supported formats
- IMC2 marker-based files. Reference: docs/imc2-format.md
- IMC3 files, including bundled and single-channel variants. Reference: docs/imc3-format.md
Overview
- Supported formats
- Format reference
- Build and Installation
- Usage and Examples
- Testing
- Releases
- References
Format reference
IMCtermite auto-detects the file format while loading a file. The same CLI and Python interfaces are used for both supported formats; no explicit format flag is required.
| format | typical extensions | support status | notes |
|---|---|---|---|
| IMC2 | .raw, .dat | supported | Legacy marker-based stream format |
| IMC3 | .raw, .dat | supported | Structured successor format; compressed IMC3 is currently rejected |
Detailed format notes live in dedicated pages:
Installation
The IMCtermite library may be employed both as a CLI tool and a python module.
CLI tool
To build the CLI tool locally, use the default target make resulting
in the binary imctermite. To ensure system-wide availability, the installation
of the tool (in the default location /usr/local/bin) is done via
make install
which may require root permissions.
Python
To integrate the library into a customized ETL toolchain, several python targets are available. For a local in-place build that enables you to run the examples, use:
make python-build
Installation with pip
This fork is distributed as imctermite3 on the Python Package Index. Once published, install it with
python3 -m pip install imctermite3
The Python import remains from imctermite import ImcTermite. The distribution
provides binary wheels for Windows and Linux with Python 3.10-3.13 and
requires NumPy, which pip installs automatically.
Do not install imctermite and imctermite3 in the same environment: both
provide the imctermite import package. To replace the original distribution:
python3 -m pip uninstall imctermite
python3 -m pip install imctermite3
However, if your platform/architecture is not supported you can still compile the source distribution yourself, which requires python3_setuptools, numpy, and an up-to-date compiler supporting C++11 standard (e.g. gcc version >= 10.2.0).
Usage
CLI
The usage of the imctermite binary looks like this:
imctermite <imc-file> [options]
You have to provide a single supported IMC file and any option to specify what
to do with the data. All available options can be listed with imctermite --help:
Options:
-c, --listchannels list channels
-b, --listblocks list IMC key-blocks
-d, --output output directory to print channels
-s, --delimiter csv delimiter/separator char for output
-h, --help show this help message
-v, --version display version
For instance, to show a list of all channels included in sample-data.raw, you
do imctermite sample-data.raw --listchannels. No output files are
written by default. Output files are written only when an existing (!) directory
is provided as argument to the --output option. By default, every output file
is written using a , delimiter. You may provide any custom separator with the
option --delimiter. For example, in order to use |, the binary is called with
options imctermite sample-data.raw -b -c -s '|'.
Python
Given the IMCtermite module is available, we can import it and declare an instance
of it by passing an IMC file to the constructor:
from imctermite import ImcTermite
imcraw = ImcTermite("sample/sampleA.raw")
An example of how to create an instance and obtain the list of channels is:
from imctermite import ImcTermite
# declare and initialize instance of "imctermite" by passing an IMC file
try :
imcraw = ImcTermite("samples/sampleA.raw")
except RuntimeError as e :
print("failed to load/parse IMC file: " + str(e))
# obtain list of channels as list of dictionaries (without data)
channels = imcraw.get_channels(False)
print(channels)
Typed channel metadata
For integrations that need a stable metadata contract without loading sample data, use the typed API:
from imctermite import ImcTermite
imcraw = ImcTermite("samples/sampleA.raw")
for channel in imcraw.get_channels_metadata():
print(channel.name, channel.y_unit, channel.sample_count)
ChannelMetadata.name is the canonical channel name and falls back to the IMC
component-group name when the source channel name is empty. The literal source
value remains available as ChannelMetadata.source_name. The existing
get_channels() dictionary schema is unchanged.
File, group, standalone text-object, and typed channel-property metadata are available through separate typed getters:
metadata = imcraw.get_file_metadata()
groups = imcraw.get_groups_metadata()
text_objects = imcraw.get_text_objects_metadata()
channel = imcraw.get_channels_metadata()[0]
print(metadata.producer, metadata.comment)
print(channel.properties)
TSA custom-decoder support
For native custom decoders, lib/imc_raw.hpp provides copied TSA container
bytes and logical timestamped-record access. This supports application-specific
frame decoding while IMCtermite remains responsible only for container parsing,
metadata, and sample access; it does not decode proprietary protocol
descriptions or write IMC files.
A more complete example, including the methods for
obtaining the channels, i.a. their data and/or directly printing them to files,
can be found in the python/examples folder.
Chunked NumPy export (fast path)
For large files, you can iterate over channel data in chunks as NumPy arrays. This avoids creating large Python lists and allows for streaming processing (e.g. writing to Parquet). See python/examples/usage_numpy_chunks.py for a complete example.
Testing
Prepare the local test environment with make prepare-test, then run end-to-end tests with make test.
The Python environment is expected to be prepared outside Make and already contain the required build and test dependencies.
To emit the Python wrapper coverage report through the same target, ensure pytest-cov is installed and use make test COVERAGE=1.
See tests/README.md for details.
References
IMC
- https://www.imc-tm.de/produkte/messtechnik-software/imc-famos/import-export
- https://www.imc-tm.de/produkte/messtechnik-hardware/imc-cronosflex/ueberblick/
- https://www.imc-tm.de/download-center/produkt-downloads/imc-famos/handbuecher
- https://www.imc-tm.de/fileadmin/Public/Downloads/Manuals/imc_FAMOS/imcGemeinsameKomponenten.pdf
- https://github.com/Apollo3zehn/ImcFamosFile
- https://apollo3zehn.github.io/ImcFamosFile/api/ImcFamosFile.FamosFileKeyType.html
Cython
PyPI
- https://pypi.org/help/#apitoken
- https://sgoel.dev/posts/uploading-binary-wheels-to-pypi-from-github-actions/
- https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsrun
- https://github.com/pypa/cibuildwheel/blob/main/examples/github-deploy.yml
- https://cibuildwheel.readthedocs.io/en/stable/deliver-to-pypi/
- https://github.com/actions/download-artifact#download-all-artifacts
- https://github.com/actions/download-artifact?tab=readme-ov-file#download-multiple-filtered-artifacts-to-the-same-directory
iconv
Metadata
Release files for imctermite3 3.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| imctermite3-3.0.0.tar.gz | 283.4 kB | With provenance | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| imctermite3-3.0.0-cp313-cp313-win_amd64.whl | CPython 3.13 | CPython 3.13 | Windows x86-64 | Details |
| imctermite3-3.0.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl | CPython 3.13 | CPython 3.13 | Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 | Details |
| imctermite3-3.0.0-cp312-cp312-win_amd64.whl | CPython 3.12 | CPython 3.12 | Windows x86-64 | Details |
| imctermite3-3.0.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| imctermite3-3.0.0-cp311-cp311-win_amd64.whl | CPython 3.11 | CPython 3.11 | Windows x86-64 | Details |
| imctermite3-3.0.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 | Details |
| imctermite3-3.0.0-cp310-cp310-win_amd64.whl | CPython 3.10 | CPython 3.10 | Windows x86-64 | Details |
| imctermite3-3.0.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl | CPython 3.10 | CPython 3.10 | Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 | Details |
Total release size: 13.0 MB
Release files / imctermite3-3.0.0.tar.gz
| Download URL | imctermite3-3.0.0.tar.gz |
|---|---|
| Size | 283.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ec70dcc0c18b00b6ee4363b3b6fc2a62ebc00fd197e1c387d63b4818f4caa7fc
|
|
BLAKE2b-256 checksum How to use checksums |
1e9c584bc8ea2d420ceab90f0a0c7014d23c3269b23fc586ce4f101cc8779048
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / imctermite3-3.0.0-cp313-cp313-win_amd64.whl
| Download URL | imctermite3-3.0.0-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 412.2 kB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
86cb313e546257fc4e7a5393ffd636f29a028ce33d3ab6c866e0cd862c61aae1
|
|
BLAKE2b-256 checksum How to use checksums |
8ba0b5e709b9370e6d3a57171c52eff7a6c3ff47e769b86f8e7598044338c470
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / imctermite3-3.0.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | imctermite3-3.0.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.13 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
299da1e9cfeafa9f1b635fabb10066aa91bb8a8f62196fc3151625e86d8067ed
|
|
BLAKE2b-256 checksum How to use checksums |
a22e8ea3a2aa35e6df29a1607957997578036a6a652395d28c8cbfa04645b3c5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / imctermite3-3.0.0-cp312-cp312-win_amd64.whl
| Download URL | imctermite3-3.0.0-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 412.9 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
b17057b20847f119d96ca1980d3b2aa0a63b51d2194653445537ab5689306fc9
|
|
BLAKE2b-256 checksum How to use checksums |
4ebd85351767f3f293a7a3a2d6864f0ccd47192b6045f3c0197b0728748c316b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / imctermite3-3.0.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | imctermite3-3.0.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.12 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
6796acf9183b759ac81bb17723fecf13cbdce24902ee43d157cdaf2bb58604a1
|
|
BLAKE2b-256 checksum How to use checksums |
8d926f4e33b87a57d8b628e1d87703de2c79bda0d75e561302a7ffafd4469027
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / imctermite3-3.0.0-cp311-cp311-win_amd64.whl
| Download URL | imctermite3-3.0.0-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 414.5 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
7b64a1982b4fc46ebbf26ff7c466bd49b138542114eba80e6db810c91b5c2dc3
|
|
BLAKE2b-256 checksum How to use checksums |
0a6f6c7a85b921774df000340367d933386106048ba9cbbeadeaa8535fbdea6d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / imctermite3-3.0.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | imctermite3-3.0.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 2.8 MB |
| Tags | CPython 3.11 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
d78b9cad68d8f539a968fb09941253ec7a7834120c1d145b77c39a1babaa4755
|
|
BLAKE2b-256 checksum How to use checksums |
272485e9c66f0fe0ed7c7401cb532a36253aaedff1817e3017911ac7fecfee2a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / imctermite3-3.0.0-cp310-cp310-win_amd64.whl
| Download URL | imctermite3-3.0.0-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 414.5 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
d66b38b31054332b96d9153c4fd37ee22b59c0bdab3c5dc8d50bdeca6fb2d562
|
|
BLAKE2b-256 checksum How to use checksums |
d33bb219360bcb5b34ff3675c24ac82c75f45090e55a75ea5468a54c09c8f208
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / imctermite3-3.0.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | imctermite3-3.0.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 2.8 MB |
| Tags | CPython 3.10 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
0fd7d908197c0352beb0cf418e17069eeec1229ea5ecd26ca32c63e00c8fd19a
|
|
BLAKE2b-256 checksum How to use checksums |
12069e9d0f95c9678dd52ee844a523704651ed2dc9eba6eee1696167d833ab47
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logSecurity for imctermite3 3.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 9 files in this release have been uploaded with provenance metadata.
Attestation for imctermite3-3.0.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.