geddes

Crates.iogeddes
lib.rsgeddes
version0.1.5
created_at2026-01-20 02:05:07.18074+00
updated_at2026-01-23 20:27:33.892302+00
descriptionA Rust library for parsing XRD pattern files
homepage
repositoryhttps://github.com/jcwang587/geddes
max_upload_size
id2055657
size717,744
Jiacheng Wang (jcwang587)

documentation

README

Geddes

Crates.io PyPI

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)

Usage

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());
}

Python Usage

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))

License

MIT

Commit count: 69

cargo fmt