我想使用trimmomatic http://www.usadellab.org/cms/?page=trimmomatic从配对末端Illumina转录组数据中删除已知的适配器序列。
我可以为一组配对读取运行程序。但是,我真的想运行一个命令,该命令将在给定目录中的多个配对读取上运行。
我目录中的文件采用以下格式
运行number_unique identifier_fwd或rev(其中1 = fwd和2 = rev).fastq.gz
1_EupS0510_1.fastq.gz
1_EupS0510_2.fastq.gz
1_EupS0675_1.fastq.gz
1_EupS0675_2.fastq.gz
1_EupM0685_1.fastq.gz
1_EupM0685_2.fastq.gz
1_Ela319_1.fastq.gz
1_Ela319_2.fastq.gz
1_EupAx10439_1.fastq.gz
1_EupAx10439_2.fastq.gz
1_EupTT12454_1.fastq.gz
1_EupTT12454_2.fastq.gz
2_EupS0510_1.fastq.gz
2_EupS0510_2.fastq.gz
2_EupS0675_1.fastq.gz
2_EupS0675_2.fastq.gz
2_EupM0685_1.fastq.gz
2_EupM0685_2.fastq.gz
2_Ela319_1.fastq.gz
2_Ela319_2.fastq.gz
2_EupAx10439_1.fastq.gz
2_EupAx10439_2.fastq.gz
2_EupTT12454_1.fastq.gz
2_EupTT12454_2.fastq.gz
要对与1_EupS0510_1.fastq.gz和1_EupS0510_2.fastq.gz对应的配对读数运行trimmomatic,以下命令有效:
java -jar /local/software/trimmomatic/0.32/trimmomatic-0.32.jar PE -phred33 1_SiMM0510_1.fastq.gz 1_SiMM0510_2.fastq.gz paired.output_1_SiMM0510_1.fastq.gz unpaired.output_1_SiMM0510_1.fastq.gz paired.output_1_SiMM0510_2.fastq.gz unpaired.output_1_SiMM0510_2.fastq.gz ILLUMINACLIP:TruSeqAdapters.fst:2:30:10
这只是遵循trimmomatic提供的框架
java -jar <path to trimmomatic.jar> PE [-phred33 | -phred64] <input 1> <input 2> <paired output 1> <unpaired output 1> <paired output 2> <unpaired output 2> <step 1>
我不知道如何创建一个循环函数,它可以为给定目录中的所有文件重复命令,同时维护成对结束读取之间的链接。
如果有人会有任何建议,那将是非常有帮助的
答案 0 :(得分:3)
#!/bin/bash
for f1 in *_1.fastq.gz
do
f2=${f1%%_1.fastq.gz}"_2.fastq.gz"
java -jar ...stuff... $f1 $f2 ...moreFiles...
done
您也可以剥离_1.fastq.gz并将其用作其他所有内容的基本名称,就像我上面为f2
所做的那样。