0
|
1 package Bio::Roary::SequenceLengths;
|
|
2
|
|
3 # ABSTRACT: Take in a fasta file and create a hash with the length of each sequence
|
|
4
|
|
5 =head1 SYNOPSIS
|
|
6
|
|
7 Add labels to the groups
|
|
8 use Bio::Roary::SequenceLengths;
|
|
9
|
|
10 my $obj = Bio::Roary::SequenceLengths->new(
|
|
11 fasta_file => 'abc.fa',
|
|
12 );
|
|
13 $obj->sequence_lengths;
|
|
14
|
|
15 =cut
|
|
16
|
|
17 use Moose;
|
|
18 use Bio::SeqIO;
|
|
19 use Bio::Roary::Exceptions;
|
|
20
|
|
21 has 'fasta_file' => ( is => 'ro', isa => 'Str', required => 1 );
|
|
22 has 'sequence_lengths' => ( is => 'ro', isa => 'HashRef', lazy => 1, builder => '_build_sequence_lengths' );
|
|
23 has '_input_seqio' => ( is => 'ro', isa => 'Bio::SeqIO', lazy => 1, builder => '_build__input_seqio' );
|
|
24
|
|
25 sub _build__input_seqio {
|
|
26 my ($self) = @_;
|
|
27 return Bio::SeqIO->new( -file => $self->fasta_file, -format => 'Fasta' );
|
|
28 }
|
|
29
|
|
30 sub _build_sequence_lengths {
|
|
31 my ($self) = @_;
|
|
32
|
|
33 my %sequence_lengths;
|
|
34 while ( my $input_seq = $self->_input_seqio->next_seq() ) {
|
|
35 $sequence_lengths{ $input_seq->display_id } = $input_seq->length();
|
|
36 }
|
|
37 return \%sequence_lengths;
|
|
38 }
|
|
39
|
|
40 no Moose;
|
|
41 __PACKAGE__->meta->make_immutable;
|
|
42
|
|
43 1;
|