1 unstable release

0.1.0 Jul 12, 2024

#1798 in Parser implementations

GPL-3.0-only

17KB
50 lines

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.

Dependencies

~6.5MB
~125K SLoC