Skip to main content

Parses sweeps from a Signal Hound Spike file.

Project description

SHR Parser Python Bindings

This project provides Python bindings for the Rust-based shr_parser library, which is designed to parse and handle SHR files. The SHR file format includes a file header and multiple sweeps, each with its own header and data. This library uses memory mapping for efficient file reading and Rayon for parallel processing of sweeps.

Features

  • Parse SHR Files: Read and interpret SHR files, including headers and sweeps.
  • Validate Files: Ensure the integrity of SHR files by validating signatures and versions.
  • Sweep Metrics Calculation: Compute key metrics such as peak, mean, and low values from sweep data.
  • CSV Export: Export parsed SHR data to CSV format for easy analysis and reporting.

Installation

To install the Python bindings, you need to build the Rust library and install it as a Python module using maturin. Make sure you have Rust and Python installed on your system.

  1. Install maturin:

    pip install maturin
    
  2. Build and install the module:

    maturin develop
    

Usage

Here's an example of how to use the SHR file parser from Python:

import shr_parser

# Define the file path and parsing type
file_path = "path/to/your/shrfile.shr"
parsing_type = 0  # SHRParsingType::Peak

# Create a SHRParser instance and use its methods
parser = shr_parser.SHRParser(file_path, parsing_type)
print(parser.get_file_path())
print(parser.get_file_header())
for sweep in parser.get_sweeps():
    print(sweep)
parser.to_csv("output.csv")

Module Structure

SHRParser Class

A class representing a parser for SHR files.

Methods

  • __init__(self, file_path: str, parsing_type: int) -> SHRParser
  • to_str(self) -> str
  • to_csv(self, path: str) -> None
  • get_file_path(self) -> str
  • get_file_header(self) -> str
  • get_sweeps(self) -> List[Tuple[int, int, float, float]]

Example

Here is an example usage of the SHRParser class:

import shr_parser

# Define the file path and parsing type
file_path = "path/to/your/shrfile.shr"
parsing_type = 0  # SHRParsingType::Peak

# Create a parser instance
parser = shr_parser.SHRParser(file_path, parsing_type)

# Get file path
print(parser.get_file_path())

# Get file header
print(parser.get_file_header())

# Get sweeps
for sweep in parser.get_sweeps():
    print(sweep)

# Export to CSV
parser.to_csv("output.csv")

Documentation

For detailed documentation on the shr_parser library, refer to the Rust documentation. To generate the documentation locally, run:

cargo doc --open

Contributing

Contributions are welcome! If you encounter any issues or have suggestions for improvements, please open an issue or submit a pull request.

License

This project is licensed under the GPLv3 License. See the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

shr_parser-0.1.6.tar.gz (19.7 kB view hashes)

Uploaded Source

Built Distributions

shr_parser-0.1.6-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl (527.6 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ x86-64

shr_parser-0.1.6-pp310-pypy310_pp73-musllinux_1_2_i686.whl (552.0 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ i686

shr_parser-0.1.6-pp310-pypy310_pp73-musllinux_1_2_armv7l.whl (630.0 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ ARMv7l

shr_parser-0.1.6-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl (543.5 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ ARM64

shr_parser-0.1.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (361.9 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

shr_parser-0.1.6-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (414.9 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ s390x

shr_parser-0.1.6-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (401.7 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

shr_parser-0.1.6-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (376.9 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686

shr_parser-0.1.6-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (368.6 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

shr_parser-0.1.6-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (367.2 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

shr_parser-0.1.6-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl (528.0 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ x86-64

shr_parser-0.1.6-pp39-pypy39_pp73-musllinux_1_2_i686.whl (553.9 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ i686

shr_parser-0.1.6-pp39-pypy39_pp73-musllinux_1_2_armv7l.whl (631.6 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ ARMv7l

shr_parser-0.1.6-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl (543.9 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ ARM64

shr_parser-0.1.6-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (362.5 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

shr_parser-0.1.6-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (415.6 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ s390x

shr_parser-0.1.6-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (402.0 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

shr_parser-0.1.6-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (378.5 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686

shr_parser-0.1.6-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (369.1 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

shr_parser-0.1.6-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (368.2 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

shr_parser-0.1.6-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl (528.3 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ x86-64

shr_parser-0.1.6-pp38-pypy38_pp73-musllinux_1_2_i686.whl (554.0 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ i686

shr_parser-0.1.6-pp38-pypy38_pp73-musllinux_1_2_armv7l.whl (631.9 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ ARMv7l

shr_parser-0.1.6-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl (544.2 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ ARM64

shr_parser-0.1.6-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (416.6 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ s390x

shr_parser-0.1.6-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (402.3 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

shr_parser-0.1.6-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (369.1 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

shr_parser-0.1.6-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (368.7 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

shr_parser-0.1.6-cp312-none-win_amd64.whl (204.7 kB view hashes)

Uploaded CPython 3.12 Windows x86-64

shr_parser-0.1.6-cp312-none-win32.whl (194.2 kB view hashes)

Uploaded CPython 3.12 Windows x86

shr_parser-0.1.6-cp312-cp312-musllinux_1_2_x86_64.whl (526.9 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.2+ x86-64

shr_parser-0.1.6-cp312-cp312-musllinux_1_2_i686.whl (551.1 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.2+ i686

shr_parser-0.1.6-cp312-cp312-musllinux_1_2_armv7l.whl (629.7 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.2+ ARMv7l

shr_parser-0.1.6-cp312-cp312-musllinux_1_2_aarch64.whl (542.1 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.2+ ARM64

shr_parser-0.1.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (361.7 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

shr_parser-0.1.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (412.0 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ s390x

shr_parser-0.1.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (400.4 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ppc64le

shr_parser-0.1.6-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (375.9 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ i686

shr_parser-0.1.6-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (367.8 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARMv7l

shr_parser-0.1.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (365.5 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

shr_parser-0.1.6-cp312-cp312-macosx_11_0_arm64.whl (308.5 kB view hashes)

Uploaded CPython 3.12 macOS 11.0+ ARM64

shr_parser-0.1.6-cp312-cp312-macosx_10_12_x86_64.whl (312.5 kB view hashes)

Uploaded CPython 3.12 macOS 10.12+ x86-64

shr_parser-0.1.6-cp311-none-win_amd64.whl (205.5 kB view hashes)

Uploaded CPython 3.11 Windows x86-64

shr_parser-0.1.6-cp311-none-win32.whl (194.9 kB view hashes)

Uploaded CPython 3.11 Windows x86

shr_parser-0.1.6-cp311-cp311-musllinux_1_2_x86_64.whl (527.3 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.2+ x86-64

shr_parser-0.1.6-cp311-cp311-musllinux_1_2_i686.whl (552.0 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.2+ i686

shr_parser-0.1.6-cp311-cp311-musllinux_1_2_armv7l.whl (631.8 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.2+ ARMv7l

shr_parser-0.1.6-cp311-cp311-musllinux_1_2_aarch64.whl (542.6 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.2+ ARM64

shr_parser-0.1.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (362.1 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

shr_parser-0.1.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (413.6 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ s390x

shr_parser-0.1.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (401.6 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ppc64le

shr_parser-0.1.6-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (376.7 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686

shr_parser-0.1.6-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (368.0 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARMv7l

shr_parser-0.1.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (366.6 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

shr_parser-0.1.6-cp311-cp311-macosx_11_0_arm64.whl (309.4 kB view hashes)

Uploaded CPython 3.11 macOS 11.0+ ARM64

shr_parser-0.1.6-cp311-cp311-macosx_10_12_x86_64.whl (312.9 kB view hashes)

Uploaded CPython 3.11 macOS 10.12+ x86-64

shr_parser-0.1.6-cp310-none-win_amd64.whl (205.6 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

shr_parser-0.1.6-cp310-none-win32.whl (194.5 kB view hashes)

Uploaded CPython 3.10 Windows x86

shr_parser-0.1.6-cp310-cp310-musllinux_1_2_x86_64.whl (527.5 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.2+ x86-64

shr_parser-0.1.6-cp310-cp310-musllinux_1_2_i686.whl (552.3 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.2+ i686

shr_parser-0.1.6-cp310-cp310-musllinux_1_2_armv7l.whl (631.8 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.2+ ARMv7l

shr_parser-0.1.6-cp310-cp310-musllinux_1_2_aarch64.whl (542.9 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.2+ ARM64

shr_parser-0.1.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (362.1 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

shr_parser-0.1.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (412.8 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ s390x

shr_parser-0.1.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (401.5 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ppc64le

shr_parser-0.1.6-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (376.9 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686

shr_parser-0.1.6-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (368.1 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARMv7l

shr_parser-0.1.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (366.9 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

shr_parser-0.1.6-cp310-cp310-macosx_11_0_arm64.whl (309.6 kB view hashes)

Uploaded CPython 3.10 macOS 11.0+ ARM64

shr_parser-0.1.6-cp39-none-win_amd64.whl (206.4 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

shr_parser-0.1.6-cp39-none-win32.whl (195.6 kB view hashes)

Uploaded CPython 3.9 Windows x86

shr_parser-0.1.6-cp39-cp39-musllinux_1_2_x86_64.whl (527.9 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.2+ x86-64

shr_parser-0.1.6-cp39-cp39-musllinux_1_2_i686.whl (555.8 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.2+ i686

shr_parser-0.1.6-cp39-cp39-musllinux_1_2_armv7l.whl (631.4 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.2+ ARMv7l

shr_parser-0.1.6-cp39-cp39-musllinux_1_2_aarch64.whl (543.5 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.2+ ARM64

shr_parser-0.1.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (362.9 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

shr_parser-0.1.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (414.2 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ s390x

shr_parser-0.1.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (402.2 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ppc64le

shr_parser-0.1.6-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (378.6 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686

shr_parser-0.1.6-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (369.4 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARMv7l

shr_parser-0.1.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (368.3 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

shr_parser-0.1.6-cp39-cp39-macosx_11_0_arm64.whl (310.7 kB view hashes)

Uploaded CPython 3.9 macOS 11.0+ ARM64

shr_parser-0.1.6-cp38-none-win_amd64.whl (206.4 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

shr_parser-0.1.6-cp38-none-win32.whl (195.7 kB view hashes)

Uploaded CPython 3.8 Windows x86

shr_parser-0.1.6-cp38-cp38-musllinux_1_2_x86_64.whl (528.0 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.2+ x86-64

shr_parser-0.1.6-cp38-cp38-musllinux_1_2_i686.whl (553.5 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.2+ i686

shr_parser-0.1.6-cp38-cp38-musllinux_1_2_armv7l.whl (631.2 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.2+ ARMv7l

shr_parser-0.1.6-cp38-cp38-musllinux_1_2_aarch64.whl (543.8 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.2+ ARM64

shr_parser-0.1.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (363.0 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

shr_parser-0.1.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl (413.7 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ s390x

shr_parser-0.1.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (402.1 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ppc64le

shr_parser-0.1.6-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl (378.3 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686

shr_parser-0.1.6-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (369.2 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARMv7l

shr_parser-0.1.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (368.1 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page