乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      gvcf-vcf文件合并

       BIOINFO_J 2018-07-25
      轉(zhuǎn)載于http://blog.sciencenet.cn/blog-1469385-829144.html,該帖子詳細介紹了gatk2和gatk3的不同點。本篇文章對該帖子部分內(nèi)容進行修改,只保留gvcf生成條件下變異檢測的流程及vcf文件合并的相關(guān)說明。

      gatk3中檢測變異從原來的gatk2的Joint Variant Calling變成了現(xiàn)在的Joint Genotyping,一方面順利的解決了變異檢測過程中的“N+1”難題,另一方面則大大減少了運行所需要的時間和消耗的資源。

      在這種模式下只需要對每個sample的bam文件運行HaplotypeCaller,生成每個sample的gVCF文件,之后再合并這些文件進行g(shù)enotyping,這樣原先最耗時間的步驟(HaplotypeCaller這一步)從sample數(shù)量的指數(shù)級關(guān)系就變成了線性關(guān)系,而合并genotyping消耗的時間則相對很少,因此整個模式帶來的將是一次巨大的革新。

      1. Variant calling

      針對每個sample的BAM文件運行HaplotypeCaller(每個sample可以有多個文件(應(yīng)當(dāng)包含同樣的SM標(biāo)簽),運行的時候通過-I參數(shù)設(shè)置一起提供給caller),然后每個sample會生成一個gVCFs文件,需要設(shè)置的參數(shù)有:

       

      --emitRefConfidenceGVCF 通過這個選項來輸出與reference一致的堿基的相關(guān)信息,這樣最終的結(jié)果其實就相當(dāng)于包含了所有的位點,而不再僅僅是原先的variants位點。

      --variant_index_type LINEAR 這個選項是主程序里面的,具體可以不管

      --variant_index_parameter 128000 跟上面的選項相關(guān)的一個參數(shù),也不用管

      其實這個思路還是很明顯的,原先情況下單純的輸出variants位點再合并會導(dǎo)致多出來的reference位點的實際情況無法確定,所以把所有位點一起輸出再合并就可以比較了。因此理論上這種做法在原來的框架下也是能做的,因為本身大部分的caller就可以輸出所有位點的信息,但是原來的做法會有以下幾個問題:

      (1)生成文件的體積會非常大,很容易就超過原來的bam文件,即使壓縮后也很大,一方面極度浪費資源,另一方面下游處理效率會很差;

      (2)通過直接輸出的這些reference位點的信息可能不準(zhǔn),或者不完全,因為當(dāng)初的目的可能更多的是用于debug之類;

      (3)很多情況下通過合并得到的multi-sample vcf文件中的結(jié)果部分值不準(zhǔn)確,或者根本得不到更新。

      這些也是造成所謂“N+1”問題的根本原因。

      第三點其實跟第二點本質(zhì)上是一樣的,都是由于單個vcf文件中存儲的每個sample信息不全(loss)導(dǎo)致合并時很多值無法更新,尤其是碰到多variants位點時這個問題最明顯。不過解決的思路也很簡單,就是嘗試將每個sample BAM文件中的有用信息盡可能無損(lossless)的轉(zhuǎn)換到一個文件中,再通過這個文件提取得到最后的vcf文件。

      這邊我想順便介紹一些平??梢杂脕磉M行這種vcf文件合并操作的一些工具,并且討論一下在使用過程中可能需要注意的一些問題:

      a).vcf-merge

      http://vcftools./perl_module.html#vcf-merge

      這個工具是vcftools里面的一個Perl腳本,具體用法如下:

      vcf-mergeA.vcf.gz B.vcf.gz C.vcf.gz > out.vcf

      首先最大的缺點是慢(所以后來重新開發(fā)了C版本,見后);然后另外一個比較麻煩的就在于對variants位點的處理,碰到這些位點的時候不會更新各個sample,例如我們可以嘗試合并下面兩個vcf文件:

      vcf1:

      ##fileformat=VCFv4.1

      #CHROM      POS         ID    REF ALT QUAL     FILTER   INFO       FORMAT        Sample01

      1       6324        .        T C       30    PASS       .        GT:AD    1/1:1,22

      1       16324      .      T A     40    PASS       .        GT:AD    0/1:10,11

      4       134861    .      G C       50    PASS       .        GT:AD    0/1:7,13

      vcf2:

      ##fileformat=VCFv4.1

      #CHROM      POS         ID    REF ALT QUAL     FILTER   INFO       FORMAT        Sample02

      1       6324        .        T      A      45    PASS       .        GT:AD    1/1:0,23

      1       16324      .        T      C,G 35    PASS       .        GT:AD    1/2:0,12,12

      4       134861    .        G      GC   15    LowQual        .        GT:AD    1/1:1,19

      我們可以嘗試用vcf-merge來合并這兩個文件,具體代碼如下:

      ## step1: compress vcf files and create an index (this process

      ## is required for most perl APIs in vcftools)

      ./biosoft/bgzip./test/test1.vcf &&

         ./biosoft/tabix -p vcf ./test/test1.vcf.gz

      ./biosoft/bgzip./test/test2.vcf &&

          ./biosoft/tabix -p vcf ./test/test2.vcf.gz

       

      ## step2: merge with vcf-merge

      perl ./scripts/vcf-merge./test/test1.vcf.gz./test/test2.vcf.gz

          > ./test/test_merge.vcf

      第一步是壓縮以及生成index,vcftools的很多perl API都要求input的vcf文件是通過bgzip壓縮,并且用tabix生成對應(yīng)的index文件,這樣可以實現(xiàn)對vcf文件的隨機讀寫。

      得到的結(jié)果如下:

      ##fileformat=VCFv4.1

      ##source_20140401.1=vcf-merge(r840) ./test/test1.vcf.gz ./test/test2.vcf.gz

      ##sourceFiles_20140401.1=0:./test/test1.vcf.gz,1:./test/test2.vcf.gz

      #CHROM      POS         ID    REF ALT QUAL     FILTER   INFO       FORMAT        Sample01      Sample02

      1       6324        .        T      A,C 37.50       PASS       AC=2,2;AN=4;SF=0,1 GT:AD    2/2:1,22 1/1:0,23

      1       16324      .        T      C,G,A      37.50       PASS       AC=1,1,1;AN=4;SF=0,1        GT:AD    0/3:10,11        1/2:0,12,12

      4       134861    .        G      GC,C        32.50      LowQual       AC=2,1;AN=4;SF=0,1f         GT:AD    0/2:7,13 1/1:1,19

      從更新的結(jié)果來看,Quality值應(yīng)該是取得兩者的平均值,然后INFO部分增加了AC,AN以及SF的信息,F(xiàn)ILTER的標(biāo)簽是以被FILTER掉的為準(zhǔn),然后在SF這邊有顯示(1f就表示在第二個sample中是LowQual的),假設(shè)我們當(dāng)時定義的LowQual的標(biāo)準(zhǔn)是30的話,這邊根據(jù)情況可能就要更新成PASS;然后可以看到,這邊AD值(這個值反應(yīng)的是每種形態(tài)的allele的depth)的信息是沒有更新的,因為每個caller生成的vcf文件中包含的INFO或者FORMAT部分的標(biāo)簽各種各樣(這邊的AD值就是HaplotypeCaller或者UnifiedGenotyper默認輸出的),除非是配套的下游操作軟件,否則一般是很難考慮到所有情況的,而且這邊即使嘗試更新,得到的結(jié)果也不一定完全準(zhǔn)確,例如即使是0/1的情況下,也是有存在第三種形態(tài)的可能的,只是當(dāng)時不足以對genotyping產(chǎn)生影響所以被舍棄了而已。

      b).GATKCombineVariants

      http://www./gatk/gatkdocs/org_broadinstitute_sting_gatk_walkers_variantutils_CombineVariants.html

      這個是GATK里面用來合并vcf文件的工具,用法如下:

      ## test of CombineVariants in GATK

      java -jar ./biosoft/GenomeAnalysisTK-3.1-1/GenomeAnalysisTK.jar

          -R ./ref/TAIR9_chr1.random.fasta

          -T CombineVariants

          --variant ./test/test1.vcf.gz

          --variant ./test/test2.vcf.gz

          -o ./test/test_combine.vcf

          -genotypeMergeOptions UNIQUIFY

      這邊順便提一下GATK的大部分工具也是直接支持通過bgzip壓縮的并且通過tabix index過的vcf文件的。

      然后結(jié)果如下:

      #CHROM      POS         ID    REF ALT QUAL     FILTER   INFO       FORMAT        Sample01.variant         Sample02.variant2

      1       6324        .        T      C,A 30    PASS       AC=2,2;AF=0.500,0.500;AN=4;set=Intersection GT   1/1   2/2

      1       16324      .        T      A,C,G      40    PASS       AC=1,1,1;AF=0.250,0.250,0.250;AN=4;set=Intersection   GT   0/1         2/3

      4       134861    .        G      C      50    PASS       AC=1;AF=0.500;AN=2;set=variant GT:AD    0/1:7,13   ./.

      4       134861    .        G      GC   15    LowQual        AC=2;AF=1.00;AN=2;set=FilteredInAll GT:AD    ./.     1/1:1,19

      然后……(一瞬間有種不想評論的感覺),可以看到可能是也注意到AD這個值的問題了,所以前兩個位點直接把AD值給刪掉了(刪掉了……),后面兩個因為是Indel和SNP位點重合,而Indel的實際位置本身就應(yīng)該是134861+1,所以這邊分成兩個可能應(yīng)該更準(zhǔn)確一點,但這樣vcf文件當(dāng)中就出現(xiàn)了duplicate的位置。

      c). bcftools merge

      http://samtools./bcftools/bcftools.html#merge

      這個工具是后來重新開發(fā)的,既包含了原來samtools里面附帶的bcftools的所有功能,也包含htslib (https://github.com/samtools/htslib) 里面的所有工具,用來替代vcftools里面提供的Perl API,這邊的bcftools merge就是用來替代之前提到的vcf-merge的,具體用法如下:

      ## test of bcftools merge

      ./biosoft/bcftools merge./test/test1.vcf.gz ./test/test2.vcf.gz

          > ./test/test_merge2.vcf

      生成的結(jié)果如下:

      ##fileformat=VCFv4.2

      ##bcftools_mergeVersion=0.0.1+htslib-0.0.1

      ##bcftools_mergeCommand=merge ./test/test1.vcf.gz ./test/test2.vcf.gz

      #CHROM      POS         ID    REF ALT QUAL     FILTER   INFO       FORMAT        Sample01      Sample02

      1       6324        .        T      C,A 45    PASS       .        GT:AD    1/1:1,22   2/2:0,23

      1       16324      .        T      A,C,G      40    PASS       .        GT:AD    0/1:10,11         2/3:0,12,12

      4       134861    .        G      C      50    PASS       .        GT:AD    0/1:7,13   ./.:.

      4       134861    .        G      GC   15    LowQual        .        GT:AD    ./.:.   1/1:1,19

      可以看到最新的bcftools輸出的vcf已經(jīng)更新到4.2版本了,然后默認情況下對于SNP和Indel重合的位點的處理和CombineVariants是一樣的(另外可以通過--merge參數(shù)來修改),然后這邊的Quality值變成了兩個的最大值,而AD值也同樣是沒更新的,如果存在INFO部分的話,很多值的合并方式也可以通過--info-rules來修改。

      最后補充兩點:

      1) 這邊講的合并指的是多個single-sample的vcf文件合并成單multi-samples的vcf文件,當(dāng)然其中有一些工具也支持合并同樣sample(s)但是包含不同位置結(jié)果的vcf文件(例如開始Call variants的時候是以每條染色體為單位的,后面可以通過CombineVariants將所有結(jié)果合并到一起);

      2) 這邊舉得很多例子實際數(shù)據(jù)中可能占得比例并不大,而且很多時候會直接去掉這些位點(例如計算LD的時候只用bi-allelic的位點),或者有些信息根本用不上(大部分下游軟件用到比較多的是GT值),這邊講的比較細節(jié),大部分情況下對實際數(shù)據(jù)的影響都是可以忽略的,但是如果涉及到相關(guān)方面的一些分析,或者是處理低覆蓋的數(shù)據(jù)的時候,這種細節(jié)方面引起的誤差甚至是錯誤可能就不容忽視了。

      2. Optional data aggregation step

      這一步是通過CombineGVCFs

      (http://www./gatk/gatkdocs/org_broadinstitute_sting_gatk_walkers_variantutils_CombineGVCFs.html)

      先把上一步生成的所有gVCF文件進行合并,不過這一步主要是針對sample數(shù)量比較多的情況(上百個sample),先合并后面操作會比較方便,所以是可選的。

      3. Joint genotyping

      這一步就是再用GenotypeGVCFs

      (http://www./gatk/gatkdocs/org_broadinstitute_sting_gatk_walkers_variantutils_CombineGVCFs.html)

      來生成相應(yīng)的vcf格式的variants結(jié)果。

      4. Variant recalibration

      最后一步還是跟之前一樣的VQSR來對variants進行一系列的校正,得到最終可以使用的vcf文件。

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多