อัปเดตเมษายน 2023: รหัสสำหรับการพิมพ์ล่วงหน้าสองรายการพร้อมกันเกี่ยวกับการออกแบบโปรตีนเปิดตัวแล้ว! โค้ดสำหรับ "แบบจำลองภาษาที่มีลักษณะทั่วไปนอกเหนือจากโปรตีนธรรมชาติ" อยู่ภายใต้ example/lm-design/ โค้ดสำหรับ "ภาษาโปรแกรมระดับสูงสำหรับการออกแบบโปรตีนเชิงกำเนิด" อยู่ใต้ examples/protein-programming- language/
พื้นที่เก็บข้อมูลนี้ประกอบด้วยโค้ดและน้ำหนักที่ได้รับการฝึกอบรมล่วงหน้าสำหรับ โมเดลภาษาโปรตีน Transformer จากทีม Meta Fundamental AI Research Protein (FAIR) รวมถึง ESM-2 และ ESMFold ที่ล้ำสมัยของเรา รวมถึง MSA Transformer , ESM-1v สำหรับการทำนายผลกระทบของตัวแปรและ ESM-IF1 สำหรับการพับแบบผกผัน แบบจำลองภาษาโปรตีนของทรานส์ฟอร์มเมอร์ถูกนำมาใช้ในรายงานฉบับก่อนพิมพ์ปี 2019 เรื่อง "โครงสร้างและหน้าที่ทางชีวภาพเกิดจากการปรับขนาดการเรียนรู้แบบไม่มีผู้ดูแลเป็น 250 ล้านลำดับโปรตีน" ESM-2 มีประสิทธิภาพเหนือกว่าแบบจำลองภาษาโปรตีนลำดับเดียวที่ทดสอบทั้งหมดในงานทำนายโครงสร้างที่หลากหลาย ESMfold ควบคุมโมเดลภาษา ESM-2 เพื่อสร้างการทำนายโครงสร้างที่แม่นยำตั้งแต่ต้นจนจบโดยตรงจากลำดับของโปรตีน
ในเดือนพฤศจิกายน 2022 เราได้เปิด v0
ของ ESM Metagenomic Atlas ซึ่งเป็นแผนที่แบบเปิดที่มีโครงสร้างโปรตีน metagenomic ที่คาดการณ์ไว้ 617 ล้านโครงสร้าง Atlas ได้รับการอัปเดตในเดือนมีนาคม 2023 โดยความร่วมมือกับ EBI v2023_02
ใหม่เพิ่มโครงสร้างที่คาดการณ์ไว้อีก 150 ล้านโครงสร้างให้กับ Atlas รวมถึงการฝัง ESM2 ที่คำนวณไว้ล่วงหน้า การดาวน์โหลดจำนวนมาก โพสต์บนบล็อก และทรัพยากรที่มีให้บนเว็บไซต์ Atlas ได้รับการบันทึกไว้ใน README นี้
ในเดือนธันวาคม ปี 2022 เราได้เผยแพร่การพิมพ์ล่วงหน้าเกี่ยวกับการออกแบบโปรตีนสองฉบับพร้อมกัน
สำหรับโมเดลภาษาโปรตีนของหม้อแปลงไฟฟ้า:
@article { rives2021biological ,
title = { Biological structure and function emerge from scaling unsupervised learning to 250 million protein sequences } ,
author = { Rives, Alexander and Meier, Joshua and Sercu, Tom and Goyal, Siddharth and Lin, Zeming and Liu, Jason and Guo, Demi and Ott, Myle and Zitnick, C Lawrence and Ma, Jerry and others } ,
journal = { Proceedings of the National Academy of Sciences } ,
volume = { 118 } ,
number = { 15 } ,
pages = { e2016239118 } ,
year = { 2021 } ,
publisher = { National Acad Sciences } ,
note = { bioRxiv 10.1101/622803 } ,
doi = { 10.1073/pnas.2016239118 } ,
url = { https://www.pnas.org/doi/full/10.1073/pnas.2016239118 } ,
}
v2023_02
ดูเว็บไซต์และรายละเอียดการดาวน์โหลดจำนวนมาก<mask>
) ตามลำดับESM-MSA-1b
)ชวเลข | esm.pretrained. | ชุดข้อมูล | คำอธิบาย |
---|---|---|---|
อีเอสเอ็ม-2 | esm2_t36_3B_UR50D() esm2_t48_15B_UR50D() | UR50 (ตัวอย่าง UR90) | แบบจำลองภาษาโปรตีนวัตถุประสงค์ทั่วไปของ SOTA สามารถใช้ทำนายโครงสร้าง ฟังก์ชัน และคุณสมบัติโปรตีนอื่นๆ ได้โดยตรงจากลำดับแต่ละลำดับ เปิดตัวพร้อมกับ Lin และคณะ 2022 (อัปเดตเดือนสิงหาคม 2022) |
อีเอ็มพับ | esmfold_v1() | พีดีบี + UR50 | ตัวทำนายโครงสร้าง 3 มิติลำดับเดียวจากต้นทางถึงปลายทาง (อัปเดตพ.ย. 2565) |
อีเอสเอ็ม-MSA-1b | esm_msa1b_t12_100M_UR50S() | UR50 + MSA | โมเดลภาษา MSA Transformer สามารถใช้เพื่อแยกการฝังจาก MSA เปิดใช้งานการอนุมานโครงสร้าง SOTA เปิดตัวพร้อมกับ Rao และคณะ 2021 (ฉบับ ICML'21 มิถุนายน 2021) |
อีเอสเอ็ม-1v | esm1v_t33_650M_UR90S_1() ... esm1v_t33_650M_UR90S_5() | UR90 | โมเดลภาษาเฉพาะสำหรับการทำนายเอฟเฟกต์ของตัวแปร เปิดใช้งานการคาดการณ์แบบ Zero-shot ของ SOTA สำหรับเอฟเฟกต์การทำงานของรูปแบบลำดับ สถาปัตยกรรมเดียวกันกับ ESM-1b แต่ได้รับการฝึกฝนบน UniRef90 เปิดตัวพร้อมกับ Meier และคณะ 2021. |
อีเอสเอ็ม-IF1 | esm_if1_gvp4_t16_142M_UR50() | เคธ+UR50 | รุ่นพับผกผัน สามารถใช้ในการออกแบบลำดับสำหรับโครงสร้างที่กำหนด หรือเพื่อทำนายผลการทำงานของการแปรผันของลำดับสำหรับโครงสร้างที่กำหนด เปิดใช้งานการออกแบบลำดับแกนหลักคงที่ของ SOTA เปิดตัวพร้อมกับ Hsu และคณะ 2022. |
สำหรับรายการรุ่นทั้งหมดที่มี พร้อมรายละเอียดและบันทึกประจำรุ่น โปรดดูที่รุ่นที่ได้รับการฝึกล่วงหน้า
วิธีง่ายๆ ในการเริ่มต้นคือการโหลด ESM หรือ ESMFold ผ่านไลบรารีหม้อแปลง HuggingFace ซึ่งช่วยให้การขึ้นต่อกันของ ESMFold ง่ายขึ้น และมอบ API และเครื่องมือที่ได้มาตรฐานเพื่อทำงานกับโมเดลที่ได้รับการฝึกล่วงหน้าที่ล้ำสมัย
อีกทางหนึ่ง ColabFold ได้ผสานรวม ESMFold เพื่อให้คุณสามารถเรียกใช้โดยตรงในเบราว์เซอร์บนอินสแตนซ์ Google Colab ได้อย่างง่ายดาย
นอกจากนี้เรายังมี API ที่คุณสามารถเข้าถึงได้ผ่านทาง curl หรือบนหน้าเว็บ ESM Metagenomic Atlas
curl -X POST --data "KVFGRCELAAAMKRHGLDNYRGYSLGNWVCAAKFESNFNTQATNRNTDGSTDYGILQINSRWWCNDGRTPGSRNLCNIPCSALLSSDITASVNCAKKIVSDGNGMNAWVAWRNRCKGTDVQAWIRGCRL" https://api.esmatlas.com/foldSequence/v1/pdb/
สำหรับ ESM-MSA-1b, ESM-IF1 หรือรุ่นอื่นๆ คุณสามารถใช้การใช้งานดั้งเดิมจาก repo ของเราได้โดยตรงผ่านคำแนะนำด้านล่าง
ตามข้อกำหนดเบื้องต้น คุณต้องติดตั้ง PyTorch เพื่อใช้พื้นที่เก็บข้อมูลนี้
คุณสามารถใช้ซับเดียวนี้ในการติดตั้งโดยใช้ esm รุ่นล่าสุด:
pip install fair-esm # latest release, OR:
pip install git+https://github.com/facebookresearch/esm.git # bleeding edge, current repo main branch
หากต้องการใช้โมเดล ESMFold ตรวจสอบให้แน่ใจว่าคุณเริ่มต้นจากสภาพแวดล้อมที่มี python <= 3.9 และติดตั้ง pytorch แล้ว จากนั้นเพิ่มตัวเลือก [esmfold]
ให้กับการติดตั้ง pip ซึ่งจะติดตั้งการขึ้นต่อกันสำหรับ OpenFold โดยอัตโนมัติ การติดตั้ง Openfold ต้องใช้ nvcc
pip install " fair-esm[esmfold] "
# OpenFold and its remaining dependency
pip install ' dllogger @ git+https://github.com/NVIDIA/dllogger.git '
pip install ' openfold @ git+https://github.com/aqlaboratory/openfold.git@4b41059694619831a7db195b7e0988fc4ff3a307 '
หมายเหตุ : หากการติดตั้ง openfold ล้มเหลว โปรดตรวจสอบอีกครั้งว่ามี nvcc
พร้อมใช้งาน และติดตั้ง PyTorch เวอร์ชันที่เข้ากันได้กับ cuda แล้ว
อีกทางหนึ่ง เราจัดเตรียมสภาพแวดล้อม conda esmfold
ซึ่งสามารถสร้างขึ้นผ่าน conda env create -f environment.yml
นอกจากนี้เรายังรองรับ PyTorch Hub อีกด้วย ซึ่งขจัดความจำเป็นในการโคลนและ/หรือติดตั้งที่เก็บข้อมูลนี้ด้วยตัวเอง:
import torch
model , alphabet = torch . hub . load ( "facebookresearch/esm:main" , "esm2_t33_650M_UR50D" )
หลังจากติดตั้ง pip คุณสามารถโหลดและใช้โมเดลที่ฝึกไว้ล่วงหน้าได้ดังนี้:
import torch
import esm
# Load ESM-2 model
model , alphabet = esm . pretrained . esm2_t33_650M_UR50D ()
batch_converter = alphabet . get_batch_converter ()
model . eval () # disables dropout for deterministic results
# Prepare data (first 2 sequences from ESMStructuralSplitDataset superfamily / 4)
data = [
( "protein1" , "MKTVRQERLKSIVRILERSKEPVSGAQLAEELSVSRQVIVQDIAYLRSLGYNIVATPRGYVLAGG" ),
( "protein2" , "KALTARQQEVFDLIRDHISQTGMPPTRAEIAQRLGFRSPNAAEEHLKALARKGVIEIVSGASRGIRLLQEE" ),
( "protein2 with mask" , "KALTARQQEVFDLIRD<mask>ISQTGMPPTRAEIAQRLGFRSPNAAEEHLKALARKGVIEIVSGASRGIRLLQEE" ),
( "protein3" , "K A <mask> I S Q" ),
]
batch_labels , batch_strs , batch_tokens = batch_converter ( data )
batch_lens = ( batch_tokens != alphabet . padding_idx ). sum ( 1 )
# Extract per-residue representations (on CPU)
with torch . no_grad ():
results = model ( batch_tokens , repr_layers = [ 33 ], return_contacts = True )
token_representations = results [ "representations" ][ 33 ]
# Generate per-sequence representations via averaging
# NOTE: token 0 is always a beginning-of-sequence token, so the first residue is token 1.
sequence_representations = []
for i , tokens_len in enumerate ( batch_lens ):
sequence_representations . append ( token_representations [ i , 1 : tokens_len - 1 ]. mean ( 0 ))
# Look at the unsupervised self-attention map contact predictions
import matplotlib . pyplot as plt
for ( _ , seq ), tokens_len , attention_contacts in zip ( data , batch_lens , results [ "contacts" ]):
plt . matshow ( attention_contacts [: tokens_len , : tokens_len ])
plt . title ( seq )
plt . show ()
หลังจากติดตั้งด้วยตัวเลือก [esmfold]
คุณสามารถใช้แบบจำลองการทำนายโครงสร้าง ESMfold ได้ดังต่อไปนี้:
import torch
import esm
model = esm . pretrained . esmfold_v1 ()
model = model . eval (). cuda ()
# Optionally, uncomment to set a chunk size for axial attention. This can help reduce memory.
# Lower sizes will have lower memory requirements at the cost of increased speed.
# model.set_chunk_size(128)
sequence = "MKTVRQERLKSIVRILERSKEPVSGAQLAEELSVSRQVIVQDIAYLRSLGYNIVATPRGYVLAGG"
# Multimer prediction can be done with chains separated by ':'
with torch . no_grad ():
output = model . infer_pdb ( sequence )
with open ( "result.pdb" , "w" ) as f :
f . write ( output )
import biotite . structure . io as bsio
struct = bsio . load_structure ( "result.pdb" , extra_fields = [ "b_factor" ])
print ( struct . b_factor . mean ()) # this will be the pLDDT
# 88.3
นอกจาก esm.pretrained.esmfold_v1()
ซึ่งเป็นโมเดลที่มีประสิทธิภาพดีที่สุดที่เราแนะนำให้ใช้แล้ว เรายังให้ esm.pretrained.esmfold_v0()
ซึ่งใช้สำหรับการทดลองใน Lin และคณะอีกด้วย 2022.
นอกจากนี้เรายังมีอินเทอร์เฟซบรรทัดคำสั่ง ( esm-fold
) ที่สามารถคาดการณ์โครงสร้างจำนวนมากจากไฟล์ FASTA ได้อย่างมีประสิทธิภาพโดยใช้ ESMFold:
usage: esm-fold [-h] -i FASTA -o PDB [--num-recycles NUM_RECYCLES]
[--max-tokens-per-batch MAX_TOKENS_PER_BATCH]
[--chunk-size CHUNK_SIZE] [--cpu-only] [--cpu-offload]
optional arguments:
-h, --help show this help message and exit
-i FASTA, --fasta FASTA
Path to input FASTA file
-o PDB, --pdb PDB Path to output PDB directory
--num-recycles NUM_RECYCLES
Number of recycles to run. Defaults to number used in
training (4).
--max-tokens-per-batch MAX_TOKENS_PER_BATCH
Maximum number of tokens per gpu forward-pass. This
will group shorter sequences together for batched
prediction. Lowering this can help with out of memory
issues, if these occur on short sequences.
--chunk-size CHUNK_SIZE
Chunks axial attention computation to reduce memory
usage from O(L^2) to O(L). Equivalent to running a for
loop over chunks of of each dimension. Lower values
will result in lower memory usage at the cost of
speed. Recommended values: 128, 64, 32. Default: None.
--cpu-only CPU only
--cpu-offload Enable CPU offloading
คำสั่งจะทำการทำนายหนึ่งครั้งสำหรับทุกลำดับในไฟล์ fasta มัลติเมอร์สามารถคาดเดาได้และควรป้อนลงในไฟล์ fasta เป็นลำดับเดียว โดยมีสายโซ่คั่นด้วยอักขระ ///
ตามค่าเริ่มต้น การคาดการณ์จะรวมกันเป็นชุดเพื่อให้สามารถคาดการณ์ลำดับที่สั้นกว่าพร้อมกันได้ สิ่งนี้สามารถปิดการใช้งานได้โดยการตั้งค่า --max-tokens-per-batch=0
การรวมกลุ่มสามารถปรับปรุงความเร็วการทำนายได้อย่างมากในลำดับที่สั้นลง
--cpu-offload
แฟล็กมีประโยชน์สำหรับการคาดการณ์ในลำดับที่ยาวขึ้น จะพยายามถ่ายพารามิเตอร์บางตัวไปที่ CPU RAM แทนที่จะจัดเก็บบน GPU
ในที่สุด การทดลองระเหยสำหรับ LM ที่มีขนาดแตกต่างกัน Lin และคณะ ตาราง S1 ปี 2022 ได้รับการเผยแพร่เป็น esm.pretrained.esmfold_structure_module_only_*()
เราไม่แนะนำให้ใช้แบบจำลองเหล่านี้ในการทำนายโครงสร้าง
เรามีอินเทอร์เฟซบรรทัดคำสั่ง ( esm-extract
) ที่สามารถแยกการฝังจำนวนมากสำหรับไฟล์ FASTA จาก ESM ได้อย่างมีประสิทธิภาพ:
usage: esm-extract [-h] [--toks_per_batch TOKS_PER_BATCH]
[--repr_layers REPR_LAYERS [REPR_LAYERS ...]] --include
{mean,per_tok,bos,contacts}
[{mean,per_tok,bos,contacts} ...]
[--truncation_seq_length TRUNCATION_SEQ_LENGTH]
model_location fasta_file output_dir
Extract per-token representations and model outputs for sequences in a FASTA
file
positional arguments:
model_location PyTorch model file OR name of pretrained model to
download (see README for models)
fasta_file FASTA file on which to extract representations
output_dir output directory for extracted representations
optional arguments:
-h, --help show this help message and exit
--toks_per_batch TOKS_PER_BATCH
maximum batch size
--repr_layers REPR_LAYERS [REPR_LAYERS ...]
layers indices from which to extract representations
(0 to num_layers, inclusive)
--include {mean,per_tok,bos,contacts} [{mean,per_tok,bos,contacts} ...]
specify which representations to return
--truncation_seq_length TRUNCATION_SEQ_LENGTH
truncate sequences longer than the given value
คำสั่งต่อไปนี้อนุญาตให้แยกการฝังเลเยอร์สุดท้ายสำหรับไฟล์ FASTA จากรุ่น ESM-2:
esm-extract esm2_t33_650M_UR50D examples/data/some_proteins.fasta
examples/data/some_proteins_emb_esm2 --repr_layers 0 32 33 --include
python scripts/extract.py esm2_t33_650M_UR50D examples/data/some_proteins.fasta
examples/data/some_proteins_emb_esm2 --repr_layers 0 32 33 --include mean per_tok
อุปกรณ์ cuda เป็นทางเลือกและจะถูกตรวจจับโดยอัตโนมัติ
ไดเรกทอรี some_proteins_emb_esm2/
ขณะนี้มีไฟล์ .pt
หนึ่งไฟล์ต่อลำดับ FASTA ใช้ torch.load()
เพื่อโหลด scripts/extract.py
มีแฟล็กที่กำหนดสิ่งที่รวมอยู่ในไฟล์ .pt
:
--repr-layers
(ค่าเริ่มต้น: สุดท้ายเท่านั้น) เลือกเลเยอร์ที่จะรวมการฝังไว้--include
ระบุสิ่งที่ฝังที่จะบันทึก คุณสามารถใช้สิ่งต่อไปนี้:per_tok
ประกอบด้วยลำดับทั้งหมด โดยมีการฝังต่อกรดอะมิโน (seq_len xhided_dim)mean
รวมการฝังโดยเฉลี่ยในลำดับทั้งหมดต่อเลเยอร์bos
รวมการฝังจากโทเค็นเริ่มต้นของลำดับ (หมายเหตุ: อย่าใช้กับโมเดลที่ผ่านการฝึกอบรมมาก่อน - เราฝึกอบรมโดยไม่มีการควบคุมดูแลโทเค็น bos) หากคุณต้องการโหลดโมเดลที่มีขนาดใหญ่มาก เช่น 15B และ/หรืออนุมานตามลำดับที่ยาวบนเครื่องของคุณ การอนุมาน GPU ปกติอาจทำให้เกิดข้อผิดพลาด OOM เราแสดงวิธีการโหลดโมเดลด้วย Fully Sharded Data Parallel (FSDP) ของ Fairscale และใช้คุณสมบัติการถ่าย CPU ซึ่งช่วยให้สามารถอนุมานโมเดลขนาดใหญ่บน GPU ตัวเดียวได้ โปรดดู examples/esm2_infer_fairscale_fsdp_cpu_offloading.py
เพื่อดูรายละเอียดเพิ่มเติม
ดู "ตัวอย่าง/การทำนายตัวแปร/" สำหรับโค้ดและตุ้มน้ำหนักที่ได้รับการฝึกล่วงหน้าสำหรับโมเดล ESM-1v ที่อธิบายไว้ในโมเดลภาษา ช่วยให้สามารถคาดการณ์ผลกระทบของการกลายพันธุ์ต่อการทำงานของโปรตีนได้ในทันที (ไมเออร์ และคณะ 2021).
โปรดทราบว่า ESM-2 สามารถใช้สำหรับการทำนายตัวแปรได้เช่นกัน และคาดว่าจะมีประสิทธิภาพใกล้เคียงกับ ESM-1v
ดู "examples/inverse_folding/" สำหรับคู่มือผู้ใช้โดยละเอียด โมเดล ESM-IF1 ได้รับการอธิบายว่าเป็น GVPTransformer
ในการเรียนรู้การพับผกผันจากโครงสร้างที่คาดการณ์ไว้นับล้าน (Hsu และคณะ 2022)
นอกจากนี้เรายังมีสมุดบันทึก colab สำหรับการออกแบบลำดับและฟังก์ชันการให้คะแนนลำดับอีกด้วย
แบบจำลองการพับผกผัน ESM-IF1 สร้างขึ้นเพื่อทำนายลำดับโปรตีนจากพิกัดอะตอมของกระดูกสันหลัง เรามีสคริปต์ไว้ที่นี่ 1) เพื่อสุ่มตัวอย่างการออกแบบลำดับสำหรับโครงสร้างที่กำหนด และ 2) เพื่อให้คะแนนลำดับสำหรับโครงสร้างที่กำหนด
ฝึกฝนด้วยโครงสร้างโปรตีน 12M ที่คาดการณ์โดย AlphaFold2 โมเดล ESM-IF1 ประกอบด้วยชั้นการประมวลผลอินพุตทางเรขาคณิตที่ไม่แปรเปลี่ยนตามด้วยหม้อแปลงแบบลำดับต่อลำดับ และบรรลุการกู้คืนลำดับแบบเนทีฟ 51% บนแบ็คโบนที่ยึดโครงสร้างไว้ พร้อมการกู้คืน 72% สำหรับการฝัง สารตกค้าง นอกจากนี้ โมเดลยังได้รับการฝึกฝนด้วย Span Masking เพื่อทนต่อพิกัดแกนหลักที่หายไป ดังนั้นจึงสามารถทำนายลำดับสำหรับโครงสร้างที่ถูกมาสก์บางส่วนได้
การตั้งค่าสภาพแวดล้อมอธิบายไว้ในส่วนย่อยของตัวอย่าง/inverse_folding
หากต้องการสุ่มตัวอย่างลำดับสำหรับโครงสร้างที่กำหนดในรูปแบบ PDB หรือ mmCIF ให้ใช้สคริปต์ sample_sequences.py
ไฟล์อินพุตสามารถมี .pdb
หรือ .cif
เป็นส่วนต่อท้ายได้
ตัวอย่างเช่น หากต้องการตัวอย่างการออกแบบลำดับ 3 ลำดับสำหรับโครงสร้าง golgi casein kinase (PDB 5YH2; PDB Molecule of the Month ตั้งแต่เดือนมกราคม 2022) เราสามารถเรียกใช้คำสั่งต่อไปนี้จากไดเร็กทอรีราก esm:
python examples/inverse_folding/sample_sequences.py examples/inverse_folding/data/5YH2.pdb
--chain C --temperature 1 --num-samples 3 --outpath examples/inverse_folding/output/sampled_sequences.fasta
ลำดับตัวอย่างจะถูกบันทึกในรูปแบบ fasta ไปยังไฟล์เอาท์พุตที่ระบุ
พารามิเตอร์อุณหภูมิจะควบคุมความคมชัดของการแจกแจงความน่าจะเป็นสำหรับการสุ่มตัวอย่างตามลำดับ อุณหภูมิในการสุ่มตัวอย่างที่สูงขึ้นจะทำให้ได้ลำดับที่หลากหลายมากขึ้น แต่มีแนวโน้มว่าการฟื้นตัวของลำดับดั้งเดิมจะต่ำกว่า อุณหภูมิการสุ่มตัวอย่างเริ่มต้นคือ 1 เพื่อเพิ่มประสิทธิภาพสำหรับการกู้คืนลำดับดั้งเดิม เราขอแนะนำให้สุ่มตัวอย่างด้วยอุณหภูมิต่ำ เช่น 1e-6
หากต้องการให้คะแนนความน่าจะเป็นของบันทึกแบบมีเงื่อนไขสำหรับลำดับที่มีเงื่อนไขในโครงสร้างที่กำหนด ให้ใช้สคริปต์ score_log_likelihoods.py
ตัวอย่างเช่น หากต้องการให้คะแนนลำดับใน examples/inverse_folding/data/5YH2_mutated_seqs.fasta
ตามโครงสร้างใน examples/inverse_folding/data/5YH2.pdb
เราสามารถรันคำสั่งต่อไปนี้จากไดเร็กทอรีราก esm:
python examples/inverse_folding/score_log_likelihoods.py examples/inverse_folding/data/5YH2.pdb
examples/inverse_folding/data/5YH2_mutated_seqs.fasta --chain C
--outpath examples/inverse_folding/output/5YH2_mutated_seqs_scores.csv
ความเป็นไปได้ของบันทึกแบบมีเงื่อนไขจะถูกบันทึกในรูปแบบ CSV ในเส้นทางเอาต์พุตที่ระบุ ค่าเอาท์พุตคือความน่าจะเป็นของบันทึกโดยเฉลี่ยที่เฉลี่ยเหนือกรดอะมิโนทั้งหมดในลำดับ
สำหรับข้อมูลเพิ่มเติม โปรดดู "./examples/inverse_folding/" สำหรับคู่มือผู้ใช้โดยละเอียด
โปรดเยี่ยมชมเว็บไซต์ ESM Metagenomic Atlas และดูบล็อกโพสต์ของเราเพื่อเรียนรู้เพิ่มเติม
คำแนะนำในการดาวน์โหลดจำนวนมากมีอยู่ใน README แยกต่างหากที่นี่
ทรัพยากร Atlas ประกอบด้วยหน้าสำหรับพับลำดับโดยใช้ ESMFold ค้นหาชุดย่อยของ ESM Atlas ตามโครงสร้างหรือลำดับ รวมถึง API เพื่อเข้าถึงทรัพยากรเหล่านั้นโดยทางโปรแกรม
Foldseek ให้การค้นหาเทียบกับ Atlas โดยไม่มีการจำกัดความยาวที่นี่
แบบจำลองการพับผกผัน ESM-IF1 ทำนายลำดับโปรตีนจากพิกัดอะตอมของกระดูกสันหลัง ฝึกด้วยโครงสร้างโปรตีน 12M ที่ทำนายโดย AlphaFold2 หมายเหตุนี้จะแนะนำคุณผ่านตัวอย่างของลำดับการสุ่มตัวอย่าง การคำนวณความน่าจะเป็นของบันทึกแบบมีเงื่อนไข และการแยกเอาต์พุตของตัวเข้ารหัสเพื่อแสดงโครงสร้าง
เพื่อช่วยคุณในการเริ่มต้นใช้งานการฝัง บทช่วยสอนสมุดบันทึก jupyter นี้จะแสดงวิธีฝึกตัวทำนายตัวแปรภายใต้การดูแลโดยใช้การฝังจาก ESM-1 คุณสามารถใช้โปรโตคอลที่คล้ายกันเพื่อฝึกโมเดลสำหรับงานดาวน์สตรีมใดๆ ก็ได้ แม้ว่าจะมีข้อมูลจำกัดก็ตาม ขั้นแรก คุณสามารถขอรับการฝังสำหรับ examples/data/P62593.fasta
โดยการดาวน์โหลดการฝังที่คำนวณไว้ล่วงหน้าตามคำแนะนำในโน้ตบุ๊ก หรือโดยการเรียกใช้สิ่งต่อไปนี้:
# Obtain the embeddings
python scripts/extract.py esm1v_t33_650M_UR90S_1 examples/data/P62593.fasta
examples/data/P62593_emb_esm1v --repr_layers 33 --include mean
จากนั้น ทำตามคำแนะนำที่เหลือในบทช่วยสอน คุณยังเรียกใช้บทแนะนำในสมุดบันทึก Colab ได้ด้วย
หมายเหตุ หรือใช้คำแนะนำที่ใหม่กว่าสำหรับการทำนายตัวแปรแบบช็อตเป็นศูนย์ ซึ่งจะคาดการณ์ผลกระทบต่อการกลายพันธุ์โดยไม่ต้องมีการฝึกอบรมแบบมีผู้ดูแล
บทช่วยสอนสมุดบันทึก jupyter นี้สาธิตการทำนายการสัมผัสด้วยทั้งรุ่น ESM-2 และ MSA Transformer (ESM-MSA-1) การคาดคะเนการสัมผัสจะขึ้นอยู่กับการถดถอยโลจิสติกเหนือแผนผังความสนใจของแบบจำลอง วิธีการนี้อิงตามรายงาน ICLR 2021 ของเรา แบบจำลองภาษาโปรตีน Transformer เป็นผู้เรียนที่มีโครงสร้างไม่ได้รับการดูแล (Rao และคณะ 2020) MSA Transformer (ESM-MSA-1) ใช้การจัดตำแหน่งหลายลำดับ (MSA) เป็นอินพุต และใช้แผนที่การเอาใจใส่ตนเองของแถวที่ผูกกันในลักษณะเดียวกัน ดูหม้อแปลง MSA (เรา และคณะ 2021).
หากต้องการรับผู้ติดต่อตามความสนใจโดยไม่ได้รับการดูแล ให้โทร model.predict_contacts(tokens)
หรือ model(tokens, return_contacts=True)
และบทช่วยสอนสมุดบันทึก jupyter นี้แสดงวิธีการโหลดและจัดทำดัชนี ESMStructuralSplitDataset
และคำนวณแผนที่การเอาใจใส่ตนเอง การคาดคะเนผู้ติดต่อที่ไม่ได้รับการดูแลโดยใช้ ESM-2
ชวเลข | esm.pretrained. | #ชั้น | #พารามิเตอร์ | ชุดข้อมูล | การฝังสลัว | URL รุ่น (ดาวน์โหลดอัตโนมัติไปที่ ~/.cache/torch/hub/checkpoints ) |
---|---|---|---|---|---|---|
อีเอสเอ็ม-2 | esm2_t48_15B_UR50D | 48 | 15B | UR50/D 2021_04 | 5120 | https://dl.fbaipublicfiles.com/fair-esm/models/esm2_t48_15B_UR50D.pt |
esm2_t36_3B_UR50D | 36 | 3B | UR50/D 2021_04 | 2560 | https://dl.fbaipublicfiles.com/fair-esm/models/esm2_t36_3B_UR50D.pt | |
esm2_t33_650M_UR50D | 33 | 650ม | UR50/D 2021_04 | 1280 | https://dl.fbaipublicfiles.com/fair-esm/models/esm2_t33_650M_UR50D.pt | |
esm2_t30_150M_UR50D | 30 | 150ม | UR50/D 2021_04 | 640 | https://dl.fbaipublicfiles.com/fair-esm/models/esm2_t30_150M_UR50D.pt | |
esm2_t12_35M_UR50D | 12 | 35ม | UR50/D 2021_04 | 480 | https://dl.fbaipublicfiles.com/fair-esm/models/esm2_t12_35M_UR50D.pt | |
esm2_t6_8M_UR50D | 6 | 8ม | UR50/D 2021_04 | 320 | https://dl.fbaipublicfiles.com/fair-esm/models/esm2_t6_8M_UR50D.pt | |
อีเอ็มพับ | esmfold_v1 | 48 (+36) | 690M (+3B) | UR50/D 2021_04 | - | https://dl.fbaipublicfiles.com/fair-esm/models/esmfold_3B_v1.pt |
esmfold_v0 | 48 (+36) | 690M (+3B) | UR50/D 2021_04 | - | https://dl.fbaipublicfiles.com/fair-esm/models/esmfold_3B_v0.pt | |
esmfold_structure_module_only_* | 0 (+หลากหลาย) | หลากหลาย | UR50/D 2021_04 | - | https://dl.fbaipublicfiles.com/fair-esm/models/esmfold_structure_module_only_* | |
อีเอสเอ็ม-IF1 | esm_if1_gvp4_t16_142M_UR50 | 20 | 124ม | CATH 4.3 + โครงสร้างที่คาดการณ์ไว้สำหรับ UR50 | 512 | https://dl.fbaipublicfiles.com/fair-esm/models/esm_if1_gvp4_t16_142M_UR50.pt |
อีเอสเอ็ม-1v | esm1v_t33_650M_UR90S_[1-5] | 33 | 650ม | UR90/ส 2020_03 | 1280 | https://dl.fbaipublicfiles.com/fair-esm/models/esm1v_t33_650M_UR90S_1.pt |
อีเอสเอ็ม-MSA-1b | esm_msa1b_t12_100M_UR50S | 12 | 100ม | UR50/S + MSA 2018_03 | 768 | https://dl.fbaipublicfiles.com/fair-esm/models/esm_msa1b_t12_100M_UR50S.pt |
ESM-MSA-1 | esm_msa1_t12_100M_UR50S | 12 | 100ม | UR50/S + MSA 2018_03 | 768 | https://dl.fbaipublicfiles.com/fair-esm/models/esm_msa1_t12_100M_UR50S.pt |
อีเอสเอ็ม-1บี | esm1b_t33_650M_UR50S | 33 | 650ม | UR50/เอส 2018_03 | 1280 | https://dl.fbaipublicfiles.com/fair-esm/models/esm1b_t33_650M_UR50S.pt |
อีเอสเอ็ม-1 | esm1_t34_670M_UR50S | 34 | 670ม | UR50/เอส 2018_03 | 1280 | https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t34_670M_UR50S.pt |
esm1_t34_670M_UR50D | 34 | 670ม | UR50/D 2018_03 | 1280 | https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t34_670M_UR50D.pt | |
esm1_t34_670M_UR100 | 34 | 670ม | UR100 2018_03 | 1280 | https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t34_670M_UR100.pt | |
esm1_t12_85M_UR50S | 12 | 85ม | UR50/เอส 2018_03 | 768 | https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t12_85M_UR50S.pt | |
esm1_t6_43M_UR50S | 6 | 43ม | UR50/เอส 2018_03 | 768 | https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t6_43M_UR50S.pt |
ต่อไปนี้เป็นรายการตามลำดับเวลาของรุ่นที่เปิดตัวและบทความที่ได้รับการแนะนำ:
ชวเลข | บันทึกประจำรุ่น |
---|---|
อีเอสเอ็ม-1 | เปิดตัวพร้อมกับ Rives และคณะ 2019 (อัปเดตเมื่อ ส.ค. 2020) |
อีเอสเอ็ม-1บี | เปิดตัวพร้อมกับ Rives และคณะ 2019 (อัปเดตธันวาคม 2020) ดูภาคผนวก B |
ESM-MSA-1 | เปิดตัวพร้อมกับ Rao และคณะ 2021 (พิมพ์ล่วงหน้า v1) |
อีเอสเอ็ม-MSA-1b | เปิดตัวพร้อมกับ Rao และคณะ 2021 (ฉบับ ICML'21 มิถุนายน 2021) |
อีเอสเอ็ม-1v | เปิดตัวพร้อมกับ Meier และคณะ 2021. |
อีเอสเอ็ม-IF1 | เปิดตัวพร้อมกับ Hsu และคณะ 2022. |
อีเอสเอ็ม-2 | เปิดตัวพร้อมกับ Lin และคณะ 2022. |
นี่คือชุดข้อมูลการตรวจสอบข้ามห้าเท่าของโครงสร้างโดเมนโปรตีนที่สามารถใช้เพื่อวัดลักษณะทั่วไปของการเป็นตัวแทนในระดับต่างๆ ของความแตกต่างทางโครงสร้าง ชุดข้อมูลใช้การยึดโครงสร้างในระดับตระกูล ซูเปอร์แฟมิลี่ และระดับพับ ฐานข้อมูล SCOPe ใช้ในการจำแนกโดเมน โดเมนจะถูกแบ่งออกเป็น 5 ชุดเท่าๆ กันอย่างเป็นอิสระสำหรับแต่ละระดับของโครงสร้างที่ยึดไว้ เช่น 5 ชุดของโฟลด์ ซูเปอร์แฟมิลี หรือตระกูล เพื่อให้แน่ใจว่าสำหรับแต่ละพาร์ติชั่นทั้งห้านั้น โครงสร้างที่มีการจำแนกประเภทเดียวกันจะไม่ปรากฏในทั้งชุดรถไฟและชุดทดสอบ สำหรับระดับการจำแนกประเภทที่กำหนด แต่ละโครงสร้างจะปรากฏในชุดการทดสอบหนึ่งครั้ง ดังนั้นในการทดสอบการตรวจสอบความถูกต้องข้าม แต่ละโครงสร้างจะได้รับการประเมินเพียงครั้งเดียว
ชุดข้อมูลนี้มีพิกัด 3 มิติ แผนที่ระยะทาง และป้ายกำกับโครงสร้างรอง สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการสร้างชุดข้อมูล โปรดดูที่ Rives และคณะ 2019 ภาคผนวก A.10
บทช่วยสอนสมุดบันทึก jupyter นี้แสดงวิธีการโหลดและจัดทำดัชนี ESMStructuralSplitDataset
เมื่อเริ่มต้น ESMStructuralSplitDataset
จะดาวน์โหลด splits
และ pkl
เรายังจัดเตรียม msas
ให้กับแต่ละโดเมนด้วย สามารถดาวน์โหลดข้อมูลได้โดยตรงด้านล่าง
ชื่อ | คำอธิบาย | URL |
---|---|---|
แยก | รถไฟ / แยกที่ถูกต้อง | https://dl.fbaipublicfiles.com/fair-esm/structural-data/splits.tar.gz |
พีเคแอล | วัตถุ pkl ที่มีลำดับ ป้ายกำกับ SSP แผนที่ระยะทาง และพิกัด 3 มิติ | https://dl.fbaipublicfiles.com/fair-esm/structural-data/pkl.tar.gz |
มิลลิวินาที | a3m ที่มี MSA สำหรับแต่ละโดเมน | https://dl.fbaipublicfiles.com/fair-esm/structural-data/msas.tar.gz |
ไฟล์แยกที่กำหนดว่าคลัสเตอร์ UniRef50 ใดถูกใช้เป็นชุดการประเมินแบบพักไว้สำหรับการฝึกอบรมล่วงหน้าใน Rives และคณะ 2019 และ Rao และคณะ 2021 สามารถพบได้ที่นี่:
ไฟล์เหล่านี้มีเพียง UniRef50 ID และ UniRef100 ID ที่สอดคล้องกับฐานข้อมูล UniRef รุ่นปี 2018-03 ซึ่งเผยแพร่โดย UniProt Consortium ภายใต้ใบอนุญาต Creative Commons Attribution (CC BY 4.0)
งาน | การทำนายการสัมผัสที่ไม่ได้รับการดูแล | การทำนายโครงสร้าง | |||
---|---|---|---|---|---|
ชุดทดสอบ | ขนาดใหญ่ที่ถูกต้อง | CASP14 | CAMEO (เม.ย.-มิ.ย. 2565) | CASP14 | CAMEO (เม.ย.-มิ.ย. 2565) |
เกรมลิน (พอตส์) | 39.3 | ||||
เทป | 11.2 | ||||
โพรทเบิร์ต-BFD | 34.1 | ||||
Prot-T5-XL-BFD | 35.6 | 46.1 | 62.6 | ||
Prot-T5-XL-Ur50 (3B) | 47.9 | 49.8 | 69.4 | ||
อีเอสเอ็ม-1 | 33.7 | ||||
อีเอสเอ็ม-1บี | 41.1 | 24.4 | 39 | 41.6 | 64.5 |
อีเอสเอ็ม-1v | 35.3 | ||||
อีเอสเอ็ม-MSA-1b | 57.4 | ||||
อีเอสเอ็ม-2 (8M) | 15.9 | 9.8 | 15.7 | 36.7 | 48.1 |
อีเอสเอ็ม-2 (35M) | 28.8 | 16.4 | 28.4 | 41.4 | 56.4 |
อีเอสเอ็ม-2 (150M) | 42.2 | 26.8 | 40.1 | 49.0 | 64.9 |
อีเอสเอ็ม-2 (700M) | 50.1 | 32.5 | 47.6 | 51.3 | 70.1 |
อีเอสเอ็ม-2 (3B) | 52.7 | 34.0 | 49.9 | 52.5 | 71.8 |
อีเอสเอ็ม-2 (15B) | 54.5 | 37.0 | 51.7 | 55.4 | 72.1 |
การเปรียบเทียบแบบจำลองภาษาโปรตีนที่เกี่ยวข้องในงานทำนายโครงสร้าง
หากคุณพบว่าแบบจำลองมีประโยชน์ในการวิจัยของคุณ เราขอให้คุณอ้างอิงรายงานที่เกี่ยวข้อง:
@article { rives2019biological ,
author = { Rives, Alexander and Meier, Joshua and Sercu, Tom and Goyal, Siddharth and Lin, Zeming and Liu, Jason and Guo, Demi and Ott, Myle and Zitnick, C. Lawrence and Ma, Jerry and Fergus, Rob } ,
title = { Biological Structure and Function Emerge from Scaling Unsupervised Learning to 250 Million Protein Sequences } ,
year = { 2019 } ,
doi = { 10.1101/622803 } ,
url = { https://www.biorxiv.org/content/10.1101/622803v4 } ,
journal = { PNAS }
}
สำหรับการทำนายการติดต่อเพื่อการดูแลตนเอง:
@article { rao2020transformer ,
author = { Rao, Roshan M and Meier, Joshua and Sercu, Tom and Ovchinnikov, Sergey and Rives, Alexander } ,
title = { Transformer protein language models are unsupervised structure learners } ,
year = { 2020 } ,
doi = { 10.1101/2020.12.15.422761 } ,
url = { https://www.biorxiv.org/content/10.1101/2020.12.15.422761v1 } ,
journal = { bioRxiv }
}
สำหรับหม้อแปลง MSA:
@article { rao2021msa ,
author = { Rao, Roshan and Liu, Jason and Verkuil, Robert and Meier, Joshua and Canny, John F. and Abbeel, Pieter and Sercu, Tom and Rives, Alexander } ,
title = { MSA Transformer } ,
year = { 2021 } ,
doi = { 10.1101/2021.02.12.430858 } ,
url = { https://www.biorxiv.org/content/10.1101/2021.02.12.430858v1 } ,
journal = { bioRxiv }
}
สำหรับการทำนายตัวแปรโดยใช้ ESM-1v:
@article { meier2021language ,
author = { Meier, Joshua and Rao, Roshan and Verkuil, Robert and Liu, Jason and Sercu, Tom and Rives, Alexander } ,
title = { Language models enable zero-shot prediction of the effects of mutations on protein function } ,
year = { 2021 } ,
doi = { 10.1101/2021.07.09.450648 } ,
url = { https://www.biorxiv.org/content/10.1101/2021.07.09.450648v1 } ,
journal = { bioRxiv }
}
สำหรับการพับแบบผกผันโดยใช้ ESM-IF1:
@article { hsu2022learning ,
author = { Hsu, Chloe and Verkuil, Robert and Liu, Jason and Lin, Zeming and Hie, Brian and Sercu, Tom and Lerer, Adam and Rives, Alexander } ,
title = { Learning inverse folding from millions of predicted structures } ,
year = { 2022 } ,
doi = { 10.1101/2022.04.10.487779 } ,
url = { https://www.biorxiv.org/content/early/2022/04/10/2022.04.10.487779 } ,
journal = { ICML }
}
สำหรับโมเดลภาษา ESM-2 และ ESMfold:
@article { lin2022language ,
title = { Language models of protein sequences at the scale of evolution enable accurate structure prediction } ,
author = { Lin, Zeming and Akin, Halil and Rao, Roshan and Hie, Brian and Zhu, Zhongkai and Lu, Wenting and Smetanin, Nikita and dos Santos Costa, Allan and Fazel-Zarandi, Maryam and Sercu, Tom and Candido, Sal and others } ,
journal = { bioRxiv } ,
year = { 2022 } ,
publisher = { Cold Spring Harbor Laboratory }
}
โค้ดส่วนใหญ่นี้สร้างขึ้นบนเฟรมเวิร์กการสร้างแบบจำลองลำดับ fairseq เราใช้ fairseq ภายในเพื่อการวิจัยการสร้างแบบจำลองภาษาโปรตีนของเรา เราขอแนะนำเป็นอย่างยิ่งให้ลองใช้หากคุณต้องการฝึกโมเดลภาษาโปรตีนล่วงหน้าตั้งแต่เริ่มต้น
นอกจากนี้ หากคุณต้องการใช้เกณฑ์มาตรฐานการทำนายตัวแปรจาก Meier และคณะ (2021) เราจัดเตรียมไฟล์ bibtex พร้อมข้อมูลอ้างอิงสำหรับทุกคน