--- license: mit tags: - graph-neural-network - attention - molecular-property-prediction - chemistry --- # ESA — Edge-Set Attention Graph encoder from the paper [An end-to-end attention-based approach for learning on graphs](https://www.nature.com/articles/s41467-025-56067-5) (Buterez et al., Nature Communications 2025). ESA treats edges (or nodes) as a set and applies masked multi-head attention over them, encoding graph structure as an attention bias mask. No message-passing, no PyG required at inference time. ## Usage ```python from transformers import AutoModel, AutoConfig model = AutoModel.from_pretrained("viguera10/esa-graph-encoder", trust_remote_code=True) # Inputs are plain PyTorch tensors import torch # Two molecules batched together: # mol0: 4 nodes, edges 0->1, 1->2, 2->3 (and reverse) # mol1: 3 nodes, edges 0->1, 1->2 (and reverse) node_features = torch.randn(7, 84) # total 7 nodes, 84 node features (ChemProp one-hot) edge_index = torch.tensor([ # global node indices [0,1,1,2,2,3, 4,5,5,6], [1,0,2,1,3,2, 5,4,6,5], ]) edge_attr = torch.randn(10, 14) # 10 edges, 14 edge features (ChemProp one-hot) batch_mapping = torch.tensor([0,0,0,0, 1,1,1]) # node -> graph id output = model( node_features=node_features, edge_index=edge_index, batch_mapping=batch_mapping, edge_attr=edge_attr, ) # output.last_hidden_state: Tensor[2, 256] — one embedding per graph ``` ## Configuration Key parameters in `config.json`: | Parameter | Description | |---|---| | `apply_attention_on` | `"edge"` (ESA) or `"node"` (NSA) | | `hidden_dims` | Feature dimension at each layer | | `num_heads` | Attention heads at each layer | | `layer_types` | Sequence of `"S"` (SAB), `"M"` (masked SAB), `"P"` (PMA pooling) | | `dim_output` | Dimension of the output graph embedding | | `xformers_or_torch_attn` | `"torch"` (default) or `"xformers"` | ## Citation ```bibtex @Article{Buterez2025, author={Buterez, David and Janet, Jon Paul and Oglic, Dino and Li{\`o}, Pietro}, title={An end-to-end attention-based approach for learning on graphs}, journal={Nature Communications}, year={2025}, month={Jun}, day={05}, volume={16}, number={1}, pages={5244}, issn={2041-1723}, doi={10.1038/s41467-025-60252-z}, url={https://doi.org/10.1038/s41467-025-60252-z} } ```