Downloads · 30 days
0
lighteternal/BioAssayAlign-Qwen3-Embedding-0.6B-Compatibility
BioAssayAlign-Qwen3-Embedding-0.6B-Compatibility is a machine learning model from lighteternal. Use it for the machine learning task on the model card, and read the license before you ship it in a product. It is set up for pytorch. The card lists the license as mit.
<p align="center" <img src="./bioassayalign.png" alt="BioAssayAlign logo" width="280" </p
Downloads · 30 days
0
Access
Public
Updated Mar 9, 2026
Repo size
62.6 MB
Likes
1
Public
Click a slice to open those files.
.pt19.6 MB · 82%
From the Hugging Face model README
BioAssayAlign is an assay-conditioned small-molecule ranking model.
It takes:
and returns:
This model is designed to answer a practical question:
Given this assay, which molecules in my current candidate list should I screen first?
It is not:
Public dataset:
The published model was trained on the prepared compatibility-ranking subset inside that dataset release.
Use this model when you already have a candidate set and want a ranking signal for one assay at a time.
Reasonable uses:
Not reasonable uses:
This repository is self-contained for inference. You do not need the original training codebase to run the published model.
python -m pip install -r requirements.txt
from bioassayalign_compatibility import (
AssayQuery,
load_compatibility_model_from_hub,
rank_compounds,
serialize_assay_query,
)
model = load_compatibility_model_from_hub(
"lighteternal/BioAssayAlign-Qwen3-Embedding-0.6B-Compatibility"
)
assay_text = serialize_assay_query(
AssayQuery(
title="JAK2 inhibition assay",
description="Cell-based luminescence assay measuring JAK2 inhibition in HEK293 cells.",
organism="Homo sapiens",
readout="luminescence",
assay_format="cell-based",
assay_type="inhibition",
target_uniprot=["O60674"],
)
)
results = rank_compounds(
model,
assay_text=assay_text,
smiles_list=[
"CC(=O)Nc1ncc(C#N)c(Nc2ccc(F)c(Cl)c2)n1",
"c1ccccc1",
"CCO",
],
)
for row in results:
print(row)
Best practice:
Recommended assay fields:
titledescriptionorganismreadoutassay_formatassay_typetarget_uniprotThe model is reasonably robust to wording changes, but missing metadata can reduce ranking quality.
Published artifact configuration:
| Component | Value |
|---|---|
| Assay encoder | Qwen/Qwen3-Embedding-0.6B |
| Assay encoder training | Frozen |
| Assay metadata features | Enabled, 128 dims |
| Molecule features | Morgan fingerprints (r=2,3, 2048 bits each), chirality, MACCS, 30 RDKit descriptors |
| Projection dimension | 512 |
| Hidden dimension | 1024 |
| Dropout | 0.12 |
| Final score | Learned compatibility head output |
Important:
The public artifact was trained on a frozen assay-compound corpus derived from:
The published model uses the prepared compatibility-ranking subset from:
| Field | Value |
|---|---|
| Assays | 11,195 |
| Candidate-pool rows | 1,432,532 |
| Training groups | 508,216 |
| Train assays | 8,967 |
| Validation assays | 1,117 |
| Test assays | 1,111 |
| Rule | Value |
|---|---|
| Minimum actives per assay | 4 |
| Minimum inactives per assay | 16 |
| Maximum actives per assay | 48 |
| Maximum inactives per assay | 192 |
| Molecule standardization | Enabled |
| Source manifest SHA256 | e4766477b64860952258cb4b76567b83061d5de44bb5f3b322ecdfe54f19910b |
Each training group contains:
This is a ranking setup, not a generic text-retrieval setup.
| Field | Value |
|---|---|
| Framework | pytorch_head_only_compatibility_ranking |
| Learning rate | 1.5e-3 |
| Batch size | 192 |
| Weight decay | 1e-4 |
| Hard-negative fraction | 0.5 |
| Negatives per example | 15 |
| Negative sets per positive | 2 |
| Max epochs | 30 |
| Early stopping patience | 5 |
| Early stopping min delta | 0.001 |
| Best epoch | 9 |
| Split | Mean AUPRC | Random-baseline AUPRC | Hit@10 | Mean AUROC | Mean nDCG@50 |
|---|---|---|---|---|---|
| Validation | 0.6214 | 0.2678 | 0.9722 | 0.7767 | 0.7140 |
| Test | 0.6339 | 0.2749 | 0.9739 | 0.7815 | 0.7250 |
Interpretation:
The raw output is a learned compatibility logit-like score.
What it means:
Example:
6.25-8.65-23.37This does not mean A has a literal probability or potency attached to it. It means A ranked substantially above B and C for that submitted assay and candidate set.
For user-facing interpretation, the recommended order is:
If you want a normalized within-list view, you can compute:
0–100Those are still not calibrated biological probabilities.
These examples were produced from the published weights.
Assay:
JAK2 inhibition assayCell-based luminescence assay measuring JAK2 inhibition in HEK293 cells.Homo sapiensluminescencecell-basedinhibitionO60674| Rank | Candidate SMILES | Raw score |
|---|---|---|
| 1 | CC(=O)Nc1ncc(C#N)c(Nc2ccc(F)c(Cl)c2)n1 | 6.2590 |
| 2 | Cc1cc(=O)n(C)c(=O)[nH]1 | -8.6542 |
| 3 | CCO | -12.8678 |
| 4 | CCOc1ccc2nc(N3CCN(C)CC3)n(C)c(=O)c2c1 | -23.3741 |
Assay:
ALDH1A1 inhibition assayCell-based fluorescence assay measuring ALDH1A1 inhibition in human cells.Homo sapiensfluorescencecell-basedinhibitionP00352| Rank | Candidate SMILES | Raw score |
|---|---|---|
| 1 | CCOc1ccccc1 | -26.9257 |
| 2 | Cc1cc(=O)n(C)c(=O)[nH]1 | -38.5073 |
| 3 | CCN(CC)CCOc1ccccc1 | -39.1753 |
| 4 | CCO | -42.9016 |
Files provided in this HF model repo:
best_model.pttraining_metadata.jsontraining_summary.jsonbioassayalign_compatibility.pyrequirements.txtUse the model in the companion Space:
https://huggingface.co/spaces/lighteternal/BioAssayAlign-Compatibility-Explorer