samtools mpileup处理的原始结果向来比较麻烦,写了一个小程序只生成碱基reads,但不进行任何过滤:
#!/usr/bin/env perl
use strict;
use warnings;
use Getopt::Long;
my %opt;
GetOptions(\%opt, "i=s", "o=s", "sd=s", "ad=s", "aq=s");
my $usage = <<"USAGE";
Usage: perl $0 -i <pileup> [options]
CreationTime:
ModifyTime:
Note:
Options:
-i input file
eg: perl $0 -i file.pileup > result
USAGE
die $usage if(!$opt{i});
open IN, ($opt{i} =~ /\.gz$/) ? "gzip -dc $opt{i} |" : $opt{i} or die $!;
my (@tmp, @qual, @base, %index);
while(<IN>)
{
chomp;
@tmp = split /\t/;
next if($tmp[2] eq "N");
while($tmp[4] =~ /[\+-](\d+)[ATCGNatcgn]+/)
{
$tmp[4] =~ s/[\+-]\d+[ATCGNatcgn]{$1}//;
}
$tmp[4] =~ s/\^\S//g; #\<\=\>\-\!\?\/\'\"\)\(\]\[\*\\\.\+,;:@&#%0-9A-Z