By bridging the gap between progein sequence-structure representations and the contextual knowledge encoded within LLMs, STELLA harnesses the capabilities of LLMs enriched with protein features, offering interactive and versatile predictions across protein-related tasks, including functional description prediction (FP) and enzyme-catalyzed reaction prediction (EP).
Usage and License Notices: The data, code and checkpoint are intended and licensed for non-commercial use only. They are also restricted to usage that follows the license agreement of LLaMA-2, LLaMA-3, Mistral and Phi-3. The dataset is CC BY NC 4.0 (allowing only non-commercial use) and models trained using the dataset should not be used outside of research purposes.
- First look at STELLA's capabilities
- STELLA architecture
- Installation
- ESM3 Codebase Configuration
- Prot2Text Codebase Configuration
- SaProt Codebase Configuration
- Datasets
- Training guides
- Evaluation guides
- Evaluation results
- Model serveing
Demo capability of STELLA. (STELLA-ESM3-Llama-3.1-8B-Instruct). The examples in figure 1 involve two proteins—G1TFE0 (left) and A0A1D0BR98 (right)—sourced from the newly released Swiss-Prot 2024_02. The orange box indicates the ground-truth functional annotation. Text highlighted in green denotes critical and correct functional information generated by STELLA. The examples in figure 2 involve proteins Q9W3K5 (left) and Q5KYR2 (right) from the hold-out testing set of OPI-Struc. Orange box: ground truth of the function. The text highlighted in green represents the correct and critical output of STELLA. User and assistant icons are AI-generated.
The architecture of STELLA. Stage1 of Multimodal Instruction-tuning (MMIT): to fine-tune the modality connector using the OPI-Struc dataset by freezing the protein structure encoder and LLM. Stage2 of MMIT: to continually fine-tune the modality connector and the LLM simultaneously with different learning rates, by freezing the protein structure encoder. Flame: model is trainable; Snowflake: model is frozen. Protein image credits: AFDB.
-
Clone this repository and navigate to STELLA folder
git clone git@github.com:ocx-lab/STELLA.git cd STELLA -
Build conda environment
conda env create -f environment.yml
-
Install additional packages for training cases
pip install ninja pip install flash-attn --no-build-isolation
If you encounter some problems when installing flash-attn, please refer to the official repo of flash-attention for the install guidance.
-
For installation of Define Secondary Structure of Proteins(DSSP)
DSSP is the standard method used to assign secondary structure annotations to a protein structure, it utilizes the atomic coordinates of a structure to assign the secondary codes. In this repo, we should use dssp=3.0.0.
-
Method 1: apt-get install -y dssp
If you are using a higher version Linux, you may see dssp=4.0.4 in the apt source (by runing apt-cache policy dssp), which is not compatible with this repo. Then you can refer to the second method to install dssp=3.0.0-3build1 manually.
-
Method 2: manually install
wget http://archive.ubuntu.com/ubuntu/pool/main/b/boost1.71/libboost-program-options1.71.0_1.71.0-6ubuntu6_amd64.deb wget http://archive.ubuntu.com/ubuntu/pool/main/b/boost1.71/libboost-thread1.71.0_1.71.0-6ubuntu6_amd64.deb wget http://archive.ubuntu.com/ubuntu/pool/universe/d/dssp/dssp_3.0.0-3build1_amd64.deb dpkg -i libboost-program-options1.71.0_1.71.0-6ubuntu6_amd64.deb dpkg -i libboost-thread1.71.0_1.71.0-6ubuntu6_amd64.deb dpkg -i dssp_3.0.0-3build1_amd64.deb
-
When using ESM3 as the protein structure encoder, STELLA depends on the ESM3 codebase at runtime. The following steps describe how to configure it properly.
The ESM3 repository should already be cloned into the STELLA root directory during Installation Step 1:
cd STELLA
git clone git@github.com:evolutionaryscale/esm.gitThis creates the esm/ directory under the project root (e.g., STELLA/esm/).
STELLA uses the esm3-sm-open-v1 pretrained model. Download it from Hugging Face:
# Using huggingface-cli (recommended)
huggingface-cli download EvolutionaryScale/esm3-sm-open-v1 --local-dir /path/to/esm3-sm-open-v1
# Or using git lfs
git lfs install
git clone https://huggingface.co/EvolutionaryScale/esm3-sm-open-v1 /path/to/esm3-sm-open-v1Note: Access to the ESM3 model requires accepting the EvolutionaryScale Community License on the Hugging Face model page. The license restricts usage to non-commercial purposes and prohibits drug development or discovery.
In configs/paths.sh, set ESM3_PATH to the directory containing the downloaded model:
ESM3_PATH="/path/to/esm3-sm-open-v1"Note: No other source files need to be modified. STELLA automatically reads
ESM3_PATHfromconfigs/paths.shat runtime and patches the ESM3 codebase accordingly.
After configuration, verify that the ESM3 model can be loaded correctly (run from the STELLA project root):
from esm.models.esm3 import ESM3
from esm.utils.constants.models import ESM3_OPEN_SMALL
model = ESM3.from_pretrained(ESM3_OPEN_SMALL, device="cuda")
print("ESM3 loaded successfully!")| File | Purpose |
|---|---|
esm/ (directory) |
Cloned ESM3 codebase, used as a local package |
esm/esm/pretrained.py |
ESM3 model loading functions |
configs/paths.sh |
ESM3_PATH — the only file users need to edit |
stella/model/multimodal_encoder/prot_struc_encoder.py |
STELLA's ESM3 encoder integration; patches data_root() from configs/paths.sh at runtime |
environment.yml |
Lists esm==3.0.0 as a pip dependency |
When using Prot2Text as the protein structure encoder, STELLA depends on the Prot2Text codebase at runtime.
The Prot2Text repository should already be cloned into the STELLA root directory during Installation Step 1:
cd STELLA
git clone git@github.com:hadi-abdine/Prot2Text.gitThis creates the Prot2Text/ directory under the project root.
Download the pretrained prot2text_large model from the Prot2Text Hugging Face page:
huggingface-cli download hadi-abdine/Prot2Text --local-dir /path/to/prot2text_largeIn configs/paths.sh, set PROT2TEXT_PATH to the directory containing the downloaded model:
PROT2TEXT_PATH="/path/to/prot2text_large"Prot2Text relies on graphein for protein graph construction, which in turn requires DSSP 3.0 to compute secondary structure features. Refer to Installation Step 4 for DSSP setup.
| File | Purpose |
|---|---|
Prot2Text/ (directory) |
Cloned Prot2Text codebase, used as a local package |
Prot2Text/prot2text_model/Model.py |
Prot2Text model definition |
configs/paths.sh |
PROT2TEXT_PATH used by training/eval shell scripts |
stella/model/multimodal_encoder/loader4prot2text.py |
STELLA's Prot2Text loader with custom weight initialization |
stella/model/multimodal_encoder/prot_struc_encoder.py |
STELLA's encoder integration (imports Prot2Text modules) |
When using SaProt as the protein structure encoder, STELLA loads the SaProt model via a built-in loader. Unlike ESM3 and Prot2Text, SaProt does not require cloning an external repository — the necessary loading code is already included in STELLA under stella/model/multimodal_encoder/loader4saprot.py, which depends on the esm2/ directory (a subset of facebookresearch/esm, MIT licensed, already included in this repo).
Download the pretrained SaProt_650M_AF2 model from the SaProt repository:
| Model | Download |
|---|---|
| SaProt_650M_AF2 | Hugging Face |
# Download the .pt checkpoint file
huggingface-cli download westlake-repl/SaProt_650M_AF2 --local-dir /path/to/SaProt_650M_AF2The downloaded directory should contain the model checkpoint file SaProt_650M_AF2.pt.
In configs/paths.sh, set SAPROT_PATH to the full path of the .pt checkpoint file:
SAPROT_PATH="/path/to/SaProt_650M_AF2/SaProt_650M_AF2.pt"SaProt uses FoldSeek structural alphabet to encode protein 3D structures. The FoldSeek binary is expected at:
stella/model/multimodal_encoder/bin/foldseek
If not already present, download and install FoldSeek:
# Download the precompiled binary
wget https://mmseqs.com/foldseek/foldseek-linux-x86_64.tar.gz
tar xzf foldseek-linux-x86_64.tar.gz
cp foldseek/bin/foldseek stella/model/multimodal_encoder/bin/foldseek| File | Purpose |
|---|---|
esm2/ (directory) |
Subset of Facebook ESM library (MIT licensed), used by SaProt loader |
stella/model/multimodal_encoder/loader4saprot.py |
SaProt model loading and weight initialization |
stella/model/multimodal_encoder/constants4saprot.py |
FoldSeek vocabulary definitions for SaProt |
stella/model/multimodal_encoder/foldseek_util.py |
FoldSeek structural sequence extraction utility |
stella/model/multimodal_encoder/bin/foldseek |
FoldSeek binary for structural alphabet encoding |
configs/paths.sh |
SAPROT_PATH used by training/eval shell scripts |
The Open Protein Instructions for Structures (OPI-Struc) dataset was specifically developed to facilitate multimodal instruction tuning (MMIT) for the FP and EP tasks in this study, by integrating both protein structural and textual modalities.
Table: Statistics of OPI-Struc. For the FPFTQA task, besides the hold-out testing set, Functiontest_FTQA, a newer release of Swiss-Prot, v2024_01 (v2401), was utilized to construct Functiontest_FTQA_v2401. This dataset aims to assess the inference performance of STELLA on unseen data. For the FPMCQA task, the Functiontest dataset was designed with two versions: Functiontest_MCQA_1X (options w/o permutation) and Functiontest_MCQA_4X (options w/ permutation).
| Task | Training set | Training set size | Testing set | Testing set size | Metrics | Protein source |
|---|---|---|---|---|---|---|
| FPFTQA | Functiontrain_FTQA (+aug) | 248,315 (+49,663) | Functiontest_FTQA Functiontest_FTQA_v2401 |
4,203 270 |
BLEU-4 BERT-score ROUGE |
AFDB |
| FPMCQA | Functiontrain_MCQA | 24,000 | Functiontest_MCQA_1X Functiontest_MCQA_4X |
4,203 16,812 |
Accuracy | AFDB |
| EP | Enzymetrain | 29,205 | Enzymetest | 5,651 | Accuracy | PDB |
STELLA uses precomputed protein structure embeddings for training and evaluation. Before training, you need to:
-
Download the OPI-Struc annotation files from Hugging Face.
-
Download the raw protein structure files:
- For FP tasks (SwissProt data): Download AlphaFold DB structures. Each protein is identified by an
AFDB_id(e.g.,AF-P07412-F1-model_v4). Structures can be downloaded from the AlphaFold Protein Structure Database. - For EP tasks (Enzyme data): Download PDB structures. Each protein is identified by a
PDB_id(e.g.,2pmo.X). Structures can be downloaded from RCSB PDB.
- For FP tasks (SwissProt data): Download AlphaFold DB structures. Each protein is identified by an
-
Run the precompute script for protein embeddings (scripts/precompute_embeddings.py) to extract embeddings using one of the supported encoders (ESM3, Prot2Text, or SaProt):
Option A: From annotation JSON (reads protein IDs from
ann.jsonautomatically)# ESM3 embeddings for Function (SwissProt) training data python scripts/precompute_embeddings.py \ --encoder esm3 \ --ann_json /path/to/OPI-Struc/Function/train/ann.json \ --structure_dir /path/to/alphafold_pdb_files/ \ --output_dir /path/to/OPI-Struc/Function/esm3/train/embs_pt/ \ --encoder_path /path/to/esm3-sm-open-v1 # Prot2Text embeddings for Function (SwissProt) training data python scripts/precompute_embeddings.py \ --encoder prot2text \ --ann_json /path/to/OPI-Struc/Function/train/ann.json \ --structure_dir /path/to/alphafold_pdb_files/ \ --output_dir /path/to/OPI-Struc/Function/Prot2Text/train/embs_pt/ \ --encoder_path /path/to/prot2text_large # SaProt embeddings for Function (SwissProt) training data python scripts/precompute_embeddings.py \ --encoder saprot \ --ann_json /path/to/OPI-Struc/Function/train/ann.json \ --structure_dir /path/to/alphafold_pdb_files/ \ --output_dir /path/to/OPI-Struc/Function/SaProt/train/embs_pt/ \ --encoder_path /path/to/SaProt_650M_AF2/SaProt_650M_AF2.pt \ --foldseek_path stella/model/multimodal_encoder/bin/foldseek # ESM3 embeddings for Enzyme training data python scripts/precompute_embeddings.py \ --encoder esm3 \ --ann_json /path/to/OPI-Struc/Enzyme/train/ann.json \ --structure_dir /path/to/pdb_files/ \ --output_dir /path/to/OPI-Struc/Enzyme/esm3/train/embs_pt/ \ --encoder_path /path/to/esm3-sm-open-v1
Option B: From structure IDs directly (no
ann.jsonneeded)# Comma-separated IDs python scripts/precompute_embeddings.py \ --encoder esm3 \ --structure_ids AF-P07412-F1-model_v4,AF-Q5AEI1-F1-model_v4 \ --structure_dir /path/to/alphafold_pdb_files/ \ --output_dir /path/to/embs_pt/ \ --encoder_path /path/to/esm3-sm-open-v1 # From a text file (one ID per line) python scripts/precompute_embeddings.py \ --encoder esm3 \ --structure_ids ids.txt \ --structure_dir /path/to/alphafold_pdb_files/ \ --output_dir /path/to/embs_pt/ \ --encoder_path /path/to/esm3-sm-open-v1 # Enzyme data with --structure_ids requires --is_enzyme flag python scripts/precompute_embeddings.py \ --encoder saprot \ --structure_ids 2pmo.X,3tdh.A \ --is_enzyme \ --structure_dir /path/to/pdb_files/ \ --output_dir /path/to/embs_pt/ \ --encoder_path /path/to/SaProt_650M_AF2/SaProt_650M_AF2.pt \ --foldseek_path stella/model/multimodal_encoder/bin/foldseek
Notes:
- The script supports resume: it automatically skips proteins whose
.ptfiles already exist in--output_dir. - For SaProt, the
--foldseek_pathargument is required. See SaProt Configuration for FoldSeek installation. - For Prot2Text, graphein and DSSP 3.0 must be installed.
- The output
embs_pt/directory should be placed alongside the correspondingann.jsonfile, as STELLA's dataloader expects this layout.
- The script supports resume: it automatically skips proteins whose
There are two stages to train STELLA:
- STAGE1: to fine-tune the modality connector using the OPI-Struc dataset by freezing the protein structure encoder and LLM.
- STAGE2: to continually fine-tune the modality connector and the LLM simultaneously with different learning rates, by freezing the protein structure encoder.
Start training with run_scripts/train_stage1.sh
bash run_scripts/train_stage1.shFollowing the prompts in the terminal, enter NUMBERs to select a LLM, a PROT_ENCODER and a DATASET.
Example:
Enter a number to select a LLM:
1) BioMistral-7B-DARE
2) BioMedGPT-LM-7B
3) Phi-3-mini-128k-instruct
4) Llama-3.1-8B-Instruct
5) Mistral-7B-Instruct-v0.2
#? 4
LLM: Llama-3.1-8B-Instruct | Prompt: stella_llama_3
Enter a number to select a protein encoder:
1) SaProt
2) ESM3
3) Prot2Text
#? 2
Encoder: ESM3
Enter a number to select training data:
1) func_ftqa_esm3_embs
2) func_mcqa_esm3_embs
3) func_ftqa_mcqa_esm3_embs
4) enzyme_esm3_embs
5) func_ftqa_enzyme_esm3_embs
6) esm3_embs_Hybrid
7) esm3_embs_Hybrid_wo_aug
#? 1
Data: func_ftqa_esm3_embs
Output: /path/to/Llama-3.1-8B-Instruct/STELLA-Llama-3.1-8B-Instruct-ESM3-func_ftqa_esm3_embs-e1-stage1-mlp2x_gelu-20260421_092342
Start training with run_scripts/train_stage2.sh
Following the prompts in the terminal, enter NUMBERs to select a LLM, a PROT_ENCODER, a DATASET and a MODALITY CONNECTOR (ADAPTER) (i.e., the stage1_checkpoint).
Example:
Enter a number to select a LLM:
1) BioMistral-7B-DARE
2) BioMedGPT-LM-7B
3) Phi-3-mini-128k-instruct
4) Llama-3.1-8B-Instruct
5) Mistral-7B-Instruct-v0.2
#? 4
LLM: Llama-3.1-8B-Instruct | Prompt: stella_llama_3
Enter a number to select a protein encoder:
1) SaProt
2) ESM3
3) Prot2Text
#? 2
Encoder: ESM3
Enter a number to select training data:
1) func_ftqa_esm3_embs
2) func_mcqa_esm3_embs
3) func_ftqa_mcqa_esm3_embs
4) enzyme_esm3_embs
5) func_ftqa_enzyme_esm3_embs
6) esm3_embs_Hybrid
7) esm3_embs_Hybrid_wo_aug
#? 1
Data: func_ftqa_esm3_embs
Enter the path to pretrained adapter (mm_prot_struc_projector.bin from Stage 1): results/Llama-3.1-8B-Instruct/STELLA-Llama-3.1-8B-Instruct-ESM3-func_ftqa_esm3_embs-e1-stage1-mlp2x_gelu-20260421_043007/checkpoint-2500/mm_prot_struc_projector.bin
Adapter: results/Llama-3.1-8B-Instruct/STELLA-Llama-3.1-8B-Instruct-ESM3-func_ftqa_esm3_embs-e1-stage1-mlp2x_gelu-20260421_043007/checkpoint-2500/mm_prot_struc_projector.bin
Output: /path/to/Llama-3.1-8B-Instruct/STELLA-Llama-3.1-8B-Instruct-ESM3-func_ftqa_esm3_embs-e1-stage2-mlp2x_gelu-20260421_091332
Start evaluation with run_scripts/eval.sh
Following the prompts in the terminal, enter NUMBERs to select a STELLA MODEL and a TESTING DATASET.
Example:
Enter the path to your trained STELLA model: /path/to/Llama-3.1-8B-Instruct/STELLA-Llama-3.1-8B-Instruct-ESM3-func_ftqa_esm3_embs-e1-stage2-mlp2x_gelu-20260421_091332
Model: /path/to/Llama-3.1-8B-Instruct/STELLA-Llama-3.1-8B-Instruct-ESM3-func_ftqa_esm3_embs-e1-stage2-mlp2x_gelu-20260421_091332
Enter a number to select test data:
1) func_test_ftqa_trunc90
2) func_test_ftqa
3) enzyme_ec_number_test
4) func_test_ftqa_v2401
5) enzyme_test
6) func_test_mcqa4x
7) func_test_mcqa1x
#? 2
Test data: func_test_ftqa
User prompt: What are the main functions of this protein?
Conv mode: stella_llama_3
Results file: STELLA-Llama-3.1-8B-Instruct-ESM3-func_ftqa_esm3_embs-e1-stage2-mlp2x_gelu-20260421_091332-func_test_ftqa_bs1
This study highlighted two critical protein-related tasks: Functional Description Prediction (FP) and Enzyme-catalyzed Reaction Prediction (EP).
For these tasks, we designed five distinct evaluation based on the corresponding testing set shown in the section Datasets, including ①FPft_eval, ②FPft_eval_v2401, ③FPmc_eval_1x ④FPmc_eval_4x and ⑤EPeval.
Table: Evaluation results of FPft_eval, comparing with existing work. Training recipes for STELLA-ESM3-Llama-3.1-8B-Instruct: Functionft_train dataset, epochs of two stages (e3+e6). Bold and underline indicate the best and the runner-up performance.
| Model | BLEU-4 ↑ | BERT Score ↑ | ROUGE Score ↑ | ||
|---|---|---|---|---|---|
| ROUGE-1 | ROUGE-2 | ROUGE-L | |||
| FoldSeek | 0.3627 | 0.8358 | 0.4799 | 0.4027 | 0.4586 |
| Prot2TextBASE | 0.3511 | 0.8430 | 0.5059 | 0.4271 | 0.4849 |
| Prot2TextLARGE | 0.3629 | 0.8520 | 0.5368 | 0.4560 | 0.5140 |
| ProteinChat | 0.1918 | 0.7970 | 0.3957 | 0.2799 | 0.3648 |
| STELLA-ESM3-Llama-3.1-8B-Instruct | 0.4300 | 0.8564 | 0.5423 | 0.4747 | 0.5257 |
Table: Zero-shot temporal Out-of-Distribution evaluation. Training recipes for STELLA-ESM3-Llama-3.1-8B-Instruct: Functionft_train dataset, epochs of two stages (e3+e6). Bold and underline indicate the best and the runner-up performance.
| Model | BLEU-4 ↑ | BERTScore ↑ | ROUGE Score ↑ | ||
|---|---|---|---|---|---|
| ROUGE-1 | ROUGE-2 | ROUGE-L | |||
| STELLA-ESM3-Llama-3.1-8B-Instruct | 0.0489 | 0.7565 | 0.2210 | 0.1085 | 0.1867 |
| STELLA-Prot2Text-Llama-3.1-8B-Instruct | 0.0425 | 0.7555 | 0.2454 | 0.1020 | 0.1919 |
| STELLA-Prot2Text-Llama-3-8B-Instruct | 0.0510 | 0.7605 | 0.2486 | 0.1062 | 0.1918 |
| STELLA-Prot2Text-Mistral-7B-Instruct-v0.2 | 0.0440 | 0.7685 | 0.2529 | 0.1046 | 0.1975 |
| ProteinChat | 0.0205 | 0.7413 | 0.2121 | 0.0855 | 0.1691 |
ROUGE-L are reported for each model on complete and incomplete protein. STELLA-ESM3-Llama-3.1-8B-Instruct is fine-tuned on the Functionft_train dataset using a two-stage strategy.
| Model | Complete | Incomplete | Perf. Drop |
|---|---|---|---|
| Prot2TextLARGE | 0.5140 | 0.4438 | 13.7% |
| STELLA-ESM3-Llama-3.1-8B-Instruct (e3+e3) | 0.5041 | 0.4805 | 4.7% |
| STELLA-ESM3-Llama-3.1-8B-Instruct (e3+e6) | 0.5257 | 0.4915 | 4.1% |
Table: Evaluation results of FPmc_eval_1x and FPmc_eval_4x. mix2: Functionft_train + Functionmc_train datasets.
| Model | acc@MCQA_1X ↑ | acc@MCQA_4X ↑ |
|---|
| STELLA-ESM3-Llama-3.1-8B-Instruct (mix2, two-stage, e3+e3) | 80.56 | 76.18 |
Table: Evaluation results of EPeval. Acc@EP: predictions that exactly match the ground truth. Single: Enzymetrain dataset. Bold and underlined indicate the best and the runner-up performance.
| Model | Acc@EP ↑ |
|---|---|
| w/o pretrain | |
| UniRep | 72.90 |
| 3DCNN | 78.80 |
| TAPE-LSTM | 79.90 |
| HH-suite3 | 82.60 |
| GearNet-Edge-IEConv | 85.30 |
| IEConv | 87.20 |
| New IEConv | 87.20 |
| CDConv | 88.50 |
| w/ pretrain | |
| DeepFRI | 63.30 |
| ProtBERT-BFD | 72.20 |
| ESM-1b | 83.10 |
| GearNet-Multiview-Contrast | 87.50 |
| New IEConv | 88.10 |
| Sable | 88.50 |
| MMIT (Two-stage training on Enzymetrain dataset) | |
| STELLA-ESM3-Llama-3.1-8B-Instruct (single, e3+e3) | 88.06 |
| STELLA-ESM3-Llama-3.1-8B-Instruct (single, e3+e6) | 88.85 |
Runing STELLA serveing with a web UI or CLI way needs local STELLA pretrained models. Please download the checkpoints.
To launch a Gradio demo locally, please run the following commands step by step.
bash run_scripts/serve/step1.shAfter completing step 2, a Gradio web interface will be available at http://localhost:XXXX/. The model list in the web page is currently empty because no model workers have been launched yet. It will automatically update once a model worker is started.
bash run_scripts/serve/step2.shThis is the actual worker responsible for performing inference on the GPU. Each worker handles a specific model defined by the --model-path argument. If you plan to launch multiple workers to compare different STELLA model variants, you only need to launch the controller and web server once. However, for each worker, you must specify a unique --port and --worker to run them on different ports.
Wait for the process to complete, and you will see the message “Uvicorn running on …”. Once this appears, refresh the Gradio web UI, and the model you just launched will now be visible in the model list.
bash run_scripts/serve/step3.shYou can also conduct inference through command line without using the Gradio Web UI.
bash run_scripts/serve/cli.sh stella/eval/orig_pdb_files/AF-A0A849ZK06-F1-model_v4.pdbThis project includes or depends on the following third-party components. Please make sure to comply with their respective licenses:
| Component | Source | License | Notes |
|---|---|---|---|
| esm/ (ESM3) | evolutionaryscale/esm | EvolutionaryScale Community License | Non-commercial use only; no drug development or discovery |
| esm2/ | facebookresearch/esm | MIT License | |
| Prot2Text/ | hadi-abdine/Prot2Text | CC BY-NC-SA 4.0 | Non-commercial use only; ShareAlike |
The esm/ and Prot2Text/ directories are not included in this repository. Please clone them separately as described in the Installation section. The esm2/ directory contains a subset of the Facebook ESM library (MIT licensed) with minor modifications for compatibility.
- LLaVA. Thanks to the LLaVA team for their excellent work, which we have adopted as our codebase and adapted to develop the STELLA series.


