156
edits
(→Porting TISEAN: merged Portinf into main) |
|||
Line 1: | Line 1: | ||
== Porting TISEAN == | == Porting TISEAN == | ||
This section will focus on demonstrating the capabilities of the TISEAN package | This section will focus on demonstrating the capabilities of the TISEAN package. | ||
=== Process === | |||
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. | |||
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. | |||
[[File:Work_flow_TISEAN.png|400px|center]] | |||
The chart below depicts how to decide which type of port should be utilized. | |||
[[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. | |||
[[File:Flow_Together_TISEAN.png|400px|center]] | |||
=== Table of functions and progress === | |||
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 || || Ported&Tested | |||
|-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 || | |||
|-style="background: Yellow" | |||
|resample || Resamples data || interp1 is similar but cannot specify the polynomial order except for some given || C || wrapped in C++/mfile/octfile code || | |||
|-style="background: LightGreen" | |||
|rescale || Rescale data set || This is just multiplication by scalars || C || wrapped in C++/mfile/octfile code ||Not Needed | |||
|-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 || | |||
|} | |||
== Tutorials == | == Tutorials == |
edits