annotate Roary/lib/Bio/Roary/ParseGFFAnnotationRole.pm @ 0:c47a5f61bc9f draft

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