RELION3.1チュートリアル
前書き
- 本ドキュメントは、RELION3.1のチュートリアルを日本語訳し、図や補足説明などを追加して充実化したものです。
- RELION3と共通の部分はRELION3チュートリアルを流用しています。
- 誤訳等がある場合には、ご連絡いただけますと幸いです。少しずつ、良いものにしたいと思います。
- 書き進めてみて気づきましたが、どこまでが本家チュートリアルに書いてあることでどこからが注釈、補足なのか、分かりにくいと思います。あまり良くない気がしているので、随時切り分けを進めます。
- 少なくとも ※ 記号で始まるところは、日本語訳に伴って追加した注釈、補足です。
実行環境
Dockerを使用しています。
Dockerのホストマシン
- Ubuntu 18.04.3 LTS
- 3.2 GHz Intel Core i7-8700 (6core/12thread)
- 64 GB 2133 MHz DDR4
- NVIDIA GeForce RTX2080Ti 11 GB x 2台
- Driverバージョン 430.50
- CUDAバージョン 10.1
Docker
- Docker Engine - Community 19.03.2
- NVIDIA Container Toolkit 1.0.5-1
Dockerイメージ
- CentOS 7
- CUDAバージョン 9.2
- https://github.com/kttn8769/cryoem-docker
RELION
- ver3.1β (commit b86482)
1. What's new in release 3.1? (RELION 3.1の新機能)
1.1 Aberration corrections and optics groups (収差補正とオプティクスグループ)
RELION-3.1で追加された主な新機能の1つとして、データに存在する高次収差の補正があります。RELION-3.0で既に実装されているビームティルト補正に加え、RELION-3.1では3次(trefoil)および4次(tetrafoil)の収差の推定と補正が可能です。また、装置の公称球面収差(nominal Cs)からのズレも推定、補正できます。詳しい話は文献を参照下さい( https://www.biorxiv.org/content/10.1101/798066v1 )。
収差推定に用いる情報は、複数の画像から切り出した単粒子画像達から得ます。ゼルニケ係数の異なる複数のデータセット(※)を合わせて使えるように、RELION-3.1ではオプティクスグループ(optics groups)という新しい概念を導入しました。(※ ゼルニケ係数とは各収差を特徴づける数値のこと。ゼルニケ係数が異なるデータセットは、つまり収差の程度が異なる。) オプティクスグループは、ムービー、画像、または単粒子の情報を記述したSTARファイルの冒頭の data_optics というテーブルで定義されています。data_opticsテーブルに続き、data_movies, data_micrographs もしくは data_particles というテーブルが定義されています。後者のテーブルは既存のRELIONのものと同様ですが、rlnOpticsGroupというカラムが新たに追加されています(このカラムはdata_opticsテーブルにも存在します)。data_opticsテーブルでは、各オプティクスグループごとに、rlnVoltageやrlnSphericalAberrationといった既存のCTFパラメータに加えて、新たに追加されたrlnOddZernikeとrlnEvenZernikeが記述されています。こうすることで、data_movies, data_micrographs, data_particlesにおいて、各データごとにいちいちそれらパラメータを書かなくて済むわけです。
高次収差の推定と補正を行うプログラムは、参照像と単粒子画像(グループ単位)の間の(異方的な)倍率誤差を補正することにも使えます。異方的倍率誤差の補正だけでなく、異なる電顕で収集したデータ同士を一緒に解析する場合にも便利です。
また、RELION-3.1では、2D/3Dクラス分類および3Dリファインメントを行うrelion_refineが、ボックスサイズ(※単粒子画像のピクセル数)およびピクセルサイズの異なる単粒子画像を入力として処理できるようになっています。先程言及した倍率誤差の補正処理が、公称倍率の誤差に由来する小さな倍率誤差の補正を行ってくれます。出力結果のボックスサイズとピクセルサイズは、参照像のものに揃えられます(2Dクラス分類の場合は最初のオプティクスグループに揃えられます)。クラス分類やリファインメントを行う場合は、出力結果のスケールが所望のものになるかどうか確認してから実行しましょう!
古いバージョンのRELIONとRELION-3.1の互換性について
古いバージョンのRELIONにより生成されたSTARファイルを読み込むと、RELION-3.1はそれを自動でRELION-3.1形式のSTARファイルに変換しようとしてくれます。それゆえ、古いバージョンのRELIONプロジェクトをRELION-3.1へ移行することは容易なはずです。ただし、RELION-3.1形式のSTARファイルを古いバージョンのRELIONで読み込むことはできません。そのため、RELION-3.1のプロジェクトを古いバージョンへ戻すことは難しいでしょう。
1.2 The External job-type (Externalジョブタイプ)
RELION-3.1では、新たに追加したExternalジョブタイプより、RELIONのパイプライン内でサードパーティ製のソフトを実行することが可能になりました。使い方の詳細は14.4節を御覧ください。
1.3 Schedules for on-the-fly processing (Schedulesによるon-the-fly処理)
RELION-3.0で提供されていたrelion_it.pyスクリプトは、RELION-3.1ではSchedulesというフレームワークに置き換わりました。SchedulesはRELIONジョブの自動スケジューリングおよび実行をすることができ、独自のGUIインターフェイスを持ちます。使い方の詳細は14.5節を御覧ください。
1.4 General tweaks (その他変更点)
ユーザーエクスペリエンス向上のため、他にもいくつか変更点があります。
- これまでのRELIONパイプラインは、ジョブが完了したかどうか確認するために出力ファイルを調べに行っていました。RELION-3.1では、パイプラインから立ち上げたジョブが正常に終了すると、ジョブディレクトリの中にRELION_EXIT_SUCCESSというファイルを生成します。パイプラインはRELION_EXIT_SUCCESSが存在するか否かを確認するだけで済みますから、これにより後続のジョブの実行が遅いディスクI/Oで邪魔されることがなくなります。
- 同様に、エラーが発生した場合、各プログラムはRELION_EXIT_FAILUREというファイルを生成します。GUI (※RELIONパイプライン)はRELION_EXIT_FAILUREを生成したジョブを認識すると、【Finished jobs】リストにおいてそのジョブを赤字で表示してくれます。もし実際とは異なる認識がされてしまった場合は、【Job actions】プルダウンメニューから"Mark as finished"または"Mark as failed"を選択してジョブのステータスを変更できます。
- 【Job actions】メニューに"Abort running"オプションが追加されました。現在選択されているジョブを停止することができます。これがどうして可能になったかというと、RELIONパイプラインから立ち上げられたすべてのジョブが、RELION_JOB_ABORT_NOWというファイルがジョブディレクトリ内に無いか確認するよう実装されているためです。そのファイルを検出したジョブは計算を途中で中止し、ジョブディレクトリ内にRELION_EXIT_ABORTEDというファイルを生成します。それ故、ユーザーはもはやジョブキューイングシステムやOSを介してプロセスを停止しなくて済むようになりました。中止されたジョブは【Finished jobs】リストに置いて取り消し線付きの赤字で表示されます。
- 以前のRELIONでは、あるジョブがエラーを出して止まったとき、ユーザーが入力パラメータを修正し、それを新しいジョブとして再度実行することが必要でした。また、失敗した古いジョブを手動で消す必要がありました。RELION-3.1では、古いジョブを直接上書きすることが可能です。Linuxでは"Alt + o"のショートカットキー、もしくは【File menu】から"Overwrite continue"オプションを選択することでジョブ上書きが可能です。ジョブ上書きの際、古いrun.outおよびrun.errが削除されることに注意して下さい。
1.5 Tweaks to helical processing (らせん型線維の処理における変更点)
らせん型線維の処理にも、いくつかの新しい機能を追加しました。
- relion_helix_inimodel2dプログラムは、(特にアミロイド線維で)クロスオーバー全長を含む2Dクラスを用いて、線維の初期3D参照像を生成可能です。詳細は14.6.1節を御覧ください。
- 2Dクラス分類において、線維軸方向の並進移動は分子間隔の半分までに制限されます。
- 3Dリファインメントおよび3Dクラス分類において、1番目の投影オイラー角に事前情報(rlnAngleRotPrior)を与えることが可能になりました。NIHのTycko研究室のKent Thurberにより実装されました。