2021-03-22

03、测序数据批量比对到参考基因组

建立索引:

cd /home/ngs/Pipeline/WES/database/gatk/hg38
gzip -d Homo_sapiens_assembly38.fasta.gz
mkdir index && cd index
nohup bwa index -a bwtsw -p hg38 ../Homo_sapiens_assembly38.fasta &
# -a有两种构建index的算法:bwtsw:大的基因组数据,必须大于10MB,比如人的全基因组;is:默认的算法,速度较快,需要较大的内存,不能构建大于2GB的数据库
# -p str:输出数据库的前缀,默认和输入的文件名一致

进行比对:

# 单样本比对
INDEX=/home/ngs/Pipeline/WES/database/gatk/hg38/index/hg38
sample=025666
cd /home/ngs/Pipeline/WES/project/clean/
bwa mem -t 10 -R "@RG\tID:$sample\tSM:$sample\tLB:WGS\tPL:Illumina" $INDEX 025666_S168_L001.R1_val_1.fq.gz 025666_S168_L001.R2_val_2.fq.gz |samtools sort -@ 5 -o 025666.bam -
# -t:线程数
# -R接的是 Read Group的字符串信息,它是用来将比对的read进行分组的,这个信息对于后续对比对数据进行错误率分析和Mark duplicate时非常重要。ID是Read Group的分组ID,一般设置为测序的lane ID;PL指的是所用的测序平台;SM为样本ID;LB为测序文库的名字。这些信息设置好后,在RG字符串中要用制表符将它们分开
# 使用samtools将bwa产生的sam文件转换为bam文件并排序(根据左起位点对序列排序),-@为线程数,后边的“-”为管道输出的占位符

# 批量比对
ls *R1_val_1.fq.gz >1
ls *R2_val_2.fq.gz >2
paste 1 2 > tmp
cat tmp |cut -f1|cut -d"_" -f1 >del
paste del tmp >config

INDEX=/home/ngs/Pipeline/WES/database/gatk/hg38/index/hg38
cat config |while read id
do
# 对config中的每一列进行赋值,并且开始循环读取和批量转换
arr=($id)
fq1=${arr[1]} # fq1为第2列
fq2=${arr[2]} # fq2为第3列
sample=${arr[0]}  #sample为第1列
bwa mem -t 10 -R "@RG\tID:$sample\tSM:$sample\tLB:WGS\tPL:Illumina" $INDEX $fq1 $fq2 |samtools sort -@ 5 -o $sample.bam - 
done

你可能感兴趣的:(2021-03-22)