分子動力学でRNAのフォールディングを追跡しようとして失敗した記録
RNAの二次構造予測と言えば、RNAfoldとmfoldがバイオインフォマィテクス業界の鉄板だと思うけど、未だに、こいつらのアルゴリズムを理解してないわたしは、こいつら本当に正しいのか信用できないのだった。というわけで、分子動力学で、RNAの二次構造を見てみる。まぁ、分子動力学なら信用できるかというと、それは分からないが。練習問題として、適当な(pre-)miRNAを使う。MDとRNAfold/mfoldの結果が一致するなら、綺麗なステム・ループ構造が見られるはず。と言いたいけど、実際にフォールディングするまでに、どれくらいの時間かかるのか分からないのが問題。タンパク質の場合ミリ秒〜秒のオーダーでフォールディングすると言われるので、そこまでの計算は、そこらのマシンじゃほぼ無理
具体的なモノとしては、mir-206というのを選んだ。Pax3やPax7の3'-UTR領域をターゲットにして、筋細胞の増殖・分化に関わるらしいけど、今は素性は、特に意味はない
http://www.mirbase.org/cgi-bin/mirna_entry.pl?acc=MI0000490
最初は、pre-miRNA全長(90bp弱)でやろうと思ったら、うちの貧弱なマシンでは、存外計算時間がかかることがわかったので(1nsをやるのに推定一週間以上)、適当に両端をカットして、計算することにした。使用した配列は、AUCCCCAUAUGGAUUACUUUGCUAUGGAAUG。RNAFoldによる予測はこんなん
まず考えないといけないこととして、RNAを構成する原子の初期配置を決める必要がある。タンパクなら、結晶構造がある場合、適当にpdb取ってくればいいのだけど、RNAの場合は、塩基配列から初期位置を適当に決める必要がある。幸い、Ambertoolsのtleap(もしくは、xleap)というのを使えば、それは簡単にできる。Amberは無償では使えない(と思う)けど、Ambertoolsは誰でも、無償で使える。
AmbertoolsはAmberのHPで配布されている。現時点では、Ambertools13が最新らしい
http://ambermd.org/#AmberTools
Ambertoolsをビルドしたら、こんな感じ↓のテキストを書いて、genpdb.inという名前ででも保存してやる
source leaprc.ff99SB mir206=sequence{RA5 RU RC RC RC RC RA RU RA RU RG RG RA RU RU RA RC RU RU RU RG RC RU RA RU RG RG RA RA RU RG3} savepdb mir206 mir206.pdb quit
それで、
tleap -f genpdb.in
とかやって、mir206.pdbができればOK。多分、直線状に塩基が並んでるだけのRNAができてる。pdbが出来れば、あとはGromacs tutorialの
Lysozyme in Water
http://www.bevanlab.biochem.vt.edu/Pages/Personal/justin/gmx-tutorials/lysozyme/
と同じようにやればいいはず(完)
まず、pdb2gmxでtopファイルとか作って、水を入れる。tleapで力場をamber99sbと指定しているので、合わせる
pdb2gmx -ignh -f mir206.pdb -o mir206_unbox.gro -p mir206.top -ff amber99sb -water spce #editconf -bt triclinic -d 0.85 -f mir206_unbox.gro -o mir206_newbox.gro editconf -box 14 10 8 -f mir206_unbox.gro -o mir206_newbox.gro genbox -cp mir206_newbox.gro -cs spc216.gro -o mir206_sol.gro -p mir206.top
適当にtriclinicでbox作ったら、RNAが一直線に並んでるせいで、やたら平べったいボックスができた(14x10x4くらいだった気がする)。何かバランスが悪い気がして、cubicにすると、無駄に水が増えるので、適当にボックスサイズを指定した。あと、系全体を中性にするためにイオンを適当に入れる必要がある。今は、Na+イオンを追加する。これは、一回.tpr作ってgenionコマンドでできる
grompp -p mir206.top -c mir206_sol.gro -f em.mdp -o mir206_sol.tpr echo 3 | genion -neutral -s mir206_sol.tpr -o mir206_all.pdb -pname NA -nname CL -p mir206.top
em.mdpは後で使うエネルギー最小化用のmdpファイルで、多分別に何でもいい。"echo 3 "は今の場合、水の一部をイオンに置き換えることを意味する
ここまで出来たら、あとは適当に.mdpファイルを用意して、以下の計算をやる
(1)エネルギー最小化(em.mdp)
(2)NVT平衡化/加熱(nvt.mdp)
(3)NPT平衡化(npt.mdp)
(4)プロダクションラン(md.mdp)
という4ステップ。mdpファイルは、Lysozyme in Waterに置いてあるmdpファイルを微修正して使った
#Energy minimization grompp -f em.mdp -c mir206_all.pdb -p mir206.top -o mir206_em.tpr mdrun -v -deffnm mir206_em #Heating grompp -f nvt.mdp -c mir206_em.gro -p mir206.top -o mir206_nvt.tpr mdrun -v -deffnm mir206_nvt #Equilibration grompp -f npt.mdp -c mir206_nvt.gro -t mir206_nvt.cpt -p mir206.top -o mir206_npt.tpr mdrun -v -deffnm mir206_npt #Production MD grompp -f md.mdp -c mir206_npt.gro -t mir206_npt.cpt -p mir206.top -o mir206_md.tpr mdrun -v -deffnm mir206_md
で、計算したので、解析しないといけない。とりあえず、見た目で変な計算結果になってないことを確認するのにVMDで眺める。
Download VMD:
http://www.ks.uiuc.edu/Development/Download/download.cgi?PackageName=VMD
特に、何もしなくても、Gromacsの.groフォーマット読んで、.trrファイル読んでアニメーションしたりできる。水分子が邪魔なので、Graphics>Representationsメニューの真ん中あたりで、Selections選んで、Selected Atomsに"nucleic"とか入れてApplyボタン押すと、水とイオンが消える。まぁ、時間が足りないのか、全然フォールディングしてくれてない。
一応、水素結合の解析は、g_hbondコマンドでできるのだけど、今の場合は、見るからにだめっぽい。g_hbondの出力は、極めて不親切なので、hbmap.plとかいうのを使うと、分かりやすい出力に整形してくれる
echo 1 1 | g_hbond -noda -f mir206_md.xtc -s mir206_md.tpr -num hbnum.xvg -dist hbdist.xvg -hbn hbond.ndx -hbm hbmap.xpm perl hbmap.pl -s mir206_all.pdb -map hbmap.xpm -index hbond.ndx
というわけで、全然フォールディングしてくれないのだけど、計算時間が足らないのだとしても、1nsの計算でも半日くらいかかってるので、多少時間を増やしても、どうにもならない気がする。とりあえず、もうちょっとコンパクトな初期構造が欲しいと思って真空中で計算して見ることにした。系を中性にするために、イオンだけは入れておきたいけど、Gromacs付属のgenionは既存の原子をイオンに置き換えるツールなので、tleapでイオンを入れた。こんなん↓
source leaprc.ff99SB mir206=sequence{RA5 RU RC RC RC RC RA RU RA RU RG RG RA RU RU RA RC RU RU RU RG RC RU RA RU RG RG RA RA RU RG3} addions mir206 Na+ 0 savepdb mir206 mir206_amber.pdb quit
tleapでイオンを追加した場合、Gromacsとイオンのresidue name/atom nameが違うので、適当に書き換える必要がある。あとは大体一緒。
tleap -f genpdb.in sed -e 's/Na+ Na+/Na NA/g' mir206_amber.pdb > mir206_gromacs.pdb pdb2gmx -ignh -f mir206_gromacs.pdb -o mir206_unbox.gro -p mir206_vac.top -ff amber99sb -water spce editconf -bt cubic -d 0.85 -f mir206_unbox.gro -o mir206_vac.pdb #Energy minimization grompp -p mir206_vac.top -c mir206_vac.pdb -f em.mdp -o mir206_vac_em.tpr mdrun -v -deffnm mir206_vac_em #Heating grompp -f nvt.mdp -c mir206_vac_em.gro -p mir206_vac.top -o mir206_vac_nvt.tpr mdrun -v -deffnm mir206_vac_nvt #Equilibration grompp -f npt.mdp -c mir206_vac_nvt.gro -t mir206_vac_nvt.cpt -p mir206_vac.top -o mir206_vac_npt.tpr mdrun -v -deffnm mir206_vac_npt
この構造から始めて水を入れて再計算していくといいのかもしれない。一般的によい方法か分からないけど、とりあえず、tleapで生成されるよりコンパクトな初期構造ができれば、必要な水分子が減って計算時間が随分減らせる。tleapが適当にコンパクトな初期構造を生成してくれるようになれば、それが一番だと思う
#Solvation genbox -cp mir206_vac_md.gro -cs spc216.gro -o mir206_vac_sol.pdb -p mir206_vac.top #Energy minimization grompp -p mir206_vac.top -c mir206_vac_sol.pdb -f em.mdp -o mir206_em2.tpr mdrun -v -deffnm mir206_em2 #Heating grompp -f nvt.mdp -c mir206_em2.gro -p mir206_vac.top -o mir206_nvt2.tpr mdrun -v -deffnm mir206_nvt2 #Equilibration grompp -f npt.mdp -c mir206_nvt2.gro -t mir206_nvt2.cpt -p mir206_vac.top -o mir206_npt2.tpr mdrun -v -deffnm mir206_npt2 #Production MD grompp -f md.mdp -c mir206_npt2.gro -t mir206_npt2.cpt -p mir206_vac.top -o mir206_md2.tpr mdrun -v -deffnm mir206_md2
が、計算結果を見ても、全然それらしい水素結合が形成されてる気配はない。
とりあえず、ここまで殆ど何も調べず適当にやったのだけど
Why Can’t We Predict RNA Structure At Atomic Resolution?
http://daslab.stanford.edu/pdf/SripakdeevongBeauchampDas_Chapter_OnlinePDF.pdf
という文書を読むと"No existing algorithm can start with arbitrary RNA sequences and return the precise three-dimensional structures that ensure their biological function"と書いてあって、わたしのやろうとしたことは、現状無理っぽい。
けどまぁ、"In many respects, it now appears that RNA is easier to fold than other biopolymers. For example, unlike proteins, which typically require at least a dozen residues to form well-defined structures, the simplest RNAs with welldefined,recurrent structures are as small as eight residues (Jucker et al. 1996)."とも書いてあって、RNAならタンパクより簡単にフォールディング見れるんじゃねと思ったのは、的外れでもないらしい。ただ、上の計算で使ったRNAは30bpあるし、元のpre-miRNAは90bp近い。これらは、まだでかすぎるのかもしれない。というか、もっと簡単なpolyA/polyT混合した系とかから始めるべきだったかもしれない。。
1996年のJuckerという人たちの論文は
A network of heterogeneous hydrogen bonds in GNRA tetraloops.
http://www.ncbi.nlm.nih.gov/pubmed/9000624
らしい。2000年以降の論文を見ると、10bp前後の長さで計算してることが多いっぽいので、pre-miRNAの計算をやるのは、まだ難易度が高い
一応、使用したem.mdpとmd.mdp。nvt.mdpとnpt.mdpは、md.mdpから大体分かる
em.mdp
integrator = steep ; Algorithm (steep = steepest descent minimization) emtol = 1000.0 ; Stop minimization when the maximum force < 1000.0 kJ/mol/nm emstep = 0.002 ; Energy step size nsteps = 5000 ; Maximum number of (minimization) steps to perform ; Parameters describing how to find the neighbors of each atom and how to calculate the interactions nstlist = 1 ; Frequency to update the neighbor list and long range forces ns_type = grid ; Method to determine neighbor list (simple, grid) rlist = 2.0 ; Cut-off for making neighbor list (short range forces) rcoulomb = 2.0 ; Short-range electrostatic cut-off rvdw = 2.0 ; Short-range Van der Waals cut-off pbc = xyz ; Periodic Boundary Conditions (yes/no)
こっちはmd.mdp
integrator = md ; leap-frog integrator nsteps = 500000 ; 2 * 500000 = 1000 ps, 1 ns dt = 0.002 ; 10 fs ; Output control nstxout = 1000 ; save coordinates every 0.2 ps nstvout = 1000 ; save velocities every 0.2 ps nstenergy = 1000 ; save energies every 0.2 ps nstlog = 1000 ; update log file every 0.2 ps ; Bond parameters continuation = yes ; first dynamics run constraint_algorithm = lincs ; holonomic constraints constraints = all-bonds ; all bonds (even heavy atom-H bonds) constrained lincs_iter = 1 ; accuracy of LINCS lincs_order = 4 ; also related to accuracy ; Neighborsearching ns_type = grid ; search neighboring grid cells nstlist = 5 ; 10 fs rlist = 1.0 ; short-range neighborlist cutoff (in nm) rcoulomb = 1.0 ; short-range electrostatic cutoff (in nm) rvdw = 1.0 ; short-range van der Waals cutoff (in nm) ; Electrostatics coulombtype = PME ; Particle Mesh Ewald for long-range electrostatics pme_order = 4 ; cubic interpolation fourierspacing = 0.16 ; grid spacing for FFT ; Temperature coupling is on tcoupl = V-rescale ; modified Berendsen thermostat tc-grps = RNA Water_and_ions tau_t = 0.1 0.1 ; time constant, in ps ref_t = 300 300 ; reference temperature, one for each group, in K ; Pressure coupling is off pcoupl = Parrinello-Rahman ; Pressure coupling on in NPT pcoupltype = isotropic ; uniform scaling of box vectors tau_p = 2.0 ; time constant, in ps ref_p = 1.0 ; reference pressure, in bar compressibility = 4.5e-5 ; isothermal compressibility of water, bar^-1 ; Periodic boundary conditions pbc = xyz ; 3-D PBC ; Dispersion correction DispCorr = EnerPres ; account for cut-off vdW scheme ; Velocity generation gen_vel = no ; Velocity generation is off