Equal spreading in TLC

Investigating a number of the TLC chromatographic systems, full separation often occurs in several cases. A question appears here: which system should be considered to be the best, if selectivity is similar? The intuitive answer is to choose the system in which the spots are most equally spaced between themselves (for example RF = 0.25, 0.50, 0.75 for 3 compounds).

The objective mathematical evaluation of equal-spreading can be done by calculating various CRFs (chromatographic response functions). Two of them – retention uniformity (RU) and retention distance (RD) were recently proposed as better alternative to earlier approaches.

Their main properties are:

  • They are a number in range 0 – 1. 0 means no separation, 1 means perfect equal-spreading.
  • They have similar distribution as a random variable regardless of number of investigated compounds.
  • RU is insensitive to non-separation of two compounds (equal RF values) or RF values equal to 0 or 1. RD is sensitive and equal to 0 in such cases. 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.

If we denote a number of compounds separated as n, Rf values sorted in non-decreasing order as Rf (1…n), Rf0 = 0 and Rf(n+1) = 1, then RU is calculated from the following formula:

$$R_{U} = 1 – \sqrt{\frac{6(n+1)}{n(2n+1)}\sum_{i=1}^{n}{\left(R_{Fi}-\frac{i}{n+1}\right)^2}}$$

and the formula for RD is presented below:

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

How to compute them easily?

The computation in spreadsheets is not easy, it is better to compute them in numerical environments. In R and S-plus, following functions computes the criteria for one system from a vector of Rf values:

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);
ru = function (x)
        x = sort(x)
        n = length(x)
        i = (1:n)/(n+1)
        s = sum((x-i)^2)
        ru = 1-sqrt( (6*(n+1)) / (n*(2*n+1)) * s );


We can use then apply() to compute more values from a matrix.

Analogous functions for MATLAB/Octave can be written:

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);
function res = ru(x)
        x = sort(x);
        n = length(x);
        i = (1:n)./(n+1);
        s = sum((x-i).^2);
        res = 1-sqrt((6.*(n+1))./(n.*(2.*n+1)).*s);

More information and discussion can be found in following paper: 10.1556/JPC.20.2007.1.4

The further investigation led to introduce 2D version of these criteria, useful in ranking of 2D TLC separations.

If we treat a chromatographic plane as an unit square, and the Rf values as x and y coordinates, the distance between two spots can be calculated in following way:


Now, we denote the distance to nearest spot (or a border, if nearer), as B:

$$B_i = \min\left[ D_{i,1} ,\dots, D_{i,n} , x_i , (1-x_i) , y_i , (1-y_i) \right]$$

If we compute such values for all spots, the 2D RU and RD criteria can be computed in following way:

$$R_D = \varphi\sqrt{n}\left(\prod_{i=1}^nB_i\right)^{\frac{1}{n}}$$

$$R_U = \frac{\varphi \sqrt{n}}{n}\sum_{i=1}^nB_i = \frac{\varphi}{\sqrt{n}}\sum_{i=1}^nB_i$$

where phi means the golden ratio value (1.618).

We can use following functions for R/S-plus and Octave/MATLAB to combine TLC systems into pairs and evaluate the separation performance:

tlc2d = function (rf)
    n = nrow(rf)
    p = ncol(rf)
    ru = matrix(0, p, p)
    rd = matrix(0, p, p)
    for (i in 1:p) {
        for (j in i:p) {
            X = rf[, c(i, j)]
            dist = as.matrix(dist(X))
            diag(dist) = 1
            dist = rbind(dist, t(X))
            dist = rbind(dist, t(1 - X))
            mins = apply(dist, 2, min)
            rd[i, j] = prod(mins)^(1/n) * sqrt(n) * (1 + sqrt(5))/2
            ru[i, j] = sum(mins) * (1 + sqrt(5))/(2 * sqrt(n))
            ru[j, i] = ru[i, j]
            rd[j, i] = rd[i, j]
    return(list(rd = rd, ru = ru))
function [rd,ru] = tlc2d(rf)

[n,p] = size(rf);
ru = zeros(p,p);
rd = zeros(p,p);

for i = 1:p
 for j = i:p
	X = rf(:,[i j]);
	first = reshape(X,1,n,2);
        second = reshape(X,n,1,2);
	dists = sqrt(sum((first(ones(n,1),:,:) - second(:,ones(n,1),:)).^2,3));
	for k = 1:n
		dists(k,k) = 1;
	dists = [dists ; X'];
	dists = [dists ; 1.-X'];
	mins = min(dists);
	rd(i,j) = sqrt(n).*(1+sqrt(5))./2 .* prod(mins).^(1/n);
	ru(i,j) = (1+sqrt(5))./(2.*sqrt(n)) .* sum(mins);
	rd(j,i) = rd(i,j); ru(j,i) = ru(i,j);


The argument of the function is a matrix of RF values (rows corresponds to compounds, columns to systems). Two distance-like matrices are computed, one for RU values, another for RD, for all combinations between the systems.

If you use these criteria, cite following paper: 10.1556/AChrom.20.2008.3.2