私は一般的にLinuxに初めてアクセスし、誰かが私を助けることができることを願っていました。
4つの異なるシーケンスレーンでfastq.gzファイルをマージしたいと思います。各ファイルには次の名前があります。サンプル名、レーン(1〜4)参照、順方向または逆GC082_F4.lane1.1901.R1.fastq.gz
方向読み取り参照(「R1」は逆方向、「R2」は順方向)。GC082_F4
laneX
R1
サンプルごとに4つの異なるチャンネルのファイルをリンクし、それぞれ順方向読み取り(R1)と逆方向読み取り(R2)に使用したいと思います。したがって、この特定の例では次のようになります。
渡される内容は次のとおりです。
cat GC082_F4.lane1.1901.R1.fastq.gz \
GC082_F4.lane2.1901.R1.fastq.gz GC082_F4.lane3.1901.R1.fastq.gz \
GC082_F4.lane4.1901.R1.fastq.gz > GC082_F4.R1.fastq.gz
逆さまに読んでください:
cat GC082_F4.lane1.1901.R2.fastq.gz \
GC082_F4.lane2.1901.R2.fastq.gz GC082_F4.lane3.1901.R2.fastq.gz \
GC082_F4.lane4.1901.R2.fastq.gz > GC082_F4.R2.fastq.gz
しかし、+100個のサンプルに対してこれを行う必要があるので、これを達成するためにループを使用できるかどうか疑問に思います。
よろしくお願いします!
ベストアンサー1
ファイルの一意の部分を識別して分類します。
cat GC082_F4.*.R1.fastq.gz > GC082_F4_R1.fastq.gz
cat GC082_F4.*.R2.fastq.gz > GC082_F4_R2.fastq.gz
したがって、サンプルが複数ある場合は、次のことができます。
for sample in GC082_F4 GC083_F4 GC084_F4 GC085_F4 ... GC0NN_F4; do
cat "$sample".*.R1.fastq.gz > "$sample"_R1.fastq.gz
cat "$sample".*.R2.fastq.gz > "$sample"_R2.fastq.gz
done
例名のリストを入力として提供することもできます。
while read sample; do
cat "$sample".*.R1.fastq.gz > "$sample"_R1.fastq.gz
cat "$sample".*.R2.fastq.gz > "$sample"_R2.fastq.gz
done < sample.names.txt