Skip to main content

ChemBFN: Bayesian Flow Network for Chemistry

DOI DOI arxiv

This is the repository of the PyTorch implementation of ChemBFN model.

Build State

PyPI CI document

Features

ChemBFN provides the state-of-the-art functionalities of

  • SMILES or SELFIES-based de novo molecule generation
  • Protein sequence de novo generation
  • Template optimisation (mol2mol)
  • Classifier-free guidance conditional generation (single or multi-objective optimisation)
  • Context-guided conditional generation (inpaint)
  • Outstanding out-of-distribution chemical space sampling
  • Fast sampling via ODE solver
  • Molecular property and activity prediction finetuning
  • Reaction yield prediction finetuning

in an all-in-one-model style. A built-in MLFF can further convert the generated SMILES strings to the corresponding 3D conformations.

News

  • [26/12/2025] We were invited to submit a short report about ChemBFN for CICSJ Bulletin.
  • [09/10/2025] A web app chembfn_webui for hosting ChemBFN models is available on PyPI.
  • [30/01/2025] The package bayesianflow_for_chem is available on PyPI.
  • [21/01/2025] Our first paper has been accepted by JCIM.
  • [17/12/2024] The second paper of out-of-distribution generation is available on arxiv.org.
  • [31/07/2024] Paper is available on arxiv.org.
  • [21/07/2024] Paper was submitted to arXiv.

Install

$ pip install -U bayesianflow_for_chem

Usage

You can find example scripts in 📁example folder.

Pre-trained Model

You can find pretrained models (linked to pretraining datasets) on our 🤗Hugging Face model page.

Dataset Handling

We provide a Python class CSVData to handle data stored in CSV or similar format containing headers to identify the entities. The following is a quickstart.

  1. Download your dataset file (e.g., ESOL from MoleculeNet) and split the file:
>>> from bayesianflow_for_chem.tool import split_data

>>> split_data("delaney-processed.csv", method="scaffold")
  1. Load the split data:
>>> from bayesianflow_for_chem.data import smiles2token, collate, CSVData

>>> dataset = CSVData("delaney-processed_train.csv")
>>> dataset[0]
{'Compound ID': ['Thiophene'], 
'ESOL predicted log solubility in mols per litre': ['-2.2319999999999998'], 
'Minimum Degree': ['2'], 
'Molecular Weight': ['84.14299999999999'], 
'Number of H-Bond Donors': ['0'], 
'Number of Rings': ['1'], 
'Number of Rotatable Bonds': ['0'], 
'Polar Surface Area': ['0.0'], 
'measured log solubility in mols per litre': ['-1.33'], 
'smiles': ['c1ccsc1']}
  1. Create a mapping function to tokenise the dataset and select values:
>>> import torch

>>> def encode(x):
...   smiles = x["smiles"][0]
...   value = [float(i) for i in x["measured log solubility in mols per litre"]]
...   return {"token": smiles2token(smiles), "value": torch.tensor(value)}

>>> dataset.map(encode)
>>> dataset[0]
{'token': tensor([  1, 151,  23, 151, 151, 154, 151,  23,   2]), 
'value': tensor([-1.3300])}
  1. Wrap the dataset in torch.utils.data.DataLoader:
>>> dataloader = torch.utils.data.DataLoader(dataset, 32, collate_fn=collate)

Cite This Work

@article{2025chembfn,
    title={Bayesian Flow Network Framework for Chemistry Tasks},
    author={Tao, Nianze and Abe, Minori},
    journal={Journal of Chemical Information and Modeling},
    volume={65},
    number={3},
    pages={1178-1187},
    year={2025},
    doi={10.1021/acs.jcim.4c01792},
}
@article{2025chembfn_report,
    title={Molecular Structure Design via Bayesian Flow Network},
    author={Tao, Nianze and Nagai, Touma and Abe, Minori},
    journal={CICSJ Bulletin},
    volume={43},
    number={1},
    pages={10-14},
    year={2025},
    doi={10.11546/cicsj.43.10},
}

Out-of-distribution generation and fast sampling:

@misc{2024chembfn_ood,
    title={Bayesian Flow Is All You Need to Sample Out-of-Distribution Chemical Spaces}, 
    author={Tao, Nianze and Abe, Minori},
    year={2024},
    eprint={2412.11439},
    archivePrefix={arXiv},
    primaryClass={cs.LG},
    url={https://arxiv.org/abs/2412.11439}, 
}

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bayesianflow_for_chem-3.0.0.tar.gz (2.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bayesianflow_for_chem-3.0.0-py3-none-any.whl (2.5 MB view details)

Uploaded Python 3

File details

Details for the file bayesianflow_for_chem-3.0.0.tar.gz.

File metadata

  • Download URL: bayesianflow_for_chem-3.0.0.tar.gz
  • Upload date:
  • Size: 2.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for bayesianflow_for_chem-3.0.0.tar.gz
Algorithm Hash digest
SHA256 059e3a1ea7dd0daafccf83d12745a2a8ecf1f8b2df4cc678a3139916c366457a
MD5 8d87cd622ebbf48a13eedb4d5d08613b
BLAKE2b-256 9ad539b4a74028974d246295d63325e387c54b8680831af6ddfdbb82fcdb9b0d

See more details on using hashes here.

File details

Details for the file bayesianflow_for_chem-3.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for bayesianflow_for_chem-3.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6547505d103c297c2eba36144d371cfc9702981519e540d7b82ec96a60d12306
MD5 7623a504e679593bcf389571078f4ea6
BLAKE2b-256 6963b144183feaae3f45ec319185762c7d9e088594e6927ff5e43acf7b928b8c

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

3.0.0 This release

2 files

2.4.4

2 files

2.4.3

2 files

2.4.2

2 files

2.4.1

2 files

2.4.0

2 files

2.3.5

2 files

2.3.4

2 files

2.3.3

2 files

2.3.2

2 files

2.3.1

2 files

2.3.0

2 files

2.2.6

2 files

2.2.5

2 files

2.2.4

2 files

2.2.3

2 files

2.2.2

2 files

2.2.1

2 files

2.1.0

2 files

2.0.5

2 files

2.0.4

2 files

2.0.3

2 files

2.0.2

2 files

2.0.1

2 files

2.0.0

2 files

1.4.3

2 files

1.4.2

2 files

1.4.1

2 files

1.4.0

2 files

1.3.0

2 files

1.2.7

2 files

1.2.6

2 files

1.2.1

2 files

1.2.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page