在 bed 和 vcf 相交后解析出基因名称
Parse out gene name after bed and vcf intersect
我正在寻找根据床坐标和 vcf 位置之间的交集向 vcf 文件添加新的 'GENE_ID' 列。 'GENE_ID' 已经作为床文件中的第 4 列存在。基本上我需要知道如何将 bed 文件中的基因名称列 (GENE_ID) 保存到新的 vcf 文件中!
此外,我想知道如何从多个 vcf 和 bed 文件中获取结果 运行。
假设bed文件如下:
> coord.bed
chr7 71335 73335 ENSG00000232325
chr7 75538 77538 ENSG00000242611
chr7 144930 146930 ENSG00000242474
chr7 148097 150278 ENSG00000240859
chr7 148862 150966 ENSG00000242474
chr7 151179 153179 ENSG00000240859
chr7 164472 166472 ENSG00000261795
chr7 173420 175420 ENSG00000239715
和vcf文件的前三列:
#CHROM POS ID
7 72339 7_31439_T_A_b37
7 75999 7_31504_G_A_b37
7 146125 7_34713_A_C_b37
7 149978 7_34918_C_T_b37
7 174401 7_35119_G_A_b37
所需的输出:
#CHROM POS ID GENE_ID
7 72339 7_31439_T_A_b37 ENSG00000232325
7 75999 7_31504_G_A_b37 ENSG00000242611
7 146125 7_34713_A_C_b37 ENSG00000242474
7 150478 7_34918_C_T_b37 ENSG00000242474
7 174401 7_35119_G_A_b37 ENSG00000239715
如有任何建议,我将不胜感激!
这是 bedtools
的一种方式。 awk
暂时向 bedtools
提供正确的格式并打印所需的最终结果。
% bedtools intersect\
-a <(awk -v OFS="\t" '{print "chr",,,}' vcf)\
-b <(awk -v OFS="\t" '{print ,,,}' bed)\
-wb | awk -v OFS="\t" '{print substr(,4,length()-3),,,}'
7 72339 7_31439_T_A_b37 ENSG00000232325
7 75999 7_31504_G_A_b37 ENSG00000242611
7 146125 7_34713_A_C_b37 ENSG00000242474
7 149978 7_34918_C_T_b37 ENSG00000240859
7 149978 7_34918_C_T_b37 ENSG00000242474
7 174401 7_35119_G_A_b37 ENSG00000239715
多个文件见bedtools intersect --help
:
Note: -b may be followed with multiple databases and/or
wildcard (*) character(s).
bedtools v2.28.0
数据
% cat bed
chr7 71335 73335 ENSG00000232325
chr7 75538 77538 ENSG00000242611
chr7 144930 146930 ENSG00000242474
chr7 148097 150278 ENSG00000240859
chr7 148862 150966 ENSG00000242474
chr7 151179 153179 ENSG00000240859
chr7 164472 166472 ENSG00000261795
chr7 173420 175420 ENSG00000239715
% cat vcf
7 72339 7_31439_T_A_b37
7 75999 7_31504_G_A_b37
7 146125 7_34713_A_C_b37
7 149978 7_34918_C_T_b37
7 174401 7_35119_G_A_b37
我正在寻找根据床坐标和 vcf 位置之间的交集向 vcf 文件添加新的 'GENE_ID' 列。 'GENE_ID' 已经作为床文件中的第 4 列存在。基本上我需要知道如何将 bed 文件中的基因名称列 (GENE_ID) 保存到新的 vcf 文件中!
此外,我想知道如何从多个 vcf 和 bed 文件中获取结果 运行。
假设bed文件如下:
> coord.bed
chr7 71335 73335 ENSG00000232325
chr7 75538 77538 ENSG00000242611
chr7 144930 146930 ENSG00000242474
chr7 148097 150278 ENSG00000240859
chr7 148862 150966 ENSG00000242474
chr7 151179 153179 ENSG00000240859
chr7 164472 166472 ENSG00000261795
chr7 173420 175420 ENSG00000239715
和vcf文件的前三列:
#CHROM POS ID
7 72339 7_31439_T_A_b37
7 75999 7_31504_G_A_b37
7 146125 7_34713_A_C_b37
7 149978 7_34918_C_T_b37
7 174401 7_35119_G_A_b37
所需的输出:
#CHROM POS ID GENE_ID
7 72339 7_31439_T_A_b37 ENSG00000232325
7 75999 7_31504_G_A_b37 ENSG00000242611
7 146125 7_34713_A_C_b37 ENSG00000242474
7 150478 7_34918_C_T_b37 ENSG00000242474
7 174401 7_35119_G_A_b37 ENSG00000239715
如有任何建议,我将不胜感激!
这是 bedtools
的一种方式。 awk
暂时向 bedtools
提供正确的格式并打印所需的最终结果。
% bedtools intersect\
-a <(awk -v OFS="\t" '{print "chr",,,}' vcf)\
-b <(awk -v OFS="\t" '{print ,,,}' bed)\
-wb | awk -v OFS="\t" '{print substr(,4,length()-3),,,}'
7 72339 7_31439_T_A_b37 ENSG00000232325
7 75999 7_31504_G_A_b37 ENSG00000242611
7 146125 7_34713_A_C_b37 ENSG00000242474
7 149978 7_34918_C_T_b37 ENSG00000240859
7 149978 7_34918_C_T_b37 ENSG00000242474
7 174401 7_35119_G_A_b37 ENSG00000239715
多个文件见bedtools intersect --help
:
Note: -b may be followed with multiple databases and/or wildcard (*) character(s).
bedtools v2.28.0
数据
% cat bed
chr7 71335 73335 ENSG00000232325
chr7 75538 77538 ENSG00000242611
chr7 144930 146930 ENSG00000242474
chr7 148097 150278 ENSG00000240859
chr7 148862 150966 ENSG00000242474
chr7 151179 153179 ENSG00000240859
chr7 164472 166472 ENSG00000261795
chr7 173420 175420 ENSG00000239715
% cat vcf
7 72339 7_31439_T_A_b37
7 75999 7_31504_G_A_b37
7 146125 7_34713_A_C_b37
7 149978 7_34918_C_T_b37
7 174401 7_35119_G_A_b37