g_mmpbsa
Nesta seção:
Descrição
De acordo com a página do g_mmpbsa, g_mmpbsa é uma aplicação de console que calcula energia livre de ligação usando o método MM-PBSA (Molecular Mechanics Poisson-Boltzmann Surface Area). É executado a partir do terminal com opções de comando similares a outros módulos do GROMACS.
Versões Disponíveis
g_mmpbsa/gromacs-5.1
Submissão de Jobs Seriais
submit_g_mmpbsa.sh
#!/bin/bash
#SBATCH -J g_mmpbsa
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 24:00:00
#SBATCH --mem=8G
export INPUT="traj.xtc topol.tpr mmpbsa.mdp index.ndx"
export OUTPUT="*.xvg *.dat"
module load g_mmpbsa/gromacs-5.1
job-nanny g_mmpbsa -f traj.xtc -s topol.tpr \
-i mmpbsa.mdp -n index.ndx -pbsa \
-mm energy_MM.xvg -pol polar.xvg \
-apol apolar.xvg -decomp \
-mmcon contrib_MM.dat \
-pcon contrib_pol.dat \
-apcon contrib_apol.dat
Exemplo de Arquivo MDP
mmpbsa.mdp
; MMPBSA input parameters
title = MMPBSA calculation
define =
; Preprocessor
cpp = /usr/bin/cpp
; Run parameters
integrator = md
dt = 0.002
nsteps = 50000
; Output control
nstxout = 5000
nstvout = 5000
nstenergy = 5000
nstlog = 5000
; Bond parameters
constraints = all-bonds
continuation = yes
constraint_algorithm = lincs
lincs_order = 4
lincs_warnangle = 30
; Neighbor searching
cutoff-scheme = Verlet
nstlist = 20
ns_type = grid
pbc = xyz
rlist = 1.2
; Electrostatics
coulombtype = PME
rcoulomb = 1.2
; vdw
vdwtype = cutoff
rvdw = 1.2
; Temperature coupling
tcoupl = V-rescale
tc-grps = Protein_LIG
tau_t = 0.1
ref_t = 300
; Pressure coupling
pcoupl = Parrinello-Rahman
pcoupltype = isotropic
tau_p = 2.0
compressibility = 4.5e-5
ref_p = 1.0
; Velocity generation
gen-vel = yes
gen-temp = 300
gen-seed = -1
Índice para Decomposição
Crie um arquivo de índice com grupos separados para proteína e ligante:
index.ndx
[ Protein ]
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
[ Ligand ]
21 22 23 24 25 26 27 28 29 30
[ Complex ]
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
Análise de Decomposição por Resíduo
submit_g_mmpbsa_decomp.sh
#!/bin/bash
#SBATCH -J g_mmpbsa_decomp
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 36:00:00
#SBATCH --mem=16G
export INPUT="traj.xtc topol.tpr mmpbsa.mdp index.ndx"
export OUTPUT="decomp_*.dat"
module load g_mmpbsa/gromacs-5.1
job-nanny g_mmpbsa -f traj.xtc -s topol.tpr \
-i mmpbsa.mdp -n index.ndx -pbsa \
-mm energy_MM.xvg -pol polar.xvg \
-apol apolar.xvg -decomp \
-mmcon contrib_MM_per_residue.dat \
-pcon contrib_pol_per_residue.dat \
-apcon contrib_apol_per_residue.dat \
-r 1-20 21-30
Job Array para Diferentes Temperaturas
submit_g_mmpbsa_array.sh
#!/bin/bash
#SBATCH -J g_mmpbsa_array
#SBATCH --array=1-5
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 24:00:00
#SBATCH --mem=8G
TEMPS=(280 290 300 310 320)
TEMP=${TEMPS[$SLURM_ARRAY_TASK_ID-1]}
export INPUT="traj_${TEMP}.xtc topol_${TEMP}.tpr mmpbsa.mdp index.ndx"
export OUTPUT="results_${TEMP}/"
module load g_mmpbsa/gromacs-5.1
mkdir -p results_${TEMP}
cd results_${TEMP}
job-nanny g_mmpbsa -f ../traj_${TEMP}.xtc \
-s ../topol_${TEMP}.tpr \
-i ../mmpbsa.mdp \
-n ../index.ndx \
-pbsa \
-mm energy_MM.xvg \
-pol polar.xvg \
-apol apolar.xvg
Processamento com Múltiplas Trajetórias
submit_g_mmpbsa_multi.sh
#!/bin/bash
#SBATCH -J g_mmpbsa_multi
#SBATCH -N 1
#SBATCH -n 4
#SBATCH -t 48:00:00
#SBATCH --mem=32G
module load g_mmpbsa/gromacs-5.1
# Processar várias trajetórias em paralelo
for REP in {1..4}; do
cat > run_${REP}.sh << EOF
g_mmpbsa -f traj_rep${REP}.xtc -s topol.tpr \
-i mmpbsa.mdp -n index.ndx -pbsa \
-mm energy_MM_rep${REP}.xvg \
-pol polar_rep${REP}.xvg \
-apol apolar_rep${REP}.xvg \
-decomp -mmcon contrib_MM_rep${REP}.dat
EOF
chmod +x run_${REP}.sh
./run_${REP}.sh &
done
wait
echo "Todos os cálculos concluídos"
Análise Estatística
analyze_results.sh
#!/bin/bash
#SBATCH -J analyze_mmpbsa
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 01:00:00
#SBATCH --mem=4G
module load g_mmpbsa/gromacs-5.1
module load R/4.0.2
# Calcular médias e desvios
cat > analyze.R << 'EOF'
data <- read.table("energy_MM.xvg", header=FALSE)
colnames(data) <- c("Time", "VDWAALS", "EEL", "PB", "SASA")
summary <- data.frame(
Term = c("VDWAALS", "EEL", "PB", "SASA"),
Mean = colMeans(data[,2:5]),
SD = apply(data[,2:5], 2, sd)
)
write.table(summary, "summary.txt", row.names=FALSE, quote=FALSE)
EOF
Rscript analyze.R
Referências
Documentação: https://rashmikumari.github.io/g_mmpbsa/How-to-Run.html
Tutorial MM-PBSA: http://ambermd.org/tutorials/advanced/tutorial3/py_script/
Ver também
GROMACS - Dinâmica molecular com GROMACS
Amber - Alternativa para MMPBSA com Amber
Processando Simulações - Como submeter jobs