5 releases
0.2.0 | Feb 21, 2024 |
---|---|
0.1.3 | Feb 20, 2024 |
0.1.2 | Feb 19, 2024 |
0.1.1 | Feb 18, 2024 |
0.1.0 | Feb 17, 2024 |
#2865 in Parser implementations
55 downloads per month
Used in 12 crates
(via gchemol-readwrite)
35KB
681 lines
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(())
}
Dependencies
~9–17MB
~298K SLoC