Feature Extraction
Transformers
Safetensors
English
esm
biology
protein
structural-biology
Eval Results (legacy)
Instructions to use ItsnotAilabs/AlphaFold-Embed-8M with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use ItsnotAilabs/AlphaFold-Embed-8M with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("feature-extraction", model="ItsnotAilabs/AlphaFold-Embed-8M")# pip install -U transformers accelerate # Load model directly from transformers import AutoTokenizer, AutoModel tokenizer = AutoTokenizer.from_pretrained("ItsnotAilabs/AlphaFold-Embed-8M") model = AutoModel.from_pretrained("ItsnotAilabs/AlphaFold-Embed-8M", device_map="auto") - Notebooks
- Google Colab
- Kaggle
Download inference.py from ItsnotAilabs/AlphaFold-Embed-8M: direct link, hf CLI and curl.
- Browser
- Download file 1.69 kB
-
https://huggingface.co/ItsnotAilabs/AlphaFold-Embed-8M/resolve/main/inference.py
- Command line
-
hf download hf://ItsnotAilabs/AlphaFold-Embed-8M/inference.py
-
curl -L -o inference.py https://huggingface.co/ItsnotAilabs/AlphaFold-Embed-8M/resolve/main/inference.py
1.69 kB
| import torch | |
| import torch.nn as nn | |
| from typing import List, Dict | |
| class AlphaFoldEmbedTokenizer: | |
| def __init__(self): | |
| self.vocab = {aa: i for i, aa in enumerate("ACDEFGHIKLMNPQRSTVWY")} | |
| self.vocab["<UNK>"] = len(self.vocab) | |
| def tokenize(self, seq: str) -> List[int]: | |
| return [self.vocab.get(aa, self.vocab["<UNK>"]) for aa in seq] | |
| class AlphaFoldEmbedInference(nn.Module): | |
| def __init__(self): | |
| super().__init__() | |
| self.embed = nn.Embedding(25, 512) | |
| self.transformer = nn.TransformerEncoder( | |
| nn.TransformerEncoderLayer(d_model=512, nhead=8, batch_first=True), | |
| num_layers=4 | |
| ) | |
| self.plddt_head = nn.Linear(512, 1) | |
| self.domain_head = nn.Linear(512, 1) | |
| def forward(self, input_ids): | |
| x = self.embed(input_ids) | |
| x = self.transformer(x) | |
| plddt = torch.sigmoid(self.plddt_head(x)).squeeze(-1) * 100 # 0-100 scale | |
| domain_boundaries = torch.sigmoid(self.domain_head(x)).squeeze(-1) | |
| return {"embeddings": x, "plddt": plddt, "domain_boundaries": domain_boundaries} | |
| def process_proteins(proteins: List[str]): | |
| tokenizer = AlphaFoldEmbedTokenizer() | |
| model = AlphaFoldEmbedInference() | |
| model.eval() | |
| results = [] | |
| with torch.no_grad(): | |
| for seq in proteins: | |
| tokens = tokenizer.tokenize(seq) | |
| input_ids = torch.tensor([tokens]) | |
| out = model(input_ids) | |
| results.append(out) | |
| return results | |
| if __name__ == "__main__": | |
| res = process_proteins(["MKALIVLGLVLLSVTVQG", "MTEYKLVVVGAGGVGKSALTIQLIQNHFVDEYDPTIEDSYRKQVVIDGETCLLDILDTAGQ"]) | |
| print("Done processing proteins.") | |