GNoME Materials Discovery - AI 驅動的新材料探索完整教學

Graph Networks for Materials Exploration (GNoME) 是 Google DeepMind 開發的材料探索專案,利用 Graph Neural Network (圖神經網路; GNN) 大規模預測無機晶體 (inorganic crystal) 的穩定性,已發現超過 381,000 種新型穩定材料 (stable materials),並於 2024 年 8 月擴展至 520,000+ 種距 convex hull (凸包) 1 meV/atom 以內的材料。研究成果發表於 Nature (2023)。


1. 專案概述 (Project Overview)

1.1 背景與動機

無機晶體材料 (inorganic crystalline materials) 是現代科技的基石:從微晶片 (microchip) 到電池 (battery)、光伏元件 (photovoltaic) 到藥物遞送載體 (drug delivery carrier),新材料的發現直接推動技術進步。然而傳統材料發現流程依賴:

  • 密度泛函理論 (Density Functional Theory; DFT) 計算:精確但極度耗時
  • 實驗試錯法 (trial-and-error): 高成本、低效率
  • 化學直覺 (chemical intuition): 受限於研究者經驗

GNoME 透過將 Graph Neural Network (GNN; 圖神經網路) 與主動學習 (active learning) 結合,以 DFT 計算成本的一小部分,實現了大規模材料穩定性預測 (stability prediction),將已知穩定材料數量從約 48,000 種增加至超過 421,000 種。

1.2 核心成就

指標數值
新發現穩定材料 (novel stable materials)381,000+
擴展數據集 (expanded dataset, 2024-08)520,000+
GNoME 模型預測精度 (prediction accuracy)21 meV/atom (MAE)
發表期刊Nature (2023)
DFT 計算功能 (functional)PBE + r2SCAN 驗證

1.3 專案結構

 1materials_discovery/
 2├── model/                  # 模型定義
 3   ├── gnome.py            # GNoME 主模型入口 (model factory + optimizer)
 4   ├── gnn.py              # 通用 Graph Network 定義 (message passing)
 5   ├── nequip.py           # NequIP 等變神經網路 (equivariant NN)
 6   ├── crystal.py          # 晶體特徵化 (crystal featurization)
 7   ├── e3nn_layer.py       # E(3) 等變層 (equivariant layers)
 8   └── util.py             # 神經網路基礎元件 (NN primitives)
 9├── notebooks/              # Colab 互動範例
10   ├── Exploring_Chemical_Systems.ipynb
11   ├── Compute_Decomposition_Energies.ipynb
12   ├── Visualize_GNoME_Structures.ipynb
13   ├── Air_Stability.ipynb
14   └── a2c_Explorer.ipynb
15├── scripts/                # 資料下載工具
16   ├── download_data_wget.py
17   └── download_data_cloud.py
18├── requirements.txt        # Python 依賴
19├── DATASET.md              # 資料集說明
20└── README.md

1.4 資料集概觀

GNoME 資料集託管於 Google Cloud Storage bucket gs://gdm_materials_discovery,包含:

  • stable_materials_summary.csv: 所有穩定材料的組成、能量、帶隙 (bandgap) 等屬性
  • stable_materials_r2scan.csv: r2SCAN functional 驗證結果
  • by_composition.zip / by_id.zip / by_reduced_formula.zip: 晶體結構 CIF (Crystallographic Information File) 檔案
  • external_materials_summary.csv: Materials Project + OQMD 外部資料

2. 核心架構與技術原理 (Architecture & Technical Principles)

2.1 系統整體架構

GNoME 系統由三大模組構成:資料管線 (data pipeline)、模型推理引擎 (model inference engine)、穩定性評估框架 (stability evaluation framework)。


graph TB
    subgraph Input["資料輸入層 (Data Input)"]
        A[Crystal Structure
晶體結構 CIF] B[Materials Project
MP 資料庫] C[OQMD / WBM
外部資料庫] end subgraph Model["模型推理層 (Model Inference)"] D[Crystal Featurizer
晶體特徵提取
crystal.py] E[Graph Construction
圖建構
jraph GraphsTuple] F[GNoME GNN
圖神經網路
gnn.py + crystal.py] G[NequIP E3NN
等變神經網路
nequip.py + e3nn_layer.py] end subgraph Output["輸出與評估層 (Output & Evaluation)"] H[Energy Prediction
能量預測
eV/atom] I[Convex Hull
凸包計算] J[Decomposition Energy
分解能] K[Stability Label
穩定性標籤] end A --> D B --> I C --> I D --> E E --> F E --> G F --> H G --> H H --> I I --> J J --> K style Input fill:#e8f4fd,stroke:#2196f3 style Model fill:#fff3e0,stroke:#ff9800 style Output fill:#e8f5e9,stroke:#4caf50

2.2 Graph Neural Network (圖神經網路) 核心原理

GNoME 將晶體結構 (crystal structure) 轉換為圖 (graph) 表示:

  • 節點 (Node): 原子 (atom),以元素種類 (element type) 的 one-hot encoding 表示(支援 94 種元素)
  • 邊 (Edge): 原子間的鍵結或空間鄰近關係 (spatial neighbor relation)
  • 全局特徵 (Global feature): 整個晶體的全域描述子 (descriptor)

訊息傳遞 (message passing) 機制遵循 Battaglia et al. (2018) 的 Algorithm 1:

  1. Edge Update (邊更新): 聚合發送節點 (sender)、接收節點 (receiver) 與當前邊的特徵
  2. Node Update (節點更新): 聚合所有入邊 (incoming edges) 的訊息,更新節點狀態
  3. Global Update (全局更新): 聚合所有節點與邊的資訊,產生全局預測

flowchart LR
    subgraph MP["Message Passing 循環 (T 輪)"]
        direction TB
        E1["Edge Update
e_ij = phi_e(v_i, v_j, e_ij, u)"] N1["Node Update
v_i = phi_v(v_i, AGG(e_ij), u)"] G1["Global Update
u = phi_u(AGG(v_i), AGG(e_ij), u)"] E1 --> N1 --> G1 end Crystal["晶體圖
Crystal Graph"] --> MP MP --> Pred["能量預測
E (eV/atom)"] style MP fill:#fff8e1,stroke:#ffc107

2.3 兩種模型架構

專案提供兩種互補的模型架構 (model architecture):

GNoME 模型 (crystal.py + gnn.py)

  • 簡單訊息傳遞架構 (simple message passing)
  • 使用 BetaSwish 激活函數 (activation function)
  • 以 coordination-normalized aggregation (配位數正規化聚合) 處理鄰居數量變化
    • 預設 AVERAGE_NODE_COORDINATION = 9
    • 預設 AVERAGE_EDGE_COORDINATION = 17
  • 支援 attention mechanism (注意力機制),含 softmax normalization
  • 基於 2018 年 Materials Project 快照訓練,達到 21 meV/atom 最佳精度

NequIP 模型 (nequip.py + e3nn_layer.py)

  • E(3) equivariant neural network (E(3) 等變神經網路)
  • 使用 e3nn_jax 實作 irreducible representations (不可約表示)
  • Tensor product convolution (張量積卷積) 保持旋轉等變性 (rotational equivariance)
  • 用於訓練 interatomic potentials (原子間勢能),學習大規模資料集的動力學 (dynamics)
  • JAX 原生實作 (native JAX implementation)

graph LR
    subgraph GNoME_Model["GNoME 模型"]
        A1[One-hot Element
94 維] --> B1[Message Passing
coordination-norm] B1 --> C1[BetaSwish MLP] C1 --> D1[Energy Readout] end subgraph NequIP_Model["NequIP 模型"] A2[Element Embedding] --> B2[Radial Basis
Bessel Functions] B2 --> C2[Tensor Product
E3 Equivariant] C2 --> D2[Invariant Readout] end E[Crystal Structure
晶體結構] --> GNoME_Model E --> NequIP_Model D1 --> F[Stability Prediction] D2 --> F style GNoME_Model fill:#e3f2fd,stroke:#1565c0 style NequIP_Model fill:#fce4ec,stroke:#c62828

2.4 穩定性評估 (Stability Evaluation)

材料穩定性透過 convex hull (凸包) 分析判定:

  • Formation Energy (形成能): 材料相對於元素參考態 (elemental reference) 的能量差
  • Decomposition Energy (分解能): 材料相對於 convex hull 上最近穩定相 (stable phase) 的能量差
  • 分解能 <= 0 表示材料位於 convex hull 上或下方,即為熱力學穩定 (thermodynamically stable)

穩定性判定閾值:5e-5 eV(數值精度考量)

2.5 技術棧 (Technology Stack)

層級技術用途
深度學習框架JAX + Flax + Optax模型定義、訓練、優化
圖計算jraph圖資料結構與操作
等變計算e3nn_jaxE(3) 不可約表示與張量積
分子動力學jax_md空間運算與鄰居列表
材料科學pymatgen晶體結構處理與分析
資料處理pandas + numpy + scipy數據操作
視覺化plotly + matplotlib + seaborn互動式圖表

3. 安裝與環境設定 (Installation & Setup)

3.1 系統需求

  • Python: 3.9+ (建議 3.10 或 3.11)
  • 作業系統: Linux (推薦) / macOS
  • GPU: 建議搭配 NVIDIA GPU + CUDA (加速 JAX 計算)
  • 儲存空間: 至少 10 GB (完整資料集 ~5 GB + 模型與中間檔)

3.2 環境建立

1# 使用 uv 建立虛擬環境 (推薦)
2uv venv gnome-env
3source gnome-env/bin/activate
4
5# 或使用傳統 venv
6python -m venv ~/venv/gnome
7source ~/venv/gnome/bin/activate

3.3 安裝依賴

1# 克隆倉庫
2git clone https://github.com/google-deepmind/materials_discovery.git
3cd materials_discovery
4
5# 安裝依賴
6pip install -r requirements.txt

關鍵依賴 (key dependencies) 說明:

套件版本用途
jax / jaxlib0.4.20高效能數值計算 (JAX 後端)
flax0.7.5神經網路模型定義
jraph0.0.6.dev0圖神經網路資料結構
e3nn_jax0.20.3E(3) 等變計算
jax_md0.2.8分子動力學與空間運算
pymatgen2024.2.20材料科學分析工具
optax0.1.7梯度優化器

3.4 GPU 支援 (選用)

1# 若需 GPU 加速,安裝對應 CUDA 版本的 jaxlib
2pip install --upgrade "jax[cuda12]"
3
4# 驗證 GPU 偵測
5python -c "import jax; print(jax.devices())"

3.5 下載資料集

GNoME 提供兩種資料下載方式:

方式 A: wget 腳本 (無需 Google Cloud 認證)

1python scripts/download_data_wget.py --data_dir=./data

方式 B: Google Cloud Storage (需認證)

1# 安裝 Google Cloud CLI
2pip install google-cloud-storage
3
4# 認證
5gcloud auth application-default login
6
7# 下載
8python scripts/download_data_cloud.py --data_dir=./data

方式 C: 直接使用 gcloud CLI

1gcloud storage cp --recursive gs://gdm_materials_discovery/ data/

下載後的資料結構:

1data/
2└── gnome_data/
3    ├── stable_materials_summary.csv     # 主要摘要 (~381K rows)
4    ├── stable_materials_r2scan.csv      # r2SCAN 驗證資料
5    ├── by_composition.zip               # CIF 結構 (按組成)
6    ├── by_id.zip                        # CIF 結構 (按 ID)
7    ├── by_reduced_formula.zip           # CIF 結構 (按化學式)
8    └── auxiliary_gnome_data/
9        └── a2c_supporting_data.json     # A2C 輔助資料

4. 使用教學與範例 (Usage Tutorial & Examples)

4.1 載入與探索資料集

 1import pandas as pd
 2
 3# 載入穩定材料摘要
 4df = pd.read_csv("data/gnome_data/stable_materials_summary.csv")
 5print(f"Total stable materials: {len(df):,}")
 6print(f"Columns: {df.columns.tolist()}")
 7
 8# 關鍵欄位說明
 9# - Composition: 字母排序的化學組成 (alphabetical composition)
10# - MaterialId: 唯一識別碼
11# - Reduced Formula: 簡化化學式 (reduced chemical formula)
12# - Formation Energy Per Atom: 每原子形成能 (eV/atom)
13# - Decomposition Energy Per Atom: 每原子分解能 (eV/atom)
14# - Space Group: 空間群 (space group)
15# - Bandgap: 帶隙 (eV)

4.2 探索特定化學系統 (Chemical System)

 1# 篩選含鋰 (Li) 的材料,常見於電池研究 (battery research)
 2li_materials = df[df['Elements'].str.contains('Li')]
 3print(f"Li-containing materials: {len(li_materials):,}")
 4
 5# 篩選特定化學系統 (如 Li-Fe-O 三元系統)
 6lifo = df[df['Elements'] == 'Fe-Li-O']
 7print(f"Li-Fe-O system: {len(lifo)} materials")
 8
 9# 檢視能量分布
10print(lifo[['Reduced Formula', 'Formation Energy Per Atom',
11            'Decomposition Energy Per Atom', 'Space Group']].head(10))

4.3 計算分解能 (Decomposition Energy)

 1# 參考 notebooks/Compute_Decomposition_Energies.ipynb 的核心邏輯
 2
 3from pymatgen.core import Composition
 4from pymatgen.analysis.phase_diagram import PhaseDiagram, PDEntry
 5
 6# 建立相圖 (phase diagram) 所需的條目
 7entries = []
 8for _, row in df[df['Elements'].str.contains('Li')].iterrows():
 9    comp = Composition(row['Reduced Formula'])
10    energy = row['Corrected Energy']
11    entries.append(PDEntry(comp, energy))
12
13# 建構相圖
14pd_diagram = PhaseDiagram(entries)
15
16# 計算特定組成的分解能
17target = Composition("Li2O")
18decomp_energy = pd_diagram.get_decomp_and_e_above_hull(
19    PDEntry(target, -6.0)  # 假設能量值
20)
21print(f"Decomposition energy: {decomp_energy[1]:.4f} eV/atom")

4.4 視覺化晶體結構

 1# 從壓縮檔解壓特定結構
 2import zipfile
 3
 4material_id = "YOUR_MATERIAL_ID"  # 替換為實際 MaterialId
 5
 6with zipfile.ZipFile("data/gnome_data/by_id.zip", 'r') as z:
 7    # 列出檔案,找到目標 CIF
 8    matching = [f for f in z.namelist() if material_id in f]
 9    if matching:
10        z.extract(matching[0], "extracted_structures/")
11
12# 使用 pymatgen 讀取與視覺化
13from pymatgen.core import Structure
14
15structure = Structure.from_file(f"extracted_structures/{matching[0]}")
16print(f"Formula: {structure.formula}")
17print(f"Space group: {structure.get_space_group_info()}")
18print(f"Volume: {structure.volume:.2f} A^3")
19print(f"Density: {structure.density:.2f} g/cm^3")

4.5 使用模型進行推理

 1from ml_collections import ConfigDict
 2from model import gnome
 3
 4# 建立模型配置 (model configuration)
 5cfg = ConfigDict({
 6    'model_family': 'nequip',
 7    # NequIP 架構參數
 8    'num_species': 94,
 9    'r_max': 5.0,
10    'num_layers': 5,
11    'num_features': 64,
12    'max_ell': 2,
13})
14
15# 從配置建立模型
16model = gnome.model_from_config(cfg)
17
18# 注意:推理需要預訓練權重 (pretrained weights)
19# 目前 repo 提供模型定義但未公開預訓練權重
20# 可使用 Materials Project 快照自行訓練

4.6 Pseudopotential Correction (贗勢修正)

GNoME 使用的 DFT 贗勢 (pseudopotential) 與 Materials Project 部分元素不同,需進行修正:

 1# 元素修正值 (eV per atom)
 2pp_corrections = {
 3    "Ga": -0.0028805,
 4    "Ge": 0.10417085,
 5    "Li": -0.00301278,
 6    "Mg": 0.0924014,
 7    "Na": -0.00447437,
 8}
 9
10def correct_energy(energy: float, composition: dict) -> float:
11    """修正包含特定元素的結構能量。"""
12    total_atoms = sum(composition.values())
13    correction = sum(
14        pp_corrections.get(elem, 0) * count
15        for elem, count in composition.items()
16    )
17    return energy + correction

5. 進階功能與最佳實踐 (Advanced Features & Best Practices)

5.1 模型架構選擇指南


flowchart TD
    Start["選擇模型架構"] --> Q1{"需要等變性
(equivariance)?"} Q1 -->|Yes| NequIP["NequIP
E(3) equivariant
精度更高"] Q1 -->|No| Q2{"訓練資料量?"} Q2 -->|"< 10K 結構"| NequIP Q2 -->|"> 10K 結構"| GNoME_M["GNoME GNN
Message Passing
訓練更快"] NequIP --> Use1["適用場景:
- 原子間勢能
- 分子動力學
- 力場預測"] GNoME_M --> Use2["適用場景:
- 大規模篩選
- 穩定性預測
- 形成能計算"] style Start fill:#f3e5f5,stroke:#9c27b0 style NequIP fill:#e3f2fd,stroke:#1565c0 style GNoME_M fill:#e8f5e9,stroke:#388e3c

5.2 自訂 Aggregation (聚合函數)

GNoME 的 crystal.py 提供三種聚合策略:

1# 原始碼中定義的聚合方式
2AGGREGATION = {
3    'coordination': segment_normalized(AVERAGE_EDGE_COORDINATION),
4    'mean': jraph.segment_mean,
5    'sum': ops.segment_sum,
6}
  • coordination: 以平均配位數 (coordination number) 正規化,適合晶體材料
  • mean: 平均聚合,對節點數量變化最穩健 (robust)
  • sum: 總和聚合,保留圖大小資訊但可能受 size effect 影響

5.3 學習率排程 (Learning Rate Schedule)

GNoME 實作了 ScaleLROnPlateau 優化策略(定義於 gnome.py):

1# 當 loss 不再下降時自動縮減學習率
2from model.gnome import scale_lr_on_plateau
3
4optimizer = scale_lr_on_plateau(
5    initial_step_size=1e-3,
6    max_steps_without_reduction=50,
7    reduction_factor=0.5,
8)

這是一種 patience-based 策略:連續 max_steps_without_reduction 步未改善 loss 時,學習率乘以 reduction_factor

5.4 Convex Hull 最佳實踐

建構完整 convex hull 需要合併多個資料來源:

  1. GNoME 資料: stable_materials_summary.csv
  2. Materials Project: 透過 external_materials_summary.csv 提供
  3. OQMD + WBM: 外部資料集修正
 1# 合併所有資料來源建構完整 convex hull
 2gnome_df = pd.read_csv("data/gnome_data/stable_materials_summary.csv")
 3external_df = pd.read_csv("data/external_data/external_materials_summary.csv")
 4
 5# 合併並去重
 6all_materials = pd.concat([gnome_df, external_df], ignore_index=True)
 7print(f"Total materials for convex hull: {len(all_materials):,}")
 8
 9# 使用 pymatgen 建構相圖
10# 注意:完整 convex hull 計算為計算密集型操作

5.5 r2SCAN 驗證

GNoME 主要計算使用 PBE functional (泛函),但提供 r2SCAN 驗證以確認穩定性:

1r2scan_df = pd.read_csv("data/gnome_data/stable_materials_r2scan.csv")
2print(f"r2SCAN validated materials: {len(r2scan_df):,}")
3
4# 注意:不同 functional 的穩定性判定可能不同
5# 部分 PBE 穩定材料在 r2SCAN 下可能不穩定

5.6 大規模篩選工作流 (High-Throughput Screening Workflow)

 1# 範例:篩選帶隙 (bandgap) 在太陽能電池最佳範圍的材料
 2optimal_bandgap = df[
 3    (df['Bandgap'] >= 1.0) &
 4    (df['Bandgap'] <= 1.8) &
 5    (df['Decomposition Energy Per Atom'] <= 0.0)  # 確認穩定性
 6]
 7
 8print(f"Candidates for photovoltaics: {len(optimal_bandgap):,}")
 9print(optimal_bandgap[['Reduced Formula', 'Bandgap', 'Space Group',
10                        'Crystal System']].head(20))

6. 應用價值與整合潛力 (Application Value & Integration Potential)

6.1 藥物遞送材料 (Drug Delivery Materials)

GNoME 資料集對藥物遞送 (drug delivery) 領域的潛在應用:

  • 多孔材料篩選 (porous material screening): 透過 dimensionality 與 volume 篩選潛在載體材料
  • 生物相容性預測 (biocompatibility prediction): 結合 GNoME 穩定性資料與毒理學資料庫
  • 控釋材料設計 (controlled-release material design): 利用 bandgap 與晶體系統資訊設計回應性材料
 1# 篩選可能適用於藥物遞送的材料
 2# 條件:低維度 (可能為層狀) + 穩定 + 含生物相容元素
 3biocompatible_elements = {'Zn', 'Fe', 'Ca', 'Mg', 'Si', 'Ti', 'O'}
 4
 5drug_delivery_candidates = df[
 6    (df['Dimensionality Cheon'] <= 2) &  # 2D 或 1D 材料
 7    (df['Decomposition Energy Per Atom'] <= 0.0) &  # 穩定
 8    (df['NSites'] <= 20)  # 結構相對簡單
 9]
10print(f"Potential drug delivery candidates: {len(drug_delivery_candidates):,}")

6.2 與其他計算平台整合

平台整合方式應用場景
Materials Project直接相容 (CIF format + pymatgen)完整材料性質查詢
AFLOWCIF 轉換 + REST API自動化高通量計算
OPTIMADE標準化查詢介面跨資料庫搜索
ASE (Atomic Simulation Environment)pymatgen 橋接進階分子動力學模擬
VASP / Quantum ESPRESSOCIF 輸入 → DFT 驗證高精度能量計算

6.3 電池材料探索 (Battery Material Discovery)

 1# 篩選鋰離子電池正極材料候選
 2# 條件:含 Li + 過渡金屬 (transition metal) + O
 3transition_metals = {'Ti', 'V', 'Cr', 'Mn', 'Fe', 'Co', 'Ni', 'Cu'}
 4
 5battery_candidates = df[
 6    df['Elements'].str.contains('Li') &
 7    df['Elements'].str.contains('O') &
 8    df['Decomposition Energy Per Atom'] <= 0.0
 9]
10print(f"Li-containing oxide candidates: {len(battery_candidates):,}")

6.4 光伏材料研究 (Photovoltaic Research)

GNoME 資料集中的 bandgap 資訊可直接用於光伏材料篩選。根據 Shockley-Queisser 極限 (limit),最佳單結太陽能電池帶隙為 1.1-1.4 eV。

6.5 產業整合路徑

  1. 學術研究: 直接使用 Colab notebooks 探索化學空間
  2. 材料篩選: 將 CSV 資料匯入內部資料庫,結合專有篩選條件
  3. 計算驗證: 將候選材料送入 DFT 計算進行精確驗證
  4. 實驗合成: 基於 GNoME 預測進行定向實驗合成 (targeted synthesis)

7. 常見問題與限制 (FAQ & Limitations)

7.1 常見問題

Q1: GNoME 預測的材料都能被合成嗎?

不一定。GNoME 預測的是 thermodynamic stability (熱力學穩定性),但實際合成還需考慮:

  • Kinetic barriers (動力學障壁): 反應路徑是否可行
  • Synthesis conditions (合成條件): 溫度、壓力、前驅物 (precursor) 可用性
  • Metastability (亞穩態): 部分材料可能為動力學穩定但熱力學亞穩

Q2: 預訓練模型權重是否公開?

目前 (2026-06) repo 僅提供模型架構定義 (model definition),未公開預訓練權重 (pretrained weights)。使用者需使用 Materials Project 資料自行訓練。

Q3: 資料集的授權條款是什麼?

  • 程式碼與 Colab notebooks: Apache License 2.0 (可商用)
  • GNoME 資料集: CC BY-NC 4.0 (非商業使用; non-commercial use only)
  • DFT 計算: 使用 VASP (Vienna Ab initio Simulation Package) 執行

Q4: 如何引用 GNoME?

1@article{merchant2023scaling,
2  title={Scaling deep learning for materials discovery},
3  author={Amil Merchant and Simon Batzner and Samuel S. Schoenholz
4          and Muratahan Aykol and Gowoon Cheon and Ekin Dogus Cubuk},
5  journal={Nature},
6  year={2023},
7  doi={10.1038/s41586-023-06735-9},
8}

Q5: Bandgap 資料的精確度?

Bandgap 值為 PBE-level 計算,已知 PBE 功能泛函會系統性低估帶隙 (underestimate bandgap)。GNoME 的 bandgap 資料仍為實驗性質 (experimental),可能隨後續版本更新修正。

Q6: 如何處理大型 CIF 壓縮檔?

建議使用 Python zipfile 模組選擇性解壓所需結構,避免全量解壓:

1import zipfile
2
3with zipfile.ZipFile("by_id.zip", 'r') as z:
4    # 只解壓特定檔案
5    target = "target_material_id.cif"
6    matching = [f for f in z.namelist() if target in f]
7    for m in matching:
8        z.extract(m, "output_dir/")

7.2 已知限制 (Known Limitations)

限制說明影響
數值精度閾值穩定性判定使用 5e-5 eV 閾值邊界材料的穩定性可能隨後續計算改變
PBE functional 偏差PBE 對某些材料系統 (如強關聯系統) 的描述不準確bandgap 與能量值可能有系統性偏差
Convex hull 時效性基於特定時間點的 MP/OQMD 快照隨社群發現新材料,穩定性判定可能變化
無動力學穩定性僅考慮 thermodynamic stability不保證材料在常溫常壓下可穩定存在
無合成路徑不提供合成方法建議需自行設計合成策略
贗勢差異與 MP 部分元素使用不同贗勢需手動套用修正值 (Li, Na, Mg, Ga, Ge)
非商業授權資料集為 CC BY-NC 4.0商業應用需另行取得授權

7.3 待開發功能 (Roadmap)

根據 README 中的 Upcoming 清單:

  • Reference structures and search paths (參考結構與搜索路徑)
  • Model training colabs and configs (模型訓練 Colab 與配置)
  • Additional material properties, e.g. electronic band structure (額外材料性質,如電子能帶結構)

7.4 替代方案與互補工具

  • MACE: 另一種 E(3) 等變神經網路勢能 (equivariant neural network potential)
  • M3GNet / CHGNet: Materials Project 團隊的 universal potential (通用勢能)
  • ALIGNN: NIST 的 atomistic line graph neural network
  • Crystal Diffusion Variational Autoencoder (CDVAE): 生成式材料設計 (generative material design)

參考資料 (References)

  1. Merchant, A. et al. “Scaling deep learning for materials discovery.” Nature (2023). DOI: 10.1038/s41586-023-06735-9
  2. Batzner, S. et al. “E(3)-equivariant graph neural networks for data-efficient and accurate interatomic potentials.” Nature Communications 13, 2453 (2022).
  3. Battaglia, P.W. et al. “Relational inductive biases, deep learning, and graph networks.” arXiv:1806.01261 (2018).
  4. Google DeepMind Blog: “Millions of new materials discovered with deep learning” (2023).
  5. GNoME Dataset: gs://gdm_materials_discovery (Google Cloud Storage)