2025-12-07 22:19:50 +08:00
2025-12-07 13:55:13 +08:00
2025-12-07 22:19:50 +08:00
V1
2025-12-07 13:56:33 +08:00
2025-12-07 20:08:19 +08:00
2025-12-07 16:01:42 +08:00
2025-12-07 15:22:36 +08:00

高通量筛选与扩胞项目

环境配置需求

项目需要配置两个 Conda 环境,名称分别为 screenzeo

1. zeo 环境 (用于几何结构分析)

  • Python: 2
  • 核心库: zeo++ (需编译), pymatgen==2018.12.12, numpy==1.16.6
  • 其他: os, argparse, PrettyTable, monty, future

2. screen 环境 (用于逻辑筛选与数据处理)

  • Python: 3.11.4
  • 核心库: pymatgen==2024.11.13, pandas (新增用于处理CSV)

快速开始

  1. 数据准备:
    • 如果数据来源为 Materials Project (MP),请将 CIF 文件放入 data/input_pre
    • 如果数据来源为 ICSD,请直接将 CIF 文件放入 data/input
  2. 运行:
    • 确保已创建上述两个 Conda 环境。
    • 在根目录下运行自动化脚本:
      bash main.sh
      

处理流程详解

Stage 1: 预处理与基础筛选 (Step 1)

  • Pre-process: 清洗数据,统一放入 input 文件夹。
  • Step 1:
    • 读取 CIF 文件,利用 crystal_2 库检查电荷平衡与化学式。
    • 文件重组: 将通过筛选的文件按阴离子类型分类。
    • 新结构: 每个材料拥有独立的文件夹(例如 after_step1/O/141/141.cif),便于管理后续的计算日志。
  • Make SH: 自动生成用于调用 Zeo++ 的 analyze.sh 脚本。

Stage 2: Zeo++ 计算

  • 切换至 zeo 环境。
  • 计算材料的孔径 (Percolation diameter)、比表面积等几何参数。
  • 结果输出为每个文件夹下的 log.txt

Stage 3: 数据提取与联合筛选 (Step 2-4)

  • 数据提取 (extract_data.py):
    • 自动遍历所有文件夹中的 log.txt
    • 提取关键参数:Percolation Diameter (Step 2), Minimum of d (Step 3), Maximum Node Length (Step 4)。
    • 结果汇总为 CSV 文件保存在 output/ 目录下(例如 output/O/O.csv)。
  • 联合筛选 (step2_4_combined.py):
    • 读取 CSV 文件,根据预设的阈值(如 O: Perc>0.5, Min_d<3.0, Node>2.2)进行过滤。
    • 结果: 将符合所有条件的材料,以软链接的形式汇聚到 data/after_screening 文件夹中。

扩胞逻辑 (Step 5 - 待后续执行)

目前扩胞逻辑维持原状,基于筛选后的结构进行处理。

算法分解

  1. 读取结构: 解析 CIF 文件。
  2. 统计 Occupation:
    • 将具有相同 Occupation 值的原子归为一类。
    • 生成 Occupation_list 字典。
  3. 计算扩大倍数:
    • 根据 Occupation 的分子分母情况(如 0.5 对应 1/2计算公约数。
  4. 生成结构列表:
    • 根据分子与分母生成 structure_list
  5. 对称性处理与扩胞:
    • 根据材料结构的对称性,生成三个方向的扩胞列表 (如 {"x":1, "y":2, "z":1})。
  6. 生成新文件:
    • 结合 structure_list 与扩胞倍数生成最终的超胞 CIF。

假设条件

  • 只考虑两个原子在同一位置上的共占位情况。
  • 不考虑 Li 原子的共占位情况,对 Li 原子不做处理。
Description
No description provided
Readme 252 KiB
Languages
Python 97.4%
Shell 2.6%