在多个Illumina配对端读取文件上使用trimmomatic

时间:2015-03-27 17:05:39

标签: for-loop bioinformatics

我想使用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>

我不知道如何创建一个循环函数,它可以为给定目录中的所有文件重复命令,同时维护成对结束读取之间的链接。

如果有人会有任何建议,那将是非常有帮助的

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所做的那样。