可以看本人另一篇分子动力学模拟的文章,搞懂如何在超算平台上进行单个的MD操作后再来看这篇。
注意如果你不用超算平台的话,以下操作也全都需要在类linux平台上进行(不推荐windows 上 安装 WSL2 子系统的方式) 。
如果使用超算平台的话,以下操作在超算平台的shell窗口进行。
本篇文章以PDB ID
为6X7B
和6LUD
,配体的MOL ID
为MOL000354
和MOL002662
作为示例。
在这为:
6X7B_receptor.pdb
6LUD_receptor.pdb
MOL000354_docked.pdb
MOL002662_docked.pdb
1.配置环境
安装python相关依赖
pip install parmed tqdm pandas numpy matplotlib
安装Desmond模块
git clone https://github.com/Wang-Lin-boop/CADD-Scripts.git
export PYTHONPATH=$PYTHONPATH:$(pwd)/CADD-Scripts
初始化目录结构:
mkdir -p project/{receptors,ligands,combinations}
手动上传文件到对应目录:
受体 → project/receptors/
配体 → project/ligands/
2.生成交叉组合
# 生成所有受体-配体组合
receptors=("6X7B" "6LUD")
ligands=("MOL000354" "MOL002662")
for rec in "${receptors[@]}"; do
for lig in "${ligands[@]}"; do
combo_dir="project/combinations/${rec}_${lig}"
mkdir -p "${combo_dir}"
# 复制受体和配体到组合目录
cp "project/receptors/${rec}_receptor.pdb" "${combo_dir}/receptor.pdb"
cp "project/ligands/${lig}_docked.pdb" "${combo_dir}/ligand.pdb"
done
done
3.复合物构建脚本
创建 build_complexes.slurm
,此时项目结构如下:
build_complexes.slurm
内容:
注意替换BASE_DIR="/run/你的账号"
#!/bin/bash
#SBATCH --job-name=MD_Prep
#SBATCH --partition=gpu_4090
#SBATCH --gpus=1
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=6
#SBATCH --mem=60G
#SBATCH --output=%x_%j.out
# 加载必要环境(路径需根据平台实际位置调整)
module purge
module load amber/22_ambertools22_openmpi
source /data/apps_4090/amber/22_ambertools22_openmpi/amber.sh
module load openbabel/3.1.1
# 并行控制参数(必须与ntasks-per-node一致)
MAX_PARALLEL=6
counter=0
# 主处理循环(使用绝对路径)
BASE_DIR="/run/你的账号" # !!!!替换为您的实际运行目录
for combo_dir in ${BASE_DIR}/project/combinations/*; do
(
echo "处理组合: $(basename ${combo_dir})"
cd "${combo_dir}" || exit
# Step 1: 转换配体格式
obabel ligand.pdb -O ligand.mol2 --gen3d
# Step 2: 清洁受体
pdb4amber -i receptor.pdb -o receptor_clean.pdb
# Step 3: 构建复合物
tleap -f - <<EOL
source leaprc.protein.ff19SB
source leaprc.gaff2
loadamberparams frcmod.ionsjc_tip3p
rec = loadpdb receptor_clean.pdb
lig = loadmol2 ligand.mol2
complex = combine {rec lig}
solvateOct complex TIP3PBOX 12.0
addions2 complex Na+ 0
addions2 complex Cl- 0
saveamberparm complex complex.prmtop complex.inpcrd
savepdb complex complex.pdb
quit
EOL
echo "组合 ${combo_dir} 处理完成"
) &
# 并行控制
((counter++))
if (( counter % MAX_PARALLEL == 0 )); then
wait
fi
done
wait
echo "所有复合物构建完成!"
4.成功标志
提交作业:
sbatch -p cpusx build_complexes.slurm
显示类似如下内容即成功:
处理组合: 6X7B_MOL000354
1 molecule converted
pdb4amber: cleaned 3 residues
TLEAP: Solvent box added.
所有复合物构建完成!