The following is a list of changes from the previous version of GAUSS.
dfappend()vertically stacks dataframes and merges the meta data from string and categorical columns.
New convenience feature:
miss()with no inputs will return a scalar missing value.
annotationsettextalign()allows specifying alignment of text inside textboxes programmatically.
annotationsetlinepen()allows for more convenient setting of annotation line width, color and style.
Final inputs to
annotationsetfont()are now optional inputs.
plotsetfonts()allows convenient control of font family, size and color for all, or a subset of the text elements in a graph.
plotsetmissgap()controls whether a gap in line plots is shown for missing observations.
The legend text item will no longer cyle, meaning it will only be used for the series it was set for.
Added support for specifying textbox position relative to the coordinate location in
Added support for specifying a single x or y-axis to
Added support for space separated string specifiers to
The x-top axis now supports time series data.
Legend properties, such as font and background settings as well as location can now be set in a plotAdd call if the legend has not yet been drawn.
If line style is set to 0 (off) and then line width and/or color are set, the style will be set to 1 (solid). This allows for enabling lines such as the grid that are disabled by default by specifying only line width or color.
All “base” graph profiles in preferences (e.g. “Bar”, “XY”, “Scatter”, etc) will be overwritten when GAUSS is updated. This allows us to push updates and fixes to the default profiles. Permanent changes and settings should be saved to a cloned profile.
Added additional argument to
outerjoin()to allow a full outer join instead of only left outer join (the default).
The main logic of
innerjoin()is now an intrinsic instead of a procedure.
Add missing export in gsgraphics_stub shared library for the GAUSS Engine.
Nested for loops with a duplicate counter identifier will now show a more accurate error message when the compile fails.
copymetadata()now allows repeating columns from the source dataframe as well as specifying a subset of columns to apply to the destination dataframe.
Improved layout of graph profile preferences for better viewing compatibility on smaller resolutions.
Bug Fix: Indexing a dataframe in a specific manner resulting in a scalar could sometimes omit the metadata.
Bug Fix: Metadata cache would sometimes not be kept when the LRU cache was full.
Bug Fix: Reading complex (i.e. with imaginary numbers) datasets with
readr()in certain cases could return the error “read past end of file”.
__FILE_DIR()is now fixed when used in the Command window on Windows.
Bug Fix: Manually created libraries were not immediately visible in certain cases. Extra library paths in the GUI are now refreshed on library creation to fix this.
Bug Fix: Regression: Filtering dataframe date columns in the symbol editor now works correctly again.
Bug Fix: Bar plots were incorrectly adjusting their size based on the line thickness, even when the line style was set to none.
strsplit()could cause a crash in specific cases.
New example files
plotunemp.eillustrates plotting time series variables from a dataframe using
plotXY()and formula strings,
plot_customlayout_1.eshows placing a histogram count of the data above the x-axis and across from the y-axis..
Updated example files to use new functionality:
plotbox_auto.e, and more.
stocv()now supports dataframe inputs.
satocv()now supports dataframe inputs.
strtof()now supports dataframe inputs.
ftocv()now correctly strips metadata if a dataframe is provided.
loadd()now correctly works with CSV and XLS files with
header_row = 0for the control struct member.
Graphics: Added support for specifying date intervals to
Optimized changing the format in the symbol editor for extremely large symbols.
warninglogat()keywords to produce warning, similar to
Bug Fix: Context menu actions in the symbol editor were erroneously remapped to copy.
Bug Fix: When changing to a numeric or string/category type in the symbol editor, the generated code would have an incorrect column if ‘Create New Column’ was checked.
Bug Fix: Passing a dataframe date column as a position argument to a plot with a datetime axis was not keeping the position as a date.
plotSetGrid()had a regression which dropped support for the deprecated method of specifying 0 (off) or 1 (on) with an integer. This has been restored for backward compatibility.
Bug Fix: Specifying the GAUSSHOME value with non platform-specific separators would cause globbing to fail when reading gauss.cfg, (eg
Bug Fix: Filtering a date column in the File Import dialog or symbol editor was referencing the wrong column type when generating code. The resulting filtering operation was correct, but has been rectified to generate more friendly code.
Added new preprocessor
#includedirto add current file directory to source path. If executed from the Command Window (PGM), uses current working directory.
#includedirstatements can now be processed with
F4in the GUI.
__FILE_DIR()now works with
F4in the GUI.
Added new function
resetsourcepaths()to restore source path to initial value from gauss.cfg.
Duplicate header prevention was added for dataframes. This can be toggled via policy in gauss.cfg with the
Added new function
asdf()to allow automatic conversion of scalar/matrix/string/string array to a dataframe. Headers can now be specified as N additional arguments, where N is equal to the column count of the input symbol.
Added new function
currentprocname()was added to return the name of the current proc. It also accepts 1 argument to return the name of the calling procedure(s) from previous stack frame(s) if desired.
Added new function
isunique()to return a scalar denoting whether all rows in a matrix or dataframe are unique.
Added new function
isrowunique()to return a vector denoting whether each row is unique.
Added new function
dropduplicates()to return the input matrix/dataframe with all duplicate rows removed.
Added new function
getduplicates()to return the input matrix/dataframe with only duplicate rows present. The original row number is prepended as the first column to the output of this function.
setcolnames()now has header duplicate checking and auto-renaming if the
policy_check_df_header_dupespolicy is enabled in gauss.cfg. This policy is enabled by default.
%Gflags were reimplemented for more consistent results with
dttostr()will now return a string instead of a 1x1 string array.
Formula strings now support more than one dependent variable. (fields specified before a
~in a formula string).
asdate(). This is shorthand for
Added support for the automatic monthly, quarterly, and yearly date-conversions in Stata files (e.g. .dta files).
sprintf()now supports the following base conversion patterns:
aggregate()now accepts an optional input specifying the column index or name of the variable to aggregate on.
Graphics: New formula string keyword,
bysplits data to be plotted by
plotBox()by a specified categorical or string variable and automatically handle dataframe input to generate the appropriate legend items.
Graphics: Added support for legends to have their own title with
Graphics: Added support for dates in simple string format to
Graphics: Added support for outliers to
plotBox()can now accept a vector of groups as the first data input. The
yvariable will be split by the categories in the group vector and plotted as separate boxes.
Graphics: Attributes for each axis can be assigned separately. The existing
plotSetAxesPen()convenience procedure will still assign attributes to all axes simultaneously.
Graphics: The font can now be specified for
Graphics: Axis tics can now be displayed on the inside of the chart (as opposed to outside only) or hidden completely with the
Graphics: Added new function
plotSetOutlineEnabled()to allow a box outline around the entire chart. Outline attributes are controlled via axis properties using
plotSetAxesPen()or individually with
Graphics: Axes are now at a higher Z-order than series, so lines will not render on top of the axes lines.
plotSetAxesPen()has a new optional input to set the axes line style.
Graphics: New function
plotSetGridPen()allows the major and minor
yaxis grid lines to be enabled and styled.
Graphics: Graph profile settings in the preferences dialog have been fully refactored to only show properties related to the selected graph category. This should reduce confusion regarding which properties are respected when plotting a graph of the specified type.
Graphics: Contour is now a new default graph profile instead of being shared with Surface.
Graphics: New convenience function
plotSetLinePen()to set the line width, color and style in one call.
Graphics: New function
plotCloseAll()closes all open graphs.
Graphics: Performance: support was improved for plotting large numbers of points for XY and scatter series.
Graphics: Behavior change: the default line thickness for bar plots has been set to zero to be consistent with commonly desired styling for added spanning bars.
Graphics: Behavior change: the legend position can be updated with settings from a plotAdd call if no legend items already exist on the graph.
Graphics: Bug Fix: Outside middle legend will now always have a vertical orientation.
Graphics: Bug Fix:
plotOpenWindow()now retains focus in the widget prior to the call (eg the PGM).
Graphics: Bug Fix:
plotAddBarH()would calculate the X offset incorrectly if the input X values were index values instead of labels.
Graphics: Bug Fix: Axis properties for
plotPolar()was applying the settings in a reversed manner. X-Axis settings now represent the azimuth with Y-Axis settings representing the radial axis. The input order for
plotPolar()has not changed.
Graphics: Bug Fix:
plotTSHF()would not allow a fixed axis range to be specified.
Graphics: Bug Fix:
plotTSHF()would sometimes omit axis labels in the case of too few calculated labels. At least 1 will be rendered now.
movingave()up to 4-6x faster.
unique()was optimized and should be faster.
For convenience you can now assign a scalar value to multiple elements of a matrix or dataframe (eg
x[1 3 5,2] = 7.3;).
Dataframes: All dataframe functions (
asdate(), etc) can now automatically convert a non-dataframe input to a dataframe. String arrays are automatically converted to a category column.
asdate()now allows omission of the format argument, and will default to
%Y-%m-%d %H:%M:%S.%L. All or part of this format can be specified in the input argument.
Dataframes: passing a format of
asdate()will automatically coerce it to a friendly format.
Dataframes: Behavior: Overwriting an entire column during an assign will overwrite the LHS metadata if the RHS is also a dataframe.
Dataframes: Behavior: Combining dataframes with string arrays using the string combine operator,
$+is now supported.
Dataframes: Multiple new functions now support dataframes as input arguments:
Dataframes: A low-level function
normalizecollabels()was added to automatically refactor string/category columns to remove duplicates and consolidate keys.
Dataframes: Added string/string array assignment support to existing string/category columns.
Dataframes: Date pattern matching has been relaxed. If a string fully matches a date format pattern completely, the calculated date up until that point is now returned instead of requiring the entire format to be satisfied. Most functions that take a date format pattern now default to allowing full/partial usage of the pattern
strctoposix()now returns a dataframe.
Dataframes: Symbols viewed in the symbol editor will now show up as a ‘Dataframe’ in the type field instead of ‘Matrix’.
Dataframes: Improved behavior when checking for like-column types in a partial row assignment from one dataframe to another.
outerjoin()(left outer join) has been rewritten completely as an intrinsic with full support for dataframes with a significant performance increase.
Dataframes: Generated code in the file import dialog now takes advantage of new dataframe behavior to allow more concise code.
Dataframes: Specifying custom col labels for string/category columns now uses a
seqa()representation for the values if they are left as their default. (Optimization)
sortc()now allows you to specify columns by name.
Dataframes: Empty date formats now default to the default date format of
Dataframes: Any function converting a symbol to a string/category will now sort the labels before generating the keys.
Dataframes: Bug Fix: Unsorted indices passed to dataframe functions could cause changes to be incorrectly applied.
Dataframes: Bug Fix: Specific cases where a program errored out could potentially remove metadata from a symbol in the workspace.
Dataframes: Bug Fix: Metadata was not being applied correctly in specific struct-index assignment cases.
Dataframes: Bug Fix: String/Category columns can now be used with the
Dataframes: Bug Fix: All dataframe and string combinations are now supported for
aggregate()will now check for and ignore missing values by default. An optional input flag has been added to not check for missing values as in the previous version.
Behavior Change: Code generation for dataframe operations in the symbol editor have been optimized to be as concise as possible.
Behavior Change: Columns in the symbol editor will attempt to automatically resize to yield a more user-friendly display.
Behavior Change: Multiple equality filters of the same type in the dataframe ‘Filter’ tab are now grouped together to use
rowcontains()for optimized code generation and performance.
Behavior Change: Policy
policy_scalar_df_indexingis now enabled by default. This policy was added in 21.0.6 to control behavior for dataframe indexing operations that return a scalar. Resulting scalar will now remain a dataframe by default.
setcollabels()incorrectly allowed the indices argument to be omitted. This has been fixed, but improved to allow omission of the indices argument if the input argument only has one column. The values used will be [0…N-1] where N is the number of labels.
move()now makes a copy if the input symbol can’t release ownership.
Bug Fix: Use system palette when restoring regular font color in textbox of editor/PGM find widgets.
Bug Fix: Custom missing values set with
msym()was incorrectly printing the missing value backwards in
selif()could return a partial dataframe if the return value was a scalar missing.
Bug Fix: If a tab character was the delimiter in the file import dialog, the generated code would include a literal tab character as a string. This has been fixed to escape the tab character in the string (eg
ctl.delimiter = "\t").
Bug Fix: Formula strings that contained a
*character in the argument field (eg
date($my_date, '%Y-%m %H:%M')) were being treated as multiplier operations.
Bug Fix: Add date cell editing support in the symbol editor.
Bug Fix: In the import dialog, generated code was not updating when a custom category label or date format was specified. This bug was visual only, as the correct code was generated when the Import button was pressed.
Bug Fix: In the import dialog, the input box for the new column name was not noticeably greyed out on macOS when the widget was disabled.
Bug Fix: The symbol editor will no longer automatically open the ‘Manage’ panel for dataframes.
setcolnames()was incorrectly allowing empty names as input.
Bug Fix: A missing/NaN in a string/category column will now display the correct value when printed, instead of an empty string.
Bug Fix: Deleting a dataframe from the data page while also having the dataframe open in the symbol editor would cause a crash.
Bug Fix: Non UTF-8 encoded dataframe category string values could sometimes display incorrectly in the symbol editor.
Bug Fix: Autcomplete could trigger in comments or strings if the cursor was at the very end of the file.
Bug Fix: The autocomplete popup could show up in the Program Input/Output window (PGM) at inconvenient times, such as input during a
Bug Fix: When a specific operator prefixes a symbol, hovering while debugging or trying to watch the symbol with Ctrl+E would retain a leading period character.
aggregate()now correctly returns result as a dataframe.
Bug Fix: An empty date format string was allowed in
setcoldateformats(). Now uses default date format in that case.
Added policy to control behavior for dataframe indexing operations that return a scalar. Resulting scalar can now remain a dataframe.
Windows: Added MySQL/MariaDB SQL driver.
Bug Fix: Printing a dataframe now correctly prints a newline before the headers.
Bug Fix: Indexing a data frame with a string array could cause a crash in certain cases.
Bug Fix: Specific edge cases could cause incorrect metadata to be applied in indexing operations. Numerical results were not affected.
strlen()now correctly works with dataframe category/date columns.
Bug Fix: Memory leak in
eye()for certain cases.
Bug Fix: Dataframe comparisons against a string array operand could crash.
Bug Fix: Fixed edge-case performance issue.
sprintf()had incorrect output in the
%gcase with 0’s after a decimal and prior to the first significant digit.
Editor documents now have yellow underline markup for locals and/or arguments that are unused, as well as an icon in the margin.
corrxs()was not correctly copying metadata upon return.
GAUSS now supports dataframes with date, categorical, string and numeric columns.
loadd()now returns a dataframe. This is a behavior change that can be reverted by the
loadd()now accepts an optional input with support for additional data loading options, such as selecting a row range, specifying Excel sheets, CSV delimiters, the header row, values to interpret as missing values, and the quote character.
loadFileControlstructure with the defaults for the new data loading options.
Formula string keyword
catnow supports an optional input to set the base case.
Formula string keyword
datenow supports an optional input to specify the incoming date format.
Logical operators (
.!=) support comparisons with date strings and categorical variable labels.
dstatmt()supports dataframes and counts missing values by default.
saved()will write, string, categorical and date variables. The variable names argument is now optional.
setcolmetadata()sets column names and variable types for a matrix or dataframe.
recodecatlabels()changes the labels displayed for a categorical variable in a dataframe.
reordercatlabels()changes the order of the labels displayed for a categorical variable in a dataframe.
setbasecat()sets the base category of a categorical variable.
getcollabelvalues()returns the string labels for every observation of a categorical variable as a string array.
hasmetadata()returns a 1 if the input is a dataframe.
asmatrix()turns a dataframe into the equivalent matrix.
order()reorders columns of a dataframe by name.
frequency()computes a frequency table for a categorical variable.
The Data Import Window now supports variable selection, interactive filtering and automatic code generation.
The suffix for duplicate headers in the import dialog now start at _2 instead of _1.
Symbol Editors support the same variable selection and filtering options added to the Data Import Window.
Formatting in the Symbol Editor is now on a per column basis.
Character vectors now show up to 8 characters in the Symbol Editor (the length is NOT limited for string arrays or dataframe string and category columns).
CSV sniffing in the Data Import Window will now only occur for the first 200 rows instead of the entire file to improve performance.
The Project Folders window now automatically shows contents of the Current Working Directory.
The Project Folders window now shows new files without need to refresh.
The default setting for the run button is now to run the active file. This can be changed in Preferences to be the same as previous versions.
Find Usages for local variables now reports only instances of the local variable.
CTRL+F1will now find the declaration of local variables in a procedure.
New Preference option to specify the default directory for File > Open.
Assignments to arrays of structures in
threadForloops is now allowed.
Bug fix: Memory leak in
Bug fix: Memory leak in specific situation with
threadForwould not allow certain cases with multiple references to a slice variable to compile.
Control Var node on Data Page is now collapsed by default.
GLM example files updated to use dataframes.
sprintf()had incorrect output in the
%gcase with 0’s after a decimal and prior to the first significant digit. (Backported)
macOS: Add environment variable
QT_MAC_WANTS_LAYERto LSEnvironment key to fix hang on startup with Big Sur.
sprintf()was omitting trailing 0’s for
Bug Fix: A regression caused
plotSurface()to segfault on Windows.
Bug Fix: Using cql_stubs.dll with a GAUSS Engine program did not have the correct symbol definitions to be used for deployment.
Bug Fix: Some graphics legend items were not appearing in very specific cases.
gmmFit()was not computing Hansen J-stat.
Bug Fix: Some Project View folders did not have ‘Set to Working Directory’ available.
Bug Fix: The
olsmt()procedure was not correctly implementing specified weights when data inputs included missing values.
Added error log for case of non-compatible covariance specifications with weighted least squares.
Added error log for case of improperly specified weights.
Added error log for case of non-compatible pairwise deletion option with weighted least squares.
varget()was not performing a deep copy for structs.
Improve performance for enumeration and tooltips on symbol page for very large strings.
File import dialog now uses
%gformatting by default.
Bug fix: Certain editor codecs were not loading correctly on startup when selected in preferences.
macOS: Build against Qt 5.12.6.
macOS: Upgrade Sparkle to 1.22.
Linux: Add new-version check functionality to Linux.
Added new example files
plotAddHist()could crash if the previous graph did not have a category axis.
New integrated package manager to download, install and uninstall Aptech provided, or private GAUSS packages.
aggregate()to group data by a column containing group ids, using one of several methods such as mean, median, mode, standard deviation, sum, and variance.
sprintf()formats combinations of string and numeric matrices.
loaddSA()loads variables from datasets as GAUSS string arrays.
dynargsGet()retrieves optional arguments passed into a procedure, or default values.
dynargsCount()counts the number of optional arguments passed into a procedure.
dynargsTypes()returns a vector indicating the types (i.e. matrix, string, structure) of the optional arguments passed into a procedure.
modec()computes the mode of the columns of a matrix.
Added option to use custom weights for weighted least squares estimation with
plotXYFill()creates filled area plots between XY lines.
plotBarH()creates horizontal bar plots.
plotSetYTicInterval()controls y-axis tick label positioning.
Added ability for
plotAddBar()to add bars to specified locations.
plotSetLegend()now allows setting the legend location by axis coordinates as well as text location.
plotSetLegendBorder()controls the style properties of the legend border.
All plot colors now support alpha channel, providing the option to add transparency to any graph item.
Added new methods to
impute()function: predictive mean matching, local residual draws and linear prediction.
Command reference documentation style updates and new examples.
Speed increase for certain cases of
*X'X*with small to medium matrices.
Reading and writing
.XLSMfiles is now supported for the case where the COM/Excel interface is not used.
Increased compatibility for newer style
.XLSXfiles for the case where the COM/Excel interface is not used.
Bug fixes: several minor bug fixes for reading
.XLSXfiles in the case where the COM/Excel interface is not used.
Added count of number of open files to Edit Page to open file dropdown selection widget.
substute()reported error unnecessarily for specific case with mixed numeric and string input.
xlsReadSA()reported error with string array vls input.
reclassify()possible crash when the from variable was much smaller than to.
Changed state variable in example dataset
hsng.datto a string variable with state abbreviations.
New example file
wls.edemonstrates weighted least squares estimation.
New example file
impute.edemonstrates several missing value imputation methods.
dataloop_case = onto
gauss.cfg. This setting will instruct the dataloop translator to ignore case in dataloop statements.
Upgrade Reprise License Manager (RLM) to 13.0 for all platforms
Upgrade Reprise License Manager (RLM) to 13.0 for macOS
Add explicit query-deleting for database calls (eg
Database: Add auto-cleanup of queries and open databases on ‘new’ statement and after
Bug fix: Fix performance issues with bulk inserts for database operations
Bug fix: A dangling str-concat operation ($+) could result in a crash when using on the command-line
strtof()would result in output matrix twice as large as input even in cases of real input.
Update bundled LaTeX library (MathJax 2.7.5)
Bug fix: Formula strings that specified a modifier for a variable now always negate the original variable. eg.
". + ln(x)"will now remove ‘x’ from the output
Bug fix: The saveall command could cause a program to crash after the save in specific situations.
Bug fix: Saving files was improved in situations where the file could be locked, resulting in being unable to save or extra temporary files.
The Program Input/Output window (PGM) now supports autocomplete for active workspace symbols.
The Program Input/Output window (PGM) and all editor documents support autocomplete and lexing for library symbols not part of gauss.lcg.
Struct definitions are now included in the library tool list.
Add more descriptive messaging to gpkg errors when installing packages.
plotSetZRange()to control the range of the Z-axis on surface plots.
New example files
quantileFit()errors for case when weights are included and data has missing values.
Bug fix: When viewing a struct member with the symbol editor (e.g
Ctrl+E), the member now correctly scrolls into view in the tree.
Bug fix: The ‘Format Text’ functionality in editor documents now keep preprocessor statements fully left-aligned. The ‘keyword’ token now correctly starts an indentation block.
Bug fix: Autocomplete pop-up could freeze in certain situations with too many token references due to memory leak.
Bug fix: Potential freeze when debugging with an undocked graphics page and floating symbol watch.
Bug fix: Specific case of weights with missing values in data when using
Bug fix: Fix ‘Save with Encoding’ option from codec selector dialog.
Bug fix: Add missing context-menu icons for tab split action when a split already exists.
Bug fix: Linux startup script writing empty file named ‘0’ in current working directory.
Bug fix: Proc detection for editor documents in certain cases where proc name or arguments contain underscores.
Bug fix: Accidentally resetting legend orientation in
Bug fix: Rare crash when plotting.
Bug fix: Reading files with
loadd()could fail to read mixed columns in rare cases.
Bug fix: Legend position now only uses original position on a
plotAdd()even if initial plot call had no legend.
Bug fix: Parent graph could have incorrect sizing after a
plotAdd()if legend position was outside.
Speed up of approximately 33% to
Added ability for plotSetYTicLabel to control the tick label formatting of the right y-axis.
Bug fix: possible crash in certain cases when passing scalar input to
Bug fix: output table printing returned error when variable names were not specified in
Bug fix: X-tick labels did not start at the first label position specified by
plotSetXTicInterval()in certain cases for non-time series data.
New example program
plottshf_yellowstone.eshows how to: plot monthly data with
plotTSHF(), set labels and format the tick labels for the left and right Y-axes, control the location and frequency of x-axis tick labels, select observations from a matrix based on data and specify the graph size programmatically.
New example programs
Bug fix: Allow curve attribute control in graphics page settings widget for box plots with
groupingBehaviorset to 1.
Fix action list ‘Current File’ action.
New online license activation allows for convenient license activation from a product key.
quantileFitLoc()performs local linear and quadratic quantile regressions.
quantileFit()performs quantile regression.
clusterSE()for computing clustered standard errors.
robustSE()for computing heteroscedastic-robust standard errors.
New ‘date’ keyword for formula strings simplifies reading dates from CSV files.
New ‘$’ keyword for formula strings reading and processing string columns.
norm()computes the matrix 1, 2 (Spectral), Infinity, Frobenius and Nuclear norms or the vector p-norm.
lagTrim()returns a matrix containing specified lags and/or leads with incomplete rows removed.
recserVAR()performs efficient simulation of a VAR process.
lagn()can now accept an optional argument to specify the fill value for the missing observations.
saved()can now conveniently create datasets in Excel or CSV format.
plotTS()can now plot daily data.
X-tick locations can now be controlled with
plotSetXTicInterval()for XY, Scatter, Contour and Histogram plots.
plotAddTSHF()creates time series plots for high frequency and irregularly spaced data.
plotAddTSLog()create time series plots with the y-axis in log space.
plotSetGroupingBehavior()to control whether box plots are drawn as separate boxes or part of a group–which controls color behavior and spacing.
plotSetYTicLabel()controls the format and angle of y-axis tick labels.
plotSetLegendBkd()controls the opacity and color of the legend background.
Behavior change: The following default graph settings have changed: the grid is off, the axes lines and font text color are now set to black.
Added option for Run and Debug buttons to run the Current File (Tools > Preferences > Command > Behavior).
impute()fills in missing data with a choice of imputation methods.
Outer vector product is up to 400% faster, using the * operator.
Matrix inverse with
inv()is 20%-400% faster for matrices with sizes around 40x40 to 110x110.
amult()performs matrix multiply with multi-dimensional arrays 20% to 3,500% faster for arrays with approximately 50 or more elements.
exp()is 20% to 800% faster for matrices and arrays with more than approximately 50 or more elements.
X'yis faster when
Xis a matrix and
yis a vector.
Matrix multiplication is faster and uses less memory when X is a non-square matrix.
dttostrc()converts DT Scalars to string dates with many new date formatting options.
strctodt()converts string dates to DT Scalars with many new date formatting options.
posixtostrc()converts seconds since the Epoch to string dates with many new date formatting options.
strctoposix()converts string dates to seconds since the Epoch with many new date formatting options.
dttoposix()converts DT Scalar dates to seconds since the Epoch.
Added support for high-frequency data to Posix date/times.
sqpSolvemt()now has the option to compute covariance matrix from cross-product of gradient.
New GUI control. Right-click on a program tab and change your working directory to the directory of that file.
New GUI control. Right-click on a program tab and copy the directory containing that file to the clipboard.
HiDPI scaling is enabled by default.
Updated navigation bar and new icons throughout the application.
All icons now have HiDPI support (eg Retina displays).
User interface styling updated to use flat elements.
New preference (Tools > Preferences > Edit > Default Encoding) controls default file encoding for files opened in the GAUSS editor.
New option to set file encoding for individual files (Edit > Select Encoding).
Bug fix: improved automatic tick label location selection for data separated by very small intervals.
Bug fix: multi-dimensional array matrix multiplication in certain cases with complex matrices would return an error message instead of computing the product.
Bug fix: possible crash when opening files with very long lines.
Bug fix: Fix
plotBox()with only 1 value.
New example files:
Bug fix: Fix source browser not highlighting match in rare cases.
Bug fix: Fix issue with incorrect format type passed to
Bug fix: Fix source browser replace for \rn line endings in files not currently open.
OpenSSL dependencies are now bundled (Linux & Windows).
Bug fix: Regression fix:
varput()was not working with char literals for symbol name.
Bug fix: Fix rare stack overflow for stopping programs with certain multi-dimensional structs.
Bug fix: Fix memory issue with news check from 18.1.4.
UI: Check for news from Aptech on startup.
UI: Show full value for strings and string arrays in debug tooltips.
UI: Add tooltips to debug watch widget.
Perform better validation and whitespace trimming for formula strings.
Specifying ‘factor’ or ‘cat’ in formula string now negates the original variable.
Bug fix: Assigning
structstring member from 1x1 string array was broken.
Bug fix: Recoded symbol debug tooltips. Sometimes columns didn’t align correctly. This has been fixed.
Bug fix: XLS files that didn’t have a lowercase extension did not load correctly in import dialog.
varget()now supports 1x1 string arrays.
Bug fix: assigning to
structstring member would crash in specific cases.
Minor bug fixes, documentation and example updates.
Updates for examples
glmnormal1.eto use formula string notation.
Bug fix loading structs via GDA files.
sampleData()could hang if ‘size’ parameter was less than 0.
Bug fix: Update file access flags on Windows to prevent occasional failure reading/writing files on network drives.
Add auto-update to macOS and Windows.
Add tooltip to color selection buttons in UI.
Added options to sort eigenvalues to the
Bug fix: Fix package installation when both legacy xml and new package json are both present.
Bug fix: Support > 2GB read/writes on macOS and Linux.
Bug fix: Added ability to debug functions with
Other bug fixes.
Allow spaces in file names and paths in GAUSS library files.
Bug fix: Fix for incorrect error report when passing large numbers of extra dynamic arguments to
Bug fix: Fixed incorrect error report with literal integer indexing of
threadfor()temporary variables in certain cases.
Bug fix: Fix for possible compile time stack overflow with nested structure definitions.
Added initial version of package manager (gpkg) CLI. Supports installation/removal of GAUSS application package(s).
New keyword, ‘factor’, in formula strings will load specified columns as a set of dummy variables.
New keyword, ‘cat’, in formula strings will load specified string columns and transform them to a vector of numeric categories.
setBlockSize()to set the size of each chunk of data that is read from a dataset that does not fit in memory.
getHeaders()to return the variable names from any supported data set type.
gmmFit()computes generalized method of moments estimates from user specified moment function.
gmmFitIV()estimates instrumental variables models using the generalized method of moments.
plotCanvasSize()to programmatically control the size of graph canvas.
plotSetTicLabelFont()to programmatically control the font, font-size and font-color of X and Y tic labels.
Speed up of chained concatenation operations and scalar indexing operations by 2-4x.
Speed up of x’y for the vector-vector case by 25% to 800% for vectors longer than approximately 50 elements.
Speed up run-time scalar performance on macOS. Smaller speed-up for all symbol types on all platforms.
Speed up contour plot processing.
delcols()to remove specified columns from a matrix.
contains()indicates whether a matrix, multi-dimensional array or string array contains one or more elements from the second input.
rowContains()indicate whether any element of a matrix, or any element of a row of a matrix, 2-dimensional array or string array contains one or more elements from the second input.
strreplace1()to replace all instances of a substring in a string or string array with another substring.
squeeze()to remove singleton dimensions from a multi-dimensional array.
blockDiag()to create a block-diagonal matrix from multiple input matrices.
besselk()computes the modified Bessel function of the second kind.
rndRayleigh()to compute Rayleigh distributed random numbers.
listColorPalettes()to simplify the process of creating modern, professional and attractive color palettes for graphics.
Updated default color palettes for 2-D graph types.
__FILE_DIRreturns the directory in which the file is located.
Add initialization ability for GAUSS libraries. Placing a file named
[libname]_init.srcin the same directory as the library lcg file will cause that file to be ran when ‘library [name]’ is referenced.
Increase preprocessor #define max length from 40 to 1024.
Add globstar wildcard matching to
gauss.cfg. See distributed
gauss.cfgwith pkgs example.
Added ability to right-click a struct member in a floating symbol editor window to open it in another window for the purpose of simultaneously viewing more than one member of a structure.
The function browser will now located structure definitions as well as proc definitions.
‘Toggle block comment’ can now comment out selections within a single line of code as well as adding multi-line comments.
Added ability to add scatter, xy and other 2-D plot types to an existing contour plot.
olsmt()to make control structure an optional input.
Watch window struct tree remembers expansion state and scrollbar position on reload (ie debug step in/over etc).
Watch window struct vars can now be cloned into their own watch window.
Preferences are now saved to disk when after ‘Apply’ or ‘OK’ has been selected instead of when GAUSS exits.
Bug fix: Fix
alt+leftEdit Page navigation becoming unresponsive sometimes.
Bug fix: Watch windows were sometimes not prevented from updating during program run, which could cause crash.
Bug fix for writer returning 0 on successful writes to HDF5 files, rather than number of written rows.
gdaReadStruct()on Linux can now read structs created on Windows and Mac.
Bug fix: Data Page preview and Debug Page Watch Symbols list took more memory than necessary for sparse matrices.
Bug fix: Fix minor memory leaks.
Added optional input to
cdfEmpirical()to allow specification of the number of bins/breakpoints to use.
plotAdd()calls will now inherit curve level settings from the initial plot call. This should only be noticeable in cases in which a
plotControlstructure is passed in to create the initial graph and subsequent
plotAdds()to not use a
plotControlstructure. This does not require a code change. See User Guide > GAUSS Graphics > Adding data to existing plots for more details.
Behavior change: Application modules will now be installed under
GAUSSHOMEis your GAUSS installation directory and
PKG_NAMEis the name of the installed application module, i.e. tsmt. This does not require code change. Further, this path can be configured through
Behavior change: Global variable __row is no longer referenced, use
setBlockSize()instead. Note that this will not prevent older code from running correctly, but may result in less than optimal sizing of data blocks for which are explicitly processed in chunks which were previously controlled by __row.
New example programs:
Added more complete compile time checks for indexing errors and incorrect use of hat operator for strings.
Bug fix for possible crash in
sampleData()when requesting a sample smaller than 40% of the total observations without replacement.
Bug fix crash when loading .plot file with empty LaTeX text boxes.
Bug fix for
threadendfor()not indenting properly in editor.
Bug fix for
quantiled()returning out-of-memory error with certain datasets.
Removed unnecessary dependency of Qt shared libraries for GAUSS Engine when using
Added support for new graphics with the GAUSS Engine.
Added tooltips on hover for elements that are partially out of view on the Data Page.
Bug fix for cutting off final portion of the last x-axis tick label in rare circumstances with time series plots.
Bug fix for memory bug in specific case related to unique and string array concatenation.
Bug fix of possible hang with debugger ‘Run to cursor’ button.
Bug fixes for specific cases with
Documentation and input check improvements to
(Windows) Added GUI license management utility for floating network licenses,
Bug fix: Fixed possible folder duplication in Source Browser.
Bug fix for program files not saving on run, in specific cases.
Bug fix for possible underflow in
Added ability to remove
tgaussdependency on Qt libraries.
Other minor documentation enhancements and bug fixes.
Up to 2-5x speed increase for least squares estimation, using the slash operator ‘/’ for non-square coefficient matrices with few columns (approximately 1-15) and few rows (approximately 2-100).
Bug fix: File import dialog now supports empty sheet names for Excel files.
Added support for pasting data to the matrix editor from applications that use the legacy carriage return only line ending on Mac.
Increased scalability of
GAUSS commands that process datasets can now also process .fmt, and .h5 files as well as .dat.
New support for HDF5 datasets, allows unlimited sized datasets.
plotAddErrorBar()adds error bars to 2-D plots.
plotAddSurface()adds additional surfaces to an existing surface plot.
plotSetLegendFont()to control the font family, size and color used in the legend.
plotSetZLevels(): user control for the height of levels, rather than just the number of contour levels.
plotSetContourLabels(): controls whether numeric label containing contour level height is drawn, as well as the format of the numeric label.
New color maps for surface and contour plots.
Added option to specify the units and dpi of graphs saved with
Added control for the range of the X and Y axes to the graphics editor.
Added option to control units of graph size and DPI to
Added control for viewing angle, lighting, zoom and toggling appearance of the wireframe for surface plots to the graphics editor.
sylvester()to compute the solution, X, to the equation AX + XB = C.
schur()can now, optionally, return the real or complex Schur form.
dot()to compute the dot product of a column or the columns of a matrix.
powerM()to raise a matrix to a specified power.
getdims()will now return the number of dimensions of a matrix, string or string array.
getorders()will now return the number of rows and columns for matrices, strings or string arrays.
Greatly improved speed and decreased memory usage for
Greatly improved performance of
sortc()for column vectors.
Greatly improved performance of linear solve using the slash operator
(/)for small matrices and X’X matrix multiplication for large matrices.
Greatly improved performance of
kronecker()product operator (
.*.) when one of the matrices is a column vector.
Improved performance of
d1parameter is equal to one, by 10-1000x.
Improved performance of
crossprd()for the case with fewer than 500 vectors.
Added support for complex inputs to
hess()and significant speed up for real matrix inputs larger than approximately 30x30.
tgausscan now create new ‘plot’ graphics.
rndWishartInv()for taking draws from the Inverse Wishart distribution.
pdfWishartInv()computes the probability density function of the Inverse Wishart distribution.
ldl()computes the LDL decomposition of a positive semi-definite matrix and returns separate L and D factors.
Added support for generalized linear model function,
glm()for inverse-Gaussian distribution and model without an intercept.
strtrim()to remove white space from left and right side of elements of a string array.
Added support for multi-character delimiters to
Editor now grays out code that is inactive due to a
Application Install Wizard can install multiple GAUSS application modules at once.
Performance improvement: The “forward only” flag (
dbQuerySetForwardOnly()) now defaults to true.
Bug fix for find-and-replace with UTF-8 multibyte characters.
errorlogat()now accept 1x1 string arrays as well as strings.
intsimp()would fail with an error when attempting to integrate a function that returned only zeros.
Bug fix: ability to scroll to right end in program input/output window with long lines.
New example files:
Data Import Wizard now supports GAUSS Data sets (*.dat, *.fmt, *.fst).
Debugger now supports loading previous stack frames and viewing frame-specific symbols.
Improved breakpoint/bookmark behavior.
Improved file opening behavior from finder on OSX.
Bug fix: Fix various memory leaks.
Bug fix: Fix following symlinks for file paths.
Bug fix: Fix ‘Find Usages’ for struct members.
Bug fix: Support debug tooltips for struct members.
Bug fix: Fix 3D preview, title rendering and exporting for OSX Retina devices.
Bug fix: Fix previous document shortcut not activating for Windows/Linux.
Bug fix: Remove ‘Delete’ option from context menu for undeleteable items in graphics page.
Bug fix: Improve autocomplete for structs and struct reference arguments in procs.
csvWriteM()writes data to a delimited text file from a GAUSS matrix.
Added ability to toggle bolding of functions in Edit Page.
plotPolar()now supports line symbols.
plotAddAnnotation()did not maintain correct z-order for added annotations.
Bug fix: Fix 3D graph export dialog starting size constraints.
Bug fix: Fix ‘Properties’ context menu item on graphics page not coming to top.
Bug fix: Fix semi-colons in strings, causing Format Text (code formatting) option to add line break inside string.
Bug fix: Fix starting indent keywords in Edit Page being case-sensitive.
Bug fix: Properly display long error messages that wrap.
Added internal check for, and removal of, completely zero imaginary portion of a complex matrix on input to function
Bug fix: Add complex support for function
lu()on Mac (already supported on Windows and Linux).
Bug fix: Fix memory leak in function
threadfor()in some specific situations.
Added ability for
fputst()to send data to the standard error stream (
stderr) and the standard output stream (
\__STDOUTas the file handle to
Changed R-squared calculation in
ols()for regression through the origin to prevent possibility of negative R-squared.
Bug fix: GAUSS source path was not searched when a file name was passed to GAUSS on the command line at start up.
Bug fix: cons would continue to return the final buffer data after hitting EOF.
Added Data Import Wizard.
glm()calculates the generalized linear model.
rescale()provides for scaling columns of a matrix.
sampleData()takes samples with or without replacement from a GAUSS matrix.
qz()computes the sorted complex QZ decomposition.
plotSetAxesPen()sets the color and line thickness of the axes line.
integrate1d()uses adaptive quadrature to integrate a user-defined function over a specified range.
Added new compiler command
#ifmacto designate code blocks to be compiled and run only on a Mac.
Added additional, optional argument to
rndi()to specify the range of random integers produced.
Added additional, optional input to
lapgschur()to specify sorting of the eigenvalues.
Add additional, optional argument to
strsplit()to specify delimiter.
Significant speed up to
Added ability to pass a variable number of arguments to GAUSS procedures.
Removed requirement to use DS structure and added option to directly pass matrices to all gradient and hessian functions (
Removed requirement to pass control structure to
F4hot-key will now run the current statement and then skip to the next in addition to running highlighted text.
Improved integration of source editor and debugger. Project view window, ‘find usages’, editing source and other source editor features are available on debug page.
Added multiple new preference options to Tools > Preferences > Debug Page to control opening and closing of temporary files and other debug page behavior.
New preference option added to activate autocomplete only manually on Edit Page (with
Added autocomplete and tooltips to program input/output window.
Added preference to Tools > Preferences > Command to activate autocomplete only manually (with
Added bolding and separate color control syntax highlighting for all GAUSS and user defined procedures (Tools > Preferences > Edit Page > Functions).
Added support for
Ctrl+Eto open a symbol selected in the program input/output window into a floating symbol editor.
Added support for
F4to run highlighted text in program input/output window.
Added sysstate` cases to assess variable arguments passed in to a GAUSS procedure as ‘…’.
Symbol editors remember format preferences until closed instead of using default preferences whenever refreshed.
Speed up for load time of GAUSS when very large folders are open in project view window.
Improved behavior of file associations on Mac.
Autocomplete no longer pops up when deleting characters or in the middle of a word.
Bug fix for display of gaps between bars of a histogram when using
plotAddHistP()in some cases.
Bug fix for situation in which a message box could be hidden and unreachable behind a floating symbol editor.
Bug fix: autocomplete pop-up window no longer stays visible when page loses focus.
Bug fix: ‘find usages’ did not find instances of variables that were index assigns (i.e.
x = 7;).
Bug fix: Dock widgets incorrectly reset to minimum width in some instances of page change and restart GAUSS.
New example programs: