A Rust XRD pattern parser with Python bindings. Supports:
.raw(GSAS format, text-based; Bruker format, binary).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::read;
fn main() {
let pattern = read("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 geddes::read_bytes;
fn main() {
let data = fs::read("tests/data/xy/sample.xy").unwrap();
let pattern = read_bytes(&data, "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.read("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.read_bytes(data, "sample.xy")
print(len(pattern.x), len(pattern.y))MIT