日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C2-关于VCF文件合并的几种方法

發布時間:2023/12/20 c/c++ 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C2-关于VCF文件合并的几种方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 個體相同,位點累加,相當于cat文件

vcf-concat A.vcf.gz B.vcf.gz C.vcf.gz | gzip -c > out.vcf.gz

vcf-concat *.vcf.gz | gzip -c > out.vcf.gz

2. 位點相同,個體累加,相當于paste文件

bcftools merge file1.vcf.gz fle2.vcf.gz file3.vcf.gz > out.vcf

bcftools merge file1.vcf.gz fle2.vcf.gz file3.vcf.gz -o out.vcf

3. 位點不同,個體也不同,取兩個VCF文件的交集

3.1 使用bedtools進行操作

grep "#" A.vcf > header.txt grep -v "#" A.vcf | sed 's/Chr1/1/g' > temp.txt cat header.txt temp.txt > A_new.vcf bcftools isec -p isec_output -Oz A_new.vcf.gz B.vcf.gz

結果在isec_output這個文件夾中,這里面有4個文件

1.isec_output/0000.vcf.gz would be variants unique to 1.vcf.gz 2.isec_output/0001.vcf.gz would be variants unique to 2.vcf.gz 3.isec_output/0002.vcf.gz would be variants shared by 1.vcf.gz and 2.vcf.gz as represented in 1.vcf.gz 4.isec_output/0003.vcf.gz would be variants shared by 1.vcf.gz and 2.vcf.gz as represented in 2.vcf.gz

之后得到兩個VCF共有位點的SNP

bcftools merge --merge all 0002.vcf.gz 0003.vcf.gz > merged.vcf

3.2 使用bedops進行操作

這個是得到兩個文件交集的bed文件,region文件

bedops --intersect <(vcf2bed < A.vcf) <(vcf2bed < B.vcf) > answer.bed

這個是得到兩個文件交集的bed文件,位點文件

bedops --intersect <(vcf2bed < A.vcf) <(vcf2bed < B.vcf) > common-regions.bed bedops --everything <(vcf2bed < A.vcf) <(vcf2bed < B.vcf) > all-elements.bed bedops --element-of 1 all-elements.bed common-regions.bed > common-elements.bed

這個是為了得到兩個文件的交集在A中的變異和在B中的變異,這是個體文件

bedops --element-of 1 <(vcf2bed < A.vcf) <(vcf2bed < B.vcf) > answer1.bed bedops --element-of 1 <(vcf2bed <A.vcf) <(vcf2bed < B.vcf) > answer2.bed

4. 位點不同,個體也不同,取兩個VCF文件的并集

針對這個情況,并集文件的獲取需要有兩個文件的bam文件

grep -v "#" A.vcf | cut -f 1,2 > pos1.txt

grep -v "#" B.vcf | cut -f 1,2 > pos2.txt

cat pos1.txt pos2.txt > posAll.txt

得到這兩個文件之后,之后再進行mpileup,得到了每個文件的mpileup格式的文件之后再合并即可

samtools mpileup -A -B -q 20 -Q 20 -f ref.fa bamfile.bam -l posAll.txt -r -o

#! /bin/bash #使用mpileup命令生成vcf文件 #這個示例中只對1號染色體進行了處理 echo "SamtoolsMpileupByChr Begin: " `date` && \ samtools mpileup \ -l chr1Region.bed \ -r 1 \ -q 1 \ -C 50 \ -t DP,DV \ -m 2 \ -F 0.002 \ -f \ human.fasta \ test_3.bam \ --output test.chr1.raw.vcf && \ echo "SamtoolsMpileupByChr End: " `date`

mpileup的命令解釋

-C --adjust-MQ INT 用于降低比對質量的系數,如果reads中含有過多的錯配。不能設置為零。BWA推薦值為50。

-A --count-orphans 在檢測變異中,不忽略異常的reads對。

-I –positions FILE BED文件或者包含區域位點的位置列表文件。位置文件包含兩列,染色體和位置,從1開始計數。BED文件至少包含3列,染色體、開始位置和結束位置,開始端從0開始計數。

-r –region STR 只在指定區域產生pileup,需要已建立索引的bam文件。通常和-l參數一起使用。

-q --min-MQ 要使用的對齊的最小映射質量。

-f --fasta-ref FASTA格式的fadix索引引用文件。文件可以選擇使用bgzip壓縮。

-o –output FILE 生成pileup格式文件或者VCF、BCF文件而不是默認的標準輸出。

-g –BCF 計算基因型的似然值和輸出文件格式為BCF。

-v –VCF 計算基因型的似然值和輸出文件格式為VCF。

-D 輸出每個樣本的reads深度。

-V 輸出每個樣本未比對到參考基因組的reads數量。

-t –output-tags LIST設置FORMAT和INFO的列表內容,以逗號分割。

-u –uncompressed 生成未壓縮的VCF和BCF文件。

-I –skip-indel 不檢測INDEL。

-m –min-ireads INT 候選INDEL的最小間隔的reads。

-F –gap-frac FLOAT 含有間隔reads的最小片段。

總結

以上是生活随笔為你收集整理的C2-关于VCF文件合并的几种方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。