Matlab and Octave in the 52°North Web Geoprocessing Framework
Support Matlab and Octave as processing backends from the WPS
. They are powerful and widely-spread analysis environments with a large user base.
How to do it
The are several ways we can integrate a scripting language into the 52°North WPS
Decouple the annotation mechanism from WPS4R
and use in-script annotations for Octave as well. This effectively results in something like WPS4Octave
. We parse the script in Java to generate the process metadata and then pass the calls in the script to Matlab or Octave.
Matlab or Octave can run remotely or on the same machine for this.
Estimate: potentially high, but would have similarly easy integration for script developers.
Thoughts: I prefer the highest resusability of existing scripts. Though, we should assess the libs in the first place. -- MatthesRieke
Implemented by https://github.com/autermann/matlab-wps
Thoughts: Easy configuration file, no changes to existing scripts.
Command line interface
Calling full scripts from the command line. This could best be wrapped in a MovingCode
package which effectively results in having "MC Octave/MC Matlab", respectively OctaveCLIProcessor
similar to OctaveCLIProcessor
similar to PythonCLIProcessor
. The process metadata is written by hand and a wrapper script might be needed to handle the input and output data.
Estimate: potentially low, quickly done for specific scripts, but process not as automated.
Thoughts: Clean with low overheads, but might reduce reusability of scripts (users have to provide process metadata, e.g. as WPS ProcessDescription
). -- MatthesRieke
Java processes call Matlab/Octave methods. Similar to the ps example we effectively do all input and output handling in Java and only pass on simple types/data to Octave for the calculation.
Estimate: Not really nice... too inflexible, people must write Java and Matlab/Octave.
Thoughts: Veto. -- MatthesRieke
INTAMAP2 - ASTON / GeoViQua
What would be nice is to have something like the WPS4R
but for Octave. This fits into GeoViQua
in WP3: A domain scientist writes Matlab/Octave regularly and would like to have some method that he could annotate my Matlab/Octave function with, and these would then be exposed as WPS
/ Geoprocessing Service framework services, this gives me a way to quickly provide methods to compute quality indicators.
Collocated data from GECAaaS
is forwarded in a WPS
service chain to another WPS
that calculates quality indicators using an Octave script.
INTAMAP2 is available here: http://uncertws.aston.ac.uk/madhu/
. The service interface uses Richard Jones' processing service framework, not WPS
, and connects to Octave (see intamap_Madhu.pptx
). The whole thing is very simple in the end, once you know the right libraries to use.
Code is provided under
- Octave code: gpmlab-octave.zip
- Attached is a version of GPMLab which runs in Octave 3.2.4.
- You need to first compile the mex files (see README). There is a function, at the root, called build_emulator.m. This builds a multi_output emulator (integrating out all hyperparameters but length scales, using Matern3 kernel). You need to pass in xtrn, ytrn and xpred. It returns the mean and std dev of ypred as matrices (1 column per output). See the test_build_emulator.m script for an example usage.
- Java interface: InterpolateOctave.java