Every node has the following fields self: my index parents: the indices of my parents type: a string from { input, gaussian, logistic, noisyfn, noisyor, softmax, tabular } adjustable: 0 if the nodes params are clamped, 1 otherwise nparams: num. free params in this node num_samples: num. samples that have been seen by this node since the last reset_ess In addition, each node has type-specific fields which store its parameters, sufficient statistics, etc. Every node type supports the methods in the node directory. In addition, each node has a constructor, of the form mk_xxx_node, and may have type-specific methods. The constructor only takes arguments that must be specified by the user. The numerical parameters of the node will be set randomly. (Use rand('state', seed) before calling to control the random param. values.) The params can, of course, subsequently be set to the desired values by directly changing the appropriate field(s). (Remember to call compile_params after they have been changed.)