如何用循环批量运行bbmap的reformat.sh处理双端测序数据?
批量处理双端测序数据的reformat.sh脚本实现
前提准备
先确保输出目录存在,避免执行命令时报错:
mkdir -p ./reformat
批量处理脚本
直接在测序文件所在目录执行以下bash循环,即可自动处理所有R1/R2配对文件:
for r1 in *R1_001.fastq.gz; do # 匹配对应的R2反向读段文件 r2="${r1/R1/R2}" # 构造带reformatted后缀的输出文件名 out_r1="./reformat/${r1%.fastq.gz}_reformatted.fastq.gz" out_r2="./reformat/${r2%.fastq.gz}_reformatted.fastq.gz" # 执行reformat.sh质量值修正命令 reformat.sh in="$r1" in2="$r2" out="$out_r1" out2="$out_r2" mincalledquality=2 maxcalledquality=41 qin=33 done
逻辑说明
- 循环遍历所有以
R1_001.fastq.gz结尾的正向读段文件 - 通过字符串替换
${r1/R1/R2}自动匹配对应的反向读段R2文件 - 利用
${r1%.fastq.gz}截取原文件名(去掉.fastq.gz后缀),拼接_reformatted.fastq.gz生成最终输出文件名 - 处理后的文件会自动保存到预先创建的
./reformat目录下
注意事项
- 确保当前终端工作目录是测序文件所在的文件夹
- 如果
reformat.sh不在系统环境变量PATH中,需要替换为脚本的完整路径(例如/opt/bbmap/reformat.sh)
内容的提问来源于stack exchange,提问作者nomad
相关产品推荐
相关产品推荐

