はじめに
SRAとはncbi-sraなどで入手できる圧縮されたシーケンサーのデータである。
prefetchなどを用いて最初からfastqにすることもできるようであるが、日本の場合だとDDBJなどから、sraファイルをダウンロードして、fasterq-dump
を利用するケースが多いだろう。
とこらが、ダウンロードしたSRAファイルが壊れていないかどうか調べるのはそれほど簡単ではない。ハッシュ値みたいのも探せばあるのかも知れないがよくわからない。なのでsra-tools公式のコマンドのvdb-validate
を利用する。
vdb-validate
vdb-validate
コマンドはsra-toolsに含まれている。たとえばbiocondaなどでイントールできる。
使い方は簡単である。
vdb-validate SRR8888888.sra
結果のリダイレクト
気をつけなければならないのは、どうやらすべての出力が、標準エラー出力に出るところであり、結果をテキストファイルに保存したいようなときは
vdb-validate SRR8888888.sra 2> result.txt
とする必要がある。時間を記録したい場合は、
time sh -c "vdb-validate *.sra 2> vdb_validate_result.txt"
などとすればよいかも知れない。
time vdb-validate *.sra 2> vdb_validate_result.txt
でも特に問題はないが、この場合は、すべての処理が終わるまでテキストファイルに書き込まれないため、tail vdb_validate_result.txt
などで途中経過をチラット観察することができない。
結果ファイルの確認
うまくいってる場合、大抵の途中経過行は ok が含まれているので
cat vdb_validate_result.txt | grep -v ok
とすれば、だいたいい感じに表示してくれるのではなかろうか。
エラーのサンプル
たとえば、こんなエラーが出る
2019-09-11T16:37:23 vdb-validate.2.9.0 info: Database 'SRR9158298.sra' metadata: md5 ok
2019-09-11T16:37:23 vdb-validate.2.9.0 info: Table 'SEQUENCE' metadata: md5 ok
2019-09-11T16:37:23 vdb-validate.2.9.0 info: Column 'ALTREAD': checksums ok
2019-09-11T16:37:23 vdb-validate.2.9.0 err: binary large object corrupt while validating binary large object within database module - Column 'QUALITY': contains bad data
2019-09-11T16:37:23 vdb-validate.2.9.0 err: binary large object corrupt while validating binary large object within database module - Database 'SRR9158298.sra' check failed