Hi all
I am having problems processing a BAM file using Bio:B::Sam.
I want to examine variants in a BAM file using code developed from the example offered by Lincoln Stein on the CPAN Bio:B::Sam page. When I run my code (below) I get errors saying:
Use of uninitialized value in transliteration (tr///) at myScript.pl line 22
and also
Use of uninitialized value $refbase in concatenation (.) or string at myScript.pl line 24
It seems that my code is not reading or accessing the reference genome correctly, can any one point me towards a solution?
Thanks
Ross
#!usr/bin/perl -w
use Bio:B::Sam;
use strict;
my $bamFile="myBamFile.bam";
my $bam = Bio:B::Sam->new(-bam => $bamFile,
-fasta=>"MyReference.fasta",
-autoindex => 1);
my @targets = $bam->seq_ids;
my @SNPs; # this will be list of SNPs
my $snp_caller = sub {
my ($seqid,$pos,$p) = @_;
my $segment=$bam->segment($seqid);
my $refbase = $bam->segment($seqid,$pos,$pos)->dna;
$refbase=~tr/a-z/A-Z/;
print $refbase." \n";
};
foreach my $chr (@targets){
print $chr."\n";
$bam->pileup($chr,$snp_caller);
}
I am having problems processing a BAM file using Bio:B::Sam.
I want to examine variants in a BAM file using code developed from the example offered by Lincoln Stein on the CPAN Bio:B::Sam page. When I run my code (below) I get errors saying:
Use of uninitialized value in transliteration (tr///) at myScript.pl line 22
and also
Use of uninitialized value $refbase in concatenation (.) or string at myScript.pl line 24
It seems that my code is not reading or accessing the reference genome correctly, can any one point me towards a solution?
Thanks
Ross
#!usr/bin/perl -w
use Bio:B::Sam;
use strict;
my $bamFile="myBamFile.bam";
my $bam = Bio:B::Sam->new(-bam => $bamFile,
-fasta=>"MyReference.fasta",
-autoindex => 1);
my @targets = $bam->seq_ids;
my @SNPs; # this will be list of SNPs
my $snp_caller = sub {
my ($seqid,$pos,$p) = @_;
my $segment=$bam->segment($seqid);
my $refbase = $bam->segment($seqid,$pos,$pos)->dna;
$refbase=~tr/a-z/A-Z/;
print $refbase." \n";
};
foreach my $chr (@targets){
print $chr."\n";
$bam->pileup($chr,$snp_caller);
}