# 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`: ```sh pip install maturin ``` 2. Build and install the module: ```sh maturin develop ``` ## Usage Here's an example of how to use the SHR file parser from Python: ```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: ```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 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](https://docs.rs/shr_parser/1.0.2/shr_parser/). To generate the documentation locally, run: ```sh 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.