Dinâmica molecular de proteína e ligante em solvente

Published:

Introdução

Este tutorial foi feito para auxiliar iniciantes na preparação de inputs para simulações de Dinâmica Molecular e Docking entre uma proteína e o seu ligante.

Dinâmica molecular é o tipo de simulação é usada para avaliar a estabilidade do ligante dentro do sítio ativo e para explorar um pouco melhor as poses de ligação. Docking, por sua vez, é usado para verificar a capacidade que determinado ligante pode ter de se ligar em um receptor. Para mais detalhes sobre ambas as técnicas, veja material específico.


Obtenha a estrutura do complexo

Usando o UCSF Chimera (https://www.cgl.ucsf.edu/chimera/), faça o download da estrutura do complexo em:

File > Fetch by ID 

Essa sequência abrirá uma janela em que é possível escolher o banco de dados de onde a estrutura será retirada. Normalmente o Protein Data Bank (PDB) basta, mas visto que ele está sendo descontinuado em prol de um banco de dados melhor, é bom se atentar às demais formas de conseguir a estrutura.

Use o Chimera para remover moléculas indesejadas (moléculas de água, surfactantes, íons etc) que não participem diretamente da interação do ligante (ou do cofator) com a proteína:

Select > Residue

Selecione tudo que não for o ligante, o cofator ou moléculas de água ou íons de importância para o sítio de ligação e remova usando

Actions > Atoms/Bonds > delete

Salve a estrutura como ${PDB}.clean.pdb, onde ${PDB} deve ser substituído pelo código PDB da molécula (e.g: 6me2.clean.pdb, no exemplo deste tutorial de docking). Salve em pasta específica para conter as estruturas, como o diretório 001.initial_files abaixo:

mkdir 001.initial_files     # Cria pasta
cd 001.initial_files        # Entra na pasta

Usando o Chimera, selecione o ligante:

Select > Residue 

E escolha a opção correspondente ao ligante no sítio ativo. Assim que a molécula estiver selecionada, vá em:

Select > Invert (all models)

o que causará a inversão da seleção: toda a proteína estará selecionada em detrimento do ligante. Usando o Chimera, apague a proteína da mesma forma que as moléculas inconvenientes foram apagadas:

Actions > Atoms/Bonds > delete

Observe que estruturas obtidas de Cristalografia de Raio-X não contém hidrogênios. O Chimera pode ser usado para isso:

Tools > Structure Editing > AddH

Uma janela abrirá com opções a respeito de estados de protonação e possíveis ligações de hidrogênio. A menos que saiba de algo muito específico a respeito do ligante, apenas confirme em OK e veja os hidrogênios adicionados. Observe que o Chimera automaticamente cria moléculas em estados de protonação fisiológicos ($R-NH_3^+$ ou $R-CO_2^-$, por exemplo). Para descobrir se a molécula é carregada, adicione cargas AM1-BCC usando o Chimera:

Tools > Structure Editing > Add Charge

Ao clicar OK na janela que aparecer, aparecerá uma outra janela para a especificação da carga. O programa é capaz de fazer uma boa suposição inicial, mas confira na literatura se faz sentido. Ao assentir pela segunda vez, o Chimera chamará o programa Antechamber para fazer a determinação das cargas atômicas. Quando terminado o cálculo, salve o arquivo em 001.initial_files como ${PDB}.lig.mol2:

File > Save Mol2

A despeito das diversas opções aparecerão na janela de salvar, escolha somente Use untransformed coordinates e Use Sybyl-style hydrogen naming. Faça o mesmo com o cofator, se houver, nomeando-o ${PDB}.cof.mol2.

Para salvar a proteína, feche a sessão e reabra ${PDB}.clean.pdb. Selecione o ligante novamente e, desta vez, delete-o. Salve o receptor como ${PDB}.rec.pdb. Adicione hidrogênios, cargas atômicas e salve, novamente, como ${PDB}.rec.mol2. Caso precise fazer um experimento de docking, você usará o arquivo mol2.


Preparar ligante e cofator usando o Antechamber

Tendo em posse o arquivo do ligante e do cofator, caso exista, prepare o sistema para dinâmica molecular:

antechamber -i ${PDB}.lig.mol2 -fi mol2 -o ${PDB}.lig.charged.mol2 -fo mol2 -at gaff2 -c bcc -rn LIG -nc ${charge} -pf y
antechamber -i ${PDB}.cof.mol2 -fi mol2 -o ${PDB}.cof.charged.mol2 -fo mol2 -at gaff2 -c bcc -rn COF -nc ${charge} -pf y

-i diz respeito ao input com a estrutura da molécula de interesse; -fi sinaliza o formato do input-o, o nome do output-fo, o formato do output-at determina o campo de força a ser usado; -c, que tipo de cargas atômicas serão atribuídas a cada átomo. -nc corresponde a carga total e -rn é o código de 3 letras que o usuário dá a molécula. ${charge} corresponde a carga da espécie, sempre expressa em múltiplos da carga de um elétron. -pf diz para o antechamber apagar arquivos intermediários do processo de cálculo de carga.

Após terminado, deve-se usar o programa parmchk2 para verificar se está tudo em ordem com os parâmetros:

parmchk2 -i ${PDB}.lig.charged.mol2 -f mol2 -o ${PDB}.lig.charged.frcmod

No caso do cofator, se houver, deve-se usar o antechamber para criar um arquivo prep e um arquivo pdb, além do frcmod:

antechamber -i ${PDB}.cof.charged.mol2 -fi mol2 -o ${PDB}.cof.charged.prep -fo prepi -pf y
antechamber -i ${PDB}.cof.charged.mol2 -fi mol2 -o ${PDB}.cof.charged.pdb -fo pdb -pf y
parmchk2 -i ${PDB}.cof.charged.prep -f prepi -o ${PDB}.cof.charged.frcmod

Preparar proteína e complexo usando o tleap

É importante não apagar os arquivos anteriores porque os resíduos de aminoácidos em estruturas oriundas do PDB estão numerados de acordo com regras preestabelecidas e os programas do pacote Ambertools, que contém o Antechamber, o parmchk2 e o tleap renumeram os resíduos a partir do número 1.

Deve-se tomar nota de alguns fatores importantes:

  • Alguns resíduos podem estar modificados.
  • Cisteínas podem fazer ligação dissulfídica.
  • A estrutura da proteína pode estar incompleta.

Enquanto o tleap consegue adicionar terminais em partes da proteína que estão faltando, ele por vezes não funciona com resíduos modificados (que podem ser modificados para suas versões originais) e com cisteínas formando ligações dissulfídicas. Mudanças estruturais podem ser efetuadas no Chimera:

Tools > Structure Editing > Build Structure

ou manualmente mediante inserção e deleção. Cisteínas que formam ligação dissulfídica exigem modificação textual no arquivo .pdb. Os resíduos nomeados CYS que fazem ligação dissulfídica, devem ser modificados para CYX, o que permite a leitura pelo tleap.

Para criar um arquivo que será lido pelo tleap, crie o seguinte arquivo de texto:

set default PBradii mbondi2
source oldff/leaprc.ff14SB
loadamberparams frcmod.ions234lm_126_tip3p
loadamberparams frcmod.ions1lm_126_tip3p
loadamberparams frcmod.tip3p
REC = loadpdb ${PDB}.rec.pdb
charge REC
saveamberparm REC ${PDB}.pro.parm ${PDB}.pro.crd
savepdb REC ${PDB}.000.pdb
quit

Salve o arquivo como pro.leap.in. Para executar o tleap, basta digitar no terminal:

tleap -f pro.leap.in

Significado das linhas do arquivo de entrada do tleap

O arquivo pro.leap.in contém informações importantes para a construção do sistema:

  • set default PBradii mbondi2 define raios de Poisson-Boltzmann no caso de que se queira calcular energias livres por meio de técnicas menos sofisticadas como MM-PBSA ou MM-GBSA.
  • source oldff/leaprc.ff14SB lê o arquivo de parâmetros do campo de força Amber ff14SB, um bom campo de forças para proteínas e ácidos nucleicos.
  • As linhas loadamberparams frcmod.ions234lm_126_tip3p, loadamberparams frcmod.ions1lm_126_tip3p e loadamberparams frcmod.tip3p lêem arquivos contendo parâmetros para íons e água (modelo rígido tip3p).
  • REC = loadpdb ${PDB}.rec.pdb lê o arquivo .pdb .
  • charge REC confere a cada átomo uma carga de acordo com o campo de força escolhido.
  • As linhas saveamberparm REC ${PDB}.pro.prmtop ${PDB}.pro.inpcrd e savepdb REC ${PDB}.000.pdb criam arquivos .prmtop e .inpcrd para simulações no Sander ou PME-MD (programas de dinâmica molecular do pacote Amber) e um arquivo PDB que pode ser usado para manter controle da numeração biológica e sua correspondência com a numeração criada pelo tleap.
  • quit fecha o programa.

Numeração biológica

Há um programa do pacote Amber que pode adicionar ao .prmtop a numeração biológica, parmed. Para fazer os números biológicos serem incluídos crie um arquivo parmed.in com a seguinte linha:

addPDB ${PDB}.rec.pdb

onde ${PDB}.rec.pdb é o pdb com a numeração biológica correta. Para colocar a informação biológica nos arquivos gerados pelo tleap use:

parmed -i parmed.in -p ${PDB}.pro.prmtop -c ${PDB}.pro.inpcrd

Isso nem sempre funcionará, então fique atento aos principais resíduos do sítio de ligação para fazer a sua análise.

Criando o complexo proteína+ligante+cofator

Para criar o sistema para simulação, usamos o tleap para criar os arquivos de simulação do pacote Amber. Para isso criamos o input ${PDB}.leap.in:

set default PBradii mbondi3
source oldff/leaprc.ff14SB
source leaprc.gaff2
loadamberparams frcmod.ions234lm_126_tip3p
loadamberparams frcmod.ions1lm_126_tip3p
loadamberparams frcmod.tip3p
### Adicionar proteína (PRO)
PRO = loadpdb ${path_to_place}/${PDB}.pro.noH.pdb
### Adicionar ligante (LIG)
loadamberparams ${PDB}.lig.charged.frcmod
LIG = loadmol2 ${PDB}.lig.charged.mol2
### Adicionar cofator (COF), se ele existir. 
### Caso não exista cofator, apague as linhas com `cof`
loadamberparams ${path_to_place}/${PDB}.cof.charged.frcmod
loadamberprep ${path_to_place}/${PDB}.cof.charged.prep
COF = loadpdb ${path_to_place}/${PDB}.cof.charged.pdb
REC = combine { PRO COF }
saveamberparm COF ${PDB}.cof.prmtop ${PDB}.cof.ori.inpcrd
### Criar complexo
COM = combine { REC LIG }
### A linha abaixo deve ser usada caso não exista cofator
#COM = combine { PRO LIG }
saveamberparm LIG ${PDB}.lig.prmtop ${PDB}.lig.ori.inpcrd
saveamberparm PRO ${PDB}.pro.prmtop ${PDB}.pro.ori.inpcrd
saveamberparm REC ${PDB}.rec.prmtop ${PDB}.rec.ori.inpcrd
saveamberparm COM ${PDB}.com.prmtop ${PDB}.com.ori.inpcrd
### Cria complexo para solvatação (passo redundante, mas OK)
solvcomplex= combine { REC LIG }
### solvatação do sistema
solvateoct solvcomplex TIP3PBOX 12.0
### neutralização do sistema (adiciona Na ou Cl dependendo da carga)
addions solvcomplex Cl- 0
addions solvcomplex Na+ 0
### escrever arquivo PDB com estrutura solvatada
savepdb solvcomplex ${PDB}.com.solv.pdb
### Verificar o sistema
charge solvcomplex
check solvcomplex
### Escrever arquivos de topologia e coordenadas
saveamberparm solvcomplex ${PDB}.com.solv.prmtop ${PDB}.com.solv.inpcrd
quit

e executamos o comando tleap -f ${PDB}.leap.in para criar dois arquivos, ${PDB}.com.solv.prmtop e ${PDB}.com.solv.inpcrd. Esses são os arquivos de entrada para simulações de dinâmica molecular nos programas sander e pmemd, do pacote Amber. Não é o nosso caso. Para criarmos as coordenadas e topologias legíveis pelo Gromacs, usamos o script amber_to_gmx.py:

python amber_to_gmx.py -p ${PDB}.com.solv.prmtop -c ${PDB}.com.solv.inpcrd

que criará os arquivos ${PDB}.top e ${PDB}.gro que podem ser usados pelo GROMACS.


Detalhes antes da simulação de dinâmica molecular

A geração de dados de Dinâmica Molecular não é imediata: como a estrutura é obtida a partir do resultado de um experimento de cristalografia de raios-X, precisamos relaxar a estrutura para que ela assuma uma configuração condizente com as condições desejadas.

São pelo menos três os estágios para a produção de uma boa trajetória de dinâmica molecular:

Minimização

A energia em função das coordenadas atômicas no sistema é minimizada de forma a reduzir efeitos energéticos indesejáveis de impedimentos estéreos. Sem minimização, simulações de dinâmica molecular podem dar errado (“explodir”/”blow up”) devido a forças elevadas que poderiam ter sido atenuadas com a minimização.

Para fazer a minimização, digite no terminal:

gmx grompp -f minimization.mdp -c solute_in_solvent.gro -p solute_in_solvent.top -o minimization.tpr
gmx mdrun -deffnm minimization

O primeiro comando organiza a simulação, o segundo faz a dinâmica molecular ou a minimização rodar no seu computador. A flag -f indica o arquivo .mdp, -c indica o arquivo .gro e -p indica o arquivo .top. O output de interesse para nós é minimization.gro (nomeado pela flag -deffnm), que contém a estrutura minimizada do sistema de interesse. -o é o output com o sistema pronto para o programa mdrun.

Equilibração

Após a minimização a energia se encontra em um mínimo e o sistema não necessariamente se encontra em uma configuração representativa. Além disso, em dinâmica molecular, estamos interessados em propriedades de ensemble e, mesmo se a configuração inicial fosse quimicamente relevante, ela não teria o devido valor estatístico.

São três os estágios de equilibração:

  • Equilibração de temperatura: equil_nvt.mdp define o estágio de equilibração da temperatura. Essa etapa é necessária porque a estrutura minimizada corresponderia ao sistema na temperatura de $0 \text{kelvin}$. Além disso, é no início desta etapa que velocidades são atribuídas a cada átomo, o que é imprescindível para a simulação. Para rodar esse estágio, lembre-se que a estrutura de partida está definida no output da minimização:
gmx grompp -f equil_nvt.mdp -c minimization.gro -p solute_in_solvent.top -o equil_nvt.tpr
gmx mdrun -deffnm equil_nvt
  • Equilibração de pressão 1: equil_npt.mdp define o primeiro estágio de equilibração da pressão. São necessários dois estágios porque o barostato de Berendsen usado neste estágio, ajuda a caixa de simulação ficar com um volume adequado, mas não produz um ensemble isotérmico-isobárico adequado. Para isso necessitamos de um segundo estágio de equilibração da pressão. Para isso, usamos o arquivo .gro produzido pela etapa de equilíbrio da temperatura, pois cada átomo além de conter suas coordenadas atômicas, também tem as componentes de sua velocidade em uma temperatura adequada:
gmx grompp -f equil_npt.mdp -c equil_nvt.gro -p solute_in_solvent.top -o equil_npt.tpr
gmx mdrun -deffnm equil_npt
  • Equilibração de pressão 2: equil_npt2.mdp define o segundo estágio de equilibração da pressão. Neste estágio, usamos o barostato de Parrinello-Rahman, que produz um ensemble isotérmico-isobárico adequado. A diferença entre o estágio anterior e este é que o comprimento dos lados da caixa podem variar de forma independente, enquanto isso não era o caso do estágio anterior. Para obter os resultados:
gmx grompp -f equil_npt2.mdp -c equil_npt.gro -p solute_in_solvent.top -o equil_npt2.tpr
gmx mdrun -deffnm equil_npt2

Produção

O estágio mais importante de uma simulação de dinâmica molecular é a amostragem das configurações de equilíbrio do sistema. Isso é feito na etapa de produção.prod.mdp define este estágio. A produção é significantemente maior que os demais passos; a amostragem de configurações de moléculas pequenas em água costuma exigir 2500000 passos, implicando em um tempo computacional de algumas horas.

A produção resulta na criação de uma trajetória contendo configurações no ensemble isotérmico-isobárico (NPT) que podem ser usadas para calcular propriedades de equilíbrio do sistema. A simulação é rodada com os seguintes comandos:

gmx grompp -f prod.mdp -c equil_npt2.gro -p solute_in_solvent.top -o prod.tpr
gmx mdrun -deffnm prod

Todos os dados da trajetória estão armazenados em arquivos .trr e .xtc que podem ser analisados com outros programas incluídos no GROMACS. Energias e outras grandezas físicas podem ser retiradas de arquivos .edr.

A dinâmica molecular no GROMACS necessita de arquivos .mdp contendo as instruções para a simulação.

Sistemas contendo proteínas

No caso de simulações contendo proteínas e ligantes, alguns cuidados a mais devem ser tomados.

O primeiro estágio da equilibração, por exemplo, exige que a proteína e o ligante tenham restrições de movimento para que as moléculas de água que envelopam o sistema se assentem. O GROMACS exige que essas restrições sejam incluídas nos arquivos .top após a definição dos últimos parâmetros de campo de força de cada molécula. A diretiva:

#ifdef POSRES
#include "${nome_do_arquivo_de_restrição}.itp"
#endif

normalmente é incluída no final da definição de cada espécie, antes da nova seção moleculetype das topologias. Para criar os arquivos .itp, executamos o seguinte programa do pacote GROMACS:

gmx genrestr -f ${PDB}.gro -o posres.itp 

É costume selecionar a opção Protein-H, isto é, todos os átomos da proteína que não sejam hidrogênio. Para fazer o mesmo com o ligante é necessário primeiramente criar um arquivo de índice que indica somente os átomos que não são hidrogênio:

gmx make_ndx -f ${PDB}.gro -o index_lig.ndx

No programa gmx make_ndx você escolhe a opção do ligante:

> ${número do ligante} & ! a H*
> q

onde ${número do ligante} é uma das opções impressas na tela. Esse comando selecionará somente os átomos que não sejam hidrogênio do ligante e os distinguirá no arquivo index_lig.ndx. Você pode criar as restrições para esses átomos usando o gmx genrestr:

gmx genrestr -f ${PDB}.gro -n index_lig.ndx -o posre_lig.itp

selecionando a opção que você gerou (algo como LIG_&_!H*. Isso gerará o arquivo desejado. Caso haja cofatores, é possível considerá-los parte da proteína, basta fazer as modificações textuais adequadas nos arquivos .ndx gerados.

Importante!

Os arquivos .itp precisam ser numerados a partir de 1 e não do número do .gro do sistema. Isso deve ser modificado para que a simulação rode. Você deve gerar um arquivo .gro (use gmx trjconv com o .gro e um .tpr) contendo somente a molécula de interesse e usar gmx genrestr para gerar o arquivo .itp da forma correta. Se for uma subestrutura da proteína, às vezes pode ser necessário renumerar usando um script de python específico.

Apagar isso depois de escrever o script:
- Subtrair (primeiro_valor - 1) de todos os números da primeira coluna
do arquivo `.itp`, onde primeiro_valor é o número do primeiro átomo.

Rodando uma dinâmica molecular

Tendo os arquivos .gro e .top você pode rodar as simulações de dinâmica molecular usando os comandos mostrados na sessão anterior. Todos os detalhes da dinâmica estão contidos nos arquivos .mdp. Na minimização, por exemplo:

; Parametros sobre o que fazer, quando parar e o que salvar
integrator      = steep         ; Algoritmo de minimizacao Steepest Descent)
emtol           = 1000.0        ; Parar minimizacao quando F < 10.0 kJ/mol
emstep          = 0.01          ; Tamanho do passo na minimização
nsteps          = 50000         ; Número máximo de passos de minimização

; Parametros descrevendo como achar atomos vizinhos e como calcular suas interacoes
nstlist         = 1             ; Frequencia de atualizacao da lista de vizinhos
cutoff-scheme   = Verlet
ns_type         = grid          ; Metodo para determinar a lista de vizinhos (simple, grid)
rlist           = 1.2           ; Cut-off para fazera lista de vizinhos (forcas de curto alcance)
coulombtype     = PME           ; Tratamento de interacoes eletrostaticas de longo alcance
rcoulomb        = 1.2           ; Cut-off de longo alcance eletrostatico
vdwtype         = cutoff
vdw-modifier    = force-switch
rvdw-switch     = 1.0
rvdw            = 1.2           ; Cut-off de longo alcance de van der Waals
pbc             = xyz           ; Periodic Boundary Conditions
DispCorr        = AllEnerPres  ; correcao de dispersão

Na equilibração NVT:

;protein-ligand complex NVT equilibration
define                  = -DPOSRES -DPOSRES_LIG ; position restrain the protein and ligand
; Run parameters
integrator              = sd        ; integrador de Langevin
nsteps                  = 50000     ; 2 * 50000 = 100 ps
dt                      = 0.002     ; 2 fs
; Output control
nstenergy               = 1000   ; salvar energias a cada 2.0 ps
nstlog                  = 1000   ; atualizar log a cada 2.0 ps
nstxout-compressed      = 1000   ; salvar coordenadas a cada 2.0 ps
; Bond parameters
continuation            = no        ; Como e primeira dinamica, nao e continuacao
constraint_algorithm    = lincs     ; restricoes holonomicas
constraints             = hbonds    ; ligacoes com o H devem ser restringidas
lincs_iter              = 1         ; precisao do LINCS
lincs_order             = 4         ; parametro do LINCS
; Neighbor searching and vdW
cutoff-scheme           = Verlet
ns_type                 = grid      ; Metodo para determinar a lista de vizinhos (simple, grid)
nstlist                 = 20        ; 
rlist                   = 1.2
vdwtype                 = cutoff
vdw-modifier            = force-switch
rvdw-switch             = 1.0
rvdw                    = 1.2       ; Cut-off de curto alcance de vdW
; Electrostatics
coulombtype             = PME       ; Particle Mesh Ewald para eletrostatica de longo alcance
rcoulomb                = 1.2       ; Cut-off eletrostatico de curto alcance (in nm)
pme_order               = 4         ; interpolacao cubica
fourierspacing          = 0.16      ; espacamento do grid para FFT (Fast Fourier Transform)
; Temperature coupling
tcoupl                  = no        ; Langevin dynamics demanda acoplamento com termostato
tc-grps                 = System    ; nao necessario
tau_t                   = 2.0       ; constante de tempo em ps
ref_t                   = 298.15    ; temperatura de referencia em K
; Pressure coupling
pcoupl                  = no        ; sem barostato em NVT
; Periodic boundary conditions
pbc                     = xyz       ; PBC em tres dimensoes
DispCorr                = AllEnerPres
; Velocity generation
gen_vel                 = yes       ; velocidades iniciais oriundas da distribuicao de Maxwell-Boltzmann
gen_temp                = 298.15    ; Temperatura para a distribuicao de Maxwell
gen_seed                = -1        ; semente aleatoria gerada pelo programa

Na equilibração NPT:

define                  = -DPOSRES -DPOSRES_LIG
; Run parameters
integrator              = sd        ; Integrador de Langevin
nsteps                  = 50000     ; 2 * 50000 = 100 ps
dt                      = 0.002     ; 2 fs
; Output control
nstenergy               = 1000
nstlog                  = 1000
nstxout-compressed      = 1000
; Bond parameters
continuation            = yes       ; continuação do NVT
constraint_algorithm    = lincs
constraints             = hbonds
lincs_iter              = 1
lincs_order             = 4
; Neighbor searching and vdW
cutoff-scheme           = Verlet
ns_type                 = grid
nstlist                 = 20
rlist                   = 1.2
vdwtype                 = cutoff
vdw-modifier            = force-switch
rvdw-switch             = 1.0
rvdw                    = 1.2
; Electrostatics
coulombtype             = PME
rcoulomb                = 1.2
pme_order               = 4
fourierspacing          = 0.16
; Temperature coupling
tcoupl                  = no
tc-grps                 = System
tau_t                   = 2.0
ref_t                   = 298.15
; Pressure coupling
pcoupl                  = Berendsen    ; algoritmo do barostato para NPT
pcoupltype              = isotropic    ; caixa de simulacao varia uniformemente
tau_p                   = 2.0          ; constante de tempo
ref_p                   = 1.0          ; pressao de referencia em bar
compressibility         = 4.5e-5       ; compressibilidade isotermica da agua, bar^-1
refcoord_scaling        = com
; Periodic boundary conditions
pbc                     = xyz       ; 3-D PBC
DispCorr                = AllEnerPres
; Velocity generation
gen_vel                 = no        ; usar velocidades geradas da etapa NVT
ld_seed                 = -1

Na equilibração NPT2:

define                  = -DPOSRES -DPOSRES_LIG
; Run parameters
integrator              = sd        ; Integrador de Langevin
nsteps                  = 50000     ; 2 * 50000 = 100 ps
dt                      = 0.002     ; 2 fs
; Output control
nstenergy               = 1000
nstlog                  = 1000
nstxout-compressed      = 1000
; Bond parameters
continuation            = yes       ; continuação do NPT
constraint_algorithm    = lincs
constraints             = hbonds
lincs_iter              = 1
lincs_order             = 4
; Neighbor searching and vdW
cutoff-scheme           = Verlet
ns_type                 = grid
nstlist                 = 20
rlist                   = 1.2
vdwtype                 = cutoff
vdw-modifier            = force-switch
rvdw-switch             = 1.0
rvdw                    = 1.2
; Electrostatics
coulombtype             = PME
rcoulomb                = 1.2
pme_order               = 4
fourierspacing          = 0.16
; Temperature coupling
tcoupl                  = no
tc-grps                 = System
tau_t                   = 2.0
ref_t                   = 298.15
; Pressure coupling
pcoupl                  = Parrinello-Rahman    ; algoritmo do barostato para NPT
pcoupltype              = isotropic            ; caixa de simulacao varia uniformemente
tau_p                   = 5.0                  ; constante de tempo
ref_p                   = 1.0                  ; pressao de referencia em bar
compressibility         = 4.5e-5               ; compressibilidade isotermica da agua, bar^-1
refcoord_scaling        = com                  ; permite o uso de restricoes de posicao com o barostato
; Periodic boundary conditions
pbc                     = xyz       ; 3-D PBC
DispCorr                = AllEnerPres
; Velocity generation
gen_vel                 = no        ; usar velocidades geradas da etapa NPT

Às vezes compensa rodar uma etapa de equilibração NPT3 em que as cadeias laterais dos resíduos possam se mover e acomodar melhor ao redor do ligante. Um arquivo backbone.itp deve ser criado antes disso:

define                  = -DBACKBONE -DPOSRES_LIG
; Run parameters
integrator              = sd        ; Integrador de Langevin
nsteps                  = 50000     ; 2 * 50000 = 100 ps
nstenergy               = 1000
nstlog                  = 1000
nstxout-compressed      = 1000
; Bond parameters
continuation            = yes       ; continuação do NPT
constraint_algorithm    = lincs
constraints             = hbonds
lincs_iter              = 1
lincs_order             = 4
; Neighbor searching and vdW
cutoff-scheme           = Verlet
ns_type                 = grid
nstlist                 = 20
rlist                   = 1.2
vdwtype                 = cutoff
vdw-modifier            = force-switch
rvdw-switch             = 1.0
rvdw                    = 1.2
; Electrostatics
coulombtype             = PME
rcoulomb                = 1.2
pme_order               = 4
fourierspacing          = 0.16
; Temperature coupling
tcoupl                  = no
tc-grps                 = System
tau_t                   = 2.0
ref_t                   = 298.15
; Pressure coupling
pcoupl                  = Parrinello-Rahman    ; algoritmo do barostato para NPT
pcoupltype              = isotropic            ; caixa de simulacao varia uniformemente
tau_p                   = 5.0                  ; constante de tempo
ref_p                   = 1.0                  ; pressao de referencia em bar
compressibility         = 4.5e-5               ; compressibilidade isotermica da agua, bar^-1
refcoord_scaling        = com                  ; permite o uso de restricoes de posicao com o barostato
; Periodic boundary conditions
pbc                     = xyz       ; 3-D PBC
DispCorr                = AllEnerPres
; Velocity generation
gen_vel                 = no        ; usar velocidades geradas da etapa NPT

Por último, temos a etapa de produção, que tem os mesmos parâmetros da etapa de equilibração NPT2, mas nenhuma restrição aplicada no sistema.

; Run parameters
integrator              = sd        ; Integrador de Langevin
nsteps                  = 5000000   ; 10 ns
dt                      = 0.002     ; 2 fs
; Output control
nstenergy               = 1000
nstlog                  = 1000
nstxout-compressed      = 1000
; Bond parameters
continuation            = yes       ; continuação do NPT
constraint_algorithm    = lincs
constraints             = hbonds
lincs_iter              = 1
lincs_order             = 4
; Neighbor searching and vdW
cutoff-scheme           = Verlet
ns_type                 = grid
nstlist                 = 20
rlist                   = 1.2
vdwtype                 = cutoff
vdw-modifier            = force-switch
rvdw-switch             = 1.0
rvdw                    = 1.2
; Electrostatics
coulombtype             = PME
rcoulomb                = 1.2
pme_order               = 4
fourierspacing          = 0.16
; Temperature coupling
tcoupl                  = no
tc-grps                 = System
tau_t                   = 2.0
ref_t                   = 298.15
; Pressure coupling
pcoupl                  = Parrinello-Rahman    ; algoritmo do barostato para NPT
pcoupltype              = isotropic            ; caixa de simulacao varia uniformemente
tau_p                   = 5.0                  ; constante de tempo
ref_p                   = 1.0                  ; pressao de referencia em bar
compressibility         = 4.5e-5               ; compressibilidade isotermica da agua, bar^-1
refcoord_scaling        = com                  ; permite o uso de restricoes de posicao com o barostato
; Periodic boundary conditions
pbc                     = xyz                  ; 3-D PBC
DispCorr                = AllEnerPres
; Velocity generation
gen_vel                 = no                   ; usar velocidades geradas da etapa NPT