50% off: Unlimited data and AI learning.
State of Data and AI Literacy Report 2025

onemap (version 2.0-4)

seriation: Seriation

Description

Implements the marker ordering algorithm Seriation (Buetow & Chakravarti, 1987).

Usage

seriation(input.seq, LOD = 0, max.rf = 0.5, tol=10E-5)

Arguments

input.seq

an object of class sequence.

LOD

minimum LOD-Score threshold used when constructing the pairwise recombination fraction matrix.

max.rf

maximum recombination fraction threshold used as the LOD value above.

tol

tolerance for the C routine, i.e., the value used to evaluate convergence.

Value

An object of class sequence, which is a list containing the following components:

seq.num

a vector containing the (ordered) indices of markers in the sequence, according to the input file.

seq.phases

a vector with the linkage phases between markers in the sequence, in corresponding positions. -1 means that there are no defined linkage phases.

seq.rf

a vector with the recombination frequencies between markers in the sequence. -1 means that there are no estimated recombination frequencies.

seq.like

log-likelihood of the corresponding linkage map.

data.name

name of the object of class outcross with the raw data.

twopt

name of the object of class rf.2pts with the 2-point analyses.

Details

Seriation is an algorithm for marker ordering in linkage groups. It is not an exhaustive search method and, therefore, is not computationally intensive. However, it does not guarantee that the best order is always found. The only requirement is a matrix with recombination fractions between markers. Next is an adapted excerpt from Mollinari et al (2009) describing the Seriation algorithm:

The map is initiated with each of the m markers and the matrix R(recombination fraction matrix). Considering Mi as the initial marker, Mj is positioned to the right if Mi if the recombination fraction between them is the smallest fraction between Mi and the other m1 markers. From the remaining m1 markers, Mk is chosen if it has the smallest recombination fraction with Mi. The recombination fractions of Mk and both external loci of the positioned markers, Mleft (the most external marker to the left) and Mright (the most external marker to the right) are compared. If r^MkMright>r^MkMleft, Mk is positioned to the left of the group of markers, and if the relationship is inverse, to the right. In the case of ties, the internal loci of the group already positioned are considered. The procedure is repeated until all markers are positioned, therefore providing m orders (one for each marker at the initial position). For each order, the continuity index is calculated as CI=i<jr^MiMj(ij)2. The best order is considered the one that gives the smallest CI value.

NOTE: When there are to many pairs of markers with the same value in the recombination fraction matrix, it can result in ties during the ordination process and the Seriation algorithm may not work properly. This is particularly relevant for outcrossing populations with mixture of markers of type D1 and D2. When this occurs, the function shows the following error message: There are too many ties in the ordination process - please, consider using another ordering algorithm.

After determining the order with Seriation, the final map is constructed using the multipoint approach (function map).

References

Buetow, K. H. and Chakravarti, A. (1987) Multipoint gene mapping using seriation. I. General methods. American Journal of Human Genetics 41: 180-188.

Mollinari, M., Margarido, G. R. A., Vencovsky, R. and Garcia, A. A. F. (2009) Evaluation of algorithms used to order markers on genetics maps. Heredity 103: 494-502.

See Also

make.seq, map

Examples

Run this code
# NOT RUN {
  ##outcross example
  data(example.out)
  twopt <- rf.2pts(example.out)
  all.mark <- make.seq(twopt,"all")
  groups <- group(all.mark)
  LG3 <- make.seq(groups,3)
  LG3.ser <- seriation(LG3)

  ##F2 example
  data(fake.f2.onemap)
  twopt <- rf.2pts(fake.f2.onemap)
  all.mark <- make.seq(twopt,"all")
  groups <- group(all.mark)
  LG1 <- make.seq(groups,1)
  LG1.ser <- seriation(LG1)
  LG1.ser
# }

Run the code above in your browser using DataLab