01 / OVERVIEW
What is APReader?
APReader is an open-source, community-maintained Python package published as
apread. Its project documentation says it reads catmanAP binary files
directly and exposes measurement channels and channel groups. It is not an HBK
product, so test it with the catman versions, channel types, and file structures
used in your own workflow.
PyPI currently declares Python 3.9 or later and labels the package operating-system independent. That makes it a possible route on Windows, macOS, or Linux, subject to the package and your files working correctly in the chosen environment.
02 / SETUP
Prepare a Python environment
Use a dedicated virtual environment for reproducible testing, then install the package from PyPI. Record the Python and package versions used for each validation run rather than depending on an unpinned workstation installation.
python -m pip install -U apread
Keep representative BIN fixtures read-only and store generated outputs separately. Start with a small known-good file whose channel count, units, and sample lengths can be checked in catman or against a trusted export.
03 / READ
Open a BIN file and list channels
Create an APReader instance with a file path, then inspect the
Channels collection. The exact attributes available can vary with the
package version and data found in the file, so check the project documentation and
inspect a representative channel before building a larger pipeline.
from apread import APReader
reader = APReader("measurement.bin")
for channel in reader.Channels:
print(channel.Name, len(channel.data))
Channel data is exposed through channel.data. For an initial validation,
compare names and sample counts before performing transformations.
channel = reader.Channels[0]
values = channel.data
print(channel.Name)
print(values[:5])
04 / STRUCTURE
Time channels and groups
The APReader README says time channels are recognized by names such as
time or zeit, and channel groups are assembled using matching
data lengths. Access the resulting collection through reader.Groups.
for group in reader.Groups:
print(group)
Treat this grouping as package behavior, not proof that every source file has one universal time base. If channels were acquired at different sample rates or across multiple time domains, verify the relationship between each data channel and its time channel before combining or exporting them.
05 / METADATA
Inspect external channel headers
APReader exposes parsed external header fields through a channel's
exthdr dictionary. The project documentation shows fields such as
PhysUnit. Inspect which keys are actually present instead of assuming
every channel carries the same metadata.
for channel in reader.Channels:
unit = channel.exthdr.get("PhysUnit")
print(channel.Name, unit)
Decide explicitly how names, units, comments, timestamps, and acquisition metadata map to your output format. A plain CSV table has no standardized place for much of that context; a sidecar JSON or a manifest may be appropriate for a custom workflow.
06 / TRADE-OFFS
Benefits and caveats
| Area | Potential benefit | What to validate |
|---|---|---|
| Automation | Repeat the same inspection across many files | Error handling, naming, and output collisions |
| Data access | Use channel arrays in a Python analysis stack | Types, scaling, sample counts, and time alignment |
| Metadata | Read available external header fields | Missing keys and faithful output mapping |
| Portability | Package metadata declares OS independence | Your Python, package, and BIN-version combination |
- APReader is third-party software, not an official HBK compatibility layer.
- Large files can increase initialization time and memory use; measure with realistic fixtures.
- The current project documentation places output serialization and post-processing in user code.
- Pin dependencies and add regression tests before using scripts in an engineering process.
- Compare channel counts, lengths, units, and representative values with a trusted reference.
Integrity note
A successful parse only shows that the reader returned data. It does not by itself prove that every expected channel, sample, unit, or timestamp was preserved.
07 / NEXT STEP
Build a small validation fixture first
Begin with one file and a trusted catman export. Record the generating catman version, expected channels, units, sample counts, and any multiple time domains. Only then test batch behavior across the range of files you expect to receive.
For other routes, compare the available tools for opening catman BIN files. If your target is a flat-file workflow, review the BIN-to-CSV options and limitations before deciding how to preserve metadata.
Planned concept
Prefer a desktop workflow instead of maintaining Python scripts?
BIN Bridge is an early market-validation concept for local, offline batch processing. No product functionality is available yet.
Join Early Access08 / SOURCES
References
- APReader — project repository and usage documentation
- apread — Python Package Index listing
- HBK — catman data acquisition software
- HBK — catman support downloads
Source pages checked 15 Sep 2026. Product availability and compatibility can change.