vcf文件提取信息及排序

vcf文件示例

VCF文件简介:
VCF(Variant Call Format)文件是一种常用的存储基因组变异信息的文本文件格式。它由一系列的元数据行(以"#"开头)和数据行组成。下面是VCF文件的主要组成部分:

  1. 元数据行(Metadata lines):以"#"开头的行,用于描述VCF文件的相关信息,如文件版本、参考基因组等。其中,以"##"开头的行为注释行,用于描述或定义特定的元数据。例如,##fileformat用于指定文件的格式,##INFO用于定义变异的相关信息。
  2. 列标题行(Header line):以"#"开头的非注释行,用于描述数据列的名称和格式。其中,前九列(CHROM、POS、ID、REF、ALT、QUAL、FILTER、INFO、FORMAT)为必需的列,其他列用于存储样本相关的信息。
  3. 数据行(Data lines):由列标题行之后的每一行组成,用于存储具体的变异信息。每一列对应于一个样本,其中前九列是固定的,后续列用于存储每个样本的基因型信息。
  4. INFO字段:位于每一行的INFO列中,用于存储与变异相关的附加信息。它以分号分隔的键值对形式表示,如"DP=20;AF=0.5",其中DP表示测序深度,AF表示突变等位基因的频率。
  5. FORMAT字段:位于列标题行的FORMAT列中,用于定义每个样本的基因型信息的格式。它以冒号分隔的关键字表示,如"GT:DP:GQ",其中GT表示基因型,DP表示测序深度,GQ表示基因质量。
    VCF文件是广泛用于存储和共享基因组变异数据的标准格式,具有可读性和灵活性,方便进行基因组变异的注释和分析。

因为我的有不同的变异类型,所有用正则把它们区分出来

open IN,"<$ARGV[0]";
open OU,">$ARGV[1]";
while (){
if($_=~/^#/){next};
chomp;
my @list=split;
my $chr=@list[0],my $pos=@list[1];

my @r=@list[0]=~/(\d+)/g;
my $r=@r[0];


  # 使用正则表达式匹配冒号前的字符
my @match=@list[7] =~ /;(.*?)=/g;
my $match=@match[0];
# 替换字符VDB为SNP
$match =~ s/VDB/SNP/g;  
# 替换字符IS为INDEL
$match =~ s/IS/INDEL/g;

print OU "$chr\t$r\t$pos\t$match\n";
}
close IN;
close OU;
匹配的结果

这里我想看变异来自哪套染色体,所以要排序,来自A和B染色体的区分开,所以这里只排序第二和第三列的内容:

sort -k2,2n -k3,3n t1 >t2
排序后的结果

你可能感兴趣的:(vcf文件提取信息及排序)