--- license: mit library_name: transformers tags: - chemistry - cheminformatics - natural-products - smiles --- # CLaM-NP SMILES language models for **natural-product-likeness** scoring (CLaM-NP Score). This repository hosts up to three causal language models, one per subfolder: | Subfolder | Training data | Role | |--------------|---------------|-------------------------------| | `natural` | COCONUT | P(x \| natural) | | `synthetic` | ZINC22 | P(x \| synthetic) | | `general` | ChEMBL | P(x \| general) — stabilizer | Tokenizer: [`kohbanye/SmilesTokenizer_PubChem_1M`](https://huggingface.co/kohbanye/SmilesTokenizer_PubChem_1M). ## Training data The three models are trained on a joint scaffold split: the scaffolds of all three datasets are pooled and clustered together (ECFP4 Tanimoto >= 0.6), and each cluster goes to a single split, so no scaffold is shared between the training data of one dataset and the evaluation data of another. The split is built by [`scripts/joint_split.py`](https://github.com/ohuelab/clamnp/blob/main/scripts/joint_split.py). - `natural`: COCONUT, August 2025 release (`coconut_csv-08-2025.zip`) - `synthetic`: 700,000 compounds drawn at random from ZINC 22. A random draw cannot be repeated, so the sample is deposited here as `data/zinc22_sample.smi` (one SMILES per line, as standardized for training). - `general`: ChEMBL 35 ## Usage ```python from clamnp import CLaMNPScorer scorer = CLaMNPScorer.from_pretrained() # this repo print(scorer.score("CC(=O)Oc1ccccc1C(=O)O")) # CLaM-NP Score ``` Or load a single model directly: ```python from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_pretrained("kohbanye/clamnp", subfolder="natural") ```