.. index:: Data Files

.. _Data_Files:

Data Files
==========

The HUGIN Graphical User Interface supports saving and loading of data files. A data file contains a set of cases as this

.. figure:: images/datafiles.png

	Figure 1: A sample data file.

.. figure:: images/datafiles1.png

	Figure 2: Another sample data file.

As indicated in Figure 1, the first line is the name of the nodes as in the network whereas each of the following lines specify a case in which each variable is assigned a value, i.e., a set of observations with one observation for each node. An observation may missing in a case. A missing value is specified using N/A.

Notice that the first line of the data file always contains the names of a (subset) of the nodes in the network. It is important to specify the name and not the label of nodes. The name is a unique identifier for each node. Thus, the data file in Figure 1 assumes that the network has nodes with names E, T, L, S, A , D, B and X. This could be the node names of the network shown in Figure 3 (where node labels are shown in the nodes.)

.. figure:: images/asia.png

	Figure 3: Bayesian-network representation of "Chest Clinic".

See also notes on data files for :ref:`OOBN EM<OOBN_EM_Learning>`.

The format of a data file can be described by the following grammar:
--------------------------------------------------------------------

::

	<Data file> ::= <Header> <Case>* 
	<Header> ::= # <Separator> <Node list> | <Node list> 
	<Separator> ::= , | <Empty> 
	<Node list> ::= <Node name> | <Node list> <Separator> <Node name> 
	<Case> ::= <Case count> <Separator> <Data list> | <Data list> 
	<Case count> ::= <Nonnegative real number> 
	<Data list> ::= <Data> | <Data list> <Separator> <Data> 
	<Data> ::= <Value> | N/A | <Empty> 
	<Value> ::= <State index> | <Label> | <Real number> | true | false 
	<State index> ::= #<Integer>


**Where:**


* **The <Header>** must occupy a single line in the file. Likewise, each <Case> must occupy a single line.
* **If #** is the first element of <Header>, then each <Case> must include a <Case count>.
* **Each <Case>** must contain a <Data> item for each node specified in the <Header>. The ith <Data> item (if it is a <Value>) in the <Data list> must be valid for the ith node in the <Node list> of the <Header>.
* **If <Data>** is \*, ?, or <Empty>, then the data is taken as 'missing'.
* **If <Separator>** is <Empty>, then none of the separated items is allowed to be <Empty>.
* **<Value>** is as defined in Section 8.8, with the exception that <Likelihood> is not allowed.
* **<Real number>** is a valid specification for CG, numbered, and interval nodes. For numbered and interval nodes, the acceptable values are defined by the state values of the named node.
* **<Label>** is a valid specification for labeled nodes. The label (a doublequoted string) must match a unique state label of the named node. Quotes can be omitted if the label is a single word.
* ***true* and *false*** are valid specifications for boolean nodes.