2018-10-16

生信学习笔记

转录组是测表达量 WES是测变异与否

WES数据分析

WES 全外显子测序 对SNP和indel体细胞变异敏感度较高  

外显子占全基因组1%左右 因此与全基因组测序相比 对重复变异敏感度不高


流程  学习材料见给学徒的wes数据分析流程

1.安装软件

新建一个环境装软件  昨天已经装了的也重新装一下

wgethttps://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh conda config --add channelshttps://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/freeconda config --add channelshttps://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forgeconda config --add channelshttps://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/biocondaconda config --set show_channel_urls yes

设置镜像安装conda  昨天安过了

conda create -n wes python=2 bwa

conda info --envs

sourceactivate wes   创建新环境 wes 进入环境

conda install sra-tools

conda install samtools

conda install -y bcftools vcftools  snpeff

conda install -y multiqc qualimap 安装所需软件

mkdir -p gatk4 &&  cd gatk4

wget https://github.com/broadinstitute/gatk/releases/download/4.0.6.0/gatk-4.0.6.0.zip

unzip gatk-4.0.6.0.zip 新建文件夹  下载gatk (分析各种数据用的)

2.质控

mkdir ~/project/boy

wkd=/home/jmzeng/project/boy

mkdir {raw,clean,qc,align,mutation}

cd qc

find /public/project/clinical/beijing_boy -name *gz|grep -v '\._'| xargs fastqc -t 10-o ./     创建文件夹 fastqc分析数据质量并生成报告 (grep -v ‘ ’ 不要什么)

mkdir $wkd/clean

cd $wkd/clean

find /public/project/clinical/beijing_boy -name *gz |grep -v'\._'|grep 1.fastq.gz > 1

find /public/project/clinical/beijing_boy -name *gz |grep -v'\._'|grep 2.fastq.gz > 2

paste 1 2 > config  找文件  赋值  写入config   找文件那部分代码可以改   熟悉怎么找就怎么找

bin_trim_galore=trim_galore

dir= $wkd/clean

cat config |while read id

do

     arr=(${id})

     fq1=${arr[0]}    0是变量arr的第一列  因为之前paste时候 fq1是在第一列

    fq2=${arr[1]}     1是第二列

      echo $dir $fq1 $fq2   写到这echo的时候可以先运行一下  看看对不对

nohup $bin_trim_galore -q 25 --phred33 --length 36 -e 0.1 --stringency 3 --paired -o $dir $fq1 $fq2 &  过滤  nohup 不在屏幕显示反馈的信息     &符号为后台运行  这样可以用服务器算 电脑可以关机或者离线

done

3.比对

wes比对用bwa软件  bwa的比对需要三列数据   如图


bwa比对需要的格式

先少弄点  比如提取只提取 chr1 的数据 怎么整我还得研究研究  


INDEX=/public/biosoft/GATK/resources/bundle/hg38/bwa_index/gatk_hg38 建立索引

ls /home/zhaowei/project/boy/clean/*1.fq.gz >1

ls /home/jmzeng/project/boy/clean/*2.fq.gz >2

cut -d"/"-f 7 1 |cut -d"_"-f 1 > 0

paste 0 1 2 > config     把config做成三列的

INDEX=/public/biosoft/GATK/resources/bundle/hg38/bwa_index/gatk_hg38 index文件怎么建立得学学

cat config |while read id

do

arr=($id)

fq1=${arr[1]}

fq2=${arr[2]}

sample=${arr[0]}

echo $sample $fq1 $fq2   先done一下看看对不对

bwa mem -t 5 -R"@RG\tID:$sample\tSM:$sample\tLB:WGS\tPL:Illumina" $INDEX $fq1 $fq2| samtools sort -@ 5 -o $sample.bam   #-o后面是输出到哪   $前面啥都不加相当于省略了./ 即输出到当前文件夹

done

4.找变异

ref=/public/biosoft/GATK/resources/bundle/hg38/Homo_sapiens_assembly38.fasta

source activate wes

time samtools mpileup -ugf  $ref *.bam| bcftools call -vmO z -o out.vcf.gz

ls *.bam |xargs -i samtools index {}     这里没去除PCR重复

去除PCR重复

#samtoolsmarkdup-r 7E5241.bam 7E5241.rm.bam

#samtoolsmarkdup-S 7E5241.bam 7E5241.mk.bam


GATK流程

GATK=/home/jmzeng/biosoft/gatk4/gatk-4.0.6.0/gatk

ref=/public/biosoft/GATK/resources/bundle/hg38/Homo_sapiens_assembly38.fasta

snp=/public/biosoft/GATK/resources/bundle/hg38/dbsnp_146.hg38.vcf.gz

indel=/public/biosoft/GATK/resources/bundle/hg38/Mills_and_1000G_gold_standard.indels.hg38.vcf.gz 先把这一大堆变量建好  后面代码里有

后面的循环一个一个来   要不乱套了

for sample in {7E5239.L1,7E5240,7E5241.L1}  这里头的文件名根据实际情况写

do echo $sample     这个循环挺好   看看

$GATK --java-options"-Xmx20G -Djava.io.tmpdir=./"MarkDuplicates \

 -I $sample.bam \ 

 -O ${sample}_marked.bam \

 -M $sample.metrics \

 1>${sample}_log.mark 2>&1  这步里的1 代表正常输出的信息 2代表报错的信息  都整一起了 得去log.mark这里头看     这段代码可以不用   这步生成了_marked.bam

done


之前那个for循环再循环一下

$GATK --java-options "-Xmx20G -Djava.io.tmpdir=./" FixMateInformation \ 

 -I ${sample}_marked.bam \ 

 -O ${sample}_marked_fixed.bam \ 

 -SO coordinate \

 1>${sample}_log.fix2>&1

samtools index ${sample}_marked_fixed.bam  这步生成了_marked_fixed.bam

done


之前for循环再循环一次

$GATK --java-options "-Xmx20G -Djava.io.tmpdir=./"BaseRecalibrator \ 

 -R $ref \ 

 -I ${sample}_marked_fixed.bam \ 

 --known-sites $snp \ 

 --known-sites $indel \ 

 -O ${sample}_recal.table \

1>${sample}_log.recal2>&1

done

这步生成啥不知道  就跑到这

tips     for sample in {}  do 那个循环好好练练  好像整明白了

你可能感兴趣的:(2018-10-16)