#分子 #沃罗诺伊图 #沃罗诺伊镶嵌 #表面积

voronota

Voronota-LT 是 Voronota 用于构建由镶嵌派生出的原子接触面积和体积的替代版本

2 个版本

0.1.1 2024 年 4 月 17 日
0.1.0 2024 年 4 月 17 日

#219 in 科学

MIT 许可证

24KB
167

Rust Crates.io docs.rs

Voronota-LT

Voronota-LT(发音为‘voronota lite’)是 Voronota 用于构建由镶嵌派生出的原子接触面积和体积的替代版本。Voronota-LT 是从头开始编写的,不使用任何外部代码,甚至不包括 Voronota 的核心代码。创建 Voronota-LT 的主要动机是极大地提高基于镶嵌的原子-原子接触面积和原子溶剂可及表面积的计算速度。

与 Voronota 一样,Voronota-LT 可以计算由加权 Voronoi 镶嵌派生的接触面积,但速度的提升主要来自于利用一种更简单、根本的镶嵌变体,也称为拉格朗日-拉格朗日镶嵌或幂图。这是 Voronota-LT 中的默认镶嵌变体。它考虑原子的半径以及滚动探针半径,将极平面定义为原子之间的分隔面。

使用方法

此 crate 提供了一个简化的接口来访问 Voronota-LT,并可以通过以下方式添加到现有的基于 Cargo 的项目中

cargo add voronota

以下示例展示了基本用法以及如何提取溶剂可及表面积等

use voronota::{Ball, RadicalTessellation};
let balls = vec![
    Ball { x: 0.0, y: 0.0, z: 0.0, r: 2.0 },
    Ball { x: 1.0, y: 0.0, z: 0.0, r: 2.0 },
];
let tessellation = RadicalTessellation::from_balls(1.4, &balls);

assert_eq!(tessellation.balls.len(), 2);
assert_eq!(tessellation.contacts.len(), 1);
assert_eq!(tessellation.cells.len(), 2);

let total_area: f64 = tessellation.cells.iter().map(|c| c.sas_area).sum();
assert_eq!(total_area, 166.6300743464026);

依赖项

~0.6–2MB
~30K SLoC