In this first post I want to present the different tools to simulate the gas chromatographic separation of a mixture of substances. I developed these tools with the help of Tillman Brehmer over the last years using the Julia Programming Language.

Aim

The aim is to use the simulation of gas chromatography (GC) to optimize the separation of complex mixtures with only a small number of initial measurements. Based on these measurements the retention parameters of the substances are estimated. These retention parameters are than used to simulate new GC programs (temperature and pressures) to find an optimal separation. A second aspect is to investigate new techniques in GC, like multidimensional GC and thermal gradients along the GC column.

Background

I started to develop the simulation as part of a project in the workgroup of Peter Boeker at the chair of food chemistry (Prof. Matthias Wüst), University of Bonn. In this project we developed a hyper-fast GC based on the resistive heating of a stainless steel capillary with the GC column inside. By applying a controlled flow of air blowing on the stainless steel capillary it is possible to create a thermal gradient along the capillary an with it for the GC column. This hyper-fast GC, also known as Flow Field Thermal Gradient GC (FF-TG-GC) is now produced by Hyperchrom.

To understand the usage and limitations of the thermal gradient, I developed the GC simulation. Multiple approaches existed before (e.g. EZGC) but they did not allow for a variation of the temperature along the column. Therefore, I implemented the possibility to incorporate different types of gradients (temperature, film thickness and internal diameter of the GC column), which all produce an additional gradient of the migration velocity of the substances. The idea behind this additional velocity gradient is to counteract the natural occurring velocity gradient and to improve the peak shape in the final chromatogram. Using the simulation, we could show the limitations of this technique. An improvement of the separation by around 10% is possible. We also could show, that using a thermal gradient can significantly lower the temperature the substances experiences during separation, which can be beneficial for thermo-labile compounds, like explosives.

Open-source

From the beginning on, the GC simulation should be open-source and be available for all interested people. I started to develop the simulation with Scilab, an open-source clone of MATLAB, because I had experience in using MATLAB. But early in the process I experienced multiple limitations, mostly due to a limited number of available functions and packages and a lack of speed. I looked for alternatives, with Python being an obvious one. In this process I came to the Julia Programming Language, a high-level, fast general purpose language with a growing community, especially for scientific programming, including machine learning. Also, the filename extension .jl matches my initials, so it was inescapable to use Julia.

In the following the different parts of the toolbox are briefly introduced. In later entries, they will be presented in more detail, including tutorials for their usage.

GasChromatographySimulator_logo

The package GasChromatographySimulator.jl is the core of the toolbox for GC simulation. It is used to simulate the separation of multiple substances on one GC column with a defined temperature and pressure program. In addition, the temperature, film thickness and inner diameter along the column can be varied with arbitrary functions. The substances are defined by their retention data in the form of the three parameter Distribution-centric retention model, which is an equivalent model to the three thermodynamic parameters for the van’t Hoff model.

Measured and simulated PAH separation Example simulated separation of the 16 EPA PAH (red) in comparison to a measurement (blue).

For an easy usage of the simulation of simple GC separations several interactive notebooks are available, which will be presented in detail in a later tutorial.

This package is the basis for the two following packages.

RetentionParameterEstimator_logo

The package RetentionParameterEstimator.jl is used to estimate the retention parameters in the form of the three parameter Distribution-centric retention model from a number of measured GC runs with different programs. It uses the GC simulation of the GasChromatographySimulator.jl package to estimate the retention parameters, which best fit the measured chromatograms. A Newton method with trust regions is used to find the optimized parameters. The goodness of fit of the estimated parameters can be tested by applying the found parameters to the simulation of additional GC programs and compare the simulation with measurements.

RetentionParameterEstimator_example A) Example of the estimation of retention data of 12 substances from five different temperatures program. B) Resulting lnk-functions. C) Comparison of measured and simulated chromatogram using the estimated retention data.

Using this method to estimate the retention parameters is faster than the common method of using multiple isothermal measurements. A high number of a wide range of substances can be measured together in three to six different GC programs, while a multitude of isothermal measurements would be needed to estimate the retention parameters in the traditional way.

GasChromatographySystems_logo

The package GasChromatographySystems.jl is used to simulate the GC separation in complex GC systems, where more than one GC column is used. The simplest example for such a system is a GC where the main column is combined with restriction capillaries and different heated zones, e.g. transfer lines, are used. Multidimensional GC systems are more complex using multiple GC columns with different stationary phases and involving modulators.

GasChromatographySystems_example Example of a GC system with two parallel GC columns connected to the same injector and detector.

To account for these different systems, a modular approach is used, where a network of different modules is used to represent the GC system, which is represented as a Graph. One of the main features of this package, besides the simulation of the separation is a flow calculator of complex GC systems. Based on the defined dimensions for the capillaries, the temperatures and the used pressures for inlet and outlets of the system, the flow and the pressures at all positions of the system are calculated. This information is needed for the modular simulation of the separation. Beginning at the inlet of the system, the GC separation is simulated for every segment using the GasChromatographySimulator.jl package. The results from one segment (retention times and peak widths) are used as initial values for the following segment. The ratio of flows at split points is used for the ratios of substance amounts trough the different possible paths available.

This package is still heavily in development and multiple scientific publications are in preparation. The aim for the GasChromatographySystems.jl package is to simulate every imaginable GC system, including GC×GC with thermal and flow modulation or GC×GC×GC.

RetentionData_logo

A fourth part of the toolbox is the database RetentionData. Unless the three previous tools, this is not a Julia package, but a compilation of isothermal measured retention data found in the literature and measured in our work group. This data consists of three parameters of the equivalent models of the Distribution-centric model, thermodynamic model and the ABC-model. In addition to the data, this repository also contains some Julia notebooks, which are used to convert the parameters, calculate the parameters from ln k(T)-data, resp. retention times and compile the database including some filters in regard to the range of values of the parameters. Everyone is invited to submit additional retention data to expand this database.