Solo Predictor Installation and Configuration: Difference between revisions

From Eigenvector Research Documentation Wiki
Jump to navigation Jump to search
imported>Donal
No edit summary
 
(54 intermediate revisions by 8 users not shown)
Line 7: Line 7:
Solo_Predictor is packaged in several different ways depending on the platform on which it is being installed. Follow the instructions on the [[Installation#Installing_Solo|main Solo installation page]] to install on the appropriate platform.
Solo_Predictor is packaged in several different ways depending on the platform on which it is being installed. Follow the instructions on the [[Installation#Installing_Solo|main Solo installation page]] to install on the appropriate platform.


Prior to or at the first start of Solo_Predictor, the user must enter their license code into the configuration file. See the configuration section below about [[Solo_Predictor_Installation_and_Configuration#License_Code|adding the license code to the configuration file]] or start Solo_Predictor (see below) and you will be prompted with a configuration page in which you can enter the license code and change frequently modified settings from the configuration file. Modify the configuration page and click "Save". If you need to modify other configuration options, these must be done by manually modifying the default.xml file located in the main Solo_Predictor application folder.
====Windows====
 
=====Important System Requirement=====
 
'''Microsoft Windows Visual C++ Redistributable:''' This applies to versions of Solo_Predictor 4.3 and later. Ensure that the latest Microsoft Windows Visual C++ Redistributable library is installed on the computer. This can be installed from:
[https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170#visual-studio-2015-2017-2019-and-2022 Microsoft].
Choose the "X64" 64-bit architecture choice.
If this is not installed you will get an error window saying "The code execution cannot proceed because VCRUNTIME140.dll was not found. Reinstalling the program may fix this problem".
 
=====No Internet Connection Case=====
These instructions presume that the computer has an Internet connection. If you need to install Solo_Predictor version 4.3 or later on a computer which does not have an Internet connection then please contact our help desk to obtain an offline version of the Solo_Predictor installer. Note that the installer for the Microsoft Windows Visual C++ Redistributable mentioned above will also install on a computer with no Internet connection, and this should be done before using Solo_Predictor installer.
 
=====Location of Solo_Predictor startup files=====
Prior to version 4.3, the startup files for Solo_Predictor were located in the Solo_Predictor installation folder, e.g. "C:\Program Files\EVRI\Solo_Predictor_41". For versions 4.3 and later, these same startup files are located in the "application" folder under Solo_Predictor, e.g. "C:\Program Files\EVRI\Solo_Predictor_43\application".
 
=====Steps=====
#Please use an “administrator” user account to install Solo_Predictor since administrator privileges are needed to add files under the default C:\Program Files\EVRI location. Note your Solo_Predictor's license code as this will be needed to launch Solo_Predictor.
#Run the installer .exe by double clicking.
#After a window “User Account Control” appears asking if you want to allow this app to make changes to your device, you will be guided by an installation wizard which presents:
## "Solo" splash screen appears.
##Within one minute a wizard page appears identifying "Solo_Predictor M.N", where "M.N" is the version being installed, for example, we'll refer to version "4.3" here. Click "Next>".
##A window appears allowing you to choose the installation folder. The default choice is: "C:\Program Files\EVRI\Solo_Predictor_43". Then click "Next".
##Solo_Predictor requires a version of the Matlab Runtime library.
###If the MATLAB Runtime library is not found on your computer then a window will appear telling you that it will need to be downloaded and installed. In this case you must enter the path for the installation folder to use. The default choice is: "C:\Program Files\MATLAB\MATLAB Runtime". Accept this or choose where you want to install it. This can take fifteen minutes or more to complete. 
###If the required Matlab Runtime version is found on your computer then a window appears saying "MATLAB Runtime is already installed in:" and lists the location filepath. You can click "Next" to continue with installation of Solo_Predictor.
##A confirmation page appears summarizing the configuration choices. Click "Install>".
##A progress-bar window appears showing the installation progress until a window appears reporting "Installation completed successfully". It also gives the default install location for Solo_Predictor (C:\Program Files\EVRI\Solo_Predictor_43\application). Click "Finish" icon. You will launch Solo_Predictor by double-clicking on the Solo_Predictor icon (the Solo_Predictor.exe file) in your installation folder's "application" folder.
#Use Windows Explorer to navigate to the installation folder you entered in step 3 above and double-click on the Solo_Predictor.exe file to start it. If you used the default installation folder, namely under "C:\Program Files\", then you will need to start Solo_Predictor.exe "As administrator" the first time you start it.
#This opens the S_P configuration window where you can specify commonly used configuration settings. Details of these fields are available at: [https://www.wiki.eigenvector.com/index.php?title=Solo_Predictor_Configuration_Page Solo Predictor Configuration Page] 
##You must enter the licensecode for Solo_Predictor in addition to any other changes you want to make, then click "Save".
##You may see a "Windows Security Alert" window appear. Click on the default button, "Allow access'.
#Solo_Predictor now starts and opens a Solo_Predictor logging console window.
 
Notes:<br>
*The settings file,  "C:\Program Files\EVRI\Solo_Predictor\application\default.xml" is updated with your configuration inputs when you close the configuration window by clicking "Save".
*The Solo_Predictor Configuration window only appears when Solo_Predictor is started for the first time. You must edit the saved settings file to make any subsequent changes to the configuration as this file is read whenever Solo_Predictor starts. Thus you can change any Solo_Predictor settings by editing this file and restarting Solo_Predictor.
*A simple test to see if Solo_Predictor is working correctly is to use a web browser, for example Firefox, and this URL:
    http://127.0.0.1:2211/?:version
:This assumes you are using the default port, 2211.
 
=====Specifying a Settings File=====
When Solo_Predictor is started by double-clicking on the installed Solo_Predictor.exe file it uses the settings file "default.xml" located in the same folder. If a shortcut file is created from this Solo_Predictor.exe then this shortcut can be edited ("Properties") to start in any specified folder, and then it will start Solo_Predictor using a "default.xml" settings file found in that specified folder, if it exists.
 
Solo_Predictor can also be started by a command entered in a terminal (Windows "cmd" or any other, for example Cmder).
The simplest example is:
  "C:\Program Files\EVRI\Solo_Predictor_43\application\Solo_Predictor.exe"
which starts Solo_Predictor and uses the settings file "default.xml" found in this folder, if it exists. If this settings file does not exist then an error window appears which says: "Could not locate preferences file. Error in => startsolo.m at line 2".
 
It is possible to specify exactly which settings file should be used by including it as an argument to the command, for example:
  "C:\Program Files\EVRI\Solo_Predictor_43\application\Solo_Predictor.exe" "-loadsettings \"C:\Program Files\EVRI\Solo_Predictor_43\application\default_43.xml\""
 
In this case the Solo_Predictor executable and the settings file are specified by their full paths and so do not depend on any assumptions about where the executable starts. Note the need to escape the double-quotes around the path in the command's argument using a back-slash.
 
====Linux====
 
=====Location of Solo_Predictor startup files=====
Prior to version 4.3, the startup files for Solo_Predictor were located in the Solo_Predictor installation folder, e.g. "/usr/local/bin/Solo_Predictor41". For versions 4.3 and later, these same startup files are located in the "application" folder under Solo_Predictor, e.g. "/usr/local/bin/Solo_Predictor43/application".
 
=====Steps=====
#Download the .install installer from your Eigenvector account. Note your Solo_Predictor's license code as this will be needed to launch Solo_Predictor.
#Run the installer .install in Terminal by running <code> ./Solo_Predictor_WebInstaller.install</code>. You will be guided by an installation wizard which presents:
## "Solo" splash screen appears.
##Within one minute a wizard page appears identifying "Solo_Predictor M.N", where "M.N" is the version being installed, for example, we'll refer to version "4.3" here. Click "Next>".
##Choose the installation folder. The default choice is: "/usr/local/bin/Solo_Predictor_MN".
##If the MATLAB Runtime library is not found on your computer then a window will appear telling you that it will need to be downloaded and installed. In this case you must enter the path for the installation folder to use. The default choice is: "/usr/local/MATLAB/MATLAB_Runtime". Accept this or choose where you want to install it. This can take fifteen minutes or more to complete.
##License Agreement page. Click to accept, and "Next>".
##A confirmation page appears summarizing the configuration choices. Click "Install>".
##A progress-bar window appears showing the installation progress until a window appears reporting "Installation completed successfully". It also gives the default install location for Solo_Predictor (/usr/local/bin/Solo_Predictor_MN/application). The installer will also tell you to update the Terminal environment variables <code>LD_LIBRARY_PATH</code> and <code>XAPPLRESDIR</code>. Do this in Terminal before launching Solo_Predictor. Click "Finish" icon. You will launch Solo_Predictor by navigating to the location of Solo_Predictor and running the run_Solo_Predictor.sh file by executing <code>./run_Solo_Predictor.sh [MCR_Root]</code>, where MCR_Root is the location of the MATLAB Runtime. For example, Solo_Predictor 4.3 uses MATLAB v99 (R2020b) Runtime. So the way to launch Solo_Predictor under these conditions would be to run
  ./run_Solo_Predictor.sh /usr/local/MATLAB/MATLAB_Runtime/v99
##This opens the S_P configuration window where you can specify commonly used configuration settings. Details of these fields are available at: [https://www.wiki.eigenvector.com/index.php?title=Solo_Predictor_Configuration_Page Solo Predictor Configuration Page] 
##You must enter the licensecode for Solo_Predictor in addition to any other changes you want to make, then click "Save".
##You may see a "Windows Security Alert" window appear. Click on the default button, "Allow access'.
##Solo_Predictor now starts and opens a Solo_Predictor logging console window.
 
Notes:<br>
*The settings file,  "/usr/local/bin/Solo_Predictor_43/application/default.xml" is updated with your configuration inputs when you close the configuration window by clicking "Save".
*The Solo_Predictor Configuration window only appears when Solo_Predictor is started for the first time. You must edit the saved settings file to make any subsequent changes to the configuration as this file is read whenever Solo_Predictor starts. Thus you can change any Solo_Predictor settings by editing this file and restarting Solo_Predictor.
*A simple test to see if Solo_Predictor is working correctly is to use a web browser, for example Firefox, and this URL:
    http://127.0.0.1:2211/?:version
:This assumes you are using the default port, 2211.
 
=====Specifying a Settings File=====
When Solo_Predictor is started file it uses the settings file "default.xml" located in the same folder. If a shortcut file is created from this Solo_Predictor then this shortcut can be edited ("Properties") to start in any specified folder, and then it will start Solo_Predictor using a "default.xml" settings file found in that specified folder, if it exists. If the default.xml settings file does not exist then an error window appears which says: "Could not locate preferences file. Error in => startsolo.m at line 2".
 
It is possible to specify exactly which settings file should be used by including it as an argument to the command, for example:
  ./run_Solo_Predictor.sh /usr/local/MATLAB/MATLAB_Runtime/v99 '-debug -loadsettings "/home/scott/default.xml"'
 
In this case the Solo_Predictor executable and the settings file are specified by their full paths and so do not depend on any assumptions about where the executable starts.
Prior to or at the first start of Solo_Predictor, the user must enter a license code to enable the software. There are two ways of providing this information:
 
# Starting Solo_Predictor and provide the code on the [[Solo_Predictor_Configuration_Page|Configuration Page]]. This same page allows you to change frequently modified settings. If you need to modify configuration options not included in this dialog, these must be done by manually modifying the default.xml file located in the main Solo_Predictor application folder.
# [[Solo_Predictor_Installation_and_Configuration#License_Code|Adding the license code to the configuration file]] directly.
 
'''NOTE:''' If Solo_Predictor is installed as administrator but run as a different user, copies of default.xml may be stored in (%userprofile%\AppData\local\VirtualStore\Program Files\EVRI\Solo_Predictor). To update default.xml either delete the copy in the VirtualStore or update the copy.
 
===Installing a New Version (Updating)===
Installing a new version of Solo_Predictor into the same location ("Destination Folder", default = "C:\Program Files\EVRI\Solo_Predictor) as the earlier version is performed just like a new install. This means that the previous version's default.xml file will be overwritten, losing any special setting which might have been present there. In this case it is a good idea to save a copy of the earlier default.xml file for use with the new Solo_Predictor. Once a copy has been saved then proceed with installing the new Solo_Predictor.
Once Solo_Predictor has been installed, then navigate to the Solo_Predictor executable as describe in the Installation Steps section above, and launch it, by right-click and "Run as administrator" for example.
 
When Solo_Predictor is used for the first time it opens a "Solo_Predictor_Configuration" window. click on the "Cancel" button. At this stage the new Solo_Predictor files will have been installed. Now edit the copy of the earlier default.xml file to insert the new Solo_Predictor license code value. Copy this file over the newly installed Solo_Predictor's default.xml file (this will require Admin privileges to copy into C:\Program Files\...). Finally, start Solo_Predictor as usual. The new default.xml file settings will be used and Solo_Predictor will start without the Solo_Predictor_Configuration window appearing.


===Starting Solo_Predictor===
===Starting Solo_Predictor===


Solo_Predictor is typically started by one of these methods:
Solo_Predictor is an executable file and can be started by manually running the executable. Executable programs can also be configured to start automatically when the computer system starts up, and this is desirable for a program like Solo_Predictor which acts as a prediction server. Solo_Predictor can be started by:
:A) making a direction connection using the ActiveX or .NET EigenvectorTools objects (see the [[EigenvectorTools|EigenvectorTools object page]] for installation and configuration information)
:B) starting it manually via a start-up process or as a service (on Windows) or daemon (on Linux) (see the [[SoloManager|SoloManager page]] for installation and configuration information)
:# Started manually by simply executing the Solo_Predictor executable file or shortcut.  
:C) started "on-demand" by simply executing the Solo_Predictor executable file or shortcut. For this method, note the options for stopping or restarting the server depend on the configuration of the Status Window (see below).
:# Configure it as an automatic start-up process, such as a service (on Windows) or daemon (on Linux)(see the [[SoloManager|SoloManager page]] for installation and configuration information)
:# Prior to version 4.3 of Solo_Predictor it was possible for a client program to make a connection using the .NET EigenvectorTools objects, which could start Solo_Predictor. This option is no longer available due to changes in the MATLAB Runtime. See the [[EigenvectorTools|EigenvectorTools object page]] for installation and configuration information.
 
====Starting Solo_Predictor Manually====
If starting Solo_Predictor by the first method then a status console window should appear:
 
[[File:Solo Predictor Console.png|500px|Solo_Predictor Console]]
 
This window's menu options for stopping or restarting the server depend on the configuration of the Status Window (see below).
 
====Solo_Predictor with SoloManager as a service/daemon====
The second start up method of starting Solo_Predictor involves using a Windows service or daemon script which starts automatically when the system starts.. It is often important to ensure that Solo_Predictor is always available and for this reason we have added a SoloManager [[SoloManager|SoloManager]] program to monitor Solo_Predictor's availability. and to restart it if necessary. The SoloManager program can be run as a Windows service or Linux daemon.
 
To use Solo_Predictor with SoloManager please see the [[SoloManager]] Wiki page. In summary, this usually involves
a) installing Java and adding its "bin" folder to your system PATH environmental variable,
b) making a few changes under the [Solo_Predictor-install-location]\application\solomonitor folder.
 
On Windows you would edit the SoloManager.ini file, for example located at:
C:\Program Files\EVRI\Solo_Predictor_44\application\solomonitor\SoloManager.ini
 
Modify entries in theSoloManager.ini to the correct values:
# startExecutableCommandPre to the path to the Solo_Predictor executable, such as: startExecutableCommandPre = C:\\Program Files\\EVRI\\Solo_Predictor_44\\application\\
# startExecutableCommandPost to Solo_Predictor command parameters, such as: startExecutableCommandPost = -loadsettings \\\"C:\\Program Files\\EVRI\\Solo_Predictor_44\\application\\default.xml\\\"
# outdir: Check that the "outdir" entry's folder does exist, for example:outdir = C:\\temp.  SoloManager writes its log file to this location as SoloManagerLog.txt. This can be very helpful in identifying any problems which occur with SoloManager.
 
Note that on Windows systems it may be necessary to copy the SoloManager.ini file out from under "C:\Program Files\" to some other folder where you have permission to make edits, and then copy it back, in order to satisfy the Microsoft Windows file modification security.
 
SoloManager is packaged as a Java file, solomanager.jar, which can be started on-demand (Windows) by right-click and "Run as administrator" the solomanager.jar file, or from a command terminal. See [[SoloManager#Starting_SoloManager_Manually]].


If connecting to Solo_Predictor via sockets, the server's IP address depends on the local network setup. If the client is running on the same system as Solo_Predictor, then the loopback address (127.0.0.1) can be used for both client and server. The port number is configured as described below. If, however, Solo_Predictor is on a different computer than the client, the client must make a connection into the computer running Solo_Predictor. Normally this is done by IP address but most sockets provide some means for looking up an IP address based on the computer name. If dynamic IP addresses are being used, it is recommended that the Solo_Predictor computer be set up with a preference for a given IP address. However, if the IP address does get changed, the client will need to be pointed to the new address.
However, you will usually want to run SoloManager as a service and this can be done by
# copying or moving the SoloManager.ini file into the "C:\Program Files\EVRI\Solo_Predictor_44\application\solomonitor\service64" folder and
# running the Install_Service.bat and Start_Service.bat files which are located there.  
SoloManager is then run as a service, ensuring that Solo_Predictor is available. See [[SoloManager#Starting_SoloManager_Automatically]]. There is also a Stop_Service.bat file to stop the SoloManager service.


For more information on programming socket connections, see [[Solo_Predictor_Example_Connection_Code|Appendix C: Solo_Predictor_Example_Connection_Code]].
This is a short summary of using SoloManager. Please refer to the [[SoloManager]] Wiki page for full details.


===Configuration===
===Configuration===


All configuration of Solo_Predictor is accomplished through the default.xml file which is located in the program's main folder. This XML file contains a number of tags which can be edited by the user. Note that changes in this file will not be read by Solo_Predictor until the server is stopped and restarted.
All configuration of Solo_Predictor is accomplished through the default.xml file which is located in the program's main folder and/or through the [[Solo_Predictor Configuration Page]]. This XML file uses the [[Settings file format|Solo Settings File Format]] and contains a number of tags which can be edited by the user. Note that changes in this file will not be read by Solo_Predictor until the server is stopped and restarted.


The tags within the <socketserver> tag control the server settings. In each case, an options value is provided using standard XML notation:
The tags within the <socketserver> tag control the server settings. In each case, an options value is provided using standard XML notation:
Line 33: Line 162:


The "class" attribute should not be changed from the given value. The "size" attribute is informational only and can be omitted.
The "class" attribute should not be changed from the given value. The "size" attribute is informational only and can be omitted.
====== Load Settings command line flag======
The user can specify a different XML file using the command line startup flag loadsettings.
  -loadsettings "filename"
This startup flag will load user settings from the XML file specified by the fully-qualified string "filename".  A settings XML file can be created by using the "Save" option from the Preferences Expert or using the settings file format description. Often used with -clearsettings so that only the settings in the specified file are used.
If a file named Default.xml is present in the application folder or the top-level installation folder (usually C:/Program Files/EVRI/Solo or similar on Windows), this file will always be read before reading the file specified by the -loadsettings flag.


The following are the user-modifiable options. The expected class attribute is included in parentheses.
The following are the user-modifiable options. The expected class attribute is included in parentheses.
Line 66: Line 205:
::3 = log no messages (disable logging).
::3 = log no messages (disable logging).
:The default level is 1 (one).
:The default level is 1 (one).
:If the '''debug''' mode is on (see below), an additional setting is available:
::-1 = log all messages including debug-mode information
* '''max_log_size''' (class="numeric"): Defines the maximum log file size (in bytes). Solo_Predictor will discard old messages to keep the log file from exceeding this size. Default is 50000 (50 Kb).
* '''max_log_size''' (class="numeric"): Defines the maximum log file size (in bytes). Solo_Predictor will discard old messages to keep the log file from exceeding this size. Default is 50000 (50 Kb).
* '''logfile''' (class="string"): Gives the path and filename to use for the log file. By default, this is solo_pred.log in the user's temporary directory. The exact location of the temporary folder depends on the operating system. For example, this is usually:
* '''logfile''' (class="string"): Gives the path and filename to use for the log file. By default, this is solo_pred.log in the user's temporary directory. The exact location of the temporary folder depends on the operating system. For example, this is usually:
::Windows XP: \Documents and Settings\username\Local Settings\Temp.
::Windows XP: \Documents and Settings\username\Local Settings\Temp.
::Windows Vista: \Users\username\AppData\Local\Temp
::Windows Vista, Windows 10: \Users\username\AppData\Local\Temp
* '''log_backups''' (class="numeric"): Indicates how many "backup" copies of the log file to allow to exist at any one time. If zero, then the one log file will be rolled over and messages removed. If greater than zero, the existing log file will be rolled into a backup file when it reaches '''max_log_size''' bytes. Old backup files are renumbered in increasing order (allowing up to this number of backup files) and the oldest file is deleted. For example, a value of 2 will allow two backups of the log file (each '''max_log_size''' in bytes)
* '''log_backups''' (class="numeric"): Indicates how many "backup" copies of the log file to allow to exist at any one time. If zero, then the one log file will be rolled over and messages removed. If greater than zero, the existing log file will be rolled into a backup file when it reaches '''max_log_size''' bytes. Old backup files are renumbered in increasing order (allowing up to this number of backup files) and the oldest file is deleted. For example, a value of 2 will allow two backups of the log file (each '''max_log_size''' in bytes)
* '''debug''' (class="numeric"): This tag is not normally listed in the <tt>default.xml</tt> file but can be added at any time to enable/disable the "debug" mode of Solo_Predictor. A value of 1 (one) will enable debug mode and 0 (zero) will disable it (the default). When debug mode is enabled, Solo_Predictor will display on the screen and optionally log in the log file (see '''log_severity''' above) details about each connection and action including information like timing of each step in processing, content of incoming messages, and names of requested files. This can be helpful in diagnosing issues with socket connections. Note that, because any messages being sent are logged and displayed, debug mode may significantly slow down processing if large messages are being passed in (e.g. large data files in XML format)


====Server Connection Options====
====Server Connection Options====
Line 100: Line 243:
====Wait-For-File Options====
====Wait-For-File Options====


Wait for file options control the optional Solo_Predictor wait-for-file engine. This engine will watch a given folder for a new file (with an optional specific file type). When a new file appears, the file will be automatically loaded as the object "data" and a specific script (stored in a disk file) will be executed. This script can use a :writefile command (see Script Construction section) to store results of an analysis in an output file.
Wait for file options control the optional Solo_Predictor wait-for-file engine. This engine will watch a given folder for a new file (with an optional specific file type). When a new file appears, the file will be automatically loaded as the object "data" and a specific script (stored in a disk file) will be executed. This script can use a :writefile command (see Script Construction section) to store results of an analysis in an output file. Files added to this folder remain there and are not moved or deleted by Solo_Predictor when they are processed.


* '''waitforfile''' (class="string"): either "on" or "off" (the default). When "on", the wait-for-file functionality is enabled (although the waitfolder and waitscript must also be non-empty strings for wait-for-file to operate).
* '''waitforfile''' (class="string"): either "on" or "off" (the default). When "on", the wait-for-file functionality is enabled (although the waitfolder and waitscript must also be non-empty strings for wait-for-file to operate).
* '''waitfolder''' (class="string"): defines the folder (local or networked) in which Solo_Predictor should look for new files.
* '''waitfolder''' (class="string"): defines the folder (local or networked) in which Solo_Predictor should look for new files.
* '''waitfilespec''' (class="string"): defines the file specifications (if any) to which the wait-for-file should be limited. For example, waitfilespec = "*.dat" will only recognize .dat files appearing in the wait folder.
* '''waitfilespec''' (class="string"): defines the file specifications (if any) to which the wait-for-file should be limited. For example, waitfilespec = "*.spc" will only recognize .spc files appearing in the wait folder.
* '''waitscript''' (class="string"): defines the filename containing the script to execute when a new file is found. This option must contain the entire path to the file. Note that the indicated script should expect to find the loaded data in the object named "data" in the current workspace.
* '''waitfilemode''' (class="String"): either "date" (default) or "name". When waitfilemode = "date" process files which are added to the waitfolder which are newer than the most recently run file. Note that this uses files' modification date, NOT the date or time when a file is dropped into the waitfolder. This may explain why "new" files dropped into the waitfolder are not being processed. Check their modification dates. Also note that files already present in the waitfolder when Solo_Predictor starts will not be processed as they are assumed to have already been processed.  When waitfilemode = "name" process files which were not in the folder before. If there are multiple new files then they are processed in order based on their modification date, oldest first.
* '''waitfileimporter''' (class="string") : defines the file import method to use. If empty (the default value), the file extension is used to determine the import method. This option allows overriding  normal import behavior if the file extension is ambiguous (e.g. "dat") or otherwise misleading.
* '''waitloadfile''' (class="string"): If "on", the contents of the file are loaded into the object named "data" in the Solo_Predictor workspace. If "off", the contents are not read and only the file name is passed (in the object named "filename")
* '''waitscript''' (class="string"): defines the file containing the script to execute when a new file is found. This option must contain the entire path to the file. Note that the indicated script should expect to find the loaded data in the object named "data" in the current workspace (see ''waitloadfile'' above) and the file name in the "filename" object. '''NOTE:''' If no wait script is defined, any imported data will be added to the DataCache which is used by the [[Solo_Predictor Field Monitor]] and can also be accessed via a datacache scripting object.
* '''waiterrorscript''' (class="string"): defines the file containing the script to execute if the file import ''or'' waitscript throws an error. This script can anticipate having the object "filename" in its workspace but should not anticipate any other objects.


====Output Format Options====
====Output Format Options====
Line 111: Line 258:
* '''default_format''' (class="string"): Defines the default response format. This is the output format used by the server if no format type is included in the request script. Valid types are: "xml", "plain" or "html". See Scripting Language for more information on these formats. Default is "xml".
* '''default_format''' (class="string"): Defines the default response format. This is the output format used by the server if no format type is included in the request script. Valid types are: "xml", "plain" or "html". See Scripting Language for more information on these formats. Default is "xml".


* '''writefilefolder''' (class="string"): Defines the top-level folder to which writefile is allowed to write. Writefile command can ONLY write to this folder and any sub-folders of it. Empty string for writefilefolder = writefile is NOT permitted at all.
* '''plaindelimiter''' (class="string", default = , ) Character which should be used to separate numerical values when outputting a vector in the plain text format. The comma is default (implying comma-separated-values) but can be any character (e.g. tab, semicolon). If a control-character is to be used, use regular expression notation such as "\t" or "\r" (without quotes) also accepted is hex notation, for example, use "\x20" to represent a space character:
::<pre><plaindelimiter class="string">\t</plaindelimeter>  <!-- tab character --></pre>
 
* '''writefilefolder''' (class="string"): Defines the top-level folder to which the <tt>:writefile</tt> and <tt>:export</tt> commands are allowed to write. These commands can ONLY write to this folder and any sub-folders within it. An empty string for writefilefolder indicates that <tt>:writefile</tt> and <tt>:export</tt> commands are NOT permitted.


====User Timers====
====User Timers====
Line 124: Line 274:


'''Recommended Usertimer Properties'''
'''Recommended Usertimer Properties'''
* '''ExecutionMode''' : (class="string") [ 'fixedDelay' | 'fixedRate' | 'fixedSpacing' |{'singleShot'}] type of timer execution. See Mathworks timer object documentation for more information.
* '''ExecutionMode''' : (class="string") [ 'fixedDelay' | 'fixedRate' | 'fixedSpacing' |{'singleShot'}] type of timer execution.  
::A timer follows the sequence:  Queue --> Start --> Run --> End ... where "Queue" is an indefinite period of time in which other processes may delay the script starting, the following execution modes can be used:
::''' 'singleShot' ''' = script is executed once (default)
::''' 'fixedRate' ''' = script is queued for execution ''Period'' seconds after the last execution was queued (queue-queue = Period)
::''' 'fixedDelay' ''' = script is queued for execution ''Period'' seconds after the last execution started (start-queue = Period).
::''' 'fixedSpacing' ''' = script is queued for execution ''Period'' seconds after the last execution ended (end-start = Period)
 
 
* '''Period''' : (class="numeric") [default = 1] seconds between executions if any mode other than 'singleShot'
* '''Period''' : (class="numeric") [default = 1] seconds between executions if any mode other than 'singleShot'
* '''BusyMode''' : (class="string") [{'drop'}| 'error' | 'queue' ] control overlapping timer executions. 'drop' ignores timer requests which occur while another timer process is executing. 'queue' keeps a queued list of executions which occured while another timer was executing and executes these missed actions in sequence. 'error' throws an error if two timers conflict.
* '''BusyMode''' : (class="string") [{'drop'}| 'error' | 'queue' ] control overlapping timer executions. 'drop' ignores timer requests which occur while another timer process is executing. 'queue' keeps a queued list of executions which occured while another timer was executing and executes these missed actions in sequence. 'error' throws an error if two timers conflict.
Line 138: Line 295:
* '''maxrestart''' : (class="numeric") number of times a timer can be restarted before switching to "errorrestart" error mode [default = 5]
* '''maxrestart''' : (class="numeric") number of times a timer can be restarted before switching to "errorrestart" error mode [default = 5]
* '''errorrestart''' : (class="string") error mode (see error above) to use if restarts failed maxrestart times [default = 'die']
* '''errorrestart''' : (class="string") error mode (see error above) to use if restarts failed maxrestart times [default = 'die']
====Web Access====
The following elements appear within the '''socketserver''' element, as tags:
* '''serverfolder''' (class="string"): The folder where files for web access are located.
* '''requirelogin''' (class="numeric"): Does web access require login via authorization object? Choices are 'true' or 'false'.
* '''loginfolder''' (class="string"): The folder were served files are stored for non-logged in users (used when requirelogin is true and user hasn't logged in).
====Q and T Squared Statistics====
The following elements appear within the '''socketparse''' element, as tags:
* '''matchvars''' (class="string"): Governs whether variable matching to model is performed. Valid choices are: 'on' or 'off'. When 'on', variables provided in data are automatically matched to model before application (if possible - see MATCHVARS for more information). When 'off', mismatch of passed variables and those expected by model will return an error.
* '''reducedstats''' (class="string"): Governs whether Q and T^2 statistics from models are "reduced" using the confidence limit set in the model.detail.reslim and model.detail.tsqlim fields.  Valid choices are: 'off', 'on', or 'force'.  If 'on', statistics accesed methods like .Q and .T2 are normalized using the value stored in the appropriate detail sub-field. If 'off', statistics are returned as calculated. If 'force', the old-style of normalization is used in which the raw fields (.ssqresiduals and .tsqs) are reduced so that any route to access the Q and T2 will return reduced values. Note that in 'on' mode, the non-reduced statistics will be returned by .ssqresiduals or .tsqs references.
* '''contributions''' (class="string"): Governs detail of returned T^2 and Q contributions.  Valid choices are: 'passed', 'used', and  'full'.  Return contributions for:
*:'passed' = only the variables passed by the client in the order passed. This mode allows the client to easily map contributions back to passed data and is the preferred mode.
*:'used'  = all variables used by the model including even variables which client did not provide. Variable order is that used by model and may not match the order passed by the client.
*:'full'  = all variables used or excluded by the model, including even variables which client did not provide.  Variable order is that used by model and may not match the order passed by the client.
     
====Evriscript Object Use====
The following element may appear within the '''evriscript''' element, as a tag:
* '''keywordonly''' (class="numeric"): Values 0 or 1. Default value 1 limits access to evriscripts to predefined objects only. Value 0 is required if customized evriscripts have been added to this product by Eigenvector Research.
====Python Archived File====
The following element may appear within the '''socketserver''' element, as a tag:
* '''pythonarchivefile''' (class="string"): Path to location of Python archived file for Python Configuration. Setting the value for this tag is optional. If value is set, ''':configure_python''' will use this to build Python. Otherwise, ''':configure_python''' will use Conda to build Python. Configuring Python will allow access to Python-based evrimodel objects. See the [[Python configuration]] wiki entry for more details.




Line 170: Line 362:
       <default_format class="string">xml</default_format>
       <default_format class="string">xml</default_format>
       <serverfolder class="string" />
       <serverfolder class="string" />
     </socketserver>
      <pythonarchivefile class="string">C:\Users\johndoe\Desktop\pls_toolbox_windows_38.zip</pythonarchivefile>
     </socketserver>   
    <socketparse>
      <matchvars class="string">on</matchvars>
      <reducedstats class="string">on</reducedstats>
      <contributions class="string">passed</contributions>
    </socketparse>
    <evriscript>
      <keywordonly class="numeric" size="[1,1]">1</keywordonly>
    </evriscript>
    <allowedobjects>
      <allowed class="cell" size="[1,15]">
        <tr>
          <td class="string">dataset</td>
          <td class="string">evrigui</td>
          <td class="string">evriarchive</td>
          <td class="string">evriscript</td>
          <td class="string">bwteklaser</td>
          <td class="string">bwtekspecinterface</td>
          <td class="string">bwtekspectrometer</td>
          <td class="string">predictor</td>
          <td class="string">datacache</td>
          <td class="string">usertimer</td>
          <td class="string">resultitem</td>
          <td class="string">evriscript_step</td>
          <td class="string">evridb</td>
          <td class="string">evrimodel</td>
          <td class="string">tcast</td>
          <td class="string">evriauthentication</td>
        </tr>
      </allowed>
    </allowedobjects>
   </Preferences>
   </Preferences>
   <Licensecode class="string">########-#########-##-####-####</Licensecode>
   <Licensecode class="string">########-#########-##-####-####</Licensecode>
</Settings>
</Settings>
</pre>
</pre>

Latest revision as of 11:04, 25 March 2024

Installation and Configuration

The following section describes the options available for configuring Solo_Predictor. For details on interfacing, scripting Solo_Predictor, see the Solo_Predictor Reference Manual.

Installation

Solo_Predictor is packaged in several different ways depending on the platform on which it is being installed. Follow the instructions on the main Solo installation page to install on the appropriate platform.

Windows

Important System Requirement

Microsoft Windows Visual C++ Redistributable: This applies to versions of Solo_Predictor 4.3 and later. Ensure that the latest Microsoft Windows Visual C++ Redistributable library is installed on the computer. This can be installed from: Microsoft. Choose the "X64" 64-bit architecture choice. If this is not installed you will get an error window saying "The code execution cannot proceed because VCRUNTIME140.dll was not found. Reinstalling the program may fix this problem".

No Internet Connection Case

These instructions presume that the computer has an Internet connection. If you need to install Solo_Predictor version 4.3 or later on a computer which does not have an Internet connection then please contact our help desk to obtain an offline version of the Solo_Predictor installer. Note that the installer for the Microsoft Windows Visual C++ Redistributable mentioned above will also install on a computer with no Internet connection, and this should be done before using Solo_Predictor installer.

Location of Solo_Predictor startup files

Prior to version 4.3, the startup files for Solo_Predictor were located in the Solo_Predictor installation folder, e.g. "C:\Program Files\EVRI\Solo_Predictor_41". For versions 4.3 and later, these same startup files are located in the "application" folder under Solo_Predictor, e.g. "C:\Program Files\EVRI\Solo_Predictor_43\application".

Steps
  1. Please use an “administrator” user account to install Solo_Predictor since administrator privileges are needed to add files under the default C:\Program Files\EVRI location. Note your Solo_Predictor's license code as this will be needed to launch Solo_Predictor.
  2. Run the installer .exe by double clicking.
  3. After a window “User Account Control” appears asking if you want to allow this app to make changes to your device, you will be guided by an installation wizard which presents:
    1. "Solo" splash screen appears.
    2. Within one minute a wizard page appears identifying "Solo_Predictor M.N", where "M.N" is the version being installed, for example, we'll refer to version "4.3" here. Click "Next>".
    3. A window appears allowing you to choose the installation folder. The default choice is: "C:\Program Files\EVRI\Solo_Predictor_43". Then click "Next".
    4. Solo_Predictor requires a version of the Matlab Runtime library.
      1. If the MATLAB Runtime library is not found on your computer then a window will appear telling you that it will need to be downloaded and installed. In this case you must enter the path for the installation folder to use. The default choice is: "C:\Program Files\MATLAB\MATLAB Runtime". Accept this or choose where you want to install it. This can take fifteen minutes or more to complete.
      2. If the required Matlab Runtime version is found on your computer then a window appears saying "MATLAB Runtime is already installed in:" and lists the location filepath. You can click "Next" to continue with installation of Solo_Predictor.
    5. A confirmation page appears summarizing the configuration choices. Click "Install>".
    6. A progress-bar window appears showing the installation progress until a window appears reporting "Installation completed successfully". It also gives the default install location for Solo_Predictor (C:\Program Files\EVRI\Solo_Predictor_43\application). Click "Finish" icon. You will launch Solo_Predictor by double-clicking on the Solo_Predictor icon (the Solo_Predictor.exe file) in your installation folder's "application" folder.
  4. Use Windows Explorer to navigate to the installation folder you entered in step 3 above and double-click on the Solo_Predictor.exe file to start it. If you used the default installation folder, namely under "C:\Program Files\", then you will need to start Solo_Predictor.exe "As administrator" the first time you start it.
  5. This opens the S_P configuration window where you can specify commonly used configuration settings. Details of these fields are available at: Solo Predictor Configuration Page
    1. You must enter the licensecode for Solo_Predictor in addition to any other changes you want to make, then click "Save".
    2. You may see a "Windows Security Alert" window appear. Click on the default button, "Allow access'.
  6. Solo_Predictor now starts and opens a Solo_Predictor logging console window.

Notes:

  • The settings file, "C:\Program Files\EVRI\Solo_Predictor\application\default.xml" is updated with your configuration inputs when you close the configuration window by clicking "Save".
  • The Solo_Predictor Configuration window only appears when Solo_Predictor is started for the first time. You must edit the saved settings file to make any subsequent changes to the configuration as this file is read whenever Solo_Predictor starts. Thus you can change any Solo_Predictor settings by editing this file and restarting Solo_Predictor.
  • A simple test to see if Solo_Predictor is working correctly is to use a web browser, for example Firefox, and this URL:
   http://127.0.0.1:2211/?:version
This assumes you are using the default port, 2211.
Specifying a Settings File

When Solo_Predictor is started by double-clicking on the installed Solo_Predictor.exe file it uses the settings file "default.xml" located in the same folder. If a shortcut file is created from this Solo_Predictor.exe then this shortcut can be edited ("Properties") to start in any specified folder, and then it will start Solo_Predictor using a "default.xml" settings file found in that specified folder, if it exists.

Solo_Predictor can also be started by a command entered in a terminal (Windows "cmd" or any other, for example Cmder). The simplest example is:

 "C:\Program Files\EVRI\Solo_Predictor_43\application\Solo_Predictor.exe"

which starts Solo_Predictor and uses the settings file "default.xml" found in this folder, if it exists. If this settings file does not exist then an error window appears which says: "Could not locate preferences file. Error in => startsolo.m at line 2".

It is possible to specify exactly which settings file should be used by including it as an argument to the command, for example:

 "C:\Program Files\EVRI\Solo_Predictor_43\application\Solo_Predictor.exe" "-loadsettings \"C:\Program Files\EVRI\Solo_Predictor_43\application\default_43.xml\""

In this case the Solo_Predictor executable and the settings file are specified by their full paths and so do not depend on any assumptions about where the executable starts. Note the need to escape the double-quotes around the path in the command's argument using a back-slash.

Linux

Location of Solo_Predictor startup files

Prior to version 4.3, the startup files for Solo_Predictor were located in the Solo_Predictor installation folder, e.g. "/usr/local/bin/Solo_Predictor41". For versions 4.3 and later, these same startup files are located in the "application" folder under Solo_Predictor, e.g. "/usr/local/bin/Solo_Predictor43/application".

Steps
  1. Download the .install installer from your Eigenvector account. Note your Solo_Predictor's license code as this will be needed to launch Solo_Predictor.
  2. Run the installer .install in Terminal by running ./Solo_Predictor_WebInstaller.install. You will be guided by an installation wizard which presents:
    1. "Solo" splash screen appears.
    2. Within one minute a wizard page appears identifying "Solo_Predictor M.N", where "M.N" is the version being installed, for example, we'll refer to version "4.3" here. Click "Next>".
    3. Choose the installation folder. The default choice is: "/usr/local/bin/Solo_Predictor_MN".
    4. If the MATLAB Runtime library is not found on your computer then a window will appear telling you that it will need to be downloaded and installed. In this case you must enter the path for the installation folder to use. The default choice is: "/usr/local/MATLAB/MATLAB_Runtime". Accept this or choose where you want to install it. This can take fifteen minutes or more to complete.
    5. License Agreement page. Click to accept, and "Next>".
    6. A confirmation page appears summarizing the configuration choices. Click "Install>".
    7. A progress-bar window appears showing the installation progress until a window appears reporting "Installation completed successfully". It also gives the default install location for Solo_Predictor (/usr/local/bin/Solo_Predictor_MN/application). The installer will also tell you to update the Terminal environment variables LD_LIBRARY_PATH and XAPPLRESDIR. Do this in Terminal before launching Solo_Predictor. Click "Finish" icon. You will launch Solo_Predictor by navigating to the location of Solo_Predictor and running the run_Solo_Predictor.sh file by executing ./run_Solo_Predictor.sh [MCR_Root], where MCR_Root is the location of the MATLAB Runtime. For example, Solo_Predictor 4.3 uses MATLAB v99 (R2020b) Runtime. So the way to launch Solo_Predictor under these conditions would be to run
 ./run_Solo_Predictor.sh /usr/local/MATLAB/MATLAB_Runtime/v99
    1. This opens the S_P configuration window where you can specify commonly used configuration settings. Details of these fields are available at: Solo Predictor Configuration Page
    2. You must enter the licensecode for Solo_Predictor in addition to any other changes you want to make, then click "Save".
    3. You may see a "Windows Security Alert" window appear. Click on the default button, "Allow access'.
    4. Solo_Predictor now starts and opens a Solo_Predictor logging console window.

Notes:

  • The settings file, "/usr/local/bin/Solo_Predictor_43/application/default.xml" is updated with your configuration inputs when you close the configuration window by clicking "Save".
  • The Solo_Predictor Configuration window only appears when Solo_Predictor is started for the first time. You must edit the saved settings file to make any subsequent changes to the configuration as this file is read whenever Solo_Predictor starts. Thus you can change any Solo_Predictor settings by editing this file and restarting Solo_Predictor.
  • A simple test to see if Solo_Predictor is working correctly is to use a web browser, for example Firefox, and this URL:
   http://127.0.0.1:2211/?:version
This assumes you are using the default port, 2211.
Specifying a Settings File

When Solo_Predictor is started file it uses the settings file "default.xml" located in the same folder. If a shortcut file is created from this Solo_Predictor then this shortcut can be edited ("Properties") to start in any specified folder, and then it will start Solo_Predictor using a "default.xml" settings file found in that specified folder, if it exists. If the default.xml settings file does not exist then an error window appears which says: "Could not locate preferences file. Error in => startsolo.m at line 2".

It is possible to specify exactly which settings file should be used by including it as an argument to the command, for example:

 ./run_Solo_Predictor.sh /usr/local/MATLAB/MATLAB_Runtime/v99 '-debug -loadsettings "/home/scott/default.xml"'

In this case the Solo_Predictor executable and the settings file are specified by their full paths and so do not depend on any assumptions about where the executable starts. Prior to or at the first start of Solo_Predictor, the user must enter a license code to enable the software. There are two ways of providing this information:

  1. Starting Solo_Predictor and provide the code on the Configuration Page. This same page allows you to change frequently modified settings. If you need to modify configuration options not included in this dialog, these must be done by manually modifying the default.xml file located in the main Solo_Predictor application folder.
  2. Adding the license code to the configuration file directly.

NOTE: If Solo_Predictor is installed as administrator but run as a different user, copies of default.xml may be stored in (%userprofile%\AppData\local\VirtualStore\Program Files\EVRI\Solo_Predictor). To update default.xml either delete the copy in the VirtualStore or update the copy.

Installing a New Version (Updating)

Installing a new version of Solo_Predictor into the same location ("Destination Folder", default = "C:\Program Files\EVRI\Solo_Predictor) as the earlier version is performed just like a new install. This means that the previous version's default.xml file will be overwritten, losing any special setting which might have been present there. In this case it is a good idea to save a copy of the earlier default.xml file for use with the new Solo_Predictor. Once a copy has been saved then proceed with installing the new Solo_Predictor. Once Solo_Predictor has been installed, then navigate to the Solo_Predictor executable as describe in the Installation Steps section above, and launch it, by right-click and "Run as administrator" for example.

When Solo_Predictor is used for the first time it opens a "Solo_Predictor_Configuration" window. click on the "Cancel" button. At this stage the new Solo_Predictor files will have been installed. Now edit the copy of the earlier default.xml file to insert the new Solo_Predictor license code value. Copy this file over the newly installed Solo_Predictor's default.xml file (this will require Admin privileges to copy into C:\Program Files\...). Finally, start Solo_Predictor as usual. The new default.xml file settings will be used and Solo_Predictor will start without the Solo_Predictor_Configuration window appearing.

Starting Solo_Predictor

Solo_Predictor is an executable file and can be started by manually running the executable. Executable programs can also be configured to start automatically when the computer system starts up, and this is desirable for a program like Solo_Predictor which acts as a prediction server. Solo_Predictor can be started by:

  1. Started manually by simply executing the Solo_Predictor executable file or shortcut.
  2. Configure it as an automatic start-up process, such as a service (on Windows) or daemon (on Linux). (see the SoloManager page for installation and configuration information)
  3. Prior to version 4.3 of Solo_Predictor it was possible for a client program to make a connection using the .NET EigenvectorTools objects, which could start Solo_Predictor. This option is no longer available due to changes in the MATLAB Runtime. See the EigenvectorTools object page for installation and configuration information.

Starting Solo_Predictor Manually

If starting Solo_Predictor by the first method then a status console window should appear:

Solo_Predictor Console

This window's menu options for stopping or restarting the server depend on the configuration of the Status Window (see below).

Solo_Predictor with SoloManager as a service/daemon

The second start up method of starting Solo_Predictor involves using a Windows service or daemon script which starts automatically when the system starts.. It is often important to ensure that Solo_Predictor is always available and for this reason we have added a SoloManager SoloManager program to monitor Solo_Predictor's availability. and to restart it if necessary. The SoloManager program can be run as a Windows service or Linux daemon.

To use Solo_Predictor with SoloManager please see the SoloManager Wiki page. In summary, this usually involves a) installing Java and adding its "bin" folder to your system PATH environmental variable, b) making a few changes under the [Solo_Predictor-install-location]\application\solomonitor folder.

On Windows you would edit the SoloManager.ini file, for example located at: C:\Program Files\EVRI\Solo_Predictor_44\application\solomonitor\SoloManager.ini

Modify entries in theSoloManager.ini to the correct values:

  1. startExecutableCommandPre to the path to the Solo_Predictor executable, such as: startExecutableCommandPre = C:\\Program Files\\EVRI\\Solo_Predictor_44\\application\\
  2. startExecutableCommandPost to Solo_Predictor command parameters, such as: startExecutableCommandPost = -loadsettings \\\"C:\\Program Files\\EVRI\\Solo_Predictor_44\\application\\default.xml\\\"
  3. outdir: Check that the "outdir" entry's folder does exist, for example:outdir = C:\\temp. SoloManager writes its log file to this location as SoloManagerLog.txt. This can be very helpful in identifying any problems which occur with SoloManager.

Note that on Windows systems it may be necessary to copy the SoloManager.ini file out from under "C:\Program Files\" to some other folder where you have permission to make edits, and then copy it back, in order to satisfy the Microsoft Windows file modification security.

SoloManager is packaged as a Java file, solomanager.jar, which can be started on-demand (Windows) by right-click and "Run as administrator" the solomanager.jar file, or from a command terminal. See SoloManager#Starting_SoloManager_Manually.

However, you will usually want to run SoloManager as a service and this can be done by

  1. copying or moving the SoloManager.ini file into the "C:\Program Files\EVRI\Solo_Predictor_44\application\solomonitor\service64" folder and
  2. running the Install_Service.bat and Start_Service.bat files which are located there.

SoloManager is then run as a service, ensuring that Solo_Predictor is available. See SoloManager#Starting_SoloManager_Automatically. There is also a Stop_Service.bat file to stop the SoloManager service.

This is a short summary of using SoloManager. Please refer to the SoloManager Wiki page for full details.

Configuration

All configuration of Solo_Predictor is accomplished through the default.xml file which is located in the program's main folder and/or through the Solo_Predictor Configuration Page. This XML file uses the Solo Settings File Format and contains a number of tags which can be edited by the user. Note that changes in this file will not be read by Solo_Predictor until the server is stopped and restarted.

The tags within the <socketserver> tag control the server settings. In each case, an options value is provided using standard XML notation:

 <optionname>value</optionname>

In addition, inside each opening tag, several attributes are set:

 <optionname class="numeric" size="[1,1]">1</optionname>

The "class" attribute should not be changed from the given value. The "size" attribute is informational only and can be omitted.

Load Settings command line flag

The user can specify a different XML file using the command line startup flag loadsettings.

 -loadsettings "filename"

This startup flag will load user settings from the XML file specified by the fully-qualified string "filename". A settings XML file can be created by using the "Save" option from the Preferences Expert or using the settings file format description. Often used with -clearsettings so that only the settings in the specified file are used.

If a file named Default.xml is present in the application folder or the top-level installation folder (usually C:/Program Files/EVRI/Solo or similar on Windows), this file will always be read before reading the file specified by the -loadsettings flag.


The following are the user-modifiable options. The expected class attribute is included in parentheses.

License Code

At the bottom of the configuration file is the licensecode tag which is empty in a new installation. Entering a code into this tag allows Solo_Predictor to start up without asking the user for the code. The license code, provided by Eigenvector Research, can be added to the file by simply entering it between the <licensecode></licensecode> tags. The next time the server is restarted, the code (if valid) will be used and Solo_Predictor will not prompt for a code. If the license code is a demonstration code and expires, or if the code is invalid, Solo_Predictor will display a dialog indicating the error when it starts up. When done, the license code tag would look like that shown below:

<licensecode>123456-3456789-12-34ab-cdef</licensecode>

Status Window and Controls Options

These options control functionality of the Solo_Predictor status window.

  • controls (class="string"): Manages the display and functionality of the status window. Valid settings include:
    • none: no status window will be given and all controls are hidden.
    • status: status window is shown, but all server controls are disabled.
    • limited: status window is shown and only the "restart" control is enabled.
    • full: status window is shown and all controls (stop/start/restart/exit) are enabled.
Except when "full" settings are used, the only means to stop and/or restart the server is by using operating-system-specific process kill commands ("Program Manager" in windows, the "Activity Monitor" in OS X, and the kill command in linux or unix). Default is "status".
  • max_screen_lines (class="numeric"): Defines the total number of past message lines displayed on the (on-screen) status window. Default is 20 lines.
  • pulseperiod (class="numeric"): Defines the number of seconds between "pulse" messages in the status window. Default is 15 seconds.


Log File

These options control the log file and the level of detail and age of messages retained.

  • log_severity (class="numeric"): Defines the minimum message "severity" which will be reported in the log file (on disk). The level must be one of the following:
0 = log all messages
1 = log all startup, shutdown, rejected connection and fatal error messages
2 = log fatal error messages only
3 = log no messages (disable logging).
The default level is 1 (one).
If the debug mode is on (see below), an additional setting is available:
-1 = log all messages including debug-mode information
  • max_log_size (class="numeric"): Defines the maximum log file size (in bytes). Solo_Predictor will discard old messages to keep the log file from exceeding this size. Default is 50000 (50 Kb).
  • logfile (class="string"): Gives the path and filename to use for the log file. By default, this is solo_pred.log in the user's temporary directory. The exact location of the temporary folder depends on the operating system. For example, this is usually:
Windows XP: \Documents and Settings\username\Local Settings\Temp.
Windows Vista, Windows 10: \Users\username\AppData\Local\Temp
  • log_backups (class="numeric"): Indicates how many "backup" copies of the log file to allow to exist at any one time. If zero, then the one log file will be rolled over and messages removed. If greater than zero, the existing log file will be rolled into a backup file when it reaches max_log_size bytes. Old backup files are renumbered in increasing order (allowing up to this number of backup files) and the oldest file is deleted. For example, a value of 2 will allow two backups of the log file (each max_log_size in bytes)
  • debug (class="numeric"): This tag is not normally listed in the default.xml file but can be added at any time to enable/disable the "debug" mode of Solo_Predictor. A value of 1 (one) will enable debug mode and 0 (zero) will disable it (the default). When debug mode is enabled, Solo_Predictor will display on the screen and optionally log in the log file (see log_severity above) details about each connection and action including information like timing of each step in processing, content of incoming messages, and names of requested files. This can be helpful in diagnosing issues with socket connections. Note that, because any messages being sent are logged and displayed, debug mode may significantly slow down processing if large messages are being passed in (e.g. large data files in XML format)

Server Connection Options

These options control the behavior of the socket server and the kind of connections it will accept.

  • port (class="numeric"): Defines the computer port on which the socket server will respond to requests. This value should be changed with great care as some sockets are used by the operating system and other software. The default port value of 2211 is selected to minimize conflict between known port uses. Additional ports which might be of use include: 2210, 2212, and 2005. Contact Eigenvector Research for more information on valid ports.
  • loopbackonly (class="numeric"): If set to 1 (one), the server will only respond to a client which is located on the same computer as the server. All external requests will be ignored. A value of 0 (zero) will respond to any IP address (see also validip option). Default is 1 (one).
  • validip (class="cell"): Gives a list of valid IP addresses to which the server may respond. If empty, any IP address client is permitted to contact the server (unless the loopbackonly option is set to 1 (one)). Remember that the server is limited to a given number of clients (usually 1 (one)) and once it has been contacted by that many clients, it cannot respond to any other clients. This setting only limits the clients who can contact the server before it has imprinted on a given client.
The ip addresses must be supplied as separate items each inside a set of tags with all tags enclosed in a set of tags. For example:

 <validip class="cell">

10.0.0.1 10.0.0.2 </validip>

  • privateworkspace (class="numeric"): If set to 1 (one), each client will have its own workspace to store objects and no client can access another client's objects. If set to 0 (zero), each client accesses the same workspace. A client may access and/or overwrite other client's objects. This may lead to unexpected results (if a given client expects a model to stay loaded but other clients are using the same object name and overwrite the model, for example). Default is one.
  • maxclients (class="numeric"): Maximum number of clients allowed to connect into server. If 1 (one), the first client to connect to the server will be the only client allowed to connect ever. If 0 (zero), no socket connections will be allowed. If set to the numeric value inf (infinity), there will be no limit to the number of clients allowed to connect. This final setting is used when Solo_Predictor is being used as a web server, for example.

Incoming Message Format and Timeout Settings

  • eomstring (class="string") End Of Message character or string. If non-empty, this character or string must be passed to indicate end of message. The same string will be appended onto any messages returned by the server. The use of an EOM string allows Solo_Predictor to function on higher-load systems or with large messages where the entire contents of the message may not be queued and delivered all at once. See Introduction to Socket Interfaces for more information. It is best to set a string which is very unique and will never show up in a common message, for example: **EndOfMessage**
  • tickletimeout (class="numeric") Number of seconds of delay allowed between opening socket and getting first character. At timeout, before sending client a space character. Required to tickle some clients into responding.
  • emptytimeout (class="numeric") Number of seconds of delay allowed before receiving first message from client. At timeout, throws an empty packet message.
  • eomtimeout (class="numeric") Number of seconds after which no more characters received indicates an end-of-message (generally for use with POST messages and EOMSTRING messages only).

Wait-For-File Options

Wait for file options control the optional Solo_Predictor wait-for-file engine. This engine will watch a given folder for a new file (with an optional specific file type). When a new file appears, the file will be automatically loaded as the object "data" and a specific script (stored in a disk file) will be executed. This script can use a :writefile command (see Script Construction section) to store results of an analysis in an output file. Files added to this folder remain there and are not moved or deleted by Solo_Predictor when they are processed.

  • waitforfile (class="string"): either "on" or "off" (the default). When "on", the wait-for-file functionality is enabled (although the waitfolder and waitscript must also be non-empty strings for wait-for-file to operate).
  • waitfolder (class="string"): defines the folder (local or networked) in which Solo_Predictor should look for new files.
  • waitfilespec (class="string"): defines the file specifications (if any) to which the wait-for-file should be limited. For example, waitfilespec = "*.spc" will only recognize .spc files appearing in the wait folder.
  • waitfilemode (class="String"): either "date" (default) or "name". When waitfilemode = "date" process files which are added to the waitfolder which are newer than the most recently run file. Note that this uses files' modification date, NOT the date or time when a file is dropped into the waitfolder. This may explain why "new" files dropped into the waitfolder are not being processed. Check their modification dates. Also note that files already present in the waitfolder when Solo_Predictor starts will not be processed as they are assumed to have already been processed. When waitfilemode = "name" process files which were not in the folder before. If there are multiple new files then they are processed in order based on their modification date, oldest first.
  • waitfileimporter (class="string") : defines the file import method to use. If empty (the default value), the file extension is used to determine the import method. This option allows overriding normal import behavior if the file extension is ambiguous (e.g. "dat") or otherwise misleading.
  • waitloadfile (class="string"): If "on", the contents of the file are loaded into the object named "data" in the Solo_Predictor workspace. If "off", the contents are not read and only the file name is passed (in the object named "filename")
  • waitscript (class="string"): defines the file containing the script to execute when a new file is found. This option must contain the entire path to the file. Note that the indicated script should expect to find the loaded data in the object named "data" in the current workspace (see waitloadfile above) and the file name in the "filename" object. NOTE: If no wait script is defined, any imported data will be added to the DataCache which is used by the Solo_Predictor Field Monitor and can also be accessed via a datacache scripting object.
  • waiterrorscript (class="string"): defines the file containing the script to execute if the file import or waitscript throws an error. This script can anticipate having the object "filename" in its workspace but should not anticipate any other objects.

Output Format Options

  • default_format (class="string"): Defines the default response format. This is the output format used by the server if no format type is included in the request script. Valid types are: "xml", "plain" or "html". See Scripting Language for more information on these formats. Default is "xml".
  • plaindelimiter (class="string", default = , ) Character which should be used to separate numerical values when outputting a vector in the plain text format. The comma is default (implying comma-separated-values) but can be any character (e.g. tab, semicolon). If a control-character is to be used, use regular expression notation such as "\t" or "\r" (without quotes) also accepted is hex notation, for example, use "\x20" to represent a space character:
<plaindelimiter class="string">\t</plaindelimeter>  <!-- tab character -->
  • writefilefolder (class="string"): Defines the top-level folder to which the :writefile and :export commands are allowed to write. These commands can ONLY write to this folder and any sub-folders within it. An empty string for writefilefolder indicates that :writefile and :export commands are NOT permitted.

User Timers

User timers allow you to schedule particular scripts to be run at specified intervals. These scripts could perform cleanup, or trigger hardware, or even system restarts (to clean up system resources). User timers primarily consist of specifying a script to run, a time interval at which the script should be run, and the recurrence of the event (one time, repeating).

User timers are created by adding one or more <usertimer> tags to the configuration file (within the socketserver tag) with the following possible properties set as tags within each outer tag:

Required Usertimer Properties

  • script : (class="string") Any valid Solo_Predictor script script to execute. Often uses an :include command to read a script.
  • name : (class="string") REQUIRED descriptive name for the timer object, should be unique.

Recommended Usertimer Properties

  • ExecutionMode : (class="string") [ 'fixedDelay' | 'fixedRate' | 'fixedSpacing' |{'singleShot'}] type of timer execution.
A timer follows the sequence: Queue --> Start --> Run --> End ... where "Queue" is an indefinite period of time in which other processes may delay the script starting, the following execution modes can be used:
'singleShot' = script is executed once (default)
'fixedRate' = script is queued for execution Period seconds after the last execution was queued (queue-queue = Period)
'fixedDelay' = script is queued for execution Period seconds after the last execution started (start-queue = Period).
'fixedSpacing' = script is queued for execution Period seconds after the last execution ended (end-start = Period)


  • Period : (class="numeric") [default = 1] seconds between executions if any mode other than 'singleShot'
  • BusyMode : (class="string") [{'drop'}| 'error' | 'queue' ] control overlapping timer executions. 'drop' ignores timer requests which occur while another timer process is executing. 'queue' keeps a queued list of executions which occured while another timer was executing and executes these missed actions in sequence. 'error' throws an error if two timers conflict.
  • StartDelay : (class="numeric") [default = 0] number of seconds to wait before initial execution.

Other Usertimer Properties:

  • error : (class="string") define how the timer should handle if an untrapped error occurs during the script. One of the following strings:
    'die' Let the timer die without action except log messages.
    'restart' [default] Attempt to restart the timer (see maxrestart setting below)
    'reboot' Reboot the computer (requires "shutdown" (Windows) or "reboot" (Linux) functions be on the system path)
    'stop' Stops Solo_Predictor (often used to trigger an alarm on the watchdog program.)
  • maxrestart : (class="numeric") number of times a timer can be restarted before switching to "errorrestart" error mode [default = 5]
  • errorrestart : (class="string") error mode (see error above) to use if restarts failed maxrestart times [default = 'die']

Web Access

The following elements appear within the socketserver element, as tags:

  • serverfolder (class="string"): The folder where files for web access are located.
  • requirelogin (class="numeric"): Does web access require login via authorization object? Choices are 'true' or 'false'.
  • loginfolder (class="string"): The folder were served files are stored for non-logged in users (used when requirelogin is true and user hasn't logged in).

Q and T Squared Statistics

The following elements appear within the socketparse element, as tags:

  • matchvars (class="string"): Governs whether variable matching to model is performed. Valid choices are: 'on' or 'off'. When 'on', variables provided in data are automatically matched to model before application (if possible - see MATCHVARS for more information). When 'off', mismatch of passed variables and those expected by model will return an error.
  • reducedstats (class="string"): Governs whether Q and T^2 statistics from models are "reduced" using the confidence limit set in the model.detail.reslim and model.detail.tsqlim fields. Valid choices are: 'off', 'on', or 'force'. If 'on', statistics accesed methods like .Q and .T2 are normalized using the value stored in the appropriate detail sub-field. If 'off', statistics are returned as calculated. If 'force', the old-style of normalization is used in which the raw fields (.ssqresiduals and .tsqs) are reduced so that any route to access the Q and T2 will return reduced values. Note that in 'on' mode, the non-reduced statistics will be returned by .ssqresiduals or .tsqs references.
  • contributions (class="string"): Governs detail of returned T^2 and Q contributions. Valid choices are: 'passed', 'used', and 'full'. Return contributions for:
    'passed' = only the variables passed by the client in the order passed. This mode allows the client to easily map contributions back to passed data and is the preferred mode.
    'used' = all variables used by the model including even variables which client did not provide. Variable order is that used by model and may not match the order passed by the client.
    'full' = all variables used or excluded by the model, including even variables which client did not provide. Variable order is that used by model and may not match the order passed by the client.

Evriscript Object Use

The following element may appear within the evriscript element, as a tag:

  • keywordonly (class="numeric"): Values 0 or 1. Default value 1 limits access to evriscripts to predefined objects only. Value 0 is required if customized evriscripts have been added to this product by Eigenvector Research.


Python Archived File

The following element may appear within the socketserver element, as a tag:

  • pythonarchivefile (class="string"): Path to location of Python archived file for Python Configuration. Setting the value for this tag is optional. If value is set, :configure_python will use this to build Python. Otherwise, :configure_python will use Conda to build Python. Configuring Python will allow access to Python-based evrimodel objects. See the Python configuration wiki entry for more details.


Example default.xml File

The following is an example of a typical Solo_Predictor default.xml configuration file.

<Settings>
  <Preferences>
    <socketserver>
      <controls class="string">limited</controls>
      <max_screen_lines class="numeric" size="[1,1]">20</max_screen_lines>
      <pulse_period class="numeric" size="[1,1]">15</pulse_period>
      <log_severity class="numeric" size="[1,1]">1</log_severity>
      <max_log_size class="numeric" size="[1,1]">50000</max_log_size>
      <logfile class="string">C:\Program Files\EVRI\Solo_Predictor\log_sp.txt</logfile>
      <port class="numeric" size="[1,1]">2211</port>
      <maxclients class="numeric" size="[1,1]">1</maxclients>
      <loopbackonly class="numeric" size="[1,1]">1</loopbackonly>
      <validip class="cell" />
      <privateworkspace class="numeric" size="[1,1]">1</privateworkspace>
      <eomstring class="string" />
      <tickletimeout class="numeric" size="[1,1]">1</tickletimeout>
      <emptytimeout class="numeric" size="[1,1]">2</emptytimeout>
      <eomtimeout class="numeric" size="[1,1]">3</eomtimeout>
      <waitforfile class="string">on</waitforfile>
      <waitfolder class="string">C:\temp\solopredictor\waitforSP</waitfolder>
      <waitfilespec class="string">*.mat</waitfilespec>
      <waitscript class="string">C:\temp\solopredictor\waitforSPscript.txt</waitscript>
      <writefilefolder class="string">C:\temp\solopredictor\outSP</writefilefolder>
      <default_format class="string">xml</default_format>
      <serverfolder class="string" />
      <pythonarchivefile class="string">C:\Users\johndoe\Desktop\pls_toolbox_windows_38.zip</pythonarchivefile>
    </socketserver>    
    <socketparse>
      <matchvars class="string">on</matchvars>
      <reducedstats class="string">on</reducedstats>
      <contributions class="string">passed</contributions>
    </socketparse>
    <evriscript>
      <keywordonly class="numeric" size="[1,1]">1</keywordonly>
    </evriscript>
    <allowedobjects>
      <allowed class="cell" size="[1,15]">
        <tr>
          <td class="string">dataset</td>
          <td class="string">evrigui</td>
          <td class="string">evriarchive</td>
          <td class="string">evriscript</td>
          <td class="string">bwteklaser</td>
          <td class="string">bwtekspecinterface</td>
          <td class="string">bwtekspectrometer</td>
          <td class="string">predictor</td>
          <td class="string">datacache</td>
          <td class="string">usertimer</td>
          <td class="string">resultitem</td>
          <td class="string">evriscript_step</td>
          <td class="string">evridb</td>
          <td class="string">evrimodel</td>
          <td class="string">tcast</td>
          <td class="string">evriauthentication</td>
        </tr>
      </allowed>
    </allowedobjects>
  </Preferences>
  <Licensecode class="string">########-#########-##-####-####</Licensecode>
</Settings>