SmartCGMS is a next-generation continuous glucose monitoring system.

About SmartCGMS

SmartCGMS is a software-stack for the next generation of continuous glucose monitoring, controlling and research systems. Its architecture comprises a number of building blocks, which could be either real or simulated devices such as glucose-sensor, model of glucose dynamics and insulin pump. Simulation is an irreplaceable tool in the development of new methods and algorithm. Our software allows the user to define such simulation and later, when the new method is ready, just switch the simulated device for the real one with the same program code.

SmartCGMS architecture builds on the top of ideas of co-simulation and the High-Level Architecture standard. As insulin pump and mobile devices in general have limited computational resources and power supply, the architecture was simplified to allow adaptation to low-power devices.

SmartCGMS contains/supports the following in-silico models:

  • Bergman-Hovorka-Willinska-Koutny model combination
  • UVA/Padova S2013
  • SimGlucose, by setting UVA/Padova S2013 xi parameter to zero
  • T1DMS
  • DMMS.R


The research application comes in the graphical-user-interface and console variants. Graphical user interfaces lets a researcher to set up a simulation, including individual component parametrization. Once the simulation is set, the researcher can start it in the simulation view. Researcher can control the simulation during its runtime.

The research application visualize the results with graphs, plots and grids during the simulation - daily statistics, overall view, Parke's and Clarke's grids or ambulatory glucose profile, metrics and empirical cumulative distribution function of errors. Graphical user interface updates all of this in the real time, while offering additional filtering options. Entire experiment can be recorded and replayed as needed.

Generated graphs can be zoomed and visible are saved to a vector-graphics file format.

Setting up

The graphical environment offers the configuration window, where the user can build custom configurations using predefined blocks, called filters. The right side contains available filters; the left side contains already selected filters. The order of filters is important - they are connected in a linear manner to a chain, with a simplex message passing.

Typically, the first filter in chain is a filter, which loads or generates input data. Such data may be loaded from a database, standard output file of CGM device or a log of previously simulated scenario. Then, calculation filters are defined. Such a filter schedules the solver algorithm to obtain model parameters. Then, the filter calculates the model signal using the determined parameters. In the graphical environment, visualization filter must be present to observe the calculated signal. This filter maintains graphical output, error metrics and simulation logging.

Detailed description of all available filters is present in documentation.

Mobile application

Mobile application

Thanks to the architecture design, our implementation could be ported to a low-power device without any change in the source code. Mobile phone is an example of such a device, which could be complemented with smart watch and insulin pump.

The mobile application is able to connect to a sensor implementing IEEE-11073 standard for glucose sensors, using low-energy Bluetooth. Hence, with a minimal configuration change we can instantly put the selected research configuration into the practice.

By complementing the mobile phone with smart watch, the patient's comfort increases. To determine glucose levels, user simply looks at the wrist. There is no need to install any additional application - data are displayed in the existing watch-face.


The application is highly modular and supports integration with other tools. Along implementing custom filter, model, metric and solver algorithm with a compiled language (e.g. C++), a researcher can create custom model or solver algorithm with Matlab.

Matlab user can implement custom model of glucose dynamics or a solver algorithm. You can find an example of such scripts in the matlab subdirectory - simple linear regression and linear model. Let this example be your starting point in developing a custom model or solver algorithm.

The most important file in Matlab connection is a manifest - matlab_manifest.xml. This file contains XML-formatted structures, which defines Matlab scripts to be run for a given purpose. This file should be present in filters subdirectory of the compiled software. The developer can further specify input and output parameters, such as signals needed for the calculation.

By defining the session name and exporting the same name in already running instance of Matlab, the debugging routines becomes available.


SmartCGMS source codes are available under appropriate licencing conditions in the binary distribution archive mentioned below.

The building environment should have the following prerequisities installed:

  • compiler with C++17 support (e.g.; gcc 7 and newer)
  • CMake
  • git
  • Qt 5

To build SmartCGMS, a CMakeLists.txt file is included. The core directory is empty - source code of your custom filters belong here.

After a successful build, a bin subdirectory is created. It contains the following, important files and directories:

  • gpredict3-desktop - research application with graphical user interface
  • gpredict3-console - console version of the research application
  • filters - directory containing filter libraries

Download SmartCGMS

Fill the form below to download SmartCGMS for MS Windows 64-bit, macOS 64-bit and Debian GNU/Linux 64-bit. For a different system, please, let us know.

This distribution of SmartCGMS is free for non-commercial use and academic research. It must not be used for treatment or other purpose requiring appropriate certification.

When publishing any results obtained using SmartCGMS, you must include the following citation:

  1. T. Koutny and M. Ubl, "Parallel software architecture for the next generation of glucose monitoring", Procedia Computer Science, Volume 141C, pp. 279-286, 2018

I agree to the conditions of use, I confirm that the information I entered is valid and I consent to saving the entered information (IP address including) at the portal provider

Enriched glucose-level database

By filling the form below, you can download anonymized type-1 database with artificially calculated blood glucose levels.

This database is free to use for non-profit, academic research only, but cannot be redistributed freely. Only the URL,, can be redistributed, from where the database can be downloaded.

When publishing any results obtained with this database, you must include the following citations:

We have used a database with diabetes type-1 completely anonymized CGMS profiles, which is available as a part of the SmartCGMS project [1]. This database has been enriched with artificially calculated blood glucose levels [2].

  1. T. Koutny and M. Ubl, "Parallel software architecture for the next generation of glucose monitoring", Procedia Computer Science, Volume 141C, pp. 279-286, 2018
  2. I. De Falco, A. Della Cioppa, A. Giugliano, A. Marcelli, T. Koutny, M. Krcma, U. Scafuri, E. Tarantino, "A Genetic Programming-based Regression for Extrapolating a Blood Glucose-Dynamics Model from Interstitial Glucose Measurements and their Derivatives", Submitted to the Applied Soft Computing Journal, 2018

I agree to the conditions of use, I confirm that the information I entered is valid and I consent to saving the entered information (IP address including) at the portal provider