Boltz-2によるADCの構造予測
linker 2, DM1, cystein
https://scrapbox.io/files/69169478047379fcd4bc9f12.png
1. linker+payloadのsmilesを作成
https://scrapbox.io/files/691694812053cd25c34acd97.png
システインに共有結合としてつけるパターン(うまくできるかわからない)
https://scrapbox.io/files/6916947fdedaa9f67ee4b5a8.png
linker_payloadだけADCD1という名前でccd化
まずBoltz-2のCCDを直接書き換えてしまうのを防ぐためバックアップする
code:bash
cp ~/.boltz/ccd.pkl ~/.boltz/ccd.pkl.bak
code:;
python boltz-generalized-covalent-modification/add_ccd_entry.py \
"COc1cc2cc(c1Cl)N(C)C(=O)CC@H(OC(=O)C@H(C)N(C)C(=O)CCSC1CC(=O)N(CCCN3C(=O)CCC3=O)C1=O)C@1(C)OC@H1C@H(C)C@@H1CC@@(O)(NC(=O)O1)C@H(OC)/C=C/C=C(\C)C2" \ "ADCD1" --force
code:yaml
version: 1
sequences:
- protein:
sequence: DIQMTQSPSSLSASVGDRVTITCRASQDVNTAVAWYQQKPGKAPKLLIYSASFLYSGVPSRFSGSRSGTDFTLTISSLQPEDFATYYCQQHYTTPPTFGQGTKVEIKRTVAAPSVFIFPPSDEQLKSGTASVVCLLNNFYPREAKVQWKVDNALQSGNSQESVTEQDSKDSTYSLSSTLTLSKADYEKHKVYACEVTHQGLSSPVTKSFNRGEC
msa: boltz_output/boltz_results_TRX/msa/TRX_0.csv
- protein:
sequence: EVQLVESGGGLVQPGGSLRLSCAASGFNIKDTYIHWVRQAPGKGLEWVARIYPTNGYTRYADSVKGRFTISADTSKNTAYLQMNSLRAEDTAVYYCSRWGGDGFYAMDYWGQGTLVTVSSASTKGPSVFPLAPSSKSTSGGTAALGCLVKDYFPEPVTVSWNSGALTSGVHTFPAVLQSSGLYSLSSVVTVPSSSLGTQTYICNVNHKPSNTKVDKKVEPKSCDKTHTCPPCPAPELLGGPSVFLFPPKPKDTLMISRTPEVTCVVVDVSHEDPEVKFNWYVDGVEVHNAKTKPREEQYNSTYRVVSVLTVLHQDWLNGKEYKCKVSNKALPAPIEKTISKAKGQPREPQVYTLPPSREEMTKNQVSLTCLVKGFYPSDIAVEWESNGQPENNYKTTPPVLDSDGSFFLYSKLTVDKSRWQQGNVFSCSVMHEALHNHYTQKSLSLSPGK
msa: boltz_output/boltz_results_TRX/msa/TRX_1.csv
- ligand:
id: E
ccd: ADCD1
constraints:
- bond:
templates:
- cif: /home/6/uc02086/workspace-kf/playground/ADC/boltz_output/boltz_results_TRX/predictions/TRX/TRX_model_0.cif
以下失敗例
kfurui.iconBoltz-2の性能の問題(多分)で失敗しているが手順としてはこのように実行する
こちらはシステイン自体を既にリンカーと結合させたcys_linker_payloadを特殊なアミノ酸として扱う方法
https://scrapbox.io/files/6916947b737423e9f7165207.png
リンカーとペイロードをつけることには成功したが構造が破綻してる。(use_potentialsもむなしく。)
失敗原因についてそれっぽいことがboltz communityのslackで書いてあった
おそらくトークン単位で処理している都合上修飾残基の結合情報をうまく取り扱えていない。修飾の範囲を大きく超える場合は共有結合を使った方が良さそう。
linker 2, DM1, cystein
1. cys+linker+payloadのsmilesを作成
https://scrapbox.io/files/69169478047379fcd4bc9f12.png
code:リンカーとペイロードの結合.py
from rdkit import Chem
from rdkit.Chem import AllChem
linker2_smi_link = "C(CN1C(=O)C(*:1)CC1=O)CN2C(=O)C(*:2)CC2=O" linker2_mol_link = Chem.MolFromSmiles(linker2_smi_link)
dm1_mol_link = Chem.MolFromSmiles(dm1_smi_link)
cys = Chem.MolFromSmiles('NC@@H(CS:4)C(=O)O') linker = linker2_mol_link
payload = dm1_mol_link
rxn1.Initialize()
prod1 = rxn1.RunReactants((linker, payload))
rxn2.Initialize()
prod2 = rxn2.RunReactants((linker_payload, cys))
cys_linker_payload = prod200 Chem.SanitizeMol(cys_linker_payload)
print(Chem.MolToSmiles(cys_linker_payload))
COc1cc2cc(c1Cl)N(C)C(=O)C[C@H](OC(=O)[C@H](C)N(C)C(=O)CCSC1CC(=O)N(CCCN3C(=O)CC(SC[C@H](N)C(=O)O)C3=O)C1=O)[C@]1(C)O[C@H]1[C@H](C)[C@@H]1C[C@@](O)(NC(=O)O1)[C@H](OC)/C=C/C=C(\C)C2
2. cys+linker+payloadをCCDに登録
まずBoltz-2のCCDを直接書き換えてしまうのを防ぐためバックアップする
code:bash
cp ~/.boltz/ccd.pkl ~/.boltz/ccd.pkl.bak
code:bash
python src/covalent_inference.py \
"COc1cc2cc(c1Cl)N(C)C(=O)CC@H(OC(=O)C@H(C)N(C)C(=O)CCSC1CC(=O)N(CCCN3C(=O)CC(SCC@H(N)C(=O)O)C3=O)C1=O)C@1(C)OC@H1C@H(C)C@@H1CC@@(O)(NC(=O)O1)C@H(OC)/C=C/C=C(\C)C2" \ "CYS" \
"CYSD1"
https://scrapbox.io/files/691694748b789de87e0f5452.png
3. Boltz-2の実行
code:TRX_adc.yaml
version: 1
sequences:
- protein:
sequence: DIQMTQSPSSLSASVGDRVTITCRASQDVNTAVAWYQQKPGKAPKLLIYSASFLYSGVPSRFSGSRSGTDFTLTISSLQPEDFATYYCQQHYTTPPTFGQGTKVEIKRTVAAPSVFIFPPSDEQLKSGTASVVCLLNNFYPREAKVQWKVDNALQSGNSQESVTEQDSKDSTYSLSSTLTLSKADYEKHKVYACEVTHQGLSSPVTKSFNRGEC
msa: boltz_output/boltz_results_TRX/msa/TRX_0.csv
- protein:
id: C
sequence: EVQLVESGGGLVQPGGSLRLSCAASGFNIKDTYIHWVRQAPGKGLEWVARIYPTNGYTRYADSVKGRFTISADTSKNTAYLQMNSLRAEDTAVYYCSRWGGDGFYAMDYWGQGTLVTVSSASTKGPSVFPLAPSSKSTSGGTAALGCLVKDYFPEPVTVSWNSGALTSGVHTFPAVLQSSGLYSLSSVVTVPSSSLGTQTYICNVNHKPSNTKVDKKVEPKSCDKTHTCPPCPAPELLGGPSVFLFPPKPKDTLMISRTPEVTCVVVDVSHEDPEVKFNWYVDGVEVHNAKTKPREEQYNSTYRVVSVLTVLHQDWLNGKEYKCKVSNKALPAPIEKTISKAKGQPREPQVYTLPPSREEMTKNQVSLTCLVKGFYPSDIAVEWESNGQPENNYKTTPPVLDSDGSFFLYSKLTVDKSRWQQGNVFSCSVMHEALHNHYTQKSLSLSPGK
msa: boltz_output/boltz_results_TRX/msa/TRX_1.csv
modifications:
- position: 229
ccd: CYSD1
- protein:
id: D
sequence: EVQLVESGGGLVQPGGSLRLSCAASGFNIKDTYIHWVRQAPGKGLEWVARIYPTNGYTRYADSVKGRFTISADTSKNTAYLQMNSLRAEDTAVYYCSRWGGDGFYAMDYWGQGTLVTVSSASTKGPSVFPLAPSSKSTSGGTAALGCLVKDYFPEPVTVSWNSGALTSGVHTFPAVLQSSGLYSLSSVVTVPSSSLGTQTYICNVNHKPSNTKVDKKVEPKSCDKTHTCPPCPAPELLGGPSVFLFPPKPKDTLMISRTPEVTCVVVDVSHEDPEVKFNWYVDGVEVHNAKTKPREEQYNSTYRVVSVLTVLHQDWLNGKEYKCKVSNKALPAPIEKTISKAKGQPREPQVYTLPPSREEMTKNQVSLTCLVKGFYPSDIAVEWESNGQPENNYKTTPPVLDSDGSFFLYSKLTVDKSRWQQGNVFSCSVMHEALHNHYTQKSLSLSPGK
msa: boltz_output/boltz_results_TRX/msa/TRX_1.csv
templates:
- cif: /home/6/uc02086/workspace-kf/playground/ADC/boltz_output/boltz_results_TRX/predictions/TRX/TRX_model_0.cif
Cの一箇所だけCYSD1にする例
boltz predict boltz_input/TRX_adc.yaml --out_dir boltz_output --no_kernels --use_potentials --recycling_steps 10
https://scrapbox.io/files/69169470f0beb39fcff7c27d.png
CYSD1だけならうまく予測できるのでアミノ酸とつなげることによって悪さをしていそう