RefMan
The central idea behind MeqTrees is that arbitrary mathematical expressions can be implemented as trees (graphs, really) of software nodes, each of which has zero or more child nodes. The main function of a node is to return a Result upon receiving a Request. The latter specifies an n-dimensional grid of points (a.k.a. the Cells of the Domain) for which values are required. By default, a Domain is a rectangular area in freq-time space, but any number of dimensions can be specified. Whenever a node receives a Request, it passes it on to its children (if any), and waits for their Results. According to its function (e.g. Add), the node then combines its child Results into a Result of its own, and returns it.
Nodes with zero children are called "leaf nodes", which have their own ways to calculate a Result. A very important leaf node is the MeqParm, which represents a parameter of the expression. A MeqParm has access to zero or more "Funklets", usually stored in a table. By default, a Funklet is a Polc, a 2D array of polynomial coefficients that can be used to calculate values for arbitrary points in its "validity domain". Other types of Funklets are also supported. A very important function of MeqTrees is to solve for the Funklet coefficients of an arbitrary set of MeqParms.
Each node has an internal state record. Some of its control fields may be defined when the node is created, or dynamically during execution. The state record of every node may be inspected with the MeqBrowser.
A node may have multiple parent nodes, which may issue it with the same Request. Therefore, its state record includes a cache that may hold the last Result until a different Request comes in. This behaviour may be tuned.
Trees are generated by means of the Tree Definition Language ./TDL. An older version of this manual can be found in .
- The one-page list of .AvailableNodeClasses is a small Reference Manual on its own
- .NodeBehaviour describes the detailed behaviour of a general node, and its state record.
- .IssuedRequests describe the structure and generation of Requests issued to nodes
- .NodeResults describe the contents of Results returned by nodes
- .TensorNodes describe non-scalar nodes (results, really)
- .ChangingDimensions discusses various ways to modify Result and/or Request dimensions
- .CellFlagging explains the use of Result cell flags, and available flagging nodes
- .LeafNodes gives an overview of the various types of nodes with zero children
- .MathExpressions discusses ways to implement more complex math expressions
- .PyNodes use a user-defined Python script to calculate a Result from its child Results
- .MeqParms describes parameter nodes and their manipulation
- .SolvingLeastSquares discusses solving
- .OtherSolvers discusses other solving methods (not yet implemented)
- .MsInterface discusses the interface with the AIPS++ Measurement Set
- .ImageInterface discusses the interface with (FITS) images
- .ResultVisualisation discusses the various ways to visualize node Results
- .DiagnosticNodes monitor the behaviour of a tree in various ways
- .ForestStateRecord (belongs in MeqBrowser?) RefManTemplate