Computing Manhattan distances between genomes
Computes the (weighted) Manhattan distances beween all pairs of genomes.
distManhattan(pan.matrix, scale = 0, weights = rep(1, ncol(pan.matrix)))
pan.matrix |
A pan-matrix, see |
scale |
An optional scale to control how copy numbers should affect the distances. |
weights |
Vector of optional weights of gene clusters. |
The Manhattan distance is defined as the sum of absolute elementwise differences between two vectors. Each genome is represented as a vector (row) of integers in pan.matrix. The Manhattan distance between two genomes is the sum of absolute difference between these rows. If two rows (genomes) of the pan.matrix are identical, the corresponding Manhattan distance is 0.0.
The scale can be used to control how copy number differences play a role in the distances computed. Usually we assume that going from 0 to 1 copy of a gene is the big change of the genome, and going from 1 to 2 (or more) copies is less. Prior to computing the Manhattan distance, the pan.matrix is transformed according to the following affine mapping: If the original value in pan.matrix is x, and x is not 0, then the transformed value is 1 + (x-1)*scale. Note that with scale=0.0 (default) this will result in 1 regardless of how large x was. In this case the Manhattan distance only distinguish between presence and absence of gene clusters. If scale=1.0 the value x is left untransformed. In this case the difference between 1 copy and 2 copies is just as big as between 1 copy and 0 copies. For any scale between 0.0 and 1.0 the transformed value is shrunk towards 1, but a certain effect of larger copy numbers is still present. In this way you can decide if the distances between genomes should be affected, and to what degree, by differences in copy numbers beyond 1. Notice that as long as scale=0.0 (and no weighting) the Manhattan distance has a nice interpretation, namely the number of gene clusters that differ in present/absent status between two genomes.
When summing the difference across gene clusters we can also up- or downweight some clusters compared
to others. The vector weights must contain one value for each column in pan.matrix. The
default is to use flat weights, i.e. all clusters count equal. See geneWeights
for
alternative weighting strategies.
A dist
object (see dist
) containing all pairwise Manhattan distances
between genomes.
Lars Snipen and Kristian Hovde Liland.
# Loading a pan-matrix in this package data(xmpl.panmat) # Manhattan distances between genomes Mdist <- distManhattan(xmpl.panmat) ## Not run: # Making a dendrogram based on shell-weighted distances library(ggdendro) weights <- geneWeights(xmpl.panmat, type = "shell") Mdist <- distManhattan(xmpl.panmat, weights = weights) ggdendrogram(dendro_data(hclust(Mdist, method = "average")), rotate = TRUE, theme_dendro = FALSE) + labs(x = "Genomes", y = "Shell-weighted Manhattan distance", title = "Pan-genome dendrogram") ## End(Not run)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.