24 個のサンプルから 96 個の *fastqc.gz 生の読み取りファイルがあります。各サンプルは、対当たり2つのレーンで配列決定した。
両方のチャンネルの各ペアから読み取った内容を、サンプルファイル名(2271_merged_R1_001.fastq.gz)と同じ名前識別子を持つ1つの出力ファイルにマージしたいと思います。
File names are in this order:
22[71-94]*R[1-2]_001.fastq.gz;
**2271**_ID890_1_S1_L001_**R1_001.fastq.gz**
**2271**_ID890_1_S1_L002_**R1_001.fastq.gz**
**2271**_ID890_1_S1_L001_**R2_001.fastq.gz**
**2271**_ID890_1_S1_L002_**R2_001.fastq.gz**
次のような短いスクリプトを試しましたが、2つの出力ファイル(最初と最後)のみが生成されました。
R1ファイルの場合
for rf in 22[71-94]*R1_001.fastq.gz; do zcat $rf > 22"${71-94}"_merged_R1_001.fastq.gz ; done
R2ファイルの場合
for rf in 22[71-94]*R2_001.fastq.gz; do zcat $rf > 22"${71-94}"_merged_R2_001.fastq.gz ; done
私の質問は次のとおりです。 1. なぜ 2 つの出力ファイルのみが生成されるのですか? 2.出力ファイルの読み取り数は、2つのチャネルのマージされたファイルの合計ではありません。 3. 各読み取りタイプに対して 2 回実行するのではなく、1 つのステップで 2 つのチャネル (R1 および R2) の読み取りをマージする良い方法はありますか?
コードには何の問題がありますか?出力ファイルが完全にマージされたことをどのように確認できますか?
ありがとう
答え1
まず、22[71-94]*R1_001.fastq.gz
それはあなたが考えるまで拡張されません。
これはうまくいきます22[1-9]*R1_001.fastq.gz
。ここで、[71-94]は、「7 OR 1 to 9 OR 4」が「1 to 9」に縮小される文字群である。
22{71..94}*R1_001.fastq.gz
探している拡張子である可能性が高いですが、zcat
ファイルをリンクするのではなく、見つかった各ファイルに対してループが一度実行されます。実際、各ファイルは同じ出力ファイルにR1
順次書き込まれ、前の書き込みが上書きされます。zcat
私はこれがあなたの家に従って実際に探していると信じています(下記参照)。
for num in {71..94}; do zcat 22"$num"*R1_{L001,L002}.fastq.gz > "22${num}_merged_R1_001.fastq" ; done
仮定:結果を解凍したいので、.gz
それを結果ファイルから削除しました(Patrickが指摘したように)。
それ以外の場合は、結果ファイルzcat
に変更して再度cat
追加します。.gz