SHA / SSSC Processing Modules
The links below provide samples of the functioning of a CGI-based driver
for SHA/SSSC strategy modules that is under development.
The sample modules are mostly versions of public and private ones
already written, taken from
~CM/src/modules, ~CM/src/examples, and ~rick/src.
The only changes made specifically in support of the web-browser driver
are the additions of comments in the formerly-unused string field for
arg->maxvalid in the arguments lists (see
Modules from ~CM/src/modules are in fact compiled directly from links
to the production sources.
All features of the driver should be active, but please see the notes below!
Test & Sample Modules
does nothing at all; a simplified version of module noop with only an
input argument; useful for staging data
echos back the value of its single string-type argument
just echoes the argument values as received by the module, with all supported
argument types; an extended version of module noop
echoes all the data values from a FITS file in order with their coordinates
(from ~rick/src): constructs a FITS file of up to three dimensions
and desired size filled with a constant value.
(from ~rick/src/carrington_grid): constructs a 1024×1024 FITS
file containing an image of an orthographic projection in which locations
``on'' (near) and off certain Carrington grid lines and within and beyond
a selected circular region are assigned different numerical values.
(from ~rick/src): form a time series of the integrated pixel values
within a selected rectangular region of an image data series.
(from ~rick/src): average the pixel values along a selected axis
within a selected hyper-rectangular region of a data series.
This is a fancier version of ~CM/examples/per_image that includes
the full flow control of track_region, but without the actual mappings,
that I am using for testing.
A copy of module limb_figure for testing.
(from ~rick/src): list values of header records from online rdb files
(based on module ptplot).
(from ~rick/src): generate a graphical display of quality flag bit
values for a selected observable for the given time interval.
(from ~rick/src): integrate functions of 96-muinute magnetogram values
in selected mapped windows.
(from ~rick/src): differnce two images and print summary statistics
(from ~rick/src): print out selected records from an obslog.
(from ~rick/src): skeletons and prototypes of functions to do queries
based on obslog entries.
(from ~rick/src): adjust the number of bits per pixel in a data set.
- obsel_close - find times of
1-minute and 5-minute magnetograms within selected time separations of
- obsel_cont - find time intervals
for which coverage of full-disc Dopplergrams exceeds selected threshold for
- obsel_holes - find time intervals
for which there are no data of any kind (or holes in the obslog that need
to be filled!)
Known Bugs and Limitations
- All processes started by the httpd run as network user nobody
(UID 60001) with corresponding access permissions and umask (usually 022);
files can only be created in directories to which this UID has write
permission, and will be owned by nobody. There is no default
directory for this UID, so path names must be rooted.
- If no pvmd is running for user nobody at the time a pe is
started, the command goes into an endless wait state and has to be
stopped from the browser. Once it is stopped the pvm will be running
and the request can be reposted.
- The host machine option does not function properly;
it is impossible for the network user to connect with a pvm daemon on
a remote machine. Thus, all pe's most be run locally (the default).
- The httpd process is running on rick, which does not customarily
mount the /PDS partitions of the DSDS cache. Unless the appropriate partition
happens to be mounted it is not possible to use DSDS input or archiving
in a pe.
- In any case, archiving to the DSDS is not currently possible because
write permission to the /PDS partitions requires membership in group
soi, and nobody is not a member of that group. (That is correct
- No output or notification page is seen until the process has completed.
- Until the bug reported in SSTR 62 is fixed, modules with long (65 char+)
argument descriptions in the arg->maxvalid field cannot be run in
- Arguments of type ARG_FLAG are binary-valued (0 or -1), rather than
ternary-valued (0, ±1) as in the command-line interface..
- pe's can't open the pe kill log file.
- The ARG_FILEPTR type for arguments, which is deprecated, is not
- The default names for the history and errlog files
are pecgi_history and pecgi_logfile respectively; these
go into the output dataset if one is created by a pe. The defaults can of
course be overridden.
- The current working directory for executing modules (not pe's) is the
cgi-bin directory of the host machine; modules that specify . or
`pwd` as the path for files will probably not be able to find or
create those files.
- On the bright side, the CGI interface fixes a minor bug in the command
line interface, that the decision not to pass a default argument value
string "Not Specified" to the mapfile is case sensitive.