g_mmpbsa

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

Ver também