NEWS FILE FOR PACKAGE PARAMLINK

2014-03-31: Version 0.9-6
   * Cleaned up merlin()
   
2013-09-26: Version 0.9-5
   * New feature: Relatedness estimation. The function ibdEstimate() estimates pairwise IBD coefficients 
     (maximum likelihood functionality imported from maxLik package). Checking for pedigree errors is
     conveniently done with the examineKinships() function: This computes IBD coefficients for all pairs in 
     the pedigree and produces a color-coded plot where wrong relationships are easy to spot.
   
2013-09-24: Version 0.9-4
   * New pedigree utility functions: parents(), siblings(), grandparents(), nephews_nieces(), cousins() 
     and unrelated(), similar to the existing functions offspring(), ancestors() and descendants().
     All of these functions take one individual as input, and return a vector identifying all pedigree 
     members with the corresponding relationship to him/her.
   
   * New function related.pairs(), accompanying the above functions: This finds *all* pairs of
     pedigree members having the specified relationship.
   
   * New function branch() extracting the branch of a 'linkdat' object starting with a specified member.
   
   * Bug fix: likelihood.singleton() gave wrong result for genotypes with one missing allele.
   
   * Bug fix: .checkped() crashed when encountering parental IDs not found in the IID column.
   
2013-05-15: Version 0.9-2
   * Added option 'skip.empty.genotypes' in plot.linkdat().
   
   * Changed the default bottom margin in pedigree plots from 4.1 to 0.6.
   

2013-04-15: Version 0.9-1
   * Improved pedigree checking in linkdat(), catching individuals being their own ancestor.

   * New function ancestors() returns a vector of all ancestors of an individual.

   * New function getMarkers() returns the marker indices according to user specification of
     marker name, chromosome and position.

   * New functions as.data.frame.linkres() and lod.peaks() for post processing linkage results.
   
   * The arguments 'nallel' og 'afreq' of setModel() have been depreciated a long time, and are
     now completely removed.

   * Added an example to help page of as.matrix.linkdat(), showing how to use the 'attrs'-
     argument in restore_linkdat().

   * Added package documentation page 'package-paramlink.Rd'.

   * Clean-up of documentation files.


2013-04-05: Version 0.9-0
   * The MERLIN wrapper is extended to X-linked disease models, calling the MINX program.
   
   * New function linkageSim() simulates genotypes for markers linked to a disease locus, 
     conditional on marker allele frequencies (up to 4 alleles) and disease model. This is an 
     extended and improved version of SNPsim, which did the same thing for diallelic markers.
   
  * linkage.power() can now estimate power for markers with up to 4 alleles.

  
2013-04-02: Version 0.8-3
   * Reading and writing large ped-files is now must faster, by using scan() and write() 
     directly instead of read.table() and write.table().
   
   * Added S3 function as.matrix() and its reverse restore_linkdat(), facilitating 
     individual-by-individual operations on linkdat objects.
   
   * Fixed bug in .readMap() which caused allele frequencies to be ignored when reading .freq 
     files in (short) MERLIN format.
   
   * Added "/" separators to the dimnames in the output array of oneMarkerDistribution() and 
     twoMarkerDistribution().

     
2013-03-01: Version 0.8-2
   * The construction of linkdat objects now accepts singleton pedigrees, i.e. consisting of 
     a single individual. 
   
   * Improved plot in exclusionPower().

   
2013-01-02: Version 0.8-1
   * Fixed algorithmic bug in .informative() which caused likelihood() to give wrong answer in 
     certain (rare) cases.

     
2012-10-12: Version 0.8-0
   * New function exclusionPower() replaces exclusion().

   
2012-08-10: Version 0.7-0
   * Removed all calls to .Internal().
   
   * oneMarkerDistribution() behaves better with X-linked markers.
   
   * improved likelihood calculation in twoMarkerDistribution.

   
2012-03-08: Version 0.6-3
   * SNPsim() now stores all simulated markers as diallelic, annotated with the input allele 
     frequencies. (In earlier versions markers with only one allele were stored as monoallelic).
   
   * Fixed bug in mendelianCheck() causing empty result with looped pedigrees.

   
2012-02-10: Version 0.6-2
   * New function simpleSim() for unconditional simulation (gene dropping) of unlinked markers.
   
   * New function lod.varyParam() which computes and plots the LOD score under variable model 
     parameters. Either one or two parameters are allowed to vary; in the latter case a contour 
     plot of the LOD is produced. 
   
   * Added logical argument 'verbose' to mendelianCheck().
   
   * Added argument 'afreq' for specifying allele frequencies in functions SNPsim() and 
     linkage.power(). In earlier versions this was done in given in setModel().
   
   * Fixed bug in addMarker() which deleted other markers when given an allele matrix as input.
   
   * New function exclusion() (undocumented and experimental).

   
2012-01-31: Version 0.6-0
   * Rewritten User's Manual.
   
   * Improved and fixed bugs in merlin().
   
   * Genotypes of more than one marker can now be included in pedigree plots.
   
   * New function oneMarkerDistribution() replacing genotypeDistribution().
   
   * Many small cleanups.

   
2012-01-11: Version 0.5-2
   * Fixed bugs in twoMarkerDistribution().
   
   * Fixed bug in marker() that gave error with missing 'alleles' argument. 
   
   * The 'sim' slot of a linkdat object, with availability statuses in SLINK format, is now 
     depreciated. It is replaced by an 'available' slot for each linkdat object, which 
     simply contains the IDs of available individuals. The main use of this is to indicate 
     availability in SNPsim(), linkage.power() and plot.linkdat(). If the linkdat object 
     includes marker data, the default is to set all genotyped individuals as available. 
   
   * Added optional arguments in the plot.linkdat() function: 
      'available': logical. If TRUE, the available/genotyped individuals are drawn red.
      'col': integer or character vector with colors for the pedigree members. Passed on 
             to kinship2:::plot.pedigree.
      'starred': individuals that should be marked with a star.
      
   * By default, print.linkdat and plot.linkdat now use "/" as marker allele separator.
 
 
2012-01-06: Version 0.5-1
   * merlin() now returns 'linkres' objects, for better summary and plotting of LOD scores.
  
   * relabel() improved.
 
   * marker() stops with an error if the genotypes given don't match the 'alleles' argument.
 
 
2012-01-04: Version 0.5-0
   * Updating the plot.linkdat() function, which now imports plot.pedigree() from the new 
     'kinship2' package (instead of the old 'kinship')
   
   * Many small cleanups.
 
 
2012-01-02: Version 0.4-1
   * genotypeDistribution() can now computes join genotype distributions for any number of 
     individuals (at a single marker). 
   
   * New function twoMarkerDistribution() computes the joint genotype distribution at two 
     linked or unlinked markers for a single individual, possibly conditional on partial 
     data on the two markers.
   
   * New function merlin(): This is a wrapper to MERLIN, which must be properly installed 
     and included in the path variable.
   
   * New function setMap(), for describing the position of the markers. The input should 
     be a data.frame or a map-file/dat-file pair in MERLIN format. 
   
   
2011-12-20: Version 0.4-0
   * The functions lod(), linkage.power(), SNPsim() and genotypeDistribution() now handle 
     looped pedigrees.
   
   * New functions to deal with looped pedigrees: breakLoops() and tieLoops().
   
   * lod() handles markers with more than 2 alleles. The likelihood calculation (using the
     Elston-Stewart algorithm) is done in paramlink:::.likelihood_multi().
   
   * New class 'marker', and related functions marker() and addMarker(). A marker object is 
     an allele matrix with various attributes including allele frequencies, allele names 
     and missing allele symbol.
   
   * linkdat() now handles ped-files with more than one pedigree, outputting a list of 
     linkdat objects.
   
