R: Multi-Locus Linkage Disequilibrium

LDscan {pegas} | R Documentation

## Multi-Locus Linkage Disequilibrium

### Description

`LDscan` computes a matrix of pairwise linkage disequilibrium (LD) coefficients (|r|) from a set of loci (which must be bi-allelic; if not, the results are not guaranteed to be meaningful). The genotypes must be phased.

`LDmap` plots a matrix of LD coefficients, optionally with the positions of the loci.

### Usage

    LDscan(x, ...)

    ## S3 method for class 'DNAbin'
    LDscan(x, quiet = FALSE, what = c("r", "Dprime"), ...)
    ## S3 method for class 'loci'
    LDscan(x, depth = NULL, quiet = FALSE,
            what = c("r", "Dprime"), ...)

    LDmap(d, POS = NULL, breaks = NULL, col = NULL, border = NA,
          angle = 0, asp = 1, cex = 1, scale.legend = 0.8, ...)

### Arguments

`x` | an object of class `"loci"` with phased genotypes.
`depth` | a vector of integers giving the the depth(s) (or lags) at which the r's are calculated. By default, all possible depths are considered.
`quiet` | a logical: should the progress of the operation be printed?
`what` | the quantity to be computed. Two choices are possible: `"r"` (the default) for the absolute value of the correlation between alleles and `"Dprime"` for the (scaled) coefficients.
`d` | a correlation matrix (can be an object of class `"dist"`).
`POS` | an optional vector of locus positions (e.g., from a VCF file; see examples).
`breaks` | a vector of break intervals to count the values in `d`; by default, ten equally-sized intervals are used.
`col` | an optional vector of colours; a scale from lightyellow to red is used by default.
`border` | the border of the rectangles: the default is to have no border (this is not the same than default in `rect`; see examples).
`angle` | value (in degrees) to rotate the graphic.
`asp` | the aspect ratio of the graphic; one by default so the elements are squares (not rectangles).
`cex` | the scaling of the labels and text.
`scale.legend` | the scaling of the legend rectangles.
`...` | further arguments passed to methods (`LDscan`) or to `plot.default` (`LDmap`).

### Details

The LD coefficient r is well defined when the two loci have only two alleles. In other cases, LD is well defined (see `LD`) but the definition of r is not clear.

All levels of ploidy are accepted, but all loci should have the same ploidy level.

If `depth` is used, the r's are calculated only for the pairs of loci that are distant by these values in `x`, but necessarily on the chromosome. The returned list has names set with the values of `depth`.

The value returned is actually |r| (not r^2).

### Value

`LDscan` returns an object of class `"dist"` by default, or a list if `depth` is used.

### Author(s)

Emmanuel Paradis

### See Also

`LD`, `read.vcf`

### Examples

    data(woodmouse)
    d <- LDscan(woodmouse)
    LDmap(d, seg.sites(woodmouse), seq(0, 1, .1))

    ## Not run:
    ## Download the VCF file from Dryad:
    ## https://doi.org/10.5061/dryad.446sv.2

    ## the VCF file should have this name:
    fl <- "global.pop.GATK.SNP.hard.filters.V3.phased_all.pop.maf.05.recode.vcf.gz"

    info.fly <- VCFloci(fl)

    ## LD map from the first 100 loci:
    x <- read.vcf(fl, to = 100) # read only 100 loci
    res <- LDscan(x)
    bks <- seq(0, 1, 0.2)
    LDmap(res, info.fly$POS[1:100], bks, scale.legend = 3)

    ## check the chromosomes:
    table(info.fly$CHROM)

    ## LD map from 100 loci randomly distributed on the chromosome:
    s <- ceiling(seq(1, 224253, length.out = 100))
    xs <- read.vcf(fl, which.loci = s)
    res2 <- LDscan(xs)
    LDmap(res2, info.fly$POS[s], bks, scale.legend = 3)

    ## something simpler with 10 loci:
    x10 <- x[, 1:10]
    ## the VCF file has no locus IDs, so we give some here:
    names(x10) <- paste0("Loc", 1:10)
    res10 <- LDscan(x10, quiet = TRUE)
    LDmap(res10, angle = 45, border = NULL)

    ## End(Not run)

[Package pegas version 1.1 Index]