5 个版本

0.2.0 2024年2月21日
0.1.3 2024年2月20日
0.1.2 2024年2月19日
0.1.1 2024年2月18日
0.1.0 2024年2月17日

#1496解析器实现

Download history 21/week @ 2024-03-11 24/week @ 2024-03-18 23/week @ 2024-03-25 36/week @ 2024-04-01 9/week @ 2024-04-08 8/week @ 2024-04-15 16/week @ 2024-04-22 10/week @ 2024-04-29 9/week @ 2024-05-06 15/week @ 2024-05-13 35/week @ 2024-05-20 19/week @ 2024-05-27 27/week @ 2024-06-03 25/week @ 2024-06-10 20/week @ 2024-06-17 33/week @ 2024-06-24

每月106 次下载
用于 12 个包(通过 gchemol-readwrite

MIT/Apache

35KB
681

一个快速解析扩展 xyz (extxyz) 格式化学文件的解析器。

扩展 XYZ 格式是简单 XYZ 格式的增强版本,允许在文件中存在额外的列来存储额外的原子属性(力、电荷、标签等),以及在注释行中指定的分子属性(能量、偶极矩等)。

用法

示例用法

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

依赖项

~8–18MB
~300K SLoC