CHANGES IN PEGAS VERSION 1.3


NEW FEATURES

    o plot.haploNet() has a new argument 'col.lab' to change the
      colors of the haplotype labels. It can be changed through the
      option "labels.color" (see ?setHaploNetOptions).

    o The R code of mst() has been replaced by a C code which can be
      1000 times faster with several 100s observations (this improves
      also rmst() and all other functions calling mst()). The code now
      scales very nearly as O(n^2) in practice.

    o rmst() now returns a network with a "backbone-MST" so that
      repeated analyses of the same data are likely to return
      graphically similar networks (see issue #82 on GitHub).


BUG FIXES

    o tajima.test() may use different sets of sites when computing the
      number of segregating sites and the mean pairwise distance. This
      has been fixed by adding pairwise.deletion = TRUE to the call to
      dist.dna (see issue #77 on GitHub).

    o The placement of mutation ticks on alternative links of
      haplotype networks has been fixed (see issue #77 on GitHub).



		CHANGES IN PEGAS VERSION 1.2


NEW FEATURES

    o The new function nullAlleles2NA changes genotypes with at least
      one `null allele' into NA.

    o MMD() now returns invisibly a list with the plotted data (i.e.,
      histogram, empirical density, and expected curve under stable
      population).

    o dist.asd() has now the option 'pairwise.deletion = FALSE'.


BUG FIXES

    o The estimator variance in theta.s() has been corrected (thanks
      to Carsten Wiuf) and the help page has been updated.

    o plot.haploNet() did not handle correctly the 'bg' argument when
      it is a vector of colours. This also affected the plot of MJN
      networks.

    o VCF files with DOS-style end of lines (i.e., CRLF) are now
      supported.

    o Argument 'bg' was not always well interpreted in plot.haploNet()
      and plot.mjn().


OTHER CHANGES

    o There is a new (non-interactive) example in ?replot.

    o The help page of plot.mjn() has been clarified about the usage
      of the arguments 'shape' and 'bg'.



		CHANGES IN PEGAS VERSION 1.1


BUG FIXES

    o plot.haploNet() did not use 'bg' correctly when 'pie' was
      used. The help page has been clarified that this argument could
      also be a function.

    o setHaploNetOptions(pie.colors.function = ) did not work
      correcly; similarly for 'pie.inner.segments.color'.

    o The argument 'scale.ratio' was not always passed correctly among
      internal functions when plotting "haploNet" objects (see issue
      #59 on GH).

    o haplotype.character() failed to work correctly (see issue #61).


OTHER CHANGES

    o amova() now accepts distance objects which inherit the class
      "dist" (instead of being strictly equal).

    o adegenet has been moved from 'Imports' to 'Suggests'.



      		CHANGES IN PEGAS VERSION 1.0


NEW FEATURES

    o The new function mutations() draws mutations on a network (with
      many options; see ?mutations).

    o The new function write.vcf writes an object of class "loci" into
      a VCF file.

    o There is a new cophenetic() method for objects of class
      "haploNet", and a new labels() method.

    o diffHaplo() has been simplified and gains the options 'strict'
      and 'trailingGapsAsN' which are passed to ape::seg.sites().

    o mjn() has a new option 'quiet = FALSE'; its code has been
      improved and is now 10 times faster (25 times with 100 sequences
      resulting in running times less than 15 sec). The returned
      object have the class c("mjn", "haploNet") and there is a new
      plot.mjn() method.

    o replot() has been improved: the instructions are more detailed,
      there is a new option 'col.identifier' to show the node to be
      moved, and the bounding box of the plot is now calculated
      correctly so the network does not "shrink" after each move.

    o plot.haploNet() has two new options: 'shape' and 'xy' to change
      the symbol shapes and their coordinates, respectively.

    o There are two new functions, getHaploNetOptions and
      setHaploNetOptions, to help users change the graphical
      paramaters when plotting haplotype networks.

    o There is a new as.loci() method for matrices.

    o rmst() implements a new algorithm to stop iterations after no
      new links are found: this is controlled by the new options
      'stop.criterion' and 'iter.lim'. There is also a new option
      'quiet = FALSE'.

    o Fst() now runs in the case of a single population, returning the
      Fis (and Fit which equates 1).

    o There is a new vignette "PlotHaploNet" detailing some aspects of
      plotting haplotype networks with pegas, including the new
      features and options.


BUG FIXES

    o A bug was fixed in geoTrans2().

    o as.loci.data.frame() now works with "tibble" objects (thanks to
      Jean-Baka Domelevo Entfellner for the fix).

    o allelicrichness(, method = "rarefaction") used to return the raw
      allelic richness: this is fixed and this function gains the
      option 'min.n' to work with this method (common sample size used
      for all populations).

    o haplotype() on an empty "DNAbin" object returns an empty
      "haplotype" object similarly to pegas 0.12 (see issue #53 on GH).


OTHER CHANGES

    o adegenet has been moved from 'Depends' to 'Imports'.

    o dist.snp() has been removed.



		CHANGES IN PEGAS VERSION 0.14


NEW FEATURES

    o LDscan() gains the option 'what' with two possible choices: "r"
      (the default and previously only choice) and "Dprime".


BUG FIXES

    o haplotype.DNAbin() failed to assign correctly haplotypes in some
      situations with ambiguous bases. This is fixed and the code,
      which now relies on ape::seg.sites, is now 2 to 3 times faster
      if there are a few haplotypes in the data.


OTHER CHANGES

    o In VCFloci(), the option 'chunck.size' has been renamed
      'chunk.size'.



		CHANGES IN PEGAS VERSION 0.13


NEW FEATURES

    o haplotype.DNA() now handles ambiguities and gaps in an improved
      way (see the reference in ?haplotype.DNA). Two options have been
      added to control the behaviour of these analyses: strict = FALSE
      and trailingGapsAsN = TRUE.

    o The new functions geoTrans2 transforms latitudes and longitudes
      from values in decimal degree to character strings (optionally
      with LaTeX format).


BUG FIXES

    o VCFloci() crashed if a path starting with "~" was used.

    o VCF files with large header (> 1 MB) failed to be read.



		CHANGES IN PEGAS VERSION 0.12


NEW FEATURES

    o The new functions F2, F3, and F4 implement the F-statistics
      developed by Patterson et al. (2012, Genetics, 192:1065).

    o The new function stairway implements the method from Polanski
      and Kimmel (2003, Genetics, 165:427) quantifying changes in
      population size from the site frequency spectrum (SFS). There are
      plot() and lines() method.

    o The new function loci2alleles does the reverse operation than
      alleles2loci().

    o The new function theta.tree.hetero estimates THETA from a
      non-ultrametric coalescent tree.

    o The new function Rst computes the R_ST index for microsatellites.

    o The new function loci2SnpMatrix converts SNPs from a "loci"
      object into the S4 class "SnpMatrix" of the BioConductor package
      snpStats.

    o The three new functions allelicrichness, rarefactionplot, and
      rhost analyse allelic richness with various methods.

    o There is a new default method sw() which can use genomic
      positions. sw() now returns an object of class "sw" for which
      there is a plot() method.

    o There are two new methods as.phylo() and as.evonet() for the
          class "haploNet".

    o site.spectrum() is now generic with methods for "DNAbin" (old
      code) and for "loci" (new code). The returned object now has an
      attribute "sample.size" (useful for folded spectra).

    o There is a new summary() method for the class "haplotype" to
      extract haplotype absolute frequencies.

    o There is a new by() method for the class "loci" that by default
      computes allele frequencies by population.

    o H() is now generic with a default method (with the old code) and
      a "loci" method.

    o Fst() has the new option 'na.alleles' ("" by default) to specify
      alleles coding for missing data.

    o LDscan() is now generic with methods for classes "DNAbin" (new
      code) and "loci" (old code). The latter has a new option, depth,
      to specify at what depth(s) (or lags) to compute r^2 values.


BUG FIXES

    o loci2genind() dropped row and column labels when converting an
      object with a single locus.

    o The 'dimnames' were not set correctly in sw().

    o all.equal.haploNet() failed depending on the order of the
      arguments.

    o hw.test() failed if some loci were ignored.

    o plotNetMDS(, k = 2) did not display the x-axis.

    o A bug was fixed in theta.tree() which multiplied the estimates
      of THETA by two.

    o LDmap() failed if there were NA's in the output from LDscan().

    o plot.haploNet(, show.mutation = 2) failed if the network had
      reticulations.

    o alleles2loci(, ploidy = 1) failed.

    o H.loci() did not use the correct values of 'n' (number of
      alleles; number of individuals was used before).


OTHER CHANGES

    o summary.loci() is around 4 times faster.

    o dist.snp() will be removed in the next release: its code has
      been incorporated in dist.asd(), and it now gives a warning.

    o The default of x[, 1] is now drop = FALSE for "loci" objects.

    o print.haplotype() now prints only the first 40 haplotype labels
      and frequencies (see the new summary.haplotype() above).

    o The BioConductor package snpStats is now suggested.



		CHANGES IN PEGAS VERSION 0.11


NEW FEATURES

    o The new generic function sw computes sliding window averages.
      There is a method for "DNAbin" matrices with various options.

    o The new function dist.asd computes the allelic sharing distance
      (ASD) for all diploid genotypes (phased or unphased, with two
      alleles or more).

    o The new function dist.snp computes the ASD for strict SNPs (only
      for unphased, diploid genotypes).

    o The new function unphase unphases the genotypes and eventually
      pools those identical once unphased (e.g., A|T and T|A become
      A/T).

    o The new generic function hap.div computes haplotype diversity.
      There are methods for the "haplotype" and "DNAbin" classes.

    o The new function getPhi returns Phi-statistics from a vector of
      variance components.

    o The new function write.pegas.amova contributed by Brian Knaus
      writes outputs from amova() into files.

    o loci2gening() gains an option unphase (TRUE by default).

    o print.amova() now displays the Phi-statistics thanks to a
      contribution by Zhian Kamvar.

    o VCFloci() and read.vcf() can now read compressed files (.vcf.gz)
      remotely.

    o There is a new haplotype.numeric() method (for 0/1 sequences but
      not only).


BUG FIXES

    o read.vcf(file = "~/chr.vcf") made R crash (apparently only under
      some OSs). Thanks to Frédéric Michaud for the fix.

    o plot.haploNet() failed with the default show.mutation = 1 if the
      distances were all less than one. A warning is now issued and
      show.mutation is changed to 3.

    o Fst() did not use correct sample size with respect to missing
      data: the correction is now done locus by locus.

    o Fst() failed when the data contained only a single locus.

    o amova() failed to compute P-values for the higher levels if the
      levels were not arranged as blocks: the data are now rearranged
      internally.

    o A bug was fixed in unphase().


OTHER CHANGES

    o summary.loci() is faster and scales better: 10 times faster with
      1000 loci, 100 times faster with 10,000 loci.

    o The help page of theta.tree() has been clarified and its example
      extended.

    o mjn() gives a more explicit error message if failing because of
      duplicated sequences.

    o getPloidy() now returns a matrix of integers.



                CHANGES IN PEGAS VERSION 0.10


NEW FEATURES

    o The new function mjn computes the median-joining network
      (Bandelt et al., 1999, Mol Biol Evol, 16:37).

    o The new function msn computes the minimum spanning network
      (Bandelt et al., 1999, Mol Biol Evol, 16:37).

    o The new function rmst computes the randomized minimum spanning
      tree (Paradis, in prep.)

    o The new function plotNetMDS plots a network (class "haploNet")
      using the coordinates of the haplotypes from an MDS done on the
      distance matrix.

    o The new function dist.hamming implements a general purpose
      Hamming distance. It can be used for many types of data,
      particularly the output of haplotype.character().

    o There is a new haplotype.character() method.

    o There is a new all.equal.haploNet() method to compare two
      haplotype networks.

    o haplotype.loci() has a new option (check.phase) to optionally
      skip the check of genotype phasing. The code is also now 2-5
      times faster.

    o haploNet() has a new option, getProb = TRUE, to control whether
      to calculate Templeton's probabilities (in case of difficulties
      with very divergent sequences).

    o The option 'show.mutation' of plot.haploNet() now takes an
      integer between 0 and 3. The default (1) is to show the
      mutations with small segments on the links.

    o loci2genind() has the new option 'ploidy' which is by default
      taken from the data with getPloidy().

    o MMD() has a new option, bw, to specify the bandwidth of the
      empirical density curve.


BUG FIXES

    o plot.haploNet() failed with two haplotypes.

    o loci2genind() handles correctly missing alleles with a new
      option na.alleles = c("0", "."). The default value of 'ploidy'
      is now 2 (see explanation in the help page).

    o haplotype.DNAbin() failed with too many missing data.

    o A bug was fixed in na.omit.loci().


OTHER CHANGES

    o The arguments xlab and ylab in plot.haplotype can now be
      modified from the plot() call.



		CHANGES IN PEGAS VERSION 0.9


NEW FEATURES

    o The new functions LDscan and LDmap analyse linkage
      disequilibrium with multiple loci and phased genotypes.

    o The new function na.omit.loci drops observations with unclearly
      identified genotypes. By default, "0" and "." are considered as
      missing alleles.

    o nuc.div() is now generic with methods for the classes "DNAbin"
      and "haplotype".

    o theta.s() is now generic with a default method (the previous
      code; the argument 's' has been renamed 'x') and a method for
      the class "DNAbin".

    o haplotype.loci() has a new option (compress) to return all
      observed haplotypes without checking their frequencies (mostly
      for internal use).


BUX FIXES

    o read.vcf() and VCFlabels() failed when the VCF file has a large
      header (> 1e5 bytes). The chunk read is now 1 Mb.

    o read.vcf() made R crash when reading files with 1000s of loci
      for a single individual.

    o loci2genind() now treats '.' as a missing allele.

    o amova() with three levels did not work correctly: several bugs
      were fixed.

    o read.vcf() failed to read correctly the last genotype in a row
      if the previous one was different from all the others and if
      only the genotypes are in the file.

    o alleles2loci() now returns the 'population' column as a factor.


OTHER CHANGES

    o haplotype.loci() is 5 to 10 times faster.



		CHANGES IN PEGAS VERSION 0.8-2


NEW FEATURES

    o There is now a print method for objects of class "haploNet".

    o as.igraph.haploNet() and as.network.haploNet() gains a new
      option, altlinks, to output the alternative links in the
      converted object (TRUE by default).


BUX FIXES

    o haplotype.DNAbin() ignored alignment gaps so that identical
      sequences were considered as different if they contained gaps.

    o haplotype.DNAbin() failed with very short sequences (1 or 2
      nucleotides).

    o alleles2loci() did not handle correctly its 'population' option.

    o amova() could not be called within a function. This is fixed.


OTHER CHANGES

    o Updated NAMESPACE file for r-devel.

    o haplotype.loci() is now 2-8 times faster and gains a new option
      (quiet = FALSE) to display or not a message of the progress of
      the analysis.



		CHANGES IN PEGAS VERSION 0.8-1


OTHER CHANGES

    o Minor correction in Fst.Rd.



		CHANGES IN PEGAS VERSION 0.8


NEW FEATURES

    o Seven new functions (VCFloci, VCFheader, VCFlabels, rangePOS,
      is.snp.VCFinfo, selectQUAL, getINFO) are provided to read
      information from VCF files.

    o The new function alleles2loci transforms a matrix of alleles
      (typical for microsatellites) into an object of class "loci".

    o read.vcf() has been completely rewritten with new options.

    o hw.test() is now generic with methods for classes "loci" and
      "genind" (contributed by Thibaut Jombart).

    o is.snp() is now generic with methods for classes "loci" and
      "VCFinfo".

    o There is now a subset method for objects of class "haplotype"
      giving the possibility to select haplotypes with respect to
      their absolute frequency and/or frequency of missing data.

    o There is a new data set (jaguar) with microsatellites from four
      populations of jaguars.


BUG FIXES

    o Subsetting "loci" objects failed when some column names were the
      same (often when reading VCF files).

    o haploNet() failed when no alternative links were found.

    o amova() failed when the factors in the rhs of the formula were
      in a data frame. Thanks to Zhian Kamvar for the fix.


OTHER CHANGES

    o The vignette "ReadingFiles" has been revised and extended.



		CHANGES IN PEGAS VERSION 0.7


NEW FEATURES

    o The new function geod calculates geodesic (aka great-circle)
      distances from coordinates in (decimal) degrees.

    o The new function geoTrans transforms strings such as
      43°12'34" into a numerical value.

    o The new function replot edits the layout of a haplotype network
      interactively or with specified coordinates (typically from a
      previous call to replot).

    o The new function diffHaplo outputs details of the differences
      between two haplotypes.

    o haploNet() now outputs alternative links of a haplotype network.

    o plot.haploNet() has been improved (a bit faster) and has a new
      option 'threshold' to control how alternative links of the
      network are displayed.

    o The option 'show.mutation' of plot.haploNet() has been extended.


OTHER CHANGES

    o haplotype() now takes base ambiguities into account when
      comparing sequences. For consistency, haploNet() now uses
      pairwise deletion when comparing sequences of haplotypes.

    o The attribute "CHR" returned by read.vcf() is now character (was
      integer before).



		CHANGES IN PEGAS VERSION 0.6


NEW FEATURES

    o The new function read.vcf reads VCF files.

    o The new function is.snp tests whether a locus is a SNP.

    o The new function is.phased tests whether a genotype is phased.

    o The new function proba.genotype computes expected genotype
      probabilities under Hardy-Weinberg equilibrium for all levels
      of ploidy and any number of alleles.

    o The new function haplotype.loci extracts haplotypes from phased
      genotypic data.

    o The new function dist.haplotype.loci computes distances among
      haplotypes extracted from loci data.

    o Two new functions, LD and LD2, test for linkage disequilibrium
      with phased and unphased genotypes, respectively.

    o haplotype() is now generic with methods for "DNAbin" and "loci"
      objects.

    o There is a sort() method for objects of class "haplotype".

    o expand.genotype() now works with all levels of ploidy and any
      number of alleles.


BUG FIXES

    o site.spectrum( , folded = FALSE) dit not work correctly.

    o Genotypes with alleles not separated by the default slash (e.g.,
      a|A) were not read correctly.

    o Reordering of alleles has been improved: alleles are now always
      sorted alphabetically within an unphased genotype, e.g., a/A is
      changed to A/a even if A/a was not observed (this was not the
      case before).

    o hw.test() now checks more carefully for ploidy level and accepts
      data with mixed levels of ploidy.


OTHER CHANGES

    o amova() now checks that the term(s) in the rhs of the formula is
      (are) factor(s).

    o Plotting haplotype networks with pies can now be done with
      user-chosen colours for the slices (thanks to Marius Wenzel for
      pointing this out).

    o tajima.test() now returns a warning with less than 4
      observations as this test cannot be done in this situation (an
      error occured before).



		CHANGES IN PEGAS VERSION 0.5-1


NEW FEATURES

    o MMD() now plots the expected distribution of mismatches under
      the assumption of a stable population together with the
      empirical curve (contribution by David Winter). The new option
      'lty' can specify the types of lines. The legend is now at the
      top of the plot.


BUG FIXES

    o theta.tree() returned estimates of Theta divided by 2 (scaled on
      Nu). The estimates are now correct (ie, scaled on 2Nu).



		CHANGES IN PEGAS VERSION 0.5


NEW FEATURES

    o The new function theta.msat computes THETA from micro-satellite
      data using three different estimators.

    o The new function haploFreq extracts the haplotype frequencies,
      possibly using the labels of the original sequences; see
      ?haploFreq for details.

    o plot.haploNet() has the new option 'show.mutation' to display
      the mutations on the links of the network.


OTHER CHANGES

    o Improved DESCRIPTION and NAMESPACE files.

    o The packages igraph and network are no more required.



		CHANGES IN PEGAS VERSION 0.4-5


OTHER CHANGES

    o Improved NAMESPACE file.



		CHANGES IN PEGAS VERSION 0.4-4


NEW FEATURES

    o theta.tree() has a new option, analytical = TRUE, to compute
      THETA and its standard-error with analytical formulae. If FALSE,
      a numerical optimisation is done (as in previous versions).

    o The function mst (minimum spanning tree) has been moved from ape
      to pegas with a new code.


BUG FIXES

    o hw.test() should have one less ddl to its chi2 tests (thanks to
      Gabriel Terraz for the fix).

    o Extracting sequence(s) from an object of class "haplotype" could
      not be printed correctly: this is fixed with a new '[' method
      for this class.

    o The reference to Chakraborty and Weiss (1991) was corrected
      thanks to Kari Vepsäläinen.



		CHANGES IN PEGAS VERSION 0.4-3


OTHER CHANGES

    o Changed some coding in summary.loci().



		CHANGES IN PEGAS VERSION 0.4-2


BUG FIXES

    o amova() did not randomize correctly at the highest level,
      resulting in P-values that were always equal to 1.



		CHANGES IN PEGAS VERSION 0.4-1


BUG FIXES

    o site.spectrum(, folded = FALSE) failed.

    o The variances returned by nuc.div() were inflated (thanks to
      Paulina Ossa for the report).



		CHANGES IN PEGAS VERSION 0.4


NEW FEATURES

    o The new function rr.test by Alastair Potts performs Tajima's test
      of a molecular clock (Genetics, 1993, 135:599).

    o haploNet() has a new argument 'd = NULL' to specify an
      alternative distance matrix among haplotypes.

    o There are two new functions, as.network.haploNet() and
      as.igraph.haploNet() for converting networks of class
      "haploNet" towards other packages.


BUG FIXES

    o plot.haploNet() has now by default asp = 1.



		CHANGES IN PEGAS VERSION 0.3-4


OTHER CHANGES

    o The help command ?loci now points to the man page of read.loci()
      where this class is described.



		CHANGES IN PEGAS VERSION 0.3-3


BUG FIXES

    o read.loci() failed with haploid data. It also failed in some
      situations with the population column. The default behaviour is now
      more flexible and more reliable.

    o Variance components were not correctly computed by amova() in the
      single-level case.

    o print.amova() did not work correctly when amova() was called with
      'nperm = 0'.



		CHANGES IN PEGAS VERSION 0.3-2


BUG FIXES

    o A bug was fixed in Fst().



		CHANGES IN PEGAS VERSION 0.3-1


OTHER CHANGES

    o The default of 'loci.sep' in read.loci() is now "".



		CHANGES IN PEGAS VERSION 0.3


NEW FEATURES

    o The new function edit.loci allows to edit allelic data frame while
      keeping the attributes correct (which edit.data.frame doesn't).

    o There are new rbind() and cbind() methods for objects of class
      "loci".

    o There is a print 'method' for the class "haplotype".

    o `[.loci` has now an option 'drop = TRUE'.

    o There is a vignette detailing how to read allelic data files of
      various formats into R: type vignette("ReadingFiles") in R.


BUG FIXES

    o amova() did not compute SSD correctly with a single level.

    o getAlleles() did not work correctly.

    o read.loci() did not work when 'col.pop' was used.

    o Checking for ordered alleles did not work (i.e, A/a and a/A were
      treated as different genotypes: they are now pooled).

    o The display of haplotype labels by plot.haploNet() was not
      effective.


OTHER CHANGES

    o read.loci() loses the 'skip' option which is replaced by '...'.



		CHANGES IN PEGAS VERSION 0.2


NEW FEATURES

    o The new function site.spectrum computes the (un)folded site
      frequency spectrum of a set of DNA sequences.

    o The new function theta.tree estimates THETA from a phylogenetic tree
      under a simple coalescent model by maximum likelihood.

    o There is now a "[" method for the class "loci".

    o haplotype() has now an option 'labels' to give as rownames of
      the returned object.

    o amova() has a new option 'is.squared' to specify whether the
      distance matrix has been squared beforefand (FALSE by default).

    o write.loci() has a new argument '...' passed to write.table().

    o The functions heterozygosity, nuc.div, theta.h, theta.k and
      theta.s have been moved from ape to pegas.


BUG FIXES

    o amova() did not compute SSD correctly.

    o summary.loci() failed in the presence of NA's.