Advertisement
Guest User

Untitled

a guest
May 10th, 2012
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. use strict;
  2.  
  3. use Bio::DB::Sam;
  4. use Data::Dumper;
  5. use MLDBM qw(DB_File Storable);
  6. use Fcntl;
  7.  
  8. my $foo = $ARGV[0];
  9. chomp $foo;
  10. my $idx;
  11. my $idx2;
  12. if(-e $foo.".lidx") {
  13.     tie %$idx,'MLDBM', $foo.".lidx", O_RDWR, 0666 or die "$! $foo.lidx";
  14. }
  15. else {
  16.     tie %$idx,'MLDBM', $foo.".lidx", O_CREAT|O_RDWR, 0666 or die "$! $foo.lidx";
  17.     my $bam = Bio::DB::Bam->open($foo);
  18.  
  19.     my $header = $bam->header;
  20.     my $cnt = 0;
  21.     my $pos = $bam->tell;
  22.     while(my $a = $bam->read1()) {
  23.         if( $cnt % 10000 == 0 ) {
  24.             print STDERR "$cnt:". $pos."\n";
  25.             $idx->{$cnt} = $pos;
  26.         }
  27.         $pos = $bam->tell;
  28.         $cnt++;
  29.     }
  30. }
  31.  
  32. my $bam = Bio::DB::Bam->open($foo);
  33. my $header = $bam->header;
  34. $bam->seek(int($idx->{$ARGV[1]}),0);
  35. print STDERR $bam->tell ." $idx->{$ARGV[1]}\n";
  36. my $aln = $bam->read1();
  37. print $aln->qname."\n";
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement