Views
No views yet
esmc_300m_embeddings-train-0000-of-0003.parquetesmc_300m_embeddings-train-0001-of-0003.parquetesmc_300m_embeddings-train-0002-of-0003.parquetesmc_600m_embeddings-train-0000-of-0004.parquetesmc_600m_embeddings-train-0001-of-0004.parquetesmc_600m_embeddings-train-0002-of-0004.parquetesmc_600m_embeddings-train-0003-of-0004.parquetsequences.parquet (32 MB) - Source protein sequences & metadataskipped_sequences.txt (2.7 MB) - Filtered sequences log| Dataset | Shards | Size per Shard | Total Size | Total Rows |
|---|---|---|---|---|
| ESMC 300M | 3 | ~3.43 GB | ~10.3 GB | 7,087,560 |
| ESMC 600M | 4 | ~3.71 GB | ~14.8 GB | 8,505,072 |
| Sequences | 1 | 32 MB | 32 MB | 236,252 |
| Total | 8 | - | ~25.7 GB | - |
datasets library1{
2 'sequence_id': str, # e.g., "ENSP00000269305.4" (TP53)
3 'layer_idx': int, # 0-29 (300M) or 0-35 (600M)
4 'mean_embedding': List[float], # 960-dim (300M) or 1152-dim (600M)
5 'sequence_length': int # Amino acids count
6}1{
2 'sequence_id': str, # Ensembl protein ID
3 'sequence': str, # Amino acid sequence (20 standard AAs)
4 'sequence_length': int, # Length in amino acids
5 'description': str # Full FASTA header with gene metadata
6}datasets library automatically handles sharded files:1from datasets import load_dataset
2import numpy as np
3
4# Load 600M embeddings (all shards loaded automatically)
5ds = load_dataset('biolm/human-proteome-esmc-embeddings', data_files='esmc_600m_embeddings-train-*.parquet')
6
7# Access as pandas DataFrame
8df = ds['train'].to_pandas()
9
10# Filter to last layer only
11last_layer = df[df['layer_idx'] == 35]
12print(f"Loaded {len(last_layer):,} proteins × 1152 dims")1import pyarrow.parquet as pq
2import pandas as pd
3from glob import glob
4
5# Load only last layer from all 600M shards
6dfs = []
7for shard_file in glob('esmc_600m_embeddings-train-*.parquet'):
8 table = pq.read_table(
9 shard_file,
10 filters=[('layer_idx', '==', 35)] # Last layer only
11 )
12 dfs.append(table.to_pandas())
13
14df = pd.concat(dfs, ignore_index=True)
15print(f"Loaded {len(df):,} protein embeddings") # 236,252 proteins1import polars as pl
2
3# Lazy load all 600M shards with glob pattern
4df = pl.scan_parquet('esmc_600m_embeddings-train-*.parquet')
5
6# Filter and collect efficiently
7last_layer = df.filter(pl.col('layer_idx') == 35).collect()
8print(f"Shape: {last_layer.shape}") # (236252, 4)1import pandas as pd
2
3# Load all shards and filter to specific proteins
4df = pd.concat([
5 pd.read_parquet(f'esmc_600m_embeddings-train-{i:04d}-of-0004.parquet')
6 for i in range(4)
7], ignore_index=True)
8
9# Get TP53 tumor suppressor embeddings (all 36 layers)
10tp53_data = df[df['sequence_id'] == 'ENSP00000269305.4'].sort_values('layer_idx')
11tp53_embeddings = np.array(tp53_data['mean_embedding'].tolist())
12print(f"TP53 shape: {tp53_embeddings.shape}") # (36, 1152)1from sklearn.ensemble import RandomForestClassifier
2import numpy as np
3import pandas as pd
4
5# Load only last layer from all shards
6dfs = []
7for i in range(4): # 4 shards for 600M
8 df = pd.read_parquet(f'esmc_600m_embeddings-train-{i:04d}-of-0004.parquet')
9 dfs.append(df[df['layer_idx'] == 35])
10
11embeddings_df = pd.concat(dfs, ignore_index=True)
12
13# Extract features
14X = np.array(embeddings_df['mean_embedding'].tolist()) # (236252, 1152)
15# y = your_labels # e.g., GO terms, subcellular localization
16
17clf = RandomForestClassifier()
18clf.fit(X, y)1from sklearn.metrics.pairwise import cosine_similarity
2import pandas as pd
3import numpy as np
4
5# Load last layer from all shards
6dfs = []
7for i in range(4):
8 df = pd.read_parquet(f'esmc_600m_embeddings-train-{i:04d}-of-0004.parquet')
9 dfs.append(df[df['layer_idx'] == 35])
10
11df = pd.concat(dfs, ignore_index=True)
12
13# Query: Find proteins similar to TP53
14query_emb = df[df['sequence_id'] == 'ENSP00000269305.4']['mean_embedding'].iloc[0]
15all_embs = np.array(df['mean_embedding'].tolist())
16
17similarities = cosine_similarity([query_emb], all_embs)[0]
18top_10_indices = similarities.argsort()[-11:-1][::-1]
19
20print("Top 10 proteins similar to TP53:")
21for idx in top_10_indices:
22 seq_id = df.iloc[idx]['sequence_id']
23 sim = similarities[idx]
24 print(f" {seq_id}: {sim:.4f}")1import pandas as pd
2
3# Load embeddings (last layer only)
4embeddings = pd.concat([
5 pd.read_parquet(f'esmc_600m_embeddings-train-{i:04d}-of-0004.parquet')
6 for i in range(4)
7], ignore_index=True)
8embeddings = embeddings[embeddings['layer_idx'] == 35]
9
10# Load sequences
11sequences = pd.read_parquet('sequences.parquet')
12
13# Merge
14merged = embeddings.merge(sequences, on='sequence_id', how='left')
15print(f"Merged shape: {merged.shape}")
16print(f"Columns: {merged.columns.tolist()}")| Model | Params | Layers | Embed Dim | Shards | Total Size | Total Rows |
|---|---|---|---|---|---|---|
| ESMC 300M | 300M | 30 | 960 | 3 | 10.3 GB | 7,087,560 |
| ESMC 600M | 600M | 36 | 1152 | 4 | 14.8 GB | 8,505,072 |
EvolutionaryScale/esmc-300m-2024-12 (revision: a19d363)EvolutionaryScale/esmc-600m-2024-12 (revision: d11cc14)model.eval(), torch.no_grad())1import pandas as pd
2df = pd.concat([
3 pd.read_parquet(f) for f in glob('esmc_600m_embeddings-train-*.parquet')
4], ignore_index=True)datasets library which handles shards automatically.sequences.parquet file to see all sequence IDs, then search each shard. Or use the HuggingFace datasets library which handles this automatically.1@dataset{biolm_human_proteome_esmc_2025,
2 title={Human Proteome ESMC Embeddings},
3 author={BioLM.ai},
4 year={2025},
5 month={October},
6 publisher={HuggingFace},
7 url={https://huggingface.co/datasets/biolm/human-proteome-esmc-embeddings}
8}1@article{esmc2024,
2 title={Evolutionary Scale Modeling: Protein Language Models},
3 author={EvolutionaryScale},
4 year={2024},
5 url={https://github.com/evolutionaryscale/esm}
6}