数据清洗—【trim_galore】那些事
Trim Galore是对FastQC和cutadapt的包装。适用于所有高通量测序,包括RRBS(Reduced Representation Bisulfite-Seq )、 Illumina、Nextera和smallRNA测序平台的双端和单端数据。主要功能包括两步:第一步首先去除低质量碱基,然后去除3' 末端的adapter, 如果没有指定具体的adapter,程序会自动检测前1 million的序列,然后对比前12-13bp的序列是否符合以下类型的adapter:
1 Illumina: AGATCGGAAGAGC 2 Small RNA: TGGAATTCTCGG 3 Nextera: CTGTCTCTTATA
一、部分参数说明
1 #–q | ––quality <INT> 2 除了去除接头,同时修剪3‘端低质量的碱基;默认的phred分数为20;对不同的样本处理方式不同; 3 RRBS样本:先修剪3‘末端低质量碱基,随后再去除接头; 4 其他类型样本:低质量碱基和接头一次性处理;
1 #––phred33 2 适用于IlLumina 1.9+:指导cutadapt使用ASCII+33质量分数作为pared分数,默认使用。 3 #--phred64 4 适用于Illumina 1.5: 指导cutadapt使用ASCII+64质量分数作为pared分数
1 #––fastqc 2 当数据修剪完成以后以默认参数运行fastqc再次处理fastq文件 3 #––fastqc_args ”<ARGS>” 4 为fastqc运行提供额外的参数,如果参数多于一个,必须以”arg1 arg2…”的格式。如:––fastqc_args ”--nogroup --outdir /home ”
1 #-a | --adapter <STRING> 2 指定要修剪的接头序列;若没有特别指定,trim_galore将自动检测是否为以下的种类: 3 Illumina通用 4 Nextera转座酶 5 Illumina小RNA接头序列 6 如果在指定的第一个文件的前100万个序列中没有检测到接头或者在一些接头序列之间存在联系,trim_galore会默认使用”--illumina”(如果illuminate adapter是其中的一个选项,否则会默认使用”--nextera”) 7 8 #-a2 | --adapter2 <STRING> 9 为双端测序的第二个读长设置要去除的接头序列;该选项依赖于”--paired”;如果要清洗的文库是smallRNA,则a2会自动使用Illumina系统的small RNA 5’接头(GATCGTCGGACT) 10 11 #--illumina 12 使用illumina通用接头的前13bp作为要去除的接头序列(AGATCGGAAGAGC),而不会默认去检测接头序列的类型 13 14 #--nextera 15 使用Nextera接头的前12bp作为要去除的接头序列(CTGTCTCTTATA),而不会默认去检测接头序列的类型 16 17 #--small_rna 18 使用illumina small RNA 3’接头的前12bp作为要去除的接头序列(TGGAATTCTCGG),而不会默认去检测接头序列的类型。此选项会默认将”--length”值设置为18,如果 smallRNA 文库是双末端的,则 a2 将自动设置为 Illumina small RNA 5' 接头 (GATCGTCGGACT),除非设置-a2的值
1 #-- consider_already_trimmed <INT> 2 设置一个阈值,在接头自动检测的过程中,若没有接头的序列序列个数达到阈值,则去接头的程序不会继续运行,但其他质控会继续运行 3 4 #--max_length <INT> 5 修剪后丢弃长于 <INT> bp 的read。 这仅建议用于 smallRNA 测序以去除non-small RNA 序列。 6 7 #--stringency <INT> 8 接头序列最小配对碱基数:简单来说就是最多能允许末端残留多少个接头序列的碱基,默认值为极端值1;该参数与trimmomatic中ILLUMINACLIP <minAdapterLength>含义相同。 9 10 #-e <ERROR RATE> 11 允许的最大错误率,默认是0.1;即ERROR rate大于10%的read 会被舍弃,如果添加来--paired参数则会舍弃一对reads 12 13 #--gzip 14 使用gzip格式压缩输出文件,如果输入文件是经过gzip压缩过的,则输出文件会默认使用此格式进行压缩 15 16 #--dont_gzip 17 此选项会重写” --gzip”,输出文件不会使用gzip格式进行压缩。 18 19 #--length <INT> 20 设置长度阈值,若read通过质控清洗或去接头后长度小于此阈值,则会被剔除。 21 对于双端结果,一对reads中若一个read因为该原因被抛弃,则对应的另一个read也抛弃。不会被输出到双端结果文件。
1 #--paired 2 对于双端结果,一对reads中若一个read因为质量或其他原因被抛弃,则对应的另一个read也抛弃,但若使用--retain_unpaired选项可以保留
二、利用trim_galore对测序数据进行清洗
1.对数据名预处理
1 ls fastq | grep "_1" > gz1 2 ls fastq | grep "_2" > gz2 3 paste gz1 gz2>config_file 4 cat config_file
2.数据处理
1 #!/bin/bash 2 cat config_file | while read id 3 do 4 sample_dir="./fastq" 5 output_dir="./fastq_clean" 6 arr=($id) 7 fq1=${arr[0]} 8 fq2=${arr[1]} 9 sample_dir1="$sample_dir/$fq1" 10 sample_dir2="$sample_dir/$fq2" 11 #为防止结束终端时命令挂掉,可以用nohub防止挂起,因为现在使用学校超算中心,所以不用担心该问题 12 trim_galore -q 25 --phred33 --length 36 -e 0.1 --stringency 3 --paired -o $output_dir $sample_dir1 $sample_dir2 13 done
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步