GenOO
view release on metacpan or search on metacpan
lib/GenOO/Data/File/BED.pm view on Meta::CPAN
# POD documentation - main docs before the code
=head1 NAME
GenOO::Data::File::BED - Object implementing methods for accessing bed formatted files (http://genome.ucsc.edu/FAQ/FAQformat#format1)
=head1 SYNOPSIS
# Object that manages a bed file.
# To initialize
my $bed_file = GenOO::Data::File::BED->new({
FILE => undef,
EXTRA_INFO => undef,
});
=head1 DESCRIPTION
This object offers methods to read a bed file line by line.
=head1 EXAMPLES
# Create object
my $bed_file = GenOO::Data::File::BED->new({
FILE => 't/sample_data/sample.bed.gz'
});
# Read one record at a time
my $record = $bed_file->next_record();
=cut
# Let the code begin...
package GenOO::Data::File::BED;
$GenOO::Data::File::BED::VERSION = '1.5.2';
#######################################################################
####################### Load External modules #####################
#######################################################################
use Modern::Perl;
use autodie;
use Moose;
use namespace::autoclean;
#######################################################################
######################### Load GenOO modules ######################
#######################################################################
use GenOO::Data::File::BED::Record;
#######################################################################
####################### Interface attributes ######################
#######################################################################
has 'file' => (
isa => 'Maybe[Str]',
is => 'rw',
required => 1
);
has 'redirect_score_to_copy_number' => (
traits => ['Bool'],
is => 'rw',
isa => 'Bool',
default => 0,
lazy => 1
);
#######################################################################
######################## Private attributes #######################
#######################################################################
has '_filehandle' => (
is => 'ro',
builder => '_open_filehandle',
init_arg => undef,
lazy => 1,
);
#######################################################################
############################## BUILD ##############################
#######################################################################
sub BUILD {
my $self = shift;
$self->init_header;
$self->init_records_cache;
$self->init_records_read_count;
$self->parse_header_section;
}
#######################################################################
######################## Interface Methods ########################
#######################################################################
sub records_read_count {
my ($self) = @_;
return $self->{RECORDS_READ_COUNT};
( run in 0.689 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )