Downloads · 30 days
0
Scinetics/enzymecot
enzymecot is a machine learning model from Scinetics. Use it for the machine learning task on the model card, and read the license before you ship it in a product. The card lists the license as apache-2.0.
Joint adapters for reaction-conditioned, three-round de novo enzyme design: Qwen3-4B as the understanding model and RFdiffusion3 as the generator, trained together.
Downloads · 30 days
0
Access
Public
Updated Sep 17, 2026
Repo size
12.4 GB
Likes
0
Public
Click a slice to open those files.
.safetensors8 GB · 65%
From the Hugging Face model README
Joint adapters for reaction-conditioned, three-round de novo enzyme design: Qwen3-4B as the understanding model and RFdiffusion3 as the generator, trained together.
s3_best.pt - a 553 MB PyTorch state_dict (755 tensors, 138.9 M parameters).
Adapters only: no optimizer state, no base model weights.
| Training | 4000 steps, run to completion |
| Validation | mean L_gen over the three rounds: 0.3804 (step 250) -> 0.3611 (step 3500, the lowest over the whole run) |
| Trained parts | Qwen LoRA + structure/ligand projections + injection (2.29 M) + RFdiffusion3 LoRA (2.89 M, MLP) |
| Date | 2026-09-11 |
Evaluation figures reported for this line of work - catalytic-site RMSD 0.94 A, LigandMPNN-8 self-consistency 5/8 and 8/8 designable, pLDDT 77.9 / 94.5 - were produced with the step-2500 checkpoint (val 0.3526).
s3_best.pt is step-3500 (mean val L_gen 0.3611 - the lowest over the run,
which is why it was saved as best). An earlier version of this card said
step-4000 with val 0.3497; both were wrong - see the correction note below.
The step-3500 weights have not been re-evaluated end to end, so please do not
attribute the step-2500 numbers to them without re-running the evaluation.
s3_step2500.pt (the checkpoint those numbers DO come from) and s3_step4000.pt
are now included in this repository so the reported figures can be reproduced
against the weights they were actually produced with.
This repository is self-contained: everything needed to run the model is here.
| File | What it is | Size | Licence |
|---|---|---|---|
qwen3_4b_enzymecot/ | Qwen3-4B with the Stage III LoRA already merged in. Load it directly with AutoModelForCausalLM.from_pretrained; nothing to apply. | 8.0 GB | Apache-2.0 (Qwen) |
rfd3_latest.ckpt | RFdiffusion3 base weights, redistributed unmodified (md5 8376a41d01acba92e8e3d4dafcf5755e). Not otherwise on the Hub. | 2.7 GB | BSD-3-Clause (IPD/UW) |
s3_best.pt | The Stage III adapters that were published here on 2026-09-14. llm.* (504) + enc.* (8) + inj.* (3) + rfd3.* (240) tensors, 138.9 M parameters. Apply the rfd3.* part to rfd3_latest.ckpt; llm.* is already merged into the folder above. | 553 MB | Apache-2.0 (ours) |
s3prod_pp4/s3_step2500.pt, s3prod_pp4/s3_step4000.pt | Checkpoints from a different, later training run (s3prod_pp4). Kept for comparison; see the provenance note. | 553 MB each | Apache-2.0 (ours) |
load_enzymecot.py | Loader for all three parts, with the exact LoRA configurations training used | small | Apache-2.0 (ours) |
The Stage III Qwen LoRA is r=64, alpha=128, targets q/k/v/o/gate/up/down_proj
(RFdiffusion3's is r=16, alpha=32, targets linear_1/linear_2/linear_3). The Qwen
LoRA was merged in float32 and then cast to bfloat16, and compared against the
unmerged model on the same prompts:
| distance from the float32 unmerged reference | max abs | argmax agreement | top-5 agreement | max KL |
|---|---|---|---|---|
| float32, merged | 4.3e-05 | 100 % | 100 % | 1.8e-07 |
| bfloat16, unmerged (what the adapter path gives you) | 0.74 | 95.5 % | 58.3 % | 3.7e-03 |
| bfloat16, merged (published here) | 0.91 | 95.5 % | 66.7 % | 4.4e-03 |
The merge itself is exact (row 1); the error is dominated by bfloat16, which the adapter path already incurs. The published merged model matches the adapter path on argmax and is slightly better on top-5.
RFdiffusion3 is shipped unmerged on purpose: its checkpoint carries EMA copies (1616 tensors / 336.1 M parameters) and merging into it is easy to get silently wrong, so the upstream file is kept byte-identical and the adapter is handed to you instead.
s3_best.pt (corrected 2026-09-17)Earlier versions of this card made two claims about s3_best.pt that do not hold.
What is actually verifiable:
s3_best.pt is value-identical to s3_step2500.pt of the training run s3prod_run1.
Verified by loading all 755 tensors of the published file and of every checkpoint of
every s3prod_* run on our cluster and comparing them element-by-element: zero tensors
differ from that one file, while 754 of 755 differ from every checkpoint of the
later s3prod_pp4 run. So the published weights are a step-2500 checkpoint - which
means the evaluation figures reported for this line of work
(catalytic-site RMSD 0.94 A, LigandMPNN-8 self-consistency 5/8 and 8/8) were produced
with this checkpoint, not a different one. The earlier caveat to the contrary was
based on a misreading.s3prod_run1 the file s3_best.pt carries the modification time of the step-4000
save while containing the step-2500 weights, so a timestamp-based reading gives the
wrong step. Step numbers here were established by comparing tensors, not timestamps
or file names.0.386 -> 0.3497, and a later revision of this
card quoted 0.3611. Neither describes this file. The training log of s3prod_run1
is not retained on our cluster, so no validation number for s3_best.pt can be
verified, and none is claimed here. The strings 0.3497 and 0.386 do not appear in
any surviving log.s3prod_pp4 run, whose log is retained, the verified curve (mean L_gen
over the three rounds) is 0.3804 (step 250) -> 0.3611 (step 3500, the minimum) ->
0.3623 (step 4000). Those numbers describe the files under s3prod_pp4/ only, and
s3prod_pp4 has not been evaluated end to end.No weights were changed by any of these corrections; only the description was wrong.
This is an adapter checkpoint, not a standalone model. You need:
Given a reaction (SMILES), the ligand's chemistry and 3D coordinates, and a target protein length, the model designs an enzyme in three rounds:
Trained on the EnzymeCoT corpus (19,888 train / 1,123 validation records, lengths 100-997) with a reaction- and homology-disjoint split. Ligand binding conformations are taken from reference complexes, which are Boltz predictions rather than experimental structures.