poly4mer v3.0.0
A chemical language model for polymer fire property prediction and inverse design, conditioned on the test conditions of the experiment (sample thickness and incident heat flux).
poly4mer maps a polymer pSMILES string to a single 768-dimensional latent vector z. From
that latent it both reconstructs the pSMILES and predicts four cone-calorimeter properties, so
the same representation supports forward prediction and gradient-based design in one space.
| Code | https://github.com/fishmoon1234/poly4mer (branch dev) |
| Backbone | SMI-TED Light, frozen |
| Latent | 768 dimensions |
| Max sequence | 202 tokens, vocabulary 2393 |
| Properties | time to ignition, peak heat release rate, smoke extinction area, CO yield |
| Conditions | sample thickness (mm), incident heat flux (kW/m²) |
| License | MIT |
Predicted properties
| Key | Property | Unit |
|---|---|---|
tig |
time to ignition | s |
pkhrr |
peak heat release rate | kW/m² |
sea |
smoke extinction area | m²/kg |
co |
carbon monoxide yield | kg/kg |
Files
This repository holds both released versions. v3 lives under poly4mer_pretrained_v3/.
| Path in this repository | Size | Where it goes in the code repo |
|---|---|---|
poly4mer_pretrained_v3/poly4mer_v3.ckpt |
3.7 GB | checkpoint/ |
poly4mer_pretrained_v2/smi_ted_light/smi-ted-Light_40.pt |
1.1 GB | smi_ted_light/ |
poly4mer_pretrained_v3/tig_10folds/fold_{0..9}_best_fp32.ckpt |
32 MB | poly4mer_monotone/checkpoint/tig/last_two_linear/ |
poly4mer_pretrained_v3/phrr_10folds/fold_{0..9}_best_fp32.ckpt |
32 MB | poly4mer_monotone/checkpoint/phrr/last_two_linear/ |
poly4mer_pretrained_v3/sea_10folds/fold_{0..9}.ckpt |
32 MB | checkpoint/fire_property_heads/sea/ |
poly4mer_pretrained_v3/co_10folds/fold_{0..9}.ckpt |
32 MB | checkpoint/fire_property_heads/co/ |
Only the first two are needed for prediction, reconstruction or design. The main checkpoint already carries a property head for each of the four properties.
The per-fold folders hold two different kinds of head. For tig and pHRR they are the
monotone heads described below, recognisable by the _best_fp32 suffix. For SEA and CO,
which have no monotone variant, they are the standard per-fold heads used to reproduce the
cross-validation tables. The v2 release is under poly4mer_pretrained_v2/.
What is in poly4mer_v3.ckpt
| Key | Contents |
|---|---|
star_encoder |
embeds the * attachment-point token |
autoencoder_encoder |
token embeddings → latent z |
decoder |
latent z → token embeddings |
predictor |
token embeddings → token logits (the token predictor, not the property one) |
property_regressors |
four MLP heads for tig, pHRR, SEA, CO |
property_stats |
standardization statistics for thickness, flux and the four targets |
Two kinds of "predictor".
predictoris the token predictor, the last stage of the decoder. The property predictors live underproperty_regressors.
The property heads consume the raw latent. Only thickness and flux are standardized.
| Head | Input | Dimension |
|---|---|---|
| tig | [z, thickness_norm, flux_norm] |
770 |
| pHRR | [z, thickness_norm, flux_norm] |
770 |
| SEA | z |
768 |
| CO | z |
768 |
Each head emits a standardized value; the physical value is output * y_std[k] + y_mean[k].
Input format
Inputs must be RDKit-canonical pSMILES with bare * attachment points, for example
*CC(*)c1ccccc1. Bracketed stars such as [*], and non-canonical orderings of the same
molecule, do not encode faithfully and will not reconstruct.
This is the single most common cause of a failed installation reporting near-zero
reconstruction. The repository ships canonical_psmiles() and a --canonicalize flag for
exactly this.
The model is trained on single repeat units. Multi-component strings joined by ., used for
blends and some thermoset formulations, do not reconstruct: the fragments come back but the
separator does not.
Quick start
git clone -b dev https://github.com/fishmoon1234/poly4mer.git && cd poly4mer
pip install -r requirements.txt
huggingface-cli download fishmoon1234/poly4mer \
poly4mer_pretrained_v3/poly4mer_v3.ckpt --local-dir /tmp/p4m
mv /tmp/p4m/poly4mer_pretrained_v3/poly4mer_v3.ckpt checkpoint/
huggingface-cli download fishmoon1234/poly4mer \
poly4mer_pretrained_v2/smi_ted_light/smi-ted-Light_40.pt --local-dir /tmp/p4m
mv /tmp/p4m/poly4mer_pretrained_v2/smi_ted_light/smi-ted-Light_40.pt smi_ted_light/
python fire_property_prediction_V3.py --smiles '*CC(*)C' --thickness 3 --flux 50
>> Predicted Tig 30.0235 s
>> Predicted pHRR 2106.3787 kW/m^2
>> Predicted SEA 0.053634 m^2/kg
>> Predicted CO 0.028990 kg/kg
Inverse design from a seed polymer, and a reconstruction check:
./run_design.sh
python evaluate_reconstruction_v3.py --files homo=example_pSMILES_homo.txt
Performance
Reconstruction
Canonical pSMILES in, canonical pSMILES out, exact string match.
| Set | n | Exact match | Mean Tanimoto |
|---|---|---|---|
| Training corpus sample | 100,000 | 99.99% | 1.000 |
| Simulated set | 109,993 | 100.00% | 1.000 |
| Commodity homopolymers | 16 | 100.00% | 1.000 |
The 16 homopolymers include seven absent from the training corpus; all seven reconstruct exactly, including an 87-token polyetherimide.
Property prediction
Mean absolute relative error on experimental cone-calorimeter data, 10-fold cross-validation.
| Property | Best-5 folds |
|---|---|
| tig | 15.76% |
| pHRR | 12.61% |
| SEA | 1.58% |
| CO | 0.93% |
Read these with the protocol in mind. The training epoch and learning rate are selected on
each fold's own test rows, so per-fold test errors are optimistically biased. Prefer the
all-10 column when a single number is needed. The repository ships the fold data, the 40
per-fold heads and evaluate_fire_prediction_heads.py so both columns can be checked, plus a
--cv mode that re-runs the training; re-training reproduces the best-5 figure to about 0.1
points for tig and 0.03 for CO.
Sanity against measurement, at 50 kW/m²:
| Polymer | Measured pHRR | Predicted |
|---|---|---|
| nylon 6,6 | 1226 | 1228 |
| polypropylene | 2141 | 1947 |
| PMMA | 1115 | 1144 |
Intended use
Screening and ranking candidate polymer repeat units for fire behaviour, and exploring the latent neighbourhood of a known polymer. Suitable for research.
Not suitable as a substitute for cone-calorimeter testing, for safety certification, or for any decision where a wrong fire-performance estimate carries risk. The experimental data behind the property heads is small, a few hundred rows, and errors on unseen polymers are tens of percent.
Monotone heads for tig and pHRR
tig_10folds/ and phrr_10folds/ hold alternative heads that are hard-monotone in heat
flux by construction: tig can only fall as the flux rises, pHRR can only rise. The constraint
is structural rather than a penalty, so it holds for every input, including polymers far
outside the data. The encoder is unchanged, so these drop in beside the main checkpoint.
The head is not read out directly. The MLP is evaluated at 17 fixed flux knots from 20 to 100 kW/m², a running minimum (tig) or maximum (pHRR) is taken across them, and the value at the requested flux is interpolated between the two bracketing knots. Fluxes outside that range are clamped to the end knots.
Ten checkpoints ship per property, one per fold. --ensemble averages them, which is the
safer choice for a polymer outside the experimental set.
cd poly4mer_monotone
./run_property_prediction_monotone.sh
Use them when a prediction feeds an optimizer or a screening loop and a non-physical flux trend would be costly. On held-out polymers they are level with, not better than, the standard heads under leakage-free selection, so the case for them is the guarantee rather than the accuracy. SEA and CO have no monotone variant.
Citation
@article{liu2025harnessing,
title={Harnessing large language models for data-scarce learning of polymer properties},
author={Liu, Ning and Jafarzadeh, Siavash and Lattimer, Brian Y and Ni, Shuna and Lua, Jim and Yu, Yue},
journal={Nature Computational Science},
volume={5},
number={3},
pages={245--254},
year={2025},
publisher={Nature Publishing Group US New York}
}
@inproceedings{yin2025fake,
title={Fake It Till You Make It: Multi-Physics Synthesis Breaks the Data Barrier in Chemical Language Models},
author={Yin, Naiyu and Liu, Ning and Chen, Jiuzhou and Lattimer, Brian Y and Lua, Jim and Yu, Yue},
booktitle={NeurIPS 2025 Machine Learning and the Physical Sciences Workshop}
}
Model tree for fishmoon1234/poly4mer
Base model
ibm-research/materials.smi-ted