R 如何从vcf文件中按顺序计算人口中的个体数
我想从一个vcf文件中得到每个种群中的个体数量,按照种群被读入的顺序。我的文件的字段如下所示R 如何从vcf文件中按顺序计算人口中的个体数,r,bioinformatics,vcf-variant-call-format,R,Bioinformatics,Vcf Variant Call Format,我想从一个vcf文件中得到每个种群中的个体数量,按照种群被读入的顺序。我的文件的字段如下所示 ##fileformat=VCFv4.2 ##fileDate=20180425 ##source="Stacks v1.45"
##fileformat=VCFv4.2
##fileDate=20180425
##source="Stacks v1.45"
##INFO=<ID=NS,Number=1,Type=Integer,Description="Number of Samples With Data">
##INFO=<ID=AF,Number=.,Type=Float,Description="Allele Frequency">
##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">
##FORMAT=<ID=DP,Number=1,Type=Integer,Description="Read Depth">
##FORMAT=<ID=AD,Number=1,Type=Integer,Description="Allele Depth">
##FORMAT=<ID=GL,Number=.,Type=Float,Description="Genotype Likelihood">
##INFO=<ID=locori,Number=1,Type=Character,Description="Orientation the
corresponding Stacks locus aligns in">
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT
CHALIFOUR_2003_ChHis-1 CHALIFOUR_2003_ChHis-13 CHALIFOUR_2003_ChHis-14
CHALIFOUR_2003_ChHis-15
un 1027 13_65 C T . PASS NS=69;AF=0.188;locori=p GT:DP:AD
0/1:16:9,7 0/0:39:39,0 0/0:17:17,0 0/0:39:39,0
##fileformat=VCFv4.2
##fileDate=20180425
##source=“Stacks v1.45”
##信息=
##信息=
##格式=
##格式=
##格式=
##格式=
##信息=
#CHROM POS ID REF ALT QUAL过滤器信息格式
CHALIFOUR_2003_ChHis-1 CHALIFOUR_2003_ChHis-13 CHALIFOUR_2003_ChHis-14
CHALIFOUR_2003_ChHis-15
un 1027 13_65 C T。通过NS=69;AF=0.188;locori=p GT:DP:AD
0/1:16:9,7 0/0:39:39,0 0/0:17:17,0 0/0:39:39,0
请参见此处的示例文件
例如,在我链接到的文件中,我有两个群体,Chalifour 2003和Chalifour 2015。个人有一个前缀“CHALIFOUR_2003…”来标识这一点
我希望能够提取如下内容:
Chalifour_2003*35
Chalifour 2015*45
“35”和“45”表示每个群体中的个体数量(尽管这些数字是由人组成的)。我一点也不关心输出的格式,我只需要数字,重要的是要按照读取到文件中的顺序列出人口
如果您对获取此信息的途径有任何建议,我们将不胜感激。使用
data.table
包读取vcf文件,您可以执行以下操作:
library(data.table)
df <- fread("~/Downloads/ChaliNoOddsWithOuts.vcf")
samples <- colnames(df)[-c(1:9)]
table(gsub("(.*_.*)_.*","\\1", samples))
您看过
vcfR
软件包了吗?它有<代码> Read .VCFR < /代码>,然后您可以将前缀提取到一个新的列中,并使用<代码> GROPYBY()/<代码>和<代码> CONTUTE()/代码>从<代码> DPLYR 包。
grep "#CHROM" file.vcf | tr "\t" "\n " | tail -n +10 | cut -f1,2 -d'_' | uniq -c