NAME

Bio::Community - A biological community

SYNOPSIS

use Bio::Community;

my $community = Bio::Community->new( -name => 'soil_1' );
$community->add_member( $member1 );    # add 1 such Bio::Community::Member
$community->add_member( $member2, 3 ); # add 3 such members

print "There are ".$community->get_members_count." members in the community\n";
print "The total diversity is ".$community->get_richness." species\n";

while (my $member = $community->next_member) {
   my $member_id     = $member->id;
   my $member_count  = $community->get_count($member);
   my $member_rel_ab = $community->get_rel_ab($member);
   print "The relative abundance of member $member_id is $member_rel_ab % ($member_count counts)\n";
}

DESCRIPTION

The Bio::Community module represents communities of biological organisms. It is composed of Bio::Community::Member objects at a specified abundance. Each member can represent a species (e.g. an elephant, a bacterium), taxon, OTU, or any proxy for a species.

AUTHOR

Florent Angly florent.angly@gmail.com

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, 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: https://redmine.open-bio.org/projects/bioperl/

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.

APPENDIX

The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _

new

Function: Create a new Bio::Community object
Usage   : my $community = Bio::Community->new( ... );
Args    : -name and -use_weights, see below...
Returns : a new Bio::Community object

name

Function: Get or set the name of the community
Usage   : $community->name('ocean sample 3');
          my $name = $community->name();
Args    : string for the name
Returns : string for the name

use_weights

Function: Set whether or not relative abundance should be normalized by taking
          into accout the weights of the different members (e.g. genome length,
          gene copy number). Refer to the C<Bio::Community::Member->weights()>
          method for more details. The default is to use the weights that have
          given to community members.
Usage   : $community->use_weights(1);
Args    : boolean
Returns : boolean

get_average_weights

Function: If any weights have been set using Bio::Community::IO, return their
          averages.
Usage   : my $averages = $community->get_average_weights;
Args    : none
Returns : Arrayref of averages (one average for each file of weights)

get_members_count

Function: Get the total count of members sampled from the community.
Usage   : my $total_count = $community->get_members_count();
Args    : none
Returns : integer

get_members_abundance, set_members_abundance

Function: Get or set the total abundance of members in the community. Setting
          this option implies that you know the total abundance of the members
          in the community, even though you have not have sampled them all. If
          this value has not been set explicitly, this method returns
          C<get_members_count> by default.
Usage   : $community->set_members_abundance( 1.63e6 );
          # or
          my $total_abundance = $community->get_members_abundance();
Args    : number
Returns : number

add_member

Function: Add members to a community
Usage   : $community->add_member($member, 3);
Args    : * a Bio::Community::Member to add
          * how many of this member to add (positive number, default: 1)
Returns : 1 on success

remove_member

Function: Remove members from a community
Usage   : $community->remove_member($member, 3);
Args    : * A Bio::Community::Member to remove
          * Optional: how many of this member to remove. If no value is
            provided, all such members are removed.
Returns : Number of this member removed

next_member

Function: Access the next member in a community (in no specific order). Be
          warned that each time you change the community, this iterator has to
          start again from the beginning! By default, a single iterator is
          created. However, if you need several independent iterators, simply
          provide an arbitrary iterator name.
Usage   : # Get members through the default iterator
          my $member = $community->next_member();
          # Get members through an independent, named iterator
          my $member = $community->next_member('other_ite');           
Args    : an optional name to give to the iterator (must not start with '_')
Returns : a Bio::Community::Member object

get_all_members

Function: Generate a list of all members in the community.
Usage   : my $members = $community->get_all_members();
Args    : An arrayref of Bio::Community objects
Returns : An arrayref of Bio::Community::Member objects

get_member_by_id

Function: Fetch a member based on its ID.
Usage   : my $member = $community->get_member_by_id(3);
Args    : integer for the member ID
Returns : a Bio::Community::Member object or undef if member was not found

get_member_by_rank

Function: Fetch a member based on its abundance rank. A smaller rank corresponds
          to a larger relative abundance.
Usage   : my $member = $community->get_member_by_rank(1);
Args    : strictly positive integer for the member rank
Returns : a Bio::Community::Member object or undef if member was not found

get_richness

Function: Report the community richness or number of different types of members.
          This is a form of alpha diversity.
Usage   : my $alpha_richness = $community->get_richness();
Args    : none
Returns : integer for the richness

get_count

Function: Fetch the abundance or count of a member
Usage   : my $count = $community->get_count($member);
Args    : a Bio::Community::Member object
Returns : An integer for the count of this member, including zero if the member
          was not present in the community.

get_rel_ab

Function: Determine the relative abundance (in percent) of a member in the
          community.
Usage   : my $rel_ab = $community->get_rel_ab($member);
Args    : a Bio::Community::Member object
Returns : an integer between 0 and 100 for the relative abundance of this member

get_abs_ab

Function: Determine the absolute abundance of a member in the community, i.e.,
          its C<get_rel_ab()> multiplied by its C<get_members_abundance()>.
Usage   : my $abs_ab = $community->get_abs_ab($member);
Args    : a Bio::Community::Member object
Returns : a number for the absolute abundance of this member

get_rank

Function: Determine the abundance rank of a member in the community. The
          organism with the highest relative abundance has rank 1, the second-
          most abundant has rank 2, etc.
Usage   : my $rank = $community->get_rank($member);
Args    : a Bio::Community::Member object
Returns : integer for the abundance rank of this member or undef if the member 
          was not found