https://github.com/aarkue/rustxes
A Python package to efficiently import XES or OCEL2 event logs using Rust.
https://github.com/aarkue/rustxes
data-science process-mining rust xes
Last synced: 3 months ago
JSON representation
A Python package to efficiently import XES or OCEL2 event logs using Rust.
- Host: GitHub
- URL: https://github.com/aarkue/rustxes
- Owner: aarkue
- License: apache-2.0
- Created: 2023-10-24T06:42:21.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-02-20T10:14:38.000Z (4 months ago)
- Last Synced: 2025-02-20T10:25:03.350Z (4 months ago)
- Topics: data-science, process-mining, rust, xes
- Language: Rust
- Homepage: https://pypi.org/project/rustxes/
- Size: 83 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# rustxes
A Python package to efficiently import XES or OCEL2 event logs using Rust.For traditional event data, it supports parsing data both from `.xes` XML files and `.xes.gz` archives (and also from strings directly if needed).
For object-centric event data, it supports parsing OCEL2 XML or JSON files (`.xml` or `.json`).
## Usage
### XES ImportThe `import_xes` returns a tuple of 1) the XES log polars dataframe and 2) JSON-encoding of global log attributes.
```python
import rustxes[xes,log_attrs_json] = rustxes.import_xes("path/to/file.xes")
print(xes.shape)
```#### Options
The following parameters can be passed to the `import_xes_rs` or the python wrapper:
- `path` - The filepath of the .xes or .xes.gz file to import
- `date_format` - Optional date format to use for parsing `` tags (See https://docs.rs/chrono/latest/chrono/format/strftime/index.html)
- `print_debug` - Optional flag to enable debug print outputs### OCEL Import
The `import_ocel_xml` and `import_ocel_json` functions return a dict of polars DataFrames with the following keys: 'objects', 'events', 'o2o', 'object_changes', 'relations'.```python
import rustxesocel = rustxes.import_ocel_xml("path/to/ocel.xml")
print(ocel['objects'].shape)
```
If you want to use PM4Py's OCEL data structure, you can use the `import_ocel_xml_pm4py` or `import_ocel_json_pm4py` functions, which return a `pm4py.ocel.OCEL` objects.
Note: PM4Py must be installed for this to work!## Development
This package was scaffolded using [maturin](https://www.maturin.rs/).
The most important commands are:
- `maturin build --release` Builds the Rust code and python package (in release mode), producing the build artifacts (wheels)
- `maturin develop --release` Builds the Rust code and python package (in release mode) and automatically installs/updates it in the corresponding (virtual) python envBuilding this package requires [Rust](https://www.rust-lang.org/), which can be installed using Rustup (see [https://www.rust-lang.org/learn/get-started](https://www.rust-lang.org/learn/get-started)).
The Rust part on its own can be build using `cargo build --release`.## LICENSE
This package is licensed under either Apache License Version 2.0 or MIT License at your option.