生信学习笔记
转录组是测表达量 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的比对需要三列数据 如图
先少弄点 比如提取只提取 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 那个循环好好练练 好像整明白了