 <?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.analytica.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=BFilstrup</id>
	<title>Analytica Docs - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.analytica.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=BFilstrup"/>
	<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php/Special:Contributions/BFilstrup"/>
	<updated>2026-05-23T15:14:18Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.9</generator>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=62320</id>
		<title>Genie Library</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=62320"/>
		<updated>2025-02-25T00:29:05Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOINDEX__&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This guide is currently only for Lumina developers.&lt;br /&gt;
&lt;br /&gt;
Genie is a powerful Bayesian network modeling tool designed for probabilistic reasoning and decision analysis, making it invaluable for diagnosing complex systems, predicting outcomes, and updating beliefs as new data emerges. It excels at diagnostic reasoning, meaning it can infer probabilities opposite to the direction of the influence arrows—something widely used in fields like risk assessment, medical diagnosis, and predictive maintenance. However, while Genie excels at probabilistic reasoning, it lacks Analytica’s strengths in structured decision modeling, cost-benefit analysis, and multi-dimensional scenario exploration. &lt;br /&gt;
&lt;br /&gt;
By integrating Genie with Analytica through the SMILE COM library, users can seamlessly combine probabilistic inference with powerful risk assessment and optimization tools. This connection enables, for instance, a pipeline risk management system where Genie predicts the probability of failure based on inspection data, while Analytica evaluates mitigation strategies and cost-effectiveness. Another example is equipment failure diagnostics, where Genie helps determine likely causes of a system failure, and Analytica models different response strategies to minimize downtime and costs. By linking these two tools, analysts can enhance decision-making with both predictive insights and strategic planning—creating a best-of-both-worlds solution.&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_to_Analytica.png|frameless|900x900px]]&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
We provide the Genie library to allow users to get the best parts of both softwares. The library is able to do the following:&lt;br /&gt;
* Read and automatically create an Analytica model using node attributes from the Genie model (identifiers, titles, colors, positions)&lt;br /&gt;
* Handle syntactical differences and update the Analytica node definitions&lt;br /&gt;
* Pass data between Analytica and a Genie model using COM calls&lt;br /&gt;
&lt;br /&gt;
By supporting all SMILE COM functions with Analytica function equivalents, the library can send and receive data between Analytica and Genie. This communication is essential as it allows Analytica to instruct and receive updated values from Genie, effectively bringing Genie’s diagnostic inference capability to Analytica.&lt;br /&gt;
&lt;br /&gt;
The result is an automated translation of Genie models into Analytica. These newly translated models maintain the diagnostic inference capabilities offered by Genie and the capability to pass information to and from ANAGRAM.&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
You can download the Genie library here: [[Media:Genie library.ana|Genie library.ana]]&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
[https://docs.analytica.com/index.php/COM_Integration Analytica COM] is used to pass data between Analytica and a Genie model and requires Enterprise or above. If you simply want to read and recreate a Genie model in Analytica then you do not need to enable COM calls. To enable this functionality, users will need to do the following:&lt;br /&gt;
&lt;br /&gt;
1) Acquire a SMILE License key:&lt;br /&gt;
&lt;br /&gt;
* For more information, you can visit the BayesFusion page on licensing: https://support.bayesfusion.com/docs/SMILE/licensing.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Download files for COM installation:&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM64.txt|smileCOM64.dll]]&lt;br /&gt;
** This is actually a DLL file (change the file extension from .txt to .dll) that will need to be registered (instructions below).&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM.idl]]&lt;br /&gt;
** The .idl file contains the SmileNetwork and SmileLicense interface definitions supported by BayesFusion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Register the DLLs to your Windows Registry.&lt;br /&gt;
# Open up the command prompt.&lt;br /&gt;
# Navigate to the folder the downloaded DLL is stored.&lt;br /&gt;
# Use the command 'regsvr32' to register your DLL file.&lt;br /&gt;
&lt;br /&gt;
====Importing====&lt;br /&gt;
&lt;br /&gt;
The import process reads the underlying XML-based format so that COM set up is not required. To import a Genie model:&lt;br /&gt;
&lt;br /&gt;
1. Ensure the Genie model(s) you wish to import are located within the same folder as your Analytica model.&lt;br /&gt;
2. Use the 'File to Read' dropdown to select the desired Genie model.&lt;br /&gt;
3. Click 'Import selected model'&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Import_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
====Communicating====&lt;br /&gt;
To communicate with a Genie model, you must set up COM interactions (see the Requirements section above). The library supports all 20 functions supported by the SMILE COM wrapper. Included in the library are basic controls to help target your Genie models and select individual nodes in those models to interact with.&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Communication_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
&lt;br /&gt;
=== Model Initialization &amp;amp; File Handling: ===&lt;br /&gt;
&lt;br /&gt;
==== SMILE_Initialize(Smile_License_COM_Object, license_key, variant_array) ====&lt;br /&gt;
* Validates SMILE licensing key to create SMILE COM objects and use the SMILE COM functions.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_ReadFile(Smile_Network_COM_Object; XDSL_File_Path) ====&lt;br /&gt;
* Reads the XDSL file from disk.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Inference &amp;amp; Evidence Management: ===&lt;br /&gt;
&lt;br /&gt;
==== SMILE_UpdateBeliefs(Smile_Network_COM_Object) ====&lt;br /&gt;
* Updates the network (the model being read from) with any new evidence set. &lt;br /&gt;
&lt;br /&gt;
==== SMILE_SetEvidence(Smile_Network_COM_Object, Node_ID, Evidence) ====&lt;br /&gt;
* Sets the evidence for the selected node.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_GetEvidence(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Returns the evidence from the selected node.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_IsEvidence(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Checks to see if evidence (obervation) is set.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_ClearEvidence(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Clears evidence (observation) from selected node.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_ClearAllEvidence(Smile_Network_COM_Object) ====&lt;br /&gt;
* Clears evidence for all nodes.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_SetTarget(Smile_Network_COM_Object, Node_ID, Bool) ====&lt;br /&gt;
* Sets selected node to either True (target) or False (not a target).&lt;br /&gt;
&lt;br /&gt;
==== SMILE_IsTarget(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Returns if the selected node is set as a target.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_ClearAllTargets(Smile_Network_COM_Object) ====&lt;br /&gt;
* Clears targets for all nodes.&lt;br /&gt;
&lt;br /&gt;
* Target nodes are always guaranteed to be updated by the inference algorithm. Other nodes, i.e., nodes that are not designated as targets, may be updated or not, depending on the internals of the algorithm used, but are not guaranteed to be updated. Focusing inference on the target nodes can reduce time and memory required to complete the calculation. When no targets are specified, SMILE assumes that all nodes are of interest to the user.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Node Information &amp;amp; Results: ===&lt;br /&gt;
&lt;br /&gt;
==== SMILE_GetAllNodeIds(Smile_Network_COM_Object) ====&lt;br /&gt;
* Returns an array of all node handles (identifiers).&lt;br /&gt;
&lt;br /&gt;
==== SMILE_GetNodeName(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Returns the node name attribute.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_GetNodeType(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Returns the node type attribute.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_GetOutcomeIds(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Returns Index elements tied to corresponding chance node.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_GetNodeValue(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Returns the specified node's value.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_GetNodeMean(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Returns the specified node's mean.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_GetNodeStdDev(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Returns the specified node's standard deviation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Validation &amp;amp; Discretization: ===&lt;br /&gt;
&lt;br /&gt;
==== SMILE_IsValueValid(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Validity status; a flag set to true by the inference algorithm after it succesfully completes the calculations for the given node.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_IsValueDiscretized(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Tells you whether your results are samples or discretized.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Belief Nets==&lt;br /&gt;
https://docs.analytica.com/index.php/Bayes_nets_and_probabilistic_belief_networks&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=62319</id>
		<title>Genie Library</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=62319"/>
		<updated>2025-02-25T00:25:47Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOINDEX__&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This guide is currently only for Lumina developers.&lt;br /&gt;
&lt;br /&gt;
Genie is a powerful Bayesian network modeling tool designed for probabilistic reasoning and decision analysis, making it invaluable for diagnosing complex systems, predicting outcomes, and updating beliefs as new data emerges. It excels at diagnostic reasoning, meaning it can infer probabilities opposite to the direction of the influence arrows—something widely used in fields like risk assessment, medical diagnosis, and predictive maintenance. However, while Genie excels at probabilistic reasoning, it lacks Analytica’s strengths in structured decision modeling, cost-benefit analysis, and multi-dimensional scenario exploration. &lt;br /&gt;
&lt;br /&gt;
By integrating Genie with Analytica through the SMILE COM library, users can seamlessly combine probabilistic inference with powerful risk assessment and optimization tools. This connection enables, for instance, a pipeline risk management system where Genie predicts the probability of failure based on inspection data, while Analytica evaluates mitigation strategies and cost-effectiveness. Another example is equipment failure diagnostics, where Genie helps determine likely causes of a system failure, and Analytica models different response strategies to minimize downtime and costs. By linking these two tools, analysts can enhance decision-making with both predictive insights and strategic planning—creating a best-of-both-worlds solution.&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_to_Analytica.png|frameless|900x900px]]&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
We provide the Genie library to allow users to get the best parts of both softwares. The library is able to do the following:&lt;br /&gt;
* Read and automatically create an Analytica model using node attributes from the Genie model (identifiers, titles, colors, positions)&lt;br /&gt;
* Handle syntactical differences and update the Analytica node definitions&lt;br /&gt;
* Pass data between Analytica and a Genie model using COM calls&lt;br /&gt;
&lt;br /&gt;
By supporting all SMILE COM functions with Analytica function equivalents, the library can send and receive data between Analytica and Genie. This communication is essential as it allows Analytica to instruct and receive updated values from Genie, effectively bringing Genie’s diagnostic inference capability to Analytica.&lt;br /&gt;
&lt;br /&gt;
The result is an automated translation of Genie models into Analytica. These newly translated models maintain the diagnostic inference capabilities offered by Genie and the capability to pass information to and from ANAGRAM.&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
You can download the Genie library here: [[Media:Genie library.ana|Genie library.ana]]&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
[https://docs.analytica.com/index.php/COM_Integration Analytica COM] is used to pass data between Analytica and a Genie model and requires Enterprise or above. If you simply want to read and recreate a Genie model in Analytica then you do not need to enable COM calls. To enable this functionality, users will need to do the following:&lt;br /&gt;
&lt;br /&gt;
1) Acquire a SMILE License key:&lt;br /&gt;
&lt;br /&gt;
* For more information, you can visit the BayesFusion page on licensing: https://support.bayesfusion.com/docs/SMILE/licensing.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Download files for COM installation:&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM64.txt|smileCOM64.dll]]&lt;br /&gt;
** This is actually a DLL file (change the file extension from .txt to .dll) that will need to be registered (instructions below).&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM.idl]]&lt;br /&gt;
** The .idl file contains the SmileNetwork and SmileLicense interface definitions supported by BayesFusion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Register the DLLs to your Windows Registry.&lt;br /&gt;
# Open up the command prompt.&lt;br /&gt;
# Navigate to the folder the downloaded DLL is stored.&lt;br /&gt;
# Use the command 'regsvr32' to register your DLL file.&lt;br /&gt;
&lt;br /&gt;
====Importing====&lt;br /&gt;
&lt;br /&gt;
The import process reads the underlying XML-based format so that COM set up is not required. To import a Genie model:&lt;br /&gt;
&lt;br /&gt;
1. Ensure the Genie model(s) you wish to import are located within the same folder as your Analytica model.&lt;br /&gt;
2. Use the 'File to Read' dropdown to select the desired Genie model.&lt;br /&gt;
3. Click 'Import selected model'&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Import_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
====Communicating====&lt;br /&gt;
To communicate with a Genie model, you must set up COM interactions (see the Requirements section above). The library supports all 20 functions supported by the SMILE COM wrapper. Included in the library are basic controls to help target your Genie models and select individual nodes in those models to interact with.&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Communication_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
&lt;br /&gt;
=== Model Initialization &amp;amp; File Handling: ===&lt;br /&gt;
&lt;br /&gt;
==== SMILE_Initialize(Smile_License_COM_Object, license_key, variant_array) ====&lt;br /&gt;
* Validates SMILE licensing key to create SMILE COM objects and use the SMILE COM functions.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_ReadFile(Smile_Network_COM_Object; XDSL_File_Path) ====&lt;br /&gt;
* Reads the XDSL file from disk.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Inference &amp;amp; Evidence Management: ===&lt;br /&gt;
&lt;br /&gt;
==== SMILE_UpdateBeliefs(Smile_Network_COM_Object) ====&lt;br /&gt;
* Updates the network (the model being read from) with any new evidence set. &lt;br /&gt;
&lt;br /&gt;
==== SMILE_SetEvidence(Smile_Network_COM_Object, Node_ID, Evidence) ====&lt;br /&gt;
* Sets the evidence for the selected node.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_GetEvidence(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Returns the evidence from the selected node.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_IsEvidence(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Checks to see if evidence (obervation) is set.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_ClearEvidence(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Clears evidence (observation) from selected node.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_ClearAllEvidence(Smile_Network_COM_Object) ====&lt;br /&gt;
* Clears evidence for all nodes.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_SetTarget(Smile_Network_COM_Object, Node_ID, Bool) ====&lt;br /&gt;
* Sets selected node to either True (target) or False (not a target).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== SMILE_IsTarget(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Returns if the selected node is set as a target.&lt;br /&gt;
&lt;br /&gt;
* Target nodes are always guaranteed to be updated by the inference algorithm. Other nodes, i.e., nodes that are not designated as targets, may be updated or not, depending on the internals of the algorithm used, but are not guaranteed to be updated. Focusing inference on the target nodes can reduce time and memory required to complete the calculation. When no targets are specified, SMILE assumes that all nodes are of interest to the user.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_ClearAllTargets(Smile_Network_COM_Object) ====&lt;br /&gt;
* Clears targets for all nodes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Node Information &amp;amp; Results: ===&lt;br /&gt;
&lt;br /&gt;
==== SMILE_GetAllNodeIds(Smile_Network_COM_Object) ====&lt;br /&gt;
* Returns an array of all node handles (identifiers).&lt;br /&gt;
&lt;br /&gt;
==== SMILE_GetNodeName(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Returns the node name attribute.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_GetNodeType(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Returns the node type attribute.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_GetOutcomeIds(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Returns Index elements tied to corresponding chance node.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_GetNodeValue(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Returns the specified node's value.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_GetNodeMean(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Returns the specified node's mean.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_GetNodeStdDev(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Returns the specified node's standard deviation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Validation &amp;amp; Discretization: ===&lt;br /&gt;
&lt;br /&gt;
==== SMILE_IsValueValid(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Validity status; a flag set to true by the inference algorithm after it succesfully completes the calculations for the given node.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_IsValueDiscretized(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Tells you whether your results are samples or discretized.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Belief Nets==&lt;br /&gt;
https://docs.analytica.com/index.php/Bayes_nets_and_probabilistic_belief_networks&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=62318</id>
		<title>Genie Library</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=62318"/>
		<updated>2025-02-25T00:16:55Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOINDEX__&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This guide is currently only for Lumina developers.&lt;br /&gt;
&lt;br /&gt;
Genie is a powerful Bayesian network modeling tool designed for probabilistic reasoning and decision analysis, making it invaluable for diagnosing complex systems, predicting outcomes, and updating beliefs as new data emerges. It excels at diagnostic reasoning, meaning it can infer probabilities opposite to the direction of the influence arrows—something widely used in fields like risk assessment, medical diagnosis, and predictive maintenance. However, while Genie excels at probabilistic reasoning, it lacks Analytica’s strengths in structured decision modeling, cost-benefit analysis, and multi-dimensional scenario exploration. &lt;br /&gt;
&lt;br /&gt;
By integrating Genie with Analytica through the SMILE COM library, users can seamlessly combine probabilistic inference with powerful risk assessment and optimization tools. This connection enables, for instance, a pipeline risk management system where Genie predicts the probability of failure based on inspection data, while Analytica evaluates mitigation strategies and cost-effectiveness. Another example is equipment failure diagnostics, where Genie helps determine likely causes of a system failure, and Analytica models different response strategies to minimize downtime and costs. By linking these two tools, analysts can enhance decision-making with both predictive insights and strategic planning—creating a best-of-both-worlds solution.&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_to_Analytica.png|frameless|900x900px]]&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
We provide the Genie library to allow users to get the best parts of both softwares. The library is able to do the following:&lt;br /&gt;
* Read and automatically create an Analytica model using node attributes from the Genie model (identifiers, titles, colors, positions)&lt;br /&gt;
* Handle syntactical differences and update the Analytica node definitions&lt;br /&gt;
* Pass data between Analytica and a Genie model using COM calls&lt;br /&gt;
&lt;br /&gt;
By supporting all SMILE COM functions with Analytica function equivalents, the library can send and receive data between Analytica and Genie. This communication is essential as it allows Analytica to instruct and receive updated values from Genie, effectively bringing Genie’s diagnostic inference capability to Analytica.&lt;br /&gt;
&lt;br /&gt;
The result is an automated translation of Genie models into Analytica. These newly translated models maintain the diagnostic inference capabilities offered by Genie and the capability to pass information to and from ANAGRAM.&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
You can download the Genie library here: [[Media:Genie library.ana|Genie library.ana]]&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
[https://docs.analytica.com/index.php/COM_Integration Analytica COM] is used to pass data between Analytica and a Genie model and requires Enterprise or above. If you simply want to read and recreate a Genie model in Analytica then you do not need to enable COM calls. To enable this functionality, users will need to do the following:&lt;br /&gt;
&lt;br /&gt;
1) Acquire a SMILE License key:&lt;br /&gt;
&lt;br /&gt;
* For more information, you can visit the BayesFusion page on licensing: https://support.bayesfusion.com/docs/SMILE/licensing.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Download files for COM installation:&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM64.txt|smileCOM64.dll]]&lt;br /&gt;
** This is actually a DLL file (change the file extension from .txt to .dll) that will need to be registered (instructions below).&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM.idl]]&lt;br /&gt;
** The .idl file contains the SmileNetwork and SmileLicense interface definitions supported by BayesFusion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Register the DLLs to your Windows Registry.&lt;br /&gt;
# Open up the command prompt.&lt;br /&gt;
# Navigate to the folder the downloaded DLL is stored.&lt;br /&gt;
# Use the command 'regsvr32' to register your DLL file.&lt;br /&gt;
&lt;br /&gt;
====Importing====&lt;br /&gt;
&lt;br /&gt;
The import process reads the underlying XML-based format so that COM set up is not required. To import a Genie model:&lt;br /&gt;
&lt;br /&gt;
1. Ensure the Genie model(s) you wish to import are located within the same folder as your Analytica model.&lt;br /&gt;
2. Use the 'File to Read' dropdown to select the desired Genie model.&lt;br /&gt;
3. Click 'Import selected model'&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Import_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
====Communicating====&lt;br /&gt;
To communicate with a Genie model, you must set up COM interactions (see the Requirements section above). The library supports all 20 functions supported by the SMILE COM wrapper. Included in the library are basic controls to help target your Genie models and select individual nodes in those models to interact with.&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Communication_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
&lt;br /&gt;
==== SMILE_Initialize(Smile_License_COM_Object, license_key, variant_array) ====&lt;br /&gt;
* Validates SMILE licensing key to create SMILE COM objects and use the SMILE COM functions.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_ReadFile(Smile_Network_COM_Object; XDSL_File_Path) ====&lt;br /&gt;
* Reads the XDSL file from disk.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_UpdateBeliefs(Smile_Network_COM_Object) ====&lt;br /&gt;
* Updates the network (the model being read from) with any new evidence set. Related functions:&lt;br /&gt;
** SMILE_SetEvidence&lt;br /&gt;
** SMILE_GetEvidence&lt;br /&gt;
** SMILE_IsEvidence&lt;br /&gt;
** SMILE_ClearEvidence&lt;br /&gt;
&lt;br /&gt;
==== SMILE_GetAllNodeIds(Smile_Network_COM_Object) ====&lt;br /&gt;
* Returns an array of all node handles (identifiers).&lt;br /&gt;
&lt;br /&gt;
==== SMILE_GetNodeName(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Returns the node name attribute.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_GetNodeType(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Returns the node type attribute.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_ClearAllEvidence(Smile_Network_COM_Object) ====&lt;br /&gt;
* Clears evidence for all nodes.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_ClearAllTargets(Smile_Network_COM_Object) ====&lt;br /&gt;
* Clears targets for all nodes.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_SetEvidence(Smile_Network_COM_Object, Node_ID, Evidence) ====&lt;br /&gt;
* Sets the evidence for the selected node.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_GetEvidence(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Returns the evidence from the selected node.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_IsEvidence(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Checks to see if evidence (obervation) is set.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_ClearEvidence(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Clears evidence (observation) from selected node.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_IsTarget(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Returns if the selected node is set as a target. More information on target nodes below:&lt;br /&gt;
&lt;br /&gt;
* Target nodes are always guaranteed to be updated by the inference algorithm. Other nodes, i.e., nodes that are not designated as targets, may be updated or not, depending on the internals of the algorithm used, but are not guaranteed to be updated. Focusing inference on the target nodes can reduce time and memory required to complete the calculation. When no targets are specified, SMILE assumes that all nodes are of interest to the user.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_SetTarget(Smile_Network_COM_Object, Node_ID, Bool) ====&lt;br /&gt;
* Sets selected node to either True (target) or False (not a target). More information on target nodes below:&lt;br /&gt;
&lt;br /&gt;
* Target nodes are always guaranteed to be updated by the inference algorithm. Other nodes, i.e., nodes that are not designated as targets, may be updated or not, depending on the internals of the algorithm used, but are not guaranteed to be updated. Focusing inference on the target nodes can reduce time and memory required to complete the calculation. When no targets are specified, SMILE assumes that all nodes are of interest to the user.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_GetOutcomeIds(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Returns Index elements tied to corresponding chance node.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_IsValueValid(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Validity status; a flag set to true by the inference algorithm after it succesfully completes the calculations for the given node.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_IsValueDiscretized(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Tells you whether your results are samples or discretized.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_GetNodeValue(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Returns the specified node's value.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_GetNodeMean(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Returns the specified node's mean.&lt;br /&gt;
&lt;br /&gt;
==== SMILE_GetNodeStdDev(Smile_Network_COM_Object, Node_ID) ====&lt;br /&gt;
* Returns the specified node's standard deviation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Belief Nets==&lt;br /&gt;
https://docs.analytica.com/index.php/Bayes_nets_and_probabilistic_belief_networks&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=62317</id>
		<title>Genie Library</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=62317"/>
		<updated>2025-02-25T00:14:26Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOINDEX__&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This guide is currently only for Lumina developers.&lt;br /&gt;
&lt;br /&gt;
Genie is a powerful Bayesian network modeling tool designed for probabilistic reasoning and decision analysis, making it invaluable for diagnosing complex systems, predicting outcomes, and updating beliefs as new data emerges. It excels at diagnostic reasoning, meaning it can infer probabilities opposite to the direction of the influence arrows—something widely used in fields like risk assessment, medical diagnosis, and predictive maintenance. However, while Genie excels at probabilistic reasoning, it lacks Analytica’s strengths in structured decision modeling, cost-benefit analysis, and multi-dimensional scenario exploration. &lt;br /&gt;
&lt;br /&gt;
By integrating Genie with Analytica through the SMILE COM library, users can seamlessly combine probabilistic inference with powerful risk assessment and optimization tools. This connection enables, for instance, a pipeline risk management system where Genie predicts the probability of failure based on inspection data, while Analytica evaluates mitigation strategies and cost-effectiveness. Another example is equipment failure diagnostics, where Genie helps determine likely causes of a system failure, and Analytica models different response strategies to minimize downtime and costs. By linking these two tools, analysts can enhance decision-making with both predictive insights and strategic planning—creating a best-of-both-worlds solution.&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_to_Analytica.png|frameless|900x900px]]&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
We provide the Genie library to allow users to get the best parts of both softwares. The library is able to do the following:&lt;br /&gt;
* Read and automatically create an Analytica model using node attributes from the Genie model (identifiers, titles, colors, positions)&lt;br /&gt;
* Handle syntactical differences and update the Analytica node definitions&lt;br /&gt;
* Pass data between Analytica and a Genie model using COM calls&lt;br /&gt;
&lt;br /&gt;
By supporting all SMILE COM functions with Analytica function equivalents, the library can send and receive data between Analytica and Genie. This communication is essential as it allows Analytica to instruct and receive updated values from Genie, effectively bringing Genie’s diagnostic inference capability to Analytica.&lt;br /&gt;
&lt;br /&gt;
The result is an automated translation of Genie models into Analytica. These newly translated models maintain the diagnostic inference capabilities offered by Genie and the capability to pass information to and from ANAGRAM.&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
You can download the Genie library here: [[Media:Genie library.ana|Genie library.ana]]&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
[https://docs.analytica.com/index.php/COM_Integration Analytica COM] is used to pass data between Analytica and a Genie model and requires Enterprise or above. If you simply want to read and recreate a Genie model in Analytica then you do not need to enable COM calls. To enable this functionality, users will need to do the following:&lt;br /&gt;
&lt;br /&gt;
1) Acquire a SMILE License key:&lt;br /&gt;
&lt;br /&gt;
* For more information, you can visit the BayesFusion page on licensing: https://support.bayesfusion.com/docs/SMILE/licensing.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Download files for COM installation:&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM64.txt|smileCOM64.dll]]&lt;br /&gt;
** This is actually a DLL file (change the file extension from .txt to .dll) that will need to be registered (instructions below).&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM.idl]]&lt;br /&gt;
** The .idl file contains the SmileNetwork and SmileLicense interface definitions supported by BayesFusion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Register the DLLs to your Windows Registry.&lt;br /&gt;
# Open up the command prompt.&lt;br /&gt;
# Navigate to the folder the downloaded DLL is stored.&lt;br /&gt;
# Use the command 'regsvr32' to register your DLL file.&lt;br /&gt;
&lt;br /&gt;
====Importing====&lt;br /&gt;
&lt;br /&gt;
The import process reads the underlying XML-based format so that COM set up is not required. To import a Genie model:&lt;br /&gt;
&lt;br /&gt;
1. Ensure the Genie model(s) you wish to import are located within the same folder as your Analytica model.&lt;br /&gt;
2. Use the 'File to Read' dropdown to select the desired Genie model.&lt;br /&gt;
3. Click 'Import selected model'&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Import_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
====Communicating====&lt;br /&gt;
To communicate with a Genie model, you must set up COM interactions (see the Requirements section above). The library supports all 20 functions supported by the SMILE COM wrapper. Included in the library are basic controls to help target your Genie models and select individual nodes in those models to interact with.&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Communication_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
&lt;br /&gt;
=== SMILE_Initialize(Smile_License_COM_Object, license_key, variant_array) ===&lt;br /&gt;
* Validates SMILE licensing key to create SMILE COM objects and use the SMILE COM functions.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ReadFile(Smile_Network_COM_Object; XDSL_File_Path) ===&lt;br /&gt;
* Reads the XDSL file from disk.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_UpdateBeliefs(Smile_Network_COM_Object) ===&lt;br /&gt;
* Updates the network (the model being read from) with any new evidence set. Related functions:&lt;br /&gt;
** SMILE_SetEvidence&lt;br /&gt;
** SMILE_GetEvidence&lt;br /&gt;
** SMILE_IsEvidence&lt;br /&gt;
** SMILE_ClearEvidence&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetAllNodeIds(Smile_Network_COM_Object) ===&lt;br /&gt;
* Returns an array of all node handles (identifiers).&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeName(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the node name attribute.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeType(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the node type attribute.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ClearAllEvidence(Smile_Network_COM_Object) ===&lt;br /&gt;
* Clears evidence for all nodes.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ClearAllTargets(Smile_Network_COM_Object) ===&lt;br /&gt;
* Clears targets for all nodes.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_SetEvidence(Smile_Network_COM_Object, Node_ID, Evidence) ===&lt;br /&gt;
* Sets the evidence for the selected node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetEvidence(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the evidence from the selected node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsEvidence(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Checks to see if evidence (obervation) is set.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ClearEvidence(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Clears evidence (observation) from selected node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsTarget(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns if the selected node is set as a target. More information on target nodes below:&lt;br /&gt;
&lt;br /&gt;
* Target nodes are always guaranteed to be updated by the inference algorithm. Other nodes, i.e., nodes that are not designated as targets, may be updated or not, depending on the internals of the algorithm used, but are not guaranteed to be updated. Focusing inference on the target nodes can reduce time and memory required to complete the calculation. When no targets are specified, SMILE assumes that all nodes are of interest to the user.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_SetTarget(Smile_Network_COM_Object, Node_ID, Bool) ===&lt;br /&gt;
* Sets selected node to either True (target) or False (not a target). More information on target nodes below:&lt;br /&gt;
&lt;br /&gt;
* Target nodes are always guaranteed to be updated by the inference algorithm. Other nodes, i.e., nodes that are not designated as targets, may be updated or not, depending on the internals of the algorithm used, but are not guaranteed to be updated. Focusing inference on the target nodes can reduce time and memory required to complete the calculation. When no targets are specified, SMILE assumes that all nodes are of interest to the user.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetOutcomeIds(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns Index elements tied to corresponding chance node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsValueValid(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Validity status; a flag set to true by the inference algorithm after it succesfully completes the calculations for the given node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsValueDiscretized(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Tells you whether your results are samples or discretized.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeValue(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the specified node's value.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeMean(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the specified node's mean.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeStdDev(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the specified node's standard deviation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Belief Nets==&lt;br /&gt;
https://docs.analytica.com/index.php/Bayes_nets_and_probabilistic_belief_networks&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=File:Genie_to_Analytica.png&amp;diff=62316</id>
		<title>File:Genie to Analytica.png</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=File:Genie_to_Analytica.png&amp;diff=62316"/>
		<updated>2025-02-25T00:12:08Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: BFilstrup uploaded a new version of File:Genie to Analytica.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=File:Genie_to_Analytica.png&amp;diff=62315</id>
		<title>File:Genie to Analytica.png</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=File:Genie_to_Analytica.png&amp;diff=62315"/>
		<updated>2025-02-25T00:10:36Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: BFilstrup uploaded a new version of File:Genie to Analytica.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=62314</id>
		<title>Genie Library</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=62314"/>
		<updated>2025-02-24T23:59:54Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOINDEX__&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This guide is currently only for Lumina developers.&lt;br /&gt;
&lt;br /&gt;
Genie is a powerful Bayesian network modeling tool designed for probabilistic reasoning and decision analysis, making it invaluable for diagnosing complex systems, predicting outcomes, and updating beliefs as new data emerges. It excels at diagnostic reasoning, meaning it can infer probabilities opposite to the direction of the influence arrows—something widely used in fields like risk assessment, medical diagnosis, and predictive maintenance. However, while Genie excels at probabilistic reasoning, it lacks Analytica’s strengths in structured decision modeling, cost-benefit analysis, and multi-dimensional scenario exploration. &lt;br /&gt;
&lt;br /&gt;
By integrating Genie with Analytica through the SMILE COM library, users can seamlessly combine probabilistic inference with powerful risk assessment and optimization tools. This connection enables, for instance, a pipeline risk management system where Genie predicts the probability of failure based on inspection data, while Analytica evaluates mitigation strategies and cost-effectiveness. Another example is equipment failure diagnostics, where Genie helps determine likely causes of a system failure, and Analytica models different response strategies to minimize downtime and costs. By linking these two tools, analysts can enhance decision-making with both predictive insights and strategic planning—creating a best-of-both-worlds solution.&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_to_Analytica.png|frameless|900x900px]]&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
We provide the Genie library to allow users to get the best parts of both softwares. The library is able to do the following:&lt;br /&gt;
* Read and automatically create an Analytica model using node attributes from the Genie model (identifiers, titles, colors, positions)&lt;br /&gt;
* Handle syntactical differences and update the Analytica node definitions&lt;br /&gt;
* Pass data between Analytica and a Genie model using COM calls&lt;br /&gt;
&lt;br /&gt;
By supporting all SMILE COM functions, the library can send and receive data between Analytica and Genie. This communication is essential as it allows Analytica to instruct and receive updated values from Genie, effectively bringing Genie’s diagnostic inference capability to Analytica.&lt;br /&gt;
&lt;br /&gt;
The result is an automated translation of Genie models into Analytica. These newly translated models maintain the diagnostic inference capabilities offered by Genie and the capability to pass information to and from ANAGRAM.&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
You can download the Genie library here: [[Media:Genie library.ana|Genie library.ana]]&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
[https://docs.analytica.com/index.php/COM_Integration Analytica COM] is used to pass data between Analytica and a Genie model and requires Enterprise or above. If you simply want to read and recreate a Genie model in Analytica then you do not need to enable COM calls. To enable this functionality, users will need to do the following:&lt;br /&gt;
&lt;br /&gt;
1) Acquire a SMILE License key:&lt;br /&gt;
&lt;br /&gt;
* For more information, you can visit the BayesFusion page on licensing: https://support.bayesfusion.com/docs/SMILE/licensing.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Download files for COM installation:&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM64.txt|smileCOM64.dll]]&lt;br /&gt;
** This is actually a DLL file (change the file extension from .txt to .dll) that will need to be registered (instructions below).&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM.idl]]&lt;br /&gt;
** The .idl file contains the SmileNetwork and SmileLicense interface definitions supported by BayesFusion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Register the DLLs to your Windows Registry.&lt;br /&gt;
# Open up the command prompt.&lt;br /&gt;
# Navigate to the folder the downloaded DLL is stored.&lt;br /&gt;
# Use the command 'regsvr32' to register your DLL file.&lt;br /&gt;
&lt;br /&gt;
====Importing====&lt;br /&gt;
&lt;br /&gt;
The import process reads the underlying XML-based format so that COM set up is not required. To import a Genie model:&lt;br /&gt;
&lt;br /&gt;
1. Ensure the Genie model(s) you wish to import are located within the same folder as your Analytica model.&lt;br /&gt;
2. Use the 'File to Read' dropdown to select the desired Genie model.&lt;br /&gt;
3. Click 'Import selected model'&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Import_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
====Communicating====&lt;br /&gt;
To communicate with a Genie model, you must set up COM interactions (see the Requirements section above). The library supports all 20 functions supported by the SMILE COM wrapper. Included in the library are basic controls to help target your Genie models and select individual nodes in those models to interact with.&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Communication_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
&lt;br /&gt;
=== SMILE_Initialize(Smile_License_COM_Object, license_key, variant_array) ===&lt;br /&gt;
* Validates SMILE licensing key to create SMILE COM objects and use the SMILE COM functions.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ReadFile(Smile_Network_COM_Object; XDSL_File_Path) ===&lt;br /&gt;
* Reads the XDSL file from disk.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_UpdateBeliefs(Smile_Network_COM_Object) ===&lt;br /&gt;
* Updates the network (the model being read from) with any new evidence set. Related functions:&lt;br /&gt;
** SMILE_SetEvidence&lt;br /&gt;
** SMILE_GetEvidence&lt;br /&gt;
** SMILE_IsEvidence&lt;br /&gt;
** SMILE_ClearEvidence&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetAllNodeIds(Smile_Network_COM_Object) ===&lt;br /&gt;
* Returns an array of all node handles (identifiers).&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeName(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the node name attribute.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeType(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the node type attribute.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ClearAllEvidence(Smile_Network_COM_Object) ===&lt;br /&gt;
* Clears evidence for all nodes.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ClearAllTargets(Smile_Network_COM_Object) ===&lt;br /&gt;
* Clears targets for all nodes.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_SetEvidence(Smile_Network_COM_Object, Node_ID, Evidence) ===&lt;br /&gt;
* Sets the evidence for the selected node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetEvidence(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the evidence from the selected node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsEvidence(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Checks to see if evidence (obervation) is set.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ClearEvidence(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Clears evidence (observation) from selected node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsTarget(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns if the selected node is set as a target. More information on target nodes below:&lt;br /&gt;
&lt;br /&gt;
* Target nodes are always guaranteed to be updated by the inference algorithm. Other nodes, i.e., nodes that are not designated as targets, may be updated or not, depending on the internals of the algorithm used, but are not guaranteed to be updated. Focusing inference on the target nodes can reduce time and memory required to complete the calculation. When no targets are specified, SMILE assumes that all nodes are of interest to the user.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_SetTarget(Smile_Network_COM_Object, Node_ID, Bool) ===&lt;br /&gt;
* Sets selected node to either True (target) or False (not a target). More information on target nodes below:&lt;br /&gt;
&lt;br /&gt;
* Target nodes are always guaranteed to be updated by the inference algorithm. Other nodes, i.e., nodes that are not designated as targets, may be updated or not, depending on the internals of the algorithm used, but are not guaranteed to be updated. Focusing inference on the target nodes can reduce time and memory required to complete the calculation. When no targets are specified, SMILE assumes that all nodes are of interest to the user.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetOutcomeIds(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns Index elements tied to corresponding chance node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsValueValid(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Validity status; a flag set to true by the inference algorithm after it succesfully completes the calculations for the given node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsValueDiscretized(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Tells you whether your results are samples or discretized.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeValue(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the specified node's value.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeMean(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the specified node's mean.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeStdDev(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the specified node's standard deviation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Belief Nets==&lt;br /&gt;
https://docs.analytica.com/index.php/Bayes_nets_and_probabilistic_belief_networks&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=62313</id>
		<title>Genie Library</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=62313"/>
		<updated>2025-02-24T23:53:59Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOINDEX__&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This guide is currently only for Lumina developers.&lt;br /&gt;
&lt;br /&gt;
Genie is a powerful Bayesian network modeling tool designed for probabilistic reasoning and decision analysis, making it invaluable for diagnosing complex systems, predicting outcomes, and updating beliefs as new data emerges. It excels at diagnostic reasoning, meaning it can infer probabilities opposite to the direction of the influence arrows—something widely used in fields like risk assessment, medical diagnosis, and predictive maintenance. However, while Genie excels at probabilistic reasoning, it lacks Analytica’s strengths in structured decision modeling, cost-benefit analysis, and multi-dimensional scenario exploration. &lt;br /&gt;
&lt;br /&gt;
By integrating Genie with Analytica through the SMILE COM library, users can seamlessly combine probabilistic inference with powerful risk assessment and optimization tools. This connection enables, for instance, a pipeline risk management system where Genie predicts the probability of failure based on inspection data, while Analytica evaluates mitigation strategies and cost-effectiveness. Another example is equipment failure diagnostics, where Genie helps determine likely causes of a system failure, and Analytica models different response strategies to minimize downtime and costs. By linking these two tools, analysts can enhance decision-making with both predictive insights and strategic planning—creating a best-of-both-worlds solution.&lt;br /&gt;
&lt;br /&gt;
We provide the Genie library to allow users to get the best parts of both softwares. The library is able to do the following:&lt;br /&gt;
* Read and recreate the Genie model node attributes (identifiers, titles, colors, positions)&lt;br /&gt;
* Handle syntactical differences and update the Analytica node definitions&lt;br /&gt;
* Pass data between Analytica and a Genie model using COM calls&lt;br /&gt;
&lt;br /&gt;
The result is an automated translation of Genie models into Analytica. These newly translated models maintain the diagnostic inference capabilities offered by Genie and the capability to pass information to and from ANAGRAM.&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_to_Analytica.png|frameless|900x900px]]&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
You can download the Genie library here: [[Media:Genie library.ana|Genie library.ana]]&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
[https://docs.analytica.com/index.php/COM_Integration Analytica COM] is used to pass data between Analytica and a Genie model and requires Enterprise or above. If you simply want to read and recreate a Genie model in Analytica then you do not need to enable COM calls. To enable this functionality, users will need to do the following:&lt;br /&gt;
&lt;br /&gt;
1) Acquire a SMILE License key:&lt;br /&gt;
&lt;br /&gt;
* For more information, you can visit the BayesFusion page on licensing: https://support.bayesfusion.com/docs/SMILE/licensing.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Download files for COM installation:&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM64.txt|smileCOM64.dll]]&lt;br /&gt;
** This is actually a DLL file (change the file extension from .txt to .dll) that will need to be registered (instructions below).&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM.idl]]&lt;br /&gt;
** The .idl file contains the SmileNetwork and SmileLicense interface definitions supported by BayesFusion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Register the DLLs to your Windows Registry.&lt;br /&gt;
# Open up the command prompt.&lt;br /&gt;
# Navigate to the folder the downloaded DLL is stored.&lt;br /&gt;
# Use the command 'regsvr32' to register your DLL file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
The library is capable of importing and communicating with Genie models. &lt;br /&gt;
&lt;br /&gt;
====Importing====&lt;br /&gt;
&lt;br /&gt;
The import process reads the underlying XML-based format so that COM set up is not required. To import a Genie model:&lt;br /&gt;
&lt;br /&gt;
1. Ensure the Genie model(s) you wish to import are located within the same folder as your Analytica model.&lt;br /&gt;
2. Use the 'File to Read' dropdown to select the desired Genie model.&lt;br /&gt;
3. Click 'Import selected model'&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Import_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
====Communicating====&lt;br /&gt;
To communicate with a Genie model, you must set up COM interactions (see the Requirements section above). The library supports all 20 functions supported by the SMILE COM wrapper. Included in the library are basic controls to help target your Genie models and select individual nodes in those models to interact with.&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Communication_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
&lt;br /&gt;
=== SMILE_Initialize(Smile_License_COM_Object, license_key, variant_array) ===&lt;br /&gt;
* Validates SMILE licensing key to create SMILE COM objects and use the SMILE COM functions.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ReadFile(Smile_Network_COM_Object; XDSL_File_Path) ===&lt;br /&gt;
* Reads the XDSL file from disk.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_UpdateBeliefs(Smile_Network_COM_Object) ===&lt;br /&gt;
* Updates the network (the model being read from) with any new evidence set. Related functions:&lt;br /&gt;
** SMILE_SetEvidence&lt;br /&gt;
** SMILE_GetEvidence&lt;br /&gt;
** SMILE_IsEvidence&lt;br /&gt;
** SMILE_ClearEvidence&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetAllNodeIds(Smile_Network_COM_Object) ===&lt;br /&gt;
* Returns an array of all node handles (identifiers).&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeName(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the node name attribute.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeType(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the node type attribute.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ClearAllEvidence(Smile_Network_COM_Object) ===&lt;br /&gt;
* Clears evidence for all nodes.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ClearAllTargets(Smile_Network_COM_Object) ===&lt;br /&gt;
* Clears targets for all nodes.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_SetEvidence(Smile_Network_COM_Object, Node_ID, Evidence) ===&lt;br /&gt;
* Sets the evidence for the selected node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetEvidence(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the evidence from the selected node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsEvidence(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Checks to see if evidence (obervation) is set.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ClearEvidence(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Clears evidence (observation) from selected node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsTarget(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns if the selected node is set as a target. More information on target nodes below:&lt;br /&gt;
&lt;br /&gt;
* Target nodes are always guaranteed to be updated by the inference algorithm. Other nodes, i.e., nodes that are not designated as targets, may be updated or not, depending on the internals of the algorithm used, but are not guaranteed to be updated. Focusing inference on the target nodes can reduce time and memory required to complete the calculation. When no targets are specified, SMILE assumes that all nodes are of interest to the user.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_SetTarget(Smile_Network_COM_Object, Node_ID, Bool) ===&lt;br /&gt;
* Sets selected node to either True (target) or False (not a target). More information on target nodes below:&lt;br /&gt;
&lt;br /&gt;
* Target nodes are always guaranteed to be updated by the inference algorithm. Other nodes, i.e., nodes that are not designated as targets, may be updated or not, depending on the internals of the algorithm used, but are not guaranteed to be updated. Focusing inference on the target nodes can reduce time and memory required to complete the calculation. When no targets are specified, SMILE assumes that all nodes are of interest to the user.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetOutcomeIds(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns Index elements tied to corresponding chance node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsValueValid(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Validity status; a flag set to true by the inference algorithm after it succesfully completes the calculations for the given node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsValueDiscretized(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Tells you whether your results are samples or discretized.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeValue(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the specified node's value.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeMean(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the specified node's mean.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeStdDev(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the specified node's standard deviation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Belief Nets==&lt;br /&gt;
https://docs.analytica.com/index.php/Bayes_nets_and_probabilistic_belief_networks&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=62305</id>
		<title>Genie Library</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=62305"/>
		<updated>2025-02-19T19:54:07Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOINDEX__&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This guide is currently only for Lumina developers.&lt;br /&gt;
&lt;br /&gt;
Genie is a powerful Bayesian network modeling tool designed for probabilistic reasoning and decision analysis, making it invaluable for diagnosing complex systems, predicting outcomes, and updating beliefs as new data emerges. What makes Genie particularly interesting is its ability to perform diagnostic inference, meaning it can intelligently infer causes from observed effects—something widely used in fields like risk assessment, medical diagnosis, and predictive maintenance. However, while Genie excels at probabilistic reasoning, it lacks Analytica’s strengths in structured decision modeling, cost-benefit analysis, and multi-dimensional scenario exploration. By integrating Genie with Analytica through the SMILE COM library, users can seamlessly combine probabilistic inference with powerful risk assessment and optimization tools. This connection enables, for instance, a pipeline risk management system where Genie predicts the probability of failure based on inspection data, while Analytica evaluates mitigation strategies and cost-effectiveness. Another example is equipment failure diagnostics, where Genie helps determine likely causes of a system failure, and Analytica models different response strategies to minimize downtime and costs. By linking these two tools, analysts can enhance decision-making with both predictive insights and strategic planning—creating a best-of-both-worlds solution.&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_to_Analytica.png|frameless|900x900px]]&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
You can download the Genie library here: [[Media:Genie library.ana|Genie library.ana]]&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
[https://docs.analytica.com/index.php/COM_Integration Analytica COM] is used to pass data between Analytica and a Genie model and requires Enterprise or above. If you simply want to read and recreate a Genie model in Analytica then you do not need to enable COM calls. To enable this functionality, users will need to do the following:&lt;br /&gt;
&lt;br /&gt;
1) Acquire a SMILE License key:&lt;br /&gt;
&lt;br /&gt;
* For more information, you can visit the BayesFusion page on licensing: https://support.bayesfusion.com/docs/SMILE/licensing.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Download files for COM installation:&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM64.txt|smileCOM64.dll]]&lt;br /&gt;
** This is actually a DLL file (change the file extension from .txt to .dll) that will need to be registered (instructions below).&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM.idl]]&lt;br /&gt;
** The .idl file contains the SmileNetwork and SmileLicense interface definitions supported by BayesFusion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Register the DLLs to your Windows Registry.&lt;br /&gt;
# Open up the command prompt.&lt;br /&gt;
# Navigate to the folder the downloaded DLL is stored.&lt;br /&gt;
# Use the command 'regsvr32' to register your DLL file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
The library is capable of importing and communicating with Genie models. &lt;br /&gt;
&lt;br /&gt;
====Importing====&lt;br /&gt;
&lt;br /&gt;
The import process reads the underlying XML-based format so that COM set up is not required. To import a Genie model:&lt;br /&gt;
&lt;br /&gt;
1. Ensure the Genie model(s) you wish to import are located within the same folder as your Analytica model.&lt;br /&gt;
2. Use the 'File to Read' dropdown to select the desired Genie model.&lt;br /&gt;
3. Click 'Import selected model'&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Import_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
====Communicating====&lt;br /&gt;
To communicate with a Genie model, you must set up COM interactions (see the Requirements section above). The library supports all 20 functions supported by the SMILE COM wrapper. Included in the library are basic controls to help target your Genie models and select individual nodes in those models to interact with.&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Communication_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
&lt;br /&gt;
=== SMILE_Initialize(Smile_License_COM_Object, license_key, variant_array) ===&lt;br /&gt;
* Validates SMILE licensing key to create SMILE COM objects and use the SMILE COM functions.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ReadFile(Smile_Network_COM_Object; XDSL_File_Path) ===&lt;br /&gt;
* Reads the XDSL file from disk.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_UpdateBeliefs(Smile_Network_COM_Object) ===&lt;br /&gt;
* Updates the network (the model being read from) with any new evidence set. Related functions:&lt;br /&gt;
** SMILE_SetEvidence&lt;br /&gt;
** SMILE_GetEvidence&lt;br /&gt;
** SMILE_IsEvidence&lt;br /&gt;
** SMILE_ClearEvidence&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetAllNodeIds(Smile_Network_COM_Object) ===&lt;br /&gt;
* Returns an array of all node handles (identifiers).&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeName(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the node name attribute.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeType(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the node type attribute.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ClearAllEvidence(Smile_Network_COM_Object) ===&lt;br /&gt;
* Clears evidence for all nodes.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ClearAllTargets(Smile_Network_COM_Object) ===&lt;br /&gt;
* Clears targets for all nodes.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_SetEvidence(Smile_Network_COM_Object, Node_ID, Evidence) ===&lt;br /&gt;
* Sets the evidence for the selected node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetEvidence(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the evidence from the selected node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsEvidence(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Checks to see if evidence (obervation) is set.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ClearEvidence(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Clears evidence (observation) from selected node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsTarget(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns if the selected node is set as a target. More information on target nodes below:&lt;br /&gt;
&lt;br /&gt;
* Target nodes are always guaranteed to be updated by the inference algorithm. Other nodes, i.e., nodes that are not designated as targets, may be updated or not, depending on the internals of the algorithm used, but are not guaranteed to be updated. Focusing inference on the target nodes can reduce time and memory required to complete the calculation. When no targets are specified, SMILE assumes that all nodes are of interest to the user.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_SetTarget(Smile_Network_COM_Object, Node_ID, Bool) ===&lt;br /&gt;
* Sets selected node to either True (target) or False (not a target). More information on target nodes below:&lt;br /&gt;
&lt;br /&gt;
* Target nodes are always guaranteed to be updated by the inference algorithm. Other nodes, i.e., nodes that are not designated as targets, may be updated or not, depending on the internals of the algorithm used, but are not guaranteed to be updated. Focusing inference on the target nodes can reduce time and memory required to complete the calculation. When no targets are specified, SMILE assumes that all nodes are of interest to the user.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetOutcomeIds(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns Index elements tied to corresponding chance node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsValueValid(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Validity status; a flag set to true by the inference algorithm after it succesfully completes the calculations for the given node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsValueDiscretized(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Tells you whether your results are samples or discretized.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeValue(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the specified node's value.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeMean(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the specified node's mean.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeStdDev(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the specified node's standard deviation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Belief Nets==&lt;br /&gt;
https://docs.analytica.com/index.php/Bayes_nets_and_probabilistic_belief_networks&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=62304</id>
		<title>Genie Library</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=62304"/>
		<updated>2025-02-19T19:43:31Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOINDEX__&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This guide is currently only for Lumina developers.&lt;br /&gt;
&lt;br /&gt;
Genie is a powerful Bayesian network modeling tool designed for probabilistic reasoning and decision analysis, making it invaluable for diagnosing complex systems, predicting outcomes, and updating beliefs as new data emerges. What makes Genie particularly interesting is its ability to perform diagnostic inference, meaning it can intelligently infer causes from observed effects—something widely used in fields like risk assessment, medical diagnosis, and predictive maintenance. However, while Genie excels at probabilistic reasoning, it lacks Analytica’s strengths in structured decision modeling, cost-benefit analysis, and multi-dimensional scenario exploration. By integrating Genie with Analytica through the SMILE COM library, users can seamlessly combine probabilistic inference with powerful risk assessment and optimization tools. This connection enables, for instance, a pipeline risk management system where Genie predicts the probability of failure based on inspection data, while Analytica evaluates mitigation strategies and cost-effectiveness. Another example is equipment failure diagnostics, where Genie helps determine likely causes of a system failure, and Analytica models different response strategies to minimize downtime and costs. By linking these two tools, analysts can enhance decision-making with both predictive insights and strategic planning—creating a best-of-both-worlds solution.&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_to_Analytica.png|frameless|900x900px]]&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
You can download the Genie library here: [[Media:Genie library.ana|Genie library.ana]]&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
Analytica COM is used to interact with Genie models. To enable this functionality, users will need to do the following:&lt;br /&gt;
&lt;br /&gt;
1) Acquire a SMILE License key:&lt;br /&gt;
&lt;br /&gt;
* For more information, you can visit the BayesFusion page on licensing: https://support.bayesfusion.com/docs/SMILE/licensing.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Download files for COM installation:&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM64.txt|smileCOM64.dll]] or [[File:smileCOM32.txt|smileCOM32.dll]] (depending on x32 or x64 Analytica)&lt;br /&gt;
** These are actually DLL files (change the file extension from .txt to .dll) that will need to be registered (instructions below).&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM.idl]]&lt;br /&gt;
** The .idl file contains the SmileNetwork and SmileLicense interface definitions supported by BayesFusion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Register the DLLs to your Windows Registry.&lt;br /&gt;
# Open up the command prompt.&lt;br /&gt;
# Navigate to the folder the downloaded DLL is stored.&lt;br /&gt;
# Use the command 'regsvr32' to register your DLL file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
The library is capable of importing and communicating with Genie models. &lt;br /&gt;
&lt;br /&gt;
====Importing====&lt;br /&gt;
&lt;br /&gt;
The import process reads the underlying XML-based format so that COM set up is not required. To import a Genie model:&lt;br /&gt;
&lt;br /&gt;
1. Ensure the Genie model(s) you wish to import are located within the same folder as your Analytica model.&lt;br /&gt;
2. Use the 'File to Read' dropdown to select the desired Genie model.&lt;br /&gt;
3. Click 'Import selected model'&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Import_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
====Communicating====&lt;br /&gt;
To communicate with a Genie model, you must set up COM interactions (see the Requirements section above). The library supports all 20 functions supported by the SMILE COM wrapper. Included in the library are basic controls to help target your Genie models and select individual nodes in those models to interact with.&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Communication_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
&lt;br /&gt;
=== SMILE_Initialize(Smile_License_COM_Object, license_key, variant_array) ===&lt;br /&gt;
* Validates SMILE licensing key to create SMILE COM objects and use the SMILE COM functions.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ReadFile(Smile_Network_COM_Object; XDSL_File_Path) ===&lt;br /&gt;
* Reads the XDSL file from disk.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_UpdateBeliefs(Smile_Network_COM_Object) ===&lt;br /&gt;
* Updates the network (the model being read from) with any new evidence set. Related functions:&lt;br /&gt;
** SMILE_SetEvidence&lt;br /&gt;
** SMILE_GetEvidence&lt;br /&gt;
** SMILE_IsEvidence&lt;br /&gt;
** SMILE_ClearEvidence&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetAllNodeIds(Smile_Network_COM_Object) ===&lt;br /&gt;
* Returns an array of all node handles (identifiers).&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeName(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the node name attribute.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeType(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the node type attribute.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ClearAllEvidence(Smile_Network_COM_Object) ===&lt;br /&gt;
* Clears evidence for all nodes.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ClearAllTargets(Smile_Network_COM_Object) ===&lt;br /&gt;
* Clears targets for all nodes.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_SetEvidence(Smile_Network_COM_Object, Node_ID, Evidence) ===&lt;br /&gt;
* Sets the evidence for the selected node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetEvidence(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the evidence from the selected node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsEvidence(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Checks to see if evidence (obervation) is set.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ClearEvidence(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Clears evidence (observation) from selected node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsTarget(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns if the selected node is set as a target. More information on target nodes below:&lt;br /&gt;
&lt;br /&gt;
* Target nodes are always guaranteed to be updated by the inference algorithm. Other nodes, i.e., nodes that are not designated as targets, may be updated or not, depending on the internals of the algorithm used, but are not guaranteed to be updated. Focusing inference on the target nodes can reduce time and memory required to complete the calculation. When no targets are specified, SMILE assumes that all nodes are of interest to the user.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_SetTarget(Smile_Network_COM_Object, Node_ID, Bool) ===&lt;br /&gt;
* Sets selected node to either True (target) or False (not a target). More information on target nodes below:&lt;br /&gt;
&lt;br /&gt;
* Target nodes are always guaranteed to be updated by the inference algorithm. Other nodes, i.e., nodes that are not designated as targets, may be updated or not, depending on the internals of the algorithm used, but are not guaranteed to be updated. Focusing inference on the target nodes can reduce time and memory required to complete the calculation. When no targets are specified, SMILE assumes that all nodes are of interest to the user.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetOutcomeIds(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns Index elements tied to corresponding chance node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsValueValid(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Validity status; a flag set to true by the inference algorithm after it succesfully completes the calculations for the given node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsValueDiscretized(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Tells you whether your results are samples or discretized.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeValue(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the specified node's value.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeMean(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the specified node's mean.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeStdDev(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the specified node's standard deviation.&lt;br /&gt;
&lt;br /&gt;
==Sample Genie Models==&lt;br /&gt;
&lt;br /&gt;
==Belief Nets==&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=File:Genie_to_Analytica.png&amp;diff=62303</id>
		<title>File:Genie to Analytica.png</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=File:Genie_to_Analytica.png&amp;diff=62303"/>
		<updated>2025-02-19T19:39:17Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=62302</id>
		<title>Genie Library</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=62302"/>
		<updated>2025-02-19T19:39:09Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOINDEX__&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This guide is currently only for Lumina developers.&lt;br /&gt;
&lt;br /&gt;
This library helps you import Genie files into Analytica and interact with Genie models to take advantage of features like diagnostic inference that are exclusive to Genie.&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_to_Analytica.png|frameless|900x900px]]&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
You can download the Genie library here: [[Media:Genie library.ana|Genie library.ana]]&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
Analytica COM is used to interact with Genie models. To enable this functionality, users will need to do the following:&lt;br /&gt;
&lt;br /&gt;
1) Acquire a SMILE License key:&lt;br /&gt;
&lt;br /&gt;
* For more information, you can visit the BayesFusion page on licensing: https://support.bayesfusion.com/docs/SMILE/licensing.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Download files for COM installation:&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM64.txt|smileCOM64.dll]] or [[File:smileCOM32.txt|smileCOM32.dll]] (depending on x32 or x64 Analytica)&lt;br /&gt;
** These are actually DLL files (change the file extension from .txt to .dll) that will need to be registered (instructions below).&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM.idl]]&lt;br /&gt;
** The .idl file contains the SmileNetwork and SmileLicense interface definitions supported by BayesFusion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Register the DLLs to your Windows Registry.&lt;br /&gt;
# Open up the command prompt.&lt;br /&gt;
# Navigate to the folder the downloaded DLL is stored.&lt;br /&gt;
# Use the command 'regsvr32' to register your DLL file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
The library is capable of importing and communicating with Genie models. &lt;br /&gt;
&lt;br /&gt;
====Importing====&lt;br /&gt;
&lt;br /&gt;
The import process reads the underlying XML-based format so that COM set up is not required. To import a Genie model:&lt;br /&gt;
&lt;br /&gt;
1. Ensure the Genie model(s) you wish to import are located within the same folder as your Analytica model.&lt;br /&gt;
2. Use the 'File to Read' dropdown to select the desired Genie model.&lt;br /&gt;
3. Click 'Import selected model'&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Import_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
====Communicating====&lt;br /&gt;
To communicate with a Genie model, you must set up COM interactions (see the Requirements section above). The library supports all 20 functions supported by the SMILE COM wrapper. Included in the library are basic controls to help target your Genie models and select individual nodes in those models to interact with.&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Communication_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
&lt;br /&gt;
=== SMILE_Initialize(Smile_License_COM_Object, license_key, variant_array) ===&lt;br /&gt;
* Validates SMILE licensing key to create SMILE COM objects and use the SMILE COM functions.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ReadFile(Smile_Network_COM_Object; XDSL_File_Path) ===&lt;br /&gt;
* Reads the XDSL file from disk.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_UpdateBeliefs(Smile_Network_COM_Object) ===&lt;br /&gt;
* Updates the network (the model being read from) with any new evidence set. Related functions:&lt;br /&gt;
** SMILE_SetEvidence&lt;br /&gt;
** SMILE_GetEvidence&lt;br /&gt;
** SMILE_IsEvidence&lt;br /&gt;
** SMILE_ClearEvidence&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetAllNodeIds(Smile_Network_COM_Object) ===&lt;br /&gt;
* Returns an array of all node handles (identifiers).&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeName(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the node name attribute.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeType(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the node type attribute.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ClearAllEvidence(Smile_Network_COM_Object) ===&lt;br /&gt;
* Clears evidence for all nodes.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ClearAllTargets(Smile_Network_COM_Object) ===&lt;br /&gt;
* Clears targets for all nodes.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_SetEvidence(Smile_Network_COM_Object, Node_ID, Evidence) ===&lt;br /&gt;
* Sets the evidence for the selected node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetEvidence(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the evidence from the selected node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsEvidence(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Checks to see if evidence (obervation) is set.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ClearEvidence(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Clears evidence (observation) from selected node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsTarget(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns if the selected node is set as a target. More information on target nodes below:&lt;br /&gt;
&lt;br /&gt;
* Target nodes are always guaranteed to be updated by the inference algorithm. Other nodes, i.e., nodes that are not designated as targets, may be updated or not, depending on the internals of the algorithm used, but are not guaranteed to be updated. Focusing inference on the target nodes can reduce time and memory required to complete the calculation. When no targets are specified, SMILE assumes that all nodes are of interest to the user.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_SetTarget(Smile_Network_COM_Object, Node_ID, Bool) ===&lt;br /&gt;
* Sets selected node to either True (target) or False (not a target). More information on target nodes below:&lt;br /&gt;
&lt;br /&gt;
* Target nodes are always guaranteed to be updated by the inference algorithm. Other nodes, i.e., nodes that are not designated as targets, may be updated or not, depending on the internals of the algorithm used, but are not guaranteed to be updated. Focusing inference on the target nodes can reduce time and memory required to complete the calculation. When no targets are specified, SMILE assumes that all nodes are of interest to the user.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetOutcomeIds(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns Index elements tied to corresponding chance node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsValueValid(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Validity status; a flag set to true by the inference algorithm after it succesfully completes the calculations for the given node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsValueDiscretized(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Tells you whether your results are samples or discretized.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeValue(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the specified node's value.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeMean(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the specified node's mean.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeStdDev(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the specified node's standard deviation.&lt;br /&gt;
&lt;br /&gt;
==Sample Genie Models==&lt;br /&gt;
&lt;br /&gt;
==Belief Nets==&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=File:Genie_Communication_Controls.png&amp;diff=61725</id>
		<title>File:Genie Communication Controls.png</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=File:Genie_Communication_Controls.png&amp;diff=61725"/>
		<updated>2024-11-14T20:15:33Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: BFilstrup uploaded a new version of File:Genie Communication Controls.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=61724</id>
		<title>Genie Library</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=61724"/>
		<updated>2024-11-14T20:13:35Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOINDEX__&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This guide is currently only for Lumina developers.&lt;br /&gt;
&lt;br /&gt;
This library helps you import Genie files into Analytica and interact with Genie models to take advantage of features like diagnostic inference that are exclusive to Genie.&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
You can download the Genie library here: [[Media:Genie library.ana|Genie library.ana]]&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
Analytica COM is used to interact with Genie models. To enable this functionality, users will need to do the following:&lt;br /&gt;
&lt;br /&gt;
1) Acquire a SMILE License key:&lt;br /&gt;
&lt;br /&gt;
* For more information, you can visit the BayesFusion page on licensing: https://support.bayesfusion.com/docs/SMILE/licensing.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Download files for COM installation:&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM64.txt|smileCOM64.dll]] or [[File:smileCOM32.txt|smileCOM32.dll]] (depending on x32 or x64 Analytica)&lt;br /&gt;
** These are actually DLL files (change the file extension from .txt to .dll) that will need to be registered (instructions below).&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM.idl]]&lt;br /&gt;
** The .idl file contains the SmileNetwork and SmileLicense interface definitions supported by BayesFusion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Register the DLLs to your Windows Registry.&lt;br /&gt;
# Open up the command prompt.&lt;br /&gt;
# Navigate to the folder the downloaded DLL is stored.&lt;br /&gt;
# Use the command 'regsvr32' to register your DLL file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
The library is capable of importing and communicating with Genie models. &lt;br /&gt;
&lt;br /&gt;
====Importing====&lt;br /&gt;
&lt;br /&gt;
The import process reads the underlying XML-based format so that COM set up is not required. To import a Genie model:&lt;br /&gt;
&lt;br /&gt;
1. Ensure the Genie model(s) you wish to import are located within the same folder as your Analytica model.&lt;br /&gt;
2. Use the 'File to Read' dropdown to select the desired Genie model.&lt;br /&gt;
3. Click 'Import selected model'&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Import_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
====Communicating====&lt;br /&gt;
To communicate with a Genie model, you must set up COM interactions (see the Requirements section above). The library supports all 20 functions supported by the SMILE COM wrapper. Included in the library are basic controls to help target your Genie models and select individual nodes in those models to interact with.&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Communication_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
&lt;br /&gt;
=== SMILE_Initialize(Smile_License_COM_Object, license_key, variant_array) ===&lt;br /&gt;
* Validates SMILE licensing key to create SMILE COM objects and use the SMILE COM functions.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ReadFile(Smile_Network_COM_Object; XDSL_File_Path) ===&lt;br /&gt;
* Reads the XDSL file from disk.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_UpdateBeliefs(Smile_Network_COM_Object) ===&lt;br /&gt;
* Updates the network (the model being read from) with any new evidence set. Related functions:&lt;br /&gt;
** SMILE_SetEvidence&lt;br /&gt;
** SMILE_GetEvidence&lt;br /&gt;
** SMILE_IsEvidence&lt;br /&gt;
** SMILE_ClearEvidence&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetAllNodeIds(Smile_Network_COM_Object) ===&lt;br /&gt;
* Returns an array of all node handles (identifiers).&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeName(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the node name attribute.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeType(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the node type attribute.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ClearAllEvidence(Smile_Network_COM_Object) ===&lt;br /&gt;
* Clears evidence for all nodes.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ClearAllTargets(Smile_Network_COM_Object) ===&lt;br /&gt;
* Clears targets for all nodes.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_SetEvidence(Smile_Network_COM_Object, Node_ID, Evidence) ===&lt;br /&gt;
* Sets the evidence for the selected node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetEvidence(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the evidence from the selected node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsEvidence(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Checks to see if evidence (obervation) is set.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ClearEvidence(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Clears evidence (observation) from selected node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsTarget(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns if the selected node is set as a target. More information on target nodes below:&lt;br /&gt;
&lt;br /&gt;
* Target nodes are always guaranteed to be updated by the inference algorithm. Other nodes, i.e., nodes that are not designated as targets, may be updated or not, depending on the internals of the algorithm used, but are not guaranteed to be updated. Focusing inference on the target nodes can reduce time and memory required to complete the calculation. When no targets are specified, SMILE assumes that all nodes are of interest to the user.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_SetTarget(Smile_Network_COM_Object, Node_ID, Bool) ===&lt;br /&gt;
* Sets selected node to either True (target) or False (not a target). More information on target nodes below:&lt;br /&gt;
&lt;br /&gt;
* Target nodes are always guaranteed to be updated by the inference algorithm. Other nodes, i.e., nodes that are not designated as targets, may be updated or not, depending on the internals of the algorithm used, but are not guaranteed to be updated. Focusing inference on the target nodes can reduce time and memory required to complete the calculation. When no targets are specified, SMILE assumes that all nodes are of interest to the user.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetOutcomeIds(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns Index elements tied to corresponding chance node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsValueValid(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Validity status; a flag set to true by the inference algorithm after it succesfully completes the calculations for the given node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsValueDiscretized(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Tells you whether your results are samples or discretized.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeValue(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the specified node's value.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeMean(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the specified node's mean.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeStdDev(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the specified node's standard deviation.&lt;br /&gt;
&lt;br /&gt;
==Sample Genie Models==&lt;br /&gt;
&lt;br /&gt;
==Belief Nets==&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=61723</id>
		<title>Genie Library</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=61723"/>
		<updated>2024-11-14T19:52:47Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This library helps you import Genie files into Analytica and interact with Genie models to take advantage of features like diagnostic inference that are exclusive to Genie.&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
You can download the Genie library here: [[Media:Genie library.ana|Genie library.ana]]&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
Analytica COM is used to interact with Genie models. To enable this functionality, users will need to do the following:&lt;br /&gt;
&lt;br /&gt;
1) Acquire a SMILE License key:&lt;br /&gt;
&lt;br /&gt;
* For more information, you can visit the BayesFusion page on licensing: https://support.bayesfusion.com/docs/SMILE/licensing.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Download files for COM installation:&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM64.txt|smileCOM64.dll]] or [[File:smileCOM32.txt|smileCOM32.dll]] (depending on x32 or x64 Analytica)&lt;br /&gt;
** These are actually DLL files (change the file extension from .txt to .dll) that will need to be registered (instructions below).&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM.idl]]&lt;br /&gt;
** The .idl file contains the SmileNetwork and SmileLicense interface definitions supported by BayesFusion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Register the DLLs to your Windows Registry.&lt;br /&gt;
# Open up the command prompt.&lt;br /&gt;
# Navigate to the folder the downloaded DLL is stored.&lt;br /&gt;
# Use the command 'regsvr32' to register your DLL file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
The library is capable of importing and communicating with Genie models. &lt;br /&gt;
&lt;br /&gt;
====Importing====&lt;br /&gt;
&lt;br /&gt;
The import process reads the underlying XML-based format so that COM set up is not required. To import a Genie model:&lt;br /&gt;
&lt;br /&gt;
1. Ensure the Genie model(s) you wish to import are located within the same folder as your Analytica model.&lt;br /&gt;
2. Use the 'File to Read' dropdown to select the desired Genie model.&lt;br /&gt;
3. Click 'Import selected model'&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Import_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
====Communicating====&lt;br /&gt;
To communicate with a Genie model, you must set up COM interactions (see the Requirements section above). The library supports all 20 functions supported by the SMILE COM wrapper. Included in the library are basic controls to help target your Genie models and select individual nodes in those models to interact with.&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Communication_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
&lt;br /&gt;
=== SMILE_Initialize(Smile_License_COM_Object, license_key, variant_array) ===&lt;br /&gt;
* Validates SMILE licensing key to create SMILE COM objects and use the SMILE COM functions.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ReadFile(Smile_Network_COM_Object; XDSL_File_Path) ===&lt;br /&gt;
* Reads the XDSL file from disk.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_UpdateBeliefs(Smile_Network_COM_Object) ===&lt;br /&gt;
* Updates the network (the model being read from) with any new evidence set. Related functions:&lt;br /&gt;
** SMILE_SetEvidence&lt;br /&gt;
** SMILE_GetEvidence&lt;br /&gt;
** SMILE_IsEvidence&lt;br /&gt;
** SMILE_ClearEvidence&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetAllNodeIds(Smile_Network_COM_Object) ===&lt;br /&gt;
* Returns an array of all node handles (identifiers).&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeName(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the node name attribute.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeType(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the node type attribute.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ClearAllEvidence(Smile_Network_COM_Object) ===&lt;br /&gt;
* Clears evidence for all nodes.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ClearAllTargets(Smile_Network_COM_Object) ===&lt;br /&gt;
* Clears targets for all nodes.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_SetEvidence(Smile_Network_COM_Object, Node_ID, Evidence) ===&lt;br /&gt;
* Sets the evidence for the selected node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetEvidence(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the evidence from the selected node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsEvidence(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Checks to see if evidence (obervation) is set.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ClearEvidence(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Clears evidence (observation) from selected node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsTarget(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns if the selected node is set as a target. More information on target nodes below:&lt;br /&gt;
&lt;br /&gt;
* Target nodes are always guaranteed to be updated by the inference algorithm. Other nodes, i.e., nodes that are not designated as targets, may be updated or not, depending on the internals of the algorithm used, but are not guaranteed to be updated. Focusing inference on the target nodes can reduce time and memory required to complete the calculation. When no targets are specified, SMILE assumes that all nodes are of interest to the user.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_SetTarget(Smile_Network_COM_Object, Node_ID, Bool) ===&lt;br /&gt;
* Sets selected node to either True (target) or False (not a target). More information on target nodes below:&lt;br /&gt;
&lt;br /&gt;
* Target nodes are always guaranteed to be updated by the inference algorithm. Other nodes, i.e., nodes that are not designated as targets, may be updated or not, depending on the internals of the algorithm used, but are not guaranteed to be updated. Focusing inference on the target nodes can reduce time and memory required to complete the calculation. When no targets are specified, SMILE assumes that all nodes are of interest to the user.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetOutcomeIds(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns Index elements tied to corresponding chance node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsValueValid(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Validity status; a flag set to true by the inference algorithm after it succesfully completes the calculations for the given node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsValueDiscretized(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Tells you whether your results are samples or discretized.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeValue(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the specified node's value.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeMean(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the specified node's mean.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeStdDev(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the specified node's standard deviation.&lt;br /&gt;
&lt;br /&gt;
==Sample Genie Models==&lt;br /&gt;
&lt;br /&gt;
==Belief Nets==&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=61722</id>
		<title>Genie Library</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=61722"/>
		<updated>2024-11-14T19:52:01Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This library helps you import Genie files into Analytica and interact with Genie models to take advantage of features like diagnostic inference that are exclusive to Genie.&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
You can download the Genie library here: [[Media:Genie library.ana|Genie library.ana]]&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
Analytica COM is used to interact with Genie models. To enable this functionality, users will need to do the following:&lt;br /&gt;
&lt;br /&gt;
1) Acquire a SMILE License key:&lt;br /&gt;
&lt;br /&gt;
* For more information, you can visit the BayesFusion page on licensing: https://support.bayesfusion.com/docs/SMILE/licensing.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Download files for COM installation:&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM64.txt|smileCOM64.dll]] or [[File:smileCOM32.txt|smileCOM32.dll]] (depending on x32 or x64 Analytica)&lt;br /&gt;
** These are actually DLL files (change the file extension from .txt to .dll) that will need to be registered (instructions below).&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM.idl]]&lt;br /&gt;
** The .idl file contains the SmileNetwork and SmileLicense interface definitions supported by BayesFusion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Register the DLLs to your Windows Registry.&lt;br /&gt;
# Open up the command prompt.&lt;br /&gt;
# Navigate to the folder the downloaded DLL is stored.&lt;br /&gt;
# Use the command 'regsvr32' to register your DLL file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
The library is capable of importing and communicating with Genie models. &lt;br /&gt;
&lt;br /&gt;
====Importing====&lt;br /&gt;
&lt;br /&gt;
The import process reads the underlying XML-based format so that COM set up is not required. To import a Genie model:&lt;br /&gt;
&lt;br /&gt;
1. Ensure the Genie model(s) you wish to import are located within the same folder as your Analytica model.&lt;br /&gt;
2. Use the 'File to Read' dropdown to select the desired Genie model.&lt;br /&gt;
3. Click 'Import selected model'&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Import_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
====Communicating====&lt;br /&gt;
To communicate with a Genie model, you must set up COM interactions (see the Requirements section above). The library supports all 20 functions supported by the SMILE COM wrapper. Included in the library are basic controls to help target your Genie models and select individual nodes in those models to interact with.&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Communication_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
&lt;br /&gt;
=== SMILE_Initialize(Smile_License_COM_Object, license_key, variant_array) ===&lt;br /&gt;
* Validates SMILE licensing key to create SMILE COM objects and use the SMILE COM functions.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ReadFile(Smile_Network_COM_Object; XDSL_File_Path) ===&lt;br /&gt;
* Reads the XDSL file from disk.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_UpdateBeliefs(Smile_Network_COM_Object) ===&lt;br /&gt;
* Updates the network (the model being read from) with any new evidence set. Related functions:&lt;br /&gt;
** SMILE_SetEvidence&lt;br /&gt;
** SMILE_GetEvidence&lt;br /&gt;
** SMILE_IsEvidence&lt;br /&gt;
** SMILE_ClearEvidence&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetAllNodeIds(Smile_Network_COM_Object) ===&lt;br /&gt;
* Returns an array of all node handles (identifiers).&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeName(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the node name attribute.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeType(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the node type attribute.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ClearAllEvidence(Smile_Network_COM_Object) ===&lt;br /&gt;
* Clears evidence for all nodes.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ClearAllTargets(Smile_Network_COM_Object) ===&lt;br /&gt;
* Clears targets for all nodes.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_SetEvidence(Smile_Network_COM_Object, Node_ID, Evidence) ===&lt;br /&gt;
* Sets the evidence for the selected node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetEvidence(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the evidence from the selected node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsEvidence(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Checks to see if evidence (obervation) is set.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ClearEvidence(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Clears evidence (observation) from selected node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsTarget(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns if the selected node is set as a target. More information on target nodes below:&lt;br /&gt;
&lt;br /&gt;
* Target nodes are always guaranteed to be updated by the inference algorithm. Other nodes, i.e., nodes that are not designated as targets, may be updated or not, depending on the internals of the algorithm used, but are not guaranteed to be updated. Focusing inference on the target nodes can reduce time and memory required to complete the calculation. When no targets are specified, SMILE assumes that all nodes are of interest to the user.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_SetTarget(Smile_Network_COM_Object, Node_ID, Bool) ===&lt;br /&gt;
* Sets selected node to either True (target) or False (not a target). More information on target nodes below:&lt;br /&gt;
&lt;br /&gt;
* Target nodes are always guaranteed to be updated by the inference algorithm. Other nodes, i.e., nodes that are not designated as targets, may be updated or not, depending on the internals of the algorithm used, but are not guaranteed to be updated. Focusing inference on the target nodes can reduce time and memory required to complete the calculation. When no targets are specified, SMILE assumes that all nodes are of interest to the user.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetOutcomeIds(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns Index elements tied to corresponding chance node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsValueValid(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Validity status; a flag set to true by the inference algorithm after it succesfully completes the calculations for the given node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsValueDiscretized(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Tells you whether your results are samples or discretized.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeValue(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the specified node's value.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeMean(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the specified node's mean.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeStdDev(Smile_Network_COM_Object, Node_ID) ===&lt;br /&gt;
* Returns the specified node's standard deviation.&lt;br /&gt;
&lt;br /&gt;
==Belief Nets==&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=61721</id>
		<title>Genie Library</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=61721"/>
		<updated>2024-11-14T19:37:23Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This library helps you import Genie files into Analytica and interact with Genie models to take advantage of features like diagnostic inference that are exclusive to Genie.&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
You can download the Genie library here: [[Media:Genie library.ana|Genie library.ana]]&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
Analytica COM is used to interact with Genie models. To enable this functionality, users will need to do the following:&lt;br /&gt;
&lt;br /&gt;
1) Acquire a SMILE License key:&lt;br /&gt;
&lt;br /&gt;
* For more information, you can visit the BayesFusion page on licensing: https://support.bayesfusion.com/docs/SMILE/licensing.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Download files for COM installation:&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM64.txt|smileCOM64.dll]] or [[File:smileCOM32.txt|smileCOM32.dll]] (depending on x32 or x64 Analytica)&lt;br /&gt;
** These are actually DLL files (change the file extension from .txt to .dll) that will need to be registered (instructions below).&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM.idl]]&lt;br /&gt;
** The .idl file contains the SmileNetwork and SmileLicense interface definitions supported by BayesFusion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Register the DLLs to your Windows Registry.&lt;br /&gt;
# Open up the command prompt.&lt;br /&gt;
# Navigate to the folder the downloaded DLL is stored.&lt;br /&gt;
# Use the command 'regsvr32' to register your DLL file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
The library is capable of importing and communicating with Genie models. &lt;br /&gt;
&lt;br /&gt;
====Importing====&lt;br /&gt;
&lt;br /&gt;
The import process reads the underlying XML-based format so that COM set up is not required. To import a Genie model:&lt;br /&gt;
&lt;br /&gt;
1. Ensure the Genie model(s) you wish to import are located within the same folder as your Analytica model.&lt;br /&gt;
2. Use the 'File to Read' dropdown to select the desired Genie model.&lt;br /&gt;
3. Click 'Import selected model'&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Import_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
====Communicating====&lt;br /&gt;
To communicate with a Genie model, you must set up COM interactions (see the Requirements section above). The library supports all 20 functions supported by the SMILE COM wrapper. Included in the library are basic controls to help target your Genie models and select individual nodes in those models to interact with.&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Communication_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
&lt;br /&gt;
=== SMILE_Initialize ===&lt;br /&gt;
* Validates SMILE licensing key to create SMILE COM objects and use the SMILE COM functions.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ReadFile ===&lt;br /&gt;
* Reads the XDSL file from disk.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_UpdateBeliefs ===&lt;br /&gt;
* Updates the network (the model being read from) with any new evidence set. Related functions:&lt;br /&gt;
** SMILE_SetEvidence&lt;br /&gt;
** SMILE_GetEvidence&lt;br /&gt;
** SMILE_IsEvidence&lt;br /&gt;
** SMILE_ClearEvidence&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetAllNodeIds ===&lt;br /&gt;
* Returns an array of all node handles (identifiers).&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeName ===&lt;br /&gt;
* Returns the node name attribute.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeType ===&lt;br /&gt;
* Returns the node type attribute.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ClearAllEvidence ===&lt;br /&gt;
* Clears evidence for all nodes.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ClearAllTargets ===&lt;br /&gt;
* Clears targets for all nodes.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_SetEvidence ===&lt;br /&gt;
* Sets the evidence for the selected node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetEvidence ===&lt;br /&gt;
* Returns the evidence from the selected node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsEvidence ===&lt;br /&gt;
* Checks to see if evidence (obervation) is set.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ClearEvidence ===&lt;br /&gt;
* Clears evidence (observation) from selected node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsTarget ===&lt;br /&gt;
* Returns if the selected node is set as a target. More information on target nodes below:&lt;br /&gt;
&lt;br /&gt;
* Target nodes are always guaranteed to be updated by the inference algorithm. Other nodes, i.e., nodes that are not designated as targets, may be updated or not, depending on the internals of the algorithm used, but are not guaranteed to be updated. Focusing inference on the target nodes can reduce time and memory required to complete the calculation. When no targets are specified, SMILE assumes that all nodes are of interest to the user.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_SetTarget ===&lt;br /&gt;
* Sets selected node to either True (target) or False (not a target). More information on target nodes below:&lt;br /&gt;
&lt;br /&gt;
* Target nodes are always guaranteed to be updated by the inference algorithm. Other nodes, i.e., nodes that are not designated as targets, may be updated or not, depending on the internals of the algorithm used, but are not guaranteed to be updated. Focusing inference on the target nodes can reduce time and memory required to complete the calculation. When no targets are specified, SMILE assumes that all nodes are of interest to the user.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetOutcomeIds ===&lt;br /&gt;
* Returns Index elements tied to corresponding chance node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsValueValid ===&lt;br /&gt;
* Validity status; a flag set to true by the inference algorithm after it succesfully completes the calculations for the given node.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_IsValueDiscretized ===&lt;br /&gt;
* Tells you whether your results are samples or discretized.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeValue ===&lt;br /&gt;
* Returns the specified node's value.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeMean ===&lt;br /&gt;
* Returns the specified node's mean.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_GetNodeStdDev ===&lt;br /&gt;
* Returns the specified node's standard deviation.&lt;br /&gt;
&lt;br /&gt;
==Belief Nets==&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=61720</id>
		<title>Genie Library</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=61720"/>
		<updated>2024-11-14T19:36:24Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; This library helps you import Genie files into Analytica and interact with Genie models to take advantage of features like diagnostic inference that are exclusive to Genie.&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
You can download the Genie library here: [[Media:Genie library.ana|Genie library.ana]]&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
Analytica COM is used to interact with Genie models. To enable this functionality, users will need to do the following:&lt;br /&gt;
&lt;br /&gt;
1) Acquire a SMILE License key:&lt;br /&gt;
&lt;br /&gt;
* For more information, you can visit the BayesFusion page on licensing: https://support.bayesfusion.com/docs/SMILE/licensing.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Download files for COM installation:&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM64.txt|smileCOM64.dll]] or [[File:smileCOM32.txt|smileCOM32.dll]] (depending on x32 or x64 Analytica)&lt;br /&gt;
** These are actually DLL files (change the file extension from .txt to .dll) that will need to be registered (instructions below).&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM.idl]]&lt;br /&gt;
** The .idl file contains the SmileNetwork and SmileLicense interface definitions supported by BayesFusion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Register the DLLs to your Windows Registry.&lt;br /&gt;
# Open up the command prompt.&lt;br /&gt;
# Navigate to the folder the downloaded DLL is stored.&lt;br /&gt;
# Use the command 'regsvr32' to register your DLL file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
The library is capable of importing and communicating with Genie models. &lt;br /&gt;
&lt;br /&gt;
====Importing====&lt;br /&gt;
&lt;br /&gt;
The import process reads the underlying XML-based format so that COM set up is not required. To import a Genie model:&lt;br /&gt;
&lt;br /&gt;
1. Ensure the Genie model(s) you wish to import are located within the same folder as your Analytica model.&lt;br /&gt;
2. Use the 'File to Read' dropdown to select the desired Genie model.&lt;br /&gt;
3. Click 'Import selected model'&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Import_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
====Communicating====&lt;br /&gt;
To communicate with a Genie model, you must set up COM interactions (see the Requirements section above). The library supports all 20 functions supported by the SMILE COM wrapper. Included in the library are basic controls to help target your Genie models and select individual nodes in those models to interact with.&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Communication_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
&lt;br /&gt;
=== SMILE_Initialize ===&lt;br /&gt;
* Validates SMILE licensing key to create SMILE COM objects and use the SMILE COM functions.&lt;br /&gt;
&lt;br /&gt;
=== SMILE_ReadFile ===&lt;br /&gt;
* Reads the XDSL file from disk.&lt;br /&gt;
&lt;br /&gt;
SMILE_UpdateBeliefs&lt;br /&gt;
* Updates the network (the model being read from) with any new evidence set. Related functions:&lt;br /&gt;
** SMILE_SetEvidence&lt;br /&gt;
** SMILE_GetEvidence&lt;br /&gt;
** SMILE_IsEvidence&lt;br /&gt;
** SMILE_ClearEvidence&lt;br /&gt;
&lt;br /&gt;
SMILE_GetAllNodeIds&lt;br /&gt;
* Returns an array of all node handles (identifiers).&lt;br /&gt;
&lt;br /&gt;
SMILE_GetNodeName&lt;br /&gt;
* Returns the node name attribute.&lt;br /&gt;
&lt;br /&gt;
SMILE_GetNodeType&lt;br /&gt;
* Returns the node type attribute.&lt;br /&gt;
&lt;br /&gt;
SMILE_ClearAllEvidence&lt;br /&gt;
* Clears evidence for all nodes.&lt;br /&gt;
&lt;br /&gt;
SMILE_ClearAllTargets&lt;br /&gt;
* Clears targets for all nodes.&lt;br /&gt;
&lt;br /&gt;
SMILE_SetEvidence&lt;br /&gt;
* Sets the evidence for the selected node.&lt;br /&gt;
&lt;br /&gt;
SMILE_GetEvidence&lt;br /&gt;
* Returns the evidence from the selected node.&lt;br /&gt;
&lt;br /&gt;
SMILE_IsEvidence&lt;br /&gt;
* Checks to see if evidence (obervation) is set.&lt;br /&gt;
&lt;br /&gt;
SMILE_ClearEvidence&lt;br /&gt;
* Clears evidence (observation) from selected node.&lt;br /&gt;
&lt;br /&gt;
SMILE_IsTarget&lt;br /&gt;
* Returns if the selected node is set as a target. More information on target nodes below:&lt;br /&gt;
&lt;br /&gt;
* Target nodes are always guaranteed to be updated by the inference algorithm. Other nodes, i.e., nodes that are not designated as targets, may be updated or not, depending on the internals of the algorithm used, but are not guaranteed to be updated. Focusing inference on the target nodes can reduce time and memory required to complete the calculation. When no targets are specified, SMILE assumes that all nodes are of interest to the user.&lt;br /&gt;
&lt;br /&gt;
SMILE_SetTarget&lt;br /&gt;
* Sets selected node to either True (target) or False (not a target). More information on target nodes below:&lt;br /&gt;
&lt;br /&gt;
* Target nodes are always guaranteed to be updated by the inference algorithm. Other nodes, i.e., nodes that are not designated as targets, may be updated or not, depending on the internals of the algorithm used, but are not guaranteed to be updated. Focusing inference on the target nodes can reduce time and memory required to complete the calculation. When no targets are specified, SMILE assumes that all nodes are of interest to the user.&lt;br /&gt;
&lt;br /&gt;
SMILE_GetOutcomeIds&lt;br /&gt;
* Returns Index elements tied to corresponding chance node.&lt;br /&gt;
&lt;br /&gt;
SMILE_IsValueValid&lt;br /&gt;
* Validity status; a flag set to true by the inference algorithm after it succesfully completes the calculations for the given node.&lt;br /&gt;
&lt;br /&gt;
SMILE_IsValueDiscretized&lt;br /&gt;
* Tells you whether your results are samples or discretized.&lt;br /&gt;
&lt;br /&gt;
SMILE_GetNodeValue&lt;br /&gt;
* Returns the specified node's value.&lt;br /&gt;
&lt;br /&gt;
SMILE_GetNodeMean&lt;br /&gt;
* Returns the specified node's mean.&lt;br /&gt;
&lt;br /&gt;
SMILE_GetNodeStdDev&lt;br /&gt;
* Returns the specified node's standard deviation.&lt;br /&gt;
&lt;br /&gt;
==Belief Nets==&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=61719</id>
		<title>Genie Library</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=61719"/>
		<updated>2024-11-14T19:35:11Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This library helps you import Genie files into Analytica and interact with Genie models to take advantage of features like diagnostic inference that are exclusive to Genie.&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
You can download the Genie library here: [[Media:Genie library.ana|Genie library.ana]]&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
Analytica COM is used to interact with Genie models. To enable this functionality, users will need to do the following:&lt;br /&gt;
&lt;br /&gt;
1) Acquire a SMILE License key:&lt;br /&gt;
&lt;br /&gt;
* For more information, you can visit the BayesFusion page on licensing: https://support.bayesfusion.com/docs/SMILE/licensing.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Download files for COM installation:&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM64.txt|smileCOM64.dll]] or [[File:smileCOM32.txt|smileCOM32.dll]] (depending on x32 or x64 Analytica)&lt;br /&gt;
** These are actually DLL files (change the file extension from .txt to .dll) that will need to be registered (instructions below).&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM.idl]]&lt;br /&gt;
** The .idl file contains the SmileNetwork and SmileLicense interface definitions supported by BayesFusion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Register the DLLs to your Windows Registry.&lt;br /&gt;
# Open up the command prompt.&lt;br /&gt;
# Navigate to the folder the downloaded DLL is stored.&lt;br /&gt;
# Use the command 'regsvr32' to register your DLL file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
The library is capable of importing and communicating with Genie models. &lt;br /&gt;
&lt;br /&gt;
====Importing====&lt;br /&gt;
&lt;br /&gt;
The import process reads the underlying XML-based format so that COM set up is not required. To import a Genie model:&lt;br /&gt;
&lt;br /&gt;
1. Ensure the Genie model(s) you wish to import are located within the same folder as your Analytica model.&lt;br /&gt;
2. Use the 'File to Read' dropdown to select the desired Genie model.&lt;br /&gt;
3. Click 'Import selected model'&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Import_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
====Communicating====&lt;br /&gt;
To communicate with a Genie model, you must set up COM interactions (see the Requirements section above). The library supports all 20 functions supported by the SMILE COM wrapper. Included in the library are basic controls to help target your Genie models and select individual nodes in those models to interact with.&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Communication_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
&lt;br /&gt;
SMILE_Initialize&lt;br /&gt;
* Validates SMILE licensing key to create SMILE COM objects and use the SMILE COM functions.&lt;br /&gt;
&lt;br /&gt;
SMILE_ReadFile&lt;br /&gt;
* Reads the XDSL file from disk.&lt;br /&gt;
&lt;br /&gt;
SMILE_UpdateBeliefs&lt;br /&gt;
* Updates the network (the model being read from) with any new evidence set. Related functions:&lt;br /&gt;
** SMILE_SetEvidence&lt;br /&gt;
** SMILE_GetEvidence&lt;br /&gt;
** SMILE_IsEvidence&lt;br /&gt;
** SMILE_ClearEvidence&lt;br /&gt;
&lt;br /&gt;
SMILE_GetAllNodeIds&lt;br /&gt;
* Returns an array of all node handles (identifiers).&lt;br /&gt;
&lt;br /&gt;
SMILE_GetNodeName&lt;br /&gt;
* Returns the node name attribute.&lt;br /&gt;
&lt;br /&gt;
SMILE_GetNodeType&lt;br /&gt;
* Returns the node type attribute.&lt;br /&gt;
&lt;br /&gt;
SMILE_ClearAllEvidence&lt;br /&gt;
* Clears evidence for all nodes.&lt;br /&gt;
&lt;br /&gt;
SMILE_ClearAllTargets&lt;br /&gt;
* Clears targets for all nodes.&lt;br /&gt;
&lt;br /&gt;
SMILE_SetEvidence&lt;br /&gt;
* Sets the evidence for the selected node.&lt;br /&gt;
&lt;br /&gt;
SMILE_GetEvidence&lt;br /&gt;
* Returns the evidence from the selected node.&lt;br /&gt;
&lt;br /&gt;
SMILE_IsEvidence&lt;br /&gt;
* Checks to see if evidence (obervation) is set.&lt;br /&gt;
&lt;br /&gt;
SMILE_ClearEvidence&lt;br /&gt;
* Clears evidence (observation) from selected node.&lt;br /&gt;
&lt;br /&gt;
SMILE_IsTarget&lt;br /&gt;
* Returns if the selected node is set as a target. More information on target nodes below:&lt;br /&gt;
&lt;br /&gt;
* Target nodes are always guaranteed to be updated by the inference algorithm. Other nodes, i.e., nodes that are not designated as targets, may be updated or not, depending on the internals of the algorithm used, but are not guaranteed to be updated. Focusing inference on the target nodes can reduce time and memory required to complete the calculation. When no targets are specified, SMILE assumes that all nodes are of interest to the user.&lt;br /&gt;
&lt;br /&gt;
SMILE_SetTarget&lt;br /&gt;
* Sets selected node to either True (target) or False (not a target). More information on target nodes below:&lt;br /&gt;
&lt;br /&gt;
* Target nodes are always guaranteed to be updated by the inference algorithm. Other nodes, i.e., nodes that are not designated as targets, may be updated or not, depending on the internals of the algorithm used, but are not guaranteed to be updated. Focusing inference on the target nodes can reduce time and memory required to complete the calculation. When no targets are specified, SMILE assumes that all nodes are of interest to the user.&lt;br /&gt;
&lt;br /&gt;
SMILE_GetOutcomeIds&lt;br /&gt;
* Returns Index elements tied to corresponding chance node.&lt;br /&gt;
&lt;br /&gt;
SMILE_IsValueValid&lt;br /&gt;
* Validity status; a flag set to true by the inference algorithm after it succesfully completes the calculations for the given node.&lt;br /&gt;
&lt;br /&gt;
SMILE_IsValueDiscretized&lt;br /&gt;
* Tells you whether your results are samples or discretized.&lt;br /&gt;
&lt;br /&gt;
SMILE_GetNodeValue&lt;br /&gt;
* Returns the specified node's value.&lt;br /&gt;
&lt;br /&gt;
SMILE_GetNodeMean&lt;br /&gt;
* Returns the specified node's mean.&lt;br /&gt;
&lt;br /&gt;
SMILE_GetNodeStdDev&lt;br /&gt;
* Returns the specified node's standard deviation.&lt;br /&gt;
&lt;br /&gt;
==Belief Nets==&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=File:Genie_Communication_Controls.png&amp;diff=61718</id>
		<title>File:Genie Communication Controls.png</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=File:Genie_Communication_Controls.png&amp;diff=61718"/>
		<updated>2024-11-14T19:29:05Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=61717</id>
		<title>Genie Library</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=61717"/>
		<updated>2024-11-14T19:28:55Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This library helps you import Genie files into Analytica and interact with Genie models to take advantage of features like diagnostic inference that are exclusive to Genie.&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
You can download the Genie library here: [[Media:Genie library.ana|Genie library.ana]]&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
Analytica COM is used to interact with Genie models. To enable this functionality, users will need to do the following:&lt;br /&gt;
&lt;br /&gt;
1) Acquire a SMILE License key:&lt;br /&gt;
&lt;br /&gt;
* For more information, you can visit the BayesFusion page on licensing: https://support.bayesfusion.com/docs/SMILE/licensing.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Download files for COM installation:&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM64.txt|smileCOM64.dll]] or [[File:smileCOM32.txt|smileCOM32.dll]] (depending on x32 or x64 Analytica)&lt;br /&gt;
** These are actually DLL files (change the file extension from .txt to .dll) that will need to be registered (instructions below).&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM.idl]]&lt;br /&gt;
** The .idl file contains the SmileNetwork and SmileLicense interface definitions supported by BayesFusion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Register the DLLs to your Windows Registry.&lt;br /&gt;
# Open up the command prompt.&lt;br /&gt;
# Navigate to the folder the downloaded DLL is stored.&lt;br /&gt;
# Use the command 'regsvr32' to register your DLL file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
The library is capable of importing and communicating with Genie models. &lt;br /&gt;
&lt;br /&gt;
====Importing====&lt;br /&gt;
&lt;br /&gt;
The import process reads the underlying XML-based format so that COM set up is not required. To import a Genie model:&lt;br /&gt;
&lt;br /&gt;
1. Ensure the Genie model(s) you wish to import are located within the same folder as your Analytica model.&lt;br /&gt;
2. Use the 'File to Read' dropdown to select the desired Genie model.&lt;br /&gt;
3. Click 'Import selected model'&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Import_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
====Communicating====&lt;br /&gt;
To communicate with a Genie model, you must set up COM interactions (see the Requirements section above). The library supports all 20 functions supported by the SMILE COM wrapper. Included in the library are basic controls to help target your Genie models and select individual nodes in those models to interact with.&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Communication_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
&lt;br /&gt;
==Belief Nets==&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=61716</id>
		<title>Genie Library</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=61716"/>
		<updated>2024-11-14T19:20:33Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This library helps you import Genie files into Analytica and interact with Genie models to take advantage of features like diagnostic inference that are exclusive to Genie.&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
You can download the Genie library here: [[Media:Genie library.ana|Genie library.ana]]&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
Analytica COM is used to interact with Genie models. To enable this functionality, users will need to do the following:&lt;br /&gt;
&lt;br /&gt;
1) Acquire a SMILE License key:&lt;br /&gt;
&lt;br /&gt;
* For more information, you can visit the BayesFusion page on licensing: https://support.bayesfusion.com/docs/SMILE/licensing.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Download files for COM installation:&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM64.txt|smileCOM64.dll]] or [[File:smileCOM32.txt|smileCOM32.dll]] (depending on x32 or x64 Analytica)&lt;br /&gt;
** These are actually DLL files (change the file extension from .txt to .dll) that will need to be registered (instructions below).&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM.idl]]&lt;br /&gt;
** The .idl file contains the SmileNetwork and SmileLicense interface definitions supported by BayesFusion.&lt;br /&gt;
&lt;br /&gt;
3) Register the DLLs to your Windows Registry.&lt;br /&gt;
# Open up the command prompt.&lt;br /&gt;
# Navigate to the folder the downloaded DLL is stored.&lt;br /&gt;
# Use the command 'regsvr32' to register your DLL file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
The library is capable of importing and communicating with Genie models. &lt;br /&gt;
&lt;br /&gt;
====Importing====&lt;br /&gt;
&lt;br /&gt;
The import process reads the underlying XML-based format so that COM set up is not required. To import a Genie model:&lt;br /&gt;
&lt;br /&gt;
1. Ensure the Genie model(s) you wish to import are located within the same folder as your Analytica model.&lt;br /&gt;
2. Use the 'File to Read' dropdown to select the desired Genie model.&lt;br /&gt;
3. Click 'Import selected model'&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Import_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
====Communicating====&lt;br /&gt;
To communicate with a Genie model, you must set up COM interactions (see the Requirements section above).&lt;br /&gt;
&lt;br /&gt;
====Belief Nets====&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=61715</id>
		<title>Genie Library</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=61715"/>
		<updated>2024-11-14T19:19:56Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; This library helps you import Genie files into Analytica and interact with Genie models to take advantage of features like diagnostic inference that are exclusive to Genie.&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
You can download the Genie library here: [[Media:Genie library.ana|Genie library.ana]]&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
Analytica COM is used to interact with Genie models. To enable this functionality, users will need to do the following:&lt;br /&gt;
&lt;br /&gt;
1) Acquire a SMILE License key:&lt;br /&gt;
&lt;br /&gt;
For more information, you can visit the BayesFusion page on licensing: https://support.bayesfusion.com/docs/SMILE/licensing.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Download files for COM installation:&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM64.txt|smileCOM64.dll]] or [[File:smileCOM32.txt|smileCOM32.dll]] (depending on x32 or x64 Analytica)&lt;br /&gt;
** These are actually DLL files (change the file extension from .txt to .dll) that will need to be registered (instructions below).&lt;br /&gt;
&lt;br /&gt;
* [[File:smileCOM.idl]] ???&lt;br /&gt;
** The .idl file contains the SmileNetwork and SmileLicense interface definitions supported by BayesFusion.&lt;br /&gt;
&lt;br /&gt;
3) Register the DLLs to your Windows Registry.&lt;br /&gt;
# Open up the command prompt.&lt;br /&gt;
# Navigate to the folder the downloaded DLL is stored.&lt;br /&gt;
# Use the command 'regsvr32' to register your DLL file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
The library is capable of importing and communicating with Genie models. &lt;br /&gt;
&lt;br /&gt;
====Importing====&lt;br /&gt;
&lt;br /&gt;
The import process reads the underlying XML-based format so that COM set up is not required. To import a Genie model:&lt;br /&gt;
&lt;br /&gt;
1. Ensure the Genie model(s) you wish to import are located within the same folder as your Analytica model.&lt;br /&gt;
2. Use the 'File to Read' dropdown to select the desired Genie model.&lt;br /&gt;
3. Click 'Import selected model'&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Import_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
====Communicating====&lt;br /&gt;
To communicate with a Genie model, you must set up COM interactions (see the Requirements section above).&lt;br /&gt;
&lt;br /&gt;
====Belief Nets====&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=61714</id>
		<title>Genie Library</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=61714"/>
		<updated>2024-11-14T19:16:07Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This library helps you import Genie files into Analytica and interact with Genie models to take advantage of features like diagnostic inference that are exclusive to Genie.&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
You can download the Genie library here: [[Media:Genie library.ana|Genie library.ana]]&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
Analytica COM is used to interact with Genie models. To enable this functionality, users will need to do the following:&lt;br /&gt;
&lt;br /&gt;
1) Acquire a SMILE License key:&lt;br /&gt;
## For more information, you can visit the BayesFusion page on licensing: https://support.bayesfusion.com/docs/SMILE/licensing.html&lt;br /&gt;
&lt;br /&gt;
# Download files for COM installation:&lt;br /&gt;
## [[File:smileCOM64.txt|smileCOM64.dll]] or [[File:smileCOM32.txt|smileCOM32.dll]] (depending on x32 or x64 Analytica)&lt;br /&gt;
### These are actually DLL files (change the file extension from .txt to .dll) that will need to be registered (instructions below).&lt;br /&gt;
## [[File:smileCOM.idl]] ???&lt;br /&gt;
### The .idl file contains the SmileNetwork and SmileLicense interface definitions supported by BayesFusion.&lt;br /&gt;
&lt;br /&gt;
# Register the DLLs to your Windows Registry.&lt;br /&gt;
## Open up the command prompt.&lt;br /&gt;
## Navigate to the folder the downloaded DLL is stored.&lt;br /&gt;
## Use the command 'regsvr32' to register your DLL file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
The library is capable of importing and communicating with Genie models. &lt;br /&gt;
&lt;br /&gt;
====Importing====&lt;br /&gt;
&lt;br /&gt;
The import process reads the underlying XML-based format so that COM set up is not required. To import a Genie model:&lt;br /&gt;
&lt;br /&gt;
1. Ensure the Genie model(s) you wish to import are located within the same folder as your Analytica model.&lt;br /&gt;
2. Use the 'File to Read' dropdown to select the desired Genie model.&lt;br /&gt;
3. Click 'Import selected model'&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Import_Controls.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
====Communicating====&lt;br /&gt;
To communicate with a Genie model, you must set up COM interactions (see the Requirements section above).&lt;br /&gt;
&lt;br /&gt;
====Belief Nets====&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=File:Genie_Import_Controls.png&amp;diff=61713</id>
		<title>File:Genie Import Controls.png</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=File:Genie_Import_Controls.png&amp;diff=61713"/>
		<updated>2024-11-14T19:12:13Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=File:SmileCOM.idl&amp;diff=61712</id>
		<title>File:SmileCOM.idl</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=File:SmileCOM.idl&amp;diff=61712"/>
		<updated>2024-11-14T19:11:14Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=File:SmileCOM32.txt&amp;diff=61711</id>
		<title>File:SmileCOM32.txt</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=File:SmileCOM32.txt&amp;diff=61711"/>
		<updated>2024-11-14T19:10:29Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: Actually a DLL file but restricted by wiki.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Actually a DLL file but restricted by wiki.&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=61710</id>
		<title>Genie Library</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=61710"/>
		<updated>2024-11-14T19:09:00Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This library helps you import Genie files into Analytica and interact with Genie models to take advantage of features like diagnostic inference that are exclusive to Genie.&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
You can download the Genie library here: [[Media:Genie library.ana|Genie library.ana]]&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
Analytica COM is used to interact with Genie models. To enable this functionality, users will need to do the following:&lt;br /&gt;
&lt;br /&gt;
1. Acquire a SMILE License key:&lt;br /&gt;
For more information, you can visit the BayesFusion page on licensing:&lt;br /&gt;
https://support.bayesfusion.com/docs/SMILE/licensing.html&lt;br /&gt;
&lt;br /&gt;
2. Download files for COM installation:&lt;br /&gt;
# Download the following files:&lt;br /&gt;
## [[File:smileCOM64.txt|smileCOM64.dll]] or [[File:smileCOM32.txt|smileCOM32.dll]] (depending on x32 or x64 Analytica)&lt;br /&gt;
### These are actually DLL files (change the file extension from .txt to .dll) that will need to be registered (instructions below).&lt;br /&gt;
## [[File:smileCOM.idl]] ???&lt;br /&gt;
### The .idl file contains the SmileNetwork and SmileLicense interface definitions supported by BayesFusion.&lt;br /&gt;
&lt;br /&gt;
3. Register the DLLs to your Windows Registry.&lt;br /&gt;
a) Open up the command prompt.&lt;br /&gt;
b) Navigate to the folder the downloaded DLL is stored.&lt;br /&gt;
c) Use the command 'regsvr32' to register your DLL file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
The library is capable of importing and communicating with Genie models. &lt;br /&gt;
&lt;br /&gt;
====Importing====&lt;br /&gt;
&lt;br /&gt;
The import process reads the underlying XML-based format so that COM set up is not required. To import a Genie model:&lt;br /&gt;
&lt;br /&gt;
1. Ensure the Genie model(s) you wish to import are located within the same folder as your Analytica model.&lt;br /&gt;
2. Use the 'File to Read' dropdown to select the desired Genie model.&lt;br /&gt;
3. Click 'Import selected model'&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Import_Controls.png|frameless|125x125px]]&lt;br /&gt;
&lt;br /&gt;
====Communicating====&lt;br /&gt;
To communicate with a Genie model, you must set up COM interactions (see the Requirements section above).&lt;br /&gt;
&lt;br /&gt;
====Belief Nets====&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=File:Genie_library.ana&amp;diff=61709</id>
		<title>File:Genie library.ana</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=File:Genie_library.ana&amp;diff=61709"/>
		<updated>2024-11-14T19:08:04Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: Attached with license; current version for internal use only.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Attached with license; current version for internal use only.&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=61708</id>
		<title>Genie Library</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=61708"/>
		<updated>2024-11-14T19:07:08Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This library helps you import Genie files into Analytica and interact with Genie models to take advantage of features like diagnostic inference that are exclusive to Genie.&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
You can download the Genie library here: [[Media:Genie library.ana|Genie library.ana]]&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
Analytica COM is used to interact with Genie models. To enable this functionality, users will need to do the following:&lt;br /&gt;
&lt;br /&gt;
1. Acquire a SMILE License key:&lt;br /&gt;
For more information, you can visit the BayesFusion page on licensing:&lt;br /&gt;
https://support.bayesfusion.com/docs/SMILE/licensing.html&lt;br /&gt;
&lt;br /&gt;
2. Download files for COM installation:&lt;br /&gt;
# Download the following files:&lt;br /&gt;
## [[File:smileCOM64.txt]] or [[File:smileCOM32.dll]] (depending on x32 or x64 Analytica)&lt;br /&gt;
### These are actually DLL files (change the file extension from .txt to .dll) that will need to be registered (instructions below).&lt;br /&gt;
## [[File:smileCOM.idl]] ???&lt;br /&gt;
### The .idl file contains the SmileNetwork and SmileLicense interface definitions supported by BayesFusion.&lt;br /&gt;
&lt;br /&gt;
3. Register the DLLs to your Windows Registry.&lt;br /&gt;
a) Open up the command prompt.&lt;br /&gt;
b) Navigate to the folder the downloaded DLL is stored.&lt;br /&gt;
c) Use the command 'regsvr32' to register your DLL file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
The library is capable of importing and communicating with Genie models. &lt;br /&gt;
&lt;br /&gt;
====Importing====&lt;br /&gt;
&lt;br /&gt;
The import process reads the underlying XML-based format so that COM set up is not required. To import a Genie model:&lt;br /&gt;
&lt;br /&gt;
1. Ensure the Genie model(s) you wish to import are located within the same folder as your Analytica model.&lt;br /&gt;
2. Use the 'File to Read' dropdown to select the desired Genie model.&lt;br /&gt;
3. Click 'Import selected model'&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Import_Controls.png|frameless|125x125px]]&lt;br /&gt;
&lt;br /&gt;
====Communicating====&lt;br /&gt;
To communicate with a Genie model, you must set up COM interactions (see the Requirements section above).&lt;br /&gt;
&lt;br /&gt;
====Belief Nets====&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=61678</id>
		<title>Genie Library</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=61678"/>
		<updated>2024-11-13T21:00:00Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This library helps you import Genie files into Analytica and interact with Genie models to take advantage of features like diagnostic inference that are exclusive to Genie.&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
You can download the Genie library here: [[Media:PLACEHODLER.ana|Genie library.ana]]&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
Analytica COM is used to interact with Genie models. To enable this functionality, users will need to do the following:&lt;br /&gt;
&lt;br /&gt;
1. Acquire a SMILE License key:&lt;br /&gt;
For more information, you can visit the BayesFusion page on licensing:&lt;br /&gt;
https://support.bayesfusion.com/docs/SMILE/licensing.html&lt;br /&gt;
&lt;br /&gt;
2. Download files for COM installation:&lt;br /&gt;
# Download the following files:&lt;br /&gt;
## [[File:smileCOM64.txt]] or [[File:smileCOM32.dll]] (depending on x32 or x64 Analytica)&lt;br /&gt;
### These are actually DLL files (change the file extension from .txt to .dll) that will need to be registered (instructions below).&lt;br /&gt;
## [[File:smileCOM.idl]] ???&lt;br /&gt;
### The .idl file contains the SmileNetwork and SmileLicense interface definitions supported by BayesFusion.&lt;br /&gt;
&lt;br /&gt;
3. Register the DLLs to your Windows Registry.&lt;br /&gt;
a) Open up the command prompt.&lt;br /&gt;
b) Navigate to the folder the downloaded DLL is stored.&lt;br /&gt;
c) Use the command 'regsvr32' to register your DLL file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
The library is capable of importing and communicating with Genie models. &lt;br /&gt;
&lt;br /&gt;
====Importing====&lt;br /&gt;
&lt;br /&gt;
The import process reads the underlying XML-based format so that COM set up is not required. To import a Genie model:&lt;br /&gt;
&lt;br /&gt;
1. Ensure the Genie model(s) you wish to import are located within the same folder as your Analytica model.&lt;br /&gt;
2. Use the 'File to Read' dropdown to select the desired Genie model.&lt;br /&gt;
3. Click 'Import selected model'&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Import_Controls.png|frameless|125x125px]]&lt;br /&gt;
&lt;br /&gt;
====Communicating====&lt;br /&gt;
To communicate with a Genie model, you must set up COM interactions (see the Requirements section above).&lt;br /&gt;
&lt;br /&gt;
====Belief Nets====&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=File:SmileCOM64.txt&amp;diff=61677</id>
		<title>File:SmileCOM64.txt</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=File:SmileCOM64.txt&amp;diff=61677"/>
		<updated>2024-11-13T20:58:39Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: BayesFusion DLL file for interacting with SMILE&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
BayesFusion DLL file for interacting with SMILE&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=61676</id>
		<title>Genie Library</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=61676"/>
		<updated>2024-11-13T20:47:02Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This library helps you import Genie files into Analytica and interact with Genie models to take advantage of features like diagnostic inference that are exclusive to Genie.&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
You can download the Genie library here: [[Media:PLACEHODLER.ana|Genie library.ana]]&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
Analytica COM is used to interact with Genie models. To enable this functionality, users will need to do the following:&lt;br /&gt;
&lt;br /&gt;
1. Acquire a SMILE License key:&lt;br /&gt;
For more information, you can visit the BayesFusion page on licensing:&lt;br /&gt;
https://support.bayesfusion.com/docs/SMILE/licensing.html&lt;br /&gt;
&lt;br /&gt;
2. Download files for COM installation:&lt;br /&gt;
# Download the following files:&lt;br /&gt;
## [[File:smileCOM64.dll]] or [[File:smileCOM32.dll]] (depending on x32 or x64 Analytica)&lt;br /&gt;
### These DLL files  will need to be registered (instructions below).&lt;br /&gt;
## [[File:smileCOM.idl]] ???&lt;br /&gt;
### The .idl file contains the SmileNetwork and SmileLicense interface definitions supported by BayesFusion.&lt;br /&gt;
&lt;br /&gt;
3. Register the DLLs to your Windows Registry.&lt;br /&gt;
a) Open up the command prompt.&lt;br /&gt;
b) Navigate to the folder the downloaded DLL is stored.&lt;br /&gt;
c) Use the command 'regsvr32' to register your DLL file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
The library is capable of importing and communicating with Genie models. &lt;br /&gt;
&lt;br /&gt;
====Importing====&lt;br /&gt;
&lt;br /&gt;
The import process reads the underlying XML-based format so that COM set up is not required. To import a Genie model:&lt;br /&gt;
&lt;br /&gt;
1. Ensure the Genie model(s) you wish to import are located within the same folder as your Analytica model.&lt;br /&gt;
2. Use the 'File to Read' dropdown to select the desired Genie model.&lt;br /&gt;
3. Click 'Import selected model'&lt;br /&gt;
&lt;br /&gt;
[[File:Genie_Import_Controls.png|frameless|125x125px]]&lt;br /&gt;
&lt;br /&gt;
====Communicating====&lt;br /&gt;
To communicate with a Genie model, you must set up COM interactions (see the Requirements section above).&lt;br /&gt;
&lt;br /&gt;
====Belief Nets====&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=61659</id>
		<title>Genie Library</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=61659"/>
		<updated>2024-11-13T02:17:24Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This library helps you import Genie files into Analytica and interact with Genie models to take advantage of features like diagnostic inference that are exclusive to Genie.&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
You can download the Genie library here: [[Media:PLACEHODLER.ana|Genie library.ana]]&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
The library is capable of importing and communicating with Genie models. &lt;br /&gt;
&lt;br /&gt;
====Importing====&lt;br /&gt;
&lt;br /&gt;
The import process reads the underlying XML-based format so that COM set up is not required. Importing a Genie model is as simple as &lt;br /&gt;
&lt;br /&gt;
1. Ensuring the models you wish to import are located within the same folder as your model.&lt;br /&gt;
2.&lt;br /&gt;
&lt;br /&gt;
====Communicating====&lt;br /&gt;
To communicate with a Genie model, you must set up COM interactions (see the Requirements section above).&lt;br /&gt;
&lt;br /&gt;
====Belief Nets====&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
Analytica COM is used to interact with Genie models. To enable this functionality, users will need to do the following:&lt;br /&gt;
# Download the following files:&lt;br /&gt;
## [[File:smileCOM64.dll]] or [[File:smileCOM32.dll]] (depending on x32 or x64 Analytica)&lt;br /&gt;
### EXPLANATION&lt;br /&gt;
## [[File:smileCOM.idl]] ???&lt;br /&gt;
### EXPLANATION&lt;br /&gt;
&lt;br /&gt;
==Instructions==&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=61438</id>
		<title>Genie Library</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Genie_Library&amp;diff=61438"/>
		<updated>2024-10-09T10:21:46Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: Created page with &amp;quot;This library helps you import Genie files into Analytica and interact with Genie models to take advantage of features like diagnostic inference that are exclusive to Genie.  =...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This library helps you import Genie files into Analytica and interact with Genie models to take advantage of features like diagnostic inference that are exclusive to Genie.&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
You can download the Genie library here: [[Media:PLACEHODLER.ana|Genie library.ana]]&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
Analytica COM is used to interact with Genie models. To enable this functionality, users will need to do the following:&lt;br /&gt;
# Download the following files:&lt;br /&gt;
## [[File:smileCOM64.dll]] or [[File:smileCOM32.dll]] (depending on x32 or x64 Analytica)&lt;br /&gt;
### EXPLANATION&lt;br /&gt;
## [[File:smileCOM.idl]] ???&lt;br /&gt;
### EXPLANATION&lt;br /&gt;
&lt;br /&gt;
==Instructions==&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Flatten&amp;diff=60611</id>
		<title>Flatten</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Flatten&amp;diff=60611"/>
		<updated>2024-04-15T17:09:57Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:Transforming functions]]&lt;br /&gt;
''new to [[Analytica 5.0]]''&lt;br /&gt;
&lt;br /&gt;
{{ReleaseBar}}&lt;br /&gt;
&lt;br /&gt;
== Flatten(x'', I..., resultIndex{{Release|5.4||, condition}}'') ==&lt;br /&gt;
&lt;br /&gt;
Flattens the cells of a multi-dimensional array into a one-dimensional vector.  &lt;br /&gt;
&lt;br /&gt;
You should usually specify the indexes of «x» that you want to flatten over.  For example, &amp;lt;code&amp;gt;Flatten(x, In1, In2, In3)&amp;lt;/code&amp;gt; returns a one-dimensional array having the same values as the 3-dimensional array «x».  The indexes listed first vary the slowest.&lt;br /&gt;
&lt;br /&gt;
If you already have a result index, &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; for the final result, specify it by name using&lt;br /&gt;
:&amp;lt;code&amp;gt;Flatten(x, In1, In2, In3, resultIndex: K)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you omit «resultIndex», a local index is created for you with the name &amp;lt;code&amp;gt;.K&amp;lt;/code&amp;gt;. If your «resultIndex» is shorter than the number of cells, the flattened result is truncated, or if it is too long the result is null-padded.&lt;br /&gt;
&lt;br /&gt;
Because a local index is created for the result, to define an index from the result of [[Flatten]], you should surround it in &amp;lt;code&amp;gt;CopyIndex(...)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you omit «I» (the indexes to flatten), then all indexes of «x» are used, but you don't have explicit control over what order is used.&lt;br /&gt;
&lt;br /&gt;
(''New to [[Analytica 5.4]]'') You can also specify an optional «condition» parameter to include only items in «x» that correspond to «condition» being true. &lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Applying a 1-D [[array-reducing functions|array-reducing function]] across multiple dimensions ===&lt;br /&gt;
&lt;br /&gt;
[[:category:Array-reducing functions|Many array-reducing functions]] operate over one index and return a scalar result. For example, &amp;lt;code&amp;gt;[[Median]](a, I)&amp;lt;/code&amp;gt; computes the median of a data set along index &amp;lt;code&amp;gt;I&amp;lt;/code&amp;gt;. Suppose you have a 2-D array, and you want the median value across both indexes. This is an example where you need to force a 1-D array-reducing function to operate over two or more indexes. This can be accomplished by flattening the array and then applying the array-reducing function.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;A := &amp;lt;/code&amp;gt;[[image:Two-D Rank input.png]]&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[[Local]] b:=[[Flatten]](A, In1, In2) Do [[Median]](b, b.K)&amp;lt;/code&amp;gt; &amp;amp;rarr; 46&lt;br /&gt;
&lt;br /&gt;
This method easily generalizes to more than two indexes, e.g., for four indexes:&lt;br /&gt;
:&amp;lt;code&amp;gt;[[Local]] b:=[[Flatten]](A, In1, In2, In3, In4) Do [[Median]](b, b.K)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To apply the reducing function over all indexes of the array, without knowing the number of indexes in advance, use [[Repeated parameter forwarding]], e.g.,&lt;br /&gt;
:&amp;lt;code&amp;gt;[[Local]] b:=[[Flatten]](A, ...[[IndexesOf]](A)) Do [[Median]](b, b.K)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Many built-in array-reducing functions (including [[Sum]], [[Max]], [[Min]], [[Product]], [[Average]]) already accept multiple indexes, making this technique unnecessary. With these you can just list the indexes to reduce over, e.g., &amp;lt;code&amp;gt;[[Sum]](A, In1, In2, In3)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Applying a 1-D [[Transforming functions|transforming function]] across multiple dimensions ===&lt;br /&gt;
&lt;br /&gt;
Situations sometime arise where you would like to apply [[:category:Transforming functions|an existing transforming function]] to a multidimensional array, such that the transformation should simultaneously operate over two or more indexes, but the existing function was created to operate over a single index.  A transformation function is a function that takes an array as input, and produces an array having the same dimensions as the input.&lt;br /&gt;
&lt;br /&gt;
One example is the [[Rank]] function, which operates over a single index. Suppose you want to apply it over 2 or more dimensions. You can do this by flattening the input array, applying [[Rank]] to the flattened 1-D result and then unflattening the result.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;A := &amp;lt;/code&amp;gt;[[image:Two-D Rank input.png]]&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[[Local]] b := [[Flatten]]( A, In1, In2 ) Do [[Unflatten]]( [[Rank]]( b, b.K ), b.K, In1, In2 )&amp;lt;/code&amp;gt; &amp;amp;rarr;&lt;br /&gt;
:::[[image:Two-D Rank Result.png]]&lt;br /&gt;
&lt;br /&gt;
Notice that the smallest cell in the input has a rank of 1, and the largest value has a rank of 25.&lt;br /&gt;
&lt;br /&gt;
The above example does a 2-D Rank calculation, and the same idea could be used for a 3-D (and so on) rank, e.g.,&lt;br /&gt;
:&amp;lt;code&amp;gt;[[Local]] b := [[Flatten]]( A, In1, In2, In3 ) Do [[Unflatten]]( [[Rank]]( b, b.K ), b.K, In1, In2, In3 )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This can be generalized to a [[User-Defined Function]] that works with any number of dimensions, by using [[Repeated parameter forwarding]] as follows.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[[User-Defined Function|Function]] RankMultiD( a : Array[I] ; I : ... index )&amp;lt;/code&amp;gt;&lt;br /&gt;
:'''Definition:''' &amp;lt;code&amp;gt;[[Local]] b := [[Flatten]]( a, ...I ) Do [[Unflatten]]( [[Rank]]( b, b.K ), b.K, ...I )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use this function to compute [[Rank]] over three dimensions as &lt;br /&gt;
:&amp;lt;code&amp;gt;RankMultiD( A, In1, In2, In3 )&amp;lt;/code&amp;gt;&lt;br /&gt;
Or, you can use this to compute the rank over all indexes of &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt;, without knowing in advance what they are, using [[Repeated parameter forwarding]] as &lt;br /&gt;
:&amp;lt;code&amp;gt;RankMultiD( A, ...[[IndexesOf]](A) )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Customizing «resultIndex» labels ===&lt;br /&gt;
When you let the function create a local «resultIndex» for you, it defines the index elements as 1 to n. When you want the index to consist of some combination of the original source indexes, you should call [[Flatten]] twice, the first time to create the custom index labels, and the second time to flatten the values.&lt;br /&gt;
&lt;br /&gt;
:Index Year := &amp;lt;code&amp;gt;2017..2030&amp;lt;/code&amp;gt;&lt;br /&gt;
:Index Month := &amp;lt;code&amp;gt;[[DatePart]]([[MakeDate]](2017,1..12),&amp;quot;MMM&amp;quot;)&amp;lt;/code&amp;gt;  { This is &amp;lt;code&amp;gt;['Jan', 'Feb', ..., 'Dec']&amp;lt;/code&amp;gt; }&lt;br /&gt;
:Index BiMonthDay := &amp;lt;code&amp;gt;[1,15]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We want to flatten &amp;lt;code&amp;gt;Forecasted_price&amp;lt;/code&amp;gt;, but we want the index labels to be &amp;lt;code&amp;gt;['2017-Jan-1', '2017-Jan-15', '2017-Feb-1',...]&amp;lt;/code&amp;gt; and not just &amp;lt;code&amp;gt;1..24336&amp;lt;/code&amp;gt;. Note that this also gives you an opportunity to select the name for the local index. The use of [[CopyIndex]] here is unnecessary when defining a local index, but would be required in the Definition of a global index.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: [[LocalIndex]] FlatDate := [[CopyIndex]]( [[Flatten]](Year &amp;amp; '-' &amp;amp; Month &amp;amp; '-' &amp;amp; BiMonthDay, Year, Month, ByMonthDay) );&lt;br /&gt;
: [[Flatten]]( Forecasted_price, Year, Month, BiMonthDay, K )&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
* Introduced in [[Analytica 5.0]].&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[Unflatten]]&lt;br /&gt;
* [[Local Indexes]]&lt;br /&gt;
* [[ConcatRows]]( ) -- note: [[Flatten]] and [[ConcatRows]] are nearly identical in functionality when applied to a 2-D array «x».&lt;br /&gt;
* [[MdArrayToTable]]( ) -- also unflattens, but unlike [[Flatten]], [[MdArrayToTable]] includes the coordinates of each cell in the result.&lt;br /&gt;
* [[Convert an Analytica multidimensional array into an Excel PivotTable]]&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=ReadExportFile&amp;diff=60610</id>
		<title>ReadExportFile</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=ReadExportFile&amp;diff=60610"/>
		<updated>2024-04-15T17:09:46Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
''requires [[Analytica Enterprise]] or higher''&lt;br /&gt;
&lt;br /&gt;
[[Category:Database Functions]]&lt;br /&gt;
[[category:File system functions]]&lt;br /&gt;
&lt;br /&gt;
== ReadExportFile(filename'', showDialog'') ==&lt;br /&gt;
Reads an array from a file that is in the [[Export-Import data format]].  This file format is produced when you use the [[File menu|File]] &amp;amp;rarr; '''Export''' menu command when viewing a table.&lt;br /&gt;
&lt;br /&gt;
Local indexes are created for each dimension in the file.&lt;br /&gt;
&lt;br /&gt;
When «filename» does not include a complete file path, the name is interpreted relative to the [[CurrentDataFolder]].&lt;br /&gt;
&lt;br /&gt;
The optional «showDialog» parameter can be set to true to force the file selection dialog to always appear.  Doing so allows the user to change which file is read.&lt;br /&gt;
&lt;br /&gt;
== Library == &lt;br /&gt;
Database Functions&lt;br /&gt;
&lt;br /&gt;
== From ADE ==&lt;br /&gt;
When evaluated in [[ADE|the Analytica Decision Engine (ADE)]] and a dialog needs to be shown to the end-user, it calls [[IAdeUICallbacks::GetFilename]](...). From within that callback, the parent application can interact with the end-user to resolve the file path, and a web applications can instruct the end-user to upload a file. Once complete, the callback returns the full path to the file which is then read. To receive this callback, the parent application must have previously registered the callback with ADE using [[CAEngine::SetCallbackObject]]( ). If it has not registered a callback and the file doesn't exist, returns an empty text.&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
Introduced in [[Analytica 4.5]].&lt;br /&gt;
&lt;br /&gt;
ADE callback introduced in [[Analytica 4.6|ADE 4.6]].&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[Export-Import data format]]&lt;br /&gt;
* [[Export]] command  (at present there isn't a [[WriteExportFile]] function. For now, the Export command can be used instead)&lt;br /&gt;
* [[ReadTextFile]]&lt;br /&gt;
* [[ReadCsvFile]]&lt;br /&gt;
* [[Import and Export data]]&lt;br /&gt;
* [[Convert an Analytica multidimensional array into an Excel PivotTable]]&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Import_and_Export_data&amp;diff=60609</id>
		<title>Import and Export data</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Import_and_Export_data&amp;diff=60609"/>
		<updated>2024-04-15T17:09:36Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Analytica User Guide]]&lt;br /&gt;
&amp;lt;breadcrumbs&amp;gt; Analytica User Guide &amp;gt; Integration with data and applications &amp;gt; {{PAGENAME}}&amp;lt;/breadcrumbs&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Import into an Edit Table or List from a text file  ==&lt;br /&gt;
&lt;br /&gt;
To import a definition from a text file into an edit table or list:&lt;br /&gt;
&lt;br /&gt;
# Select the definition field of the variable in either the [[Object window]] or [[Attribute panel]] definition view. If variable is a table, open the edit table.&lt;br /&gt;
# If you are importing a simple tab-delimited file, then select the cell(s) in which to import. If you are importing a data file in the format described in [[Model file formats]], then the cell selection is not used.&lt;br /&gt;
# Select '''Import''' from the [[File menu]]. A dialog prompts you for the file name from which to import.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:[[File:18.7.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To import all the elements of a multidimensional table (including all the slices), a special text format is required (see [[Model file formats]]). This is also the format in which an edit table or result table is exported. The indexes of the table must have been previously created as nodes.&lt;br /&gt;
&lt;br /&gt;
==Export a result table to a text file==&lt;br /&gt;
&lt;br /&gt;
To export a variable’s result table to a text file, first be certain that the text file is closed.&lt;br /&gt;
&lt;br /&gt;
# Select the variable to be exported from and open its [[Result window]].&lt;br /&gt;
# Select '''Export''' from the [[File menu]]. A dialog prompts you for the file name to export to.&lt;br /&gt;
&lt;br /&gt;
==Printing to a File==&lt;br /&gt;
&lt;br /&gt;
Another way of exporting any [[Diagram window]], [[Object window]], or [[Result window]] to a file is to print to a file:&lt;br /&gt;
&lt;br /&gt;
# Select '''Print''' from the [[File menu]].&lt;br /&gt;
# Select '''Print to File''' and press ''Enter'' or click '''OK'''.&lt;br /&gt;
# Enter the name of the file and the format for the file in the dialog that appears.&lt;br /&gt;
&lt;br /&gt;
:[[File:18.8.png]]&lt;br /&gt;
&lt;br /&gt;
==Edit Table Data Import/Export Format==&lt;br /&gt;
&lt;br /&gt;
Multidimensional data being imported or copied into an edit table must be in a text file with the special format described in this section. This is also the format in which an edit table or result table is exported.&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tt&amp;gt;TextTable&amp;lt;/tt&amp;gt; is a keyword.&lt;br /&gt;
*&amp;lt;tt&amp;gt;View&amp;lt;/tt&amp;gt; is the name of the view from which the data originated. If your data was exported from an edit table, this is &amp;lt;tt&amp;gt;EditTable&amp;lt;/tt&amp;gt;. If it was exported from a result table, it will be &amp;lt;tt&amp;gt;Value, Mean, Statistics, Probbands, PDF, CDF&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;Sample&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Variable identifier&amp;lt;/tt&amp;gt; is the identifier of the variable node where the data originated.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Index identifier&amp;lt;/tt&amp;gt; is the identifier of the index for this variable. An index with this name must already exist in the model, with the same length as in the file. When the index is a domain index, the &amp;lt;&amp;lt;tt&amp;gt;Index Identifier&amp;lt;/tt&amp;gt;&amp;gt; is of the form &amp;lt;tt&amp;gt;Domain of&amp;lt;/tt&amp;gt; &amp;lt;&amp;lt;tt&amp;gt;identifier&amp;lt;/tt&amp;gt;&amp;gt;.&lt;br /&gt;
*Each index value and array value pair must be separated by tab characters.&lt;br /&gt;
**Numeric values appear directly, in any of Analytica’s standard number or date/time formats.&lt;br /&gt;
**Text values are enclosed in either double (&amp;quot;) or single (') quotes. Tab and newline characters cannot appear between the quotes. If the text between the quotes includes a tab or newline character, it must be escaped using one of the sequences: &amp;lt;code&amp;gt;\n, \r, \t&amp;lt;/code&amp;gt;. If a backslash or quote character appears in the text, it too must be escaped using &amp;lt;code&amp;gt;\\, \'&amp;lt;/code&amp;gt;or&amp;lt;code&amp;gt;\&amp;quot;&amp;lt;/code&amp;gt;. (When the text is enclosed in double quotes, single quotes don’t have to be escaped, and vice versa).&lt;br /&gt;
**Expressions (from edit table cells), which include distribution functions that might appear in edit table cells, appear without quotes as long as they single-line expressions (i.e., do not contain any newline characters), do not start and end with the same quote character (such as the expression &amp;lt;code&amp;gt;&amp;quot;a&amp;quot; &amp;amp; &amp;quot;b&amp;quot;&amp;lt;/code&amp;gt;), and do not contain any tab character. Otherwise, the entire expression is enclosed between tildes, and the escape sequences &amp;lt;code&amp;gt;\n, \r, \t, \\, \~&amp;lt;/code&amp;gt; are used for newline, tab, backslash or tilde characters. For example, the following multi-line expression:&lt;br /&gt;
:::&amp;lt;code&amp;gt;var s:= &amp;quot;~~”;&amp;lt;/code&amp;gt;&lt;br /&gt;
:::&amp;lt;code&amp;gt;JoinText(A, I, s) &amp;amp; '\' &amp;lt;/code&amp;gt;&lt;br /&gt;
::would appear as &amp;lt;code&amp;gt;~var s:= &amp;quot;\~\~”;\rJoinText(A, I, s) &amp;amp; '\\'~&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The value null may appear as [[Null]].&lt;br /&gt;
&lt;br /&gt;
===One-dimensional array===&lt;br /&gt;
The format for a one-dimensional array is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background:white; border:white; margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
TextTable &amp;lt;View&amp;gt; &amp;lt;Variable identifier&amp;gt; &amp;lt;line break&amp;gt;&lt;br /&gt;
&amp;lt;Index identifier&amp;gt;&amp;lt;line break&amp;gt;&lt;br /&gt;
&amp;lt;Index value&amp;gt;&amp;lt;tab&amp;gt;&amp;lt;Array value&amp;gt;&amp;lt;line break&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
:[[File:18.9.png]]&lt;br /&gt;
&lt;br /&gt;
===Two-dimensional array===&lt;br /&gt;
The format for a two-dimensional array is:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background:white; border:white; margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
TextTable &amp;lt;View&amp;gt;&amp;lt;Variable identifier&amp;gt;&amp;lt;line break&amp;gt;&lt;br /&gt;
&amp;lt;Index1 identifier&amp;gt;&amp;lt;tab&amp;gt;&amp;lt;Index1 values separated by tabs&amp;gt;&lt;br /&gt;
&amp;lt;line break&amp;gt;&lt;br /&gt;
&amp;lt;Index2 identifier&amp;gt;&amp;lt;line break&amp;gt;&lt;br /&gt;
&amp;lt;Index2 value1&amp;gt;&amp;lt;tab&amp;gt;&amp;lt;Array values separated by tabs&amp;gt;&amp;lt;line break&amp;gt;&lt;br /&gt;
&amp;lt;Index2 value2&amp;gt;&amp;lt;tab&amp;gt;&amp;lt;Array values separated by tabs&amp;gt;&amp;lt;line break&amp;gt;&lt;br /&gt;
&amp;lt;Index2 valueN&amp;gt;&amp;lt;tab&amp;gt;&amp;lt;Array values separated by tabs&amp;gt;&amp;lt;line break&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
 &lt;br /&gt;
:[[File:18.10.png]]&lt;br /&gt;
&lt;br /&gt;
===Three-dimensional array===&lt;br /&gt;
&lt;br /&gt;
The format for a three-dimensional array is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background:white; border:white; margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
TextTable &amp;lt;View&amp;gt; &amp;lt;Variable identifier&amp;gt; &amp;lt;line break&amp;gt;&lt;br /&gt;
&amp;lt;Index1 identifier&amp;gt;&amp;lt;tab&amp;gt;&amp;lt;Index1 Value1&amp;gt;&amp;lt;line break&amp;gt;&lt;br /&gt;
&amp;lt;Index2 identifier&amp;gt;&amp;lt;tab&amp;gt;&amp;lt;Index2 values separated by tabs&amp;gt;&amp;lt;line break&amp;gt;&lt;br /&gt;
&amp;lt;Index3 identifier&amp;gt;&amp;lt;line break&amp;gt;&lt;br /&gt;
&amp;lt;Index3 value1&amp;gt;&amp;lt;tab&amp;gt;&amp;lt;Array values separated by tabs&amp;gt;&amp;lt;line break&amp;gt;&lt;br /&gt;
&amp;lt;Index3 value2&amp;gt;&amp;lt;tab&amp;gt;&amp;lt;Array values separated by tabs&amp;gt;&amp;lt;line break&amp;gt;&lt;br /&gt;
&amp;lt;Index3 valueN&amp;gt;&amp;lt;tab&amp;gt;&amp;lt;Array values separated by tabs&amp;gt;&amp;lt;line break&amp;gt;&lt;br /&gt;
&amp;lt;Index1 identifier&amp;gt;&amp;lt;tab&amp;gt;&amp;lt;Index1 Value2&amp;gt;&amp;lt;line break&amp;gt;&lt;br /&gt;
&amp;lt;Index2 identifier&amp;gt;&amp;lt;tab&amp;gt;&amp;lt;Index2 values separated by tabs&amp;gt;&amp;lt;line break&amp;gt;&lt;br /&gt;
&amp;lt;Index3 identifier&amp;gt;&amp;lt;line break&amp;gt;&lt;br /&gt;
&amp;lt;Index3 value1&amp;gt;&amp;lt;tab&amp;gt;&amp;lt;Array values separated by tabs&amp;gt;&amp;lt;line break&amp;gt;&lt;br /&gt;
&amp;lt;Index3 value2&amp;gt;&amp;lt;tab&amp;gt;&amp;lt;Array values separated by tabs&amp;gt;&amp;lt;line break&amp;gt;&lt;br /&gt;
&amp;lt;Index3 valueN&amp;gt;&amp;lt;tab&amp;gt;&amp;lt;Array values separated by tabs&amp;gt;&amp;lt;line break&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And so on for each value of &amp;lt;code&amp;gt;Index1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
:[[File:18.11.png]]&lt;br /&gt;
 &lt;br /&gt;
===Number format===&lt;br /&gt;
&lt;br /&gt;
Numerical data can be imported in any format recognized by Analytica (see [[Number formats]]). &lt;br /&gt;
&lt;br /&gt;
Numerical data is exported in the format set for the table, with these exceptions:&lt;br /&gt;
* Suffix format numbers are exported in scientific exponential format.&lt;br /&gt;
* Fixed decimal point numbers of more than 9 digits are exported in scientific exponential format.&lt;br /&gt;
* If a date format begins with the day of the week, e.g., “Saturday, January 1, 2000”, the weekday is suppressed: “January 1, 2000”.&lt;br /&gt;
&lt;br /&gt;
==Import a CSV data file==&lt;br /&gt;
&lt;br /&gt;
The '''Import...''' option on the [[File menu]] makes it easy to import a CSV (comma-separated values) data file . It automatically creates  a new variable containing the table, along with new Column and Row indexes:&lt;br /&gt;
&lt;br /&gt;
# Make sure you are in [[Edit mode]] with a [[Diagram window]] active.&lt;br /&gt;
# Select '''Import...''' option from the [[File menu]].&lt;br /&gt;
# Use the file browser to find and select the .csv file you want to import and click the '''Open''' button.&lt;br /&gt;
&lt;br /&gt;
It automatically creates a new variable node with title copied from the file name.&lt;br /&gt;
The definition is an [[Edit table]] containing the values from the file with Index variables Row and Column. &lt;br /&gt;
It creates new Index variables: Row with row numbers, and Column with column headers if the CSV's top row has column headers, otherwise column numbers. It reuses an existing index, instead of creating a new one, if  one already exists with the expected values.&lt;br /&gt;
&lt;br /&gt;
It automatically imports numbers as numbers, dates as dates, empty cells as Nulls, and treats anything else as a text value.&lt;br /&gt;
&lt;br /&gt;
== Convert relational table to array with a wizard ==&lt;br /&gt;
&lt;br /&gt;
Data tables imported from CSV files, spreadsheets, and databases are usually in relational form -- where some rows identifies index values as well as one or more numerical values (such as revenue).  In Analytica it's often useful to convert these relational tables into multidimensional arrays with Analytica index variables for each index column and each cell sums (or aggregates another way) the value column(s).  You can use [[MDArray]] function for this conversion. But, it's usually easiest to use a conversion wizard.  &lt;br /&gt;
&lt;br /&gt;
# Show the result table view of the relational table window and select a body cell.&lt;br /&gt;
# From the [[right-click menu]] select '''Relational table to array...'''&lt;br /&gt;
# It shows the conversion wizard dialog. Here's how to use it:&lt;br /&gt;
&lt;br /&gt;
For each source column in the relational table, it shows a '''Treat as''' menu and automatically guesses its role. Sometimes you will want to override its guess. These are the options:&lt;br /&gt;
* '''New index''': Make a new index variable whose values are the unique values from that column in numerical or alphabetic order.&lt;br /&gt;
* '''Existing index''': Use an existing index variable if it finds one that already contains the expected unique values. It shows a blue underlined link to that  index if you want to review it.&lt;br /&gt;
* '''Local index''': Make a new local index whose values are the unique values from the column. This is often best unless you expect to use the index extensively in the model.&lt;br /&gt;
* '''Value''': Treat this column as containing numerical values to aggregate over (e.g. sum) in the resulting array. It assumes Value for columns containing numbers.  You need to specify at least one column as a Value index.&lt;br /&gt;
* '''Ignore''': Don't use this column in the result.&lt;br /&gt;
&lt;br /&gt;
The '''Type''' menu lets you specify how to aggregate over the Value index(es). The usual default method is Sum, with other options shown here.  If there is no Value column, the aggregation type must be '''Count''' -- i.e. the resulting array contains a count of the number of rows  whose index column values match the corresponding indexes of the result.&lt;br /&gt;
&lt;br /&gt;
If you treat more than one column as a '''Value&amp;quot;, it assumes that the input is a &amp;quot;fact table&amp;quot;. It then lets you define a '''Value index''' with a menu with options New index, Local index, Local index, or '''No value index'''. It offers a field to specify the identifier of the new value index if you want one.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Export-Import data format]]&lt;br /&gt;
* [[Model file formats]]&lt;br /&gt;
* [[Number formats]]&lt;br /&gt;
* [[ReadExportFile]]&lt;br /&gt;
* [[Export]]&lt;br /&gt;
* [[Convert an Analytica multidimensional array into an Excel PivotTable]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;footer&amp;gt; Read data from URL on internet  / {{PAGENAME}} / OLE linking&amp;lt;/footer&amp;gt;&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Relational_tables_and_multiD_arrays&amp;diff=60608</id>
		<title>Relational tables and multiD arrays</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Relational_tables_and_multiD_arrays&amp;diff=60608"/>
		<updated>2024-04-15T17:09:26Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Analytica User Guide]]&lt;br /&gt;
[[Category: Array Flattening Functions]]&lt;br /&gt;
&amp;lt;breadcrumbs&amp;gt;Analytica User Guide &amp;gt; Array functions &amp;gt; {{PAGENAME}}&amp;lt;/breadcrumbs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The [[MdArrayToTable]]() function “flattens” a multi-dimensional array into a two-dimensional relational table. When a simple relational transformation is desired, the table will have one row for each array element and only one column (the right-most column) containing those element values. Alternatively [[MdArrayToTable]]() can produce a fact table in which values occupy multiple columns divided over a specified index, referred to as the Value Index. Both of these methods are described in separate sections below. The third section applies to both kinds of tables and describes partial transformations in which the [[MdArrayToTable]]() function will only operate on a subset of indexes, leaving the rest in array form.&lt;br /&gt;
&lt;br /&gt;
The [[MdTable]]() function does the inverse, creating a multi-dimensional array from a table of values. Viewing tabular results in a multi-dimensional form via [[MdTable]]() often provides informative new perspective on existing data.&lt;br /&gt;
&lt;br /&gt;
Many external application programs, including spreadsheets and relational databases, are limited to two-dimensional tables. Thus, before transferring multi-dimensional data between these applications and Analytica, it might be necessary to convert between multi-dimensional arrays and two-dimensional tables.&lt;br /&gt;
&lt;br /&gt;
==MdArrayToTable(a, ''row, col'') (pure relational transformation)==&lt;br /&gt;
Transforms a multi-dimensional array, «a», into a two-dimensional array (i.e., a table) indexed by «row» and «col». The result contains one row along «row» for each element of «a». Each column along «col», except the far right column, represents a coordinate index from the array. Index columns are populated with the coordinate values for the element. The far right column contains the actual value of the element. Both «row» and «col» are optional, if either or both is omitted, a local index of the appropriate length is automatically created. The local index col contains handles to the array’s indexes for the coordinate columns.&lt;br /&gt;
&lt;br /&gt;
If you provide the index «row» with the number of elements equal to [[Size]](a), the resulting table will contain all array elements. If the number of elements in «row» is equal to the number of nonempty elements of «a», the resulting table will contain only the non-empty elements of the array. If the number of elements in «row» is anything else, an error will occur. The optional parameters «omitNull» and «omitZero» control what is considered to be empty. When you omit row, the local index is sized for the non-empty elements, or you can obtain all elements by setting both «omitNull» and «omitZero» to false.&lt;br /&gt;
&lt;br /&gt;
See also [[MdArrayToTable]]().&lt;br /&gt;
&lt;br /&gt;
'''Library:''' Array&lt;br /&gt;
&lt;br /&gt;
'''Example:''' Starting with “Array_3x3x3” indexed by &amp;lt;code&amp;gt;Number&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Letter&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;Hue&amp;lt;/code&amp;gt;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; |Number &amp;amp;#9654;&lt;br /&gt;
|-&lt;br /&gt;
! Letter &amp;amp;#9660;&lt;br /&gt;
!1&lt;br /&gt;
!2&lt;br /&gt;
!3&lt;br /&gt;
|-&lt;br /&gt;
! A&lt;br /&gt;
|45&lt;br /&gt;
|19&lt;br /&gt;
|92&lt;br /&gt;
|-&lt;br /&gt;
! B&lt;br /&gt;
|13&lt;br /&gt;
|21&lt;br /&gt;
|81&lt;br /&gt;
|-&lt;br /&gt;
! C&lt;br /&gt;
|12&lt;br /&gt;
|43&lt;br /&gt;
|47&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;code&amp;gt;Hue = 'Red'&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; |Number &amp;amp;#9654;&lt;br /&gt;
|-&lt;br /&gt;
! Letter &amp;amp;#9660;&lt;br /&gt;
!1&lt;br /&gt;
!2&lt;br /&gt;
!3&lt;br /&gt;
|-&lt;br /&gt;
! A&lt;br /&gt;
|34&lt;br /&gt;
|25&lt;br /&gt;
|45&lt;br /&gt;
|-&lt;br /&gt;
! B&lt;br /&gt;
|11&lt;br /&gt;
|62&lt;br /&gt;
|19&lt;br /&gt;
|-&lt;br /&gt;
! C&lt;br /&gt;
|84&lt;br /&gt;
|45&lt;br /&gt;
|53&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;code&amp;gt;Hue = 'Green'&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; |Number &amp;amp;#9654;&lt;br /&gt;
|-&lt;br /&gt;
! Letter &amp;amp;#9660;&lt;br /&gt;
!1&lt;br /&gt;
!2&lt;br /&gt;
!3&lt;br /&gt;
|-&lt;br /&gt;
! A&lt;br /&gt;
|21&lt;br /&gt;
|65&lt;br /&gt;
|95&lt;br /&gt;
|-&lt;br /&gt;
! B&lt;br /&gt;
|48&lt;br /&gt;
|33&lt;br /&gt;
|12&lt;br /&gt;
|-&lt;br /&gt;
! C&lt;br /&gt;
|57&lt;br /&gt;
|56&lt;br /&gt;
|23&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;code&amp;gt;Hue = 'Blue'&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;code&amp;gt;Row := &amp;lt;/code&amp;gt;&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; |&amp;lt;code&amp;gt;sequence(1, size(Array_3x3x3))&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Col :=&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;['Number',&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;'Letter',&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;'Hue',&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;'Value']&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |All but the last column&lt;br /&gt;
elements specify indexes&lt;br /&gt;
from the array&lt;br /&gt;
|The last column element contains the&lt;br /&gt;
name heading of the value column. It&lt;br /&gt;
does not specify an index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;MdArrayToTable(Array_3x3x3, Row, Col) &amp;amp;rarr;&amp;lt;/code&amp;gt;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |Col &amp;amp;#9654;&lt;br /&gt;
|-&lt;br /&gt;
!Row &amp;amp;#9660;&lt;br /&gt;
!Number&lt;br /&gt;
!Letter&lt;br /&gt;
!Hue&lt;br /&gt;
!Value&lt;br /&gt;
|-&lt;br /&gt;
!1&lt;br /&gt;
|1&lt;br /&gt;
|A&lt;br /&gt;
|Red&lt;br /&gt;
|45&lt;br /&gt;
|-&lt;br /&gt;
!2&lt;br /&gt;
|1&lt;br /&gt;
|A&lt;br /&gt;
|Green&lt;br /&gt;
|34&lt;br /&gt;
|-&lt;br /&gt;
!3&lt;br /&gt;
|1&lt;br /&gt;
|A&lt;br /&gt;
|Blue&lt;br /&gt;
|21&lt;br /&gt;
|-&lt;br /&gt;
!4&lt;br /&gt;
|1&lt;br /&gt;
|B&lt;br /&gt;
|Red&lt;br /&gt;
|13&lt;br /&gt;
|-&lt;br /&gt;
!...&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!26&lt;br /&gt;
|3&lt;br /&gt;
|C&lt;br /&gt;
|Green&lt;br /&gt;
|53&lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|3&lt;br /&gt;
|C&lt;br /&gt;
|Blue&lt;br /&gt;
|23&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The resulting table populates Index columns with the corresponding index labels for the array element.&lt;br /&gt;
&lt;br /&gt;
Set the optional parameter «positional» to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; to return the index positions rather than index labels:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;MdArrayToTable(Array_3x3x3, Row, Col, positional: true) &amp;amp;rarr;&amp;lt;/code&amp;gt;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |Col &amp;amp;#9654;&lt;br /&gt;
|-&lt;br /&gt;
!Row &amp;amp;#9660;&lt;br /&gt;
!Number&lt;br /&gt;
!Letter&lt;br /&gt;
!Hue&lt;br /&gt;
!Value&lt;br /&gt;
|-&lt;br /&gt;
!1&lt;br /&gt;
|1&lt;br /&gt;
|1&lt;br /&gt;
|1&lt;br /&gt;
|45&lt;br /&gt;
|-&lt;br /&gt;
!2&lt;br /&gt;
|1&lt;br /&gt;
|1&lt;br /&gt;
|2&lt;br /&gt;
|34&lt;br /&gt;
|-&lt;br /&gt;
!3&lt;br /&gt;
|1&lt;br /&gt;
|1&lt;br /&gt;
|3&lt;br /&gt;
|21&lt;br /&gt;
|-&lt;br /&gt;
!4&lt;br /&gt;
|1&lt;br /&gt;
|2&lt;br /&gt;
|1&lt;br /&gt;
|13&lt;br /&gt;
|-&lt;br /&gt;
!...&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!26&lt;br /&gt;
|3&lt;br /&gt;
|3&lt;br /&gt;
|2&lt;br /&gt;
|53&lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|3&lt;br /&gt;
|3&lt;br /&gt;
|3&lt;br /&gt;
|23&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Column headings can be customized using a one-dimensional variable to associate headings and indexes:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;Index Headings := ['X', 'Y', 'Z', 'Values']&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Variable Index2Heading := Table(Headings) ('Number', 'Letter', 'Hue', 'Anything')&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;MdArrayToTable(Array_3x3x3, Row, Index2Heading, positional: true) &amp;amp;rarr;&amp;lt;/code&amp;gt;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |Col &amp;amp;#9654;&lt;br /&gt;
|-&lt;br /&gt;
!Row &amp;amp;#9660;&lt;br /&gt;
!X&lt;br /&gt;
!Y&lt;br /&gt;
!Z&lt;br /&gt;
!Values&lt;br /&gt;
|-&lt;br /&gt;
!1&lt;br /&gt;
|1&lt;br /&gt;
|1&lt;br /&gt;
|1&lt;br /&gt;
|45&lt;br /&gt;
|-&lt;br /&gt;
!2&lt;br /&gt;
|1&lt;br /&gt;
|1&lt;br /&gt;
|2&lt;br /&gt;
|34&lt;br /&gt;
|-&lt;br /&gt;
!3&lt;br /&gt;
|1&lt;br /&gt;
|1&lt;br /&gt;
|3&lt;br /&gt;
|21&lt;br /&gt;
|-&lt;br /&gt;
!4&lt;br /&gt;
|1&lt;br /&gt;
|2&lt;br /&gt;
|1&lt;br /&gt;
|13&lt;br /&gt;
|-&lt;br /&gt;
!...&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!26&lt;br /&gt;
|3&lt;br /&gt;
|3&lt;br /&gt;
|2&lt;br /&gt;
|53&lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|3&lt;br /&gt;
|3&lt;br /&gt;
|3&lt;br /&gt;
|23&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==MdArrayToTable(a, ''row, col, valueIndex'') (fact table transformation)==&lt;br /&gt;
The [[MdArrayToTable]]() function creates a fact table whenever the optional «valueIndex» parameter is used. This format allows you to have multiple columns of values divided along one of the original array indexes, the designated «valueIndex». The headings of each value column are typically the elements of the value index. In this type of transformation, the value index is not considered to be a positional coordinate of the original array. Instead, the array is interpreted as having a reduced coordinate system spanned only by the remaining indexes, with each coordinate location containing multiple values.&lt;br /&gt;
&lt;br /&gt;
'''Example:''' Starting with the same array from the example above, you can specify '''Hue''' as the value index. The array would be considered to have only two remaining coordinate dimensions: '''Number''' and '''Letter'''. This changes the effective size of the array, and therefore the length of the row index: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;Rows := 1..Sum(1, Number, Letter)&amp;lt;/code&amp;gt; or equivalently: &amp;lt;code&amp;gt;Row := 1 .. 9&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The '''Col''' parameter includes index columns as before, but the value column now contains the elements of the value index:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&amp;lt;code&amp;gt;Cols := &amp;lt;/code&amp;gt;&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; |&amp;lt;code&amp;gt;Concat(['Number', 'Letter'], Hue)&amp;lt;/code&amp;gt; &lt;br /&gt;
| or equivalently:&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Cols :=&amp;lt;/code&amp;gt;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; |&amp;lt;code&amp;gt;['Number', 'Letter',&amp;lt;/code&amp;gt;&lt;br /&gt;
|colspan=&amp;quot;3&amp;quot; |&amp;lt;code&amp;gt;'Red', 'Green', 'Blue']&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |First column elements specify &lt;br /&gt;
remaining coordinate indexes in the array.&lt;br /&gt;
|colspan=&amp;quot;3&amp;quot;| The right-most ''n'' column elements &lt;br /&gt;
are elements of the value index, &lt;br /&gt;
where ''n'' is the size &lt;br /&gt;
of the value index.&lt;br /&gt;
(In this example '''Hue''' has three elements)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If you omit the «col» parameter, [[MdArrayToTable]]() will create a local index for you named &amp;lt;code&amp;gt;.Col&amp;lt;/code&amp;gt;, using the elements of &amp;lt;code&amp;gt;Hue&amp;lt;/code&amp;gt; as the last there elements of the local index.&lt;br /&gt;
&lt;br /&gt;
Include '''Hue''' as the «valueIndex» parameter:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;(Array_3x3x3, Rows, Cols, Hue) &amp;amp;rarr;&amp;lt;/code&amp;gt;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; |Cols &amp;amp;#9654;&lt;br /&gt;
|-&lt;br /&gt;
!Rows &amp;amp;#9660;&lt;br /&gt;
!Number&lt;br /&gt;
!Letter&lt;br /&gt;
!Red&lt;br /&gt;
!Green&lt;br /&gt;
!Blue&lt;br /&gt;
|-&lt;br /&gt;
!1&lt;br /&gt;
|1&lt;br /&gt;
|A&lt;br /&gt;
|45&lt;br /&gt;
|34&lt;br /&gt;
|21&lt;br /&gt;
|-&lt;br /&gt;
!2&lt;br /&gt;
|1&lt;br /&gt;
|B&lt;br /&gt;
|13&lt;br /&gt;
|11&lt;br /&gt;
|48&lt;br /&gt;
|-&lt;br /&gt;
!3&lt;br /&gt;
|1&lt;br /&gt;
|C&lt;br /&gt;
|12&lt;br /&gt;
|84&lt;br /&gt;
|57&lt;br /&gt;
|-&lt;br /&gt;
!4&lt;br /&gt;
|2&lt;br /&gt;
|A&lt;br /&gt;
|19&lt;br /&gt;
|25&lt;br /&gt;
|65&lt;br /&gt;
|-&lt;br /&gt;
!...&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!8&lt;br /&gt;
|3&lt;br /&gt;
|B&lt;br /&gt;
|81&lt;br /&gt;
|19&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
!9&lt;br /&gt;
|3&lt;br /&gt;
|C&lt;br /&gt;
|47&lt;br /&gt;
|53&lt;br /&gt;
|23&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==MdArrayToTable() (partial transformation)==&lt;br /&gt;
In both examples above, the [[MdArrayToTable]]() function completely “flattened” the entire array into a two-dimensional table. But every array can be regarded as a stack of smaller sub-arrays, each having one less dimension than the whole. If [[MdArrayToTable]]() operates on only one of these sub-arrays, the result will also be a flat two-dimensional table. If it operates on each of the sub-arrays individually, the result will be a stack of tables which can no longer be described as completely “flat”. Extending this idea, it is possible to imagine a plane of tables or a cube of tables if the original array starts off with enough dimensions. This essentially describes the idea of a partial transformation. The [[MdArrayToTable]]() function is not obliged to operate on all available array indexes. In fact there are often advantages to leaving some dimensions intact since they can still be analyzed using Analytica’s array abstraction features.&lt;br /&gt;
&lt;br /&gt;
Specifying which dimensions are to be preserved in an [[MdArrayToTable]]() transformation involves a specialized coding technique described by some advanced users in New Jersey as, “fugetaboutit!” If you simply forget about certain indexes and remove all references to them in the [[MdArrayToTable]]() function and its parameters, the result will be an array of tables with dimensions along the omitted indexes. This is true whether or not the «valueIndex» parameter is used. In any case the length of the «row» parameter must be equal to the number of elements (or mutually non-empty elements) in each of the flattened sub-arrays.&lt;br /&gt;
&lt;br /&gt;
==MdTable(T, rows, cols, ''vars, conglomerationFn, defaultValue, valueColumn'')==&lt;br /&gt;
Returns a multi-dimensional array from a two-dimensional table of values. If ''n'' is the total number of columns and ''m'' is the number of value columns in the table «T», the following structure is assumed: The first ''n-m'' columns of «T» specify coordinates, and the right-most m columns contain data values. When there is only one data value in each row (a single value column) the table is described as a pure relational table. When there are multiple value columns it is described as a fact table.&lt;br /&gt;
&lt;br /&gt;
«rows» and «cols» specify the vertical and horizontal indexes of the two-dimensional table. The length of the rows index is equal to the number of data records in the table. The length of cols is equal to the total number of columns.&lt;br /&gt;
&lt;br /&gt;
The optional parameter «valueColumn» specifies the index over which multiple value columns are divided in a fact table. If «valueColumn» is omitted, the table is assumed in pure relational format, having a single value column.&lt;br /&gt;
&lt;br /&gt;
The parameter «vars» is a list of index identifiers specifying the coordinate dimensions of the final array. It is optional if the table is in ''pure'' relational format (single value column). If «vars» is omitted, the dimensions of the final result are specified by the first ''n-1'' elements of «cols», where ''n'' is the number of elements in cols.&lt;br /&gt;
&lt;br /&gt;
If a ''fact table'' (multiple value columns) is being transformed then you must use «vars» to specify the coordinate indexes of the array. The elements of «vars» must correspond to the coordinate columns of the table or an error will result. The number of elements in «vars» should be equal to ''n-m'' where ''n'' is the number of elements in cols and ''m'' is the number of value columns. Note that the list of coordinate indexes does not include the ''value index''.&lt;br /&gt;
&lt;br /&gt;
It is possible that two or more rows of «T» specify identical coordinates. In this case, a ''conglomeration function'' is used to combine the values for the given cell. The «conglomerationFn» parameter is a text value specifying which conglomeration function is to be used. Possible values are &amp;lt;code&amp;gt;&amp;quot;sum&amp;quot;&amp;lt;/code&amp;gt; (default), &amp;lt;code&amp;gt;&amp;quot;min&amp;quot;, &amp;quot;max&amp;quot;, &amp;quot;average&amp;quot;&amp;lt;/code&amp;gt;, and ,&amp;lt;code&amp;gt;&amp;quot;product&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
It is also possible that no row in «T» corresponds to a particular cell. In this case, the cell value is set to «defaultValu»', or if the «defaultValue» parameter is omitted, the cell value is set to ''undefined''. Undefined values can be detected using the [[IsUndef]]() function.&lt;br /&gt;
&lt;br /&gt;
See also [[MdTable]]().&lt;br /&gt;
&lt;br /&gt;
'''Library:''' Array&lt;br /&gt;
&lt;br /&gt;
'''Example:''' Starting with the fact table produced in the previous section:&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; |Cols &amp;amp;#9654;&lt;br /&gt;
|-&lt;br /&gt;
!Rows &amp;amp;#9660;&lt;br /&gt;
!Number&lt;br /&gt;
!Letter&lt;br /&gt;
!Red&lt;br /&gt;
!Green&lt;br /&gt;
!Blue&lt;br /&gt;
|-&lt;br /&gt;
!1&lt;br /&gt;
|1&lt;br /&gt;
|A&lt;br /&gt;
|45&lt;br /&gt;
|34&lt;br /&gt;
|21&lt;br /&gt;
|-&lt;br /&gt;
!2&lt;br /&gt;
|1&lt;br /&gt;
|B&lt;br /&gt;
|13&lt;br /&gt;
|11&lt;br /&gt;
|48&lt;br /&gt;
|-&lt;br /&gt;
!3&lt;br /&gt;
|1&lt;br /&gt;
|C&lt;br /&gt;
|12&lt;br /&gt;
|84&lt;br /&gt;
|57&lt;br /&gt;
|-&lt;br /&gt;
!4&lt;br /&gt;
|2&lt;br /&gt;
|A&lt;br /&gt;
|19&lt;br /&gt;
|25&lt;br /&gt;
|65&lt;br /&gt;
|-&lt;br /&gt;
!...&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!8&lt;br /&gt;
|3&lt;br /&gt;
|B&lt;br /&gt;
|81&lt;br /&gt;
|19&lt;br /&gt;
| 12&lt;br /&gt;
|-&lt;br /&gt;
!9&lt;br /&gt;
|3&lt;br /&gt;
|C&lt;br /&gt;
|47&lt;br /&gt;
|53&lt;br /&gt;
|23&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;Index rows := 1..9&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt; Index cols := ['Number', 'Letter', 'Red', 'Green', 'Blue']&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt; Index Hue := ['Red', 'Green', 'Blue']&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;MDTable(T, rows, cols, ['Number', 'Letter'], ValueColumn: Hue) &amp;amp;rarr;&amp;lt;/code&amp;gt;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; |Number &amp;amp;#9654;&lt;br /&gt;
|-&lt;br /&gt;
! Letter &amp;amp;#9660;&lt;br /&gt;
!1&lt;br /&gt;
!2&lt;br /&gt;
!3&lt;br /&gt;
|-&lt;br /&gt;
! A&lt;br /&gt;
|45&lt;br /&gt;
|19&lt;br /&gt;
|92&lt;br /&gt;
|-&lt;br /&gt;
! B&lt;br /&gt;
|13&lt;br /&gt;
|21&lt;br /&gt;
|81&lt;br /&gt;
|-&lt;br /&gt;
! C&lt;br /&gt;
|12&lt;br /&gt;
|43&lt;br /&gt;
|47&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;code&amp;gt;Hue = 'Red'&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; |Number &amp;amp;#9654;&lt;br /&gt;
|-&lt;br /&gt;
! Letter &amp;amp;#9660;&lt;br /&gt;
!1&lt;br /&gt;
!2&lt;br /&gt;
!3&lt;br /&gt;
|-&lt;br /&gt;
! A&lt;br /&gt;
|34&lt;br /&gt;
|25&lt;br /&gt;
|45&lt;br /&gt;
|-&lt;br /&gt;
! B&lt;br /&gt;
|11&lt;br /&gt;
|62&lt;br /&gt;
|19&lt;br /&gt;
|-&lt;br /&gt;
! C&lt;br /&gt;
|84&lt;br /&gt;
|45&lt;br /&gt;
|53&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;code&amp;gt;Hue = 'Green'&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; |Number &amp;amp;#9654;&lt;br /&gt;
|-&lt;br /&gt;
! Letter &amp;amp;#9660;&lt;br /&gt;
!1&lt;br /&gt;
!2&lt;br /&gt;
!3&lt;br /&gt;
|-&lt;br /&gt;
! A&lt;br /&gt;
|21&lt;br /&gt;
|65&lt;br /&gt;
|95&lt;br /&gt;
|-&lt;br /&gt;
! B&lt;br /&gt;
|48&lt;br /&gt;
|33&lt;br /&gt;
|12&lt;br /&gt;
|-&lt;br /&gt;
! C&lt;br /&gt;
|57&lt;br /&gt;
|56&lt;br /&gt;
|23&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;code&amp;gt;Hue = 'Blue'&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Example:''' Modifying the table by changing the (1, C) coordinate to (1, B), it now contains a missing value at (1, C) and redundant values at (1, B):&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; |Cols &amp;amp;#9654;&lt;br /&gt;
|-&lt;br /&gt;
!Rows &amp;amp;#9660;&lt;br /&gt;
!Number&lt;br /&gt;
!Letter&lt;br /&gt;
!Red&lt;br /&gt;
!Green&lt;br /&gt;
!Blue&lt;br /&gt;
|-&lt;br /&gt;
!1&lt;br /&gt;
|1&lt;br /&gt;
|A&lt;br /&gt;
|45&lt;br /&gt;
|34&lt;br /&gt;
|21&lt;br /&gt;
|-&lt;br /&gt;
!2&lt;br /&gt;
|1&lt;br /&gt;
|B&lt;br /&gt;
|13&lt;br /&gt;
|11&lt;br /&gt;
|48&lt;br /&gt;
|-&lt;br /&gt;
!3&lt;br /&gt;
|1&lt;br /&gt;
|B&lt;br /&gt;
|12&lt;br /&gt;
|84&lt;br /&gt;
|57&lt;br /&gt;
|-&lt;br /&gt;
!4&lt;br /&gt;
|2&lt;br /&gt;
|A&lt;br /&gt;
|19&lt;br /&gt;
|25&lt;br /&gt;
|65&lt;br /&gt;
|-&lt;br /&gt;
!...&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!8&lt;br /&gt;
|3&lt;br /&gt;
|B&lt;br /&gt;
|81&lt;br /&gt;
|19&lt;br /&gt;
|12&lt;br /&gt;
|-&lt;br /&gt;
!9&lt;br /&gt;
|3&lt;br /&gt;
|C&lt;br /&gt;
|47&lt;br /&gt;
|53&lt;br /&gt;
|23&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;MDTable(T, rows, cols, ['Number', 'Letter'], 'average', 'N/A', Hue) &amp;amp;rarr;&amp;lt;/code&amp;gt;&lt;br /&gt;
:{| &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; |Number &amp;amp;#9654;&lt;br /&gt;
|-&lt;br /&gt;
! Letter &amp;amp;#9660;&lt;br /&gt;
!1&lt;br /&gt;
!2&lt;br /&gt;
!3&lt;br /&gt;
|-&lt;br /&gt;
! A&lt;br /&gt;
|45&lt;br /&gt;
|19&lt;br /&gt;
|92&lt;br /&gt;
|-&lt;br /&gt;
! B&lt;br /&gt;
|12.5&lt;br /&gt;
|21&lt;br /&gt;
|81&lt;br /&gt;
|-&lt;br /&gt;
! C&lt;br /&gt;
|N/A&lt;br /&gt;
|43&lt;br /&gt;
|47&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;code&amp;gt;Hue = 'Red'&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; |Number &amp;amp;#9654;&lt;br /&gt;
|-&lt;br /&gt;
! Letter &amp;amp;#9660;&lt;br /&gt;
!1&lt;br /&gt;
!2&lt;br /&gt;
!3&lt;br /&gt;
|-&lt;br /&gt;
! A&lt;br /&gt;
|34&lt;br /&gt;
|25&lt;br /&gt;
|45&lt;br /&gt;
|-&lt;br /&gt;
! B&lt;br /&gt;
|47.5&lt;br /&gt;
|62&lt;br /&gt;
|19&lt;br /&gt;
|-&lt;br /&gt;
! C&lt;br /&gt;
|N/A&lt;br /&gt;
|45&lt;br /&gt;
|53&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;code&amp;gt;Hue = 'Green'&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; |Number &amp;amp;#9654;&lt;br /&gt;
|-&lt;br /&gt;
! Letter &amp;amp;#9660;&lt;br /&gt;
!1&lt;br /&gt;
!2&lt;br /&gt;
!3&lt;br /&gt;
|-&lt;br /&gt;
! A&lt;br /&gt;
|34&lt;br /&gt;
|25&lt;br /&gt;
|45&lt;br /&gt;
|-&lt;br /&gt;
! B&lt;br /&gt;
|47.5&lt;br /&gt;
|62&lt;br /&gt;
|19&lt;br /&gt;
|-&lt;br /&gt;
! C&lt;br /&gt;
|N/A&lt;br /&gt;
|45&lt;br /&gt;
|53&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;code&amp;gt;Hue = 'Blue'&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==MdTable() (partial transformation)==&lt;br /&gt;
If the input is a partially flattened array of tables, no special action is necessary. The pre-existing dimensions will automatically be rolled up into the final array without any reference being made to them. This is consistent with the general principles of array abstraction in Analytica.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[MdTable]]&lt;br /&gt;
* [[MdArrayToTable]]&lt;br /&gt;
* [[Array-reducing functions]]&lt;br /&gt;
* [[Convert an Analytica multidimensional array into an Excel PivotTable]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;footer&amp;gt;Transforming functions / {{PAGENAME}} / Interpolation functions&amp;lt;/footer&amp;gt;&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=MdArrayToTable&amp;diff=60607</id>
		<title>MdArrayToTable</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=MdArrayToTable&amp;diff=60607"/>
		<updated>2024-04-15T17:09:15Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:Array Flattening Functions]]&lt;br /&gt;
[[Category:Doc Status C]] &amp;lt;!-- For Lumina use, do not change --&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== MdArrayToTable(a'', row, col, valueIndex, positional, omitZero, omitNull'') ===&lt;br /&gt;
&lt;br /&gt;
Transforms a multi-dimensional array, «a», into a two-dimensional relational table. A '''''relational table''''' contains a row corresponding to each cell of «a» and a column for each index of «a». Each row shows the values of each index identifying that cell, plus a final column &amp;lt;code&amp;gt;'Value'&amp;lt;/code&amp;gt; with the cell value. By default, it generates local indexes &amp;lt;code&amp;gt;.Row&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.Col&amp;lt;/code&amp;gt;, unless you specify global indexes as «row» or  «col» parameters.&lt;br /&gt;
&lt;br /&gt;
By default, it omits rows for any cells of «a» that are empty, i.e. contain 0 or [[Null]].  Hence, a relational table is a more compact representation for sparse arrays in which a large fraction of cells are empty. On the other hand, the standard Analytica array representation is usually more compact and easier to handle for arrays with few or no empty cells. &lt;br /&gt;
&lt;br /&gt;
All parameters except the first are optional.&lt;br /&gt;
&lt;br /&gt;
Use the optional «row» and «col» parameters to provide the indexes for the final result explicitly. When you omit these, the function does not abide by the law of array-abstraction (see [[#Preserving Array-abstraction|Preserving Array-abstraction]]). &lt;br /&gt;
&lt;br /&gt;
===The «col» parameter===&lt;br /&gt;
&lt;br /&gt;
The «col» parameter is an index specifying the columns of the result. If you omit «col», it automatically creates a local index, called &amp;lt;code&amp;gt;.Col&amp;lt;/code&amp;gt;, which includes all the indexes of the array, plus 'Value' that contains the measure of each cell of the array.  When omitted, it is similar to you having specified the parameter as a index defined as &amp;lt;code&amp;gt;Index Col :=  Concat(IndexesOf(A), 'Value')&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Reasons to specify «col» are when you want to control the sequence of the columns that contain the first indexes (other than the «valueIndex») or when you want to use only a subset of the indexes.  When you omit one or more indexes, it flattens array «a» only over the indexes that appear in «col». The other indexes are [[Array Abstraction|array abstracted]], and are retained as indexes in the result.&lt;br /&gt;
&lt;br /&gt;
When you specify «col», each of the first n elements of «col» identifies an index of «a», as a [[handle]] to the index or as the textual identifier of the index. It's safer to use handles in case the identifier of an index gets changed. If you want to have text values rather than handles or identifiers in the «col» index of the result, you can provide «col» as a 1-D array, whose index contains the desired text values (with 'Value' or any text value in the last item), and whose cells contain the index handles (or identifiers).&lt;br /&gt;
&lt;br /&gt;
=== The «row» parameter ===&lt;br /&gt;
&lt;br /&gt;
The «row» parameter is the index for rows in the result. If you omit the parameter, the result has a local index .Row, with an element for each combination of the index values of «a». &lt;br /&gt;
&lt;br /&gt;
===  Sparse Tables with «omitZero» or «omitNull» ===&lt;br /&gt;
&lt;br /&gt;
The result normally excludes any rows whose original cell values are 0 or NULL , unless you specify «omitZero» or «omitNull» as False, respectively.  It will also include all the rows, including those with 0 or Null values, if you specify «row» as an index whose length is equal to Size(«a»).&lt;br /&gt;
&lt;br /&gt;
If you want to include zeroes, but not [[Null]]s, then size «row» for the number of non-Null values and specify:&lt;br /&gt;
:[[MdArrayToTable]](..., omitZero: false)&lt;br /&gt;
&lt;br /&gt;
Or, if you want to include [[Null]] cells as rows, but not zeros, specify:&lt;br /&gt;
:[[MdArrayToTable]](..., omitNull: false)&lt;br /&gt;
&lt;br /&gt;
===Fact tables and «valueIndex» ===&lt;br /&gt;
&lt;br /&gt;
[[MdArrayToTable]]() can also produce a '''fact table''' -- an extension of a relational table, in which each row, shows the the values of all the cells over one index of «a» instead of a single 'Value' cell. You specify the index to use as the «valueIndex» parameter.  A fact table is 2D, like a relational table, but it is more compact, reducing the number of rows by a factor equal to the size of «valueIndex». The first [[Size]](Col) - [[Size]](«valueIndex») columns of «col» are then the coordinates, and the final [[Size]](«valueIndex») columns of «col» hold the values.&lt;br /&gt;
&lt;br /&gt;
If you specify the «col» parameter, it must contain all (or some) of the indexes of  «a» excluding the «valueIndex», concatenated with the values of the «valueIndex».  If «a» has n indexes, including the  «valueIndex», «col» contains up to n-1 + k elements, where k is the number of elements in «valueIndex».  You could generate this index &amp;lt;code&amp;gt;Concat(#SetDifference(\IndexesOf(A), \Handle(valueIndex)), valueIndex)&amp;lt;/code&amp;gt;. If you omit the «col» parameter, it does this automatically.  &lt;br /&gt;
&lt;br /&gt;
A fact table normally omits rows whose values along the «valueIndex» are all zero or [[Null]], unless you specify «omitZero» or «omitNull» as False.  &lt;br /&gt;
&lt;br /&gt;
== Positional Coordinates ==&lt;br /&gt;
:[[MdArrayToTable]](..., positional: true) &lt;br /&gt;
&lt;br /&gt;
Normally, the first ''N'' columns of the result contain coordinates using index ''labels''.  When you specify parameter «positional» as true, it returns the positions of each index value rather than its label.&lt;br /&gt;
&lt;br /&gt;
== Customizing Column Names ==&lt;br /&gt;
&lt;br /&gt;
Normally, the column labels in «col» are just the index identifiers.  However, you may need to use different labels, such as labels to match column names in an external database, or more human-readable names.  To do this, define an index, say &amp;lt;code&amp;gt;Column&amp;lt;/code&amp;gt;, with the desired labels.  Then create a [[Table]] indexed by &amp;lt;code&amp;gt;Column&amp;lt;/code&amp;gt;, call it &amp;lt;code&amp;gt;L&amp;lt;/code&amp;gt;, and fill in the index names in the table.  Pass &amp;lt;code&amp;gt;L&amp;lt;/code&amp;gt; as the third parameter to [[MdArrayToTable]]&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
Define these global objects (as indexes or variables):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;Rows := sequence(1, size(Cost_in_time))&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Cols := [&amp;quot;Mpg&amp;quot;, &amp;quot;Time&amp;quot;, &amp;quot;Car_type&amp;quot;, &amp;quot;Cost&amp;quot;]&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;MDArrayToTable(Cost_in_time, Rows, Cols) &amp;amp;rarr;&amp;lt;/code&amp;gt;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !! colspan=4| Cols &amp;amp;#9654;&lt;br /&gt;
|-&lt;br /&gt;
!Rows &amp;amp;#9660; !!Mpg !!Time !!Car_type !!Cost&lt;br /&gt;
|-&lt;br /&gt;
!1 &lt;br /&gt;
|26 ||0 ||VW ||2185&lt;br /&gt;
|-&lt;br /&gt;
!2 &lt;br /&gt;
|26 ||0 ||Honda ||2385&lt;br /&gt;
|-&lt;br /&gt;
!3 &lt;br /&gt;
|26 ||0 ||BMW ||3185&lt;br /&gt;
|-&lt;br /&gt;
!4 &lt;br /&gt;
|26 ||1 ||VW ||2294&lt;br /&gt;
|-&lt;br /&gt;
!5 &lt;br /&gt;
|26 ||1 ||Honda ||2314&lt;br /&gt;
|-&lt;br /&gt;
!6 &lt;br /&gt;
|26 ||1 ||BMW ||3294&lt;br /&gt;
|-&lt;br /&gt;
!7 &lt;br /&gt;
|26 ||2 ||VW ||2409&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | ...&lt;br /&gt;
|-&lt;br /&gt;
!45 &lt;br /&gt;
|35 ||4 ||BMW ||5175&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: The expression for doing the same transformation using local indexes looks like&lt;br /&gt;
:&amp;lt;code&amp;gt;Index Rows := Sequence(1, Size(Cost_in_time));&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Index Cols := [&amp;quot;Mpg&amp;quot;, &amp;quot;Time&amp;quot;, &amp;quot;Car_type&amp;quot;, &amp;quot;Cost&amp;quot;];&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;MdArrayToTable(Cost_in_time, Rows, Cols)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Positional example ==&lt;br /&gt;
Changing the previous example to:&lt;br /&gt;
:&amp;lt;code&amp;gt;MdArrayToTable(Cost_in_time, Rows, Cols, positional: true)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
causes the coordinates in the first 3 columns to be expressed as index positions, rather than index labels.&lt;br /&gt;
:{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !! colspan=5| Cols &amp;amp;#9654;&lt;br /&gt;
|-&lt;br /&gt;
!Rows &amp;amp;#9660; !!Mpg !!Time !!Car_type !!Cost&lt;br /&gt;
|-&lt;br /&gt;
!1 &lt;br /&gt;
| 1 ||1 ||1 ||2185&lt;br /&gt;
|-&lt;br /&gt;
!2 &lt;br /&gt;
|1 ||1 ||2 ||2385&lt;br /&gt;
|-&lt;br /&gt;
!3 &lt;br /&gt;
|1 ||1 ||3 ||3185&lt;br /&gt;
|-&lt;br /&gt;
!4 &lt;br /&gt;
|1 ||2 ||1 ||2294&lt;br /&gt;
|-&lt;br /&gt;
!5 &lt;br /&gt;
|1 ||2 ||2 ||2314&lt;br /&gt;
|-&lt;br /&gt;
!6 &lt;br /&gt;
|1 ||2 ||3 ||3294&lt;br /&gt;
|-&lt;br /&gt;
!7 &lt;br /&gt;
|1 ||3 ||1 ||2409&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | ...&lt;br /&gt;
|-&lt;br /&gt;
!45 &lt;br /&gt;
|3 ||5 ||3 ||5175&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Creating a Fact Table ==&lt;br /&gt;
In this example, we will provide a separate column for each car-type, rather than including that as a relational dimension.  The numbers in the columns are the cost.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;Index Row := 1..Sum(1, Mpg, Time)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Index Label := [Mpg, Time, 'VW', 'Honda', 'BMW'];&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Variable Cost := MdArrayToTable(Cost_in_time, Row, Label, valueIndex: Car_type)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Cost &amp;amp;rarr;&amp;lt;/code&amp;gt;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !! colspan=5| Cols &amp;amp;#9654;&lt;br /&gt;
|-&lt;br /&gt;
!Rows &amp;amp;#9660; !!Mpg !!Time !! VW !! Honda !! BMW&lt;br /&gt;
|-&lt;br /&gt;
!1 &lt;br /&gt;
|26 ||0 ||2185 || 2385 || 3185&lt;br /&gt;
|-&lt;br /&gt;
!2 &lt;br /&gt;
|26 ||1 ||2294 || 2314 ||3294&lt;br /&gt;
|-&lt;br /&gt;
!3&lt;br /&gt;
|26 ||2 ||2409 || 2512 || 3359&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;6&amp;quot; | ...&lt;br /&gt;
|-&lt;br /&gt;
!15 &lt;br /&gt;
|35 ||4 ||3829 || 4230 || 5175&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
=== Textual Index Names vs. Handles ===&lt;br /&gt;
You can specify indexes for the first ''N'' columns of «col» using text index names, or using [[handle]]s.  Which is better? The advantage of using  [[handle]]s is that, if you rename one of the indexes, it will automatically update the name in the definition, as it does in other definitions referring to that identifier. If you use text names, it will cause an &amp;quot;Unidentified identifier&amp;quot; error unless or until you edit the name in «col».&lt;br /&gt;
&lt;br /&gt;
When defining «col» using [[handle]]s, you should define an index as a List (not a list-of-labels), and then enter the index identifiers into the first ''N'' cells.   For the final cell, you can enter anything, but I often just enter the identifier for the array being transformed.  When using a list-of-identifiers like this, it is ''essential'' to set the [[MetaOnly]] attribute to 1.  With the Index node selected in the Diagram, &lt;br /&gt;
# open the Attribute panel, &lt;br /&gt;
# click the Attribute pulldown, &lt;br /&gt;
# select ''metaOnly'' and &lt;br /&gt;
# enter 1 into the panel.  &lt;br /&gt;
&lt;br /&gt;
This prevents it from evaluating the variables in the list, and makes sure that the identifiers ([[handle]]s actually)rather than their values that get passed as the value of «col».&lt;br /&gt;
&lt;br /&gt;
=== Preserving Array-abstraction ===&lt;br /&gt;
Most Analytica functions are [[Array Abstraction|array-abstractable]], meaning that they adhere to the ''law of array-abstraction'', a very powerful principle that, when composed properly, results in models that are ''array-abstractable''.  The law of array abstraction states that for any unit of computation, &amp;lt;code&amp;gt;f(x, y,..)&amp;lt;/code&amp;gt;, that computes a result based on inputs ''x, y,...'', and which does not operate over index &amp;lt;code&amp;gt;I&amp;lt;/code&amp;gt;, it holds that:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;f(x[I = v], y[I = v], ..) = f(x, y, ...)[I = v]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The law ensures that we can add a dimension to the inputs of computational unit, while preserving a consistency with the results before the dimension was present: For any input [[slice]] having the original values, the corresponding output slice will compute the original value.&lt;br /&gt;
&lt;br /&gt;
This principle becomes particular powerful from the fact that the composition of array-abstractable expressions is array-abstractable.   Thus, as long as you emply only array-abstractable constructs, your entire will be fully array-abstractable.  This enable you to rely on power analyses, including parametric, sensitivity, uncertainty, and scenario analyses.  &lt;br /&gt;
&lt;br /&gt;
[[MdArrayToTable]] is an example of an ''array-abstractable'' function when you specify «row» and «col» parameters explicitly with a fixed number of indexes in «col».   For example, you might list two indexes to be transformed (so that the index of «col» has length three, the last column to hold the value).  If we later supply a three dimensional array, two of the dimensions are transformed to a relational table, the extra third dimension is array-abstracted, resulting in an array of relational tables.  This transformation takes a while to get your head around -- but it is an exact application of the law of array-abstraction above.&lt;br /&gt;
&lt;br /&gt;
It is common to use MdArrayToTable() to transform ''all'' dimensions of an array into the relational table, often by omitting the «row» and «col» parameters.  This method violates the ''law of array-abstraction'' -- and may cause problems when used for parametric or sensitivity analysis.  But there are certainly legitimate uses of a full transformation -- for example when you interface with databases, spreadsheets, or programs external to Analytica that can handle only arrays with only one or two dimensions. &lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
The optional parameters «Row» and «Col» were required before [[Analytica 4.5]] and were previously named «I» and «L».&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[Flatten]]&lt;br /&gt;
* [[MdTable]]&lt;br /&gt;
* [[ConcatRows]]&lt;br /&gt;
* [[Relational tables and multiD arrays]]&lt;br /&gt;
* [[Convert an Analytica multidimensional array into an Excel PivotTable]]&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=File:MultiD_Pivot_Image_7.png&amp;diff=60606</id>
		<title>File:MultiD Pivot Image 7.png</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=File:MultiD_Pivot_Image_7.png&amp;diff=60606"/>
		<updated>2024-04-15T17:08:13Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: BFilstrup uploaded a new version of File:MultiD Pivot Image 7.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Convert_an_Analytica_multidimensional_array_into_an_Excel_PivotTable&amp;diff=60601</id>
		<title>Convert an Analytica multidimensional array into an Excel PivotTable</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Convert_an_Analytica_multidimensional_array_into_an_Excel_PivotTable&amp;diff=60601"/>
		<updated>2024-04-13T00:32:35Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==The Problem==&lt;br /&gt;
&lt;br /&gt;
While handling multidimensional data in Analytica presents minimal hurdles, exporting this data to alternate platforms such as Excel can prove to be less straightforward. The complexity escalates further when formatting adjustments are necessary to facilitate PivotTable transformation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The Solution==&lt;br /&gt;
&lt;br /&gt;
Using MdArrayToTable() without any optional arguments produces a single value column. This format easily ''pivots'' into an Excel pivot table and can be done in under 30 seconds.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Find the data you want to bring into Excel&lt;br /&gt;
:[[File:MultiD_Pivot_Image_1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Create a new node to flatten your data. In the definition, call MdArrayToTable() and include your data as an argument. For above example this would look like MdArrayToTable(Travel_Costs)&lt;br /&gt;
:[[File:MultiD_Pivot_Image_2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) In your new object window, click in the top left gray box to highlight everything. Then, either right-click and press “Copy” or press CTRL+C&lt;br /&gt;
:[[File:MultiD_Pivot_Image_3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Paste the data into Excel&lt;br /&gt;
:[[File:MultiD_Pivot_Image_4.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) With the data still highlighted, navigate to the ribbon (top row), select “Insert,” and then select “PivotTable”&lt;br /&gt;
:[[File:MultiD_Pivot_Image_5.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6) Keep all default PivotTable settings and select “OK”&lt;br /&gt;
:[[File:MultiD_Pivot_Image_6.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7) Select your PivotTable Fields&lt;br /&gt;
:[[File:MultiD_Pivot_Image_7.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And that's it! For more on MdArrayToTable() and related functions, see related pages below.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[MdArrayToTable]]&lt;br /&gt;
* [[Relational tables and multiD arrays]]&lt;br /&gt;
* [[Import and Export data]]&lt;br /&gt;
* [[ReadExportFile]]&lt;br /&gt;
* [[Flatten]]&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Convert_an_Analytica_multidimensional_array_into_an_Excel_PivotTable&amp;diff=60600</id>
		<title>Convert an Analytica multidimensional array into an Excel PivotTable</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Convert_an_Analytica_multidimensional_array_into_an_Excel_PivotTable&amp;diff=60600"/>
		<updated>2024-04-13T00:31:30Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==The Problem==&lt;br /&gt;
&lt;br /&gt;
While handling multidimensional data in Analytica presents minimal hurdles, exporting this data to alternate platforms such as Excel can prove to be less straightforward. The complexity escalates further when formatting adjustments are necessary to facilitate PivotTable transformation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The Solution==&lt;br /&gt;
&lt;br /&gt;
Using MdArrayToTable() without any optional arguments produces a single value column. This format easily ''pivots'' into an Excel pivot table and can be done in under 30 seconds.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Find the data you want to bring into Excel&lt;br /&gt;
:[[File:MultiD_Pivot_Image_1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Create a new node to flatten your data. In the definition, call MdArrayToTable() and include your data as an argument. For above example this would look like MdArrayToTable(Travel_Costs)&lt;br /&gt;
:[[File:MultiD_Pivot_Image_2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) In your new object window, click in the top left gray box to highlight everything. Then, either right-click and press “Copy” or press CTRL+C&lt;br /&gt;
:[[File:MultiD_Pivot_Image_3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Paste the data into Excel&lt;br /&gt;
:[[File:MultiD_Pivot_Image_4.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) With the data still highlighted, navigate to the ribbon (top row), select “Insert,” and then select “PivotTable”&lt;br /&gt;
:[[File:MultiD_Pivot_Image_5.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6) Keep all default PivotTable settings and select “OK”&lt;br /&gt;
:[[File:MultiD_Pivot_Image_6.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7) Select your PivotTable Fields&lt;br /&gt;
:[[File:MultiD_Pivot_Image_7.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And that's it! For more on MdArrayToTable() and related functions, see related pages below.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[MdArrayToTable]]&lt;br /&gt;
* [[Relational tables and multiD arrays]]&lt;br /&gt;
* [[Import and Export data]]&lt;br /&gt;
* [[Flatten]]&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Convert_an_Analytica_multidimensional_array_into_an_Excel_PivotTable&amp;diff=60599</id>
		<title>Convert an Analytica multidimensional array into an Excel PivotTable</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Convert_an_Analytica_multidimensional_array_into_an_Excel_PivotTable&amp;diff=60599"/>
		<updated>2024-04-13T00:30:41Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==The Problem==&lt;br /&gt;
&lt;br /&gt;
While handling multidimensional data in Analytica presents minimal hurdles, exporting this data to alternate platforms such as Excel can prove to be less straightforward. The complexity escalates further when formatting adjustments are necessary to facilitate PivotTable transformation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The Solution==&lt;br /&gt;
&lt;br /&gt;
Using MdArrayToTable() without any optional arguments produces a single value column. This format easily ''pivots'' into an Excel pivot table and can be done in under 30 seconds.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Find the data you want to bring into Excel&lt;br /&gt;
:[[File:MultiD_Pivot_Image_1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Create a new node to flatten your data. In the definition, call MdArrayToTable() and include your data as an argument. For above example this would look like MdArrayToTable(Travel_Costs)&lt;br /&gt;
:[[File:MultiD_Pivot_Image_2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) In your new object window, click in the top left gray box to highlight everything. Then, either right-click and press “Copy” or press CTRL+C&lt;br /&gt;
:[[File:MultiD_Pivot_Image_3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Paste the data into Excel&lt;br /&gt;
:[[File:MultiD_Pivot_Image_4.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) With the data still highlighted, navigate to the ribbon (top row), select “Insert,” and then select “PivotTable”&lt;br /&gt;
:[[File:MultiD_Pivot_Image_5.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6) Keep all default PivotTable settings and select “OK”&lt;br /&gt;
:[[File:MultiD_Pivot_Image_6.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7) Select your PivotTable Fields&lt;br /&gt;
:[[File:MultiD_Pivot_Image_7.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And that's it! For more on MdArrayToTable() and related functions, see related pages below.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[MdArrayToTable]]&lt;br /&gt;
* [[Relational tables and multiD arrays]]&lt;br /&gt;
* [[Import and Export data]]&lt;br /&gt;
* [[Export-Import data format]]&lt;br /&gt;
* [[Flatten]]&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Convert_an_Analytica_multidimensional_array_into_an_Excel_PivotTable&amp;diff=60598</id>
		<title>Convert an Analytica multidimensional array into an Excel PivotTable</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Convert_an_Analytica_multidimensional_array_into_an_Excel_PivotTable&amp;diff=60598"/>
		<updated>2024-04-13T00:30:20Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==The Problem==&lt;br /&gt;
&lt;br /&gt;
While handling multidimensional data in Analytica presents minimal hurdles, exporting this data to alternate platforms such as Excel can prove to be less straightforward. The complexity escalates further when formatting adjustments are necessary to facilitate PivotTable transformation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The Solution==&lt;br /&gt;
&lt;br /&gt;
Using MdArrayToTable() without any optional arguments produces a single value column. This format easily ''pivots'' into an Excel pivot table and can be done in under 30 seconds.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Find the data you want to bring into Excel&lt;br /&gt;
:[[File:MultiD_Pivot_Image_1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Create a new node to flatten your data. In the definition, call MdArrayToTable() and include your data as an argument. For above example this would look like MdArrayToTable(Travel_Costs)&lt;br /&gt;
:[[File:MultiD_Pivot_Image_2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) In your new object window, click in the top left gray box to highlight everything. Then, either right-click and press “Copy” or press CTRL+C&lt;br /&gt;
:[[File:MultiD_Pivot_Image_3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Paste the data into Excel&lt;br /&gt;
:[[File:MultiD_Pivot_Image_4.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) With the data still highlighted, navigate to the ribbon (top row), select “Insert,” and then select “PivotTable”&lt;br /&gt;
:[[File:MultiD_Pivot_Image_5.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6) Keep all default PivotTable settings and select “OK”&lt;br /&gt;
:[[File:MultiD_Pivot_Image_6.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7) Select your PivotTable Fields&lt;br /&gt;
:[[File:MultiD_Pivot_Image_7.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And that's it! For more on MdArrayToTable() and related functions, see related pages below.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[MdArrayToTable]]&lt;br /&gt;
* [[Import and Export data]]&lt;br /&gt;
* [[Export-Import data format]]&lt;br /&gt;
* [[Flatten]]&lt;br /&gt;
* [[Relational tables and multiD arrays]]&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Convert_an_Analytica_multidimensional_array_into_an_Excel_PivotTable&amp;diff=60597</id>
		<title>Convert an Analytica multidimensional array into an Excel PivotTable</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Convert_an_Analytica_multidimensional_array_into_an_Excel_PivotTable&amp;diff=60597"/>
		<updated>2024-04-12T23:44:30Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==The Problem==&lt;br /&gt;
&lt;br /&gt;
While handling multidimensional data in Analytica presents minimal hurdles, exporting this data to alternate platforms such as Excel can prove to be less straightforward. The complexity escalates further when formatting adjustments are necessary to facilitate PivotTable transformation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The Solution==&lt;br /&gt;
&lt;br /&gt;
Using MdArrayToTable() without any optional arguments produces a single value column. This format easily ''pivots'' into an Excel pivot table and can be done in under 30 seconds.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Find the data you want to bring into Excel&lt;br /&gt;
:[[File:MultiD_Pivot_Image_1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Create a new node to flatten your data. In the definition, call MdArrayToTable() and include your data as an argument. For above example this would look like MdArrayToTable(Travel_Costs)&lt;br /&gt;
:[[File:MultiD_Pivot_Image_2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) In your new object window, click in the top left gray box to highlight everything. Then, either right-click and press “Copy” or press CTRL+C&lt;br /&gt;
:[[File:MultiD_Pivot_Image_3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Paste the data into Excel&lt;br /&gt;
:[[File:MultiD_Pivot_Image_4.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) With the data still highlighted, navigate to the ribbon (top row), select “Insert,” and then select “PivotTable”&lt;br /&gt;
:[[File:MultiD_Pivot_Image_5.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6) Keep all default PivotTable settings and select “OK”&lt;br /&gt;
:[[File:MultiD_Pivot_Image_6.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7) Select your PivotTable Fields&lt;br /&gt;
:[[File:MultiD_Pivot_Image_7.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And that's it!&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Convert_an_Analytica_multidimensional_array_into_an_Excel_PivotTable&amp;diff=60596</id>
		<title>Convert an Analytica multidimensional array into an Excel PivotTable</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Convert_an_Analytica_multidimensional_array_into_an_Excel_PivotTable&amp;diff=60596"/>
		<updated>2024-04-12T23:44:05Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==The Problem==&lt;br /&gt;
&lt;br /&gt;
While handling multidimensional data in Analytica presents minimal hurdles, exporting this data to alternate platforms such as Excel can prove to be less straightforward. The complexity escalates further when formatting adjustments are necessary to facilitate PivotTable transformation.&lt;br /&gt;
&lt;br /&gt;
==The Solution==&lt;br /&gt;
&lt;br /&gt;
Using MdArrayToTable() without any optional arguments produces a single value column. This format easily ''pivots'' into an Excel pivot table and can be done in under 30 seconds.&lt;br /&gt;
&lt;br /&gt;
1) Find the data you want to bring into Excel&lt;br /&gt;
:[[File:MultiD_Pivot_Image_1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Create a new node to flatten your data. In the definition, call MdArrayToTable() and include your data as an argument. For above example this would look like MdArrayToTable(Travel_Costs)&lt;br /&gt;
:[[File:MultiD_Pivot_Image_2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) In your new object window, click in the top left gray box to highlight everything. Then, either right-click and press “Copy” or press CTRL+C&lt;br /&gt;
:[[File:MultiD_Pivot_Image_3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Paste the data into Excel&lt;br /&gt;
:[[File:MultiD_Pivot_Image_4.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) With the data still highlighted, navigate to the ribbon (top row), select “Insert,” and then select “PivotTable”&lt;br /&gt;
:[[File:MultiD_Pivot_Image_5.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6) Keep all default PivotTable settings and select “OK”&lt;br /&gt;
:[[File:MultiD_Pivot_Image_6.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7) Select your PivotTable Fields&lt;br /&gt;
:[[File:MultiD_Pivot_Image_7.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And that's it!&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Convert_an_Analytica_multidimensional_array_into_an_Excel_PivotTable&amp;diff=60595</id>
		<title>Convert an Analytica multidimensional array into an Excel PivotTable</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Convert_an_Analytica_multidimensional_array_into_an_Excel_PivotTable&amp;diff=60595"/>
		<updated>2024-04-12T23:43:52Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: Spacing + changed humor comment from bold to italicize&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; ==The Problem==&lt;br /&gt;
&lt;br /&gt;
While handling multidimensional data in Analytica presents minimal hurdles, exporting this data to alternate platforms such as Excel can prove to be less straightforward. The complexity escalates further when formatting adjustments are necessary to facilitate PivotTable transformation.&lt;br /&gt;
&lt;br /&gt;
==The Solution==&lt;br /&gt;
&lt;br /&gt;
Using MdArrayToTable() without any optional arguments produces a single value column. This format easily ''pivots'' into an Excel pivot table and can be done in under 30 seconds.&lt;br /&gt;
&lt;br /&gt;
1) Find the data you want to bring into Excel&lt;br /&gt;
:[[File:MultiD_Pivot_Image_1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Create a new node to flatten your data. In the definition, call MdArrayToTable() and include your data as an argument. For above example this would look like MdArrayToTable(Travel_Costs)&lt;br /&gt;
:[[File:MultiD_Pivot_Image_2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) In your new object window, click in the top left gray box to highlight everything. Then, either right-click and press “Copy” or press CTRL+C&lt;br /&gt;
:[[File:MultiD_Pivot_Image_3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Paste the data into Excel&lt;br /&gt;
:[[File:MultiD_Pivot_Image_4.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) With the data still highlighted, navigate to the ribbon (top row), select “Insert,” and then select “PivotTable”&lt;br /&gt;
:[[File:MultiD_Pivot_Image_5.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6) Keep all default PivotTable settings and select “OK”&lt;br /&gt;
:[[File:MultiD_Pivot_Image_6.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7) Select your PivotTable Fields&lt;br /&gt;
:[[File:MultiD_Pivot_Image_7.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And that's it!&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=File:MultiD_Pivot_Image_7.png&amp;diff=60594</id>
		<title>File:MultiD Pivot Image 7.png</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=File:MultiD_Pivot_Image_7.png&amp;diff=60594"/>
		<updated>2024-04-12T23:42:16Z</updated>

		<summary type="html">&lt;p&gt;BFilstrup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>BFilstrup</name></author>
	</entry>
</feed>