What's new in Analytica 6.3?

New features and notable bug fixes in release 6.3 of Analytica and ADE since the previous Analytica 6.2 release.

Slider controls

The new sliders are user inputs letting you pick a value by dragging a pointer ("thumb") along a scale. These values can be continuous or discrete numbers, or even text. You can select one value, an interval, or multiple values. You can use sliders in an Edit table. Sliders have many style and color options. See Slider controls for more.


Color Themes Library

The new Color Themes Library lets you apply themes to your models -- including a coordinate sets of colors for diagram nodes and background, and for graph colors . Try these new 2023 Dark and 2023 themes:

Themes graphic.png

Show/Hide Attributes

It's now much easier to select which attributes to show for each object -- for example, to view or edit less common attributes, such as OnChange, OnClick, . In an Object Window in Edit mode, click the Show/Hide icon ShowHideAttribute.png in the bottom left corner to see a menu from which you can choose which attributes to show (or not) for the current object only.


In an Attribute pane below a diagram in Edit mode you can also select which attributes to show or hide from the More ▸ submenu:


You can still use the Attributes dialog from the Object menu to control which attributes to show by default for all objects. These new object-level Attribute settings override the default visibility set in the Attributes dialog, but only for that object.


Dashed and sticky arrows

Somtimes it's useful to show a qualitative or potential influence of node A on B even though A isn't (or isn't yet) in the Definition of B. When you draw an arrow from A to B, it now appears as a dashed line (a "display arrow"). It becomes a solid line when you include A in the Definition of B.

Display and real arrow.png

If you want to retain a dashed arrow from A to B even when you define B without explicitly mentioning A, you can make it "Sticky", such as as in the Alignment probability node above. To make an arrow Sticky, right click on the arrow line in edit mode, and select Sticky:

Right-mouse arrow menu sticky option.png

Changing defaults

If you don't like the new default dashed display arrows that appear before you include a source node in the definition of a destination node, you can revert to the previous sold arrows using a Typescript. (Note: Key F12 to show the Typescript window ).

To restore the original default solid lines, enter:

att_arrowproperties::displayDashStyle arrowclass:0

To use to the new default dashed lines, enter:

att_arrowproperties::displayDashStyle arrowclass:1

No arrows to unused alias nodes

Analytica no longer shows an arrow from a variable X nodes to a module M that contains an alias of X (and no other variable influenced by X). When you draw an arrow from a variable to module M, it no longer adds an alias in M, but shows the ipotential influence as a dashed display arrow.

For backward compatibility, it shows a display arrow from a variable to module for legacy models that showed them even when you run the model in Analytica 6.3.

Arrow to system variable alias nodes

Sometimes it's useful to show an alias of a system variable. (Select the system variable and use CTRL-M or Make alias..." from the Object view of the system variable.) Analytica now shows arrows to aliases of system variables:

Arrow to sample weighting alias.png

Built-in functions

New built-in functions

returns the largest representable number smaller than «x». Useful in some algorithms that must contend with round-off errors.

  • Log(x, b): The logarithm to an arbitrary base «b». The default when you omit «x» is the natural logarithm, base e.
  • Relu(x): Returns 0 when «x» is negative, «x» otherwise. (Becoming common in other languages.)
  • NextFloatToward(x, to): Lets you increase or decrease a floating number «x» by epsilon, the smallest increment possible in the computer representation. When «to» > «x», it returns the smallest representable number larger than «x». When «to» < «x»,

Enhancement to existing functions

  • TextCharacterEncode: The new «type» option 'characterName' let's you use Extended characters, e.g.:
TextCharacterEncode( 'Psi', '-characterName''Ψ'
  • RankCorrel and Correlation: The newoptional flag «resultIfNoVariation» let's you provide a result to be returned when a value is invalid because it has fewer than 3 numbers.
    • Make Importance sets «resultIfNoVariation» to 0, eliminating some annoying NaN and Chance nodes with no uncertainty spread.
  • MdTable conveniences:
    • Where before you had to define global indexes separately for use by MdTable, you can now define each index using ComputedBy(X), where X is the name of the variable that calls MdTable. The index will bet set to the sorted unique values from the corresponding column.
    • If you don't provide a global index, MdTable can automatically create a local target index for any of you required target indexes. Again it will be defined as the sorted unique values from the corresponding column.
    • MdTable can now ignore any coordinate column if you specify Null in the corresponding entry to the «vars» parameter.
    • When the input relational table does not have a Value column, MdTable can return a count of the number of rows matching each cell in the result. You set «valueColumn» to Null, or set «vars» to a list all the indexes but without a Value column. Set «conglomerationFn» to 'Count' .
    • «vars» can be indexed by «Cols». In this case, «valueColumn» can be any column or 1-D array of columns -- i.e., the index columns don't have to come first). For example,
      MdTable(T, Row, Col, '.'&Col )
      automatically creates a local index for each column of your relational table. This makes it easy to do a quick transformation without having to set up all the index variables as locals or globals.
  • NumberToText and CellNumberFormat functions have an optional «showZeroImPart» parameter to control whether to show the imaginary part of complex numbers.
  • Formatted Text Literals format flags now include 'j' and 'J' for the imaginary part of a complex number.


Plot Axis Thresholds

The OnGraphDraw annotations library now incudes a Plot_axis_thresholds function.

Threshold line example - Effective rate.png

Area Fill Line Option

There is now a graph setting option to turn off the border line in an area fill plot. To change this, go to Chart Type tab of the Graph setup dialog#Chart_Type_tab,, and appears when Area Fill is on.

Without Border With Border
Duration of pulse no line.png Duration of pulse with line.png


  • These expressions are normally prone to underflow when x is very small (especially when abs(x)<1)
    The parser now recognizes these syntactic forms and replaces them with a call to an internal function, either _Expm1 or _Log1p, which avoids the underflow for small x.
  • Removed an automatic conversion of a complex number to a real number when its imaginary part is zero.
    By convention, you have always been able to compute a complex function f(z) when z is complex even when EnableComplexNumbers is off. For example, Ln(-2-3j). But this convention would fail with Ln(-2+0j), since that would evaluate as Ln(-2), which issues a warning and returns NaN (unless EnableComplexNumbers is on), which made the convention somewhat inconsistent.
  • Added a number format flag to control whether a zero imaginary part is printed for a complex number. For example, when it is on it might print 5+0j for a value of 5 with a data type of ComplexNumber.
    • In typescript or assignment, the flag can be set using: NumberFormat::showZeroImPart of Va1 := 1
    • In the Number format dialog, appears as a new checkbox named Show complex number im part when it is zero.
    • Controllable in a Formatted Text Literal with 'j' (to show, e.g. 5+0j) or 'J' (to hide, e.g., 5).
    • New option parameter «showZeroImPart» to NumberToText and CellNumberFormat functions.

UI Fonts

Font fallback for Unicode characters

Extended Unicode characters that are not available the current font now “fall back” to use a different font that includes the character instead of appearing as a box (e.g., ▯).

Configuring default fonts

You can change the default fonts used by the UI via these registry settings

  • {HKLM,HKCU}/SOFTWARE/Lumina Decision Systems/Analytica/6.3/UI Font
  • {HKLM,HKCU}/SOFTWARE/Lumina Decision Systems/Analytica/6.3/UI Fixed Font

You can list several font names separated by commas. The first font in the list that is installed on your computer is used. At this time, this is intended mostly for our internal experimentation.

Typing extended characters

You can now type an extended character that does not correspond to a key on your keyboard by using its name. Press a backslash (\), type its name, then press the TAB key. You can also type a character using its hexadecimal code. For example:

  • \sigma[TAB] ➝ σ
  • \+22ed[TAB] ➝ ⋭.


Preview: Data import and transformation

These features make it much easier to import data from a CSV file or image file, and transform from a relational table to a multi-dimensional array. They are currently "preview" features in build 6.3 -- not quite finalized or fully documented. Some may only become "official" in release 6.4:

Import data from a csv file or image file

Select the new Import... option from the File menu to:

    • Import a *.csv file into a diagram (with no nodes selected), which automatically adds a new variable and its required indexes as new nodes.
    • Import from *.csv file into an edit table
    • Import an image file into a diagram, which automatically creates a new Picture node.
    • Import an image as the icon image into a selected node

Split a table into variables for each column

When you select a column from an edit table or result table in edit mode, the right-click context menu has a new option New variable from column.... It makes a new variable using the values from that column (so without the Column index). This is convenient when you have an imported table with different columns that mix different quantities together, and you want to split them into separate variables, which is a best practice in Analytica.

Convert relational table to multiD array

This wizard makes it much easier toconvert imported data from a relational table to a multidimensional array without having to write code using MdTable and manually create the new indexes. When viewing a relational result table in edit mode, the new Relational table to array... option on the right-click context menu, opens a wizard dialog to help convert the table into a multidmensional array. It generates a new variable defined using the MdTable function, along with any needed extra indexes, local or global.

Patch release 6.3.6

Analytica patch release 6.3.6


You are not allowed to post comments.