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 在 解析器实现
每月106 次下载
用于 12 个包(通过 gchemol-readwrite)
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