--- 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.