Bio-Community
view release on metacpan or search on metacpan
lib/Bio/Community/IO/Driver/unifrac.pm view on Meta::CPAN
Sequence.6 Sample.2 1
For each Bio::Community::Member $member generated from a Unifrac file,
$member->desc() contains the content of the first field, i.e. the first column.
Since the Unifrac format does not specify a member ID, one is automatically
generated and can be retrieved using $member->id().
Note that member counts (the third column) is optional. Example:
Sequence.1 Sample.1
Sequence.1 Sample.2
Sequence.2 Sample.1
Sequence.3 Sample.1
Sequence.4 Sample.2
Sequence.5 Sample.1
Sequence.6 Sample.3
Sequence.6 Sample.2
In this case the data is to be interpreted as presence/absence data. When
reading a Unifrac file without counts, all members are given a count of 1.
Conversely, when writing a Unifrac file, if all members have a count of 1, then
the third column is not written. Also, when writing Unifrac files, any spaces in
community member name or member description is replaced by a dot.
=head1 CONSTRUCTOR
See L<Bio::Community::IO>.
=head1 AUTHOR
Florent Angly L<florent.angly@gmail.com>
=head1 SUPPORT AND BUGS
User feedback is an integral part of the evolution of this and other Bioperl
modules. Please direct usage questions or support issues to the mailing list,
L<bioperl-l@bioperl.org>, rather than to the module maintainer directly. Many
experienced and reponsive experts will be able look at the problem and quickly
address it. Please include a thorough description of the problem with code and
data examples if at all possible.
If you have found a bug, please report it on the BioPerl bug tracking system
to help us keep track the bugs and their resolution:
L<https://redmine.open-bio.org/projects/bioperl/>
=head1 COPYRIGHT
Copyright 2011-2014 by Florent Angly <florent.angly@gmail.com>
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.1 or,
at your option, any later version of Perl 5 you may have available.
=cut
package Bio::Community::IO::Driver::unifrac;
use Moose;
use Method::Signatures;
use namespace::autoclean;
use Bio::Community::Member;
extends 'Bio::Community::IO';
with 'Bio::Community::Role::IO',
'Bio::Community::Role::Table';
our $multiple_communities = 1; # format supports several communities per file
our $explicit_ids = 0; # IDs are not explicitly recorded
#### sorting only effective for first community???
our $default_sort_members = 0; # unsorted
our $default_abundance_type = 'count'; # absolute count (positive integer)
our $default_missing_string = 0; # empty members get a '0'
has '_line' => (
is => 'rw',
isa => 'PositiveInt',
required => 0,
init_arg => undef,
default => 0,
lazy => 1,
);
has '_col' => (
is => 'rw',
isa => 'PositiveInt',
required => 0,
init_arg => undef,
default => 2,
lazy => 1,
);
has '_members' => (
is => 'rw',
isa => 'HashRef', # HashRef[Bio::Community::Member] but keep it lean
required => 0,
init_arg => undef,
default => sub { {} },
lazy => 1,
predicate => '_has_members',
);
has '_current_name' => (
is => 'rw',
isa => 'Str',
required => 0,
init_arg => undef,
default => undef,
lazy => 1,
);
has '_community_names' => (
is => 'rw',
isa => 'ArrayRef', # Arrayref[Str] but keep it lean
required => 0,
( run in 0.776 second using v1.01-cache-2.11-cpan-39bf76dae61 )