The function `FindBestPam`
computes both the average
and the variance of the PAM distance of a given alignment.
To accomplish this it needs an array of similarity matrices calculated
at a rather dense range of PAM distances.
The range and coarseness of the array of matrices will
have some influence on the accuracy of the computation.
By using the variable **DMS**, set with the command
`CreateDayMatrices` (§), these computations tend to
be very accurate. For example

> CreateDayMatrices(): # assign the range of similarity matrices to DMS. > DB := ReadDb('~cbrg/DB/SwissProt'): > m := Match(op(Sequence(Entry(8948))), op(Sequence(Entry(8972)))); > m := LocalAlign(m, DM); # align at 250 PAM > m := FindBestPam(m, DMS); # find best PAM number and its variance

The PAM distance is in the range delimited by

> 1.96 * sqrt(m[PamVariance]); 9.7225 > m[PamNumber] - "; m[PamNumber] + ""; 11.5157 30.9607with 95% confidence.

For this particular example, the match is short and hence the uncertainty of the PAM distance is large.

These functions are implemented using efficient methods and located within the kernel of the system. The time (in seconds) required to find the alignment and then find the best PAM distance for this alignment are as follows:

> rtime(LocalAlign(m,DM)); 0.01975501 > rtime(FindBestPam(m,DMS)); 0.02198303