1 unstable release
0.1.0 | Jul 12, 2024 |
---|
#1798 in Parser implementations
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.
-
Install
maturin
:pip install maturin
-
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