用shell脚本实现转录组测序中 解压>质控>比对-
2018-11-07 本文已影响20人
邱俊辉
其实我一直很纠结RNA-seq到底要不要去掉接头,去掉低质量的碱基,我以前写的脚本是没有去接头和低质量碱基的,刚好有一位朋友问我为什么不去掉接头,我自己也不明白然后就有了下面的脚本。。。
但是,在我问过老师后得知:在基因组拼接中,去接头和低质量碱基是需要的,但是在RNA-seq中,去接头还是标准操作,去除低质量的碱基可以不做
脚本如下:
其中Trimmomatic的参数可以自己设置,在这个脚本中,我只是去掉了接头
#!/bin/bash
##这个脚本需要的软件有:hisat2,SRA-toolkit,samtools,htseq-count Trimmomatic Fastqc有兴趣的同学可以自己去下载并安装好,记得要配置好环境变量!
###脚本所用到的参考基因组可以从hisat2官网下载,参考基因组注释文件可以从gencode数据库下载
#脚本如下
#把sra文件都存放在Sra文件夹里面
#参考基因组和注释文件都在hg19文件夹里面
#qiujunhui 1801963472@qq.com
mkdir Fastq_out #创建一个存放SRA-toolkit解压sra文件的输出文件夹
mkdir fasqtc_out #创建一个存放Fastqc质量检查的文件
mkdir Sam_out #创建一个存放用hisat2比对的输出文件夹
mkdir Sorted.bam #创建一个存放用samtools将sam文件排序的生成的bam文件的文件夹
mkdir Counts #创建一个存放用HTseq-count计算基因表达量的输出文件夹
#批量解压文件
for i in ~/Sra/*sra
do
echo $i
#判断sra文件时单端测序还是双末端测序
num=$(fastq-dump -X 1 --split-spot -Z $i | wc -l | grep [0-9])
if [ $num -eq 4 ];then
echo "$i是单端测序"
fastq-dump $i
mv ~/Sra/*fastq ~/Fastq_out
#用fastqc和Trimmomatic进行质控
for f in ~/Fastq_out/*fastq
do
echo $f
fastqc -o ~/fastqc_out --noextract $f
done
#用Trimmomatic去掉接头
mkdir SE_trim_out #创建一个Trimmomatic的输出文件夹
for x in ~/Fastq_out/*fastq
do
echo $x
g=$(echo $x | cut -d "." -f1)
java -jar ~/Biosofts/Trimmomatic-0.38/trimmomatic-0.38.jar SE -phred33 $x ~/SE_trim_out/$g_clean.fastq ILLUMINACLIP:/home/qiujh/Biosofts/Trimmomatic-0.38/adapters/TruSeq2-SE.fa:2:30:10
done
#用hisat2进行比对
for k in ~/SE_trim_out/*_clean.fastq
do
echo $k
a=$(echo $k | cut -d "." -f1)
hisat2 -p 5 -x ~/hg19/genome -U $k -S $a.sam
mv ~/Fastq_out/*sam ~/Sam_out
done
else
echo "$i是双端测序!"
fastq-dump --split-files $i
mkdir 1Fastq_out
mkdir 2Fastq_out
mv ~/Sra/*_1.fastq ~/1Fastq_out
mv ~/Sra/*_2.fastq ~/2Fastq.out
#用fastqc和Trimmomatic进行质控
for l in ~/1Fastq_out/*_1.fastq
do
echo $l
fastqc -o ~/fastqc_out --noextract $l
done
for m in ~/2Fastq_out/*_2.fastq
do
echo $m
fastqc -o ~/dastqc_out --noextract $m
done
#用Trimmomatic去掉接头
mkdir 1PE_trim_out#创建一个去除接头后存放forward链的文件夹
mkdir 2PE_trim_out#创建一个去除接头后存放reverse链的文件夹
for n in ~/1Fastq_out/*_1.fastq
do
for o in ~/2Fastq_out/*_2.fastq
do
p= $(echo $n | cut -d "_" -f1)
q= $(echo $o | cut -d "_" -f1)
if [ $p = $q ];then
java -jar ~/Biosofts/Trimmomatic-0.38/trimmomatic-0.38.jar PE -phred33 $n $o ~/1PE_trim_out/$p_paired.fastq ~/1PE_trim_out/$p_unpaired.fastq ~/2PE_trim_out/$q_paired.fastq ~/2PE_trim_out/$q_unpaired.fastq ILLUMINACLIP:/home/qiujh/Biosofts/Trimmomatic-0.38/adapters/TruSeq2-PE.fa:2:30:10
fi
done
done
#用hisat2进行比对
for j in ~/1PE_trim_out/*_paired.fastq
do
for h in ~/2PE_trim_out/*_paired.fastq
do
b=$(echo $j | cut -d "_" -f1)
c=$(echo $h | cut -d "_" -f1)
if [ $b = $c ];then
hisat2 -p 5 -x ~/hg19/genome -U -1 $j -2 $h -S $b.sam
mv ~/2Fastq_out/*.sam ~/Sam_out
fi
done
done
fi
done
#用samtools进行排序
for y in ~/Sam_out/*sam
do
echo $y
d=$(echo $y | cut -d "." -f1)
samtools sort -n -@ 5 -o $d.bam $y
mv ~/Sam_out/*bam ~/Sorted.bam
done
#用HTseq-count进行基因表达量计算
for z in ~/Sorted.bam/*bam
do
echo $z
e=$(echo $z | cut -d "." -f1)
htseq-count -f bam -r name -s no -a 10 -t exon -i gene_id -m intersection-nonempty $z ~/hg19/gencode.v29lift37.annotation.gtf>$ecounts.txt
mv ~/Sorted_bam/*.txt ~/Counts
done
#把不要的文件夹删除只留下counts文件夹
rm -rf ~/Sra
rm -rf ~/Fastq_out
rm -rf ~/1Fastq_out
rm -rf ~/2Fastq_out
rm -rf ~/Sam_out
rm -rf ~/Sorted.bam
rm -rf ~/1PE_trim_out
rm -rf ~/2PE_trim_out
rm -rf ~/SE_trim_out