51 lines
859 B
Perl
51 lines
859 B
Perl
package SAM_to_AlignGraph;
|
|
|
|
## Static class
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
use AlignGraph;
|
|
use Carp;
|
|
|
|
use SAM_reader;
|
|
use SAM_entry;
|
|
|
|
sub construct_AlignGraph {
|
|
my ($sam_file) = @_;
|
|
|
|
my $graph = new AlignGraph();
|
|
|
|
my $sam_reader = new SAM_reader($sam_file);
|
|
|
|
my $counter = 0;
|
|
|
|
while ($sam_reader->has_next()) {
|
|
|
|
$counter++;
|
|
print STDERR "\r[$counter] " if $counter % 100 == 0;
|
|
|
|
my $sam_entry = $sam_reader->get_next();
|
|
|
|
my $scaff = $sam_entry->get_scaffold_name();
|
|
my $read_acc = $sam_entry->get_read_name();
|
|
|
|
if ($sam_entry->is_query_unmapped()) { next; }
|
|
|
|
|
|
|
|
my $query_strand = $sam_entry->get_query_transcribed_strand();
|
|
|
|
my ($genome_coords_aref, $query_coords_aref) = $sam_entry->get_alignment_coords();
|
|
|
|
$graph->add_alignment($read_acc, $scaff, $query_strand, $genome_coords_aref);
|
|
|
|
}
|
|
|
|
return($graph);
|
|
}
|
|
|
|
1; #EOM
|
|
|
|
|