Skip to main content

Bayesian flow network framework for Chemistry

Project description

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.

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={Nianze Tao},
    year={2024},
    eprint={2412.11439},
    archivePrefix={arXiv},
    primaryClass={cs.LG},
    url={https://arxiv.org/abs/2412.11439}, 
}

Project details


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-2.4.3.tar.gz (58.4 kB 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-2.4.3-py3-none-any.whl (54.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: bayesianflow_for_chem-2.4.3.tar.gz
  • Upload date:
  • Size: 58.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for bayesianflow_for_chem-2.4.3.tar.gz
Algorithm Hash digest
SHA256 6d07cdab6567071e685e3fbea13749336acbba250c88aa1715e259d01ef94c43
MD5 5ce536844dab1f10c4e5503b052331d2
BLAKE2b-256 32600bf5d7e55c4f4d1e1457521fed1348062610859ae464d488b597fe134950

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bayesianflow_for_chem-2.4.3-py3-none-any.whl
Algorithm Hash digest
SHA256 d466fd757c0d5a7852f53a5f9bbb52cbf9254d0aa6093b87df9b2b0ab167d107
MD5 f5f5306679f288410ad2e9d834c4f4a9
BLAKE2b-256 0aed9ae32b0f62adc8da4dce23c43b6d652c952c6e09e9e6f592cdd51aa348a5

See more details on using hashes here.

Supported by

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