PLUMED
Nesta seção:
Descrição
De acordo com a Documentação do PLUMED, PLUMED é uma biblioteca open-source para amostragem aprimorada (enhanced sampling) em simulações de dinâmica molecular. Permite calcular e agir sobre variáveis coletivas, realizar metadinâmica, umbrella sampling e outras técnicas avançadas.
Versões Disponíveis
plumed/2.7.1 (default)
Carregando o Módulo
# Carregar PLUMED
module load plumed/2.7.1
# Verificar instalação
plumed --version
plumed info --configuration
Submissão de Jobs com PLUMED + GROMACS
submit_plumed_gromacs.sh
#!/bin/bash
#SBATCH -J plumed_gmx
#SBATCH -N 2
#SBATCH --ntasks-per-node=28
#SBATCH -t 72:00:00
#SBATCH --mem-per-cpu=2G
export INPUT="topol.tpr plumed.dat"
export OUTPUT="metadynamics/"
module load plumed/2.7.1
module load gromacs/2025.2
# PLUMED com GROMACS (versão patchada)
job-nanny mpirun -np $SLURM_NTASKS gmx_mpi mdrun -s topol.tpr \
-plumed plumed.dat -o metadynamics.trr \
-e metadynamics.edr -c after.gro -g metadynamics.log
Submissão de Jobs com PLUMED + NAMD
submit_plumed_namd.sh
#!/bin/bash
#SBATCH -J plumed_namd
#SBATCH -N 2
#SBATCH --ntasks-per-node=28
#SBATCH -t 72:00:00
#SBATCH --mem-per-cpu=2G
export INPUT="simulation.namd plumed.dat"
export OUTPUT="plumed_results/"
module load plumed/2.7.1
module load namd/2.13-tcp
# Configurar PLUMED para NAMD
export PLUMED_KERNEL=$PLUMED_ROOT/lib/libplumedKernel.so
job-nanny namd_mpi.sh simulation.namd
Exemplo de Arquivo PLUMED
plumed.dat
# Metadinâmica para ângulo diedro
dihedral: TORSION ATOMS=5,7,9,15
dihedral2: TORSION ATOMS=7,9,15,17
# Metadinâmica nas duas CVs
METAD ...
LABEL=metad
ARG=dihedral,dihedral2
PACE=500
HEIGHT=1.2
SIGMA=0.35,0.35
FILE=HILLS
GRID_MIN=-pi,-pi
GRID_MAX=pi,pi
GRID_BIN=100,100
TEMP=300.0
... METAD
# Imprimir CVs
PRINT ARG=dihedral,dihedral2,metad.* FILE=COLVAR STRIDE=10
Metadinâmica com Reconstrução de Energia Livre
submit_metadynamics.sh
#!/bin/bash
#SBATCH -J metadynamics
#SBATCH -N 2
#SBATCH --ntasks-per-node=28
#SBATCH -t 168:00:00
#SBATCH --mem-per-cpu=2G
export INPUT="topol.tpr plumed_metad.dat"
export OUTPUT="metad_results/"
module load plumed/2.7.1
module load gromacs/2025.2
job-nanny mpirun -np $SLURM_NTASKS gmx_mpi mdrun -s topol.tpr \
-plumed plumed_metad.dat -o metad.trr \
-e metad.edr -c after.gro -g metad.log
plumed_metad.dat
# Variáveis coletivas
phi: TORSION ATOMS=5,7,9,15
psi: TORSION ATOMS=7,9,15,17
# Metadinâmica com well-tempered
METAD ...
ARG=phi,psi
PACE=500
HEIGHT=1.0
SIGMA=0.35,0.35
TEMP=300.0
BIASFACTOR=10
GRID_MIN=-pi,-pi
GRID_MAX=pi,pi
GRID_BIN=200,200
FILE=HILLS
LABEL=metad
... METAD
# Análise em tempo real
PRINT ARG=phi,psi,metad.bias FILE=COLVAR STRIDE=100
Umbrella Sampling
submit_umbrella.sh
#!/bin/bash
#SBATCH -J umbrella
#SBATCH --array=1-20
#SBATCH -N 1
#SBATCH -c 28
#SBATCH -t 48:00:00
#SBATCH --mem=32G
CENTERS=$(seq -5.0 0.5 5.0)
CENTER_ARRAY=($CENTERS)
CENTER=${CENTER_ARRAY[$SLURM_ARRAY_TASK_ID-1]}
export INPUT="topol.tpr plumed_template.dat"
export OUTPUT="umbrella_${CENTER}/"
module load plumed/2.7.1
module load gromacs/2025.2
mkdir -p umbrella_${CENTER}
cd umbrella_${CENTER}
# Configurar PLUMED para umbrella sampling
cat > plumed.dat << EOF
# Distância como variável coletiva
distance: DISTANCE ATOMS=10,15
# Restraint harmônico
RESTRAINT ARG=distance AT=$CENTER KAPPA=1000.0
# Saída
PRINT ARG=distance,restraint.bias FILE=COLVAR STRIDE=10
EOF
job-nanny gmx_mpi mdrun -s ../topol.tpr -plumed plumed.dat \
-o umbrella.trr -e umbrella.edr -c after.gro
Análise de WHAM
analyze_wham.sh
#!/bin/bash
#SBATCH -J wham_analysis
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 04:00:00
#SBATCH --mem=8G
module load plumed/2.7.1
# Preparar arquivos para WHAM
for dir in umbrella_*/; do
center=$(basename $dir | sed 's/umbrella_//')
echo "$dir/COLVAR $center 1000.0" >> wham_input.txt
done
# Executar WHAM
plumed wham --temp 300.0 --outfile free_energy.dat \
--histfile histo.dat --min -5.0 --max 5.0 \
--bins 100 --tol 1e-6 < wham_input.txt
# Plotar energia livre
cat > plot_fe.py << 'EOF'
import numpy as np
import matplotlib.pyplot as plt
data = np.loadtxt('free_energy.dat')
cv = data[:,0]
fe = data[:,1]
plt.figure()
plt.plot(cv, fe, 'b-', linewidth=2)
plt.xlabel('Distância (nm)')
plt.ylabel('Energia livre (kJ/mol)')
plt.title('Perfil de energia livre')
plt.grid(True)
plt.savefig('free_energy.png', dpi=150)
EOF
python plot_fe.py
Referências
Documentação: https://www.plumed.org/doc
Tutoriais: https://www.plumed.org/tutorials
Mailing list: https://groups.google.com/g/plumed-users
Ver também
GROMACS - Dinâmica molecular
NAMD - Dinâmica molecular
Processando Simulações - Como submeter jobs