[bioinfo]nanopore sequencing のbasecallがリアルタイムで可能なマシンを作る。
Oxford Nanopore社のMinIONシークエンサーは手軽さが売りで、ひとまず20万円ほどだせばシークエンスをすることができます。ただし、本格的にシークエンスをやろうとすると問題はベースコールです。CPU性能が高いPCでもMinIONでフルにデータを取ると、シークエンス自体が終了した後もベースコールが終わるまでかなりの時間がかかります。もしかすると、30万円でMinITを買うというのがスマートなやり方なのかもしれませんが、腕に自信がある人なら自作で済ませたいと思うはずです。
結論から言うとと、MinION程度のスループットのデータをリアルタイムでベースコールできるマシンは適当なマルチコアCPUを搭載したPCに1TB SSD、メモリが大きめのグラフィックカードを組み込むことで実現可能。パソコンは拾ってきたようなものでも問題なく動くので、実質10万円もあればコンスタントにシークエンスできる環境が整います。
以下に私の個人的な経緯を記します。
以前から実験台に拾ってきた適当なPC(Fujitsu ESPRIMO D583/HX / Intel Core i5 4570 / RAM 16GB) を置いてnanopore sequencingを行っていましたが、頻繁にシークエンスをやっていると毎回データを取り出してGPUを積んだワークステーションで後からベースコールするのが面倒になってきました。そこで、このPCにもグラフィックカードを導入して、リアルタイムでシークエンスができるようにしました。
Nanopore社のページによれば、4GBに満たないメモリしか搭載していないグラフィックカードは用を成さないとのこと。また、ESPRIMOは筐体のサイズの関係で2つのソケットを占有するようなカードは導入できないので、今回はNvidiaのQuadro P2200を購入しました。このカードのスペックはよくわかりませんが、値段は5万円程度でおそらく、cudaによる計算を行うには最低レベルのボードだと思われます。RAMは5GB搭載しています。
購入して早速ボードをマザーボードに挿入しようとしたところ、なんとD583/HXは標準ではPCI Express 3.0×16のインターフェースのあるライザーカードが入っていないことが判明。中古でPCIソケットのついたものをオークションで私費購入し、ようやく取り付けることができました。
OSはUbuntu 20.04をハードディスクにインストールし、SSDは完全にデータ用としました。MinKNOWはNanoporeの公式サイトにはfocalのリポジトリについては、書かれていませんが、実際はすでにリリースされているのでbonicのところを変えるだけで最新版がインストールされます。次にGPU版Guppyの最新版をダウンロードし、homeフォルダなどに解凍します。また、公式サイトの説明にしたがって、/opt/ont/minknow/conf/app_confの内容を変更します。
ここまでは順調に進みますが、MinKNOWはユーザー権限ではなくminknowというユーザーで実行されるため、このままではMinKNOW GUIから、GPUを利用してリアルタイムにベールコールすることができません(guppy serverが立ち上がらずに、自動的にCPU版になってしまう)。そこで、minknowをグループに追加し、フォルダやファイルの閲覧変更権限を与えます。そうすると、guppy serverが立ち上がり、MinKNOWからguppy cliantとしてguppy serverに接続する形でベースコールが可能になります。
P2200はメモリが限られていますので、runner per deviseやnumber of chunksはあまり大きな数はできませんが、runner per devise=20、number of chunks=128ぐらいまでは実行可能です。また、気を付けたい点として、serverとclientのモデルデータを統一しないとguppyが落ちます。flowcellのバージョンが9.4.1で取得した場合は、serverもclientも9.4.1に設定しなければなりません。間違ったモデルでベースコール行うとpassのデータが極端に少なくなります。