Jombart, Thibaut t.jombart at imperial.ac.uk
Fri Feb 17 14:34:14 CET 2012

```Hello

Actually no, as prox.mat is a proximity matrix. So the code is looking, amongst the possible ancestors, for the one with the largest proximity.
>From the documentation of seqTrack:
"
prox.mat: an optional matrix of proximities between
haplotypes/genotypes used to resolve ties in the choice of
ancestors, by picking up the 'closest' ancestor amongst
possible ancestors, in the sense of ‘prox.mat’.
‘prox.mat[i,j]’ must indicate a proximity for the
relationship 'i ancestor to j'. For instance, if ‘prox.mat’
contains spatial proximities, then ‘prox.mat[i,j]’ gives a
measure of how easy it is to migrate from location 'i' to
'j'.
"

As for the threshold, values less than 1e-12 can usually be considered as zero. The only way it could be a problem is if distances between, say, bacteria in a petri dish were expressed in millions of km.

Cheers

Thibaut

--
######################################
Dr Thibaut JOMBART
MRC Centre for Outbreak Analysis and Modelling
Department of Infectious Disease Epidemiology
Imperial College - School of Public Health
St Mary’s Campus
Norfolk Place
London W2 1PG
United Kingdom
Tel. : 0044 (0)20 7594 3658
t.jombart at imperial.ac.uk
________________________________________
From: adegenet-forum-bounces at r-forge.wu-wien.ac.at [adegenet-forum-bounces at r-forge.wu-wien.ac.at] on behalf of Joseph Hughes [hughes.joseph at gmail.com]
Sent: 16 February 2012 14:16

Dear all,

I am trying to understanding how seqTrack uses the proximity matrix in the code and I am a bit confused about the following section (line 106 in seqTrack.R):

## Choose the most connected ancestor, given prox.mat
if(!is.null(prox.mat)){ # if we've got no other info
toKeep <- test.equal(max(prox.mat[ances,idx]), prox.mat[ances,idx])
ances <- ances[toKeep]
}

It seems to me that the ancestor that has the maximum distance to the progenitor, is being kept. Is this correct?

Also how was the threshold in the following chosen and how would this influence a study looking at spread over very short distance:

## AUXILIARY FUNCTIONS ##
## test equality in floats
test.equal <- function(val,vec){
return(abs(val-vec) < 1e-12)
}

Kind regards,

Joseph Hughes

```