Skip to content

ESMFold2: SMILES ligands are written as LIG, which is a different molecule in the CCD #421

Open

Description

@daylight-00

ESMFold2 labels a ligand given as SMILES LIG in the returned MolecularComplex and in to_mmcif(). In the CCD, LIG is an unrelated component, so the label points at the wrong molecule:

LigandInput(id="B", smiles="O=C1NC(=O)C(N1)(c1ccccc1)c1ccccc1")  # phenytoin, C15 N2 O2
complex.sequence                                                  # ['ALA', 'GLY', 'LIG']

from biotite.structure.info import residue
residue("LIG")                                                    # 29 atoms, heavy atoms C15 N3

The mmCIF carries no _chem_comp entry for it, so a reader that looks component IDs up in the CCD sees that molecule rather than the ligand. The other tools I checked do not write the bare LIG for SMILES ligands:

Tool Name written for a SMILES ligand CCD entry with that name
ESMFold2 (main) LIG yes, a different molecule (C15 N3)
Boltz LIG1, LIG2, … none
Chai-1 LIG + asym id none
AlphaFold 3 LIG_<chain id> none
OpenFold3 LIG0, LIG1, … (per distinct SMILES) none
AtomWorks UNL "Unknown ligand" placeholder, no atoms

The label comes from tokenize_ligand_smiles in esm/models/esmfold2/prepare_input.py. Naming each distinct SMILES ligand with a non-CCD ID, e.g. LIG1, LIG2 as Boltz does, would remove the collision.

(Names read from source: Boltz b1ebfc4, chai-lab 66c38d1, alphafold3 f43dfb8, OpenFold3 270425a, AtomWorks fcf7af8c, ESM 43b4548; CCD lookups use biotite's bundled CCD.)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions