# What’s new in version 3.1 ?

Version 3.1 brings many improvements to the fit system, including more flexibility in loading parameters, processing fit trajectories (after parameter space exploration), and improvements in individual fits.

It brings in also a series of new commands, to look at files and directories, to add noise and remove it, to run linear least squares minimisations and facilitate the handling of column and row names.

It features also many other improvements, such as the possibility to define “virtual files” inside script files, to define reusable parameters, basic handling of complex numbers and many useability fixes.

See the full list of changes below

# What’s new in version 3.0 ?

Version 3.0 brings an “expert” fit mode, with a fit command line that makes it possible to automate fitting or do parameter space exploration, running many fits with random initial starting positions to greatly increase the likelihood of finding the best parameters (along with many other new features for fits).

Another improvement in the fits is a new implicit fit, to fit an implicit equation to data.

This release also brings in a command to permanently record information about a file, such as the conditions in which the experiments were made (the sample used, the temperature, etc…), in a format that QSoas automatically reads when reading the file. This makes it possible to quickly browse through data to find the experiments you need.

Finally, this release brings in a whole new offline documentation system, with and index and search facilities, startup tips, cross-reference examples and the possibility to specify manually all the command arguments and options in a dialog box when running a command from the menus.

See the full list of changes below

# What’s new in version 2.2 ?

Version 2.2 brings in a lot of new features and improvements, notably greatly improved memory use for massive multifits, a fit for linear (in)activation processes, a new way to transform “numbers” like peak position or stats into new datasets and SVG output ! It also finally brings back the peak area output in find-peaks and related commands !

See the full list of changes below

# What’s new in version 2.1 ?

Version 2.1 brings in a number of new functionalities, such as a command to solve equations, and ways to reparametrize fits, along with numerous improvements of already existing commands.

See the full list of changes below

# What’s new in version 2.0 ?

Version 2.0 brings a whole new set of functionalities for fits, namely a fit engine with enormous performance increases in massive multibuffer fits (easy to reach a 1000 times speed increase !), definition of fits with a distribution of parameters, and many new functions.

See the full list of changes below

# Changes in version 3.1 (28.09.2022)

## Fits

• now the main terminal is also accessible via a tab on from the fit window, which makes it much easier to follow the output of the various fit commands
• more flexibility in load for loading parameters, matching datasets, even renaming parameters on the fly
• ode and kinetic-system now have a /voltammogram option to work better with the time and potential dependence of voltammograms
• kinetic-system now provide means to use various interfacial electron transfer models, including Marcus-Hush-Chidsey
• definition of species names in nernst
• more flexibility to designate datasets for fix, unfix, set
• a sort-trajectories command to sort the trajectories
• the time-dependent parameters now allow to have several parameters controlled by the same time dependence (with different values)
• it is now possible to use j_elec as a reporter in the kinetic-system fit to represent the electrical current at the electrode
• the fit engines are now more robust to the appearance of NaN, and also the trajectory sorting now handles them better too
• the sim commands can now push the parameters as a dataset with /operation=push
• the fit interface now has menus instead of the previously used combo boxes
• the use of reparametrize-fit now also creates a command that can regenerate the parameters of the original fit from a dataset containing parameters of the reparametrized one

## Other improvements

• inline files: it is now possible to define “inline files” inside files already, which makes subroutine construction/calling much much easier to write and maintain
• better handling of files that QSoas should not try to load (PDF files, etc…)
• better display of the segments delimitation
• it is now possible to specify columns using their name, via the name:column or $c.column syntax (with completion) • handling of complex numbers from within Ruby formulas • a --headless command-line option to run non-interactively • a --run-script command-line option to run directly a script • a true Win64 build, allowing you to use much more ram should the need arise • the tooltip over a dataset point also shows the row name when applicable • the terminal now uses bold and color when useful • now understands the QSOAS_DEBUG environment variable • a --write-deps command-line option that writes the dependency of all the generated files on the files QSoas had to read to generate them, in Makefile format • quite a few bug fixes, in particular concerning the interaction with Ruby • implemented a dataset rendering cache to greatly improve the responsivity when using commands like cursor on very “jaggy” datasets • disable the ugly “black console” window on Win platforms • NaN in datasets are now shown as a “cross” next to the non NaN points they are next to # Changes in version 3.0 (03.12.2020) ## Fits The fit system has been greatly improved, with an /expert=true mode featuring: • a command-line interface with over 50 commands in the fit dialog to run fits non-interactively • parameter space explorers, which run fits systematically with different starting parameters, to improve the chance of finding the best parameters • possibility to run scripts, even as a fit- command-line option, which means one can now perform fully automatic fits • the display, handling, reuse of all the previous fit attempts in a fit session (“fit trajectories”), including ways to highlight changes • the possibility to set the fit dialog title bar • a Particle Swarm Optimizer fit engine • the GSL implementation of the simplex as fit engine • a mode in sim- that just writes the residuals • a mode in sim- to export subfunctions • improvements to the parameters spreadsheet • a new fit, implicit, that fits the results of equations to data, together with a define-implicit-fit to create named implicit fits • the arb fit now has its corresponding sim-arb function ## New commands ## Improvements of previous commands ## Other improvements • new syntax for statistics and meta: one can now use $stats.y_max (etc.) in addition to $stats["y_max"] to refer to the y_max stats (and for all stats and meta too), which means that there is no need anymore for cumbersome double quoting like in eval '$stats["y_max"]'
• completion on the meta/stats names for the code
• a %{ruby code} expansion in scripts or command-line
• a set of functions (k_mhc and k_mhc_double) to Marcus-Hush-Chidsey rate constants (using the integral formula)
• a trumpet_bv function to compute the position of peaks in so-called “trumpet plots” when using Butler-Volmer kinetics
• several additional functions like ln_erfc(x), ln_gamma(x)
• a --log command-line option to choose the log file name
• a --version command-line option
• Gauss-Kronrod integrators for parameter distributions
• full support for Qt5 (support for Qt4 is dropped)
• running a command from the menu now spawns a full dialog box with the possibility to set options
• it is now possible to deduce rate constants from thermodynamic constraints in kinetic systems
• new statistics: y_a and y_b, which correspond to parameters of the linear regression of $y = f(x)$. Available for y2 and all the others, still as a function of x.
• a _sum statistic that corresponds to the sum of all elements (available for each column)
• a new comprehensive offline documentation system with index, search capacities, cross-referenced examples, and the possibility to execute commands directly from within it
• a series of startup tips
• now, using the menus to start a command will show a dialog box in which one can choose the arguments and options

# Changes in version 2.2 (2018.03.21)

## Fits

• new fit: linear-kinetic-system, which is useful for fitting the time traces of potential step experiments with linear inactivation (like in Fourmond el al, Nat Chem 2014)
• new time-dependent parameter: ramps
• interpolation of parameters in the “Parameters Spreadsheet”
• chi-squared “goodness of fit”
• qsoas and multi a much more memory-efficient for massive multi-buffer fits
• arb has more “automatic” parameters
• all the sim- commands now also take the /style= and /set-meta= options

## Other improvements

• possibility to load a saved stack by just double-clicking on it
• in kinetic systems, can now use either Butler-Volmer or Marcus-Hush-Chidsey kinetics for interfacial electron transfers
• now fully compatible with Qt 5, still not the default build
• switched to using embedded mruby rather than plain ruby, which finally fixes a hard crash on Windows
• new special functions: incomplete gamma functions
• many bug fixes and other minor improvements

# Changes in version 2.1 (2017.01.02)

## Improvements of previous commands

• echem-peaks now offers all the options of the other peak-finding commands, with the same meaning
• When several datasets are specified, commands that pick points cursor, baseline, etc. can switch between all displayed datasets (with the n and N keys)
• Commands that write to the output file can now also save the data as meta-data through the use of the /set-meta option.
• It is now possible to select the statistics one wants to display/save with the stats command
• diff can now compute an arbitrary derivative to an arbitrary order
• print can now overwrite output PDF file without asking via the /overwrite=true option
• most of the commands that can produce several datasets now take a /flag= option and a /style=, the exception being the sim- commands which still only support the /flag= option at this stage.

## Other improvements

• Now compiles and runs with Ruby 2.3 and the most recent GSL releases
• The --stdout command-line option writes the content of the terminal to the standard output
• Sketch of an Emacs major mode, misc/qsoas-mode.el in the tarball
• A series of bug fixes

# Changes in version 2.0 (2016.07.19)

## Fits

• Load parameters using interpolation on Z values
• Shortcut to fix/unfix a parameter for all datasets (right-clicking)
• Spreadsheet mode for editing parameters
• A “Multi” fit engine that performs very well for large number of buffers
• Can now cancel the current fit using the shell command killall QSoas -SIGUSR1 on Linux and MacOS
• better convergence for the QSoas and Multi fit engines
• Generalize the use of “time-dependent parameters” (the /with=co:2,exp options to fit-kinetic-system) to fit-ode and fit-arb
• New types of time dependent parameters: rexp (exponential relaxation) and steps (discrete steps)
• The sim- commands can now compute the jacobian and reexport parameters (to the output file)
• Now, the fit dialog detects when there are NaNs in the data, which avoid hard-to-understand problems of convergence of fits
• a new pseudo-voigt fit
• a new polynomial fit
• Now, the commands that define fits can redefine existing (custom) fits if given the /redefine=true option
• One can now specify the fit engine from the command-line

## Other improvements

• latest and latest:n specifications to refer to the datasets generated by the latest command (or the _n_th before)
• Faster startup time
• New special functions: Dawson integral, Debye functions, the clausen function, a couple of Fermi-Dirac integrals, multigamma functions, some hypergeometric functions, and an approximation of Marcus-Hush-Chidsey kinetics
• One can now use the --run and --exit-after-running command-line options to QSoas to run scripts from the command-line
• possibility to run “inline” Ruby code from within scripts and from QSoas itself
• Can now run QSoas commands from within Ruby code, for instance QSoas::load("file"). This is still experimental.
• Now supports GSL 2.0
• Quite a few bug fixes