Gene and regulator input files can be formatted as [simple lists](ListFile).
However, to represent subclustering in a tree structure, XML can be used.
The parent element is `ModuleNetwork`, it's children being `Module`s with an `id` attribute and an optional `name` attribute.
A module has a `GeneTree` which contains a tree structure of `Child` elements, either with `node` attribute set to `internal` or `leaf`.
Each child has an ordered set of `Gene` elements. A gene has a `name` attribute and an optional `alias` (symbolic name). Symbolic names could also be loaded from a simple mapping file at a later stage.
Regulator data is formatted in a similar way, but uses `RegulatorTree` elements instead of `GeneTree`.
Don't forget the XML declaration at the beginning of the file, to tell ModuleViewer the XML-parser should be used.
Example:
```
<?xml version='1.0' encoding='iso-8859-1'?>
<ModuleNetwork>
<Moduleid="76"name="Cluster 76">
<GeneTree>
<Childnode="leaf">
<Genename="YHR148W"alias="IMP3"/>
<Genename="YDR184C"alias="ATC1"/>
<Genename="YLR146C"alias="SPE4"/>
<Genename="YCR035C"alias="RRP43"/>
<Genename="YJR041C"alias="URB2"/>
<Genename="YKL014C"alias="URB1"/>
<Genename="YMR229C"alias="RRP5"/>
<Genename="YPR060C"alias="ARO7"/>
</Child>
</GeneTree>
</Module>
<Moduleid="24"name="YMR292W">
<GeneTree>
<Childnode="internal">
<Childnode="leaf">
<Genename="YJL091C"alias="GWT1"/>
</Child>
<Childnode="internal">
<Childnode="leaf">
<Genename="YDR222W"/>
</Child>
<Childnode="leaf">
<Genename="YMR076C"alias="PDS5"/>
<Genename="YBL003C"alias="HTA2"/>
<Genename="YPR119W"alias="CLB2"/>
<Genename="YPL279C"/>
<Genename="YDR097C"alias="MSH6"/>
<Genename="YLR068W"alias="FYV7"/>
<Genename="YML052W"alias="SUR7"/>
<Genename="YPL227C"alias="ALG5"/>
<Genename="YAL059W"alias="ECM1"/>
<Genename="YLR049C"/>
<Genename="YIL158W"alias="AIM20"/>
<Genename="YDR302W"alias="GPI11"/>
</Child>
</Child>
</Child>
</GeneTree>
</Module>
</ModuleNetwork>
```
For "horizontal" subclustering (arranging a subset of conditions into a tree structure), one can use the `ConditionTree`.
For this data, an extra element `NonTreeConditions` is introduced, to enable the user to place some conditions outside of the tree structure.
The children of `Child` elements (and of `NonTreeConditions`) here are not `Gene` but `Condition`. Conditions ids are referencing to the position of
the conditions in the original expression data matrix.