VEEOpenSource Scripting

The scripting library provides the ability to transparently access programs written in a variety of scripting languages. This includes sharing data in both directions with these programs. And this enables the VEE user to utilize the full power of modern scripting languages. Scripting was developed by a University of Calgary team.

VEEOS Scripting enables access to world-class numerical and symbolic computation, as well as statistics, general programming, system analysis and much more.

scripting menu


The Script Server

Written in Python, the script server is the heart of VEEOS scripting capability. This small light code communicates with VEE and in turn has control and communications with the various language engines. The script server comprises three separate pieces of Python code along with an embedded Python installation. This work is open source and available from the Github project site.

Supported Languages

With the exception of the embedded Python interpreter, the user is expected to install and control their own selected version of the various languages. The server is written to be compatible with almost any version of the languages including 32 or 64 bits and most any platform. For details related to each language see the below documentation.

Scripting Configuration

After a scripting language is installed it is necessary to configure VEEOS such that the script server can automatically exercise the installed scripting language. In order to use the Script and ScriptPro capabilities of VEEOS, the configuration is done via a plain text (RC) file. This file may be manually edited or it may be edited using the ScriptConfig tool. In either case VEEOS reads this file automatically.

The relevant section of the default RC file looks like this:

# Scripting - modify to use server other than default
# gvar scriptHost Text <remote server IP or name>
gvar scriptPort Int32 65433
gvar scriptHost Text localhost

# Script options - uncomment as needed
#gvar scriptTimeout Int32 2
#gvar scriptExecutionMode Text DEBUG
#gvar scriptLoopDelay Real64 100m
#gvar scriptServerShutdownTimeout Int32 120

# Script engine install details - uncomment as needed
#gvar scriptPythonPath Text "VEEROOT/veeos/python/python.exe"
#gvar scriptInstalledPythonPath Text "full path"
#gvar scriptOctavePath Text "full path"
#gvar scriptRPath Text "full path"
#gvar scriptMaximaPath Text "full path"
#gvar scriptFijiPath Text "full path"
#gvar scriptSpicePath Text "full path"

Note that the system-wide RC file is <vee install dir>/veeos/etc/veeos.rc although other hierarchical locations work also. See the Bootstrap documentation. The ScriptConfig tool specifically edits the user's RC file <home directory>/veeos.rc.

Embedded Python

As part of the VEEOS library, a copy of Python is included. Since this is an embeddable version it is compact and fast. Version 3.8.10 (64 bit) was chosen since that way Windows 7 can be supported as well as more modern Windows. If Windows XP needs to be supported then the user can install Python 2.7 or 3.4 and configure scripting to use that install rather than the embedded python. NOTE that Python before 2.7 or 3.4 will probably not work due to unmet dependencies.

Remote Servers

VEEOS R2 is architected to allow for remote servers. This is generally untested but the intended process is below. Please direct any feedback you have to Stan Bischof

  1. Set up the script server on your remote machine.
    1. For Windows server: Copy the entire "python" directory from a VEEOS (<vee install dir>/veeos/python) installation to your remote server.
    2. For any other OS: Install python with the standard libraries and add in numpy
  2. Configure scripting to use the remote server. This is done via the RC file and the scriptPort and scriptHost variables
  3. If you are using Python scripting and do not need extended capabilities then you are all done. If not then follow the instructions for your chosen language, but remember that you are on a remote server so paths are there, not on the local machine.

Credits

Scripting in VEE was developed as a student project at the University of Calgary in spring/summer 2021. Led by Faculty Advisor Dr. Richard Wilson with the University's Cumming School of Medicine, students Faisal Hossain and Khaled Elmalawany from Computer Sciences spent many hours designing and developing the scripting interface as an extension of VEE. As a neuroscientist, Dr Wilson has long been an example of the classical VEE user: a non-programmer who nevertheless needs to automate various tasks. His most recent work has required significant image processing and ImageJ was the chosen tool. By sponsoring the scripting effort, Dr. Wilson gained access to many powerful tools including ImageJ (via the Fiji interface) from within his chosen VEE environment.  Stan Bischof provided technical support as well as integration into VEEOS. Special thanks to Keysight CEO Ron Nersesian who very graciously granted VEE licenses for use on this project.


© 2015-2025. All Rights Reserved. Stan Bischof (stan@worldbadminton.com). Last updated 03 February 2023 13:04.