Physics logo
Lancaster University Homepage
You are here:  SPP / Software


We have written software to enable us to solve various tasks. This software is made available in the hope it will be useful to others. We make no promises about its suitability, reliability or performance. Unless indicated otherwise all software listed on this page is distributed under version 2 of the GNU General Public License. By downloading software listed on this page you will be deemed to have accepted the terms of the licence.

Software for Matlab

The following packages may be useful to Matlab users:

Functions for handling property name/value pairs
Matlab makes use of property name/value pairs for its GUI functions which is a very flexible and extensible way of setting default parameters. Unfortunately Matlab does not appear to provide any capability for user functions to implement such behaviour. Three functions are provided to rectify this matter:
takes a set of options (as a struct) and reads a variable argument list (see Matlab's varargin help page), returning the modified set of options and an index into varargin indicating unknown name/value pairs.
assists in creating parameter name/value pairs from a struct.
is helpful in warning the user of any unknown parameter names (which may be caused by spelling or typographic errors).
Author: Steve Marple.
License: GNU GPL v2.
Download current version: name_value_pairs.tar.gz
Matlab's zoom function does not provide an advertised interface to linked zooming, which would be very useful for axes which share a common time interval. tazoom (time axis zoom) provides this behaviour. Unlike other linked zoom functions it remembers the axes properties when it was invoked and resets them afterwards. tazoom is compatible with the timetick function in the time classes (see below); when timetick is used to label axes the labels are automatically regenerated after zooming with tazoom. By default tazoom does not allow zooming outside of the original axis limits (which we feel is an improvement over the standard Matlab zoom command). tazoom uses the axes UserData property to store state information, other functions can share access to UserData if they follow some simple guidelines.
Author: Steve Marple.
License: GNU GPL v2.
Includes: name/value pairs (see above).
Download current version: tazoom.tar.gz
Time classes
Classes to perform arithmetic with times and durations. Implemented as two classes, the timestamp class is for dates, while the timespan is for durations. The benefit of encapsulating all time calculations into classes is that all the fiddly details involved with dealing with time, (e.g., month and year boundaries, leap years) are no longer the user’s responsibility. The classes can be used for vectorised time calculations. Printing time details into strings is easily accomplished with the strftime function. These classes are used extensively within our MIA processing software, and will be useful to users who wish to load Matlab format data created by MIA. We dislike the Matlab serial date numbers as they do not have sufficient resolution to handle seconds whilst simultaneously storing 2000 years. We particularly dislike MathWorks cdfepoch class partly because it does not provide any useful arithmetic functions but mostly because it isn't internally vectorised, so using vectors of cdfeoch objects is very inefficient.
We provide a timetick function as a replacement for Matlab’s datetick function. Axis labelling functions correctly even when plots are zoomed (requires a minor patch to the standard zoom function to have the labels updated). The MIA software already contains the time classes.
Author: Steve Marple.
License: GNU GPL v2.
Includes: name/value pairs (see above).
Download current version: time.tar.gz
CDF tools
Tools for reading, writing and querying CDF files. This is a completely independent implementation to that provided by MathWorks. It uses hyperread/hyperwrite functions and does not create cell arrays, resulting in much better performance. You may find the time classes helpful to support the CDF epoch data type.
Author: Steve Marple.
License: GNU GPL v2.
Includes: name/value pairs (see above).
Download current version: cdf_tools.tar.gz
All of the above
All of the above in one convenient tar file.
Author: Steve Marple.
License: GNU GPL v2.
Includes: name/value pairs (see above).
Download current version: all.tar.gz
Multi-Instrument Analysis (MIA) toolbox
A Matlab toolbox to process riometer and other solar-terrestrial physics data, such as from magnetometers and all-sky cameras. This software is not publically available, but is available to members of the GLObal RIometer Array (GloRiA) project.
Author: Steve Marple with contributions from Andrew Senior and others.
License: Restricted.

You may also like to check out the m_map software by Rich Pawlowicz of the University of British Columbia. We make good use of this Matlab toolbox inside MIA to plot our data onto geographic maps.

Software for Linux

Kallisto driver
Linux driver for the Kallisto GPS board. Other software exists but this kernel module has been written and tested to ensure the clock is not set until GPS lock has been achieved, and that setting the clock is stopped when the GPS signal is lost. The auxillary outputs can be controlled with ioctl system calls. The last message #1000 is available via the /proc interface.
Author: Steve Marple.
License: GNU GPL v2.
Download: soon
Pico ADC driver
Linux device driver for the Pico ADC12 analogue to digital converter. Implemented as a kernel module the device can be read through a device file (with either read or ioctls). A /proc interface allows the ASCII value to be read for debugging purposes.
Author: Steve Marple.
License: GNU GPL v2.
Download: soon
iptables configuration
This is my latest snapshot of James C. Stephens Linux iptables configuration script. This contains my modifications and should perhaps be considered as a beta release. For a production system you probably want to download the original version. Unlike other scripts for iptables this one attempts to configure your firewall based on the configuration scripts for various daemons. My version splits the code into separate scripts, one for each service, in much the same way as System V init scripts work. My modifications require you to have perl installed, and also my ip_cmp program. I've added modules to add rules for Apache, PostgreSQL, and Samba. I've also modified the nameservers configuration so that if you are running a caching nameserver it automatically adds routes for your named forwarders.
Author: James C. Stephens, Steve Marple.
Download: iptables.tar.gz
My ip_cmp program is a small perl utility for comparing IP addresses. It allows IP addresses (and IP address ranges) to be tested to see if they are equivalent, if they intersect, or to find the unique set. This is very useful when writing an iptables configuration script.
Author: Steve Marple.
License: GNU GPL v2.
Download current version: ip_cmp
WvDial is a program that makes it easy to connect your Linux workstation to the Internet. Unfortunately the maximum timeout for connections is hard-coded to 60 seconds. This patch adds an extra configuration option ("Dial Timeout") so that the timeout can be extended for connections which take longer than one minute.
Modified by: Steve Marple.
License: GNU GPL v2.
Download: the patch, an RPM (RH 9, i386), or the SRPM for RH 9.

Software for Microsoft Windows

USBSock USB-Socket interface layer
A Windows application that translates incoming and outgoing USB bulk transfers into TCP/IP (WinSock) socket I/O. Useful for interfacing tools that cannot access the USB directly to USB devices. Potentially also useful for debugging and remote access to USB devices. Used in our Java-based SPARKLE project.
Author: Martin Grill.
License: n/ah4_br Download: contact author
Keo Consultants Filter Wheel Driver for Diffraction MaxIm DL/CDD
This is a driver (plug-in) enabling Diffraction Ltd's Maxim DL/CCD software package to talk to a Keo Consultants (now part of Keo Scientific) 3 inch 6 position filter wheel on a serial port (or a USB-to-serial converter).
Installation instructions: Copy the DLL file into your 'C:\Program Files\Diffraction Limited\MaxIm DL V4' directory.
Author: Martin Grill.
License: distribute freely (binary only)
Download: CCDPlugKEO3in6pos.dll

Matlab© is a copyright of The Mathworks, Inc.
Linux© is a copyright of Linus Torvalds.
Windows is a registered trademark of Microsoft Corporation in the United States and other countries.

A Lancaster University approved page by Steve Marple.
© Lancaster University.