|
from dataclasses import dataclass |
|
from enum import Enum |
|
|
|
|
|
@dataclass |
|
class Task: |
|
benchmark: str |
|
metric: str |
|
col_name: str |
|
|
|
|
|
|
|
|
|
class TasksRGB(Enum): |
|
|
|
task0 = Task("mRNA", "RMSE", "mRNA (RMSE)") |
|
task1 = Task("SNMD", "AUC", "SNMD (AUC)") |
|
task2 = Task("SNMR", "F1", "SNMR (F1)") |
|
task3 = Task("ArchiveII", "F1", "ArchiveII (F1)") |
|
task4 = Task("bpRNA", "F1", "bpRNA (F1)") |
|
task5 = Task("RNAStralign", "F1", "RNAStralign (F1)") |
|
|
|
class TasksPGB(Enum): |
|
|
|
task0 = Task("PolyA", "F1", "PolyA (F1)") |
|
task1 = Task("LncRNA", "F1", "LncRNA (F1)") |
|
task2 = Task("Chrom Acc", "F1", "Chrom Acc (F1)") |
|
task3 = Task("Prom Str", "RMSE", "Prom Str (RMSE)") |
|
task4 = Task("Term Str", "RMSE", "Term Str (RMSE)") |
|
task5 = Task("Splice", "F1", "Splice (F1)") |
|
task6 = Task("Gene Exp", "RMSE", "Gene Exp (RMSE)") |
|
task7 = Task("Enhancer", "F1", "Enhancer (F1)") |
|
|
|
class TasksGUE(Enum): |
|
|
|
task0 = Task("Yeast EMP", "F1", "Yeast EMP (F1)") |
|
task1 = Task("Mouse TF-M", "F1", "Mouse TF-M (F1)") |
|
task2 = Task("Virus CVC", "F1", "Virus CVC (F1)") |
|
task3 = Task("Human TF-H", "F1", "Human TF-H (F1)") |
|
task4 = Task("Human PD", "F1", "Human PD (F1)") |
|
task5 = Task("Human CPD", "F1", "Human CPD (F1)") |
|
task6 = Task("Human SSP", "F1", "Human SSP (F1)") |
|
|
|
class TasksGB(Enum): |
|
|
|
task0 = Task("DEM", "F1", "DEM (F1)") |
|
task1 = Task("DOW", "F1", "DOW (F1)") |
|
task2 = Task("DRE", "F1", "DRE (F1)") |
|
task3 = Task("DME", "F1", "DME (F1)") |
|
task4 = Task("HCE", "F1", "HCE (F1)") |
|
task5 = Task("HEE", "F1", "HEE (F1)") |
|
task6 = Task("HRE", "F1", "HRE (F1)") |
|
task7 = Task("HNP", "F1", "HNP (F1)") |
|
task8 = Task("HOR", "F1", "HOR (F1)") |
|
|
|
|
|
NUM_FEWSHOT = 0 |
|
|
|
|
|
|
|
TITLE = """<h1 align="center" id="space-title">Genomic Modelling Leaderboard</h1>""" |
|
|
|
|
|
INTRODUCTION_TEXT = """ |
|
""" |
|
|
|
|
|
LLM_BENCHMARKS_TEXT = f""" |
|
## Why do we need this benchmark? |
|
Large-scale foundation models for molecular biology constitute a vital and rapidly developing change in the computational biology and AI4Science landscape. |
|
As key parts of biology, such as DNA, RNA sequences, secondary structures, have a large effect on each other, the usage of this information within large-scale models allows for foundation models to be adapted and suited to multiple key tasks. |
|
However, with this trend comes significant issues, the primary one being the difficulty to comprehensively evaluate these models and compare them fairly. |
|
Here, we refer to the specific lack of real-world data to reflect the true performance of the models, rather than in-silico experiments only. |
|
This issue forces repeated benchmark testing and models being trained and adapted for a specific task that may not have any real-world benefit. |
|
Given the importance of this, we propose this genomic leaderboard on meticulously curated real-world datasets, to allow for a fair and comprehensive benchmark on the most important genomic downstream tasks. |
|
## Evaluation Datasets |
|
TODO HERE |
|
## Reported Scores and Ranking |
|
TODO HERE |
|
## How it works |
|
Do we need this? |
|
## Reproducibility |
|
To reproduce our results, here are the commands you can run: |
|
""" |
|
|
|
EVALUATION_QUEUE_TEXT = """ |
|
## Some good practices before submitting a model |
|
### 1) Make sure you can load your model and tokenizer using AutoClasses: |
|
```python |
|
from transformers import AutoConfig, AutoModel, AutoTokenizer |
|
config = AutoConfig.from_pretrained("your model name", revision=revision) |
|
model = AutoModel.from_pretrained("your model name", revision=revision) |
|
tokenizer = AutoTokenizer.from_pretrained("your model name", revision=revision) |
|
``` |
|
If this step fails, follow the error messages to debug your model before submitting it. It's likely your model has been improperly uploaded. |
|
Note: make sure your model is public! |
|
Note: if your model needs `use_remote_code=True`, we do not support this option yet but we are working on adding it, stay posted! |
|
### 2) Convert your model weights to [safetensors](https://huggingface.co/docs/safetensors/index) |
|
It's a new format for storing weights which is safer and faster to load and use. It will also allow us to add the number of parameters of your model to the `Extended Viewer`! |
|
### 3) Make sure your model has an open license! |
|
This is a leaderboard for Open LLMs, and we'd love for as many people as possible to know they can use your model 🤗 |
|
### 4) Fill up your model card |
|
When we add extra information about models to the leaderboard, it will be automatically taken from the model card |
|
## In case of model failure |
|
If your model is displayed in the `FAILED` category, its execution stopped. |
|
Make sure you have followed the above steps first. |
|
If everything is done, check you can launch the EleutherAIHarness on your model locally, using the above command without modifications (you can add `--limit` to limit the number of examples per task). |
|
""" |
|
|
|
CITATION_BUTTON_LABEL = "Copy the following snippet to cite these results" |
|
CITATION_BUTTON_TEXT = r""" |
|
@article{Yang2024, |
|
author = {Yang, Heng and Li, Ke}, |
|
title = {OmniGenome: Aligning RNA Sequences with Secondary Structures in Genomic Foundation Models}, |
|
journal = {arXiv}, |
|
year = {2024}, |
|
note = {arXiv preprint arXiv:2407.11242} |
|
url = {https://arxiv.org/abs/2407.11242} |
|
} |
|
""" |
|
|