| Crates.io | geddes |
| lib.rs | geddes |
| version | 0.1.5 |
| created_at | 2026-01-20 02:05:07.18074+00 |
| updated_at | 2026-01-23 20:27:33.892302+00 |
| description | A Rust library for parsing XRD pattern files |
| homepage | |
| repository | https://github.com/jcwang587/geddes |
| max_upload_size | |
| id | 2055657 |
| size | 717,744 |
A Rust XRD pattern parser with Python bindings. Supports:
.raw (GSAS format, text based).rasx (Rigaku, Zip containing Profile text).xrdml (Panalytical XML-based format).xy / .xye (ASCII, space-separated values).csv (comma-separated values)Load from a file path:
use geddes::load_file;
fn main() {
let pattern = load_file("tests/data/xy/sample.xy").unwrap();
println!("{} {}", pattern.x.len(), pattern.y.len());
}
Load from in-memory bytes (filename is used to infer the format):
use std::fs;
use std::io::Cursor;
use geddes::load_from_reader;
fn main() {
let data = fs::read("tests/data/xy/sample.xy").unwrap();
let cursor = Cursor::new(data);
let pattern = load_from_reader(cursor, "sample.xy").unwrap();
println!("{} {}", pattern.x.len(), pattern.y.len());
}
This crate ships Python bindings via pyo3/maturin.
Load from a file path:
import geddes
pattern = geddes.load_file("tests/data/xy/sample.xy")
print(len(pattern.x), len(pattern.y))
Load from in-memory bytes (filename is used to infer the format):
import geddes
with open("tests/data/xy/sample.xy", "rb") as f:
data = f.read()
pattern = geddes.load_bytes(data, "sample.xy")
print(len(pattern.x), len(pattern.y))
MIT