My watch list
my.chemeurope.com

# Retention distance

Retention distance, or RD, is a concept in thin layer chromatography, designed for quantitative measurement of equal-spreading of the spots on the chromatographic plate and one of the Chromatographic response functions. It is calculated from the following formula:

$R_D = \Bigg[(n+1)^{(n+1)} \prod^n_{i=0}{(R_{F(i+1)}-R_{Fi})\Bigg]^{\frac{1}{n}}}$

where n is the number of compounds separated, Rf (1...n) are the Retention factor of the compounds sorted in non-descending order, Rf0 = 0 and Rf(n+1) = 1.

## Theoretical considerations

The coefficient lies always in range <0,1> and 0 indicates worst case of separation (all Rf values equal to 0 or 1), value 1 indicates ideal equal-spreading of the spots, for example (0.25,0.5,0.75) for three solutes, or (0.2,0.4,0.6,0.8) for four solutes.

This coefficient was proposed as an alternative to earlier approaches, such as delta-Rf, delta-Rf product or MRF (Multispot Response Function). Besides its stable range, the advantage is a stable distribution as a random variable, regardless of compounds investigated.

In contrast to the similar concept called Retention uniformity, Rd is sensitive to Rf values close to 0 or 1, or close to themselves. If two values are not separated, it is equal to 0. For example the Rf values (0,0.2,0.2,0.3) (two compounds not separated at 0.2 and one at the start ) result in RD equal to 0, but RU equal to 0.3609. When some distance from 0 and spots occurs, the value is larger, for example Rf values (0.1,0.2,0.25,0.3) give RD = 0.4835, RU = 0.4066.

## Calculation

The calculation of the RD requires some operations and is quite difficult to perform in spreadsheets. The following implementations may help. They take the vector of Rf values, returning the single RD value.

The R (programming language)/S-PLUS implementation:

rd <- function (x)
{
x <- sort(x)
n <- length(x)
d <- diff(c(0,x,1));
pd <- prod(d);
rd <- ((n+1)^(n+1)*pd)^(1/n);
return(rd);
}



The GNU Octave/Matlab implementation:

function res = rd(x)
x = sort(x);
n = length(x);
d = diff([0 x 1]);
pd = prod(d);
res = ((n+1).^(n+1).*pd).^(1./n);
endfunction


The Scilab implementation:

function res = rd(x)
x = gsort(x,"g","i");
n = length(x);
d = diff([0 x 1]);
pd = prod(d);
res = ((n+1).^(n+1).*pd).^(1./n);
endfunction