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

AreaPotential benefitWhat to validate
AutomationRepeat the same inspection across many filesError handling, naming, and output collisions
Data accessUse channel arrays in a Python analysis stackTypes, scaling, sample counts, and time alignment
MetadataRead available external header fieldsMissing keys and faithful output mapping
PortabilityPackage metadata declares OS independenceYour 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 Access

08 / SOURCES

References

  1. APReader — project repository and usage documentation
  2. apread — Python Package Index listing
  3. HBK — catman data acquisition software
  4. HBK — catman support downloads

Source pages checked 15 Sep 2026. Product availability and compatibility can change.