8 个不稳定版本 (3 个破坏性更新)
0.4.0 | 2024 年 8 月 1 日 |
---|---|
0.3.3 | 2024 年 4 月 23 日 |
0.2.1 | 2024 年 3 月 13 日 |
0.1.0 | 2023 年 9 月 22 日 |
#104 in 科学
每月 108 次下载
7.5MB
12K SLoC
摩尔 是一个为 Rust 设计的 分子 分析 和 建模 库。
目录
什么是摩尔?
摩尔是一个用于分子分析和建模的 Rust 库。它是作为 C++ 编写的分子建模库 Pteros 的继任者开始的,由于 C++ 的所有怪癖,它变得难以开发和维护。最终摩尔可能成为“Pteros 3.0”。
摩尔旨在简化分子动力学轨迹的分析并实现新的分析算法。摩尔旨在提供所有分子分析程序中经常使用的设施,例如流行文件格式的输入/输出、强大且灵活的原子选择、几何变换、RMSD 配置文件和校准等。
功能
- 读取和写入 PDB、GRO、XTC 文件。
- 读取 Gromacs TPR 文件。
- 使用类似于 VMD 和 Pteros 的语法进行选择。
- 子选择和选择拆分。
- 使用最快的 PowerSasa 方法进行 SASA 计算。
- RMSD 配置文件和校准
- 基本算法(质心、几何中心等)
- PBC 撕离
- 自动与 VMD molfile 和 xdrfile 库以及 Gromacs 的 git 版本进行编译和链接。
当前状态
摩尔目前接近在有用项目中使用。文档尚不完整。
安装
摩尔依赖于 C/C++ 编译器和 CMake 来编译第三方库。
教程
待办事项
设计决策
分子分析通常涉及对原子和坐标数组(即选择)的多个视图。选择可以任意重叠 - 例如,一个选择可能代表整个蛋白质,而另一个只代表其活性位点的残基。选择是可变的,因为它们的原子可以被操作 - 平移、旋转、校准、重命名等。这种变化应立即由涉及受影响原子的所有其他选择捕捉到。
这个概念与Rust的所有权规则不太兼容,Rust的所有权规则规定要么只有一个独占引用(mut&
)或者多个不可变引用(&
)可以同时存在。如果某个选择持有原子底层数组的mut&
引用,那么其他选择不允许对其进行读写访问。
如果我们想遵守单一所有权规则,我们需要为每个操作创建和销毁选择,以确保原子数组不会被多个选择以可变方式别名。这在实践中非常不方便,并且与所有现有的分子分析软件形成对比。
因此,Molar在内部使用不安全的Rust和内部可变性模式来规避别名限制,同时仍然保留安全的用户可访问API。在Molar中,可以对选择有多个不可变引用&Sel
,同时仍然可以调用修改原子和坐标底层数组的方法,例如sel.translate()
或sel.rotate()
。一个选择所做的更改会立即对所有指向相同原子的其他选择可见。
安全保证
对于每个不同的拓扑和状态,在程序运行时任何时刻都恰好存在一个选择访问模式。
- 重叠的可变顺序
- 重叠的选择只能从创建它们的同一个线程中以顺序方式修改原子和坐标。
- 非重叠的可变并行
- 非重叠的选择可以从多个线程并行修改原子和坐标。
- 所有并行处理线程在下一个处理块开始之前都将保证连接和同步。
- 任何从此类选择创建的子选择只能留在与父选择相同的线程中。
- 不可能发生数据竞争。
- 重叠的不可变并行
- 可以从多个线程并行读取原子和坐标。
依赖关系
~9.5MB
~177K SLoC