Files
screen/readme.md
2025-12-07 15:22:36 +08:00

74 lines
3.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 高通量筛选与扩胞项目
## 环境配置需求
项目需要配置两个 Conda 环境,名称分别为 **screen****zeo**
### 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
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 原子不做处理。