Mercurial > repos > dereeper > roary_plots
comparison Roary/lib/Bio/Roary/ParseGFFAnnotationRole.pm @ 0:c47a5f61bc9f draft
Uploaded
author | dereeper |
---|---|
date | Fri, 14 May 2021 20:27:06 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:c47a5f61bc9f |
---|---|
1 package Bio::Roary::ParseGFFAnnotationRole; | |
2 | |
3 # ABSTRACT: A role for parsing a gff file efficiently | |
4 | |
5 =head1 SYNOPSIS | |
6 | |
7 with 'Bio::Roary::ParseGFFAnnotationRole'; | |
8 | |
9 =cut | |
10 use Moose::Role; | |
11 use Bio::Tools::GFF; | |
12 | |
13 has 'gff_file' => ( is => 'ro', isa => 'Str', required => 1 ); | |
14 | |
15 has '_tags_to_filter' => ( is => 'ro', isa => 'Str', default => 'CDS' ); | |
16 has '_gff_parser' => ( is => 'ro', isa => 'Bio::Tools::GFF', lazy => 1, builder => '_build__gff_parser' ); | |
17 has '_awk_filter' => ( is => 'ro', isa => 'Str', lazy => 1, builder => '_build__awk_filter' ); | |
18 | |
19 sub _gff_fh_input_string { | |
20 my ($self) = @_; | |
21 return 'sed -n \'/##gff-version 3/,/^>/p\' '.$self->gff_file.'| grep -v \'^>\''." | " . $self->_awk_filter; | |
22 } | |
23 | |
24 sub _build__awk_filter { | |
25 my ($self) = @_; | |
26 return | |
27 'awk \'BEGIN {FS="\t"};{ if ($3 ~/' | |
28 . $self->_tags_to_filter | |
29 . '/) print $9;}\' '; | |
30 } | |
31 | |
32 1; |