kuroの覚え書き

96の個人的覚え書き

RNA-seqのデータ処理自動化

自動化される手順

  • FastQCでクオリティーチェック→トリミングのためのパラメータを決める(ただし今回は機械的に連続処理してしまう)
  • fastq_quality_trimmerでトリミング

    #パラメータは切り取るクオリティスコアとフラグメント長

  • トリミング後のクオリティーチェック

スクリプト名:fastqc_trim_qc

使い方

  • 処理したいfastqファイルのおいてあるディレクトリに移動
  • 処理したいファイルから.fastqを除いた名前を以下のように列記して実行する
$ fastqc_trim_qc (処理したいfastqファイル名1) (処理したいfastqファイル名2) (処理したいfastqファイル名3) 何個でも

スクリプト中身

#!/bin/sh
for file in "$@"
do
#出力するディレクトリを作成
mkdir -p ./FastQC/trim
      #-pオプションはディレクトリが無いときだけ作成する

#FastQCにかける
fastqc --nogroup -o ./FastQC "$file".fastq
      #--nogroup オプションを付けると「ポジションごとのクオリティスコア分布図」で、ポジション10bp以降の領域がグループ化されない
#Phred quality score "qscore"未満の末端を除去
    qscore=20
#配列長が"length"bp未満のリードを除去
    length=50

fastq_quality_trimmer -Q33 -t "$qscore" -l "$length" -i "$file".fastq -o "$file"_trim.fastq

#FastQCにかける
fastqc --nogroup -o ./FastQC/trim "$file"_trim.fastq
done


実験によってはパラメータを変更したり、他の処理を併用する必要がある
fastq_quality_filter
fastx_trimmer
ほか

#Phred quality score "qscore"未満がconc%以上のリードを除去
#Phred quality score "qscore"未満の末端を除去
    qscore=20
    conc=80
#配列長が"length"bp未満のリードを除去
    length=30

fastq_quality_filter -Q33 -q "$qscore" -p "$conc"  -i "$file".fastq | fastq_quality_trimmer -Q33 -t "$qscore" -l "$length" -o "$file"_trim.fastq

parallelを使って並列処理するなら

$ parallel fastqc_trim_qc ::: (処理したいfastqファイル名1) (処理したいfastqファイル名2) (処理したいfastqファイル名3) 何個でも

#この並列処理は途中経過が見えにくいけど、かなり強力。おすすめ。
#parallele使うならforループはいらないかもしれないが、あっても誤動作はしない。


パラメーターは別ファイル(例えばqscore.txt)に書いておいて

qscore='cat qscore.txt'

と読み込むのもありかも知れない。

また、バッチ処理向きではないがreadを使えば

#Phred quality score "qscore"未満の末端を除去
read -p "minimum Phred quality score = " qscore
#配列長が"length"bp未満のリードを除去
read -p "minimum base length = " length

と対話的に指定することもできるかな