A Perception PNRF binary file reader.
Project description
perception-pnrf
Python parser for the PNRF binary measurement format (HBK Perception).
PNRF files (.pnrf) are produced by HBK Perception data acquisition software and contain high-speed analog waveforms, digital events, CAN/fieldbus data, and SPT harmonic analysis results.
Installation
pip install perception-pnrf
Requires Python 3.10+ and NumPy.
Usage
from perception_pnrf import PnrfFile
# Open a PNRF file
with PnrfFile.open("measurement.pnrf") as pnrf:
# Iterate recorders and channels
for rec in pnrf.recorders:
print(f"Recorder: {rec.logical_name}")
for ch in rec.channels:
print(f" {ch.logical_name}: {ch.sample_count} samples, unit={ch.units}")
# Read sample data into a NumPy buffer
data = np.empty(min(ch.sample_count, 1000), dtype=np.float64)
count = ch.read_f64(data)
print(f" Read {count} samples")
Key Classes
| Class | Description |
|---|---|
PnrfFile |
Top-level file handle; provides .recorders, .groups, .metadata |
PnrfRecorder |
A data acquisition module with channels |
PnrfChannel |
A measurement channel with metadata and data access |
PnrfGroup |
Logical grouping of recorders |
Reading Data
import numpy as np
# Read a slice of samples into a preallocated buffer
values = np.empty(5000, dtype=np.float64)
count = ch.read_f64(values, start=0)
# Read all samples at once
all_values = np.empty(ch.sample_count, dtype=np.float64)
count = ch.read_f64(all_values)
# Read from a specific segment with a starting offset
segment_values = np.empty(100, dtype=np.float64)
count = ch.read_f64(segment_values, segment_index=0, start=0)
Channel Types
- Analog waveform — continuous or sweep-triggered time-series data
- Digital event — binary state channels
- SPT blob — Signal Processing Toolkit results (harmonics, order tracking)
- MATD — asynchronous sparse-pair data (CAN bus, fieldbus)
File Metadata
meta = pnrf.metadata
print(meta.title, meta.comment)
if meta.recording_start_utc is not None:
print(meta.recording_start_utc.isoformat())
Dump Tool
A CLI tool is included for inspecting PNRF files:
pnrf-dump recording.pnrf
Or via module invocation:
python -m perception_pnrf.dump recording.pnrf
Produces a structured text dump showing file metadata, recorder/channel hierarchy, segment boundaries, and sample previews.
Specification
The full reverse-engineered format specification is available in the spec/ directory of the source repository.
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file perception_pnrf-1.1.0-py3-none-any.whl.
File metadata
- Download URL: perception_pnrf-1.1.0-py3-none-any.whl
- Upload date:
- Size: 29.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
280bd09425294aee2667be491c32dad7ab3e7b8a40392f6f5ac4ccacfa95fa23
|
|
| MD5 |
a28458302ddc5423b52df190b1d4f6d7
|
|
| BLAKE2b-256 |
d29d5f7fed96cd28a78626b03aebd1ebf55125cd3cc32f54c8f4532b4baa8584
|