Genetic Analysis of Populations with Mixed Reproduction

Poppr is an R package designed for analysis of populations with mixed modes of
sexual and clonal reproduction. It is built around the framework of adegenet's
genind and genlight objects and offers the following implementations:

clone censoring of populations at any of multiple levels of a hierarchy

convenient counting of multilocus genotypes and sub-setting of populations with multiple levels of hierarchy

define multilocus genotypes

calculation of indices of genotypic diversity, evenness, richness, and rarefaction

drawing of dendrograms with bootstrap support for genetic distances

drawing of minimum spanning networks for genetic distances

calculation of the index of association
()
or ()

batch processing on any server that has R ( ≥ 2.15.1) installed

calculation of Bruvo's distance for microsatellite (SSR) markers (implemented in C for speed)

All new features in testing will be released on different branches. These
features will be in various stages of development and may or may not be
documented. Install with caution. The below command would install features on
the the branch called "devel". Note that these branches might be out of date
from the master branch.

In Spring of 2014, Dr. Niklaus J. Grünwald, Dr. Sydney E. Everhart and Zhian N.
Kamvar wrote a primer for population genetic analysis in R located at
http://grunwaldlab.github.io/Population_Genetics_in_R.

Please note that this project is released with a Contributor Code of
Conduct. By participating in this project you agree to abide by its
terms. If you wish to contribute code to poppr, please fork the repository and
create a pull request with your added feature.

News

The function bootgen2genind() will help users take advantage of
bootstrapping distance functions from other packages that require genind
objects. For details, see https://github.com/grunwaldlab/poppr/issues/112 and
https://github.com/grunwaldlab/poppr/issues/111

The x axis for the genotype_curve() plot is now numeric, allowing you to
fit a smoothing function over the points without having to use the hack
geom_smooth(aes(group = 1)). This is thanks to Kara Woo for pointing this
out on twitter (https://twitter.com/kara_woo/status/783336540407685120).

The "show" method for genclone objects now delimits populations and strata
by a comma, avoiding confusion with multi-word population names. Thanks to
@knausb for the fix in https://github.com/grunwaldlab/poppr/pull/116.

Documentation for poppr.amova now contains a note about significance testing
with the ade4 function randtest.amova.

rraf() now gives options for minor allele correction encompassed in the
internal function rare_allele_correction(). This extends also to pgen()
and psex(), which must correct minor allele frequencies by default. See
https://github.com/grunwaldlab/poppr/issues/81 for details.

poppr has moved to version 2.0 due to adegenet's recent update. The hierarchy
slot introduced in version 1.1 is now being moved to adegenet and renamed
strata. For maximum backwards compatibility, all of the hierarchy methods
still exist, but they are deprecated and will print a warning with the proper
function to use. If you were accessing the hierarchy slot without using the
*hierarchy() methods, your code will fail as the hierarchy slot now should
only contain a formula object.

The default plot for the index of association will now be a single histogram.
The user has the option to visualize the standardized index of association
(index = "rbarD", default) or the classic index of association (index = "Ia"). If the user uses the function ia with the argument valuereturn = TRUE, then the resulting object can be plotted with the plot function.

The function poppr will now plot all populations in a single faceted plot
instead of one plot per population.

aboot and bruvo.boot will now be able to utilize any function to generate
trees (suggested in issue #18).

The mlg slot in the genclone object can now optionally hold an MLG class
object. This object will contain different definitions of multilocus
genotypes, allowing the user to switch between observed, custom, and mlgs
defined given a genetic distance threshold.

minimum spanning network functions gain the ability to include reticulations
using the option include.ties

mlg.filter will contract multilocus genotypes given a genetic distance and
threshold using one of three algorithms. It can report statistics such as the
multilocus genotypes returned, the number of samples within each multilocus
genotype, the thresholds at which multilocus genotypes were collapsed, and the
genetic distance matrix that represents the new multilocus genotypes.

filter_stats will show you graphical output of all the algorithms in
mlg.filter.

The genclone object is a new extension of the genind object from adegenet.
This object contains slots containing population hierarchies and multilocus
genotype definitions and will work with all analyses in adegenet and poppr.

aboot will allow the user to create bootstrapped dendrograms for ANY
distance that can be calculated on genind or genpop objects.

plot_poppr_msn will plot minimum spanning networks produced with poppr.

private_alleles will give information about the presence of private alleles
within a genind or genclone object.

recode_polyploids will take in a polyploid genind/genclone object (with
missing alleles coded as extra zero-value allele) and recode them to have
frequencies relative to the observed number of alleles.

genotype_curve will create a genotype accumulation curve for increasing
number of loci.

mlg.id will return a list indicating the samples belonging to a specific
multilocus genotype.

The default shuffling algorithm for calculating the index of association has
changed from multilocus-style sampling to permutation of alleles. All of the 4
methods are available, but new assignments are as follows: Method 1: permute
alleles, Method 2: parametric bootstrap, Method 3: non-parametric bootstrap,
Method 4: Multilocus-style sampling. Previously, Multilocus was 1 and the rest
followed in the same order. There should be no compatibility issues with this
change. Functions affected: ia, popprshufflepop

Bootstrapping algorithm for bruvo.boot function was not shuffling the repeat
lengths for each locus resulting in potentially erroneous bootstrap support
values. This has been fixed by implementing an internal S4 class that will
allow direct bootstrapping of the data and repeat lengths together.

An occasional error, "INTEGER() can only be applied to a 'integer', not a
'NULL'" in bruvo.boot or bruvo.dist fixed.