我从24个样本中读取了96个*fastqc.gz原始文件。每对样品分别在两根羊皮上进行测序。
我希望将来自两个车道的每一对读取合并为一个输出文件,其中包含来自示例文件名(2271_merged_R1_001.fastq.gz)的同名标识符。
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**
我尝试了下面的简短脚本,但是只生成了两个输出文件(第一个和最后一个)。
对于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.输出文件中的读取数不是来自两个通道的合并文件的总和。3.有一个好的方法吗?我可以一步合并两条车道的读取(R1和R2),而不是对每种读取类型运行两次。
密码出了什么问题?如何验证输出文件是否已完全合并?
谢谢
发布于 2018-04-25 16:02:09
首先,22[71-94]*R1_001.fastq.gz
没有扩展到您认为它扩展到的
这是有效的22[1-9]*R1_001.fastq.gz
-在这个,是一个字符分组,其中"7或1至9或4“简化为"1至9”。
22{71..94}*R1_001.fastq.gz
很可能是您所寻找的扩展,但是您的循环将对找到的每个文件执行一次zcat
,而不是将所有内容连接在一起。实际上,每个R1
文件都会顺序地将zcat
-ed放入同一个外部文件中,从而覆盖前面的写操作。
我相信这就是你所要寻找的假设(见下文):
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
追加到结果文件。
https://unix.stackexchange.com/questions/440009
复制相似问题