extxyz

Crates.ioextxyz
lib.rsextxyz
version0.2.0
sourcesrc
created_at2024-02-17 10:08:25.592922
updated_at2024-02-21 09:23:44.339558
descriptionA parser for files in the extended xyz format
homepagehttps://github.com/gchemol/extxyz
repositoryhttps://github.com/gchemol/extxyz
max_upload_size
id1143143
size78,305
Wenping Guo (ybyygu)

documentation

README

A fast parser for chemical file in the extended xyz (extxyz) format.

The extended XYZ format is an enhanced version of the simple XYZ format, allowing extra columns to be present in the file for extra atom properties (forces, charges, labels, etc.) as well as molecule's properties (energy, dipole moment, etc.)specified in the comment line.

Usage

Example usage:

use extxyz::{read_xyz_frames, RawAtoms, Info};

fn main() -> anyhow::Result<()> {
    // a large xyz/extxyz trajectory file
    let f = "nmd.xyz";
    // skip the first 100 frames, and read frames with a step size `10`
    let selection = (100..).step_by(10);
    let frames = read_xyz_frames(f, selection)?;
    for frame in frames {
        let atoms = RawAtoms::parse_from(&frame)?;
        // it will returen error if the comment is not in normal extxyz format
        let info: Info = atoms.comment.parse()?;
        // get molecule's properties
        let energy = info.get("energy").unwrap();
        // get atom's properties
        for atom in atoms.atoms {
            // parse extra data for each atom
            let atom_properties = info.parse_extra_columns(&atom.extra)?;
            // get `forces` component for each atom
            let forces = &atom_properties["forces"];
        }
    }

    Ok(())
}
Commit count: 0

cargo fmt