WES學(xué)習(xí)筆記

嘗試一下jimmy的WES流程旅东,雖然現(xiàn)在云生信勢頭正猛男娄,做生信的門檻對普通人來說降低了行贪,對專業(yè)人士提高了許多,但是誰能阻止我們學(xué)習(xí)的步伐呢模闲?相信那句「沒有白走的路」建瘫,繼續(xù)學(xué)習(xí),學(xué)習(xí)是我的愛好和樂趣围橡。

這是生信技能樹上帖子的地址暖混,上面有所有代碼,贊翁授!一個(gè)如此熱愛分享的大神拣播!http://www.biotrainee.com/thread-122-1-1.html

一晾咪、軟件和數(shù)據(jù)準(zhǔn)備

1.軟件安裝

我的原則是能用conda解決的不去wget,所以就conda解決了大部分軟件安裝問題贮配。我的系統(tǒng)黑蘋果10.11.5(EI Capitan)谍倦,遠(yuǎn)景論壇上下載的大神配置好的clover配置文件,基本完美泪勒,我們的目的不是裝系統(tǒng)昼蛀,而是用嘛,所以也不深入研究了圆存。

 thinkpad-E431
 處理器:Intel Core i3-3120M    2*2.49 GHz
 內(nèi)存:12 GB
conda install bwa
#bwa是基于BWT的生物序列比對工具:bwa是為二代測序的短序列比對參考序列(reference叼旋,fasta格式)而開發(fā)的比對軟件。
conda install samtools
#samtools是目前廣泛使用額關(guān)于處理bam/sam文件的工具沦辙。從測序儀得到的fastq文件經(jīng)過mapping后得到二進(jìn)制的bam文件夫植,而sam則是它的十進(jìn)制版本。
conda install gatk
#gatk主要用于從sequencing 數(shù)據(jù)中進(jìn)行variant calling油讯,包括SNP详民、INDEL。比如現(xiàn)在風(fēng)行的exome sequencing找variant陌兑,一般通過BWA+GATK的pipeline進(jìn)行數(shù)據(jù)分析沈跨。
wget https://software.broadinstitute.org/gatk/download/auth?package=GATK
#上面只是安裝了個(gè)gatk-register,仍需要下載gatk用gatk-register安裝
tar -jxvf GenomeAnalysisTK-3.8-0.tar.bz2
cd GenomeAnalysisTK-3.8-0-ge9d806836/
mv GenomeAnalysisTK.jar ../../biosofts/
gatk-register ~/biosofts/GenomeAnalysisTK.jar
#拷貝到目標(biāo)文件夾(安裝目錄)

conda install picard
#picard是一套操作高通量測序(HTS)數(shù)據(jù)的命令行工具(java)兔综,格式如SAM/BAM/CRAM和VCF饿凛。這些文件格式是在Hts規(guī)范存儲(chǔ)庫中定義的。尤其是SAM規(guī)范和VCF規(guī)范软驰。

2.數(shù)據(jù)準(zhǔn)備

1)模擬產(chǎn)生數(shù)據(jù)

因?yàn)閷?shí)際的數(shù)據(jù)太大了笤喳,對我這種弱弱的計(jì)算機(jī)簡直是一種折磨,我下過全部的sra序列碌宴,轉(zhuǎn)換成fastq后來比對,比對就是花了幾小時(shí)蒙畴,什么動(dòng)靜也沒有贰镣。所以,對于學(xué)習(xí)來說膳凝,產(chǎn)生一點(diǎn)模擬數(shù)據(jù)是不錯(cuò)的碑隆,jimmy人性化的為我們提供了pirs這個(gè)軟件來模擬產(chǎn)生測序數(shù)據(jù)。

我表示裝這個(gè)軟件折騰了良久蹬音,不過終于可以使用了上煤。首先這個(gè)軟件依賴于zlib和boost編譯,我才開始嘗試下載源碼編譯著淆,好像是成功了劫狠。但是拴疤,我不放心,于是用brew安裝了一下測試了一下独泞。

brew install zlib
brew install boost

然后是pirs這個(gè)軟件的安裝:

大概我只是按步驟裝了下就可以用了呐矾,中間有點(diǎn)報(bào)錯(cuò),是sh文件里有個(gè)路徑錯(cuò)誤懦砂,我還以為是軟件的嚴(yán)重錯(cuò)誤蜒犯。

wget ftp://ftp.genomics.org.cn/pub/pIRS/pIRS_111.tgz #下載軟件

tar zxvf pIRS_111.tgz #解壓

cd pIRS_111/

make #提示說沒有源碼不需要編譯于是嘗試運(yùn)行了一下,竟然可以運(yùn)行荞膘。
mkdir -p data reference 
pirs simulate -i reference/chr1.fa \
-s ~/biosofts/pirs/pIRS_111/Profiles/Base-Calling_Profiles/humNew.PE100.matrix.gz \
-d ~/biosofts/pirs/pIRS_111/Profiles/GC-depth_Profiles/humNew.gcdep_200.dat  \
-b ~/biosofts/pirs/pIRS_111/Profiles/InDel_Profiles/phixv2.InDel.matrix \
-l 100 -x 50 -Q 33 -o A

pirs軟件參數(shù)學(xué)習(xí):

simulate:模擬illumina reads數(shù)據(jù)

-i:參考基因組序列

-s <double> 雜合 SNP rate (default=0.001)

-d <double> GC內(nèi)容覆蓋深度罚随?

-b <string> input InDel-error profile,input InDel-error profile for simulating InDel-error of reads, (default=(exe_path)/Profiles/InDel_Profiles/phixv2.InDel.matrix)

-l:read讀長

-x:測序覆蓋深度,默認(rèn)5

-Q:33/64

-o <string> output prefix (default=Illumina)

#程序運(yùn)行過程:
Start to preview error profile...
In Base-calling profile:
    Ref_Base_num: 4
    Statistical_Cycle_num: 200
    Seq_Base_num: 4
    Quality_num: 41
    100bp reads total average substitution error rate: 0.00372389
Start to construct simulation matrix...
Loading file: /Users/zd200572/biosofts/pirs/pIRS_111/Profiles/Base-Calling_Profiles/humNew.PE100.matrix.gz
Have finished constructing Base-calling simulation matrix1
Start to construct simulation matrix...
Loading file: /Users/zd200572/biosofts/pirs/pIRS_111/Profiles/Base-Calling_Profiles/humNew.PE100.matrix.gz
Have finished constructing Base-calling simulation matrix2
Loading the GC bias profile: /Users/zd200572/biosofts/pirs/pIRS_111/Profiles/GC-depth_Profiles/humNew.gcdep_200.dat

Have finished constructing GC bias simulation matrix
Start to construct InDel-error matrix...
Loading file: /Users/zd200572/biosofts/pirs/pIRS_111/Profiles/InDel_Profiles/phixv2.InDel.matrix

For simulating GC bias:
    GC% abundance
    0   0.00422544
    1   0.00624158
    2   0.00912628
    ...
In InDel-error profile:
    profile_Cycle_num: 200
    read1 count: 147091454
    read2 count: 145785569
    length of max InDel: 3
    insertion-base rate of 100-bp read1: 4.77512e-06
    deletion-base rate of 100-bp read1: 1.11823e-05
    insertion-base rate of 100-bp read2: 8.36749e-06
    deletion-base rate of 100-bp read2: 1.55069e-05
Have finished constructing InDel-error simulation matrix
Have finished reading scaffold chr1
Begin to output reads...
Output 10000 pair reads
Output 20000 pair reads
...
Finish output reads

#由于50x速度實(shí)在生成的太慢羽资,2x的試試淘菩,哈哈475s搞定。

In ouput data:
    sum of Insertion in read1 file: 1211
    sum of Deletion in read1 file: 2814
    sum of Insertion in read2 file: 2103
    sum of Deletion in read2 file: 3825
All done! Run time: 475s.
#對比一下50x的
In ouput data:
    sum of Insertion in read1 file: 30374
    sum of Deletion in read1 file: 70211
    sum of Insertion in read2 file: 52633
    sum of Deletion in read2 file: 95478
All done! Run time: 11248s.

2)真實(shí)的wes數(shù)據(jù)(不是必需)

沒看到在流程中用到削罩,下下來以后備用瞄勾,有100G之巨。測試了一下弥激,對于我的電腦配置进陡,單單bwa比對運(yùn)行要花100個(gè)小時(shí)。微服。趾疚。

# ~100GB disk space required to download the NA12878

wget [url]ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR262/ERR262997/ERR262997_1.fastq.gz[/url]
wget [url]ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR262/ERR262997/ERR262997_2.fastq.gz[/url]

3)參考基因組

cd reference
wget http://hgdownload.cse.ucsc.edu/goldenPath/hg38/bigZips/hg38.chromFa.tar.gz
tar zxvf hg38.chromFa.tar.gz
cd chroms
for i in $(seq 1 22) X Y M; do cat chr${i}.fa >> hg19.fasta; done
cp chr1.fa ../
rm -fr chr*.fasta
cd ../

4)基因組index和dictionary的獲得

bwa index -p hg38.chr1 chr1.fa
samtools faidx hg38.fa
picard CreateSequenceDictionary.jar R=hg38.fasta O=hg38.dict

5)其他參考數(shù)據(jù)

# dbSNP138
 wget http://hgdownload.cse.ucsc.edu/goldenPath/hg38/database/snp150.txt.gz

# GATK resource bundle

GATK_FTP=ftp://gsapubftp-anonymous@ftp.broadinstitute.org/bundle/2.8/hg38

# download library file for GATK's VariantRecalibrator

for f in hapmap_3.3.hg38.vcf.gz 1000G_omni2.5.hg38.vcf.gz 1000G_phase1.indels.hg38.vcf.gz Mills_and_1000G_gold_standard.indels.hg38.vcf.gz
do
curl --remote-name ${GATK_FTP}/${f}
done

二、軟件運(yùn)行

1.bwa比對

由于對于一個(gè)軟件來說以蕴,功能太多糙麦,不可能一一覆蓋,于是丛肮,我就先學(xué)習(xí)這次用到的參數(shù)赡磅,順便對軟件做一個(gè)大概了解,由于是初學(xué)宝与,目標(biāo)先定低一點(diǎn)焚廊,先了解大概,以后做項(xiàng)目再一一學(xué)習(xí)习劫。

bwa的mem參數(shù):MEM是bwa中最新的算法咆瘟,基本取代了前兩種,目的是將測序reads或組裝的contig比對到Reference上诽里。(Bio-Xin博客:http://www.cnblogs.com/leezx/p/6226717.html

-t參數(shù)袒餐,線程數(shù);-R參數(shù):設(shè)置reads標(biāo)頭,“\t”分割灸眼;M——將較短的split hits標(biāo)記為secondary卧檐,與picard兼容;后邊跟參考基因組幢炸、reads文件和>以及要生成的sam文件泄隔。(如果GATK call SNP 必須用-r 參數(shù))

R1=/mnt/A_100_500_1.fq.gz
R2=/mnt/A_100_500_2.fq.gz
#align with BWA, with 4 threads (-t 4). Reading Group is required (-R ...).
bwa mem -t 4 -R '@RG\tID:group_id\tPL:illumina\tSM:sample_id' $DATA/hg19.chr1/hg19.chr1 ${R1} ${R2} > A.chr1.sam
Real time: 457.713 sec; CPU: 1489.602 sec
#2x的數(shù)據(jù)
 Real time: 12440.568 sec; CPU: 43493.514 sec #50x

2.picard

1)SortSam工具

由BWA生成的sam文件時(shí)按字典式排序法進(jìn)行的排序(lexicographically)進(jìn)行排序的(chr10,chr11…chr19宛徊,chr1佛嬉,chr20…chr22,chr2闸天,chr3…chrM暖呕,chrX,chrY)苞氮,但是GATK在進(jìn)行callsnp的時(shí)候是按照染色體組型(karyotypic)進(jìn)行的(chrM湾揽,chr1,chr2…chr22笼吟,chrX库物,chrY),因此要對原始sam文件進(jìn)行reorder贷帮∑萁遥可以使用picard-tools中的ReorderSam完成,同時(shí)格式轉(zhuǎn)換成了bam撵枢。(https://www.plob.org/article/7009.html

picard SortSam CREATE_INDEX=True SORT_ORDER=coordinate VALIDATION_STRINGENCY=LENIENT INPUT=A.chr1.sam OUTPUT=A.chr1.sort.bam
#2x運(yùn)行情況 
picard.sam.SortSam done. Elapsed time: 4.54 minutes.
Runtime.totalMemory()=872415232
#50x

2)MarkDuplicates工具

過量擴(kuò)增的reads并不是基因組自身固有序列民晒,不能作為變異檢測的證據(jù),因此锄禽,要盡量去除這些由PCR擴(kuò)增所形成的duplicates潜必,這一步可以使用picard-tools來完成。去重復(fù)的過程是給這些序列設(shè)置一個(gè)flag以標(biāo)志它們沃但,方便GATK的識(shí)別磁滚。還可以設(shè)置 REMOVE_DUPLICATES=true 來丟棄duplicated序列。對于是否選擇標(biāo)記或者刪除宵晚,對結(jié)果應(yīng)該沒有什么影響恨旱,GATK官方流程里面給出的例子是僅做標(biāo)記不刪除。這里定義的重復(fù)序列是這樣的:如果兩條reads具有相同的長度而且比對到了基因組的同一位置坝疼,那么就認(rèn)為這樣的reads是由PCR擴(kuò)增而來,就會(huì)被GATK標(biāo)記谆沃。

picard MarkDuplicates CREATE_INDEX=true REMOVE_DUPLICATES=True ASSUME_SORTED=True VALIDATION_STRINGENCY=LENIENT METRICS_FILE=/dev/null INPUT=A.chr1.sort.bam OUTPUT=A.chr1.sort.dedup.bam
#2x運(yùn)行情況
picard.sam.markduplicates.MarkDuplicates done. Elapsed time: 5.15 minutes.
Runtime.totalMemory()=822083584

3)FixMateInformation

這一步驟在網(wǎng)上搜到了這個(gè)钝凶。。。(看來我得好好理出一個(gè)現(xiàn)在使用的流程來耕陷,生物信息的流程發(fā)展還真是快呀5嗝)在一些老版本的pipeline中(如seqanswers上的那個(gè)),這一步做完后還要對pair-end數(shù)據(jù)的mate information進(jìn)行fix哟沫。不過新版本已經(jīng)不需要這一步了饺蔑,Indel realign可以自己fix mate。(http://www.bbioo.com/lifesciences/40-115982-1.html

picard FixMateInformation SO=coordinate VALIDATION_STRINGENCY=LENIENT CREATE_INDEX=true INPUT=A.chr1.sort.dedup.bam OUTPUT=A.chr1.sort.dedup.mate.bam
#2x運(yùn)行情況
picard.sam.FixMateInformation done. Elapsed time: 6.36 minutes.
Runtime.totalMemory()=877658112

3.gatk

終于到了大頭gatk出場了嗜诀,我表示我對它好陌生猾警,幾乎是第一次運(yùn)行它。通過上面可以看出他是一個(gè)經(jīng)常更新的程序隆敢,而且它雖然是一個(gè)java程序发皿,但是它有好幾個(gè)子工具,就像上面的picard拂蝎。先看看它的流程穴墅,官方的:

https://software.broadinstitute.org/gatk/img/BP_workflow_3.6.png

1)RealignerTargetCreator

對INDEL周圍進(jìn)行realignment,這個(gè)操作有兩個(gè)步驟温自,第一步生成需要進(jìn)行realignment的位置的信息, 輸出一個(gè)包含著possible indels的文件玄货。

GenomeAnalysisTK -R reference/chr1.fa \
-T RealignerTargetCreator \
-I A.chr1.sort.dedup.mate.bam -o A.intervals

2)IndelRealigner

第二步才是對這些位置進(jìn)行realignment, 最后生成一個(gè)realin好的BAM文件sample.realn.bam

GenomeAnalysisTK -R reference/chr1.fa \
-T IndelRealigner \
-targetIntervals A.intervals \
-I A.chr1.sort.dedup.mate.bam -o A.chr1.sort.dedup.mate.relaign.bam

3)BaseRecalibrator

(對base的quality score進(jìn)行校正)堿基質(zhì)量分?jǐn)?shù)重校準(zhǔn)(Base quality score recalibration,BQSR)悼泌,就是利用機(jī)器學(xué)習(xí)的方式調(diào)整原始堿基的質(zhì)量分?jǐn)?shù)松捉。它分為兩個(gè)步驟:

  1. 利用已有的snp數(shù)據(jù)庫,建立相關(guān)性模型券躁,產(chǎn)生重校準(zhǔn)表( recalibration table)

  2. 根據(jù)這個(gè)模型對原始堿基進(jìn)行調(diào)整惩坑,只會(huì)調(diào)整非已知SNP區(qū)域。

    (參考自生信媛--GATK之BaseRecalibrator)

GenomeAnalysisTK -R reference/chr1.fa \
-T BaseRecalibrator \
-knownSites $DATA/dbsnp_138.hg19.vcf \
-o A.recal \
-I A.chr1.sort.dedup.mate.relaign.bam

4)UnifiedGenotyper

這一步提示jimmy的代碼不能用了也拜,說3.7以后采用了新的參數(shù)以舒,更新好快。

使用UnifiedGenotyper尋找variant慢哈。論壇搜索發(fā)現(xiàn)蔓钟,現(xiàn)在推薦用HaplotypeCaller,效果更好卵贱。

GenomeAnalysisTK -T UnifiedGenotyper -R chr1.fa -I A.chr1.sort.dedup.mate.relaign.recal.bam --dbsnp ../common_all_20170710.vcf -o snps.raw.vcf -stand_call_conf 50.0

5)HaplotypeCaller

同樣是更新了的參數(shù)處理方式滥沫。

由于HaplotypeCaller的工作原理,直接省去了BQSR和indel realignment步驟键俱,所以對于一個(gè)variant calling流程而言兰绣,可以直接比對,去重復(fù)后運(yùn)行HaplotypeCaller编振。

HaplotypeCaller缀辩,簡稱HC,能過通過對活躍區(qū)域(也就是與參考基因組不同處較多的區(qū)域)局部重組裝,同時(shí)尋找SNP和INDEL臀玄。換句話說瓢阴,當(dāng)HC看到一個(gè)地方好活躍呀,他就不管之前的比對結(jié)果了健无,直接對這個(gè)地方進(jìn)行重新組裝荣恐,所以就比傳統(tǒng)的基于位置(position-based)的工具,如前任UnifiedGenotyper好用多了累贤。

HC可以處理非二倍體物種和混池實(shí)驗(yàn)數(shù)據(jù)叠穆,但是不推薦用于癌癥或者體細(xì)胞。
HC還可以正確處理可變剪切畦浓,所以也能用于RNA-Seq數(shù)據(jù)痹束。

參考自生信媛--生信媛的GATK大禮包

GenomeAnalysisTK -R chr1.fa -T HaplotypeCaller --dbsnp ../common_all_20170710.vcf -stand_call_conf 30 -o A.hc.vcf -I A.chr1.sort.dedup.mate.relaign.recal.bam

4.總結(jié)

雖然馬馬虎虎走了一次最基本的幾個(gè)步驟,發(fā)現(xiàn)學(xué)習(xí)之路任重而道遠(yuǎn)呀讶请!我只是個(gè)初學(xué)者祷嘶,加油!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末夺溢,一起剝皮案震驚了整個(gè)濱河市论巍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌嘉汰,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件状勤,死亡現(xiàn)場離奇詭異鞋怀,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)密似,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來葫盼,“玉大人残腌,你說我怎么就攤上這事贫导∨酌ǎ” “怎么了孩灯?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵闺金,是天一觀的道長峰档。 經(jīng)常有香客問我掖看,道長,這世上最難降的妖魔是什么哎壳? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮尚卫,結(jié)果婚禮上归榕,老公的妹妹穿的比我還像新娘。我一直安慰自己吱涉,他們只是感情好刹泄,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著怎爵,像睡著了一般特石。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鳖链,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天姆蘸,我揣著相機(jī)與錄音,去河邊找鬼芙委。 笑死逞敷,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的灌侣。 我是一名探鬼主播推捐,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼侧啼!你這毒婦竟也來了牛柒?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤痊乾,失蹤者是張志新(化名)和其女友劉穎皮壁,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體符喝,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡闪彼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了协饲。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片畏腕。...
    茶點(diǎn)故事閱讀 38,646評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖茉稠,靈堂內(nèi)的尸體忽然破棺而出描馅,到底是詐尸還是另有隱情,我是刑警寧澤而线,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布铭污,位于F島的核電站恋日,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏嘹狞。R本人自食惡果不足惜岂膳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望磅网。 院中可真熱鬧谈截,春花似錦、人聲如沸涧偷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽燎潮。三九已至喻鳄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間确封,已是汗流浹背除呵。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留隅肥,地道東北人竿奏。 一個(gè)月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像腥放,于是被迫代替她去往敵國和親泛啸。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容