大量の fastq をトリミング "Trimmomatic"
大量の fastq をトリミングしたかったので。 以下のように、fastq データがあるときに while read で2行ずつ読み込んで処理する方法。
$ find | grep fastq.gz RUN001_1.fastq.gz RUN001_2.fastq.gz RUN002_1.fastq.gz RUN002_2.fastq.gz RUN003_1.fastq.gz RUN003_2.fastq.gz ...
以下に示す、loop_trimming.sh, trimming.sh を用意して、
パイプして実行する。
$ find | grep fastq.gz | loop_trimming.sh
trimming.sh
#!/bin/bash CMDNAME=`basename $0` while getopts i:j: OPT do case $OPT in "i" ) FLG_A="TRUE" ; INPUT1="$OPTARG";; "j" ) FLG_B="TRUE" ; INPUT2="$OPTARG" ;; * ) echo "Usage: $CMDNAME [-i INPUT1.fastq(.gz)] [-j INPUT2.fastq(.gz)] " 1>&2 exit 1 ;; esac done trimmed1=`echo $INPUT1 | sed s/.fastq.gz/_trimmed.fastq.gz/ ` trimmed2=`echo $INPUT2 | sed s/.fastq.gz/_trimmed.fastq.gz/ ` unpared1=`echo $INPUT1 | sed s/.fastq.gz/_unpaired.fastq.gz/ ` unpared2=`echo $INPUT2 | sed s/.fastq.gz/_unpaired.fastq.gz/ ` echo $INPUT1 $trimmed1 $unpared1 echo $INPUT2 $trimmed2 $unpared2 java -jar trimmomatic-0.36.jar \ PE \ -threads 1 \ $INPUT1 \ $INPUT2 \ $trimmed1 \ $trimmed2 \ $unpared1 \ $unpared2 \ ILLUMINACLIP:adapters.fa:2:30:10 \ LEADING:20 \ TRAILING:20 \ SLIDINGWINDOW:4:15 \ MINLEN:36
loop_trimming.sh
#!/bin/bash while true do read line1 read line2 if [ -z "$line1" ] ; then break ; fi bash trimming.sh -i $line1 -j $line2 done