Skip to content

Releases: magnusdv/pedtools

pedtools 2.7.1

08 Sep 12:02
Compare
Choose a tag to compare

New features

  • New function swapGenotypes() for swapping the genotypes of two individuals.

  • New plot argument line.main for title placement.

  • cousinPed() and halfCousinPed() gain argument symmetric, which if TRUE gives a symmetric shape when plotted (female line on the left side; male line of the right).

pedtools 2.7.0

28 Jun 12:26
Compare
Choose a tag to compare

New features

  • plot.ped() gains a new argument, spouseOrder, to specify the display order of spouses.

  • readPed() and as.ped() now include a addMissingFounders argument, supporting pedigree files where (some or all) founders are not explicitly listed (i.e., entries in the fid or mid columns that do not appear in the id column).

  • readPed() and as.ped() now also feature a sexCodes argument, accommodating pedigree files where sex is indicated by codes other than the standard 0 (unknown), 1 (male), 2 (female).

  • reorderPed() has improved flexibility, allowing the reordering of a subset of the pedigree.

  • selfingPed() now accepts a vector of ID labels as the first argument. (Previously, only the number of selfings could be given.)

  • The plotting argument showEmpty, controlling the appearance of missing genotypes, now accepts a function, e.g. leaves().

Other changes

  • getComponent() behaves better when the pedigree has only one component.

  • ped() checks for illegal sex entries earlier than before, thus avoiding certain (rare) problems.

  • Brush up on code and documentation.

pedtools 2.6.0

01 Apr 16:02
Compare
Choose a tag to compare

This is a large release with several new features, including a few (relatively minor) breaking changes.

Breaking changes

  • In pedigree plots, long labels are now automatically folded to an approximate width of 12 characters by default. Use the new argument foldLabs to adjust the folding width, or to switch off folding (foldLabs = FALSE).

  • When adding children or parents to a pedigree, the default labelling of new individuals has been simplified. The new labels are now always the smallest integers not already in use. (Previous versions used "NN_1", "NN_2", etc for pedigrees with non-numeric labels.)

  • labels(x) now always returns a character vector, also when x is a list of pedigrees. Use labels(x, unlist = FALSE) to retain the old behaviour.

New features

  • addChildren(x, ...), and its companions addSon() and addDaughter(), now works across components of x, when x is a list of pedigrees. For instance, this now works as expected: singletons(1:2, sex = 1:2) |> addSon(1:2).

  • New function addChild() is similar to addSon() and addDaughter(), but allows the sex to be set programmatically, also to sex = 0.

  • plot.ped() gains argument textAnnot allowing highly customisable text annotations around and inside pedigree symbols.

  • ancestors(), descendants(), commonAncestors() and commonDescendants() gain a new argument maxGen limiting the analysis to the given number of generations.

  • transferMarkers() gains the argument checkAttrs for checking consistency of marker attributes across pedigree components.

  • New function .setSNPfreqs() for modifying allele frequencies when all markers are biallelic. (Experimental; not yet exported.)

Bug fixes

  • addSon() and addDaughter() now fail more gracefully if a parent ID is duplicated.

  • Fixed regression error in selectMarkers().

pedtools 2.5.0

05 Nov 11:15
Compare
Choose a tag to compare

New features

  • New functions maskPed() and unmaskPed() for anonymising pedigree data, and restoring them.

  • New function setAlleleLabels() for changing the allele labels of a marker.

  • The .pedScaling() gains arguments autoScale and minsize.

  • readPed() gains argument colSkip, useful e.g., when reading .ped files with an AFF column.

  • The relabel() function for relabelling individuals now allows the argument new to be a function, taking the old labels as input. For instance, relabel(x, toupper) gives upper-case labels for everyone.

Bug fixes

  • Preserve the class attribute of MARKERS when subsetting.

pedtools 2.4.0

03 Oct 07:05
Compare
Choose a tag to compare

New features

  • The plot() method now handles general (unnested) lists of ped objects. This means that, for instance, with x = list(nuclearPed(1), cousinPed(1), singleton(1)), the command plot(x) simply works. Previously all ped lists had to be handled by plotPedList(). (This is still needed for finer control of each component, and with nested lists.)

  • nMarkers() and hasMarkers() have a new argument compwise for more detailed output for ped lists.

  • linearPed(0) now produces a singleton (instead of an error).

  • setAfreq() now automatically updates the mutation model of the affected marker, if present.

  • readFreqDatabase() now accepts frequency files using the long format of MERLIN.

  • readFreqDatabase() gains a logical argument scale1, which, if TRUE, scales all vectors to sum 1.

pedtools 2.3.1

24 Aug 17:40
Compare
Choose a tag to compare

New features

  • New function singletons() for creating a list of singletons.

  • New S3 summary() method handling lists of (possibly disconnected) pedigrees.

  • setGenotype() can set the genotype of multiple individuals or markers in the same call. Also, individuals can be specified with selector functions like leaves() and founders(), as in: nuclearPed() |> addMarker() |> setGenotype(ids = founders, geno = "1/2").

  • plot.ped() gains argument trimLabs, defaulting to TRUE, which removes line breaks at the start of ID labels. For example: nuclearPed() |> addMarker(geno = c("a/a", "b/b", NA)) |> plot(marker = 1, labs = "1"). (Compare with plot(..., trimLabs = F).)

  • The showEmpty argument of plot.ped() is more user friendly, allowing for instance: nuclearPed() |> addMarker() |> plot(marker = 1, showEmpty = "1").

  • readFreqDatabase() gains an optional argument df, a data frame of allele frequencies in either "list" or "allelic ladder" format. This is useful in cases where the raw data must be read or modified manually for some reason.

  • Add CITATION file.

Bug fixes

  • Forgotten argument strict in setAfreq() for pedlists.
  • Fix glitch affecting textAbove and textInside.
  • Fix title in (still experimental) plot.list().
  • Fixed interpretation of marker names in setMarkers(x, alleleMatrix).

pedtools 2.2.0

05 Jun 06:44
Compare
Choose a tag to compare

New features

  • plot.ped() gains new arguments fill, lty, lwd and hatchDensity.

  • The pedprobr function setMutationModel() has been moved to pedtools and renamed to setMutmod(). Unlike its predecessor, this has a new argument update, allowing to update existing models (i.e., leaving unspecified parameters unchanged) instead of creating new models from scratch.

  • generations() have been rewritten, with a new parameter what controlling what the function computes: Possible values of what are "max" (default; return only the number of generations in the pedigree), "compMax" (if pedigree has several components, return the generation number of each), "indiv" (individual generation numbering as in the plot) or "depth" (individual generation numbering defined by length of the longest chain up to a founder).

  • In swapSex() and setSex(), the ids parameter may now be the name of a selector function operating on the input pedigree. This is convenient when piping; for example, x |> setSex(ids = leaves, sex = 0) sets unknown sex for all leaves of x.

  • print.ped() is more pipe-friendly, returning the ped object invisibly (not the data frame, as before).

  • addMarker() gains argument locusAttr.

Bug fixes

  • Fixed a bug in randomPed(), which caused the function to run out of mating options sometimes.

  • The pedigree plot alignment fails in some cases (see mayoverse/kinship2#13). When this happens the plot method reverts to DAG mode and gives a warning.

pedtools 2.1.1

11 Jan 08:39
Compare
Choose a tag to compare

New features

  • The plot.ped() method has been internally refactored into 5 functions. Three of these calculate various parameters: .pedAlignment(), .pedScaling() and .pedAnnotation(). The remaining two, drawPed() and .annotatePed() actually draw stuff on the graphics device. As indicated by the dot prefixes, these functions are primarily intended for internal use. Nevertheless, they are documented and exported, to make them available for other packages requiring special plot methods. (For example, the latest version of ibdsim2::haploDraw() use this to compute automatic margins.)

  • The function randomPed() has been completely rewritten, ensuring that the output is always a connected pedigree. The new version takes as input the total pedigree size (n) and the number of founders (f).

  • removeIndividuals() gains an argument remove, taking as value either "ancestors" or "descendants" (possibly abbreviated. The default value ("descendants") behaves as the previous version. A typical application of remove = "ancestors" is to remove founders, as in linearPed(2) |> removeIndividuals(1, remove = "anc").

  • Both relabel() and removeIndividuals() gain an argument returnLabs. If TRUE, the functions return a vector of the pedigree members about to be modified/removed, instead of actually performing any changes.

  • Pedigree construction is generally faster, due to various code improvements. Also, ped() gains an argument detectLoops, which if set to FALSE may cut runtime significantly in some cases.

  • New function setFounderInbreeding(), which is more flexible (and pipe friendly!) than the previous founderInbreeding<-(). The latter will continue to exist.

  • More informative summary() for pedigrees.

pedtools 1.3.0

07 Jun 07:48
Compare
Choose a tag to compare

New features

  • New function avuncularPed() for creating aunt/uncle - nephew/niece pedigrees.

  • New function addAllele() for extending the allele set of a marker.

  • addSon() and addDaughter() are now more flexible. The previous argument parent has been renamed to parents and accepts one or two parents in any order.

  • mergePed() has been overhauled. In particular the new argument by makes it much more user friendly.

  • setAfreq() gains argument strict.

Other

  • Minor improvements of README and vignette.

  • Fixed bug in setGenotype() when setting multiple markers.

  • Fixed bug ignoring alleles in distributeMarkers().

pedtools 1.2.0

31 Mar 07:41
Compare
Choose a tag to compare

New features

  • pedtools now depends on R 4.1 (or later) because of the pipe operator |>.

  • New function setSNPs() for creating and attaching a set of SNP markers with given positions and allele frequencies.

  • New function distributeMarkers() for creating and attaching equal markers evenly across a set of chromosomes (by default, the human autosomes).

  • New function halfSibTriangle() implementing an interesting breeding pattern.

Bug fixes

  • transferMarkers() now ignores members of unknown sex when checking compatibility.

  • Fixed bug in addMarker() when input is a list of pedigrees.

  • Fixed glitches in setMap().

Other

  • Various improvements in code and docs.

  • Added many tests.

  • Rewrite README example to show piping.