蛋白-小肽分析(1)蛋白-肽段分子對接

文中所提到的命令行指令,在WSL ubuntu2204環(huán)境下計算

前期計算機篩選

生物活性:PeptideRanker
抗氧化性:AnOxPePred 1.0 /AnOxPP
毒性:ToxinPred3.0 (已經(jīng)更新 到3.0了怎么好多教程還在推送1.0)

分子對接

windows下可視化、批量的BatchVinaGUI(BVG),非常的好用,可是還是有一些問題
https://www.sciencedirect.com/science/article/pii/S2590123023004620

把文件夾建成這樣

文件夾

受體從pdb 網(wǎng)站下載保存到r,使用BVG處理,保存到rq文件夾

受體準備

開始準備配體

我的小肽pdb文件是使用colabfold 本地版生成的,使用自帶的amber relax,命令類似于

colabfold_batch --num-recycle 1 --amber --num-relax 1 --use-gpu-relax <小肽.fasta> <輸出文件夾>

(colabfold坑太大了開不了,可以參考這個寫的挺好:https://qiita.com/Ag_smith/items/bfcf94e701f1e6a2aa90

找到里面的relax的文件,丟到文件夾l里,重命名一下簡化名稱,不要帶-,使用下劃線代替

配體加氫

reduce和obabel等大部分加氫軟件生成的pdbqt分子順序會錯亂,表現(xiàn)為打開以后有一些莫名其妙的鍵亂飛。查了這么久終于根據(jù)http://bbs.keinsci.com/thread-21411-1-1.html最終找到了可用的自動加氫軟件:rdkit2pdbqt.py(是watvina)的一部分記得引用。
配置好obabel與rdkit2pdbqt.py后運行,其中</mnt/d/biof/script/rdkit2pdbqt.py>是rdkit2pdbqt.py保存的絕對地址

for file in *.pdb; do
    if [ -f "$file" ]; then
        # 生成臨時 SDF 文件名
        temp_sdf=$(mktemp /tmp/XXXXXX.sdf)

        # 使用 OpenBabel 將 PDB 文件轉換為 SDF 文件
        obabel -ipdb "$file" -osdf -O "$temp_sdf"
        if [ $? -ne 0 ]; then
            echo "Error converting $file to SDF format."
            continue
        fi

        # 使用 rdkit2pdbqt.py 處理 SDF 文件并生成 PDBQT 文件
        python3 /mnt/d/biof/script/rdkit2pdbqt.py -l "$temp_sdf" > "${file%.pdb}.pdbqt"
        if [ $? -ne 0 ]; then
            echo "Error processing $file with rdkit2pdbqt.py."
        fi

        # 刪除臨時 SDF 文件
        rm -f "$temp_sdf"
    fi
done

將生成的文件丟到lq里,準備開始對接

對接設置

不建議使用盲對接,盲對接有論文建議ADCP,本次采用自定義對接
算法窮進度低于使用線程數(shù)時

對接設置

保存到protocol中,注意如果是自定義的話,每次生成了之后要把文件名從custom改為受體的文件名。

開始對接

如果有獨顯的話GPU最快,兩個quick也會快點 ,如果單獨算的話可以使用Vina1.1.2,我算過和vina官方的教程結果幾乎是一樣的。
如果使用vina-gpu計算后,protocol下的txt文件末尾會出現(xiàn)thread=10000,一定記得刪除了之后才能運行其他的對接算法。并且vina-gpu不可用于盲對接


開始對接

不知道為啥BVG不能生成合并文件,之后使用下面的mergePDB.py腳本生成合并受體與配體的3d文件
使用wsl,在lq、rq、mergePDB的父文件夾運行運行。

(這里還涉及到開源pymol的安裝,參考一下這個:https://www.cnblogs.com/dechinphy/p/pymol.html

import pymol
from pymol import cmd
import os
import logging

# 配置日志記錄
log_file = os.path.join(os.getcwd(), 'mergePDB', 'err.log')
logging.basicConfig(filename=log_file, level=logging.ERROR, format='%(asctime)s - %(levelname)s - %(message)s')

# 獲取當前工作目錄
work_folder = os.getcwd()
# 讀取 mergelist.txt 文件
mergelist_file = os.path.join(work_folder, 'mergePDB', 'mergelist.txt')
# 定義輸出文件夾
output_folder = os.path.join(work_folder, 'mergePDB')

# 確保輸出文件夾存在
if not os.path.exists(output_folder):
    os.makedirs(output_folder)

# 啟動 PyMOL
pymol.finish_launching()

# 讀取文件
with open(mergelist_file, 'r') as f:
    lines = f.readlines()

# 處理每一行
for line in lines:
    if line.strip():  # 忽略空行
        # 提取 receptor_name 和 ligand_name
        parts = line.strip().split('-')
        receptor_name = parts[0]
        ligand_name = parts[1]
        
        # 構建文件路徑
        receptor_path = os.path.join(work_folder, 'rq', f'{receptor_name}.pdbqt')
        ligand_path = os.path.join(work_folder, 'results', f'{receptor_name}-{ligand_name}', f'{receptor_name}-{ligand_name}-1.pdbqt')
        
        # 檢查文件是否存在
        if not os.path.exists(receptor_path) or not os.path.exists(ligand_path):
            error_message = f"Missing files for {receptor_name} and/or {ligand_name}"
            logging.error(error_message)
            print(error_message)
            continue
        
        # 加載PDBQT文件
        cmd.load(receptor_path, 'receptor')
        cmd.load(ligand_path, 'ligand')
        
        # 修改配體的鏈標識符
        cmd.alter('ligand', 'chain="Z"')
        
        # 合并分子
        cmd.create('combined', 'receptor or ligand')
        
        # 移除不需要的鏈
        # cmd.remove('combined and not (chain A or chain B or chain Z)')  # 注意這里使用了新設置的鏈標識符 "Z"
        
        # 保存為PDB文件
        output_filename = f'{receptor_name}_{ligand_name}_combined_ABJ.pdb'
        output_path = os.path.join(output_folder, output_filename)
        cmd.save(output_path, 'combined')
        
        # 清除對象以避免內(nèi)存溢出
        cmd.delete('receptor')
        cmd.delete('ligand')
        cmd.delete('combined')

# 關閉 PyMOL
cmd.quit()

2D化界面

申請一個ligplus的學術使用權,注意要用校園/機構郵箱,然后就可以了。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容