# 高通量筛选 ## 配置需求 需要两个conda环境,名字分别为**screen**,**zeo** ### zeo #### 运行库需求 ``` 2018.12.12 python == 2 pymatgen == 2018.12.12 Numpy = 1.16.6 os argparse = 1.4.0 PrettyTable = 1.01 monty = 1.0.0 future = 1.0.0 ``` #### zeo++软件需求 需要编译后放入python库中 ### screen ``` python == 3.11.4 pymatgen == 2024.11.13 ``` ## 使用说明 如果配置的conda环境同名,运行**main.sh**即可 当数据来源为MP时,需要将数据放在input_pre中 如果数据来源为ICSD,仅需将数据放在input中即可 # 扩胞 ## 以下为每一步的分解 ### Step1 读取cif文件 ### Step2 统计Occupation情况,将具有相同Occupation值的记为一类,用Occupation值作为Key创建字典,该字典的一个项为atom_serial,是一个列表,记录相同Ocupation值的原子序号 将上述字典输入一个列表Occupation_list,字典预留分子与分母两个参数 需要函数为 ```angular2html def process_cif_file(struct) return Occupation_list ``` ### step3 根据Occupation_list来计算扩大倍数\\ 首先逐一计算每个字典的分子与分母,根据key来计算,例如第一个key值为0.5,此时其对应分子为1,分母为2 合并没一个字典,探索每一个分数的情况并求出公约数与对应的分子,更新每一个字典的值 ### step4 根据分子与分母情况,生成structure_list,其中Occupation_list中的元素的number处的和为分子,总共个数为分母 ### step5 根据材料结构决定对称性,对不同对称性得到不同等效情况 根据对称性与最终扩胞生成三个方向扩胞列表,其中每个元素是字典,遵循格式为{["x":1,"y":2,"z":1]} ### step5 根据structure_list与Occupation_list生成新的cif并保存 ### 一些假设 只考虑两个原子在同一位置上,暂不考虑三个原子以上的情况 不考虑Li原子的共占位情况,对Li原子不做处理