Change Log#
The following is a list of changes from the previous version of GAUSS.
24.0.4#
New function:
dropunusedcategories()
removes any categories from the meta data of a dataframe that are not present in the variable.Bug fix:
dfwider()
will now only create columns from categories that are present in the variable, ignoring categories present in meta data, but not in the current sample.Bug fix:
dfwider()
would fail with an error if theid_cols
control structure member was used in an unnecessary, but correct manner.Bug fix:
dstatmt()
would fail with an error if used with theby
keyword for a categorical variable that only contained a single category.Bug fix:
dropcategories()
would error out if more than one category to drop was passed in.Bug fix: In a specific case the
.$==
operator with a dataframe on the left and a string on the right that was shorter than the dataframe element, but identical for all characters it contained, would be reported as equal.
24.0.3#
Bug fix: Package manager failed to work after updated Conda requirements on Windows.
Bug fix: The error widget incorrectly handled backslashes in certain cases.
24.0.2#
Bug fix:
plotAddHbar()
andplotAddVbar()
would return an error in certain cases if the input was an nx2 matrix and the bar was turned ‘on’ for the last element.Bug fix:
plotScatter()
andplotXY()
could assign the y-axis label to be the name of the ‘by’ variable in the case that the y-label was not previously set and a formula string with the ‘by’ keyword was used.Bug fix:
h5read()
andh5open()
now work with one-dimensional HDF5 datasets.
24.0.1#
Added capability to exclude parts of the columns variable names from becoming part of a new variable when using the names_pattern_split structure member with
dflonger()
.Added support for a negative offset with
upmat()
.Bug fix for some specific cases with wide matrices and a large offset with
upmat()
.
24.0.0#
New functions
dfLonger()
anddfWider()
convert between wide and long form panel data.New ability to compute descriptive statistics on a dataframe for each subset based on a categorical variable with
dstatmt()
and theby
keyword.New ability to estimate linear models separately for each subset based on a categorical variable with the
by
keyword andglm()
orolsmt()
.New function
fgls()
computes feasible GLS estimation with seven options for estimating the innovation covariance matrix.New function
tabulate()
generates and returns two-way tables of frequency.New function
DWstat()
computes the Durbin-Watson statistic from residuals.New function
tracem()
computes the trace of a matrix.New function
startsWith()
returns a binary matrix with a 1 if the element starts with the specified string, otherwise 0.New convenience function
insertcols()
allows you to insert one or more new columns into a matrix or dataframe at a specified location.New function
isStructType()
checks whether a GAUSS variable is a structure of a specific type.New function
dtSecond()
extracts seconds component as numbers from date/time variables.New function
dtMinute()
extracts the minutes from date/time variables as a number (00-59).New function
dtHour()
extracts the hours from date/time variables as a number with option to use 12-hr or 24-hr clock.New function
dtDayofWeek()
extracts the day of the week from date/time variables as a number with option to use Monday (1-7) or Sunday (0-6) start of week.New function
dtDayofMonth()
extracts the day of the month from date/time variables as a number (1-31).New function
dtDayofYear()
extracts the day of the year from date/time variables as a number (1-366).New function
dtDayName()
extracts the name of the day of week from date/time variables as a string array with option to use full or abbreviated names.New function
dtMonthName()
extracts the name of the month from date/time variables as a string array with option to use full or abbreviated names.New function
dtWeek()
extracts the week of the year from date/time variables as a number, using Monday as start of the week (1-53).New function
dtMonth()
extracts the month from date/time variables as a number.New function
dtQuarter()
extracts the quarter from date/time variables as number (1-4).New function
dtYear()
extracts the year from date/time variables as a number with century included.New convenience function
getCategories()
returns category labels of categorical variable.New convenience function
dropCategories()
removes a category from a dataframe and from the dataframe metadata.New convenience function
isstring()
returns a 1 if the input is a string or string array, otherwise 0.New methods forward-fill and backward-fill added to
impute()
.Expanded functionality of
frequency()
to allow for two-way tables and improved printing.Expanded functionality of
strindx()
. The second input can now have multiple rows and/or columns as long as it is element-by-element conformable with the first input.upmat()
now has the option to specify an offset from the main diagonal, the option to return only the upper triangular elements as a vector and is faster for medium and large matrices.New ability to turn density plots off for
kernelDensity()
procedure.New option to plot category counts in order from most frequently occurring to least frequently occurring for
plotFreq()
procedure.New option to report category counts in order from most frequently occurring to least frequently occurring for
frequency()
procedure.plotAddTSHF()
no longer requires afrequency
impute which simplifies usage.Speed increase for
packr()
with large column vectors.Speed increase for
combinate()
with large values of n.Bug Fix:
sprintf()
could cause a crash in certain cases with very large floating point numbers.Bug Fix:
svdusv()
could have a memory leak in certain situations.Bug Fix: Loading data with
loadd()
from a.gdat
file with certain formula strings would fail with an “arguments not conformable error”.Bug Fix: Copy-and-paste with the error widget open could cause a crash on Windows 11.
Bug Fix:
strindx()
could crash if a dataframe with a missing value was passed in as the first input.Bug Fix:
plotsave()
could hang if the unit argument was not passed in. The unit argument now has a default value of “px”.
23.0.4#
Bug Fix:
loadd()
could fail to load a csv file if some particular sections ended with multiple missing values.Bug Fix:
loadd()
would fail to load.gdat
files if a formula string transformed a numeric variable to categorical or string.Bug Fix:
saved()
would report an error if saving a dataset with only numeric variables.Bug Fix:
kerneldensity()
would not respect x-label setting if a plot setting procedure pointer was passed in and was setting plot canvas size automatically.
23.0.3#
Bug Fix: The generated code in the symbol editor could be incorrect in the event a header was both renamed and toggled in a manner that would remove it.
Bug Fix: The generated code in the file import dialog could be incorrect when a certain number of headers were toggled and additional modifications were present.
Bug Fix:
rescale()
was not always retaining column metadata.Bug Fix: Matrix multiply operations will now always drop column metadata.
Bug Fix: Custom fonts were being ignored when used in LaTeX labels for
\\{text}
tags when plotting.Bug Fix: Specifying
"vcenter"
inplotSetLegend()
was also causing horizontal alignment to occur.Bug Fix:
plotSave()
now allows a 1x1 string array for the filename argument instead of requiring a string.Bug Fix: Additional validation was added to
trimr()
.Bug Fix:
asdf()
now allows the headers argument to be a string array instead of requiring each header as a separate string argument.
23.0.2#
Behavior Change: The
kernelDensity
procedure accepts column vector bandwidth to set different bandwidths for each column of the dataset.Bug Fix: The column sniffing behavior of the import dialog did not match the logic of
loadd()
, which could lead to unexpected column types.Bug Fix: Overriding the guessed column type in the import dialog will now correctly use the
pass
keyword in the formula string, indicating the column should be passed through unaltered.Bug Fix: The Help Page ‘Index’ widget will now correctly load certain built-in functions that may have redundant pages elsewhere (e.g. the User Guide).
Bug Fix: Selecting a compiled file (extension
.gcg
) in the project view widget will now execute the file instead of attempting to open it as a source file.Bug Fix: (Windows) Reading Excel data from COM using
xlsReadSA()
will now store the data sequentially in the underlying datastore. This was causing corrupted string arrays in certain use-cases, such as overwriting a string value in the symbol. This bug is not present if#define USECOMEXCEL 1
is commented out in xls.src.
23.0.1#
strsect()
now supports string arrays.Behavior Change: Date patterns have had their acceptable years modified to 1800 <=> 2200 to reduce the occurrence of false positives. (e.g. detecting a date column with
loadd()
)Bug Fix: Automatic type detection could cause loading failure in cases where the column looks like a date but is a pre-defined category column.
Bug Fix: In specific cases where a message exceeded a certain size with errorlog, a crash could occur on Windows.
Bug Fix: The
fred_api_key
value was not being read from thegauss.cfg
file.Bug Fix: Calling
strtof()
on a dataframe category/string column with a NaN could cause a crash.Bug Fix:
loadd()
will now default to the CSV file type for unrecognized file extensions.
23.0.0#
A new
*.gdat
file type has been introduced with full support for GAUSS dataframes. Seeloadd()
andsaved()
.Added new functions to download and search Federal Reserve Economic Data (FRED) directly into a dataframe. See
fred_load()
andfred_search()
.Added new function to download DBnomics data directly into a dataframe. See
dbnomics_series()
.Added new function
between()
returns a vector with a 1 if the element is in the range or otherwise a zero.Added new function
where()
that returns elements froma
orb
, depending oncondition
.Added new function
shiftc()
shifts data down the columns of a matrix.Added new function
kerneldensity()
for computing and plotting kernel estimates. Added kernels include Normal, Epanechnikov, Biweight, Triangular, Rectangular, Truncate normal, Parzen, Cosine, Triweight, Tricube, Logistic, Sigmoid, and Silverman.Added new function
kurtosis()
to compute sample kurtosis.Added new function
skewness()
to compute sample skew.Added new function
jarqueBera()
to compute Jarque-Bera test for goodness of fit and normality.quantileFit()
now implements kernel estimate of asymptotic covariance. Kernel options include Normal (Gaussian), Epanechnikov, Biweight, Parzen, and Cosine.quantileFit()
now implements bandwidth selection methods. Method options include Hall-Sheather, Bofinger, and Chamberlain.quantileFit()
now computes pseudo R-squared.quantileFit()
output printing improved and expanded to include model characteristics in model header.quantileFit()
now compatible with dataframe and formula string syntax.clusterSE()
androbustSE()
now compatible with dataframe and formula string notation.clusterSE()
androbustSE()
now include optional argument for turning off small sample correction.loadd()
can now read known file types directly from a URL.loadd()
will now automatically detect column types. This can be controlled ingauss.cfg
with thepolicy_formula_auto_infer
option.saved()
now supports*.fmt
files.getGAUSSHome()
can now accept relative paths as an input so they do not have to be appended to the end with the string addition operator.strctoposix()
will now return a missing if the string input matches the current workspace’s missing value.vartypef()
now returns all possible dataframe header types instead of strictly numeric/string.Up to 10x speed improvememnt and 50% decrease in memory usage for
lagn()
.lagn()
now retains variable names and column types from the input.Improved performance of date format pattern matching with
loadd()
.Improved performance of
indsav()
with dataframes.Improved performance for reading large XLS/XLSX files with
loadd()
and when previewing files in the file import dialog.Improved performance when viewing large symbols in the symbol editor. Specifically symbols with many columns.
Improved performance of all GAUSS ExE operators with temporary matrices (e.g.
df[., "age"] .> 30
).Improved performance of
reclassify()
, especially with a singlefrom
andto
element.Opening ReadStat file types (SAS, Stata, SPSS) now has a progress indicator while loading in the file import dialog.
Behavior Change: Unmapped dataframe string/category column values will be represented as string literals instead of a missing for purposes of printing. Note that the string literal will not match a mapped value in an oppossing dataframe in the context of an
outerjoin()
.Behavior Change: Negative keys are now allowed for dataframe string/category column types.
Behavior Change: The OMP default child count was changed from 2 to 1. This improved performance significantly in cases with threadfor, threadendfor loops that performed multi-threaded BLAS/LAPACK functions, such as matrix multiply.
Bug Fix: A file buffer containing
open f = /
would cause a crash in the syntax parser.Bug Fix: An empty newline at the end of a CSV could show up as row of missings.
Bug Fix: Certain edge cases with relative paths could cause
#include
to fail.Bug Fix: Certain edge cases in
selif()
,delif()
,copymetadata()
andsetcoldateformats()
caused a memory leak.Bug Fix:
move()
could fail in specific cases.Bug Fix:
asdf()
now allows dataframes to be passed as input for string arguments.Bug Fix: Indexing a dataframe with fixed rows and specifying
.
for the columns when the column count is 1 would not return a dataframe.Bug Fix:
xlsGetSheetSize()
would return \([1, 1]\) for sheets that were a row or column vector.Bug Fix:
strctoposix()
is now case-insensitive for character literals in the pattern/input.Bug Fix: Formula strings containing newlines would not work correctly.
macOS now bundles in OpenSSL with the installer, and all three platforms are now using OpenSSL 1.1.1q.
New examples: olsmt_nw.e, kerneldensity_wine.e, quantilefitdf.e
22.2.1#
Bug Fix: Extra spacing could show up between axis labels and numbers in certain cases.
Bug Fix: A one-time crash could occur after retrieving an updated license after a subscription renewal.
22.2.0#
Added support for GAUSS subscription-based licenses.
Added support for multiple activation keys in the license activation dialog. (GUI)
Added support for passing extra arguments to the objective function in
sqpSolve()
.Added support for passing extra arguments to the objective function in
QNewton()
.Bug Fix:
dbGetTables()
returned an error instead of a scalar missing on an empty result set.Bug Fix: F4 shortcut was not interpreting
__FILE_DIR()
correctly.Bug Fix: Fixed Forward/Back key shortcuts for navigating file history on macOS.
Bug Fix: Custom missing values in the file import dialog could cause GAUSS to crash.
Bug Fix: Allowed changing case of dataframe header names in the symbol editor (GUI).
Bug Fix: Legend positioning could be slightly off in certain circumstances.
Bug Fix: The legend font color could overwrite the marker border color when a plotAdd occurred.
Bug Fix: Use current encoding when doing token matching in the editor.
Bug Fix: macOS update was not removing existing vwrmp.app before replacement.
Bug Fix: Multi-element assignment with a 1x1 matrix on the right-hand side would cause an error.
Bug Fix: Indexing a scalar from a dataframe vector in a non-atomic fashion was not returning a dataframe.
Bug Fix: Selecting a new date format in the symbol editor would show existing dates that were missing values as the incorrect date until the change was applied.
Bug Fix: Fixed support for negative category keys when reading Stata files.
22.1.0#
New function
dfappend()
vertically stacks dataframes and merges the meta data from string and categorical columns.sortc()
can now accept multiple columns to sort on.sortmc()
can now accept string variable names.New convenience feature: The column input to
reshape()
is now optional and if a -1 is passed in for the row or column input,reshape()
will infer the other dimension.New convenience feature:
miss()
with no inputs will return a scalar missing value.New functions
head()
andtail()
allow convenient previewing of the first or last rows of data.New function
annotationsettextalign()
allows specifying alignment of text inside textboxes programmatically.New function
annotationsetlinepen()
allows for more convenient setting of annotation line width, color and style.Final inputs to
annotationsetfont()
are now optional inputs.New function
plotsetfonts()
allows convenient control of font family, size and color for all, or a subset of the text elements in a graph.New function
plotsetmissgap()
controls whether a gap in line plots is shown for missing observations.New functions
plotsetactivex()
andplotsetactivey()
control which x and y axes (bottom/top, left/right) subsequent plotSet functions apply to.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
plotaddtextbox()
.Added support for specifying a single x or y-axis to
plotsettextinterpreter()
.Added support for space separated string specifiers to
plotsettextinterpreter()
for convenience.Added additional optional inputs to
plotsetxrange()
andplotsetyrange()
to set the tick inverval and the location of the first tick label.The x-top axis now supports time series data.
plotsetxrange()
andplotsetyrange()
can now set the top / bottom x-axes and left / right y-axes separately.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.
Improved the automatic tick spacing for time series plots through
plotxy()
andplottshf()
.plotsetxticcount()
andplotsetyticcount()
when set to 0, now provide a convenient way to turn off ticks and tick labels.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 optional input to functions
vcm()
andvcx()
, allowing control over the degrees-of-freedom adjustment used in the computation.Added additional argument to
outerjoin()
to allow a full outer join instead of only left outer join (the default).Added significant performance increase to
indnv()
for most cases. If the input is already sorted,indnv()
now accepts an optional argument to specify this for reduced overhead.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:
plotsetxticinterval()
andplotsetyticinterval()
would set the top x-axis or right y-axis respectively when a scalar (rather than 2x1) input was passed in.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”.Bug Fix:
__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.
Bug Fix:
strsplit()
could cause a crash in specific cases.New example files
plotunemp.e
illustrates plotting time series variables from a dataframe usingplotXY()
and formula strings,plot_customlayout_1.e
shows placing a histogram count of the data above the x-axis and across from the y-axis..Updated example files to use new functionality:
plotadd1.e
,plotaddci.e
,plot_bootmean.e
,plotadderrorbar2.e
,plotar2.e
,plotbar.e
,plotbox_auto.e
, and more.
22.0.3#
stocv()
now supports dataframe inputs.satocv()
now supports dataframe inputs.strtof()
now supports dataframe inputs.Bug Fix:
ftocv()
now correctly strips metadata if a dataframe is provided.Bug Fix:
loadd()
now correctly works with CSV and XLS files withheader_row = 0
for the control struct member.
22.0.2#
Graphics: Added support for date variables to
plotScatter()
andplotXY()
.Graphics: Added support for specifying date intervals to
plotSetXTicInterval()
.Optimized changing the format in the symbol editor for extremely large symbols.
Add
warninglog()
andwarninglogat()
keywords to produce warning, similar toerrorlog()
anderrorlogat()
.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.
Bug Fix:
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.
22.0.1#
Bug Fix: Specifying the GAUSSHOME value with non platform-specific separators would cause globbing to fail when reading gauss.cfg, (eg
$GAUSSHOME/pkgs/*/src
on Windows)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.
22.0.0#
Added new preprocessor
#includedir
to add current file directory to source path. If executed from the Command Window (PGM), uses current working directory.#include
and#includedir
statements can now be processed withF4
in the GUI.__FILE_DIR()
now works withF4
in 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
policy_check_df_header_dupes
key.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 thepolicy_check_df_header_dupes
policy is enabled in gauss.cfg. This policy is enabled by default.dfname()
was added as an alias forsetcolnames()
.dftype()
was added as an alias forsetcoltypes()
.asdate()
was added as an alias forsetcoldateformats()
.%e
,%E
,%f
,%F
,%g
,%G
flags were reimplemented for more consistent results withsprintf()
.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).Added
%v
support toasdate()
. This is shorthand for%e-%b-%Y
.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:%b
(binary),%o
(octal),%x
and%X
(hex).aggregate()
now accepts an optional input specifying the column index or name of the variable to aggregate on.Graphics:
plotScatter()
,plotXY()
andplotBox()
now support formula strings and automatically handle dataframe input to generate the appropriate axis and legend labels.Graphics: New formula string keyword,
by
splits data to be plotted byplotScatter()
,plotXY()
andplotBox()
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
plotSetLegendTitle()
.Graphics: Added new functions for vertical/horizontal lines to span the entire axis:
plotAddVLine()
,plotAddHLine()
.Graphics: Added new functions for vertical/horizontal bars to span the entire axis:
plotAddVBar()
,plotAddHBar()
.Graphics:
plotAddVBar()
andplotAddHBar()
support FRED-style input data. (eg { 1950, 1 }, { 1951, 1 }, { 1952, 0 }, …).Graphics: Added support for dates in simple string format to
plotSetXRange()
.Graphics: Added support for outliers to
plotBox()
.Graphics:
plotBox()
can now accept a vector of groups as the first data input. They
variable will be split by the categories in the group vector and plotted as separate boxes.Graphics: Added new function
plotSetJitterRange()
to control the jitter range forplotScatter()
andplotBox()
outliers.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
plotContour()
labels.Graphics: Axis tics can now be displayed on the inside of the chart (as opposed to outside only) or hidden completely with the
plotSetTicPosition()
function.Graphics: Added new function
plotSetOutlineEnabled()
to allow a box outline around the entire chart. Outline attributes are controlled via axis properties usingplotSetAxesPen()
or individually withplotSetXPen()
andplotSetYPen()
.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 functions
plotSetXGridPen()
andplotSetYGridPen()
allow the major and minorx
andy
axis grid lines to be enabled and styled separately.Graphics: New function
plotSetGridPen()
allows the major and minorx
andy
axis 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: Added support for specifying the bar width (
plotSetBarWidth()
) and box width (plotSetBoxWidth()
).Graphics:
plotAddXY()
andplotAddScatter()
now support category labels as input for X values, so data can be added to locations specified by a text label, rather than a numeric value.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 forplotPolar()
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.Performance:
movingave()
up to 4-6x faster.Performance:
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 (
dfname()
,dftype()
,asdate()
, etc) can now automatically convert a non-dataframe input to a dataframe. String arrays are automatically converted to a category column.Dataframes:
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
%s
toasdate()
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:
strtrim()
,strtriml()
,strtrimr()
,strtrunc()
,strtruncl()
,strtruncr()
,strtruncpad()
,upper()
,lower()
,strindx()
,strreplace()
,strsect()
,indsav()
,indnv()
,contains()
,strsplit()
,strjoin()
,strcombine()
,aggregate()
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
"%Y-%m-%d %H:%M:%S.%L"
.Dataframes:
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.
Dataframes:
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)Dataframes:
sortc()
now allows you to specify columns by name.Dataframes: Empty date formats now default to the default date format of
%Y-%m-%d
.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
%s
pattern insprintf()
.Dataframes: Bug Fix: All dataframe and string combinations are now supported for
$+
operations.Behavior Change:
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_indexing
is 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.Bug Fix:
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.Bug Fix:
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 insprintf()
.Bug Fix:
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:
seqadt()
andseqaposix()
now correctly allow dataframes to pass through without losing their metadata.Bug Fix: Formula strings that contained a
:
or*
character in the argument field (egdate($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.
Bug Fix:
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.
21.0.8#
Bug Fix:
plotContour()
would render incorrectly if a custom X/Y range was specified.
21.0.7#
Bug Fix:
strctodt()
andstrctoposix()
would set the finalized date to 1 day prior if the day was not specified in the 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
cons()
call.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.
Bug Fix:
timediffdt()
andtimediffposix()
were incorrectly returning output as a dataframe.Bug Fix:
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.
21.0.6#
Added policy to control behavior for dataframe indexing operations that return a scalar. Resulting scalar can now remain a dataframe.
Added dataframe category/string support to
indexcat()
,rowcontains()
,ismember()
.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.
Bug Fix:
strlen()
now correctly works with dataframe category/date columns.Bug Fix: Memory leak in
seqaposix()
andseqadt()
for certain cases.Bug Fix: Memory leak in
eye()
for certain cases.Bug Fix: Dataframe comparisons against a string array operand could crash.
21.0.5#
Add new
plotAddXYFill()
function.Update OpenSSL libraries on Linux to 1.1.1j.
21.0.4#
Bug Fix: Fixed edge-case performance issue.
21.0.3#
Bug Fix:
dbGetTables()
would crash GAUSS.Bug Fix:
eye()
would crash in specific circumstances if a value less than 1 was passed in.
21.0.2#
Bug Fix:
sprintf()
had incorrect output in the%g
case with 0’s after a decimal and prior to the first significant digit.
21.0.1#
Editor documents now have yellow underline markup for locals and/or arguments that are unused, as well as an icon in the margin.
Bug fix:
corrxs()
was not correctly copying metadata upon return.
21.0.0#
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#defines
inpolicy.dec
.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.loadFileControlCreate()
fills aloadFileControl
structure with the defaults for the new data loading options.Formula string keyword
cat
now supports an optional input to set the base case.Formula string keyword
date
now supports an optional input to specify the incoming date format.Logical operators (
.<
,.>
,.<=
,.>=
,.==
,.!=
) support comparisons with date strings and categorical variable labels.glm()
andolsmt()
support dataframes and automatically turn categorical variables in to dummy variables.dstatmt()
supports dataframes and counts missing values by default.saved()
will write, string, categorical and date variables. The variable names argument is now optional.New functions
setcolnames()
andgetcolnames()
set and return columns names of a matrix, or dataframe.New functions
setcoltypes()
andgetcoltypes()
set and return the variable types of the columns of a matrix, or dataframe.New function
setcolmetadata()
sets column names and variable types for a matrix or dataframe.New function
recodecatlabels()
changes the labels displayed for a categorical variable in a dataframe.New function
reordercatlabels()
changes the order of the labels displayed for a categorical variable in a dataframe.New function
setbasecat()
sets the base category of a categorical variable.New functions
setcollabels()
andgetcollabels()
set and return the integer key values and string labels of categorical variables in a dataframe.New function
getcollabelvalues()
returns the string labels for every observation of a categorical variable as a string array.New function
setcoldateformats()
sets the display format of a date variable,getcoldateformats()
returns the display format.New function
hasmetadata()
returns a 1 if the input is a dataframe.New function
asmatrix()
turns a dataframe into the equivalent matrix.New function
order()
reorders columns of a dataframe by name.New function
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+F1
will 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 Format loops is now allowed.
Bug fix: Memory leak in
lagtrim()
.Bug fix: Memory leak in specific situation with
EuropeanBSCall()
.Bug fix: Format would not allow certain cases with multiple references to a slice variable to compile.
Control Var node on Data Page is now collapsed by default.
New example files for dataframe ‘get’ and ‘set’ functions as well as
frequency()
andplotFreq()
.GLM example files updated to use dataframes.
20.0.7#
Bug Fix:
sprintf()
had incorrect output in the%g
case with 0’s after a decimal and prior to the first significant digit. (Backported)
20.0.6#
macOS: Add environment variable
QT_MAC_WANTS_LAYER
to LSEnvironment key to fix hang on startup with Big Sur.
20.0.5#
strctoposix()
andposixtostrc()
now support specifying the quarter (%q
).Add ability to toggle ‘Safe Write’ in preferences. This fixes an issue some users may experience when trying to save files in Dropbox/OneDrive/Google Drive, or other similar shared folders.
20.0.4#
Bug Fix:
sprintf()
was omitting trailing 0’s for%f
case.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.
Bug Fix:
plotLogX()
andplotLogY()
were incorrectly setting both axes to log scale.Bug Fix:
gmmFit()
was not computing Hansen J-stat.Bug Fix: Some Project View folders did not have ‘Set to Working Directory’ available.
Added optional user-specified truncation lags to
gmmFitIV()
andgmmFit()
Bug Fix: Updated HAC weight matrix computation method in
gmmFit()
andgmmFitIV()
20.0.3#
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.
Add custom quotation character support to
csvReadM()
andcsvReadSA()
.Bug Fix:
varget()
was not performing a deep copy for structs.Improve performance for enumeration and tooltips on symbol page for very large strings.
Bug Fix:
plotAddBar()
andplotAddBarH()
could sometimes segfault without a correctly initialized axis.Bug Fix:
plotAddBarH()
was not behaving the same asplotAddBar()
with existing labels and custom indices.
20.0.2#
File import dialog now uses
%g
formatting 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.
20.0.1#
Added new example files
aggregate_housing.e
,sprintf_cancer_1.e
,sprintf_cancer_2.e
.Bug fix:
plotAddHist()
could crash if the previous graph did not have a category axis.
20.0.0#
New integrated package manager to download, install and uninstall Aptech provided, or private GAUSS packages.
New function,
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.New function
sprintf()
formats combinations of string and numeric matrices.New function
loaddSA()
loads variables from datasets as GAUSS string arrays.New function
dynargsGet()
retrieves optional arguments passed into a procedure, or default values.New function
dynargsCount()
counts the number of optional arguments passed into a procedure.New function
dynargsTypes()
returns a vector indicating the types (i.e. matrix, string, structure) of the optional arguments passed into a procedure.New function
modec()
computes the mode of the columns of a matrix.Added option to use custom weights for weighted least squares estimation with
olsmt()
.New function
plotXYFill()
creates filled area plots between XY lines.New function
plotBarH()
creates horizontal bar plots.New function
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.New function
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
.XLSM
files is now supported for the case where the COM/Excel interface is not used.Increased compatibility for newer style
.XLSX
files for the case where the COM/Excel interface is not used.Bug fixes: several minor bug fixes for reading
.XLSX
files 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.
Bug fix:
substute()
reported error unnecessarily for specific case with mixed numeric and string input.Bug fix:
xlsReadSA()
reported error with string array vls input.Bug fix:
reclassify()
possible crash when the from variable was much smaller than to.Changed state variable in example dataset
hsng.dat
to a string variable with state abbreviations.New example file
wls.e
demonstrates weighted least squares estimation.New example file
impute.e
demonstrates several missing value imputation methods.Adding setting
dataloop_case = on
togauss.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
19.2.2#
Upgrade Reprise License Manager (RLM) to 13.0 for macOS
19.2.1#
Add explicit query-deleting for database calls (eg
dbExecQuery()
) withdbQueryDelete()
method.Database: Add auto-cleanup of queries and open databases on ‘new’ statement and after
GAUSS_FreeWorkspace
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
Bug fix:
strtof()
would result in output matrix twice as large as input even in cases of real input.
19.2.0#
19.1.2#
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 outputBug fix: The saveall command could cause a program to crash after the save in specific situations.
19.1.1#
Bug fix: Saving files was improved in situations where the file could be locked, resulting in being unable to save or extra temporary files.
19.1.0#
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.
Added function
plotSetZRange()
to control the range of the Z-axis on surface plots.New example files
plotlogx.e()
andplotlogy.e()
.Bug fix:
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
quantileFit()
.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
plotSetLegend()
.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.
19.0.2#
Speed up of approximately 33% to
quantileFit()
.Improved formatting of output tables for
dstat()
,dstatmt()
andolsmt()
.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
invpd()
.Bug fix: output table printing returned error when variable names were not specified in
quantileFit()
.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.e
shows how to: plot monthly data withplotTSHF()
, 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
plotbox_auto.e
, andquantilefit3.e
.Bug fix: Allow curve attribute control in graphics page settings widget for box plots with
groupingBehavior
set to 1.
19.0.1#
Update
scatter1.e example
.Fix action list ‘Current File’ action.
19.0.0#
New online license activation allows for convenient license activation from a product key.
New function
quantileFitLoc()
performs local linear and quadratic quantile regressions.New function
quantileFit()
performs quantile regression.New function
qfitControlCreate()
creates defaultqfitControl
structure.Added option for clustered standard errors and robust standard errors to
olsmt()
andquantileFit()
.New function
clusterSE()
for computing clustered standard errors.New function
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.
New function
norm()
computes the matrix 1, 2 (Spectral), Infinity, Frobenius and Nuclear norms or the vector p-norm.New function
lagTrim()
returns a matrix containing specified lags and/or leads with incomplete rows removed.New function
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.New function
plotTSHF()
andplotAddTSHF()
creates time series plots for high frequency and irregularly spaced data.New functions
plotTSLog()
andplotAddTSLog()
create time series plots with the y-axis in log space.New function
plotSetGroupingBehavior()
to control whether box plots are drawn as separate boxes or part of a group–which controls color behavior and spacing.New function
plotSetYTicLabel()
controls the format and angle of y-axis tick labels.New function
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).
New function
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.The log 10 and natural log functions,
log()
andln()
, take 15% to 60% less computation time for matrices and arrays with more than approximately 50 or more elements.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.dot()
is faster.X'y
is faster whenX
is a matrix andy
is a vector.Matrix multiplication is faster and uses less memory when X is a non-square matrix.
New function
dttostrc()
converts DT Scalars to string dates with many new date formatting options.New function
strctodt()
converts string dates to DT Scalars with many new date formatting options.New function
posixtostrc()
converts seconds since the Epoch to string dates with many new date formatting options.New function
strctoposix()
converts string dates to seconds since the Epoch with many new date formatting options.New function
dttoposix()
converts DT Scalar dates to seconds since the Epoch.New functions
timedeltadt()
andtimedeltaposix()
add or subtract from DT scalar or Posix date/time values in terms of user specified time units.New functions
timediffdt()
andtimediffposix()
compute the difference between dates in either DT scalar or Posix date/time values in terms of user specified time units.New functions
seqadt()
andseqaposix()
create sequences of dates in either DT scalar or Posix date/time format with a user specified time increment.Added support for high-frequency data to Posix date/times.
Final input to
strsect()
is now optional. New two input case:strsect()
will copy from the start index to the end of the string.Final input to
strindx()
andstrrindx()
is now optional. New two input case:strindx()
will start searching from the first character, whilestrrindx()
will search from the last character.sqpSolvemt()
now has the option to compute covariance matrix from cross-product of gradient.Date strings returned from
xlsReadSA()
(as well asloadd()
) that use LibXL orxls.dll
(Windows-only) now return date with time information in fixed format pattern"MM/DD/YYYY HH:MI:SS.SSS"
.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:
plottshf.e
,robustse.e
,quantilebs.e
,quantilefit1.e
,quantilefitloc1.e
.Bug fix: Fix source browser not highlighting match in rare cases.
Bug fix: Fix issue with incorrect format type passed to
satostrc()
.Bug fix: Fix source browser replace for \rn line endings in files not currently open.
OpenSSL dependencies are now bundled (Linux & Windows).
18.1.5#
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.
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: in
ols()
, constant was not added to variable labels forols()
report in certain case.Bug fix:
olsqr()
trap case was not settingscalerror
for 2 out / 3 in case.Bug fix: Assigning
struct
string 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.
Bug fix:
varget()
now supports 1x1 string arrays.Bug fix: assigning to
struct
string member would crash in specific cases.
18.1.3#
Minor bug fixes, documentation and example updates.
18.1.2#
Updates for examples
glmbinomial1.e
,glmgamma1.e
andglmnormal1.e
to use formula string notation.
18.1.1#
Bug fix loading structs via GDA files.
saveStruct()
andloadStruct()
now work with files greater than 2GB on Windows (up to 4GB).Bug fix:
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.
18.1.0#
Add auto-update to macOS and Windows.
Add tooltip to color selection buttons in UI.
Added options to sort eigenvalues to the
schur()
function.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
threadfor()
statements.Other bug fixes.
18.0.1#
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
gmmFit()
.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.
18.0.0#
Added initial version of package manager (gpkg) CLI. Supports installation/removal of GAUSS application package(s).
Added ability to read SAS and STATA datasets with
loadd()
and any function that takes a formula string, such asdstatmt()
,glm()
,gmmFitIV()
.Formula strings can now apply transformations from GAUSS procedures, such as
ln()
andexp()
as well as interaction terms.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.
New function
setBlockSize()
to set the size of each chunk of data that is read from a dataset that does not fit in memory.New function
getHeaders()
to return the variable names from any supported data set type.New function
gmmFit()
computes generalized method of moments estimates from user specified moment function.New function
gmmFitIV()
estimates instrumental variables models using the generalized method of moments.New function
gmmControlCreate()
creates defaultgmmControl
structure.New function
plotCanvasSize()
to programmatically control the size of graph canvas.New function
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 of 15-30% for
dstat()
,dstatmt()
andols()
for large matrix inputs.Speed up run-time scalar performance on macOS. Smaller speed-up for all symbol types on all platforms.
Speed up contour plot processing.
New functions
innerJoin()
andouterJoin()
for joining matrices on specified columns.New function
delcols()
to remove specified columns from a matrix.New function
contains()
indicates whether a matrix, multi-dimensional array or string array contains one or more elements from the second input.New functions
isMember()
androwContains()
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.New function
strreplace1()
to replace all instances of a substring in a string or string array with another substring.New function
squeeze()
to remove singleton dimensions from a multi-dimensional array.New function
blockDiag()
to create a block-diagonal matrix from multiple input matrices.New function
besselk()
computes the modified Bessel function of the second kind.New function
rndRayleigh()
to compute Rayleigh distributed random numbers.New functions
blendColorPalette()
,getColorPalette()
,getHSLPalette()
,getHSLuvPalette()
andlistColorPalettes()
to simplify the process of creating modern, professional and attractive color palettes for graphics.Updated default color palettes for 2-D graph types.
New define
__FILE_DIR
returns the directory in which the file is located.New functions
cdfTruncNorm()
andpdfTruncNorm()
to compute the cumulative distribution function and the probability density of the truncated normal distribution.New functions
cdfLogNorm()
andpdfLogNorm()
to compute the cumulative distribution and probability density functions of the log-normal distribution.Add initialization ability for GAUSS libraries. Placing a file named
[libname]_init.src
in 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 distributedgauss.cfg
with pkgs example.Added optional inputs mean and standard deviation to
cdfn()
, andpdfn()
.Added support for multi-dimensional array inputs to
pdfn()
,erf()
,erfc()
,erfInv()
,erfcInv()
, the power operator ‘^’.Added ability to pass string array as X axis tic labels for
plotXY()
andplotScatter()
.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 for ExE conformable vector inputs to
europeanBSCall()
,europeanBSPut()
.Added ability to add scatter, xy and other 2-D plot types to an existing contour plot.
Updated
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+left
Edit 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.
Bug fix:
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.Behavior change:
cdfEmpirical()
now returns the breakpoints as well as the cumulative probability. This will require use ofcdfEmpirical()
to assign to two return values.Behavior change:
plotAdd()
calls will now inherit curve level settings from the initial plot call. This should only be noticeable in cases in which aplotControl
structure is passed in to create the initial graph and subsequentplotAdds()
to not use aplotControl
structure. 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
GAUSSHOME/pkgs/PKG_NAME
, whereGAUSSHOME
is your GAUSS installation directory andPKG_NAME
is the name of the installed application module, i.e. tsmt. This does not require code change. Further, this path can be configured throughgauss.cfg
.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:
cdfempirical.e
,gmm_auto_ols.e
,gmm_hsng1_iv.e
,gmm_hsng2_iv.e
,gmmfitiv_auto.e
,gmmfitiv_hsng.e
,gmm_tdist.e
.
17.0.5#
Bug fixes.
17.0.4#
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
threadfor()
andthreadendfor()
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
libcql_stubs.dylib
on Mac.
17.0.3#
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
cdftnc()
.Documentation and input check improvements to
polygamma()
.
17.0.2#
(Windows) Added GUI license management utility for floating network licenses,
rlmservice.exe
.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
cdftnc()
.Added ability to remove
tgauss
dependency on Qt libraries.Other minor documentation enhancements and bug fixes.
17.0.1#
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.
17.0.0#
Increased scalability of
threadFor()
andthreadBegin()
.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.
Added support for an initial subset of Wilkinson-Rogers formula notation for functions such as
dstat()
,dstatmt()
,glm()
,momentd()
,ols()
,olsmt()
and more.CSV and Excel (.xls, .xlsx) files can be used as datasets for functions
quantiled()
,dstatmt()
,glm()
,momentd()
,ols()
,olsmt()
and more.New function
cdfEmpirical()
for computing the empirical cumulative distribution function, andplotcdfEmpirical()
to graph it.New function
plotAddErrorBar()
adds error bars to 2-D plots.New function
plotAddSurface()
adds additional surfaces to an existing surface plot.New function
plotSetLegendFont()
to control the font family, size and color used in the legend.New function
plotSetZLevels()
: user control for the height of levels, rather than just the number of contour levels.New function
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
plotSave()
.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
plotSave()
.Added control for viewing angle, lighting, zoom and toggling appearance of the wireframe for surface plots to the graphics editor.
New function
sylvester()
to compute the solution, X, to the equation AX + XB = C.schur()
can now, optionally, return the real or complex Schur form.New function
dot()
to compute the dot product of a column or the columns of a matrix.New function
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
reclassify()
.Greatly improved performance of
unique()
anduniquesa()
for string arrays.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
cdffc()
when thed1
parameter 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.tgauss
can now create new ‘plot’ graphics.New function
rndWishartInv()
for taking draws from the Inverse Wishart distribution.New function
pdfWishartInv()
computes the probability density function of the Inverse Wishart distribution.New function
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.New function
strtrim()
to remove white space from left and right side of elements of a string array.Added support for multi-character delimiters to
strsplit()
.New function
strjoin()
to combine string array elements into a string separated by a specified delimiter. This function does NOT add a delimiter after the final element as instrcombine()
.Editor now grays out code that is inactive due to a
#define
.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.
Bug fix: added support for strings to
selif()
anddelif()
and fixed memory bug indelif()
.Bug fix: crash when all points sent to
plotLogX()
,plotLogY()
orplotLogLog()
were between 10^n and 10^n+1.Bug fix:
errorlog()
anderrorlogat()
now accept 1x1 string arrays as well as strings.Bug fix:
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:
dstatmth5.e
,glmnormalh5.e
,plotadddsurf1.e
,plotadderrorbar1.e
,plotadderrorbar2.e
,plotarea_ci_latex.e
,plotcontour2.e
andplotxy_latex1.e
.
16.0.5#
Bug fixes.
16.0.4#
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: Support
plotAddArea()
andplotAddBar()
to existing time-series plots.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.
16.0.3#
New function
csvWriteM()
writes data to a delimited text file from a GAUSS matrix.Added ability to toggle bolding of functions in Edit Page.
Bug fix:
plotPolar()
now supports line symbols.Bug fix:
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
lu()
.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.
16.0.2#
Added ability for
csvReadM()
andcsvReadSA()
to read data from the standard input stream (stdin). Pass __STDIN as the filename argument tocsvReadM()
andcsvReadSA()
.Added ability for
fgets()
,fgetsa()
,fgetsat()
, andfgetst()
to read from the standard input stream (stdin) . Pass __STDIN as the file handle tofgets()
,fgetsa()
,fgetsat()
, andfgetst()
.Added ability for
fputs()
andfputst()
to send data to the standard error stream (stderr
) and the standard output stream (stdout
). Pass\__STDERR
or\__STDOUT
as the file handle tofputs()
andfputst()
.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:
csvReadM()
andcsvReadSA()
skipped final line in CSV file if the initial line was blank andcsvRead()
was told to skip lines.Bug fix: cons would continue to return the final buffer data after hitting EOF.
16.0.1#
Added Data Import Wizard.
New functions
csvReadM()
andcsvReadSA()
read data from a delimited text file into a GAUSS matrix or string array.New function
glm()
calculates the generalized linear model.New function
rescale()
provides for scaling columns of a matrix.New function
sampleData()
takes samples with or without replacement from a GAUSS matrix.New function
qz()
computes the sorted complex QZ decomposition.New function
plotSetAxesPen()
sets the color and line thickness of the axes line.New functions added for data recoding/reclassification:
reclassify()
andreclassifyCuts()
.Added the following new statistical distribution functions:
pdfBinomial()
,pdfPoisson()
,cdfHyperGeo()
,pdfHyperGeo()
andrndHyperGeo()
.New function
integrate1d()
uses adaptive quadrature to integrate a user-defined function over a specified range.Added new compiler command
#ifmac
to 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 option to pass additional data to integration functions
intquad1()
,intquad2()
andintquad3()
.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
svd()
,svd1()
,svd2()
,svds()
,svdcusv()
andsvdusv()
.Significant speed up to
indnv()
.Added ability to pass a variable number of arguments to GAUSS procedures.
Removed requirement to use a DS structure, added option to directly pass a variable number of matrices and made control structure optional for
eqsolvemt()
,qnewtonmt()
, andsqpsolvemt()
.Removed requirement to use DS structure and added option to directly pass matrices to all gradient and hessian functions (
gradMT()
,gradMTm()
,gradMTT()
,hessMT()
,hessMTm()
,hessMTg()
,hessMTgw()
,hessMTT()
, etc).Removed requirement to pass control structure to
dstatmt()
.Made inputs other than file name optional for
xlsReadM()
,xlsReadSA()
,xlsWrite()
,xlsWriteM()
,xlsWriteSA()
,xlsGetSheetSize()
,spreadSheetReadM()
,spreadSheetReadSA()
, andspreadSheetWrite()
.F4
hot-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
Ctrl+Space
).Added autocomplete and tooltips to program input/output window.
Added preference to Tools > Preferences > Command to activate autocomplete only manually (with
Ctrl+Space
).Added bolding and separate color control syntax highlighting for all GAUSS and user defined procedures (Tools > Preferences > Edit Page > Functions).
Added support for
Ctrl+E
to open a symbol selected in the program input/output window into a floating symbol editor.Added support for
F4
to 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[5] = 7;
).Bug fix: Dock widgets incorrectly reset to minimum width in some instances of page change and restart GAUSS.
New example programs:
glmbinomial1.e
,glmbinomial2.e
,glmbinomial3.e
,glmgamma1.e
,glmgamma2.e
,glmgamma3.e
,glmnormal1.e
,glmnormal2.e
,glmpoisson1.e
,glmpoisson2.e
,qnewtonmt2.e
,qnewtonmt3.e
,qnewtonmt4.e
,sqpsolvemt1.e
,sqpsolvemt_nlls.e
,sqpsolvemt_frontier
.