/**
\page settingsSection Settings Window
\brief An overview of the options available in the Settings Window
\tableofcontents
The DiFX GUI has a fairly large number of configurable settings that
can be used to tailor its appearance and functionality to a
particular purpose. All settings are saved to files when the
GUI is shut down (or when the user requests it) to maintain
consistency between sessions. Some settings, such as window
sizes, are "invisible" in that the way to change them is to actually
do something, like change the size of a window. Most, however,
are collected in the System Settings Window where they are organized
into sections based on their function:
- \ref settingsFile "Settings File" - controls the XML
files used to store settings between sessions. Also lets you set the GUI
title.
- \ref difxControlConnection "DiFX Control Connection"- used to set up
the TCP connection between the GUI and guiServer (and DiFX).
- \ref difxMessageTraffic "DiFX Message Traffic" - controls which
messages are sent to/from DiFX.
- \ref jobCreationSettings "Job Creation Settings" - controls how
.vex files are used to create experiments.
- \ref jobProcessingSettings "Job Processing Settings" - used
to control how jobs are processed and how scheduled jobs are
run.
- \ref databaseConfiguration "Database Configuration" - governs the
use and configuration of a database for tracking
DiFX jobs.
- \ref settingsEOPSettings "EOP Settings" - controls where and
how EOP data are obtained.
- \ref documentationLocations "Documentation Locations" - used to
set the location of items available through the "Help"
menu button.
\section settingsFile The Settings File
When the GUI is started it attempts to read an XML file
containing settings for all GUI parameters, window configurations,
etc. This file can either be specified as the first command
line argument when starting the GUI or a default file will be used
(the default file is "conf/guiSettings.xml" under the directory
specified by the environment variable "DIFXROOT", or, failing
that, the user's directory). Failing to read either a
specified file or the default file will cause internal default
settings to be used which may or may not be attractive. When
the GUI is exited the default XML file is written to reflect the
GUI's current state such that it can be started again in the
future essentially unchanged from where it was left.
Failures to read or write files will generate pop-up warnings, but
won't terminate the GUI's operation.
The Settings File section of the Settings Window can be used to
pick a new XML file name for reading or writing. This can be
useful if you want to save a specific GUI state for later use or
load a previously saved state:
\image html settings_SettingsFile.png
\subsection settingsFileItems Settings File Components
- \ref settingsFileCurrent "Current"
- \ref settingsFileOpen "Open"
- \ref settingsFileSave "Save"
- \ref settingsFileSaveAs "Save As..."
- \ref settingsFileDefaults "Defaults"
- \ref settingsFileGUITitle "GUI Title"
\anchor settingsFileCurrent
Current
This field shows the full path to the XML file that was most
recently read, either a user-specified file or the
default. If this field is in red it indicates that the
last read attempt failed for some reason and that whatever
settings that existed previously are still in place.
\anchor settingsFileOpen
Open
Open can be used to open an existing XML file that contains GUI
settings. A file browser will allow the file to be picked. When the file
is opened, the settings it contains will be applied.
\anchor settingsFileSave
Save
Save causes the current GUI settings to be written to the XML
path in the "Current" field.
\anchor settingsFileSaveAs
Save As...
This button produces a file browser from which a path for the
XML file can be picked. The XML file is written using the
current settings.
\anchor settingsFileDefaults
Defaults
The Defaults button will restore the GUI to internal defaults
(not the default XML file settings).
\anchor settingsFileGUITitle
GUI Title
The GUI Title is a simple text string that can be used to
uniquely identify a settings configuration. The title will
be applied to the top-level GUI window.
\section difxControlConnection DiFX Control Connection
The DiFX Control Connection settings determine how the GUI
communicates with and controls DiFX. In normal operation the
GUI makes a TCP connection with the guiServer process running on the DiFX "Host"
node. To complicate matters however, there are actually
three ways the GUI and DiFX can interact (the latter two of these are essentially
historical, although they are maintained in the event they might still be of use
and because they don't currently break anything):
- The TCP connection between the GUI and guiServer is used for all
controls and data exchanges. DiFX multicast message
traffic is collected by guiServer
and relayed over the TCP socket to the GUI (for more information
about message traffic, see the \ref difxMulticastMessages "DiFX
Multicast Messages" section below). This
configuration must be used when the GUI is running outside the
DiFX LAN, such that the multicast messages cannot be received
directly. It is far and away the most tested
configuration, and should be used if possible.
- The TCP connection between the GUI and guiServer is used for
controls and all data from guiServer
itself, however DiFX multicast messages are received directly
using a UDP socket. Under some circumstances this could be
the preferred arrangement when the GUI is running on the DiFX
LAN where multicast messages are received as it reduces guiServer
network traffic and allows the GUI to monitor things even if guiServer
is for some reason lost.
- No connection is made to guiServer. The GUI
receives DiFX multicast messages directly using a UDP socket,
essentially acting as a monitor of DiFX activity. The GUI
can also issue some commands directly to DiFX using its own
multicast messages, but the command set available is limited and
in the long run this capability will not be supported.
The DiFX Control Connection panel includes settings that will
determine in which of the above modes your GUI will interact with
DiFX, as well as port and version specifications. Details
about each control/display item are outlined below.
\image html settings_DifxControlConnection.png
\subsection difxControlConnectionComponents DiFX Control Connection Components
- \ref multicastCheckbox "Multicast/guiServer Check Boxes"
- \ref guiServerConnectionLight "guiServer Connection Light"
- \ref channelAllData "Channel All Data"
- \ref difxHost "DiFX Host"
- \ref controlPort "Control Port"
- \ref transferPort "Transfer Port and Max Open Ports"
- \ref monitorHost "Monitor Host and Port"
- \ref guiServerVersion "guiServer Version"
- \ref guiVersion "GUI Version"
- \ref hostEnvironmentVars "Host Environment Vars"
- \ref usernameSetting "Username"
- \ref difxBaseSetting "DiFX Base"
- \ref runWithDifxVersion "Run w/DiFX Version"
- \ref useDefaultStartScript "Use Default Start Script"
- \ref difxExecuteScript "DiFX Execute Script"
\anchor multicastCheckbox
Multicast/guiServer Check Boxes
These check boxes determine how the GUI communicates with DiFX,
either through direct multicast messaging (unsupported,
incomplete, and unlikely to work very well) or via direct TCP
connection to guiServer (preferred, obviously). You
will almost always want to use the guiServer option - the
Multicast option exists for historical reasons and is maintained
because it has some utility in testing. By default the guiServer
option is checked.
\anchor guiServerConnectionLight
guiServer Connection Light
The guiServer Connection light gives an immediate indication
whether a healthy TCP connection exists between the GUI and guiServer.
A green light means a good connection. Red means a broken
connection. A yellow light occurs when the GUI has some
concern about the connection (these usually turn red quickly) or
that a connection is in the process of being made (these usually
turn green quickly).
\anchor channelAllData
Channel All Data
The GUI/guiServer does not necessarily use a single socket for
communication. Many activities, including creating/running jobs, examining
directory structures on the correlator, and even tab completion for many GUI
text fields, require opening new sockets. The port numbers for
these sockets are all within a specific range, which you can control (see
\ref transferPortAndMaxOpen "Transfer Port and Max Open Ports"), so in theory
you could set up tunnels for all of them. Instead, the GUI allows you to "channel"
all of these exchanges through a single, tunnelled primary connection by checking
this box. The GUI and guiServer
handle the organization of packets on either side of the connection
so the change should be seamless, and all activities that normally
require independent sockets should act normally. This arrangement has
reassuringly little impact on the performance of the single
connection socket.
\anchor difxHost
DiFX Host
This is the hostname of the node on which guiServer is
running, or will run. Changes to this field will trigger a
reconnection attempt for the TCP link between the GUI and guiServer
(the GUI will continue to try to make the connection until it
works). This name should be recognizable by the nameserver on
the host where you are running the GUI (you can also use IP
addresses in this field).
\anchor controlPort
Control Port
This is the port for TCP control communications between the GUI and
guiServer. Its default value it is the same as the Port
setting under Broadcast Network (50200), but this similarity is of
no significance (and, in hindsight, is purposelessly
confusing). Changes to the control port will cause a new TCP
connection attempt. When you start guiServer, it
reports the port number where it expects connections - that is what
you should use here.
\anchor transferPort
Transfer Port and Max Open Ports
Note that Transfer Port and Max Open Ports are ignored if
\ref channelAllData "Channel All Data" is checked.
The Transfer Port and Max Open Ports
determine the port numbers that will be used to transmit data from
guiServer to the GUI. The GUI often has cause to
request sets of data from the guiServer - the contents of
files, directory listings, etc. - that are then transmitted using
quick TCP connections that are opened as necessary and closed when
no longer needed. Whenever such a request is made it is
accompanied by a unique port number that is then used by guiServer
for the data transfer. The Transfer Port number specified
here is a "base" number that is used to form the unique port
numbers - port numbers increment from this base up to (Transfer
Port + Max Open Ports), and then recycle at the Transfer Port
number. Locking mechanisms assure that port numbers aren't
reused until they have been closed.
The user probably doesn't need to worry about these numbers much,
except to make sure there are no port restrictions that apply to
the range defined, and that the range is big enough. If file
transfers appear to be slow (pop-up monitors of file transfers
will let you know this) or to occasionally stall completely it is
possible that increasing Max Open Ports will help you, although it
is critical that Max Open Ports not be changed when any ports
are in use.
\anchor monitorHost
Monitor Host and Port
The Monitor Host and Port are used to specify the connection to
the difx_monitor server. This is a process that
provides real-time data feedback that can be used to monitor a
running job. The documentation on the \ref realtimeMonitor "Real Time Job Monitor" has more
detail about this.
\anchor guiServerVersion
guiServer Version
The "guiServer Version" is the version of the DiFX software that
was used to build guiServer. GuiServer
depends on a number of DiFX header files and libraries (primarily
for file parsing) when it builds so in a perfect world it would
match the the
\ref builtWithDifx "version of the GUI itself" to assure
that they are compatible. However this is not, in general,
critical, as the file parsing libraries a fairly stable (and
almost always backward compatible) between DiFX versions.
There is no need for the guiServer Version to match the
\ref runWithDifxVersion "DiFX version used to run correlator
operations".
This is not a field the user can change - it is reported by guiServer
when a new TCP connection is made.
\anchor guiVersion
GUI Version
This field shows the version of the DiFX software that was used
to build the GUI. This field cannot be changed by the
user. It will be filled automatically when a TCP connection
is made.
\anchor hostEnvironmentVars
Host Environment Vars
The "Host Environment Vars" button creates a display of DiFX Host
environment variables as seen by guiServer:
All environment variables regardless of their
applicability can be displayed, or only those that apply to DiFX
may be selected (at the moment this distinction is determined
rather simplistically - by whether or not "DIFX" is the first four
characters in the variable name, but this capability may be made
more sophisticated in the future). The settings of
environment variables can be used to determine how several GUI
options should be set.
\anchor usernameSetting
Username
This field shows the name of the user under which guiServer
was started. All DiFX processes that guiServer starts
will also be run under this user (which means the username must have
permission to do so on the host running guiServer).
This is not a user-settable field.
\anchor difxBaseSetting
DiFX Base
The "DiFX Base" is a path on the DiFX host under which the DiFX
software resides. The DiFX Base is actually just one of the
environment variables (see above) found on the DiFX host.
Below this directory will be bin and source
directories for each installed DiFX version. The DiFX Base
is reported when a connection is made to guiServer - the
field is not user-settable.
\anchor runWithDifxVersion
Run w/DiFX Version
The GUI does a number of things, such as organizing jobs and
creating/administering job data directories. But primarily
its purpose is to run DiFX, which it does for the most part by
executing DiFX applications on the DiFX host through system level
commands (equivalent to command line operations). The "Run
w/DiFX Version" setting can be used to instruct guiServer
to use a specific version of the DiFX application. A
pull-down menu will provide all of the DiFX software versions
installed on the DiFX host.
Note that this setting can be changed at any time during
the process of running a job, such that you can run some DiFX
applications using one version of DiFX, and others using
another. For instance, if you want to use the latest
development version of the software to run mpifxcorr, but
know that your data require vex2difx from version 2.1, and
you know what you are doing, you can change this setting at
different stages in the process accordingly. All of which is not to
say this is recommended behavior.
\anchor useDefaultStartScript
Use Default Start Script
Use the chosen DiFX Version name to produce a default value for
the DiFX Execute Script by appending the version name to
"rungeneric.". This will cause the DiFX Execute Script to be
over-written.
\anchor difxExecuteScript
DiFX Execute Script
The DiFX Execute Script is a script used by guiServer to execute all
DiFX commands (both those run locally on the DiFX host and via mpirun
on other nodes). The execute script can be used to do any set
up or environment variable definition that must take place for DiFX
processes to run correctly. For instance, if you are running vex2difx,
which is run on the DiFX host, and you have the DiFX execute script
defined as "rungeneric.DIFX_DEVEL", guiServer will execute
the command:
rungeneric.DIFX_DEVEL vex2difx [args...]
When running mpifxcorr, which uses mpirun to run on
multiple nodes, guiServer will run the following:
mpirun [args...] rungeneric.DIFX_DEVEL mpifxcorr [more args...]
In the former case the execute script is run on the DiFX host (where
guiServer is being run) while in the latter case it is run on
each of the nodes in the cluster accessible to mpirun.
In all cases, the node involved must be able to execute the named
script.
If you do nothing, guiServer will choose "rungeneric.[DiFX
Version]" as a default name for the execute script (Walter Brisken's
difxbuild procedure will automatically create this script for
each DiFX version that it builds). You can, however, put
anything in this field that you want, including nothing at
all. The contents of the field is inserted as a string in the
commands (examples just above) before they are executed.
Note that because the script is run on each node you can actually
have a different script on each node doing different things, as long
as they all share the same name.
\section difxMessageTraffic DiFX Message Traffic
DiFX uses UDP multicast messages to periodically broadcast the
status of individual nodes and the state of running jobs -
information the user interface displays. The messages
originate (with some exceptions) from the mk5daemon process
that should be running on each node in the DiFX cluster. This
same multicast system is used by the user interface (either through
guiServer or directly) to communicate with mk5daemon
and control the components of the software correlator.
\image html settings_DifxMessageTraffic.png
\subsection difxMessageTrafficComponents DiFX Message Traffic Components
- \ref messageRelayUsingGuiserverConnection "Relay Using guiServer Connection"
- \ref messageGroupAddress "Group Address"
- \ref messagePort "Port"
- \ref messageBufferSize "Buffer Size"
- \ref messageMonitorTimeout "Monitor Timeout"
- \ref messagePacketTrafficPlot "Packet Traffic Plot"
- \ref messageSuppressUnknown "Suppress \"Unknown Message\" Warnings"
- \ref messageViewDifxMessages "View DiFX Messages"
- \ref messageRequestAll "Request All/Selected Messages"
- \ref messageIdentifyMark5 "Identify Mark5 Unit Names by Pattern"
- \ref messageInactivityWarning "Inactivity Warning/Error"
\anchor messageRelayUsingGuiserverConnection
Relay Using guiServer Connection
Being based on UDP, DiFX multicast messages will only work within a
local area network. However, if you are connecting to the guiServer to control DiFX
you should select this option to "relay" all multicast
messages through the TCP connection between the user interface and guiServer. All messages
on the DiFX subnet will then be collected by guiServer and retransmitted to
the user interface where they are parsed and displayed exactly as if
the user interface were on a LAN with the DiFX cluster. If
this "relay" option is not selected only messages received directly
via UDP will be collected - a capacity that is intact (for the time
being) for historical and (possibly) diagnostic reasons. As
the purely multicast operation of the GUI is archaic and running
with guiServer is assumed, this setting should always be
checked.
\anchor messageGroupAddress
Group Address
This address is used to identify the UDP multicast "group" that mk5daemon is using. It
should match the DIFX_MESSAGE_GROUP environment variable setting
used when starting mk5daemon
on all processing and data source nodes (run mk5daemon with the "-h" option
for details). At the moment the default value for this
environment variable, and thus the setting you should probably use
here, is "224.2.2.1". This setting has no impact if messages
are being relayed from guiServer.
\anchor messagePort
Port
The port is used for directly receiving UDP multicasts. This
should match the value of the DIFX_MESSAGE_PORT environment variable
in place when mk5daemon
was started on each node. At the moment the default value for
the environment variable, and thus this field, is 50200. This
setting has no impact if messages are being relayed from guiServer.
\anchor messageBufferSize
Buffer Size
This is the maximum size of a broadcast message, in bytes.
Probably this shouldn't be fiddled with too much - making it too
small will cause UDP messages to be incompletely read. It is a
block of memory that must be allocated for each incoming message, so
it shouldn't be huge either. 1500 appears to be a perfectly
safe value.
\anchor messageMonitorTimeout
Monitor Timeout (ms)
The timeout is the number of milliseconds that the system will wait
for an incoming broadcast message. It can be set to 0, which
means "wait forever", although this might be unhealthy (killing the
thread that reads messages will become difficult). Otherwise
it does little more than govern the update rate of the Packet
Traffic Plot (see below).
\anchor messagePacketTrafficPlot
Packet Traffic Plot
The Packet Traffic Plot shows all received DiFX messages as they are
read in real time, either via TCP from guiServer or UDP
directly. If you are receiving messages (i.e. all of the above
settings are set properly) the plot should show activity - there
should be occasional spikes as messages come in (the height of the
spikes is the size of messages relative to the Buffer Size).
If, on the other hand, you get a "flat line", your settings are
wrong, your connection to guiServer is bad, or possibly mk5daemon isn't running
anywhere visible on the DiFX cluster network.
\anchor messageSuppressUnknown
Suppress "Unknown Message" Warnings
This check box was put in place to avoid annoying error messages
during development and is largely obsolete. It will probably
be removed in the near future.
\anchor messageViewDifxMessages
View DiFX Messages
The "View DiFX Messages" button will bring up the "DiFX Message
Traffic Monitor". This window lists all (recognized) DiFX
message types that are received by the GUI (either directly via
UDP, or relayed from the guiServer), displays their "raw"
XML code, and parses them according to their type. A buffer
of messages is stored. Users can select the types of
messages they wish to see, examine any message in the buffer, and
change the buffer size. Originally created for diagnostic
purposes, this window provides a view into DiFX inter-process
communication that may be useful, or at least amusing.
\image html settings_TrafficMonitor.png
\anchor messageRequestAll
Request All/Selected Messages
Using the "Request All" or "Request Selected" check boxes, guiServer
can be instructed to relay all (default) or a selected subset of
DiFX message traffic. The selection of desired message
types can be controlled through a pop-up checklist obtained
using the "Selected Messages" button:
\image html settings_SelectedMessages.png
Selecting a subset of all message traffic may be
useful if a TCP connection appears unable to handle it
all. It can also serve some diagnostic purposes.
\anchor messageIdentifyMark5
Identify Mark5 Unit Names by Pattern
This check box and text field cause the GUI (primarily in the
Hardware Monitor Window) to determine whether multicast messages
are from Mark 5 Nodes or Processor Nodes based on machine
names. If the box is checked the machine name of the source
of each message is compared to a list of comma-separated "regular
expressions" contained in the text field. If it matches any
one of them, the message is assumed to be from a Mark 5 unit and
is sorted accordingly.
Regular expressions are extremely useful for pattern matching,
but if you haven't used them before they can be less than 100%
intuitive. There are many online resources that explain them
in excruciating detail. The default value for patterns
"mark5.*" matches the NRAO practice (duplicated at USNO) of naming
all Mark 5 machines such that they start with the five characters
"mark5", as in "mark5-101.foo.edu".
\anchor messageInactivityWarning
Inactivity Warning/Error Settings
The Hardware Monitor Window lists all processors and Mark 5
Modules on the LAN that are broadcasting mkdaemon
messages. Associated with each processor or module is an
"activity" light that turns green briefly whenever a new message
for that processor or module is received from mk5daemon
(these messages should be transmitted periodically if all is
working correctly). To alert the user when a processor or
module has not been heard from in a while, the light will
turn yellow after the "Warning" number of seconds have elapsed
with no received message. The light will turn red after the
"Error" number of seconds.
These \ref numberBoxes "Number Box"
settings let you change the number of seconds that elapse without
messages before the lights change. They should be adjusted
to what works for your installation.
\section jobCreationSettings Job Creation Settings
Job Creation Settings govern how experiments, passes, and jobs
are created using the \ref experimentEditor "Experiment Editor".
These are general settings that affect every experiment - the Experiment
Editor itself
has many settings that can be applied to individual experiments
when they are being created and also allows these general settings to be
overridden.
\image html settings_JobCreationSettings.png
\subsection jobCreationSettingsComponents Job Creation Settings Componenents
- \ref workingDirectory "Working Directory"
- \ref antennaDefaults "Antenna Defaults"
- \ref eliminateStations "Eliminate Stations With \"-1\" Code"
- \ref exciseUnusedScans "Excise Unused Scans From .vex File
\anchor workingDirectory Working Directory
The working directory is the default path where a directory
devoted to a new experiment will be created. For instance,
if the Working Directory is defined as:
\code
/home/difx/jobPath
\endcode
a new experiment with a user-assigned name (in this case the rather arbitrary "MyExperiment") will be
created in:
\code
/home/difx/jobPath/MyExperiment
\endcode
This is just the default - the actual path can be changed to
whatever the user wants in the Experiment Editor \ref experimentWorkingDirectory
"Working Directory" field.
\anchor antennaDefaults
Antenna Defaults
The Antenna Defaults button shows the "Default Source Settings
Based on Antenna" window which can be used to connect commonly
used data source locations to particular antennas based on
two-character code station names (these code names match those
that appear in .vex files). These specifications are applied
to antennas that appear in the Stations
section of the Experiment Editor and, if done properly, can
eliminate tedious and error-prone user settings.
\image html antennaDefaultsWindow.png
The controls in the window are pretty straight-forward. To
add a new specification, click the "Add" button and edit the line
that appears. To remove a specification click the "X" button
associated with it. Only one specification for each antenna
code should be used (if there are multiple specifications for an
antenna the first one in the list will probably be used,
but this is not guaranteed behavior). The first field in a
new specification should be filled in with the (upper case) two
letter code for the antenna. A pull-down list provides
choices among data source types (files, module, or network).
A text field allows path or node name specification depending on
data type (the former for "files" data, the latter for "module"
data). A check box indicates that a file path is a file
list.
The Antenna Defaults will be applied to the \ref experimentStations "Stations" section of
the Experiment Editor when a new .vex file is used. They are
not necessarily final settings - users can still change them.
\anchor wildcardsWithFileDefaults
Use of Wildcards for File Data
If the data type is "Files" and "FileList" is not
checked, the path can include wildcards that are normally used as part of the
"ls" command, such as "*" to match multiple file names.
If you store your data in predictable paths based on experiment name and/or antenna
codes, there are two
"variable" indicators specific to the Antenna Defaults Window that can make the
antenna defaults specifications more useful. The \$ANT variable
can be used in place of an antenna code - this will indicate that a specification
applies to all antennas. The same \$ANT variable used in a file or file list specification
will replace the variable with the antenna code in the path (both upper and lower case
antenna codes will be matched). Similarly, the \$EXP variable will be replaced
by the \ref experimentName "experiment name" in the path.
\anchor antennaDefaultsExamples
Examples Using The Antenna Defaults Window
In the following example, specifications are provided for the "PT" and "MK" antennas.
\image html antennaDefaultsExample1.png
The data for the PT antenna are files, and are located on the DiFX server in the path:
\code{.c}
/home/oper/TestData/pt/*
\endcode
Note the use of the wildcard - this indicates that all
files in the path will be included in the data sources.
The data for MK are files as well, but are included in a \ref experimentFileLists "File List".
A File List is a single file, so no wildcard is included. Note the "FileList" box is
checked.
If source data exists in locations based on antenna code (not uncommon at USNO), the \$ANT
variable can be used instead of explicitly defining the path. In the following example the data source files for each antenna
will be found under a common path within subdirectories named for the antenna code:
\image html antennaDefaultsExample2.png
Files for "PT" would be found in:
\code
/home/oper/TestData/pt/*
\endcode
Files for "MK" would be found in:
\code
/home/oper/TestData/mk/*
\endcode
Alternatively, file lists located in a common area could be used:
\image html antennaDefaultsExample3.png
This example would find file list files, located in the same directory, with the
following paths (assuming our example antennas PT and MK again):
\code
/home/oper/TestData/FileList_pt
/home/oper/TestData/FileList_mk
\endcode
Finally, the \$EXP variable allows your source data to be organized into paths that
include the experiment name (another common USNO practice):
\image html antennaDefaultsExample4.png
In this example, the data for an experiment named "r4771", again using the antennas
PT and MK, would be found in:
\code
/home/oper/TestData/r4771/pt/FileList
/home/oper/TestData/r4771/mk/FileList
\endcode
\anchor eliminateStations
Eliminate Stations With "-1" Code
This check box will cause the GUI to not use stations that have a
"-1" in the "code" column associated with their scan section in
the "source" .vex file. The lines associated with unused
scans are either deleted if \ref exciseScans "Excise Unused Scans from .vex File"
is checked (see below), or are commented out if it is not
checked.
\anchor eliminateStationsExamples
Examples
The following lines from the \$SCHED section of a .vex file
(note -1 in final column of station "Hb" line):
\code
scan 329-1830b;
start = 2014y329d18h30m00s;
mode = GEOSX-SX;source = 0537-441;
station = Hb : 0 sec : 60 sec : 0 ft : 1A : &ccw : -1;
station = Ke : 0 sec : 93 sec : 0 ft : 1A : &ccw : 1;
station = Ww : 0 sec : 122 sec : 0 ft : 1A : &ccw : 1;
station = Yg : 0 sec : 122 sec : 0 ft : 1A : &ccw : 1;
endscan;
\endcode
are replaced by this if \ref exciseScans "Excise Unused Scans from .vex File"
is checked:
\code
scan 329-1830b;
start = 2014y329d18h30m00s;
mode = GEOSX-SX;source = 0537-441;
station = Ke : 0 sec : 93 sec : 0 ft : 1A : &ccw : 1;
station = Ww : 0 sec : 122 sec : 0 ft : 1A : &ccw : 1;
station = Yg : 0 sec : 122 sec : 0 ft : 1A : &ccw : 1;
endscan;
\endcode
or this if it is not checked:
\code
scan 329-1830b;
start = 2014y329d18h30m00s;
mode = GEOSX-SX;source = 0537-441;
# station = Hb : 0 sec : 60 sec : 0 ft : 1A : &ccw : -1;
station = Ke : 0 sec : 93 sec : 0 ft : 1A : &ccw : 1;
station = Ww : 0 sec : 122 sec : 0 ft : 1A : &ccw : 1;
station = Yg : 0 sec : 122 sec : 0 ft : 1A : &ccw : 1;
endscan;
\endcode
Doing this duplicates behavior found in hardware
correlators. Stations removed in this manner may be restored
by hand using the \ref experimentScanStationTimeline "Scans/Station Timeline". By
default this box is checked - uncheck it if you don't want this
behavior.
\anchor exciseUnusedScans
Excise Unused Scans from .vex File
When creating a new experiment the user often eliminates scans
contained in the original .vex file. When this happens the
.v2d file must create a list of all remaining scans.
Unfortunately there is a limit to the total number of characters
that can be used to do this, and as experiments get larger and
include more scans this limit is invariably encountered. The
.v2d file can also request "all" scans in the .vex file using very
few characters. As a kludge to get around the character
limit, the unused scans are instead removed from the .vex file
altogether and the "all" request is left in the .v2d file.
The .vex file without the scans is a copy, placed in the pass
directory for the new experiment. The original "source" .vex
file is not altered.
This setting will also remove stations from scans when they have
been selectively eliminated (either using the "-1" code as
described \ref eliminateStations "above" or by
the user when creating an experiment). When the "Excise"
option is not selected, stations are commented out.
The primary motivation for this option (long scan lines in the
.v2d file) has been eliminated since its introduction, so by
default it is "off". The option has been left in place in
the event it serves some other purpose.
\section jobProcessingSettings Job Processing Settings
The Job Settings govern how individual jobs are run, both when
started directly by the user and when automatically run by the
scheduler. When applied to a job that is started individually
using the \ref jobControlWindow "Job Control Window"
these settings are simply initial "suggestions" that can be changed
by the user. Scheduled jobs, however, will implement them as
set.
\image html settings_JobProcessingSettings.png
\subsection jobProcessingSettingsComponents Job Processing Settings Components
- \ref processingHeadNode "Head Node"
- \ref processingUseHeadNode "Use Head Node in Processing"
- \ref dataSourceDefaults "Data Source Defaults"
- \ref stopJobWhenConfigFails "Stop Job When Configuration Test Fails"
- \ref processingNodesPerDataSource "Unique Node per Data Source"
- \ref processingAssignBasedOnPath "Assign Based on Path"
- \ref processingShareDataNodesWithProcessing "Share Data Nodes With Processing"
- \ref processingShareDataNodesBetweenJobs "Share Data Nodes Between Jobs"
- \ref processingThreadsPerDataSource "Threads Per Data Source"
- \ref processingRestrictDataSources "Restrict Data Sources"
- \ref processorDefaults "Processor Defaults"
- \ref processingRunUsing "Run Using All/Specified Number of Nodes"
- \ref processingWithThreads "With All/Specified Number of Threads"
- \ref processingForEach "For Each Baseline/Job"
- \ref processingRestrictNodess "Restrict Nodes to List/Pattern"
- \ref schedulerSettings "Scheduler Settings"
- \ref runScheduledJobs "Run Scheduled Jobs Sequentially/Simultaneously"
- \ref resourceTimeLimit "Resource and Processing Time Limits"
- \ref tryToSkipMissing "Try To Skip Missing Stations"
- \ref processingBestPractices "Best Practices?"
\anchor processingHeadNode
Head Node
Every DiFX job has a "head node" that spawns mpi processes on itself and other nodes
based on the content of .machines
and .threads
files
and collates processed data into .difx
output.
Any available processor can be assigned to do this using the "Head Node" field.
Confusingly, this documentation often refers to the processor running guiServer
as the "head node", but here the meaning is different.
\anchor processingUseHeadNode
Use Head Node in Processing
The "head node" is the processing node that distributes mpi run activities to other
processors and collates the results when running a DiFX job. If you have many processing
nodes you may want to dedicate an entire node to these tasks. It is convenient and
tidy to make your head node the same node that it running guiServer but this
is not required.
\anchor stopJobWhenConfigFails
Stop Job When Configuration Test Fails
Before a job is actually run by DiFX, a "configuration test" is run. This test the content
of the .input and .calc files associated with the job to assure that it can run smoothly. If
this test fails, you may or may not want the job to run anyway. If you want to run the job
regardless of the results of the configuration test, uncheck this item.
\subsection dataSourceDefaults Data Source Defaults
\anchor processingNodesPerDataSource
Unique Node per Data Source
Pick this item if you want the GUI to assign unique nodes to each data source within a
job. Setting this item requires that you have at least as many processors/data sources
as you have stations in your job, as each station will have its own data stream.
\anchor processingAssignBasedOnPath
Assign Based on Path
Check this box to assign specific nodes as the data sources for different data paths.
When data come from a path (as specified in the .input file), the path will be compared
to a list of path/processor assignment pairs - if the path in the path/processor pair
contains the data path in the .input file, the associated processor will be used as
a data source. The list of path/processor assignment pairs can be edited using
the "Path Assignment" button, which brings up a small menu:
\image html settings_pathAssignments.png
This menu allows you to add any number of path/processor assignments. The path you simply
type in the left field - it allows tab-completion. The right field provides a pull-down
menu of all processors that are visible. You can also type directly into this field
if the processor you want is not visible (although it not being visible is probably something
you need to worry about).
This setting can be useful if, for instance, not all of your processors have access
to every part of your data storage. DiFX has no way of knowing this, and will assign
processors to be data sources essentially at random. Instead, you can force a particular
processor that you know has access to the data to be used.
\anchor processingShareDataNodesWithProcessing
Share Data Nodes With Processing
This setting allows the GUI to assign a node that is acting as a data source to run
as a processor as well. Tests at USNO have shown that setting a job to run this way does
not adversely impact processing - which implies that acting as a data source is not
taxing the processors much. In fact, it may well slightly improve overall processing time,
presumably because doing some amount of processing on a data source node means that some
amount of data need not be gathered from source and then "hopped" to another processor - they
are already where they need to be.
\anchor processingShareDataNodesBetweenJobs
Share Data Nodes Between Jobs
This setting allows different jobs to use the same data source node when they are processing
simultaneously. If it is not set, the GUI will search for unique, unused nodes to use
as data sources when starting each job, disregarding those that are already data sources.
\anchor processingThreadsPerDataSource
Threads Per Data Source
This field allows you to set the number of threads that will be assigned to each data source.
Doing so restricts the threads from use for processing (when you pick \ref processingWithThreads "All Threads"
for processing).
\anchor processingRestrictDataSources
Restrict Data Sources
This setting can be used to restrict data sources to an assigned list of nodes. Clicking the
"Allowed Sources" button brings up a simple menu for editing the list of nodes:
\image html settings_sourceAssignments.png
The menu provides pull-down fields that have access to all visible nodes. You may also
type directly in these fields to assign names that for whatever reason are not visible to
the GUI.
\subsection processorDefaults Processor Defaults
\anchor processingRunUsing
Run Using All/Specified Number of Nodes
Each DiFX job will be processed using one or more nodes in the DiFX cluster. This
checkbox choice allows you to force all processor "nodes" to be used for each job, or a selected
number of them to be used. If you select a specified number, the GUI trusts you to make
sensible choices, for instance a number that does not exceed the total number of
processors in your correlator cluster. When used with the scheduler picking too many
nodes can lead to \ref topLevelResourceWait "resource waits".
\anchor processingWithThreads
With All/Specified Number of Threads
This setting determines how many threads within a processor are used for each job.
You can devote all of the threads in each processor, or pick your own number of threads.
It is easiest to use all threads, as this number is independent of the number that
actually exist.
The "Min" field sets a minimum number of threads that will be used when "All Threads"
is chosen. This must be a plausible number - set too high and the system will hange on
\ref topLevelResourceWait "resource waits".
\anchor processingForEach
For Each Baseline/Job
The GUI will apply the specifications of the \ref processingRunUsing "Run Using" :
\ref processingWithThreads "With" "sentence" to either a complete DiFX job, or each
baseline within a job. The latter setting allows you to scale the resources to the
complexity of a job (which roughly scales with the number of baselines). If you apply
the specifications to baselines, care should
be taken to assure that the resources (processors and threads) exist to do so, as
the whole job is run at once. For instance, if you specify 10 processors to a job
with 4 baselines, your job will require 40 processors to run at all.
In practice this option is usually left on "Job".
\anchor processingRestrictNodess
Restrict Nodes to List/Pattern
Within the confines of whatever other instructions you have in place to govern the number
of processors assigned to each job, the GUI will allocate any processors that it sees
(they must be running \ref runMk5daemon "mk5daemon" in order to be seen) to a DiFX job.
You can use these settings to restrict your DiFX job processing to specific processors.
This is useful when you are sharing a multi-processor correlator with other users or activities - it allows
you to commit your work to a subset of the total processor inventory, leaving the
remaining processors free for other uses.
There are three ways in which you can restrict your processors:
- Define a list of processors by clicking the "List" checkbox. The "Allowed List"
button will launch a clickable list of all processors visible to the GUI.
- Choose a pattern of processor names using a regular expression by clicking "Pattern".
Processors with names that match the pattern will be used.
- Do nothing by leaving neither "List" nor "Pattern" clicked. This will allow
all available processors to be used.
These settings govern which processors are chosen by the scheduler, as well as the
default processors chosen in the \ref jobControlMachinesList "Machines List" section of
the Job Control menu.
\subsection schedulerSettings Scheduler Settings
Scheduler Settings govern the operation of the job scheduler. The
job scheduler can be set to run a large number of jobs
automatically. For details on scheduling jobs and monitoring the
process of the scheduler, see Running
Jobs With the Scheduler. Note that the scheduler also
implements all of the other Job Processing Settings in setting up
scheduled jobs - those settings here apply only to their actual
running.
\anchor runScheduledJobs
Run Scheduled Jobs Sequentially/Simultaneously
When more than one job is scheduled (this is generally the case
when using the scheduler), should each be run on its own, i.e.
with the entire DiFX processing cluster to itself, of should more
than one be run at a time? If you choose "Sequentially" the
scheduler will run each job on its own, started each subsequent
job only after the previous one has completed. If you choose
"Simultaneously" any number of jobs may be run at the same
time. You must set a maximum number that can be run
simultaneously.
In testing at USNO it was determined that, for the most part,
there is no advantage to running more than one job at a time, and
there may be a slight penalty. But it is not difficult to
imagine that simultaneous processing may be advantageous under
some circumstances and/or at different installations.
\anchor resourceTimeLimit
Resource and Processing Time Limits
The scheduler can only plow through a long list of jobs if jobs
themselves complete, especially if they are being run
sequentially. That being said, it is not unheard of for a
job to hang up for any number of reasons. The Resource
Allocation Time Limit and Processing Time Limit specify a number
of seconds the scheduler should wait, after not receiving any
feedback (messages, data, whatever) from a job before "giving up"
on the job and moving on in the schedule. "Resource
Allocation" applies to the set up of processors and data sources,
and "Processing" applies to actual DiFX processing. Any job
that is abandoned is appropriately labeled in the Queue Browser.
The Resource and Processing Time Limits are applied only if their
associated check boxes are selected.
\anchor tryToSkipMissing
Try To Skip Missing Stations
When this option is selected the scheduler will attempt to alter
and reschedule jobs that fail due to non-existent data for one or
more required stations. It does this by rebuilding the job
such that it no longer includes the missing station(s).
Details are \ref topLevelSkippingMissingStations "here".
This option is historical - it was included to fix a problem with early
versions of DiFX. If you are not certain you need it, do not
use it!
\subsection processingBestPractices Best Practices?
The Job Processing Settings provide a good number of controls to fiddle with,
all of which may have an impact on the time it takes to complete a scheduled job or list
of jobs. But what works best? The simple answer is that it depends on your hardware
configuration, and even if that is known it is fiendishly difficult to sort out
with any certainty. The best approach would be to run tests under carefully controlled
conditions to emperically determine what works best at your own installation (or, at
least to convince yourself that you are doing this). Here are some of the conclusions
derived from test results at USNO - your own results may vary.
Don't Bother Changing the Head Node
The tasks of the processing "head node" (spawning mpi jobs and collating results)
are fairly light-weight. Moving the head node around appears to have no impact, positive
or negative, on processing speed. There are imagineable circumstances where you
might want to force the head node to be a particular processor, but unless you have
a need it makes most sense from an organizational point of view to leave the processing
head node as the same node that is running guiServer (and, if you have enough
processors, to not use the head node for any actual processing).
Don't Try to Be Cute With the Threads - Use Them All
The \ref processorDefaults "Processor Defaults" settings allow you to assign a number
of threads to each job. You might have a compelling reason to do this, such as
allowing the processor to do something else computationally intensive, but if not,
don't bother messing around with the threads. If you are using a processor, use all
of its available threads.
Running Jobs Simultaneously Doesn't Buy You Anything
At least in USNO's experience, running more than one job at the same time does not
help multiple jobs run faster. If you are running a list of jobs, run them one after the other,
and throw all of your resources at each job.
\section databaseConfiguration Database Configuration
Database trouble? See \ref troubleShootingDatabase "Trouble-shooting the Database Configuration"
The Database Configuration settings control the access the GUI has
to the DiFX database. The DiFX database contains settings and
status for experiments, passes, and jobs that appear in the Queue
Browser window. The GUI remotely accesses the database using a
network connection (the database can also be consulted on the
command line by running a client program either remotely or on the
DiFX database host). Neither the GUI nor DiFX itself has any requirement that
you use a database, and in fact at the current time the database capabilities
have been unused for a while - it is likely that a lot of them don't work.
\image html settings_DatabaseConfiguration.png
\subsection databaseConfigurationComponents Database Configuration Components
- \ref databaseUseDatabase "Use Data Base"
- \ref databaseVersion "Version"
- \ref databaseHost "Host"
- \ref databaseUser "User"
- \ref databasePort "Port"
- \ref databasePassword "Password"
- \ref databaseDifxDatabase "DifX Database"
- \ref databaseManagementSystem "Management System"
- \ref databaseDriver "Driver"
- \ref databasePeriodicUpdate "Periodic Update"
\anchor databaseUseDatabase
Use Data Base
This checkbox determines whether the GUI is using the database at
all. If checked, changes to experiments, passes, and jobs in
the Queue Browser will be reflected in the database, and items in
the database will appear in the Queue Browser. If not,
experiments, passes, and jobs will only appear in the Queue Browser
if they are created by the same instance of the GUI - any
information about them will be lost if the GUI is shut down and
restarted. Beyond this capability, the database is not
required - the GUI will still be able to run DiFX without it.
\anchor databaseVersion
Version
The version field is not currently in use, but may be used in the
future to coordinate the GUI with changes that may be made to the
database structure. It is set to the most recent version of
the database that the GUI can properly parse (at the moment this
is the only version it
can parse). Changing it will have no effect.
\anchor databaseHost
Host
The database Host is the hostname of the host that contains the DiFX
database. The named host should be accessible through normal
network connections, and the hostname itself must be recognized by
the name lookup scheme on the GUI machine. The ping test can be used to test the
hostname.
\anchor databaseUser
User
The user is the username for the DiFX database. This is the
name you would use when running the a database command line client
on the DiFX host as in the following example (using a mySQL client):
\code
mysql -u USER
\endcode
It does not necessarily match the username you may use to log into
the DiFX host. The database must be set up to recognize this
user, including access to the database from the host where the DiFX GUI is running.
See Problems with Database Remote
Access in the trouble-shooting section for details.
\anchor databasePort
Port
The JDBC Port is the port over which remote communication with the
database occurs. The default port for most mySQL installations
is 3306, so that is probably what you should be setting yours to (if
you are using the mySQL database management system). Consult
the /etc/services
file on the database host to find
out which port is being used.
\anchor databasePassword
Password
This is the password for the username in the database. You would use
this password when prompted by the database command
line client on the database host. This password is set by the
database administrator or by the user through the database
client. It is not necessarily the same password you would use
to log into the database host.
\anchor databaseDifxDatabase
DifX Database
The DifX Database is the name of the database. At the time of
this writing the rest of the DiFX software (difxqueue, etc) uses the
database named "difxdb", so that is the default value for this
field. Unless you feel you know better, it probably shouldn't
be changed.
\anchor databaseManagementSystem
Management System
The database management system is the "application" used to
administer and access the DiFX database for your location, such as
mySQL, Postgresql, etc. (this is sometimes called the database
"vendor"). The management system is set up by your database
administrator when the DiFX database is initialized (this is all
done using a management system-specific "schema", as described in
the database documentation). Management systems known to
function with the GUI include mySQL and Postgresql. If you
change the management system you will also have to change the
driver - see the table below for drivers that are known to work
with each management system.
\anchor databaseDriver
Driver
This is the "driver" used by Java to give the GUI access to the
database. The driver is specific to the database management
system, and must be something Java has access to. The GUI is
delivered with drivers appropriate for a couple of popular (and
free) management systems, as outlined in the table below.
Management System
| Driver
|
mySQL
| com.mysql.jdbc.Driver
|
Postgresql
| org.postgresql.Driver
|
If your database installation uses a different management system,
you may wish to petition the GUI development group to include it.
\anchor databasePeriodicUpdate
Periodic Update
This check box tells the Queue Browser to automatically check the
database for changes after a given time interval, which you can
set. The usefulness of automatic checking is dependent on
whether or not other users might be changing the database while you
are running the GUI. If your GUI instance is the only source
of database changes it is essentially pointless as all changes you
make will be recognized anyway. If, on the other hand, other
users are making changes, the automatic update will make them appear
in real time (or reasonably close to it if you make your interval
short).
\subsection troubleShootingDatabase Trouble-shooting the Database Configuration
A number of things can go wrong when trying to access the DiFX
database remotely. The Database Configuration panel contains a
few tests that can be used to troubleshoot the database connection.
\anchor databasePingTest
Ping Test
The Ping Test is run by hitting the "Ping Host" button. It can
be used to establish two things:
- Can the name for the DiFX host be resolved - i.e. does the
host name make any sense?
- Is the host reachable with the current network configuration -
i.e. is it out there?
The Ping Test performs attempts six "pings" of the named host,
reporting the results in the results panel. A successful ping
test will return statistics for each of the pings along with an
overall statistical summary:
Ping Test failures will produce alarming red text in the results
panel. The reported failure should give you an idea what is
wrong. For instance, the following indicates that the given
hostname cannot be resolved, either by your local host table or by
your name server:
The following screen would indicate a bad network connection at the
GUI machine:
Finally, the name may be resolved and the network may be good but
the named host may not answer either because it is down or it is not
properly connected to the network:
\anchor databaseConnectionTest
Database Connection Test
The Database Connection Test makes a comprehensive test of the
current database settings by trying to access the DiFX job queue and
getting a list of all jobs out of it (this is exactly what the Queue
Browser does to access the queue data). It is run using the
"Test Database" button. When run, the test forms a URL out of
host name and port number (this URL is reported in parenthesis in
the results panel), then attempts to create a connection using the
URL, the user, and the password. If this is successful, the
DiFX database is consulted to obtain a list of all queued
jobs. The Database Connection Test reports the number of jobs
in the queue and exits.
\anchor databaseRemoteAccessProblems
Problems with Database Remote Access
The following is a list of some of the errors that might be produced
by the Database Connection Test and what can be done about
them. Note that these errors may also be reported in the
Message Window as the GUI tries to access the DiFX queue in the
database.
SQLException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago.
The driver has not received any packets from the server.
This error indicates that the connection to the remote mySQL
database failed. Check that the DiFX host exits and in on the
network (using the \ref databasePingTest "Ping Test").
Then remote log into that host and see if the mySQL server is
running:
\code
ps -ef | grep mysql
\endcode
Both mysql_safe and mysqld should be running.
The latter is the mySQL server, the former is used to start it
when/if it shuts down. In a proper installation of mySQL these
programs should be running automatically after boot up. If
they ARE running, see if a mySQL client can be run (the path may be
different):
\code
/usr/bin/mysql
\endcode
If it cannot be run, this may indicate an incorrect or incomplete
mySQL installation.
SQLException: Access denied for user 'difxw'@'10.1.2.45' (using password: YES)
Access to the database can be denied for a number of reasons.
Check your user name and password (these need to be mySQL user name
and password, not necessarily the user name and password you use to
remotely log into the DiFX host). If you can, run the mySQL
client on the DiFX host as root from the command line (you will
require the root password):
\code
/usr/bin/mysql -u root -p
\endcode
Then generate a list of all users and hosts recognized by mySQL:
\code
mysql> select user, host from mysql.user;
+------+---------------------+
| user | host |
+------+---------------------+
| difx | 10.1.2.45 |
| difx | 127.0.0.1 |
| root | 127.0.0.1 |
| | localhost |
| difx | localhost |
| root | localhost |
| | swc02.usno.navy.mil |
| difx | swc02.usno.navy.mil |
| root | swc02.usno.navy.mil |
+------+---------------------+
9 rows in set (0.00 sec)
\endcode
In this list somewhere should be the user name you are using paired
with the GUI host name. Note that mySQL treats user/host pairs
almost as separate users - you must designate both your user name
and host as a "user". To do this, the following command will
both "create" the user/host pair and give it access to all databases
(note that "grant" is a complex command used for many things - you
should consult mySQL documentation before using this command with
reckless abandon):
\code
mysql> grant all privileges on *.* to 'difx'@'new.host.name';
Query OK, 0 rows affected (0.00 sec)
\endcode
You should then see the user/host pair in the user list:
\code
mysql> select user, host from mysql.user;
+------+---------------------+
| user | host |
+------+---------------------+
| difx | 10.1.2.45 |
| difx | 127.0.0.1 |
| root | 127.0.0.1 |
| | localhost |
| difx | localhost |
| root | localhost |
| difx | new.host.name | <---------------- HERE!!!!
| | swc02.usno.navy.mil |
| difx | swc02.usno.navy.mil |
| root | swc02.usno.navy.mil |
+------+---------------------+
10 rows in set (0.00 sec)
\endcode
The user/host pair needs its own password specification - even if
your user name already had a password, this is not enough! To
specifiy the password for the new user/host pair (or to make sure
your password is set properly on an existing user/host pair), do the
following (replaced "PASSWORD" with your new password):
\code
mysql> set password for 'difx'@'new.host.name'=password( 'PASSWORD' );
Query OK, 0 rows affected (0.00 sec)
\endcode
At this point we reach the limits of my personal mySQL knowledge.
Database contains 0 jobs
This is not an error, however you may encounter this message.
It simply means there are no jobs queued in the specified
database. If this is not what you expect (because, for
instance, you've recently queued something), check the value in the
"DiFX Database" field. It should match your the name of the
database where queuing is going on (which is probably "difxdb").
\section settingsEOPSettings EOP Settings
\image html settings_EopSettings.png
\subsection eopSettingsComponents EOP Settings Components
- \ref eopSettingsURL "EOP URL"
- \ref eopSettingsLeapSeconds "Leap Seconds URL"
- \ref eopSettingsStaticValue "static value"
- \ref eopSettingsAutoUpdate "auto update"
- \ref eopSettingsUpdateNow "Update Now"
\anchor eopSettingsURL
EOP URL
The EOP URL is the location of the "finals" EOP data file that is parsed to produce
up-to-date EOP data. This file can be located locally, or remotely. It is read when
the GUI is started, and at periodic intervals \ref eopSettingsAutoUpdate "if requested",
and when the \ref eopSettingsUpdateNow "Update Now" button is pushed.
The "View" button can be used to view the content of the most recently read file.
If the view doesn't have anything in it, your EOP URL is pointed to a location that
doesn't exist, is empty, or is for some reason inaccessible.
\anchor eopSettingsLeapSeconds
Leap Seconds URL
The Leap Seconds URL is the location of the data file that contains the proper value
for the leap second. You can see the file content using the "View" button. The file
is consulted when the GUI is started, and at periodic intervals \ref eopSettingsAutoUpdate "if requested",
and when the \ref eopSettingsUpdateNow "Update Now" button is pushed. The extracted
leap second value is used only if the associated check box is checked - otherwise the
\ref eopSettingsStaticValue "static value" is used.
\anchor eopSettingsStaticValue
static value
The static leap second value is used with the EOP data when the "static value" check box
is checked. There is a field in which you can put your own (integer) static value.
\anchor eopSettingsAutoUpdate
auto update
Auto update, when checked, triggers the GUI to read the files indicated by the EOP and Leap Second URLs
to extract the most up to date EOP and leap second information on a periodic basis with an
interval given by the "every ___ seconds" field. If not checked, this information is only
gathered when the GUI is started, or when the "Update Now" button is pushed.
\anchor eopSettingsUpdateNow
Update Now
Pushing the "Update Now" button causes the GUI to read and parse the files indicated by
the \ref eopSettingsURL "EOP" and \ref eopSettingsLeapSeconds "Leap Second" URLs immediately. Doing so will have no effect on any scheduled
\ref eopSettingsAutoUpdate "auto update" activities.
\section documentationLocations Documentation Locations
Documentation Locations provide a list of URLs for different types of useful DiFX-related or
GUI-related documentation. As URLs, these locations can be local files, web-based, or
whatever.
\image html settings_DocumentationLocations.png
\subsection documentationLocationsComponents Documentation Locations Components
- \ref settingsGUIDocs "GUI Docs"
- \ref settingsUsersGroup "Users Group"
- \ref settingsDifxWiki "DiFX Wiki"
- \ref settingsDifxSvn "DiFX SVN"
\anchor settingsGUIDocs
GUI Docs
This is the location of the top-level of this documentation. When you hit the "Help"
key in the GUI top-level window, it will open a browser pointed to a file named
"index.html" at this location.
\anchor settingsUsersGroup
Users Group
The DiFX Users Group is a Google Group where DiFX users and developers can discuss
DiFX-related topics. It requires a user name and password to access.
\anchor settingsDifxWiki
DiFX Wiki
The DiFX Wiki contains DiFX documentation, installation instructions, meeting
information, and other DiFX-related items. If you are starting with DiFX or trying
to install it, this is the best place to begin.
You don't need a login to access this location.
\anchor settingsDifxSvn
DiFX SVN
The DiFX SVN setting points to the DiFX software repository, which contains all of
the DiFX source code for the most current software version as well as the release
history (to some extent - very old releases may not be readily available). Currently
this is using Trac project management, and
requires you to log in as a DiFX developer.
*/