Simulation of column chromatography


This project was developed during F.P.'s stay at UAH, financed by the Ministry of Education of the Argentine Republic, “Program for teaching mobility in Madrid”, January-February 2015.



This work, “Simulation of column chromatography”, created by Fabiola Pagliero and Angel Herráez, is offered under a Creative Commons Attribution-NonCommercial-ShareAlike Licence.


If you use this application and wish to cite it, please use this format:

How the simulation of column chromatography for proteins was made

Source of data

Values of molecular mass, isoelectric point, etc. for proteins were collected from several accredited sources. Data for proteins.

Information about matrices (column packings) was retrieved from booklets and websites of commercial providers.

Size exclusion

Mobility is characterised by `K` (or `K_(av)`). The higher `K`, the larger elution volume, slower progress through the column (smaller molecules).

`K = (V_e - V_0) / ( V_h )` `V_e` = elution volume of each protein
`V_0` = exclusion volume or void volume
`V_h` = volume of pores in the matrix
To calculate the velocity of progress through the column (`v`):

Certain values are supposed for `V_0` and `V_h` and for the flow `F`; the value of `L` is based on the drawing (px)
We calculate `v_max` and `v_min` for each protein; from them, with the reference `K`, we calculate the velocity of progress of each band along the column.

The value of `K` is calculated from the empirical straight line obtained with standards, `K = a + b * ln(M_r)` for each chromatographic matrix.

Ion exchange

Mobility depends on the difference between pI and pH, in a nonlinear way.

`ΔQ=pI-pH`   resin with ⊖ charge
cation exchange
resin with ⊕ charge
anion exchange
`ΔQ > 0` protein⊕ is retained, very low `v` falls through, high `v`
`ΔQ < 0` protein⊖ falls through, high `v` is retained, very low `v`

Dependency between `ΔQ` and the velocity of progress `v` was modelled empirically using the following logistic equation:
`v = v_min + v_max / ( 1 + 10^(-p * ΔQ * s) )`   (where `s` is the sign of the charge in the resin)
and a value of 0.3 was chosen for the slope parameter `p` after visual inspection of the separation achieved in the simulator.

For the basal value we chose `v_min = 0.2 * flow` (both are empirical);
and for the velocity of the chromatographic front, `v_max = ( L * \text{flow} ) / ( V_0 + V_h )`


The same method as for ion exchange is used, except that instead of `ΔQ` a value of 20 is assigned to proteins that are not retained at all, −20 for those with high affinity, and intermediate values for weaker affinities. The slope parameter `p` was empirically set at 0.1 and `s` is not used in this case.


The simulation is built with HTML5 and JavaScript. The chromatogram is plotted using the Flot and jQuery libraries.

Powered by MathJax

Mathematical equations in this page are rendered using MathJax.