File size: 2,658 Bytes
25f6570
 
721909b
 
 
 
 
 
 
 
25f6570
721909b
 
 
98ed01b
721909b
 
2ac3182
 
721909b
 
 
 
 
 
 
 
 
 
 
 
 
 
bc2033a
721909b
 
 
 
 
 
 
 
 
e7e0d5e
 
721909b
 
e7e0d5e
 
721909b
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
---
license: mit
tags:
  - catalyst
  - materials-science
  - diffusion
  - inverse-design
  - heterogeneous-catalysts
language:
  - en
---
 
# Catalyst Diffusion Transformer (CatDiT)
 
[![arXiv](https://img.shields.io/badge/PDF-arXiv-blue)](https://arxiv.org/abs/2607.24272)
[![Code](https://img.shields.io/badge/Code-GitHub-red)](https://github.com/doouv/CatDiT.git)
[![Weights](https://img.shields.io/badge/Weights-HuggingFace-yellow)](https://huggingface.co/doouv/catalyst-diffusion-transformer)
[![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/doouv/CatDiT/blob/main/notebooks/catdit_demo.ipynb) 

**CatDiT** is an SE(3)-equivariant latent diffusion transformer for heterogeneous catalyst inverse design, built upon [ADiT](https://github.com/facebookresearch/all-atom-diffusion-transformer). It jointly generates slab and adsorbate structures, and supports multi-conditional generation over adsorbate identity, adsorption energy, and catalyst class via classifier-free guidance.
 
## Model Variants
 
CatDiT comes in several variants depending on the supported material scope and conditioning:
 
| Model | Metal alloy | Oxides | Adsorbate type | Binding energy | Catalyst class |
|-------|:-----------:|:------:|:--------------:|:--------------:|:--------------:|
| **CatDiT** | βœ“ | | | | βˆ’ |
| **CatDiT-plus** (base) | βœ“ | βœ“ | | βˆ’ | |
| **CatDiT-A** | βœ“ | | βœ“ | βˆ’ | |
| **CatDiT-B** | βœ“ | | | βœ“ | |
| **CatDiT-C** | βœ“ | βœ“ | | βˆ’ | βœ“ |
| **CatDiT-AB** | βœ“ | | βœ“ | βœ“ | |

 
## Usage
 
```python
from huggingface_hub import hf_hub_download
from omegaconf import OmegaConf
from src.models.ldm_module import LatentDiffusionLitModule
 
REPO = "doouv/catalyst-diffusion-transformer"
ckpt = hf_hub_download(REPO, "ldm/CatDiT.ckpt")   # CatDiT-A, CatDiT-B, CatDiT-C, CatDiT-AB
vae = hf_hub_download(REPO, "vae/VAE-S.ckpt")     # VAE-L for other pretrained models
 
cg = OmegaConf.create({
    "ads_id":         {"use": True,  "value": 77},    # see ads_id mappings
    "binding_energy": {"use": True,  "value": -1.24}, # eV
    "cat_class":      {"use": False, "value": None},
})
 
model = LatentDiffusionLitModule.load_from_checkpoint(
    ckpt, autoencoder_ckpt=vae, conditional_generation=cg,
    map_location="cuda", strict=False)
model.eval()
```
 
See the [GitHub repository](https://github.com/doouv/CatDiT) for the full generation pipeline and evaluation scripts.
 
## Training Data
 
CatDiT is trained on the [OC20](https://github.com/Open-Catalyst-Project/ocp) and [OC22](https://github.com/Open-Catalyst-Project/ocp/blob/main/DATASET.md) datasets.