Upload README.md with huggingface_hub
Browse files
README.md
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: mit
|
| 3 |
+
tags:
|
| 4 |
+
- rna
|
| 5 |
+
- llps
|
| 6 |
+
- phase-separation
|
| 7 |
+
- rna-fm
|
| 8 |
+
- biology
|
| 9 |
+
library_name: pytorch
|
| 10 |
+
---
|
| 11 |
+
|
| 12 |
+
# RNAPhaseek
|
| 13 |
+
|
| 14 |
+
Predicts the probability that an RNA sequence undergoes **protein-free
|
| 15 |
+
liquid–liquid phase separation (LLPS)**, and powers a de-novo generator
|
| 16 |
+
for new LLPS-prone RNAs.
|
| 17 |
+
|
| 18 |
+
## Try it (no install)
|
| 19 |
+
|
| 20 |
+
Open the Colab notebook from the project's GitHub repo for one-click
|
| 21 |
+
scoring and de-novo design.
|
| 22 |
+
|
| 23 |
+
## What's in this repo
|
| 24 |
+
|
| 25 |
+
- `final_model.pt` — RNA-FM + FEGSTrans adapter + 38-dim biophysics + MLP head, 426 MB
|
| 26 |
+
- `norm_stats.npz` — biophysics feature mean/std (must accompany the checkpoint)
|
| 27 |
+
- `model_card.json` — machine-readable training/eval metadata (includes internal training lineage for reproducibility)
|
| 28 |
+
|
| 29 |
+
## Architecture
|
| 30 |
+
|
| 31 |
+
Three streams fused in a single MLP head:
|
| 32 |
+
|
| 33 |
+
1. **RNA-FM backbone** (`multimolecule/rnafm`, 640-dim, last 2 layers fine-tuned)
|
| 34 |
+
2. **FEGSTrans adapter** that pools backbone embeddings with a structural FEGS bias
|
| 35 |
+
3. **38 biophysical features** (MFE, GC%, G4-potential, self-complementarity, etc.)
|
| 36 |
+
|
| 37 |
+
Trained on a strict protein-free RNA-LLPS corpus (1,396 positives / 678 negatives
|
| 38 |
+
/ 184 structural negatives) plus 83 de-leaked matched training pairs that teach
|
| 39 |
+
the model the free-vs-sequestered G-tract distinction — closing the
|
| 40 |
+
structure-specificity blind spot of earlier training recipes.
|
| 41 |
+
|
| 42 |
+
## Headline numbers
|
| 43 |
+
|
| 44 |
+
| Metric | Value |
|
| 45 |
+
|---|---|
|
| 46 |
+
| 5-fold cluster-grouped CV AUROC | **0.875** |
|
| 47 |
+
| Structural-specificity AUROC | **0.897** |
|
| 48 |
+
| Non-yeast generalization AUROC | **0.803** |
|
| 49 |
+
| Matched-pair accuracy (held-out) | **1.00** |
|
| 50 |
+
| Hard-18 held-out AUROC | **0.812** |
|
| 51 |
+
| Mean margin (pos − neg) on matched pairs | **+0.130** |
|
| 52 |
+
|
| 53 |
+
## Programmatic use
|
| 54 |
+
|
| 55 |
+
```python
|
| 56 |
+
from huggingface_hub import hf_hub_download
|
| 57 |
+
|
| 58 |
+
model_path = hf_hub_download(repo_id="quercuscode/rnaphaseek", filename="final_model.pt")
|
| 59 |
+
norm_path = hf_hub_download(repo_id="quercuscode/rnaphaseek", filename="norm_stats.npz")
|
| 60 |
+
|
| 61 |
+
# then load with the project code (see the GitHub repo):
|
| 62 |
+
from rnaphaseek import RNAPhaseekScorer, read_fasta
|
| 63 |
+
scorer = RNAPhaseekScorer(model_path=model_path, norm_path=norm_path)
|
| 64 |
+
probs = scorer.score(["GGGAGGGAGGGAGGGUUUUUUUUUUUUUUU"])
|
| 65 |
+
print(probs)
|
| 66 |
+
```
|
| 67 |
+
|
| 68 |
+
## Citation
|
| 69 |
+
|
| 70 |
+
If you use RNAPhaseek, please cite the accompanying manuscript (Pandi et al.).
|
| 71 |
+
|
| 72 |
+
## License
|
| 73 |
+
|
| 74 |
+
MIT for the code; weights released for academic use under the same license.
|