Bio-FastParsers

 view release on metacpan or  search on metacpan

lib/Bio/FastParsers/Blast/Xml.pm  view on Meta::CPAN

package Bio::FastParsers::Blast::Xml;
# ABSTRACT: Front-end class for XML BLAST parser
# CONTRIBUTOR: Aymeric NAOME <aymeric.naome@gmail.com>
$Bio::FastParsers::Blast::Xml::VERSION = '0.221230';
use Moose;
use namespace::autoclean;

use Carp;
use XML::Bare;

extends 'Bio::FastParsers::Base';

use aliased 'Bio::FastParsers::Blast::Xml::BlastOutput';

# TODO: check behavior with single iterations, hits or hsps

# public attributes (some inherited)



has 'blast_output' => (
    is       => 'ro',
    isa      => 'Maybe[Bio::FastParsers::Blast::Xml::BlastOutput]',
    init_arg => undef,
    lazy     => 1,
    builder  => '_build_blast_output',
);

## no critic (ProhibitUnusedPrivateSubroutines)

sub _build_blast_output {
    my $self = shift;

    my $file = $self->file;
    my $xb = XML::Bare->new( file => $file )
        or croak "Can't open '$file' for reading: $!";

    my $bo = $xb->parse->{'BlastOutput'};
    unless ($bo) {
        carp "Warning: '$file' unexpectedly empty; returning no BlastOutput!";
        return;
    }

    return BlastOutput->new( _root => $bo, _parent => undef);
}

## use critic


__PACKAGE__->meta->make_immutable;
1;

__END__

=pod

=head1 NAME

Bio::FastParsers::Blast::Xml - Front-end class for XML BLAST parser

=head1 VERSION

version 0.221230

=head1 SYNOPSIS



( run in 0.774 second using v1.01-cache-2.11-cpan-ceb78f64989 )