|
|
本帖最后由 LPOwenChan 于 2025-11-29 17:07 编辑
其实在Tutorial里已经写的比较清楚了,针对自己的体系试试看参数组合就应该可以得到合适的参数了,我简单叙述一下里面涉及的参数:
- geometry 对g_k几何函数的阶数取向,一般可以是g_1, g_2, g_3和g_4(n体相互作用),分别代表原子计数、键长(倒易空间距离)、键角(键角余弦)和二面角;由于我之前研究的是晶体,所以我一般会用atom + inverse distance可以得到不错效果,对于晶体是完全足够的,如果体系足够小甚至可以尝试继续映射键角或二面角;
- grid 这个参数需要谨慎设置,最好体系中最短的键和最长的键(或是最小的角度和最大的角度)都能被包含在min和max之间,需要注意的是这里的min和max是定义在倒易空间的,所以min * 最大键长(键角)= 1,max * 最小键长(键角)= 1;n用于控制输出特征长张量的长度,对于稍复杂的体系可能至少需要100维输出;sigma展宽主要决定特征捕捉的灵敏度,比如我想处理0.2 - 3.3的区间(对应实空间0.33埃-5埃键长),我可以设置sigma = 0.1,捕捉大部分细节(因为键长变化不会过于剧烈,可能在体系中所有可能键的键长都在1.25 - 1.75埃之间);假如我想处理0 - 180的角度(就是实空间的0 - 180度),我就设置sigma = 1,捕捉几乎所有角度细节(体系中键角变化可能是相当剧烈的,完全有可能有30 - 180度的角度分布);
- weighting 千万不要使用unity权重,完全捕捉不到长程作用!一般设置指数衰减权重exp就可以了,在我之前的体系中,为了捕捉可能的跨晶胞作用,我会设置1.5的scale,同时把降低threshold到5e-2;个人认为对于相对小的体系可以适当缩小scale和threshold,当然也可以直接使用r_cut,后者会直接截断exp函数;
- species 研究的原子,体系里有什么原子就以列表形式全写进去;
- periodic 体系有周期性就开,没有就不开;
- normalization 这个参数对于分子体系并没有什么影响,但是如果是研究周期性体系的强度性质(如密度、熔点或电学、光学、磁学等性质)则必须是l2 normalization;
其他的参数,包括normalize_gaussians, sparse, dtype只影响数值结果,并不影响MBTR结果的唯一性.
另外值得说的是,MBTR的输出其实是可以叠加的,Tutorial里只写了单一的MBTR,如下:
- mbtr = MBTR(
- species=["H", "O"],
- geometry={"function": "inverse_distance"},
- grid={"min": 0, "max": 1, "n": 100, "sigma": 0.1},
- weighting={"function": "exp", "scale": 0.5, "threshold": 1e-3},
- periodic=False,
- normalization="l2",
- )
复制代码 但其实是可以同时输出不同作用的特征张量的,给出我之前使用的一个简单例子:
- mbtr = MBTR(
- species=["Co", "C", "H", "O"],
- k1={
- "geometry": {"function": "atomic_number"},
- "grid": {"min": 0, "max": 50, "n": 100, "sigma": 0.5},
- },
- k2={
- "geometry": {"function": "inverse_distance"},
- "grid": {"min": 0.25, "max": 3.0, "n": 200, "sigma": 0.05},
- "weighting": {"function": "exp", "scale": 1.2, "threshold": 1e-2},
- },
- periodic=True,
- normalization="l2",
- dtype="float32",
- sparse=True
- )
复制代码
|
评分 Rate
-
查看全部评分 View all ratings
|