NAMD
Nesta seção:
Descrição
De acordo com a página do NAMD, NAMD é um código de dinâmica molecular paralelo projetado para simulação de alto desempenho de grandes sistemas biomoleculares. Baseado em objetos paralelos Charm++, escala para centenas de núcleos em simulações típicas e além de 500.000 núcleos nas maiores simulações.
Versões Disponíveis
namd/2.12 (multicore)
namd/2.12-tcp (multinode)
namd/2.13-smp (multicore)
namd/2.13-tcp (multinode) (default)
Submissão de Jobs Seriais (Multicore)
#!/bin/bash
#SBATCH -J namd_serial
#SBATCH -N 1
#SBATCH -c 8
#SBATCH -t 24:00:00
#SBATCH --mem=16G
export INPUT="simulation.namd"
export OUTPUT="*.log *.dcd *.out"
module load namd/2.13-smp
job-nanny namd2 +p $SLURM_CPUS_PER_TASK simulation.namd
Submissão de Jobs MPI (TCP)
#!/bin/bash
#SBATCH -J namd_mpi
#SBATCH -N 2
#SBATCH --ntasks-per-node=28
#SBATCH -t 48:00:00
#SBATCH --mem-per-cpu=2G
export INPUT="simulation.namd"
export OUTPUT="*.log *.dcd *.out"
module load namd/2.13-tcp
job-nanny namd_mpi.sh simulation.namd
Nota
O script namd_mpi.sh gerencia a execução MPI do NAMD. Ele está disponível automaticamente ao carregar o módulo.
Submissão de Jobs Híbridos (SMP + TCP)
#!/bin/bash
#SBATCH -J namd_hybrid
#SBATCH -N 2
#SBATCH --ntasks-per-node=4
#SBATCH -c 7
#SBATCH -t 72:00:00
#SBATCH --mem-per-cpu=2G
export INPUT="simulation.namd"
export OUTPUT="*.log *.dcd *.out"
module load namd/2.13-tcp
job-nanny namd_mpi.sh +p$SLURM_CPUS_PER_TASK simulation.namd
Exemplo de Arquivo de Configuração NAMD
# Estrutura
structure myprotein.psf
coordinates myprotein.pdb
# Parâmetros
paraTypeCharmm on
parameters par_all36_prot.prm
# Condições de contorno
temperature 300
cellBasisVector1 80.0 0.0 0.0
cellBasisVector2 0.0 80.0 0.0
cellBasisVector3 0.0 0.0 80.0
cellOrigin 40.0 40.0 40.0
# Simulação
timestep 2.0
switching on
switchdist 10.0
cutoff 12.0
pairlistdist 14.0
stepspercycle 20
# PME
PME on
PMEGridSizeX 80
PMEGridSizeY 80
PMEGridSizeZ 80
# Termalização
Langevin on
LangevinTemp 300
LangevinDamping 5
# Controle de pressão
LangevinPiston on
LangevinPistonTarget 1.01325
LangevinPistonPeriod 200.0
LangevinPistonDecay 100.0
LangevinPistonTemp 300
# Saída
outputName simulation
restartfreq 5000
dcdfreq 5000
xstfreq 5000
outputEnergies 1000
binaryoutput no
# Execução
firstTimestep 0
numsteps 5000000
Minimização de Energia
#!/bin/bash
#SBATCH -J namd_min
#SBATCH -N 1
#SBATCH -c 8
#SBATCH -t 12:00:00
#SBATCH --mem=16G
export INPUT="minimize.namd"
export OUTPUT="min.log"
module load namd/2.13-smp
job-nanny namd2 +p $SLURM_CPUS_PER_TASK minimize.namd
# Estrutura
structure myprotein.psf
coordinates myprotein.pdb
# Parâmetros
paraTypeCharmm on
parameters par_all36_prot.prm
# Minimização
minimize 2000
numsteps 0
# Saída
outputName minimized
binaryoutput no
outputEnergies 100
# Restrições
constraints on
consref myprotein.pdb
conskfile myprotein.pdb
conskcol B
consScale 1.0
Equilibração com Restrições
#!/bin/bash
#SBATCH -J namd_eq
#SBATCH -N 1
#SBATCH -c 8
#SBATCH -t 24:00:00
#SBATCH --mem=16G
export INPUT="equilibration.namd"
export OUTPUT="eq.log eq.dcd"
module load namd/2.13-smp
job-nanny namd2 +p $SLURM_CPUS_PER_TASK equilibration.namd
# Estrutura
structure minimized.psf
coordinates minimized.pdb
bincoordinates minimized.coor
extendedSystem minimized.xsc
# Parâmetros
paraTypeCharmm on
parameters par_all36_prot.prm
# Condições de contorno
temperature 300
cellBasisVector1 80.0 0.0 0.0
cellBasisVector2 0.0 80.0 0.0
cellBasisVector3 0.0 0.0 80.0
cellOrigin 40.0 40.0 40.0
# Simulação
timestep 2.0
switching on
switchdist 10.0
cutoff 12.0
pairlistdist 14.0
stepspercycle 20
# PME
PME on
PMEGridSizeX 80
PMEGridSizeY 80
PMEGridSizeZ 80
# Termalização
Langevin on
LangevinTemp 300
LangevinDamping 5
# Controle de pressão (desligado na equilibração)
LangevinPiston off
# Saída
outputName eq
restartfreq 1000
dcdfreq 1000
outputEnergies 100
binaryoutput no
# Execução
firstTimestep 0
numsteps 50000
# Restrições (diminuindo gradualmente)
constraints on
consref minimized.pdb
conskfile minimized.pdb
conskcol B
consScale 0.1
Job Array para Múltiplas Temperaturas
#!/bin/bash
#SBATCH -J namd_array
#SBATCH --array=1-5
#SBATCH -N 1
#SBATCH -c 8
#SBATCH -t 48:00:00
#SBATCH --mem=16G
TEMPS=(300 310 320 330 340)
TEMP=${TEMPS[$SLURM_ARRAY_TASK_ID-1]}
export INPUT="template.namd"
export OUTPUT="T${TEMP}/"
module load namd/2.13-smp
mkdir -p T${TEMP}
cd T${TEMP}
# Modificar temperatura no arquivo de entrada
sed "s/TEMPERATURE/$TEMP/g" ../template.namd > simulation.namd
job-nanny namd2 +p $SLURM_CPUS_PER_TASK simulation.namd
Análise de Trajetórias com VMD
#!/bin/bash
#SBATCH -J analyze_namd
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 02:00:00
#SBATCH --mem=4G
export INPUT="trajectory.dcd structure.psf"
export OUTPUT="analysis/"
module load vmd
cat > analyze.tcl << 'EOF'
# Carregar molécula
mol new structure.psf
mol addfile trajectory.dcd waitfor all
set nf [molinfo top get numframes]
# RMSD
set outfile [open "rmsd.dat" w]
set ref [atomselect top "protein" frame 0]
set sel [atomselect top "protein"]
for {set i 0} {$i < $nf} {incr i} {
$sel frame $i
set rmsd [measure rmsd $sel $ref]
puts $outfile "$i $rmsd"
}
close $outfile
# Raio de giração
set outfile [open "gyrate.dat" w]
for {set i 0} {$i < $nf} {incr i} {
$sel frame $i
set gyrate [measure gyrate $sel]
puts $outfile "$i $gyrate"
}
close $outfile
# SASA (área de superfície acessível ao solvente)
set outfile [open "sasa.dat" w]
for {set i 0} {$i < $nf} {incr i} {
$sel frame $i
set sasa [measure sasa 1.4 $sel]
puts $outfile "$i $sasa"
}
close $outfile
exit
EOF
vmd -dispdev text -e analyze.tcl
Referências
Documentação: http://www.ks.uiuc.edu/Research/namd/current/ug/
Tutoriais: http://www.ks.uiuc.edu/Training/Tutorials/
Mailing list: http://www.ks.uiuc.edu/Research/namd/mailing_list/
Ver também
GROMACS - Alternativa para dinâmica molecular
Amber - Alternativa para dinâmica molecular
vmd - Visualização de trajetórias
Processando Simulações - Como submeter jobs