## 2 Materials and Methods
### Curve Decomposition Tool  
The basic concept in the approach for building in-house decomposition tool for DSC curves was the simple definition of the target function as a sum of Gaussian functions resulting in a signal compared with the measured one. The error of such comparison was used for the optimization of parameters of the Gaussian functions, namely, center, spread, and height. In our work, non-symmetric or bi-Gaussian functions (\(NSG\)) were applied following the Equation (1):  
\[NSG=\left\{ \begin{array}{l}ifx\leq b;a\cdot exp\left[-\frac{(x-b)^{2}}{c_{1} }\right]\\ ifx>b;a\cdot exp\left[-\frac{(x-b)^{2}}{c_{2}}\right]\end{array} \right. \tag{1}\]  
where  
\(NSG\)--non-symmetric Gaussian function  
\(a\)--peak constant  
\(b\)--center constant  
\(c_{1}\) and \(c_{2}\)--spread constants  
The tool was developed as a script of R statistical environment and published on the sourceforge website [28] under GPL v3 license, which means that it is freely available for both personal and commercial use. The following external packages were used for building R peak decomposer: nloptr [29], GenSA [30], rgenoud [31], and optimx [32]. These packages were optionally chosen for the whole optimization process. - nloptr  
NLoptr is a package for accessing the NLopt system from the level of R script. Out of many optimization algorithms available in NLopt, the general optimization algorithm, the so-called Controlled Random Search (CRS) with local mutation [33], was chosen. It is a first-choice tool for the global optimization loop of the R peak decomposer. - GenSA  
GenSA stands for \"generalized simulated annealing\" [34] and introduces another global optimization algorithm based on the simulated annealing approach with fully automated control over starting and operational parameters, like temperature and its decay rate. This is the second-choice tool for the global optimization part of R peak decomposer. - rgenoud  
Rgenoud is the R Version of GENetic Optimization Using Derivatives. This tool is both a global and a local optimizer using a genetic algorithm for global optimization and subsequently the BFGS method for local fine-tuning of the optimized parameters [35]. - optimx  
The R package optimx is a multi-optimizer using multiple local optimization methods in a simple and elegant interface [36]. This package was implemented with a limited number of optimization methods: BFGS, nlm, Nelder-Mead, and nlminb with follow.on = False setting. These settings impose non-sequential use of the above-mentioned optimization methods within one optimx() run. The final result is chosen as the best achieved solution for the given execution loop, regardless of the actual algorithm being the source of this solution. The default optimizer for the R peak decomposer is the R optim() function with the BFGS algorithm that is used as the last one in case any optional algorithm was chosen. There is also a global optimization method, SANN--simulated annealing introduced by optim() method, yet there is usually no need to invoke this algorithm due to GenSA's superior performance in most cases. The R peak decomposition tool works in the looped manner where the number of iterations in the loop is predetermined together with the stopping criterion--in this case, \(NRMSE=0.1\%\), and the loop number was set to 50. The optional optimizers are used in the cascade mode one after the other, gradually refining the set of Gaussian functions parameters. The user may specify the additional optimization algorithms on his own, yet there is also an automated mode using the following sequence: (1) nloptr, (2) rgenoud, (3) gensa, and (4) optimx. This sequence means that all the algorithms are enabled gradually when the tool prediction error is not meeting a stopping criterion. Firstly, the default optimization algorithm BFGS attempts to solve the problem and works for 10% of the number of loops--here, for 5 iterations. If the stopping criterion is not met, then on the iteration no. 6, the nloptr takes over and passes its solution to BFGS for a final refinement.