การซื้อคืนนี้มีรหัสสำหรับการออกแบบแอนติบอดีแบบมีเงื่อนไขเป็นการแปลกราฟเทียบเท่า 3 มิติในรายงานของเรา MEAN เป็นตัวย่อของ M ulti-channel E quivariant A ttention N etwork ที่เสนอในรายงานของเรา
เราได้เตรียมสคริปต์สำหรับการตั้งค่าสภาพแวดล้อมใน scripts/setup.sh โปรดติดตั้งการขึ้นต่อกันในสคริปต์ด้วย bash scripts/setup.sh
ก่อนที่จะรันโค้ดของเรา
เราได้ให้ข้อมูลสรุปที่ใช้ในรายงานของเราจาก SAbDab, RAbD, SKEMPI_V2 ในโฟลเดอร์สรุป โปรดดาวน์โหลดข้อมูลโครงสร้างทั้งหมดจากหน้าดาวน์โหลดของ SAbDab เนื่องจาก SabDab มีการอัปเดตเป็นประจำทุกสัปดาห์ คุณจึงสามารถดาวน์โหลดไฟล์สรุปใหม่ล่าสุดได้จากเว็บไซต์อย่างเป็นทางการ คำแนะนำต่อไปนี้จะสมมติว่าข้อมูลโครงสร้างที่เปลี่ยนหมายเลขใหม่ด้วย imgt นั้นอยู่ที่โฟลเดอร์ all_structors/imgt
เราได้จัดเตรียมเชลล์สคริปต์สำหรับขั้นตอนต่างๆ ของการทดลอง ซึ่งอยู่ในโฟลเดอร์ สคริปต์ หรือในโฟลเดอร์รูทของ repo ของเรา สำหรับสคริปต์ใน สคริปต์ คุณสามารถเรียกใช้โดยไม่มีข้อโต้แย้งเพื่อดูคำแนะนำการใช้งาน ซึ่งจะแสดงให้เห็นใน README ในภายหลังด้วย สิ่งหนึ่งที่อาจต้องการคำอธิบายคือพารามิเตอร์โหมดซึ่งรับค่า 100 หรือ 111 100 หมายถึงเฉพาะสายโซ่หนักเท่านั้นที่ถูกใช้ในบริบท และ 111 หมายถึงสายโซ่หนัก สายโซ่เบา รวมทั้งอีพิโทปถูกพิจารณาในบริบท แบบหลังคือการตั้งค่าที่สมบูรณ์ของการออกแบบ CDR ที่จับกับแอนติเจน ในขณะที่แบบแรกมีไว้เพื่อการเปรียบเทียบกับ RefineGNN เท่านั้น <model type> ในอาร์กิวเมนต์ระบุเฉพาะคำนำหน้าของไดเร็กทอรีเพื่อบันทึก/โหลดจุดตรวจสอบ เราใช้ ค่าเฉลี่ย ในส่วนต่อไปนี้ โปรดลองใช้ไดเร็กทอรีแบบสัมบูรณ์เมื่อส่งอาร์กิวเมนต์ไปยังสคริปต์ หากคุณพบปัญหาเกี่ยวกับเส้นทาง
เราได้จัดเตรียมสคริปต์สำหรับการเตรียมข้อมูล การฝึกอบรม k-fold และการประเมินผล
นี่คือตัวอย่างในการประเมิน MEAN ของเรา:
bash scripts/prepare_data_kfold.sh summaries/sabdab_summary.tsv all_structures/imgt
GPU=0 bash scripts/k_fold_train.sh summaries 111 mean 9901
GPU=0 bash scripts/k_fold_eval.sh summaries 111 mean 0
ด้วยการรัน bash scripts/prepare_data_kfold.sh summaries/sabdab_summary.tsv all_structures/imgt
สคริปต์จะคัดลอก pdbs ในสรุปไปเป็น summaries/pdb แปลงสรุปเป็นรูปแบบ json และสร้างการแยกข้อมูล 10 เท่าสำหรับแต่ละ cdr ซึ่ง ต้องการพื้นที่ ~ 5G หากคุณต้องการเตรียมข้อมูลในไดเร็กทอรีอื่น เพียงคัดลอกไฟล์สรุปที่นั่นและแทนที่ summaries/sabdab_summary.tsv ด้วยพาธใหม่ นอกจากนี้ สำหรับการฝึกแบบขนานแต่ละครั้ง จุดตรวจจะถูกบันทึกในเวอร์ชัน 0, 1, ... ดังนั้นคุณต้องระบุ version id เป็นอาร์กิวเมนต์สุดท้ายของ k_fold_eval.sh
ก่อนที่จะรันงานนี้ อย่างน้อยโปรดรันคำสั่งดาวน์โหลดข้อมูลสรุป json ของ SAbDab ใน scripts/prepare_data_kfold.sh (บรรทัด 23-31) เราจะสมมติว่าไฟล์ json อยู่ที่ summaries/sabdab_all.json
ตัวอย่าง:
bash scripts/prepare_data_rabd.sh summaries/rabd_summary.jsonl all_structures/imgt summaries/sabdab_all.json
GPU=0 MODE=111 DATA_DIR=summaries/cdrh3 bash train.sh mean 3
GPU=0 MODE=111 DATA_DIR=summaries/cdrh3 bash rabd_test.sh 0
นอกจากนี้เรายังได้จัดให้มีจุดตรวจที่ได้รับการฝึกอบรมที่ใช้ในรายงานของเราที่จุดตรวจ/ckpt/rabd_cdrh3_mean.ckpt คุณสามารถใช้เพื่อทดสอบได้โดยการรัน GPU=0 MODE=111 DATA_DIR=summaries/cdrh3 bash rabd_test.sh 0 checkpoints/ckpt/rabd_cdrh3_mean.ckpt
ผลลัพธ์จะถูกบันทึกลงในโฟลเดอร์ชื่อ ผลลัพธ์ ภายใต้ไดเร็กทอรีเดียวกันกับจุดตรวจ
ก่อนที่จะรันงานนี้ อย่างน้อยโปรดรันคำสั่งดาวน์โหลดข้อมูลสรุป json ของ SAbDab ใน scripts/prepare_data_kfold.sh (บรรทัด 23-31) เราจะสมมติว่าไฟล์ json อยู่ที่ summaries/sabdab_all.json
ตัวอย่าง:
bash scripts/prepare_data_skempi.sh summaries/skempi_v2_summary.jsonl all_structures/imgt summaries/sabdab_all.json
GPU=0 MODE=111 DATA_DIR=summaries bash train.sh mean 3
GPU=0 CKPT_DIR=summaries/ckpt/mean_CDR3_111/version_0 bash ita_train.sh
GPU=0 DATA_DIR=summaries bash ita_generate.sh summaries/ckpt/mean_CDR3_111/version_0/ita/iter_i.ckpt # specify the checkpoint from iteration i for testing
นอกจากนี้เรายังได้จัดให้มีจุดตรวจหลังจาก ITA ปรับแต่งที่จุดตรวจ/ckpt/opt_cdrh3_mean.ckpt คุณสามารถใช้มันเพื่อการอนุมานได้โดยตรงด้วยการรัน GPU=0 DATA_DIR=summaries bash ita_generate.sh checkpoints/ckpt/opt_cdrh3_mean.ckpt
สคริปต์นี้จะสร้างตัวเลือกที่เหมาะสมที่สุด 100 รายการสำหรับแอนติบอดีแต่ละตัวใน summaries/skempi_all.json และรายงาน 1 อันดับแรกในแง่ของ ddg ที่คาดการณ์ไว้ pdbs ของผู้สมัครที่ได้รับการปรับปรุงแล้วจะอยู่ที่ไดเรกทอรีเดียวกันของจุดตรวจ
นอกจากนี้เรายังจัดเตรียมสคริปต์สำหรับการออกแบบ/การปรับให้เหมาะสมของ CDR เดี่ยวที่ scritps/design.py สคริปต์ต้องการอินพุต pdb ที่มีสายโซ่หนัก สายโซ่เบา และแอนติเจน pdb ควรได้รับการกำหนดหมายเลขใหม่โดยใช้ระบบ IMGT ล่วงหน้า ซึ่งสามารถทำได้โดยสคริปต์ที่ data/ImmunoPDB.py จาก ANARCI นี่คือตัวอย่างของการออกแบบ CDR-H3 สำหรับ 1ic7 pdb:
python ./data/ImmunoPDB.py -i data/1ic7.pdb -o 1ic7.pdb -s imgt # renumber the pdb
python ./scripts/design.py --pdb 1ic7.pdb --heavy_chain H --light_chain L
pdb ที่สร้างขึ้นรวมทั้งผลสรุปของลำดับ CDR-H3 จะถูกบันทึกไว้ใน ./results จุดตรวจสอบเริ่มต้นที่ใช้ในสคริปต์คือ จุดตรวจ/ckpt/rabd_cdrh3_mean.ckpt คุณสามารถผ่านจุดตรวจของคุณเองได้ด้วยอาร์กิวเมนต์ --ckpt path/to/your/checkpoint
(เช่นใช้ opt_cdrh3_mean.ckpt สำหรับการเพิ่มประสิทธิภาพ CDR)
นอกจากนี้ สคริปต์ยังสามารถรองรับ pdb หลายรายการเป็นอินพุตได้ ตัวอย่างเช่น:
python ./scripts/design.py
--pdb pdb1 pdb2 ...
--heavy_chain Hchain1 Hchain2 ...
--light_chain Lchain1 Lchain2 ...
ขอขอบคุณที่สนใจงานของเรา!
โปรดอย่าลังเลที่จะถามคำถามเกี่ยวกับอัลกอริธึม รหัส รวมถึงปัญหาที่พบในการใช้งาน เพื่อให้เราสามารถทำให้มันชัดเจนและดีขึ้น คุณสามารถสร้างปัญหาใน repo github หรือติดต่อเราที่ [email protected]
รหัสบางส่วนถูกยืมมาจาก repos ที่มีอยู่: