Bio::ViennaNGS::FeatureIO(3)

NAME
Bio::ViennaNGS::FeatureIO - Versatile I/O interface for Bio::ViennaNGS feature annotation classes

SYNOPSIS
  use Bio::ViennaNGS::FeatureIO;

  # initialize a FeatureIO object from a Bed6 file
  my $data_bed = Bio::ViennaNGS::FeatureIO->new(
                                               file => "file.bed6",
                                               filetype => 'Bed6',
                                               instanceOf => 'Feature',
                                               base => 0,
                                              );

  # initialize a FeatureIO object from a Bed12 file
  my $data_bed = Bio::ViennaNGS::FeatureIO->new(
                                               file => "file.bed12",
                                               filetype => 'Bed12',
                                               instanceOf => 'Bed',
                                               base => 0,
                                              );

  # initialize a FeatureIO object from a bedGraph file
  my $obj = Bio::ViennaNGS::FeatureIO->new(file       => "file.bg",
                                           filetype   => "BedGraph",
                                           instanceOf => "BedGraph",
                                           base => 0,
                                          );

DESCRIPTION
This module provides an object-oriented interface for easy input/output operations on common feature annotation file formats. It is - by design - a very generic module that stores all annotation data within the "$self->data" ArrayRef. "$self->filetype" specifies the file type to be processed. Currently parsing of Bed6, Bed12 and bedGraph files is supported. "$self->instanceOf" determines the object type of elements held in the "$self->data" ArrayRef(s).

In case of parsing Bed6 data, "$self->instanceOf" can either be "Feature", "FeatureChain" or "FeatureChainBlock". While the first causes "$self->data" to hold an ArrayRef to individual Bio::ViennaNGS::Feature objects, the second triggers creation of individual Bio::ViennaNGS::FeatureChain objects (each containing exactly one feature interval, corresponding to individual Bed6 entries). A "FeatureChainBlock" value to the "$self->instanceOf" causes "$self->data" to hold an ArrayRef to a combined Bio::ViennaNGS::FeatureChain containing an entire block of features. In the context of Bed annotation this corresponds to a single Bed12 line (e.g. gene/transcript) that contains all individual Bed6 features (e.g. exons). Evidently, this only makes sense if all Bed6 features originate from the same chromosome and strand.

In case of parsing Bed12 data, currently only "Bed" is supported for "$self->instanceOf", causing "$self->data" to hold an ArrayRef to Bio::ViennaNGS::Bed (aka Bed12) features. This will be adjusted to Bio::ViennaNGS::FeatureChain in the future.

In case of pasring bedGraph data, "$self->instanceOf" is ignored and "$self->data" holds an ArrayRef to individual Bio::ViennaNGS::BedGraph objects.

Bio::ViennaNGS::FeatureIO implements the Bio::ViennaNGS::FeatureBase role, i.e. it is aware of 0-based (default) or 1-based features (aka BED intervals).

METHODS

parse_bedgraph_file
parse_bed6_file.
parse_bed12_file
    These methods are used for object construction and should not be called directly.

DEPENDENCIES

Bio::ViennaNGS::Bed
Bio::ViennaNGS::Feature
Bio::ViennaNGS::FeatureChain
Bio::ViennaNGS::BedGraphEntry
File::Slurp
Carp

AUTHORS
Michael T. Wolfinger <michael@wolfinger.eu>

COPYRIGHT AND LICENSE
Copyright (C) 2014-2018 Michael T. Wolfinger <michael@wolfinger.eu>

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.10.0 or, at your option, any later version of Perl 5 you may have available.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.