The ESI Spectrograph Online Documentation

A Key to Interpreting Meme Flow Diagrams


The first question that may come to mind when you look at the ESI software schematic drawings is "What do all those coded labels mean?" It's pretty obvious at first glance that something is passing between, e.g. the dispatcher and traffic, but the terse edge labels are hard to read until you know the key.

These drawings are a kind of network graph called a digraph, or directed graph, or directed acyclic graph. They consist of Nodes and Edges. Nodes are shapes which are connected by lines (Edges). Because these are directed graphs, the edges have arrows indicating the direction of "flow" from one node to the next.

We use the conventions of the digraph to indicate the passage of information from one "agent" to another in the ESI control system. For example, an Observer or OA might run the "esi startup" script, which inherits some environment from the login session and then starts some processes (which in turn inherit environment from the startup script). We would say that some information (memes) travels from the startup script to the process being started, in the form of environment variables. Or perhaps in the form of command line arguments. Or in the form of a config file. But the information originates somewhere and is sent to "someone" to be used. It passes, in other words, from one agent to another.

Several graphical qualities are meaningful in these drawings. The shapes of the nodes are meaningful: they tell you which kind of agent the node represents. The direction of the arrows is meaningful: it tells you which direction the information is passing. Large rectangles enclosing areas of the drawing are meaningful: they indicate compound or complex agents, like a host with multiple services running on it. And of course, all the labels and text are meaningful.

Shapes of Nodes = Types of Agents
Hexagon
a Daemon (process that runs in the background)
Inverted Triangle
a Tool (an application, whether command-line or GUI, that is run directly by a user and receives subsequent input from that user)
Diamond
a Command (strictly a single command from the command-line)
Egg
a Person (a human being)
Rectangle
a piece of Hardware, or a more abstract concept like a Feature or a Compound agent (a "super-agent").
Ellipse
a Repository, that is, a sink of information such as a tape archive, a disk archive, a CVS server
House
a Shareable Object Library
Direction of Arrows = Direction of information flow
Information is flowing FROM the agent at the end of the arrow without the arrowhead, and TO the agent at the end with the arrowhead.
Large Enclosing Rectangles = Super Agents
These indicate complex "super-agents" which themselves contain other agents and paths. A host where several Tools or Daemons run is an obvious example.
Node Labels = Agent Names
Each node is labelled with the agent name. These are the same names by which the agents are known in the Agents Brick.
Edge Labels
Edge labels have a fixed . They are generally three lines in length, the first line being of the form XX:XX:XX, the second a name of some kind, and the last another name in parentheses.

XX:XX:XX is a formatted representation of three attributes of a path or edge: Format:Medium:Timing. Every transfer of information takes place over a certain Medium, in a certain Format, and on a certain Timing. Typical timing codes are "ER" (end of readout), "OD" (on demand) and so forth. A list of these codes is provided below.

The Name of a path or edge is the name of the Meme (from the Memes database) that is travelling along it. It might be as simple as a single keyword, or as complex as an entire FITS header. Consult the Memes Brick and related documents for detailed information about these memes.

The last line is the Controller agent's name. Obviously, one agent is the Sender. The other is the Receiver. But it is possible that neither of them really controls the Timing of this event. If a third party controls the timing, then its name appears in parentheses on the third line of the path label.


Here are the translations of the Format, Medium, and Timing codes for our diagrams. Note that these values are stored in the Memes database, so this static copy may not quite match the current contents. It should be at least 95 percent accurate, however.

FORMATS

100    100Base-T ethernet   
102    10Base-2 ethernet    
10T    10Base-T ethernet    
192    19200 baud serial    
4M     4 Mb/s optical pulse 
50M    50 Mb/s optical puls 
ANA    Analog Signal        
BAR    Barcode              
BD     binary data          
C      C source             
DB     database table       
DIG    Digital Signal       
dot    dot source           
DX     DXF Mill File        
FF     FITS file            
FI     FITS Image           
FOR    FORTRAN source       
FT     FITS table           
GAL    Galil command        
Gra    Graphical Representa 
HT     HTML source          
IM     raw image data       
IP     data in IP packets   
KTR    KTL read             
KTW    KTL write            
KV     keyword/value data   
LT     LaTeX                
MIL    Milled Surface       
MUG    MUSIC get            
MUP    MUSIC put            
NC     NC Mill G/M codes    
PS     PostScript           
SC     source code          
SQI    SQL Insert           
SQL    SQL source           
SQS    SQL Select           
SQU    SQL Update           
SQW    SQL Write            
Tcl    Tcl source           
TX     ASCII plain text     
VID    Video signal         
XI     X11 image            
XP     X11 Property         

MEDIA

ARG   CommandLine Argument 
CT5   Category 5 twisted p 
DF    Disk File            
EM    E-Mail               
ENV   Environment Variable 
F62   62.5 um optical fibe 
FD    Floppy Diskette      
HTG   HTTP Get             
HTP   HTTP Post            
KE    User Key Entry       
KTL   KTl service (traffic 
LPD   Berkeley lpd         
MB    Message Bus (RTD/PIE 
MC    Multicast (UDP?)     
MP    Manual Portage       
MT    MagTape              
MUS   Music message        
PAP   Paper Output         
PC    Procedure Call       
R58   RG-58 A/U coax       
RD    Raw Disk             
RS    Serial Connection    
SD    Screen Display       
SHM   Shared Memory        
SM    SlitMask             
SOC   socket connection    
SQL   Database Query       
TCP   TCP Connection       
UDP   UDP Packets          
WIR   Wire (metallic condu 
X11   X11 Protocol         

TIMING

ASM        At time of assembly  
CJ         Cron Job             
DLD        Agent dynamically linked
EE         End of Exposure      
ER         End of CCD Readout   
FI         Fixed Interval       
NOC        Notify on Change     
OD         On Demand            
RO         During CCD Readout   
RUN        Agent Starts Agent   
SD         Instrument Shutdown  
SE         Start of Exposure    
SU         Instrument Startup   


The Observer documents are hand-written. The Technical Documents are produced from plain text files in the CVS source tree by some Tcl scripts written at UCO/Lick Observatory. The Reference Documents are mostly generated by software from data in a relational database. Individual authors are responsible for the content of the Observer and Technical Documentation. The Lick SPG as a whole is responsible for the content of the Reference doco. Send mail to de@ucolick.org to report inconsistencies or errors in the documentation.