CoolFace
Modelpublic

himasai9712/smiles2odor-pom-gnn

sourceHugging Faceapache-2.0updated 5mo agoView on Hugging Face
1likes10downloads
Model Card

smiles2odor — POM GNN baseline (Release 1)

Predict olfactory descriptors from SMILES strings. A GINE-based graph neural network trained on the Leffingwell PMP dataset, reproducing the Principal Odor Map (POM) approach.

Model details

  • —Architecture: 4× GINEConv layers (256 hidden) → sum pool → 2-layer MLP head
  • —Inputs: SMILES string → RDKit molecular graph
  • —Outputs: Multi-label probabilities over the Leffingwell descriptor vocabulary
  • —Training data: Leffingwell PMP via Pyrfume
  • —Loss: Binary cross-entropy per descriptor
  • —Splits: Bemis–Murcko scaffold split (80 / 10 / 10)

Intended uses

  • —Researchers studying structure–odor relationships
  • —Cheminformatics pipelines that need a quick olfactory prior over a candidate set
  • —Educational material illustrating graph neural networks on real-world chemistry

Limitations

  • —Coverage is limited to the descriptor vocabulary present in Leffingwell PMP.
  • —Trained on roughly 3.5k molecules; novel chemistry may lie far out-of-distribution.
  • —Multi-label probabilities are not calibrated — use them as relative rankings rather than absolute likelihoods.
  • —Descriptors reflect English perfumery vocabulary and inherit the cultural assumptions baked into the source data.

Evaluation

Metrics on the held-out scaffold-split test set:

MetricScore
Macro AUROC0.7829
Macro AUPRC0.2213
Micro AUROC0.8576
Micro AUPRC0.2444
# descriptors106

How to use

python
from smiles2odor.inference import OdorPredictor

predictor = OdorPredictor("pytorch_model.pt", device="cpu")
[result] = predictor.predict(["O=Cc1ccc(O)c(OC)c1"])  # vanillin
print(result.top_k)

Training reproduction

bash
git clone https://github.com/TODO/smiles2odor
cd smiles2odor
uv sync
uv run python releases/01_pom_gnn/train.py --config releases/01_pom_gnn/config.yaml

Citation

If you use this model, please cite the project repository (formal citation TBD with the first stable release).

License

Apache-2.0