---
title: ESM-3 quickstart
description: Step-by-step guide to generating protein embeddings with ESM-3 on the platform.
tags:
  - esm3
  - quickstart
---

You want [ESM-3](/docs/esm3) embeddings for a protein — the feature vectors that power alignment-free similarity, clustering, and ML models — and this runs it end to end: enter the sequence (or fetch it by UniProt ID), keep the default model, submit, and download the embedding vectors, usually within 5–30 seconds per sequence.

## Quick protein embedding generation with .bloom* platform

ESM-3 is a multimodal protein language model that produces high-dimensional embeddings encoding functional and evolutionary information. This guide walks through generating your first embeddings, from sequence input to similarity analysis.

## Step-by-step embedding workflow

### 1. Access the ESM-3 tool

Navigate to **ESM-3** in the .bloom* tool selector, or ask Ivy directly:

- "Generate embeddings for this protein using ESM-3"
- "Run ESM-3 on my sequence"

### 2. Prepare your protein sequence

**Option A: Direct sequence entry (fastest)**
- Click **Sequence** in the input section
- Paste your amino acid sequence (e.g., `MKTAYIAKQRQISFVKSHFSRQDILDLWIYHTQGYFPDWQNYTPGPGIRYPLTFGWCYKLVPVEPEK`)
- .bloom* validates the sequence in real time
- For FASTA format, include a header line starting with `>`

**Option B: UniProt lookup**
- Click **UniProt ID** in the input section
- Enter a UniProt accession (e.g., `P68871` for hemoglobin subunit beta)
- .bloom* fetches the canonical sequence automatically

**Option C: From previous jobs**
- Select sequences from BLAST searches, ESMFold predictions, or other protein analysis tools
- .bloom* handles multi-sequence outputs and format conversion

### 3. Configure embedding parameters

**Basic settings (recommended for first run):**
- Keep default model size and parameters
- Job name: Enter a descriptive name or leave blank

**Advanced settings (via gear icon):**
- **Model size**: Select from available ESM-3 model variants (esm3_sm, esm3_md, esm3_lg — larger = better embeddings, slower)
- **Pooling**: mean, cls, or none (none returns unpooled per-residue embeddings)
- **Return attention**: Enable to extract attention maps for contact prediction

### 4. Submit and monitor the job

- Click **Generate Embeddings** to start the job
- .bloom* shows real-time progress
- Typical completion: 5-30 seconds per sequence depending on length and model size
- Batch submissions process sequences in parallel

### 5. Review and analyze results

**Embedding summary:**
- Embedding dimensions (sequence length x hidden dimension)
- Model variant used
- Per-sequence pooled embedding vector

**Visualization options:**
- Attention heatmap showing residue-residue interaction strengths
- Per-residue embedding magnitude plot highlighting important positions
- t-SNE or UMAP projection for batch embedding comparison

**Download options:**
- **NPY/PT**: Raw embedding tensors for custom ML pipelines
- **JSON**: Metadata with pooled embeddings and attention maps
- **CSV**: Per-residue embedding values in tabular format

## Common embedding scenarios

### Single protein analysis
1. Enter a protein sequence via direct input or UniProt ID
2. Generate embeddings with default settings
3. Review attention maps for predicted contacts
4. Download embeddings for downstream ML tasks

### Protein similarity comparison
1. Submit two or more sequences in a single batch
2. Generate per-sequence embeddings for each
3. Compute cosine similarity between embedding vectors
4. Identify functionally related proteins even with low sequence identity

### Batch embedding for clustering
1. Prepare a multi-sequence FASTA file with your protein dataset
2. Submit as a batch job
3. Download per-sequence embeddings for all sequences
4. Run clustering (k-means, HDBSCAN) on the embedding vectors
5. Visualize clusters with t-SNE or UMAP projections

### Feature extraction for ML models
1. Generate per-residue embeddings for your training set
2. Download NPY/PT tensors
3. Use embeddings as input features for activity prediction, localization, or stability models
4. Per-sequence pooled embeddings work well for whole-protein classification tasks

## Quality control checklist

### Before submission
- [ ] Only standard amino acids (ACDEFGHIKLMNPQRSTVWY) in the sequence
- [ ] Sequence length is within supported range (10-2,048 residues)
- [ ] No ambiguous characters (B, J, O, U, X, Z)
- [ ] FASTA headers are unique if submitting multiple sequences

### After generation
- [ ] Embedding dimensions match expected shape (length x hidden_dim)
- [ ] No NaN or infinity values in the embedding vectors
- [ ] Attention maps show reasonable patterns (not all zeros or uniform)
- [ ] Batch embeddings have expected count matching input sequences

## Next steps after embedding generation

**Similarity analysis:**
- Compute pairwise cosine similarity for protein comparison
- Build a similarity network for functional annotation transfer
- Compare embeddings from wild-type and mutant sequences to estimate variant effects

**Machine learning:**
- Use per-sequence embeddings as features in scikit-learn, PyTorch, or XGBoost models
- Fine-tune downstream classifiers for specific prediction tasks
- Combine ESM-3 embeddings with molecular descriptors from DeepChem

**Structure prediction:**
- Use ESMFold for 3D structure prediction of the same sequences
- Compare ESM-3 attention-based contact predictions with ESMFold-predicted structures
- Feed structural insight back into function prediction pipelines

## Read next
