GenOO
view release on metacpan or search on metacpan
lib/GenOO/Data/File/SAM/Record.pm view on Meta::CPAN
# POD documentation - main docs before the code
=head1 NAME
GenOO::Data::File::SAM::Record - Object representing a record of a sam file
=head1 SYNOPSIS
# Object representing a record of a sam file
# To initialize
my $sam_record = GenOO::Data::File::SAM::Record->new(
fields => [qname,flag, rname, pos, mapq, cigar,
rnext, pnext, tlen, seq, qual, tags]
);
=head1 DESCRIPTION
This object represents a record of a sam file and offers methods for accessing the different attributes.
It implements several additional methods that transform original attributes in more manageable attributes.
eg. from the FLAG attribute the actual strand is extracted etc.
=head1 EXAMPLES
# Check if the record corresponds to a match
my $mapped = $sam_record->is_mapped;
# Check if the record corresponds to a non match
my $unmapped = $sam_record->is_unmapped;
# Parse the FLAG attribute and return 1 or -1 for the strand
my $strand = $sam_record->strand;
=cut
# Let the code begin...
package GenOO::Data::File::SAM::Record;
$GenOO::Data::File::SAM::Record::VERSION = '1.5.2';
#######################################################################
####################### Load External modules #####################
#######################################################################
use Modern::Perl;
use autodie;
use Moose;
use namespace::autoclean;
#######################################################################
####################### Interface attributes ######################
#######################################################################
has 'fields' => (
traits => ['Array'],
is => 'ro',
isa => 'ArrayRef[Str]',
default => sub { [] },
handles => {
all_fields => 'elements',
add_field => 'push',
map_fields => 'map',
filter_fields => 'grep',
find_field => 'first',
get_field => 'get',
join_fields => 'join',
count_fields => 'count',
has_fields => 'count',
has_no_fields => 'is_empty',
sorted_fields => 'sort',
},
required => 1,
);
has 'tags' => (
is => 'ro',
builder => '_read_tags',
init_arg => undef,
lazy => 1,
);
has 'alignment_length' => (
is => 'ro',
builder => '_calculate_alignment_length',
init_arg => undef,
lazy => 1,
);
has 'start' => (
is => 'ro',
builder => '_calculate_start',
init_arg => undef,
lazy => 1,
);
has 'stop' => (
is => 'ro',
builder => '_calculate_stop',
init_arg => undef,
lazy => 1,
);
has 'strand' => (
is => 'ro',
builder => '_calculate_strand',
( run in 0.541 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )