# Difference between revisions of "TISEAN package:Procedure"

(new page, copy of TISEAN_package) |
(merge table of functions with procedure) |
||

Line 9: | Line 9: | ||

The first chart depicts what to do with each function in the function table. I mainly focuses on those functions that might already implemented in Octave. | The first chart depicts what to do with each function in the function table. I mainly focuses on those functions that might already implemented in Octave. | ||

− | [[File:Work_flow_TISEAN.png]] | + | [[File:Work_flow_TISEAN.png|400px|center]] |

The chart below depicts how to decide which type of port should be utilized. | The chart below depicts how to decide which type of port should be utilized. | ||

− | [[File:Porting_Programs_TISEAN.png]] | + | [[File:Porting_Programs_TISEAN.png|400px|center]] |

Both of those charts can be combined into a large one that shows all of the work together. | Both of those charts can be combined into a large one that shows all of the work together. | ||

− | [[File:Flow_Together_TISEAN.png]] | + | [[File:Flow_Together_TISEAN.png|400px|center]] |

+ | == Table of functions == | ||

+ | In reference to the TISEAN library alphabetical order of programs which is located [http://www.mpipks-dresden.mpg.de/~tisean/Tisean_3.0.1/docs/alphabetical.html here]. | ||

+ | |||

+ | The choice whether a program exist in Octave is based only on comparing package/octave documentation with the TISEAN documentation. As of now I have not compared any code, nor checked if any sample data gives the same results from both functions (the octave ones and the TISEAN ones). | ||

+ | |||

+ | The legend to understand the table is as follows: | ||

+ | {| class="wikitable" | ||

+ | |-style="background: LightGreen" | ||

+ | |Green means the function is ported, tested or is not needed | ||

+ | |-style="background: LightSalmon" | ||

+ | |Red means the function was thought to have been similar but isn't | ||

+ | |-style="background: Yellow" | ||

+ | |Yellow means that the correlation between the TISEAN and Octave function needs to be verified | ||

+ | |- | ||

+ | |No color means that nothing about this function has been determined | ||

+ | |} | ||

+ | |||

+ | {| class="wikitable" | ||

+ | |- | ||

+ | ! Program Name !! Program Description !! Corresponding Octave Function !! Lanuguage of Origin !! How to port !! Status | ||

+ | |- | ||

+ | | arima-model || Fit and possibly iterate an ARIMA model || generalizes TSA arma functions || C || wrapped in C++/mfile/octfile code || | ||

+ | |- | ||

+ | |ar-model || Fit and possibly iterate an Autoregessive model || 'aar' in TSA; see also: aarmam, adim, amarma, mvaar from TSA || C || wrapped in C++/mfile/octfile code || | ||

+ | |- | ||

+ | |ar-run || Iterate an Autoregessive model || Same as above || FORTRAN || wrapped in C++/mfile/octfile code || | ||

+ | |-style="background: LightGreen" | ||

+ | |av-d2 || Simply smooth output of d2 || Can be implemented with filter in core || C || || | ||

+ | |-style="background: LightGreen" | ||

+ | |boxcount || Renyi Entopies of Qth order || None in GNU Octave (maybe in info-theory but it is not worth the pain) || C || wrapped in C++/mfile/octfile code || | ||

+ | |-style="background: LightGreen" | ||

+ | |c1 || Fixed mass estimation of D1 || None in GNU Octave || FORTRAN || wrapped in C++/mfile/octfile code || | ||

+ | |-style="background: LightGreen" | ||

+ | |c2d || Get local slopes from correlation integral || None in GNU Octave || FORTRAN || wrapped in C++/mfile/octfile code || | ||

+ | |-style="background: LightGreen" | ||

+ | |c2g || Gaussian kernel of C2 || None in GNU Octave || FORTRAN || wrapped in C++/mfile/octfile code || | ||

+ | |-style="background: LightGreen" | ||

+ | |c2t || Takens estimator of D2 || None in GNU Octave || FORTRAN || wrapped in C++/mfile/octfile code || | ||

+ | |-style="background: LightGreen" | ||

+ | |choose || Choose rows and/or columns from a data file || Does not need to be ported || FORTRAN || ----- || Not Needed | ||

+ | |-style="background: LightGreen" | ||

+ | |compare || Compares two data sets || Does not need to be ported || FORTRAN || ------ || Not Needed | ||

+ | |-style="background: LightGreen" | ||

+ | |corr, autocorr || Autocorrelation function || xcorr in signal || corr -C, autocorr (faster according to documentation) - FORTRAN || ------- || Different usage, same result | ||

+ | |-style="background: LightGreen" | ||

+ | |d2 || Correlation dimension d2 || None in GNU Octave || C || wrapped in C++/mfile/octfile code || | ||

+ | |-style="background: LightGreen" | ||

+ | |delay || Creates delay embedding || None in GNU Octave (easy to implement in Octave but not worth the effort) || C || wrapped in C++/mfile/octfile code || Ported&Tested | ||

+ | |-style="background: LightGreen" | ||

+ | |endtoend || Determine end-to-end mismatch || None in GNU Octave || FORTRAN || wrapped in C++/mfile/octfile code || Ported&Tested | ||

+ | |- | ||

+ | |events || Interval/event conversion || None in GNU Octave || FORTRAN || To be reimplemented as m-file || | ||

+ | |-style="background: LightSalmon" | ||

+ | |extrema || Determine the extrema of a time series || findpeaks in signal is *not* the same || C || || | ||

+ | |-style="background: LightGreen" | ||

+ | |false_nearest || The false nearest neighbor algorithm || None in GNU Octave || C || wrapped in C++/mfile/octfile code || Ported&Tested | ||

+ | |-style="background: LightGreen" | ||

+ | |ghkss || Nonlinear noise reduction || None in GNU Octave || C || wrapped in C++/mfile/octfile code || Ported&Tested | ||

+ | |-style="background: LightGreen" | ||

+ | |henon || Create a Hénon time series || None in GNU Octave || FORTRAN || To be reimplemented as m-file || Ported&Checked | ||

+ | |-style="background: LightGreen" | ||

+ | |histogram || Creates histograms || hist in core || C || || Different usage, same result | ||

+ | |-style="background: LightGreen" | ||

+ | |ikeda || Create an Ikeda time series || None in GNU Octave || FORTRAN || To be reimplemented as mfile || Ported&Tested | ||

+ | |- | ||

+ | |intervals || Event/intervcal conversion || Might exist under different name || FORTRAN || To be reimplemented as mfile || | ||

+ | |-style="background: LightGreen" | ||

+ | |lazy || Simple nonlinear noise reduction || None in GNU Octave || FORTRAN || wrapped in C++/mfile/octfile code || Ported&Tested | ||

+ | |-style="background: LightGreen" | ||

+ | |lfo-ar || Locally first order model vs. global AR model (old ll-ar) || None in GNU Octave || C || wrapped in C++/mfile/octfile code || | ||

+ | |-style="background: LightGreen" | ||

+ | |lfo-run || Iterate a locally first order model (old nstep) || None in GNU Octave || C || wrapped in C++/mfile/octfile code || | ||

+ | |-style="background: LightGreen" | ||

+ | |lfo-test || Test a locally first order model (old onestep) || None in GNU Octave || C || wrapped in C++/mfile/octfile code || | ||

+ | |-style="background: Yellow" | ||

+ | |lorenz || Create a Lorenz time series || Can be implemented in GNU Octave using lsode or odepkg|| FORTRAN || mfile || | ||

+ | |- | ||

+ | |low121 || Time domain low pass filter || There are lowpass filters in Octave: buttap, cheb1ap, cheb2ap, ellipap, sftrans, but I don't think they perform this task || C || Reimplement as mfile || | ||

+ | |-style="background: LightGreen" | ||

+ | |lyap_k || Maximal Lyapunov exponent with the Kantz algorithm || None in GNU Octave || C || wrapped in C++/mfile/octfile code || | ||

+ | |-style="background: LightGreen" | ||

+ | |lyap_r || Maximal Lyapunov exponent with the Rosenstein algorithm || None in GNU Octave || C || wrapped in C++/mfile/octfile code || | ||

+ | |-style="background: LightGreen" | ||

+ | |lyap_spec || Full spectrum of Lyapunov exponents || None in GNU Octave || C || wrapped in C++/mfile/octfile code || | ||

+ | |-style="background: LightGreen" | ||

+ | |lzo-gm || Locally zeroth order model vs. global mean || None in GNU Octave || C || wrapped in C++/mfile/octfile code || Ported&Tested | ||

+ | |-style="background: LightGreen" | ||

+ | |lzo-run || Iterate a locally zeroth order model || None in GNU Octave || C || wrapped in C++/mfile/octfile code || Ported&Tested | ||

+ | |-style="background: LightGreen" | ||

+ | |lzo-test || Test a locally zeroth order model (old zeroth) || None in GNU Octave || C || wrapped in C++/mfile/octfile code || Ported&Tested | ||

+ | |- | ||

+ | |makenoise || Produce noise || Rand exists || Should be implemented as mfile using Octave rand functions || wrapped in C++/mfile/octfile code || | ||

+ | |- | ||

+ | |mem_spec || Power spectrum using the maximum entropy principle || None in GNU Octave || C || wrapped in C++/mfile/octfile code || | ||

+ | |-style="background: LightGreen" | ||

+ | |mutual || Estimate the mutual information || None in GNU Octave || C || wrapped in C++/mfile/octfile code || Ported&Tested | ||

+ | |-style="background: Yellow" | ||

+ | |notch || Notch filter || pei_tseng_notch, needs to be verified || FORTRAN || wrapped in C++/mfile/octfile code || | ||

+ | |- | ||

+ | |nstat_z || Nonstationarity testing via cross-prediction || None in GNU Octave || C ||wrapped in C++/mfile/octfile code || | ||

+ | |-style="background: LightGreen" | ||

+ | |pca, pc || Principle component analysis || 'pcacov' if likely the equivalent; pricomp in statistics || pca - C, pc - FORTRAN || wrapped in C++/mfile/octfile code || Ported&Tested | ||

+ | |-style="background: LightGreen" | ||

+ | |poincare || Create Poincaré sections || None in GNU Octave || C || wrapped in C++/mfile/octfile code || Ported&Tested | ||

+ | |-style="background: LightSalmon" | ||

+ | |polyback || Fit a polynomial model (backward elimination) || polyfit, detrend, wpolyfit are not similar || C || wrapped in C++ || Porting needed | ||

+ | |-style="background: LightGreen" | ||

+ | |polynom || Fit a polynomial model || same as above || C || || | ||

+ | |-style="background: LightSalmon" | ||

+ | |polynomp || Fit a polynomial model (reads terms to fit from file) || same as above || C || || | ||

+ | |-style="background: LightSalmon" | ||

+ | |polypar || Creates parameter file for polynomp || same as above || C || || | ||

+ | |-style="background: LightGreen" | ||

+ | |predict || Forecast discriminating statistics for surrogates || None in GNU Octave || FORTRAN || wrapped in C++/mfile/octfile code || Same as lzo_test; Not Needed | ||

+ | |- | ||

+ | |randomize || General constraint randomization (surrogates) || There are random function, but I don't think this one exists || FORTRAN || wrapped in C++/mfile/octfile code || | ||

+ | |- | ||

+ | |randomize_spikeauto_exp_random || Surrogate data preserving event time autocorrelations || Same as above || FORTRAN || wrapped in C++/mfile/octfile code || | ||

+ | |- | ||

+ | |randomize_spikespec_exp_event || Surrogate data preserving event time power spectrum || Same as above || FORTRAN || wrapped in C++/mfile/octfile code || | ||

+ | |-style="background: LightGreen" | ||

+ | |rbf || Radial basis functions fit || None in GNU Octave || C || wrapped in C++/mfile/octfile code || | ||

+ | |- | ||

+ | |recurr || Creates a recurrence plot || None in GNU Octave || C || wrapped in C++/mfile/octfile code || | ||

+ | |- | ||

+ | |resample || Resamples data || There is 'resample' in Octave, but I believe it does something else || C || wrapped in C++/mfile/octfile code || | ||

+ | |- | ||

+ | |rescale || Rescale data set || This should be in Octave, cannot find... || C || wrapped in C++/mfile/octfile code || | ||

+ | |-style="background: LightGreen" | ||

+ | |rms || Rescale data set and get mean, variance and data interval || This should be in Octave, cannot find... || FORTRNAN || wrapped in C++/mfile/octfile code || Not Needed | ||

+ | |-style="background: Yellow" | ||

+ | |sav_gol || Savitzky-Golay filter || sgolayfilt in signal || C || || | ||

+ | |-style="background: LightGreen" | ||

+ | |spectrum || Power spectrum using FFT || abs (fft (;)) || FORTRAN || Rewrite as m-file || Ported&Tested | ||

+ | |- | ||

+ | |spikeauto || Autocorrelation function of event times || similar to above || FORTRAN || || | ||

+ | |- | ||

+ | |spikespec || Power spectrum of event times || ar_psd, cpsd is the closest but I do not think they are the same || FORTRAN || || | ||

+ | |- | ||

+ | |stp || Creates a space-time separation plot || None in GNU Octave || FORTRAN || wrapped in C++/mfile/octfile code || | ||

+ | |-style="background: LightGreen" | ||

+ | |surrogates || Creates surrogate data || None in GNU Octave || FORTRAN || wrapped in C++/mfile/octfile code || Ported&Tested | ||

+ | |-style="background: LightGreen" | ||

+ | |timerev || Time reversal discrimating statistics for surrogates || None in GNU Octave || FORTRAN || To be reimplemented as mfile || Ported&Tested | ||

+ | |-style="background: LightGreen" | ||

+ | |upo || Finds unstable periodic orbits and estimates their stability || None in GNU Octave || FORTRAN || wrapped in C++/mfile/octfile code || Ported&Tested | ||

+ | |-style="background: LightGreen" | ||

+ | |upoembed || Takes the output of upo and create data files out of it || None in GNU Octave || FORTAN || wrapped in C++/mfile/octfile code || Ported&Tested | ||

+ | |- | ||

+ | |wiener1, wiener2 || Wiener filter || Wiener process exists, might be similar || FORTRAN || wrapped in C++/mfile/octfile code || | ||

+ | |- | ||

+ | |xc2 || Cross-correlation integral || xcorr2 - Needs to be verified that works the same way || FORTRAN || wrapped in C++/mfile/octfile code || | ||

+ | |-style="background: Yellow" | ||

+ | |xcor || Cross-correlations || xcorr - Needs to be verified that works same way || C|| wrapped in C++/mfile/octfile code || | ||

+ | |- | ||

+ | |xrecur || Cross-recurrence Plot || xcorr, or xcorr2 or another function might cover this || C || wrapped in C++/mfile/octfile code || | ||

+ | |-style="background: LightGreen" | ||

+ | |xzero || Locally zeroth order cross-prediction || None in GNU Octave || C || wrapped in C++/mfile/octfile code || | ||

+ | |} | ||

+ | |||

[[Category:Octave-Forge]] | [[Category:Octave-Forge]] |

## Revision as of 08:46, 11 August 2015

## Porting TISEAN

This section describes the process employed during porting TISEAN package into an Octave Package. This project was started as part of the Google Summer of Code 2015.

The current progress can be viewed here.

To aid in understanding the task there are some charts.

The first chart depicts what to do with each function in the function table. I mainly focuses on those functions that might already implemented in Octave.

The chart below depicts how to decide which type of port should be utilized.

Both of those charts can be combined into a large one that shows all of the work together.

## Table of functions

In reference to the TISEAN library alphabetical order of programs which is located here.

The choice whether a program exist in Octave is based only on comparing package/octave documentation with the TISEAN documentation. As of now I have not compared any code, nor checked if any sample data gives the same results from both functions (the octave ones and the TISEAN ones).

The legend to understand the table is as follows:

Green means the function is ported, tested or is not needed |

Red means the function was thought to have been similar but isn't |

Yellow means that the correlation between the TISEAN and Octave function needs to be verified |

No color means that nothing about this function has been determined |

Program Name | Program Description | Corresponding Octave Function | Lanuguage of Origin | How to port | Status |
---|---|---|---|---|---|

arima-model | Fit and possibly iterate an ARIMA model | generalizes TSA arma functions | C | wrapped in C++/mfile/octfile code | |

ar-model | Fit and possibly iterate an Autoregessive model | 'aar' in TSA; see also: aarmam, adim, amarma, mvaar from TSA | C | wrapped in C++/mfile/octfile code | |

ar-run | Iterate an Autoregessive model | Same as above | FORTRAN | wrapped in C++/mfile/octfile code | |

av-d2 | Simply smooth output of d2 | Can be implemented with filter in core | C | ||

boxcount | Renyi Entopies of Qth order | None in GNU Octave (maybe in info-theory but it is not worth the pain) | C | wrapped in C++/mfile/octfile code | |

c1 | Fixed mass estimation of D1 | None in GNU Octave | FORTRAN | wrapped in C++/mfile/octfile code | |

c2d | Get local slopes from correlation integral | None in GNU Octave | FORTRAN | wrapped in C++/mfile/octfile code | |

c2g | Gaussian kernel of C2 | None in GNU Octave | FORTRAN | wrapped in C++/mfile/octfile code | |

c2t | Takens estimator of D2 | None in GNU Octave | FORTRAN | wrapped in C++/mfile/octfile code | |

choose | Choose rows and/or columns from a data file | Does not need to be ported | FORTRAN | ----- | Not Needed |

compare | Compares two data sets | Does not need to be ported | FORTRAN | ------ | Not Needed |

corr, autocorr | Autocorrelation function | xcorr in signal | corr -C, autocorr (faster according to documentation) - FORTRAN | ------- | Different usage, same result |

d2 | Correlation dimension d2 | None in GNU Octave | C | wrapped in C++/mfile/octfile code | |

delay | Creates delay embedding | None in GNU Octave (easy to implement in Octave but not worth the effort) | C | wrapped in C++/mfile/octfile code | Ported&Tested |

endtoend | Determine end-to-end mismatch | None in GNU Octave | FORTRAN | wrapped in C++/mfile/octfile code | Ported&Tested |

events | Interval/event conversion | None in GNU Octave | FORTRAN | To be reimplemented as m-file | |

extrema | Determine the extrema of a time series | findpeaks in signal is *not* the same | C | ||

false_nearest | The false nearest neighbor algorithm | None in GNU Octave | C | wrapped in C++/mfile/octfile code | Ported&Tested |

ghkss | Nonlinear noise reduction | None in GNU Octave | C | wrapped in C++/mfile/octfile code | Ported&Tested |

henon | Create a Hénon time series | None in GNU Octave | FORTRAN | To be reimplemented as m-file | Ported&Checked |

histogram | Creates histograms | hist in core | C | Different usage, same result | |

ikeda | Create an Ikeda time series | None in GNU Octave | FORTRAN | To be reimplemented as mfile | Ported&Tested |

intervals | Event/intervcal conversion | Might exist under different name | FORTRAN | To be reimplemented as mfile | |

lazy | Simple nonlinear noise reduction | None in GNU Octave | FORTRAN | wrapped in C++/mfile/octfile code | Ported&Tested |

lfo-ar | Locally first order model vs. global AR model (old ll-ar) | None in GNU Octave | C | wrapped in C++/mfile/octfile code | |

lfo-run | Iterate a locally first order model (old nstep) | None in GNU Octave | C | wrapped in C++/mfile/octfile code | |

lfo-test | Test a locally first order model (old onestep) | None in GNU Octave | C | wrapped in C++/mfile/octfile code | |

lorenz | Create a Lorenz time series | Can be implemented in GNU Octave using lsode or odepkg | FORTRAN | mfile | |

low121 | Time domain low pass filter | There are lowpass filters in Octave: buttap, cheb1ap, cheb2ap, ellipap, sftrans, but I don't think they perform this task | C | Reimplement as mfile | |

lyap_k | Maximal Lyapunov exponent with the Kantz algorithm | None in GNU Octave | C | wrapped in C++/mfile/octfile code | |

lyap_r | Maximal Lyapunov exponent with the Rosenstein algorithm | None in GNU Octave | C | wrapped in C++/mfile/octfile code | |

lyap_spec | Full spectrum of Lyapunov exponents | None in GNU Octave | C | wrapped in C++/mfile/octfile code | |

lzo-gm | Locally zeroth order model vs. global mean | None in GNU Octave | C | wrapped in C++/mfile/octfile code | Ported&Tested |

lzo-run | Iterate a locally zeroth order model | None in GNU Octave | C | wrapped in C++/mfile/octfile code | Ported&Tested |

lzo-test | Test a locally zeroth order model (old zeroth) | None in GNU Octave | C | wrapped in C++/mfile/octfile code | Ported&Tested |

makenoise | Produce noise | Rand exists | Should be implemented as mfile using Octave rand functions | wrapped in C++/mfile/octfile code | |

mem_spec | Power spectrum using the maximum entropy principle | None in GNU Octave | C | wrapped in C++/mfile/octfile code | |

mutual | Estimate the mutual information | None in GNU Octave | C | wrapped in C++/mfile/octfile code | Ported&Tested |

notch | Notch filter | pei_tseng_notch, needs to be verified | FORTRAN | wrapped in C++/mfile/octfile code | |

nstat_z | Nonstationarity testing via cross-prediction | None in GNU Octave | C | wrapped in C++/mfile/octfile code | |

pca, pc | Principle component analysis | 'pcacov' if likely the equivalent; pricomp in statistics | pca - C, pc - FORTRAN | wrapped in C++/mfile/octfile code | Ported&Tested |

poincare | Create Poincaré sections | None in GNU Octave | C | wrapped in C++/mfile/octfile code | Ported&Tested |

polyback | Fit a polynomial model (backward elimination) | polyfit, detrend, wpolyfit are not similar | C | wrapped in C++ | Porting needed |

polynom | Fit a polynomial model | same as above | C | ||

polynomp | Fit a polynomial model (reads terms to fit from file) | same as above | C | ||

polypar | Creates parameter file for polynomp | same as above | C | ||

predict | Forecast discriminating statistics for surrogates | None in GNU Octave | FORTRAN | wrapped in C++/mfile/octfile code | Same as lzo_test; Not Needed |

randomize | General constraint randomization (surrogates) | There are random function, but I don't think this one exists | FORTRAN | wrapped in C++/mfile/octfile code | |

randomize_spikeauto_exp_random | Surrogate data preserving event time autocorrelations | Same as above | FORTRAN | wrapped in C++/mfile/octfile code | |

randomize_spikespec_exp_event | Surrogate data preserving event time power spectrum | Same as above | FORTRAN | wrapped in C++/mfile/octfile code | |

rbf | Radial basis functions fit | None in GNU Octave | C | wrapped in C++/mfile/octfile code | |

recurr | Creates a recurrence plot | None in GNU Octave | C | wrapped in C++/mfile/octfile code | |

resample | Resamples data | There is 'resample' in Octave, but I believe it does something else | C | wrapped in C++/mfile/octfile code | |

rescale | Rescale data set | This should be in Octave, cannot find... | C | wrapped in C++/mfile/octfile code | |

rms | Rescale data set and get mean, variance and data interval | This should be in Octave, cannot find... | FORTRNAN | wrapped in C++/mfile/octfile code | Not Needed |

sav_gol | Savitzky-Golay filter | sgolayfilt in signal | C | ||

spectrum | Power spectrum using FFT | abs (fft (;)) | FORTRAN | Rewrite as m-file | Ported&Tested |

spikeauto | Autocorrelation function of event times | similar to above | FORTRAN | ||

spikespec | Power spectrum of event times | ar_psd, cpsd is the closest but I do not think they are the same | FORTRAN | ||

stp | Creates a space-time separation plot | None in GNU Octave | FORTRAN | wrapped in C++/mfile/octfile code | |

surrogates | Creates surrogate data | None in GNU Octave | FORTRAN | wrapped in C++/mfile/octfile code | Ported&Tested |

timerev | Time reversal discrimating statistics for surrogates | None in GNU Octave | FORTRAN | To be reimplemented as mfile | Ported&Tested |

upo | Finds unstable periodic orbits and estimates their stability | None in GNU Octave | FORTRAN | wrapped in C++/mfile/octfile code | Ported&Tested |

upoembed | Takes the output of upo and create data files out of it | None in GNU Octave | FORTAN | wrapped in C++/mfile/octfile code | Ported&Tested |

wiener1, wiener2 | Wiener filter | Wiener process exists, might be similar | FORTRAN | wrapped in C++/mfile/octfile code | |

xc2 | Cross-correlation integral | xcorr2 - Needs to be verified that works the same way | FORTRAN | wrapped in C++/mfile/octfile code | |

xcor | Cross-correlations | xcorr - Needs to be verified that works same way | C | wrapped in C++/mfile/octfile code | |

xrecur | Cross-recurrence Plot | xcorr, or xcorr2 or another function might cover this | C | wrapped in C++/mfile/octfile code | |

xzero | Locally zeroth order cross-prediction | None in GNU Octave | C | wrapped in C++/mfile/octfile code |

## External links

- Bitbucket repository where the porting is taking place.