https://wiki.octave.org/wiki/api.php?action=feedcontributions&user=KaKiLa&feedformat=atomOctave - User contributions [en]2020-07-11T10:38:31ZUser contributionsMediaWiki 1.34.1https://wiki.octave.org/wiki/index.php?title=Octave_for_Debian_systems&diff=13197Octave for Debian systems2020-06-17T10:34:42Z<p>KaKiLa: /* The right way */</p>
<hr />
<div>* ''This article addresses the [[:Category:Installation|installation]] and [[Building]] of GNU Octave on Debian, and Debian-based distributions such as Ubuntu.''<br />
<br />
== Installing Octave ==<br />
<br />
Binary packages for GNU Octave and many [[Octave Forge]] packages are provided by all versions of Debian and Ubuntu. These are the most well-tested binaries available and should work best for most users. To install them, run:<br />
<br />
sudo apt-get install octave<br />
<br />
In Debian and Ubuntu the "complete" GNU Octave software is split over multiple packages. To obtain the complete features of Octave, install additionally<br />
<br />
* {{codeline|octave-doc}}, {{codeline|octave-info}}, and {{codeline|octave-htmldoc}} for the documentation;<br />
* {{codeline|liboctave-dev}} for the octave development header files and mkoctfile (required to install Octave Forge packages); and<br />
* {{codeline|octave-dbg}} for the debugging symbols.<br />
<br />
Many Octave packages are also distributed by Debian and Ubuntu. These are tested to work the best with the respective Octave version. Install them via:<br />
<br />
sudo apt-get install octave-control octave-image octave-io octave-optim octave-signal octave-statistics<br />
<br />
Up to 2018, the [https://launchpad.net/~octave GNU Octave Team] on Launchpad actively maintained a PPA providing more up to date packages of Octave. These are backported from Debian unstable and are still useful for older Ubuntu installations. To set up your system to install these packages, run:<br />
<br />
sudo apt-add-repository ppa:octave/stable<br />
sudo apt-get update<br />
sudo apt-get install octave<br />
<br />
== Building Octave from source ==<br />
<br />
: ''For general build instructions, see [[Building]].''<br />
<br />
The ''only'' tricky part is to install the Octave build dependencies. Once that is solved, one can easily follow the [[Building|general build instructions]]. See [[#Configuration|below]] for some Debian and Ubuntu specific configuration options.<br />
<br />
=== Install dependencies ===<br />
<br />
Note that different Debian and Ubuntu versions may have slightly different package names but their differences should be pretty small, mostly limited to version numbers.<br />
<br />
==== The easy way (but likely incorrect) ====<br />
<br />
This approach is ''only'' suitable if you are building from source the ''same'' version that your Linux distribution already has packaged.<br />
<br />
The easy way to install ''most'' of the necessary dependencies is to {{Codeline|sudo apt-get build-dep octave}}. This will install all packages necessary to build and prepare a Debian package for the octave version available on your system repositories. However:<br />
* will install unnecessary packages related to the building of a Debian package;<br />
* may miss some new dependencies;<br />
* may install packages that are no longer octave dependencies.<br />
<br />
==== The right way ====<br />
<br />
The right way is to install all the dependencies listed on the [[Building#Dependencies|Building]] wiki page. One can either search for the respective packages manually on<br />
<br />
* https://packages.debian.org<br />
* https://packages.ubuntu.com<br />
<br />
or, for the sake of convenience, use some "one-liner" to install them:<br />
<br />
* '''Ubuntu 20.04'''<br />
<br />
:<pre>sudo apt-get install gcc g++ gfortran make libblas-dev liblapack-dev libpcre3-dev libarpack2-dev libcurl4-gnutls-dev epstool libfftw3-dev fig2dev libfltk1.3-dev libfontconfig1-dev libfreetype6-dev libgl2ps-dev libglpk-dev libreadline-dev gnuplot-x11 libgraphicsmagick++1-dev libhdf5-dev openjdk-8-jdk libsndfile1-dev llvm-dev texinfo libgl1-mesa-dev libosmesa6-dev pstoedit portaudio19-dev libqhull-dev libqrupdate-dev libsuitesparse-dev texlive-latex-extra libxft-dev zlib1g-dev autoconf automake bison flex gperf gzip icoutils librsvg2-bin libtool perl rsync tar qtbase5-dev qttools5-dev qttools5-dev-tools libqscintilla2-qt5-dev libsundials-dev</pre><br />
<br />
[[User:KaKiLa|KaKiLa]] ([[User talk:KaKiLa|talk]]) 03:34, 17 June 2020 (PDT) lpr conflict with cups-bsd<br />
<br />
* '''Ubuntu 19.10'''<br />
<br />
:<pre>sudo apt-get install gcc g++ gfortran make libblas-dev liblapack-dev libpcre3-dev libarpack2-dev libcurl4-gnutls-dev epstool libfftw3-dev fig2dev libfltk1.3-dev libfontconfig1-dev libfreetype6-dev libgl2ps-dev libglpk-dev libreadline-dev gnuplot-x11 libgraphicsmagick++1-dev libhdf5-dev openjdk-8-jdk libsndfile1-dev llvm-dev lpr texinfo libgl1-mesa-dev libosmesa6-dev pstoedit portaudio19-dev libqhull-dev libqrupdate-dev libsuitesparse-dev texlive-latex-extra texlive-libxft-dev zlib1g-dev autoconf automake bison flex gperf gzip icoutils librsvg2-bin libtool perl rsync tar qtbase5-dev qttools5-dev qttools5-dev-tools libqscintilla2-qt5-dev libsundials-dev</pre><br />
<br />
* '''Ubuntu 18.04 (LTS)'''<br />
<br />
:<pre>sudo apt-get install gcc g++ gfortran make libblas-dev liblapack-dev libpcre3-dev libarpack2-dev libcurl4-gnutls-dev epstool libfftw3-dev transfig libfltk1.3-dev libfontconfig1-dev libfreetype6-dev libgl2ps-dev libglpk-dev libreadline-dev gnuplot-x11 libgraphicsmagick++1-dev libhdf5-serial-dev openjdk-8-jdk libsndfile1-dev llvm-dev lpr texinfo libgl1-mesa-dev libosmesa6-dev pstoedit portaudio19-dev libqhull-dev libqrupdate-dev libqscintilla2-dev libsuitesparse-dev texlive texlive-generic-recommended libxft-dev zlib1g-dev autoconf automake bison flex gperf gzip icoutils librsvg2-bin libtool perl rsync tar qtbase5-dev qttools5-dev qttools5-dev-tools libqscintilla2-qt5-dev</pre><br />
<br />
* '''Ubuntu 16.04 (LTS)'''<br />
<br />
:<pre>sudo apt-get install gcc g++ gfortran make libblas-dev liblapack-dev libpcre3-dev libarpack2-dev libcurl4-gnutls-dev epstool libfftw3-dev transfig libfltk1.3-dev libfontconfig1-dev libfreetype6-dev libgl2ps-dev libglpk-dev libreadline-dev gnuplot-x11 libgraphicsmagick++1-dev libhdf5-serial-dev openjdk-8-jdk libsndfile1-dev llvm-dev lpr texinfo libgl1-mesa-dev libosmesa6-dev pstoedit portaudio19-dev libqhull-dev libqrupdate-dev libqscintilla2-dev libqt4-dev libqtcore4 libqtwebkit4 libqt4-network libqtgui4 libqt4-opengl-dev libsuitesparse-dev texlive libxft-dev zlib1g-dev autoconf automake bison flex gperf gzip icoutils librsvg2-bin libtool perl rsync tar</pre><br />
<br />
* '''Debian 10'''<br />
<br />
:<pre>sudo apt-get install gcc g++ gfortran make libblas-dev liblapack-dev libpcre3-dev libarpack2-dev libcurl4-gnutls-dev epstool libfftw3-dev fig2dev libfltk1.3-dev libfontconfig1-dev libfreetype6-dev libgl2ps-dev libglpk-dev libreadline-dev gnuplot libgraphicsmagick++1-dev libhdf5-dev openjdk-13-jdk libsndfile1-dev llvm-dev texinfo libgl1-mesa-dev libosmesa6-dev pstoedit portaudio19-dev libjack-jackd2-dev libqhull-dev libqrupdate-dev libqt5core5a qtbase5-dev qttools5-dev qttools5-dev-tools libqscintilla2-qt5-dev libsuitesparse-dev texlive texlive-latex-extra libxft-dev zlib1g-dev autoconf automake bison flex gperf gzip icoutils librsvg2-bin libtool perl rsync tar libsundials-dev git</pre><br />
<br />
* '''Debian 9'''<br />
<br />
:<pre>sudo apt-get install gcc g++ gfortran make libblas-dev liblapack-dev libpcre3-dev libarpack2-dev libcurl4-gnutls-dev epstool libfftw3-dev transfig libfltk1.3-dev libfontconfig1-dev libfreetype6-dev libgl2ps-dev libglpk-dev libreadline-dev gnuplot libgraphicsmagick++1-dev libhdf5-serial-dev openjdk-8-jdk libsndfile1-dev llvm-dev texinfo libgl1-mesa-dev libosmesa6-dev pstoedit portaudio19-dev libjack-jackd2-dev libqhull-dev libqrupdate-dev libqscintilla2-dev libqt4-dev libqtcore4 libqtwebkit4 libqt4-network libqtgui4 libqt4-opengl-dev libsuitesparse-dev texlive libxft-dev zlib1g-dev autoconf automake bison flex gperf gzip icoutils librsvg2-bin libtool perl rsync tar</pre><br />
<br />
* '''Debian 8'''<br />
<br />
:<pre>sudo apt-get install gcc g++ gfortran make libblas-dev liblapack-dev libpcre3-dev libarpack2-dev libcurl4-gnutls-dev epstool libfftw3-dev transfig libfltk1.3-dev libfontconfig1-dev libfreetype6-dev libgl2ps-dev libglpk-dev libreadline-dev gnuplot libgraphicsmagick++1-dev libhdf5-serial-dev openjdk-7-jdk libsndfile1-dev llvm-dev lpr texinfo libgl1-mesa-dev libosmesa6-dev pstoedit portaudio19-dev libqhull-dev libqrupdate-dev libqscintilla2-dev libqt4-dev libqtcore4 libqtwebkit4 libqt4-network libqtgui4 libqt4-opengl-dev libsuitesparse-dev texlive libxft-dev zlib1g-dev autoconf automake bison flex gperf gzip icoutils librsvg2-bin libtool perl rsync tar</pre><br />
<br />
<br />
{{Warning|<ul><li>The Debian repositoriy has several libraries for dealing with HDF data files. The recommended is {{Codeline|libhdf5-serial-dev}}. However, the {{Forge|msh|msh package}} requires [http://www.geuz.org/gmsh/ gmsh] which is incompatible with it.</li><br />
<li>The GraphicsMagick++ library (libgraphicsmagick++1-dev) on the Debian repositories was compiled with quantum 8 which limits reading images to 8 bit. The solution is to recompile [[GraphicsMagick]] with quantum 16 or 32 before building Octave.</li><br />
<li>For debian9 using openjdk-9-jdk (even providing {{Codeline|JAVA_HOME}}) could *not* be used for the java interface! Use openjdk-8-jdk instead.</li><br />
<li>When configure decides to use QT5 instead of QT4, make might fail because lrelease is missing (see [https://savannah.gnu.org/bugs/?50580 bug 50580]). It can be fixed by installing {{Codeline|qttools5-dev-tools}}</li><br />
</ul>}}<br />
<br />
=== Configuration ===<br />
<br />
Some Debian and Ubuntu specific configure tweaks are listed below:<br />
<br />
==== Java ====<br />
<br />
Autodetection for Java should work well on Debian-based systems. A specific Java version can be specified by passing {{codeline|JAVA_HOME}} to configure, for example<br />
<br />
./configure JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64<br />
<br />
==== HDF5 ====<br />
<br />
On older versions of Debian and Ubuntu, you may get the following warning when building an older version of Octave from source:<br />
<br />
HDF5 library not found. Octave will not be able to save or load HDF5 data files.<br />
<br />
The problem is that there are multiple versions of the hdf5 package. Octave was written with the serial version in mind but it is likely to work with the others (OpenMPI and Mpich). Due to the naming scheme done in Debian, it may be required to specify the location of the libraries. See bug {{bug|38928}} for details (starting with comment #19) but basically, use the following when running configure:<br />
<br />
./configure --with-hdf5-includedir=/usr/include/hdf5/serial --with-hdf5-libdir=/usr/lib/x86_64-linux-gnu/hdf5/serial<br />
<br />
On older versions of Debian and Ubuntu, where only one flavor of the HDF5 library could be installed at a time, you may need to build Octave against one of the MPI-enabled flavors. On these older systems, configuring Octave like this may work:<br />
<br />
./configure CPPFLAGS="-I/usr/include/mpi -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX"<br />
<br />
==== Sundials ====<br />
<br />
On recent Debian and Ubuntu releases whose Sundials version (in {{codeline|libsundials-dev}}) is 3.1, a configure flag needs to be passed for {{codeline|ode15i}} and {{codeline|ode15s}} to be compiled with support for sparse Jacobians (bug {{bug|55937}}), as follows:<br />
<br />
./configure CPPFLAGS="-I/usr/include/suitesparse"<br />
<br />
== See also ==<br />
<br />
* [[MXE]] -- a more customized Octave build including many self-compiled tools.<br />
<br />
[[Category:Building]]<br />
[[Category:Installation]]<br />
[[Category:GNU/Linux]]</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=Packages&diff=12925Packages2020-04-30T14:04:21Z<p>KaKiLa: /* fda */ update url</p>
<hr />
<div>[[File:Octave-flower.svg|left|frame|[[:Category:Octave Forge|Octave Forge]] logo.]]<br />
<br />
This is a list of Packages available for GNU Octave.<br />
<br />
For a collection of high quality packages see [[:Category:Octave Forge|Octave Forge]].<br />
<br />
= External Packages =<br />
<br />
Feel free to add your package.<br />
<br />
== GeoPDEs ==<br />
<br />
[http://rafavzqz.github.io/geopdes/ GeoPDEs] is an open source and free package for the research and teaching of Isogeometric Analysis, written in Octave and fully compatible with Matlab.<br />
<br />
The GeoPDEs package provides a common and flexible framework for implementing and testing new isogeometric methods for the solution of partial differential equations. <br />
<br />
== FEATool - Finite Element Analysis Toolbox ==<br />
<br />
[https://www.featool.com/multiphysics/ FEATool Multiphysics] is a commercial and proprietary Octave and Matlab FEM toolbox for modeling and simulation of physics and engineering applications with the finite element method. FEATool features an easy to use GUI and fully integrated CAD, geometry tools, automatic grid generation and solvers.<br />
<br />
* https://www.featool.com/<br />
<br />
== go-redis ==<br />
<br />
GNU Octave Redis client<br />
<br />
* https://github.com/markuman/go-redis<br />
<br />
== LIBSVM, LIBLINEAR ==<br />
<br />
Libraries for support vector machine / machine learning classification, regression, and distribution estimation problems. C++, with an interface to Octave.<br />
<br />
* http://www.csie.ntu.edu.tw/~cjlin/libsvm<br />
* http://www.csie.ntu.edu.tw/~cjlin/liblinear<br />
<br />
== ltfat ==<br />
<br />
The Large Time-Frequency Analysis Toolbox®. Please note, this package is available on Octave Forge too, but it has its own website.<br />
<br />
* http://ltfat.github.io/<br />
<br />
== mex-sqlite3 ==<br />
<br />
An extension for MATLAB® or GNU/octave to access sqlite3 databases <br />
<br />
* https://github.com/rmartinjak/mex-sqlite3<br />
<br />
== octave-network-toolbox ==<br />
<br />
A set of graph/networks analysis functions in Octave<br />
<br />
* http://aeolianine.github.io/octave-networks-toolbox/<br />
<br />
== octsympy ==<br />
<br />
: ''Main article: [[Symbolic package]]''<br />
<br />
This package is now part of Octave Forge as [[Symbolic package]]. Main development site is still at https://github.com/cbm755/octsympy.<br />
<br />
== sci cosim ==<br />
<br />
: ''Main article: [[sci cosim]]''<br />
<br />
Scilab co-simulation package<br />
<br />
* https://github.com/amromanov/sci_cosim<br />
<br />
== shogun ==<br />
<br />
The Shogun Machine Learning Toolbox® <br />
<br />
* https://github.com/shogun-toolbox/shogun<br />
<br />
== vlfeat == <br />
<br />
The VLFeat open source library implements popular computer vision algorithms including HOG, SIFT, MSER, k-means, hierarchical k-means, agglomerative information bottleneck, SLIC superpixels, and quick shift.<br />
<br />
* http://www.vlfeat.org/index.html<br />
<br />
== epanet-octave == <br />
<br />
The epanet-octave open source library is a wrapper, including some scripts, to call Epanet Toolkit. Functions are adapted to improve its usability in GNU Octave (e.g. allowing vectors as EpaNet Toolkit function inputs). Still under development. <br />
<br />
* https://forja.cica.es/projects/epanet-octave/<br />
<br />
== mexopencv ==<br />
<br />
Collection and a development kit of matlab mex functions for OpenCV library<br />
<br />
* http://kyamagu.github.io/mexopencv<br />
* https://github.com/kyamagu/mexopencv<br />
<br />
== gpml==<br />
Gaussian processes for machine learning<br />
<br />
* [http://www.gaussianprocess.org/gpml/code/matlab/doc/ Webpage of the author]<br />
* [https://gitlab.com/hnickisch/gpml-matlab Repository]<br />
* Downloads or pkg installation: https://gitlab.com/hnickisch/gpml-matlab/-/releases<br />
<br />
== ekfukf ==<br />
Kalman filtering and smoothing<br />
<br />
* [https://github.com/kakila/ekfukf Repository]<br />
<br />
== fda ==<br />
Functional data analysis<br />
<br />
* [http://www.psych.mcgill.ca/misc/fda/ Webpage of the author]<br />
* [https://gitlab.com/kakila/fda Repository]<br />
<br />
== See also ==<br />
* [[Creating packages]]<br />
* [[Reviewing Octave-Forge packages]]<br />
<br />
[[Category:Packages| ]]</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=Packages&diff=12924Packages2020-04-30T13:56:57Z<p>KaKiLa: /* gpml */ update urls</p>
<hr />
<div>[[File:Octave-flower.svg|left|frame|[[:Category:Octave Forge|Octave Forge]] logo.]]<br />
<br />
This is a list of Packages available for GNU Octave.<br />
<br />
For a collection of high quality packages see [[:Category:Octave Forge|Octave Forge]].<br />
<br />
= External Packages =<br />
<br />
Feel free to add your package.<br />
<br />
== GeoPDEs ==<br />
<br />
[http://rafavzqz.github.io/geopdes/ GeoPDEs] is an open source and free package for the research and teaching of Isogeometric Analysis, written in Octave and fully compatible with Matlab.<br />
<br />
The GeoPDEs package provides a common and flexible framework for implementing and testing new isogeometric methods for the solution of partial differential equations. <br />
<br />
== FEATool - Finite Element Analysis Toolbox ==<br />
<br />
[https://www.featool.com/multiphysics/ FEATool Multiphysics] is a commercial and proprietary Octave and Matlab FEM toolbox for modeling and simulation of physics and engineering applications with the finite element method. FEATool features an easy to use GUI and fully integrated CAD, geometry tools, automatic grid generation and solvers.<br />
<br />
* https://www.featool.com/<br />
<br />
== go-redis ==<br />
<br />
GNU Octave Redis client<br />
<br />
* https://github.com/markuman/go-redis<br />
<br />
== LIBSVM, LIBLINEAR ==<br />
<br />
Libraries for support vector machine / machine learning classification, regression, and distribution estimation problems. C++, with an interface to Octave.<br />
<br />
* http://www.csie.ntu.edu.tw/~cjlin/libsvm<br />
* http://www.csie.ntu.edu.tw/~cjlin/liblinear<br />
<br />
== ltfat ==<br />
<br />
The Large Time-Frequency Analysis Toolbox®. Please note, this package is available on Octave Forge too, but it has its own website.<br />
<br />
* http://ltfat.github.io/<br />
<br />
== mex-sqlite3 ==<br />
<br />
An extension for MATLAB® or GNU/octave to access sqlite3 databases <br />
<br />
* https://github.com/rmartinjak/mex-sqlite3<br />
<br />
== octave-network-toolbox ==<br />
<br />
A set of graph/networks analysis functions in Octave<br />
<br />
* http://aeolianine.github.io/octave-networks-toolbox/<br />
<br />
== octsympy ==<br />
<br />
: ''Main article: [[Symbolic package]]''<br />
<br />
This package is now part of Octave Forge as [[Symbolic package]]. Main development site is still at https://github.com/cbm755/octsympy.<br />
<br />
== sci cosim ==<br />
<br />
: ''Main article: [[sci cosim]]''<br />
<br />
Scilab co-simulation package<br />
<br />
* https://github.com/amromanov/sci_cosim<br />
<br />
== shogun ==<br />
<br />
The Shogun Machine Learning Toolbox® <br />
<br />
* https://github.com/shogun-toolbox/shogun<br />
<br />
== vlfeat == <br />
<br />
The VLFeat open source library implements popular computer vision algorithms including HOG, SIFT, MSER, k-means, hierarchical k-means, agglomerative information bottleneck, SLIC superpixels, and quick shift.<br />
<br />
* http://www.vlfeat.org/index.html<br />
<br />
== epanet-octave == <br />
<br />
The epanet-octave open source library is a wrapper, including some scripts, to call Epanet Toolkit. Functions are adapted to improve its usability in GNU Octave (e.g. allowing vectors as EpaNet Toolkit function inputs). Still under development. <br />
<br />
* https://forja.cica.es/projects/epanet-octave/<br />
<br />
== mexopencv ==<br />
<br />
Collection and a development kit of matlab mex functions for OpenCV library<br />
<br />
* http://kyamagu.github.io/mexopencv<br />
* https://github.com/kyamagu/mexopencv<br />
<br />
== gpml==<br />
Gaussian processes for machine learning<br />
<br />
* [http://www.gaussianprocess.org/gpml/code/matlab/doc/ Webpage of the author]<br />
* [https://gitlab.com/hnickisch/gpml-matlab Repository]<br />
* Downloads or pkg installation: https://gitlab.com/hnickisch/gpml-matlab/-/releases<br />
<br />
== ekfukf ==<br />
Kalman filtering and smoothing<br />
<br />
* [https://github.com/kakila/ekfukf Repository]<br />
<br />
== fda ==<br />
Functional data analysis<br />
<br />
* [http://www.psych.mcgill.ca/misc/fda/ Webpage of the author]<br />
* [https://bitbucket.org/KaKiLa/fda/src Repository]<br />
<br />
== See also ==<br />
* [[Creating packages]]<br />
* [[Reviewing Octave-Forge packages]]<br />
<br />
[[Category:Packages| ]]</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=Octave_for_Debian_systems&diff=12639Octave for Debian systems2020-02-08T15:04:44Z<p>KaKiLa: Ubuntu 19.10 add latex-extra or docs will fail</p>
<hr />
<div>* ''This article addresses the [[:Category:Installation|installation]] and [[Building]] of GNU Octave on Debian, and Debian-based distributions such as Ubuntu.''<br />
<br />
Binary packages for GNU Octave and many [[Octave Forge]] packages are provided by all versions of Debian and Ubuntu. These are the most well-tested binaries available and should work best for most users. To install them, run:<br />
<br />
sudo apt-get install octave<br />
<br />
In Debian and Ubuntu the "complete" GNU Octave software is split over multiple packages. To obtain the complete features of Octave, install additionally<br />
<br />
* {{codeline|octave-doc}}, {{codeline|octave-info}}, and {{codeline|octave-htmldoc}} for the documentation;<br />
* {{codeline|liboctave-dev}} for the octave development header files and mkoctfile (required to install Octave Forge packages); and<br />
* {{codeline|octave-dbg}} for the debugging symbols.<br />
<br />
Many Octave packages are also distributed by Debian and Ubuntu. These are tested to work the best with the respective Octave version. Install them via:<br />
<br />
sudo apt-get install octave-control octave-image octave-io octave-optim octave-signal octave-statistics<br />
<br />
Up to 2018, the [https://launchpad.net/~octave GNU Octave Team] on Launchpad actively maintained a PPA providing more up to date packages of Octave. These are backported from Debian unstable and are still useful for older Ubuntu installations. To set up your system to install these packages, run:<br />
<br />
sudo apt-add-repository ppa:octave/stable<br />
sudo apt-get update<br />
sudo apt-get install octave<br />
<br />
== Building Octave ==<br />
<br />
: ''For general build instructions, see [[Building]].''<br />
<br />
The ''only'' tricky part is to install the Octave build dependencies. Once that is solved, one can easily follow the [[Building|general build instructions]]. See [[#Configuration|below]] for some Debian and Ubuntu specific configuration options.<br />
<br />
=== Install dependencies ===<br />
<br />
Note that different Debian and Ubuntu versions may have slightly different package names but their differences should be pretty small, mostly limited to version numbers.<br />
<br />
==== The easy way (but likely incorrect) ====<br />
<br />
This approach is ''only'' suitable if you are building from source the ''same'' version that your Linux distribution already has packaged.<br />
<br />
The easy way to install ''most'' of the necessary dependencies is to {{Codeline|sudo apt-get build-dep octave}}. This will install all packages necessary to build and prepare a Debian package for the octave version available on your system repositories. However:<br />
* will install unnecessary packages related to the building of a Debian package;<br />
* may miss some new dependencies;<br />
* may install packages that are no longer octave dependencies.<br />
<br />
==== The right way ====<br />
<br />
The right way is to install all the dependencies listed on the [[Building#Dependencies|Building]] wiki page. One can either search for the respective packages manually on<br />
<br />
* https://packages.debian.org<br />
* https://packages.ubuntu.com<br />
<br />
or, for the sake of convenience, use some "one-liner" to install them:<br />
<br />
* '''Ubuntu 19.10'''<br />
<br />
:<pre>sudo apt-get install gcc g++ gfortran make libblas-dev liblapack-dev libpcre3-dev libarpack2-dev libcurl4-gnutls-dev epstool libfftw3-dev fig2dev libfltk1.3-dev libfontconfig1-dev libfreetype6-dev libgl2ps-dev libglpk-dev libreadline-dev gnuplot-x11 libgraphicsmagick++1-dev libhdf5-dev openjdk-8-jdk libsndfile1-dev llvm-dev lpr texinfo libgl1-mesa-dev libosmesa6-dev pstoedit portaudio19-dev libqhull-dev libqrupdate-dev libsuitesparse-dev texlive-latex-extra texlive-libxft-dev zlib1g-dev autoconf automake bison flex gperf gzip icoutils librsvg2-bin libtool perl rsync tar qtbase5-dev qttools5-dev qttools5-dev-tools libqscintilla2-qt5-dev libsundials-dev</pre><br />
<br />
* '''Ubuntu 18.04 (LTS)'''<br />
<br />
:<pre>sudo apt-get install gcc g++ gfortran make libblas-dev liblapack-dev libpcre3-dev libarpack2-dev libcurl4-gnutls-dev epstool libfftw3-dev transfig libfltk1.3-dev libfontconfig1-dev libfreetype6-dev libgl2ps-dev libglpk-dev libreadline-dev gnuplot-x11 libgraphicsmagick++1-dev libhdf5-serial-dev openjdk-8-jdk libsndfile1-dev llvm-dev lpr texinfo libgl1-mesa-dev libosmesa6-dev pstoedit portaudio19-dev libqhull-dev libqrupdate-dev libqscintilla2-dev libsuitesparse-dev texlive texlive-generic-recommended libxft-dev zlib1g-dev autoconf automake bison flex gperf gzip icoutils librsvg2-bin libtool perl rsync tar qtbase5-dev qttools5-dev qttools5-dev-tools libqscintilla2-qt5-dev</pre><br />
<br />
* '''Ubuntu 16.04 (LTS)'''<br />
<br />
:<pre>sudo apt-get install gcc g++ gfortran make libblas-dev liblapack-dev libpcre3-dev libarpack2-dev libcurl4-gnutls-dev epstool libfftw3-dev transfig libfltk1.3-dev libfontconfig1-dev libfreetype6-dev libgl2ps-dev libglpk-dev libreadline-dev gnuplot-x11 libgraphicsmagick++1-dev libhdf5-serial-dev openjdk-8-jdk libsndfile1-dev llvm-dev lpr texinfo libgl1-mesa-dev libosmesa6-dev pstoedit portaudio19-dev libqhull-dev libqrupdate-dev libqscintilla2-dev libqt4-dev libqtcore4 libqtwebkit4 libqt4-network libqtgui4 libqt4-opengl-dev libsuitesparse-dev texlive libxft-dev zlib1g-dev autoconf automake bison flex gperf gzip icoutils librsvg2-bin libtool perl rsync tar</pre><br />
<br />
* '''Debian 9'''<br />
<br />
:<pre>sudo apt-get install gcc g++ gfortran make libblas-dev liblapack-dev libpcre3-dev libarpack2-dev libcurl4-gnutls-dev epstool libfftw3-dev transfig libfltk1.3-dev libfontconfig1-dev libfreetype6-dev libgl2ps-dev libglpk-dev libreadline-dev gnuplot libgraphicsmagick++1-dev libhdf5-serial-dev openjdk-8-jdk libsndfile1-dev llvm-dev texinfo libgl1-mesa-dev libosmesa6-dev pstoedit portaudio19-dev libjack-jackd2-dev libqhull-dev libqrupdate-dev libqscintilla2-dev libqt4-dev libqtcore4 libqtwebkit4 libqt4-network libqtgui4 libqt4-opengl-dev libsuitesparse-dev texlive libxft-dev zlib1g-dev autoconf automake bison flex gperf gzip icoutils librsvg2-bin libtool perl rsync tar</pre><br />
<br />
* '''Debian 8'''<br />
<br />
:<pre>sudo apt-get install gcc g++ gfortran make libblas-dev liblapack-dev libpcre3-dev libarpack2-dev libcurl4-gnutls-dev epstool libfftw3-dev transfig libfltk1.3-dev libfontconfig1-dev libfreetype6-dev libgl2ps-dev libglpk-dev libreadline-dev gnuplot libgraphicsmagick++1-dev libhdf5-serial-dev openjdk-7-jdk libsndfile1-dev llvm-dev lpr texinfo libgl1-mesa-dev libosmesa6-dev pstoedit portaudio19-dev libqhull-dev libqrupdate-dev libqscintilla2-dev libqt4-dev libqtcore4 libqtwebkit4 libqt4-network libqtgui4 libqt4-opengl-dev libsuitesparse-dev texlive libxft-dev zlib1g-dev autoconf automake bison flex gperf gzip icoutils librsvg2-bin libtool perl rsync tar</pre><br />
<br />
<br />
{{Warning|<ul><li>The Debian repositoriy has several libraries for dealing with HDF data files. The recommended is {{Codeline|libhdf5-serial-dev}}. However, the {{Forge|msh|msh package}} requires [http://www.geuz.org/gmsh/ gmsh] which is incompatible with it.</li><br />
<li>The GraphicsMagick++ library (libgraphicsmagick++1-dev) on the Debian repositories was compiled with quantum 8 which limits reading images to 8 bit. The solution is to recompile [[GraphicsMagick]] with quantum 16 or 32 before building Octave.</li><br />
<li>For debian9 using openjdk-9-jdk (even providing {{Codeline|JAVA_HOME}}) could *not* be used for the java interface! Use openjdk-8-jdk instead.</li><br />
<li>When configure decides to use QT5 instead of QT4, make might fail because lrelease is missing (see [https://savannah.gnu.org/bugs/?50580 bug 50580]). It can be fixed by installing {{Codeline|qttools5-dev-tools}}</li><br />
</ul>}}<br />
<br />
=== Configuration ===<br />
<br />
Some Debian and Ubuntu specific configure tweaks are listed below:<br />
<br />
==== Java ====<br />
<br />
Autodetection for Java should work well on Debian-based systems. A specific Java version can be specified by passing {{codeline|JAVA_HOME}} to configure, for example<br />
<br />
./configure JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64<br />
<br />
==== HDF5 ====<br />
<br />
On older versions of Debian and Ubuntu, you may get the following warning when building an older version of Octave from source:<br />
<br />
HDF5 library not found. Octave will not be able to save or load HDF5 data files.<br />
<br />
The problem is that there are multiple versions of the hdf5 package. Octave was written with the serial version in mind but it is likely to work with the others (OpenMPI and Mpich). Due to the naming scheme done in Debian, it may be required to specify the location of the libraries. See bug {{bug|38928}} for details (starting with comment #19) but basically, use the following when running configure:<br />
<br />
./configure --with-hdf5-includedir=/usr/include/hdf5/serial --with-hdf5-libdir=/usr/lib/x86_64-linux-gnu/hdf5/serial<br />
<br />
On older versions of Debian and Ubuntu, where only one flavor of the HDF5 library could be installed at a time, you may need to build Octave against one of the MPI-enabled flavors. On these older systems, configuring Octave like this may work:<br />
<br />
./configure CPPFLAGS="-I/usr/include/mpi -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX"<br />
<br />
==== Sundials ====<br />
<br />
On recent Debian and Ubuntu releases whose Sundials version (in {{codeline|libsundials-dev}}) is 3.1, a configure flag needs to be passed for {{codeline|ode15i}} and {{codeline|ode15s}} to be compiled with support for sparse Jacobians (bug {{bug|55937}}), as follows:<br />
<br />
./configure CPPFLAGS="-I/usr/include/suitesparse"<br />
<br />
== See also ==<br />
<br />
* [[MXE]] -- a more customized Octave build including many self-compiled tools.<br />
<br />
[[Category:Building]]<br />
[[Category:Installation]]<br />
[[Category:GNU/Linux]]</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=Octave_for_Debian_systems&diff=12638Octave for Debian systems2020-02-08T10:49:06Z<p>KaKiLa: Remove libqscintilla2-qt4-dev from dependency list in Ubuntu 19.10</p>
<hr />
<div>* ''This article addresses the [[:Category:Installation|installation]] and [[Building]] of GNU Octave on Debian, and Debian-based distributions such as Ubuntu.''<br />
<br />
Binary packages for GNU Octave and many [[Octave Forge]] packages are provided by all versions of Debian and Ubuntu. These are the most well-tested binaries available and should work best for most users. To install them, run:<br />
<br />
sudo apt-get install octave<br />
<br />
In Debian and Ubuntu the "complete" GNU Octave software is split over multiple packages. To obtain the complete features of Octave, install additionally<br />
<br />
* {{codeline|octave-doc}}, {{codeline|octave-info}}, and {{codeline|octave-htmldoc}} for the documentation;<br />
* {{codeline|liboctave-dev}} for the octave development header files and mkoctfile (required to install Octave Forge packages); and<br />
* {{codeline|octave-dbg}} for the debugging symbols.<br />
<br />
Many Octave packages are also distributed by Debian and Ubuntu. These are tested to work the best with the respective Octave version. Install them via:<br />
<br />
sudo apt-get install octave-control octave-image octave-io octave-optim octave-signal octave-statistics<br />
<br />
Up to 2018, the [https://launchpad.net/~octave GNU Octave Team] on Launchpad actively maintained a PPA providing more up to date packages of Octave. These are backported from Debian unstable and are still useful for older Ubuntu installations. To set up your system to install these packages, run:<br />
<br />
sudo apt-add-repository ppa:octave/stable<br />
sudo apt-get update<br />
sudo apt-get install octave<br />
<br />
== Building Octave ==<br />
<br />
: ''For general build instructions, see [[Building]].''<br />
<br />
The ''only'' tricky part is to install the Octave build dependencies. Once that is solved, one can easily follow the [[Building|general build instructions]]. See [[#Configuration|below]] for some Debian and Ubuntu specific configuration options.<br />
<br />
=== Install dependencies ===<br />
<br />
Note that different Debian and Ubuntu versions may have slightly different package names but their differences should be pretty small, mostly limited to version numbers.<br />
<br />
==== The easy way (but likely incorrect) ====<br />
<br />
This approach is ''only'' suitable if you are building from source the ''same'' version that your Linux distribution already has packaged.<br />
<br />
The easy way to install ''most'' of the necessary dependencies is to {{Codeline|sudo apt-get build-dep octave}}. This will install all packages necessary to build and prepare a Debian package for the octave version available on your system repositories. However:<br />
* will install unnecessary packages related to the building of a Debian package;<br />
* may miss some new dependencies;<br />
* may install packages that are no longer octave dependencies.<br />
<br />
==== The right way ====<br />
<br />
The right way is to install all the dependencies listed on the [[Building#Dependencies|Building]] wiki page. One can either search for the respective packages manually on<br />
<br />
* https://packages.debian.org<br />
* https://packages.ubuntu.com<br />
<br />
or, for the sake of convenience, use some "one-liner" to install them:<br />
<br />
* '''Ubuntu 19.10'''<br />
<br />
:<pre>sudo apt-get install gcc g++ gfortran make libblas-dev liblapack-dev libpcre3-dev libarpack2-dev libcurl4-gnutls-dev epstool libfftw3-dev fig2dev libfltk1.3-dev libfontconfig1-dev libfreetype6-dev libgl2ps-dev libglpk-dev libreadline-dev gnuplot-x11 libgraphicsmagick++1-dev libhdf5-dev openjdk-8-jdk libsndfile1-dev llvm-dev lpr texinfo libgl1-mesa-dev libosmesa6-dev pstoedit portaudio19-dev libqhull-dev libqrupdate-dev libsuitesparse-dev texlive libxft-dev zlib1g-dev autoconf automake bison flex gperf gzip icoutils librsvg2-bin libtool perl rsync tar qtbase5-dev qttools5-dev qttools5-dev-tools libqscintilla2-qt5-dev libsundials-dev</pre><br />
<br />
* '''Ubuntu 18.04 (LTS)'''<br />
<br />
:<pre>sudo apt-get install gcc g++ gfortran make libblas-dev liblapack-dev libpcre3-dev libarpack2-dev libcurl4-gnutls-dev epstool libfftw3-dev transfig libfltk1.3-dev libfontconfig1-dev libfreetype6-dev libgl2ps-dev libglpk-dev libreadline-dev gnuplot-x11 libgraphicsmagick++1-dev libhdf5-serial-dev openjdk-8-jdk libsndfile1-dev llvm-dev lpr texinfo libgl1-mesa-dev libosmesa6-dev pstoedit portaudio19-dev libqhull-dev libqrupdate-dev libqscintilla2-dev libsuitesparse-dev texlive texlive-generic-recommended libxft-dev zlib1g-dev autoconf automake bison flex gperf gzip icoutils librsvg2-bin libtool perl rsync tar qtbase5-dev qttools5-dev qttools5-dev-tools libqscintilla2-qt5-dev</pre><br />
<br />
* '''Ubuntu 16.04 (LTS)'''<br />
<br />
:<pre>sudo apt-get install gcc g++ gfortran make libblas-dev liblapack-dev libpcre3-dev libarpack2-dev libcurl4-gnutls-dev epstool libfftw3-dev transfig libfltk1.3-dev libfontconfig1-dev libfreetype6-dev libgl2ps-dev libglpk-dev libreadline-dev gnuplot-x11 libgraphicsmagick++1-dev libhdf5-serial-dev openjdk-8-jdk libsndfile1-dev llvm-dev lpr texinfo libgl1-mesa-dev libosmesa6-dev pstoedit portaudio19-dev libqhull-dev libqrupdate-dev libqscintilla2-dev libqt4-dev libqtcore4 libqtwebkit4 libqt4-network libqtgui4 libqt4-opengl-dev libsuitesparse-dev texlive libxft-dev zlib1g-dev autoconf automake bison flex gperf gzip icoutils librsvg2-bin libtool perl rsync tar</pre><br />
<br />
* '''Debian 9'''<br />
<br />
:<pre>sudo apt-get install gcc g++ gfortran make libblas-dev liblapack-dev libpcre3-dev libarpack2-dev libcurl4-gnutls-dev epstool libfftw3-dev transfig libfltk1.3-dev libfontconfig1-dev libfreetype6-dev libgl2ps-dev libglpk-dev libreadline-dev gnuplot libgraphicsmagick++1-dev libhdf5-serial-dev openjdk-8-jdk libsndfile1-dev llvm-dev texinfo libgl1-mesa-dev libosmesa6-dev pstoedit portaudio19-dev libjack-jackd2-dev libqhull-dev libqrupdate-dev libqscintilla2-dev libqt4-dev libqtcore4 libqtwebkit4 libqt4-network libqtgui4 libqt4-opengl-dev libsuitesparse-dev texlive libxft-dev zlib1g-dev autoconf automake bison flex gperf gzip icoutils librsvg2-bin libtool perl rsync tar</pre><br />
<br />
* '''Debian 8'''<br />
<br />
:<pre>sudo apt-get install gcc g++ gfortran make libblas-dev liblapack-dev libpcre3-dev libarpack2-dev libcurl4-gnutls-dev epstool libfftw3-dev transfig libfltk1.3-dev libfontconfig1-dev libfreetype6-dev libgl2ps-dev libglpk-dev libreadline-dev gnuplot libgraphicsmagick++1-dev libhdf5-serial-dev openjdk-7-jdk libsndfile1-dev llvm-dev lpr texinfo libgl1-mesa-dev libosmesa6-dev pstoedit portaudio19-dev libqhull-dev libqrupdate-dev libqscintilla2-dev libqt4-dev libqtcore4 libqtwebkit4 libqt4-network libqtgui4 libqt4-opengl-dev libsuitesparse-dev texlive libxft-dev zlib1g-dev autoconf automake bison flex gperf gzip icoutils librsvg2-bin libtool perl rsync tar</pre><br />
<br />
<br />
{{Warning|<ul><li>The Debian repositoriy has several libraries for dealing with HDF data files. The recommended is {{Codeline|libhdf5-serial-dev}}. However, the {{Forge|msh|msh package}} requires [http://www.geuz.org/gmsh/ gmsh] which is incompatible with it.</li><br />
<li>The GraphicsMagick++ library (libgraphicsmagick++1-dev) on the Debian repositories was compiled with quantum 8 which limits reading images to 8 bit. The solution is to recompile [[GraphicsMagick]] with quantum 16 or 32 before building Octave.</li><br />
<li>For debian9 using openjdk-9-jdk (even providing {{Codeline|JAVA_HOME}}) could *not* be used for the java interface! Use openjdk-8-jdk instead.</li><br />
<li>When configure decides to use QT5 instead of QT4, make might fail because lrelease is missing (see [https://savannah.gnu.org/bugs/?50580 bug 50580]). It can be fixed by installing {{Codeline|qttools5-dev-tools}}</li><br />
</ul>}}<br />
<br />
=== Configuration ===<br />
<br />
Some Debian and Ubuntu specific configure tweaks are listed below:<br />
<br />
==== Java ====<br />
<br />
Autodetection for Java should work well on Debian-based systems. A specific Java version can be specified by passing {{codeline|JAVA_HOME}} to configure, for example<br />
<br />
./configure JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64<br />
<br />
==== HDF5 ====<br />
<br />
On older versions of Debian and Ubuntu, you may get the following warning when building an older version of Octave from source:<br />
<br />
HDF5 library not found. Octave will not be able to save or load HDF5 data files.<br />
<br />
The problem is that there are multiple versions of the hdf5 package. Octave was written with the serial version in mind but it is likely to work with the others (OpenMPI and Mpich). Due to the naming scheme done in Debian, it may be required to specify the location of the libraries. See bug {{bug|38928}} for details (starting with comment #19) but basically, use the following when running configure:<br />
<br />
./configure --with-hdf5-includedir=/usr/include/hdf5/serial --with-hdf5-libdir=/usr/lib/x86_64-linux-gnu/hdf5/serial<br />
<br />
On older versions of Debian and Ubuntu, where only one flavor of the HDF5 library could be installed at a time, you may need to build Octave against one of the MPI-enabled flavors. On these older systems, configuring Octave like this may work:<br />
<br />
./configure CPPFLAGS="-I/usr/include/mpi -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX"<br />
<br />
==== Sundials ====<br />
<br />
On recent Debian and Ubuntu releases whose Sundials version (in {{codeline|libsundials-dev}}) is 3.1, a configure flag needs to be passed for {{codeline|ode15i}} and {{codeline|ode15s}} to be compiled with support for sparse Jacobians (bug {{bug|55937}}), as follows:<br />
<br />
./configure CPPFLAGS="-I/usr/include/suitesparse"<br />
<br />
== See also ==<br />
<br />
* [[MXE]] -- a more customized Octave build including many self-compiled tools.<br />
<br />
[[Category:Building]]<br />
[[Category:Installation]]<br />
[[Category:GNU/Linux]]</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=Reviewing_Octave_Forge_packages&diff=12421Reviewing Octave Forge packages2019-11-20T15:56:10Z<p>KaKiLa: /* Other info */ check INDEX</p>
<hr />
<div>== Help reviewing Octave Forge packages ==<br />
<br />
We need help. Here is how:<br />
<br />
# Pick a package at https://sourceforge.net/p/octave/package-releases/<br />
# Copy the check-list below and fill it out, marking each box:<br />
#* <code>[x]</code> for passed<br />
#* <code>[n/a]</code> for non-applicable<br />
#* <code>[ ]</code> for skipped (because you cannot do it, missing software, etc)<br />
#* <code>[F]</code> for fails.<br />
# Paste your filled in check-list as a comment on the issue above<br />
<br />
=== What happens next ===<br />
<br />
An admin will try to look over your review and hopefully release the package. More than one person can review a package, in fact that would be great.<br />
<br />
<br />
== Checklist ==<br />
<br />
<pre><br />
== Repository ==<br />
[ ] maintainer has specified a corresponding revision commit/changeset<br />
[ ] checkout code from Sourceforge, commit/changeset is present<br />
<br />
== Compile and Install ==<br />
[ ] release candidate installs on latest stable Octave release<br />
[ ] no compiler errors or warnings<br />
[ ] ran tests using <code>runtests /path/to/pkg</code> (use <code>oruntests</code> instead in Octave 6.0.0 or later)<br />
[ ] ran all tests, including those in src (how??)<br />
[ ] ran doctest on all functions (optional)<br />
[ ] ran generate_package_html (if Makefile present try <code> make html </code>)<br />
[ ] no makeinfo errors and warnings during HTML build<br />
[ ] unpacked and spot-checked the generated HTML documentation<br />
<br />
== Interaction with pkg ==<br />
[ ] <code>pkg load foo</code> runs with errors or warnings<br />
[ ] <code>pkg unload foo</code> runs with errors or warnings<br />
[ ] <code>pkg uninstall foo</code> runs with errors or warnings<br />
<br />
[ ] Above steps were run on Octave and OS versions:<br />
* ________<br />
* ________<br />
<br />
== Package files in release candidate tarball ==<br />
[ ] tested with minimum Octave version list in DESCRIPTION<br />
[ ] reasonable dependencies listed in DESCRIPTION<br />
[ ] NEWS file makes sense, version and date match<br />
[ ] All functions are listed in INDEX<br />
[ ] check licenses (<code>licensecheck -r</code> "plus some manual checks").<br />
[ ] package files are readable/executable by all users (reasonably current maintainer Makefile should be doing this).<br />
[ ] version number in src/configure.ac (if present) matches DESCRIPTION and tarball name.<br />
[ ] any version numbers within the help or function body (e.g., banners) matches above.<br />
[ ] contains no hidden dot files, junk backup files, results of configure runs, etc (should be taken care of by maintainer Makefile).<br />
</pre><br />
<br />
== Other info ==<br />
<br />
TODO: how does one check all functions are listed in INDEX?<br />
<br />
: Carne Draug wrote a script to do this several years ago. It is in the [https://sourceforge.net/p/octave/code/HEAD/tree/trunk/octave-forge/admin/check_INDEX.pl old OF admin repository] [[User:KaKiLa|KaKiLa]] ([[User talk:KaKiLa|talk]]) 07:56, 20 November 2019 (PST)<br />
<br />
TODO: document how to run "all tests including those in src" Someday this should be just "pkg test foo".<br />
<br />
TODO: would be good to provide more specific instructions for when the package as a Maintainer Makefile? But we don't usually put the Maintainer Makefile in the .tar.gz package to do? (At least Doctest and Symbolic don't).<br />
<br />
=== Meta helping ===<br />
<br />
* Feel free to edit this wiki with explanations of the check list tasks<br />
* Please do add (reasonable) tasks to the check list<br />
<br />
=== Common problems ===<br />
<br />
Here are some common problems that reviewers can check for<br />
<br />
* INDEX is missing some new functions added<br />
* NEWS has not been updated or is missing something big<br />
* Version numbers or dates do not match between DESCRIPTION and NEWS<br />
* Common makeinfo errors like "@bye seen before @end deftypefn"<br />
* DESCRIPTION says pkg works with old Octave 4.x but it fails for me<br />
* Obviously, compiler errors, warnings, test failures<br />
<br />
[[Category:Octave Forge]]</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=Reviewing_Octave_Forge_packages&diff=11925Reviewing Octave Forge packages2019-05-27T08:12:10Z<p>KaKiLa: /* Checklist */</p>
<hr />
<div>== Help reviewing Octave-Forge packages ==<br />
<br />
We need help. Here is how:<br />
<br />
# Pick a package at https://sourceforge.net/p/octave/package-releases/<br />
# Copy the check-list below and fill it out, marking each box:<br />
#* <code>[x]</code> for passed<br />
#* <code>[n/a]</code> for non-applicable<br />
#* <code>[ ]</code> for skipped (because you cannot do it, missing software, etc)<br />
#* <code>[F]</code> for fails.<br />
# Paste your filled in check-list as a comment on the issue above<br />
<br />
=== What happens next ===<br />
<br />
An admin will try to look over your review and hopefully release the package. More than one person can review a package, in fact that would be great.<br />
<br />
<br />
== Checklist ==<br />
<br />
<pre><br />
== Repository ==<br />
[ ] maintainer has specified a corresponding revision commit/changeset<br />
[ ] checkout code from Sourceforge, commit/changeset is present<br />
<br />
== Compile and Install ==<br />
[ ] release candidate installs on latest stable Octave release<br />
[ ] no compiler errors or warnings<br />
[ ] ran tests using <code>runtests /path/to/pkg</code> (use <code>oruntests</code> instead in Octave 6.0.0 or later)<br />
[ ] ran all tests, including those in src (how??)<br />
[ ] ran doctest on all functions (optional)<br />
[ ] ran generate_package_html (if Makefile present try <code> make html </code>)<br />
[ ] no makeinfo errors and warnings during HTML build<br />
[ ] unpacked and spot-checked the generated HTML documentation<br />
<br />
== Interaction with pkg ==<br />
[ ] <code>pkg load foo</code> runs with errors or warnings<br />
[ ] <code>pkg unload foo</code> runs with errors or warnings<br />
[ ] <code>pkg uninstall foo</code> runs with errors or warnings<br />
<br />
[ ] Above steps were run on Octave and OS versions:<br />
* ________<br />
* ________<br />
<br />
== Package files in release candidate tarball ==<br />
[ ] tested with minimum Octave version list in DESCRIPTION<br />
[ ] reasonable dependencies listed in DESCRIPTION<br />
[ ] NEWS file makes sense, version and date match<br />
[ ] All functions are listed in INDEX<br />
[ ] check licenses (<code>licensecheck -r</code> "plus some manual checks").<br />
[ ] package files are readable/executable by all users (reasonably current maintainer Makefile should be doing this).<br />
[ ] version number in src/configure.ac (if present) matches DESCRIPTION and tarball name.<br />
[ ] any version numbers within the help or function body (e.g., banners) matches above.<br />
[ ] contains no hidden dot files, junk backup files, results of configure runs, etc (should be taken care of by maintainer Makefile).<br />
</pre><br />
<br />
== Other info ==<br />
<br />
TODO: how does one check all functions are listed in INDEX?<br />
<br />
TODO: document how to run "all tests including those in src" Someday this should be just "pkg test foo".<br />
<br />
TODO: would be good to provide more specific instructions for when the package as a Maintainer Makefile? But we don't usually put the Maintainer Makefile in the .tar.gz package to do? (At least Doctest and Symbolic don't).<br />
<br />
=== Meta helping ===<br />
<br />
* Feel free to edit this wiki with explanations of the check list tasks<br />
* Please do add (reasonable) tasks to the check list<br />
<br />
=== Common problems ===<br />
<br />
Here are some common problems that reviewers can check for<br />
<br />
* INDEX is missing some new functions added<br />
* NEWS has not been updated or is missing something big<br />
* Version numbers or dates do not match between DESCRIPTION and NEWS<br />
* Common makeinfo errors like "@bye seen before @end deftypefn"<br />
* DESCRIPTION says pkg works with old Octave 4.x but it fails for me<br />
* Obviously, compiler errors, warnings, test failures<br />
<br />
[[Category:Octave Forge]]<br />
[[Category:Packages]]</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=Asking_for_package_to_be_released_under_GPL:_examples&diff=11866Asking for package to be released under GPL: examples2019-04-03T02:44:59Z<p>KaKiLa: /* Non-negative matrix factorization */</p>
<hr />
<div>These are examples of e-mails sent to packages owners asking for a release of their package under GPL compatible licenses.<br />
<br />
{{Note|this is only required if the code being requested is available for download ''only'' through File Exchange. Please read the [[FAQ#Why_can.27t_I_use_code_from_File_Exchange_in_Octave.3F_It.27s_released_under_a_BSD_license.21|FAQ]] to understand why permission is required in such cases. However, if, for example, the author also provides the code on their own homepage (or their university/institution homepage) under [http://www.gnu.org/licenses/gpl-faq.html#WhatDoesCompatMean GPL-compatible terms] (such as the [http://www.gnu.org/licenses/license-list.html#ModifiedBSD modified BSD license]), there is no need to bother them with legalese. Of course, you could email them telling that you find their code useful; we all enjoy appreciation of our work.}}<br />
<br />
== real2rgb from File Exchange ==<br />
* 12/10/2012<br />
<br />
<pre><br />
Dear Oliver Woodford,<br />
<br />
My name is Juan Pablo Carbajal, I am developer at Octave-Forge[1] a<br />
sibling project of GNU Octave. I have downloaded your package real2rgb from<br />
the Matlab file exchange and I find it<br />
very useful.<br />
Would you like to contribute it to Octave-Forge? I know licensing issues are<br />
difficult topics and therefore I approach you with utter respect.<br />
<br />
If you accept this invitation to contribute code to Octave-Forge, I can<br />
offer<br />
you the following<br />
- You will be properly credited and your papers will be linked as well.<br />
- Maintenance of your function, test and demos will be shared with the<br />
Octave and Octave-forge community. Of course you can continue contributing,<br />
and we will very happy to have you among us. I will also<br />
let you know of any bug report we get from the users.<br />
- I will take care of porting (code formatting, demos and test).<br />
- You function will be directly downloaded and installed from an<br />
Octave prompt (assuming it is packed inside real2rgb package):<br />
> pkg -forge install real2rgb<br />
<br />
The only thing that you need to do is to release your code under GPLv3 (we<br />
like this one :D ) or any license compatible with them, e.g. FreeBSD. I<br />
cannot use the downloaded the packages from the Matlab file exchange because<br />
it will be a violation of their "Terms of Use" (that code can be used only<br />
in<br />
Mathworks products). You need only to let me know that you allow me to<br />
redistribute your code under your free license of choice, I will<br />
take care of adding the header to each file of your package.<br />
<br />
In case you are interested, I can tell you about successful experiences of<br />
other researches contributing their work. For example the matGeom<br />
community[2] released under GPLv3 so that Octave-forge can mirror they<br />
package[3], since the package have enjoyed several new contributions and<br />
code<br />
optimization. A group from the technical<br />
university of Denmark[4] working on nonnegative matrix factorization also<br />
allowed us to redistribute their package under GPLv3. Biomechanics &<br />
Neurosciences researchers[5] have also changed their license to GPLv3 to<br />
allow us to produce packages out of their excellent algorithms.<br />
<br />
We have no other objective but to offer a truly free platform for the<br />
exchange of our research. I hope you join us!<br />
<br />
If you have any question or comments, please let me know without hesitation.<br />
<br />
Thank you very much for your excellent code!<br />
<br />
Regards,<br />
<br />
[1] http://octave.sourceforge.net/<br />
[2] http://sourceforge.net/apps/mediawiki/matgeom/index.php?title=Main_Page<br />
[3] http://www.octave.org/wiki/index.php?title=Geometry_package<br />
[4] http://cogsys.imm.dtu.dk/toolbox/nmf/index.html<br />
[5]<br />
http://sites.google.com/site/systemsneurosciencegroup/people/stewart-heitmann<br />
</pre><br />
<br />
== Gaussian Processes for machine learning ==<br />
* 21/5/2012<br />
<pre><br />
Dear Dr. Nickisch and Dr. Rasmussen,<br />
<br />
My name is Juan Pablo Carbajal, I am developer at Octave-Forge[1] a<br />
sibling project of GNU Octave. I<br />
have downloaded your package gpml-v3.1 from your website and I find it<br />
very useful (also fan of your book GP for ML).<br />
Would you like to contribute it to Octave-Forge? I know licensing<br />
issues are difficult topics and therefore I approach you with utter<br />
respect.<br />
<br />
If you accept this invitation to contribute code to Octave-Forge, I<br />
can offer you the following<br />
- You will be properly credited and your papers will be linked as well.<br />
- Maintenance of your function, test and demos will be taken over by<br />
the Octave and Octave-forge community. Of course you can continue<br />
contributing, and we will very happy to have you among us. I will also<br />
let you know of any bug report we get from the users.<br />
- I will take care of code formatting, demos and test.<br />
- You function will be directly downloaded and installed from an<br />
Octave terminal (assuming it is packed inside gaussp package):<br />
>pkg -forge install gaussp<br />
<br />
The only thing that you need to do is to release your code under GPLv3<br />
(we like this one :D ) or any license compatible with them, e.g.<br />
FreeBSD. Although the current license of your package is quite free,<br />
it is a custom license<br />
and GNU wouldn't accept it. You need only to let me know that you<br />
allow me to redistribute your code under your free license of choice, I will<br />
take care of adding the header to each file of your package.<br />
<br />
In case you are interested, I can tell you about successful<br />
experiences of other researches contributing their work. For<br />
example the Matgeom community[2] released under GPLv3 so that<br />
Octave-forge can mirror they package[3], since the package have<br />
enjoyed several new contributions and code optimization. A group from<br />
the technical<br />
university of Denmark[4] working on nonnegative matrix factorization<br />
also allowed us to<br />
redistribute their package under GPLv3. Biomechanics & Neurosciences<br />
researchers[5] have also changed their license to GPLv3 to allow us to<br />
produce packages out of their excellent algorithms.<br />
<br />
We have no other objective but to offer a truly free platform for the<br />
exchange of our research. I hope<br />
you join us!<br />
<br />
If you have any question or comments, please let me know without hesitation.<br />
<br />
Thank you very much for your excellent code (and book!)<br />
<br />
[1] http://octave.sourceforge.net/<br />
[2] http://sourceforge.net/apps/mediawiki/matgeom/index.php?title=Main_Page<br />
[3] http://www.octave.org/wiki/index.php?title=Geometry_package<br />
[4] http://cogsys.imm.dtu.dk/toolbox/nmf/index.html<br />
[5] http://sites.google.com/site/systemsneurosciencegroup/people/stewart-heitmann<br />
</pre><br />
<br />
== SPM ID Toolbox ==<br />
<br />
* 7/1/2011<br />
<pre><br />
Dear Brett,<br />
<br />
Thank you very much for your toolbox.<br />
I am trying to run it in Octave 3.5.0+ and it doesn't work. On one<br />
side the control functions of octave have been updated and the old<br />
ones (that apparently are dumped by Mathworks in the signal toolbox)<br />
were removed, but I am working on it. On the other side, I found some<br />
bugs in your package.<br />
<br />
For example, the function rksqrtv.m is empty! which makes demo_unit<br />
option 19 fail. However, even if the function were there, with the<br />
interface as explained in the help, then ks.m would produce an error<br />
at the end, because the matrix G has no field called ss.<br />
<br />
Another bug I found in m2f line 165. The output of mimofr would be of<br />
size number-of-ouputs x number-of-inputs x number-of-frequencies. As<br />
it is used there, the addition will fail for the option 20 of<br />
demo_unit I corrected by doing<br />
G.H=mimofr(G.ss.A,G.ss.K,G.ss.C,[],ww);<br />
DK = eye(size(G.H,1),size(G.H,2));<br />
G.H=G.H + DK(:,:,ones(1,length(ww)));<br />
<br />
by the way, if you were aiming to make UNIT compatible with Octave<br />
3.5.0+, you would have freqresp.m available in the control package.<br />
<br />
Are you planning to produce an Octave 3.5.0+ compatible version of<br />
your excellent package?<br />
<br />
Thanks again,<br />
<br />
Regards,<br />
</pre><br />
<br />
* 12/9/2012<br />
<pre><br />
Dear Brett Ninness,<br />
<br />
I am writing you once more in relation to the SPM toolbox<br />
(http://sigpromu.org/idtoolbox/).<br />
<br />
GNU Octave is now in its 3.6.x version and the packages are<br />
experiencing fast development. Take for example (and most related to<br />
your package) the control package<br />
(http://octave.sourceforge.net/control/overview.html). You may notice<br />
under the section "Experimental data handling" and "System<br />
identification" some interesting new functionality.<br />
<br />
Do you have plans to release your package under a GPL compatible<br />
license (http://en.wikipedia.org/wiki/List_of_FSF-approved_software_licenses)?<br />
Only under this licesing scheme we can include and extended your<br />
package into GNU Octave packages. It may be advantageous, in terms of<br />
visibility and use, to release a free version that can be shipped with<br />
GNU Octave packages, since users can download it and install it<br />
directly from the prompt. Additionally, the packages that are most<br />
popular are shipped within Linux distributions like Debian and Fedora.<br />
<br />
Please let us know about your decision.<br />
<br />
Thank you very much in advance.<br />
<br />
Kind regards,<br />
</pre><br />
<br />
== Non-negative matrix factorization ==<br />
* 9/3/2012<br />
<pre><br />
Dear Dr. Jingu Kim,<br />
<br />
My name is Juan Pablo Carbajal, I am a developer of Octave-Forge[1]. I<br />
have downloaded your package nmf_bpas from your website and I find it<br />
very useful.<br />
Would you like to contribute it to Octave-Forge? I know licensing<br />
issues are difficult topics and therefore I approach you with utter<br />
respect.<br />
<br />
If you accept this invitation to contribute code to Octave-Forge, I<br />
can offer you the following<br />
- You will be properly credited and your papers will be linked as well.<br />
- Maintenance of your function, test and demos will be taken over by<br />
the Octave and Octave-forge community. Of course you can continue<br />
contributing, and we will very happy to have you among us.<br />
- I will take care of code formatting, demos and test.<br />
- You function will be directly downloaded and installed from an<br />
Octave terminal (assuming it is packed inside linear-algebra package):<br />
>pkg -forge install linear-algebra<br />
<br />
The only thing that you need to do is to release your code under GPLv3<br />
(we like this one :D ) or any license compatible with them, e.g.<br />
FreeBSD. We already have an algorithm for nmf, by Chih-Jen Lin[2] but<br />
we would like to have a good variety of implementations, therefore we<br />
ask for your contribution.<br />
<br />
In case you are interested, I can tell you about successful<br />
experiences of together researches contributing their work. For<br />
example the Matgeom community[3] released under GPLv3 so that<br />
Octave-forge can mirror they package[4]. Biomechanics & Neurosciences<br />
researchers[5] have also changed their license to GPLv3 to allow us to<br />
produce packages out of their excellent algorithms. We are trying to<br />
offer a truly free platform for the exchange of our research. I hope<br />
you join us!<br />
<br />
[1] http://octave.sourceforge.net/<br />
[2] http://www.csie.ntu.edu.tw/~cjlin/nmf/index.html<br />
[3] http://sourceforge.net/apps/mediawiki/matgeom/index.php?title=Main_Page<br />
[4] http://www.octave.org/wiki/index.php?title=Geometry_package<br />
[5] http://sites.google.com/site/systemsneurosciencegroup/people/stewart-heitmann<br />
<br />
Looking forward to your answer,<br />
<br />
Best regards,<br />
</pre><br />
<br />
<pre><br />
Dear Chih-Jen Lin,<br />
<br />
My name is Juan Pablo Carbajal, I am a developer of Octave-Forge[1]. I<br />
have downloaded your function nmf.m from your website and I find it<br />
very useful.<br />
Would you like to contribute it to Octave-Forge? I know licensing<br />
issues are difficult topics and therefore I approach you with utter<br />
respect.<br />
<br />
If you accept this invitation to contribute code to Octave-Forge, I<br />
can offer you the following<br />
- You will be properly credited and your papers will be linked as well.<br />
- Maintenance of your function, test and demos will be taken over by<br />
the Octave and Octave-forge community. Of course you can continue<br />
contributing, and we will very happy to have you among us.<br />
- I will take care of code formatting, demos and test.<br />
- You function will be directly downloaded and installed from an<br />
Octave terminal (assuming it is packed inside linear-algebra package):<br />
>pkg -forge install linear-algebra<br />
<br />
The only thing that you need to do is to release your code under GPLv3<br />
(we like this one :D ) or any license compatible with them, e.g.<br />
FreeBSD.<br />
<br />
In case you are interested, I can tell you about successful<br />
experiences of together researches contributing their work. For<br />
example the Matgeom community[2] released under GPLv3 so that<br />
Octave-forge can mirror they package[3]. Biomechanics & Neurosciences<br />
researchers[4] have also changed their license to GPLv3 to allow us to<br />
produce packages out of their excellent algorithms. We are trying to<br />
offer a truly free platform for the exchange of our research. I hope<br />
you join us!<br />
<br />
Looking forward to your answer,<br />
<br />
Best regards,<br />
</pre><br />
<br />
* 27/3/2012<br />
<pre><br />
Dear Kasper Winther Joergensen,<br />
<br />
My name is Juan Pablo Carbajal, I am a developer of Octave-Forge[1]. I have downloaded the nmf toolbox 1-4-0 from your website and I find it very useful.<br />
Would you like to contribute it to Octave-Forge? I know licensing issues are difficult topics and therefore I approach you with utter respect.<br />
<br />
If you accept this invitation to contribute code to Octave-Forge, I can offer you the following<br />
- You will be properly credited and your papers will be linked as well.<br />
- Maintenance of your toolbox, test and demos will be taken over by the Octave and Octave-forge community. Of course you can continue contributing, and we will very happy to have you among us.<br />
- I will take care of code formatting, demos and test.<br />
- You function will be directly downloaded and installed from an Octave terminal (assuming it is packed inside linear-algebra package):<br />
>pkg -forge install linear-algebra<br />
<br />
The only thing that you need to do is to release your code under GPLv3 (we like this one :D ) or any license compatible with them, e.g.<br />
FreeBSD. Chih-Jen Lin (author of the file nmf_cjlin in your toolbox) and Jingu Kim have already send me their permission to post their code in Octave-Forge. I hope you join us!<br />
<br />
In case you are interested, I can tell you about successful experiences of together researches contributing their work. For example the Matgeom community[2] released under GPLv3 so that Octave-forge can mirror they package[3]. Biomechanics & Neurosciences researchers[4] have also changed their license to GPLv3 to allow us to produce packages out of their excellent algorithms. We are trying to offer a truly free platform for the exchange of our research.<br />
<br />
Looking forward to your answer,<br />
<br />
Best regards,<br />
</pre><br />
<br />
== Motion tracking ==<br />
*29/8/2012<br />
<pre><br />
Dear Marie Dacke and Emily Baird,<br />
<br />
Thank you once more for your interesting research and motivating<br />
presentation about dung beetles.<br />
As we discussed post-processing the data recorded with cameras and<br />
tracking the position of the bugs is time consuming. Automatizing and<br />
standardizing this task is very important for reproducible research<br />
and the speed up development in ethology.<br />
<br />
You told me that you post-process your movies using Matlab. I would<br />
like to port your scripts to GNU Octave to make them completely free<br />
(that is the code can be run in free software). If you could provide<br />
some of your code so I can test it in Octave, it would be very<br />
helpful. We will see what developments are needed in the current<br />
version of Octave and the community will work on that.<br />
<br />
To be useful in Octave we would need that the code you send is<br />
released under a free license (we refer GPLv3, but any in the column<br />
GPL compatible would do fine<br />
http://en.wikipedia.org/wiki/List_of_FSF_approved_software_licenses).<br />
Your authorship will never be removed form the files, only editors<br />
names will be added if required.<br />
<br />
Looking forward to work on your code.<br />
<br />
Sincerely<br />
</pre><br />
<br />
== Biomechanical muscle models ==<br />
* 21/12/2011<br />
<pre><br />
Dear Stewart,<br />
<br />
Thank you again for establishing the contact.<br />
<br />
From the latest video I understand that the torques generated in<br />
joints closer to the "shoulder" due to the segments farther away,<br />
change the stability of some of the equilibrium points. If that is the<br />
case this is something that one cannot predict studying isolated<br />
links. However, I guess that studying isolated links with an extra<br />
constant term would show these bifurcations as well (that is, the<br />
torque due to its own weight + some external constant torque).<br />
<br />
I have an interest in your work since my work is related. In my thesis<br />
I study the effect that body properties (around here people speaks of<br />
"morphology") may have on the difficulty of performing certain tasks.<br />
Stated as a question, Can we quantify the relation between function<br />
and morphology? I studied several cases and one of them is kinematic<br />
chains, though I did not achieve a strong answer to the question I<br />
came up with a method to calculate solution to control problems base<br />
don the natural dynamics of the kinematic chain. Using models as the<br />
one you report in your paper is of high interest to me (but for an<br />
after thesis life, i.e. ~July 2012). Maybe we can have a sort of<br />
collaboration there. I am collaborating with Andrea d'Avella (context<br />
of AMARSi project[0]) and with a student of Francesco Nori, I guess it<br />
will be great to unite forces ;D.<br />
<br />
Additionally, I plan to release my algorithms in a package (probably<br />
named biomechanics) for Octave[1,2] (I hope you know it, is very<br />
similar to Matlab) and I was wondering if you would like to release<br />
yours as well, in the same package. The only formal requirement is<br />
that your code has a GNU compatible license (FreeBSD, GPL, LGPL, etc).<br />
I am already a developer there, so I could take care of the<br />
"administrative" burden. Here [3] you can see my TODO list for Octave,<br />
to see what is to come (for example the robotics package!)<br />
<br />
Looking forward to your answer!<br />
<br />
[0] http://www.amarsi-project.eu/<br />
[1] http://www.gnu.org/software/octave/<br />
[2] http://octave.sourceforge.net/<br />
[3] http://octave.org/wiki/index.php?title=User:KaKiLa<br />
</pre><br />
<br />
== matGeom ==<br />
* 26/9/2011<br />
<pre><br />
Dear David,<br />
<br />
I would like to discuss the possibility of making matGeom compatible<br />
with Octave and upload it to the Octave-Packages server.<br />
http://octave.sourceforge.net/index.html<br />
<br />
Packages there are maintained individually and people can get them<br />
directly from inside octave. That make is really easy to install the<br />
package.<br />
<br />
Regarding the license. You can release your code with multiple<br />
licenses, that is not a problem at all. If you add the GPL version to<br />
a zip and send it, then that code will be GPL. Nevertheless BSD work<br />
fine as well. Just let me know when you add the license (make sure you<br />
add 3-clause or 2-clause BSD<br />
(http://en.wikipedia.org/wiki/BSD_licenses), otherwise we cannot add<br />
it to Octave).<br />
<br />
As soon as you let me know, I will start the upload.<br />
<br />
Thanks<br />
<br />
Regards,<br />
<br />
</pre></div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=Asking_for_package_to_be_released_under_GPL:_examples&diff=11865Asking for package to be released under GPL: examples2019-04-03T02:43:19Z<p>KaKiLa: /* Gaussian Processes for machine learning */</p>
<hr />
<div>These are examples of e-mails sent to packages owners asking for a release of their package under GPL compatible licenses.<br />
<br />
{{Note|this is only required if the code being requested is available for download ''only'' through File Exchange. Please read the [[FAQ#Why_can.27t_I_use_code_from_File_Exchange_in_Octave.3F_It.27s_released_under_a_BSD_license.21|FAQ]] to understand why permission is required in such cases. However, if, for example, the author also provides the code on their own homepage (or their university/institution homepage) under [http://www.gnu.org/licenses/gpl-faq.html#WhatDoesCompatMean GPL-compatible terms] (such as the [http://www.gnu.org/licenses/license-list.html#ModifiedBSD modified BSD license]), there is no need to bother them with legalese. Of course, you could email them telling that you find their code useful; we all enjoy appreciation of our work.}}<br />
<br />
== real2rgb from File Exchange ==<br />
* 12/10/2012<br />
<br />
<pre><br />
Dear Oliver Woodford,<br />
<br />
My name is Juan Pablo Carbajal, I am developer at Octave-Forge[1] a<br />
sibling project of GNU Octave. I have downloaded your package real2rgb from<br />
the Matlab file exchange and I find it<br />
very useful.<br />
Would you like to contribute it to Octave-Forge? I know licensing issues are<br />
difficult topics and therefore I approach you with utter respect.<br />
<br />
If you accept this invitation to contribute code to Octave-Forge, I can<br />
offer<br />
you the following<br />
- You will be properly credited and your papers will be linked as well.<br />
- Maintenance of your function, test and demos will be shared with the<br />
Octave and Octave-forge community. Of course you can continue contributing,<br />
and we will very happy to have you among us. I will also<br />
let you know of any bug report we get from the users.<br />
- I will take care of porting (code formatting, demos and test).<br />
- You function will be directly downloaded and installed from an<br />
Octave prompt (assuming it is packed inside real2rgb package):<br />
> pkg -forge install real2rgb<br />
<br />
The only thing that you need to do is to release your code under GPLv3 (we<br />
like this one :D ) or any license compatible with them, e.g. FreeBSD. I<br />
cannot use the downloaded the packages from the Matlab file exchange because<br />
it will be a violation of their "Terms of Use" (that code can be used only<br />
in<br />
Mathworks products). You need only to let me know that you allow me to<br />
redistribute your code under your free license of choice, I will<br />
take care of adding the header to each file of your package.<br />
<br />
In case you are interested, I can tell you about successful experiences of<br />
other researches contributing their work. For example the matGeom<br />
community[2] released under GPLv3 so that Octave-forge can mirror they<br />
package[3], since the package have enjoyed several new contributions and<br />
code<br />
optimization. A group from the technical<br />
university of Denmark[4] working on nonnegative matrix factorization also<br />
allowed us to redistribute their package under GPLv3. Biomechanics &<br />
Neurosciences researchers[5] have also changed their license to GPLv3 to<br />
allow us to produce packages out of their excellent algorithms.<br />
<br />
We have no other objective but to offer a truly free platform for the<br />
exchange of our research. I hope you join us!<br />
<br />
If you have any question or comments, please let me know without hesitation.<br />
<br />
Thank you very much for your excellent code!<br />
<br />
Regards,<br />
<br />
[1] http://octave.sourceforge.net/<br />
[2] http://sourceforge.net/apps/mediawiki/matgeom/index.php?title=Main_Page<br />
[3] http://www.octave.org/wiki/index.php?title=Geometry_package<br />
[4] http://cogsys.imm.dtu.dk/toolbox/nmf/index.html<br />
[5]<br />
http://sites.google.com/site/systemsneurosciencegroup/people/stewart-heitmann<br />
</pre><br />
<br />
== Gaussian Processes for machine learning ==<br />
* 21/5/2012<br />
<pre><br />
Dear Dr. Nickisch and Dr. Rasmussen,<br />
<br />
My name is Juan Pablo Carbajal, I am developer at Octave-Forge[1] a<br />
sibling project of GNU Octave. I<br />
have downloaded your package gpml-v3.1 from your website and I find it<br />
very useful (also fan of your book GP for ML).<br />
Would you like to contribute it to Octave-Forge? I know licensing<br />
issues are difficult topics and therefore I approach you with utter<br />
respect.<br />
<br />
If you accept this invitation to contribute code to Octave-Forge, I<br />
can offer you the following<br />
- You will be properly credited and your papers will be linked as well.<br />
- Maintenance of your function, test and demos will be taken over by<br />
the Octave and Octave-forge community. Of course you can continue<br />
contributing, and we will very happy to have you among us. I will also<br />
let you know of any bug report we get from the users.<br />
- I will take care of code formatting, demos and test.<br />
- You function will be directly downloaded and installed from an<br />
Octave terminal (assuming it is packed inside gaussp package):<br />
>pkg -forge install gaussp<br />
<br />
The only thing that you need to do is to release your code under GPLv3<br />
(we like this one :D ) or any license compatible with them, e.g.<br />
FreeBSD. Although the current license of your package is quite free,<br />
it is a custom license<br />
and GNU wouldn't accept it. You need only to let me know that you<br />
allow me to redistribute your code under your free license of choice, I will<br />
take care of adding the header to each file of your package.<br />
<br />
In case you are interested, I can tell you about successful<br />
experiences of other researches contributing their work. For<br />
example the Matgeom community[2] released under GPLv3 so that<br />
Octave-forge can mirror they package[3], since the package have<br />
enjoyed several new contributions and code optimization. A group from<br />
the technical<br />
university of Denmark[4] working on nonnegative matrix factorization<br />
also allowed us to<br />
redistribute their package under GPLv3. Biomechanics & Neurosciences<br />
researchers[5] have also changed their license to GPLv3 to allow us to<br />
produce packages out of their excellent algorithms.<br />
<br />
We have no other objective but to offer a truly free platform for the<br />
exchange of our research. I hope<br />
you join us!<br />
<br />
If you have any question or comments, please let me know without hesitation.<br />
<br />
Thank you very much for your excellent code (and book!)<br />
<br />
[1] http://octave.sourceforge.net/<br />
[2] http://sourceforge.net/apps/mediawiki/matgeom/index.php?title=Main_Page<br />
[3] http://www.octave.org/wiki/index.php?title=Geometry_package<br />
[4] http://cogsys.imm.dtu.dk/toolbox/nmf/index.html<br />
[5] http://sites.google.com/site/systemsneurosciencegroup/people/stewart-heitmann<br />
</pre><br />
<br />
== SPM ID Toolbox ==<br />
<br />
* 7/1/2011<br />
<pre><br />
Dear Brett,<br />
<br />
Thank you very much for your toolbox.<br />
I am trying to run it in Octave 3.5.0+ and it doesn't work. On one<br />
side the control functions of octave have been updated and the old<br />
ones (that apparently are dumped by Mathworks in the signal toolbox)<br />
were removed, but I am working on it. On the other side, I found some<br />
bugs in your package.<br />
<br />
For example, the function rksqrtv.m is empty! which makes demo_unit<br />
option 19 fail. However, even if the function were there, with the<br />
interface as explained in the help, then ks.m would produce an error<br />
at the end, because the matrix G has no field called ss.<br />
<br />
Another bug I found in m2f line 165. The output of mimofr would be of<br />
size number-of-ouputs x number-of-inputs x number-of-frequencies. As<br />
it is used there, the addition will fail for the option 20 of<br />
demo_unit I corrected by doing<br />
G.H=mimofr(G.ss.A,G.ss.K,G.ss.C,[],ww);<br />
DK = eye(size(G.H,1),size(G.H,2));<br />
G.H=G.H + DK(:,:,ones(1,length(ww)));<br />
<br />
by the way, if you were aiming to make UNIT compatible with Octave<br />
3.5.0+, you would have freqresp.m available in the control package.<br />
<br />
Are you planning to produce an Octave 3.5.0+ compatible version of<br />
your excellent package?<br />
<br />
Thanks again,<br />
<br />
Regards,<br />
</pre><br />
<br />
* 12/9/2012<br />
<pre><br />
Dear Brett Ninness,<br />
<br />
I am writing you once more in relation to the SPM toolbox<br />
(http://sigpromu.org/idtoolbox/).<br />
<br />
GNU Octave is now in its 3.6.x version and the packages are<br />
experiencing fast development. Take for example (and most related to<br />
your package) the control package<br />
(http://octave.sourceforge.net/control/overview.html). You may notice<br />
under the section "Experimental data handling" and "System<br />
identification" some interesting new functionality.<br />
<br />
Do you have plans to release your package under a GPL compatible<br />
license (http://en.wikipedia.org/wiki/List_of_FSF-approved_software_licenses)?<br />
Only under this licesing scheme we can include and extended your<br />
package into GNU Octave packages. It may be advantageous, in terms of<br />
visibility and use, to release a free version that can be shipped with<br />
GNU Octave packages, since users can download it and install it<br />
directly from the prompt. Additionally, the packages that are most<br />
popular are shipped within Linux distributions like Debian and Fedora.<br />
<br />
Please let us know about your decision.<br />
<br />
Thank you very much in advance.<br />
<br />
Kind regards,<br />
</pre><br />
<br />
== Non-negative matrix factorization ==<br />
* 9/3/2012<br />
<pre><br />
Dear Dr. Jingu Kim,<br />
<br />
My name is Juan Pablo Carbajal, I am a developer of Octave-Forge[1]. I<br />
have downloaded your package nmf_bpas from your website and I find it<br />
very useful.<br />
Would you like to contribute it to Octave-Forge? I know licensing<br />
issues are difficult topics and therefore I approach you with utter<br />
respect.<br />
<br />
If you accept this invitation to contribute code to Octave-Forge, I<br />
can offer you the following<br />
- You will be properly credited and your papers will be linked as well.<br />
- Maintenance of your function, test and demos will be taken over by<br />
the Octave and Octave-forge community. Of course you can continue<br />
contributing, and we will very happy to have you among us.<br />
- I will take care of code formatting, demos and test.<br />
- You function will be directly downloaded and installed form an<br />
Octave terminal (assuming it is packed inside linear-algebra package):<br />
>pkg -forge install linear-algebra<br />
<br />
The only thing that you need to do is to release your code under GPLv3<br />
(we like this one :D ) or any license compatible with them, e.g.<br />
FreeBSD. We already have an algorithm for nmf, by Chih-Jen Lin[2] but<br />
we would like to have a good variety of implementations, therefore we<br />
ask for your contribution.<br />
<br />
In case you are interested, I can tell you about successful<br />
experiences of together researches contributing their work. For<br />
example the Matgeom community[3] released under GPLv3 so that<br />
Octave-forge can mirror they package[4]. Biomechanics & Neurosciences<br />
researchers[5] have also changed their license to GPLv3 to allow us to<br />
produce packages out of their excellent algorithms. We are trying to<br />
offer a truly free platform for the exchange of our research. I hope<br />
you join us!<br />
<br />
[1] http://octave.sourceforge.net/<br />
[2] http://www.csie.ntu.edu.tw/~cjlin/nmf/index.html<br />
[3] http://sourceforge.net/apps/mediawiki/matgeom/index.php?title=Main_Page<br />
[4] http://www.octave.org/wiki/index.php?title=Geometry_package<br />
[5] http://sites.google.com/site/systemsneurosciencegroup/people/stewart-heitmann<br />
<br />
Looking forward to your answer,<br />
<br />
Best regards,<br />
</pre><br />
<br />
<pre><br />
Dear Chih-Jen Lin,<br />
<br />
My name is Juan Pablo Carbajal, I am a developer of Octave-Forge[1]. I<br />
have downloaded your function nmf.m from your website and I find it<br />
very useful.<br />
Would you like to contribute it to Octave-Forge? I know licensing<br />
issues are difficult topics and therefore I approach you with utter<br />
respect.<br />
<br />
If you accept this invitation to contribute code to Octave-Forge, I<br />
can offer you the following<br />
- You will be properly credited and your papers will be linked as well.<br />
- Maintenance of your function, test and demos will be taken over by<br />
the Octave and Octave-forge community. Of course you can continue<br />
contributing, and we will very happy to have you among us.<br />
- I will take care of code formatting, demos and test.<br />
- You function will be directly downloaded and installed form an<br />
Octave terminal (assuming it is packed inside linear-algebra package):<br />
>pkg -forge install linear-algebra<br />
<br />
The only thing that you need to do is to release your code under GPLv3<br />
(we like this one :D ) or any license compatible with them, e.g.<br />
FreeBSD.<br />
<br />
In case you are interested, I can tell you about successful<br />
experiences of together researches contributing their work. For<br />
example the Matgeom community[2] released under GPLv3 so that<br />
Octave-forge can mirror they package[3]. Biomechanics & Neurosciences<br />
researchers[4] have also changed their license to GPLv3 to allow us to<br />
produce packages out of their excellent algorithms. We are trying to<br />
offer a truly free platform for the exchange of our research. I hope<br />
you join us!<br />
<br />
Looking forward to your answer,<br />
<br />
Best regards,<br />
</pre><br />
<br />
* 27/3/2012<br />
<pre><br />
Dear Kasper Winther Joergensen,<br />
<br />
My name is Juan Pablo Carbajal, I am a developer of Octave-Forge[1]. I have downloaded the nmf toolbox 1-4-0 from your website and I find it very useful.<br />
Would you like to contribute it to Octave-Forge? I know licensing issues are difficult topics and therefore I approach you with utter respect.<br />
<br />
If you accept this invitation to contribute code to Octave-Forge, I can offer you the following<br />
- You will be properly credited and your papers will be linked as well.<br />
- Maintenance of your toolbox, test and demos will be taken over by the Octave and Octave-forge community. Of course you can continue contributing, and we will very happy to have you among us.<br />
- I will take care of code formatting, demos and test.<br />
- You function will be directly downloaded and installed form an Octave terminal (assuming it is packed inside linear-algebra package):<br />
>pkg -forge install linear-algebra<br />
<br />
The only thing that you need to do is to release your code under GPLv3 (we like this one :D ) or any license compatible with them, e.g.<br />
FreeBSD. Chih-Jen Lin (author of the file nmf_cjlin in your toolbox) and Jingu Kim have already send me their permission to post their code in Octave-Forge. I hope you join us!<br />
<br />
In case you are interested, I can tell you about successful experiences of together researches contributing their work. For example the Matgeom community[2] released under GPLv3 so that Octave-forge can mirror they package[3]. Biomechanics & Neurosciences researchers[4] have also changed their license to GPLv3 to allow us to produce packages out of their excellent algorithms. We are trying to offer a truly free platform for the exchange of our research.<br />
<br />
Looking forward to your answer,<br />
<br />
Best regards,<br />
</pre><br />
<br />
== Motion tracking ==<br />
*29/8/2012<br />
<pre><br />
Dear Marie Dacke and Emily Baird,<br />
<br />
Thank you once more for your interesting research and motivating<br />
presentation about dung beetles.<br />
As we discussed post-processing the data recorded with cameras and<br />
tracking the position of the bugs is time consuming. Automatizing and<br />
standardizing this task is very important for reproducible research<br />
and the speed up development in ethology.<br />
<br />
You told me that you post-process your movies using Matlab. I would<br />
like to port your scripts to GNU Octave to make them completely free<br />
(that is the code can be run in free software). If you could provide<br />
some of your code so I can test it in Octave, it would be very<br />
helpful. We will see what developments are needed in the current<br />
version of Octave and the community will work on that.<br />
<br />
To be useful in Octave we would need that the code you send is<br />
released under a free license (we refer GPLv3, but any in the column<br />
GPL compatible would do fine<br />
http://en.wikipedia.org/wiki/List_of_FSF_approved_software_licenses).<br />
Your authorship will never be removed form the files, only editors<br />
names will be added if required.<br />
<br />
Looking forward to work on your code.<br />
<br />
Sincerely<br />
</pre><br />
<br />
== Biomechanical muscle models ==<br />
* 21/12/2011<br />
<pre><br />
Dear Stewart,<br />
<br />
Thank you again for establishing the contact.<br />
<br />
From the latest video I understand that the torques generated in<br />
joints closer to the "shoulder" due to the segments farther away,<br />
change the stability of some of the equilibrium points. If that is the<br />
case this is something that one cannot predict studying isolated<br />
links. However, I guess that studying isolated links with an extra<br />
constant term would show these bifurcations as well (that is, the<br />
torque due to its own weight + some external constant torque).<br />
<br />
I have an interest in your work since my work is related. In my thesis<br />
I study the effect that body properties (around here people speaks of<br />
"morphology") may have on the difficulty of performing certain tasks.<br />
Stated as a question, Can we quantify the relation between function<br />
and morphology? I studied several cases and one of them is kinematic<br />
chains, though I did not achieve a strong answer to the question I<br />
came up with a method to calculate solution to control problems base<br />
don the natural dynamics of the kinematic chain. Using models as the<br />
one you report in your paper is of high interest to me (but for an<br />
after thesis life, i.e. ~July 2012). Maybe we can have a sort of<br />
collaboration there. I am collaborating with Andrea d'Avella (context<br />
of AMARSi project[0]) and with a student of Francesco Nori, I guess it<br />
will be great to unite forces ;D.<br />
<br />
Additionally, I plan to release my algorithms in a package (probably<br />
named biomechanics) for Octave[1,2] (I hope you know it, is very<br />
similar to Matlab) and I was wondering if you would like to release<br />
yours as well, in the same package. The only formal requirement is<br />
that your code has a GNU compatible license (FreeBSD, GPL, LGPL, etc).<br />
I am already a developer there, so I could take care of the<br />
"administrative" burden. Here [3] you can see my TODO list for Octave,<br />
to see what is to come (for example the robotics package!)<br />
<br />
Looking forward to your answer!<br />
<br />
[0] http://www.amarsi-project.eu/<br />
[1] http://www.gnu.org/software/octave/<br />
[2] http://octave.sourceforge.net/<br />
[3] http://octave.org/wiki/index.php?title=User:KaKiLa<br />
</pre><br />
<br />
== matGeom ==<br />
* 26/9/2011<br />
<pre><br />
Dear David,<br />
<br />
I would like to discuss the possibility of making matGeom compatible<br />
with Octave and upload it to the Octave-Packages server.<br />
http://octave.sourceforge.net/index.html<br />
<br />
Packages there are maintained individually and people can get them<br />
directly from inside octave. That make is really easy to install the<br />
package.<br />
<br />
Regarding the license. You can release your code with multiple<br />
licenses, that is not a problem at all. If you add the GPL version to<br />
a zip and send it, then that code will be GPL. Nevertheless BSD work<br />
fine as well. Just let me know when you add the license (make sure you<br />
add 3-clause or 2-clause BSD<br />
(http://en.wikipedia.org/wiki/BSD_licenses), otherwise we cannot add<br />
it to Octave).<br />
<br />
As soon as you let me know, I will start the upload.<br />
<br />
Thanks<br />
<br />
Regards,<br />
<br />
</pre></div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=Asking_for_package_to_be_released_under_GPL:_examples&diff=11864Asking for package to be released under GPL: examples2019-04-03T02:42:34Z<p>KaKiLa: /* real2rgb from File Exchange */</p>
<hr />
<div>These are examples of e-mails sent to packages owners asking for a release of their package under GPL compatible licenses.<br />
<br />
{{Note|this is only required if the code being requested is available for download ''only'' through File Exchange. Please read the [[FAQ#Why_can.27t_I_use_code_from_File_Exchange_in_Octave.3F_It.27s_released_under_a_BSD_license.21|FAQ]] to understand why permission is required in such cases. However, if, for example, the author also provides the code on their own homepage (or their university/institution homepage) under [http://www.gnu.org/licenses/gpl-faq.html#WhatDoesCompatMean GPL-compatible terms] (such as the [http://www.gnu.org/licenses/license-list.html#ModifiedBSD modified BSD license]), there is no need to bother them with legalese. Of course, you could email them telling that you find their code useful; we all enjoy appreciation of our work.}}<br />
<br />
== real2rgb from File Exchange ==<br />
* 12/10/2012<br />
<br />
<pre><br />
Dear Oliver Woodford,<br />
<br />
My name is Juan Pablo Carbajal, I am developer at Octave-Forge[1] a<br />
sibling project of GNU Octave. I have downloaded your package real2rgb from<br />
the Matlab file exchange and I find it<br />
very useful.<br />
Would you like to contribute it to Octave-Forge? I know licensing issues are<br />
difficult topics and therefore I approach you with utter respect.<br />
<br />
If you accept this invitation to contribute code to Octave-Forge, I can<br />
offer<br />
you the following<br />
- You will be properly credited and your papers will be linked as well.<br />
- Maintenance of your function, test and demos will be shared with the<br />
Octave and Octave-forge community. Of course you can continue contributing,<br />
and we will very happy to have you among us. I will also<br />
let you know of any bug report we get from the users.<br />
- I will take care of porting (code formatting, demos and test).<br />
- You function will be directly downloaded and installed from an<br />
Octave prompt (assuming it is packed inside real2rgb package):<br />
> pkg -forge install real2rgb<br />
<br />
The only thing that you need to do is to release your code under GPLv3 (we<br />
like this one :D ) or any license compatible with them, e.g. FreeBSD. I<br />
cannot use the downloaded the packages from the Matlab file exchange because<br />
it will be a violation of their "Terms of Use" (that code can be used only<br />
in<br />
Mathworks products). You need only to let me know that you allow me to<br />
redistribute your code under your free license of choice, I will<br />
take care of adding the header to each file of your package.<br />
<br />
In case you are interested, I can tell you about successful experiences of<br />
other researches contributing their work. For example the matGeom<br />
community[2] released under GPLv3 so that Octave-forge can mirror they<br />
package[3], since the package have enjoyed several new contributions and<br />
code<br />
optimization. A group from the technical<br />
university of Denmark[4] working on nonnegative matrix factorization also<br />
allowed us to redistribute their package under GPLv3. Biomechanics &<br />
Neurosciences researchers[5] have also changed their license to GPLv3 to<br />
allow us to produce packages out of their excellent algorithms.<br />
<br />
We have no other objective but to offer a truly free platform for the<br />
exchange of our research. I hope you join us!<br />
<br />
If you have any question or comments, please let me know without hesitation.<br />
<br />
Thank you very much for your excellent code!<br />
<br />
Regards,<br />
<br />
[1] http://octave.sourceforge.net/<br />
[2] http://sourceforge.net/apps/mediawiki/matgeom/index.php?title=Main_Page<br />
[3] http://www.octave.org/wiki/index.php?title=Geometry_package<br />
[4] http://cogsys.imm.dtu.dk/toolbox/nmf/index.html<br />
[5]<br />
http://sites.google.com/site/systemsneurosciencegroup/people/stewart-heitmann<br />
</pre><br />
<br />
== Gaussian Processes for machine learning ==<br />
* 21/5/2012<br />
<pre><br />
Dear Dr. Nickisch and Dr. Rasmussen,<br />
<br />
My name is Juan Pablo Carbajal, I am developer at Octave-Forge[1] a<br />
sibling project of GNU Octave. I<br />
have downloaded your package gpml-v3.1 from your website and I find it<br />
very useful (also fan of your book GP for ML).<br />
Would you like to contribute it to Octave-Forge? I know licensing<br />
issues are difficult topics and therefore I approach you with utter<br />
respect.<br />
<br />
If you accept this invitation to contribute code to Octave-Forge, I<br />
can offer you the following<br />
- You will be properly credited and your papers will be linked as well.<br />
- Maintenance of your function, test and demos will be taken over by<br />
the Octave and Octave-forge community. Of course you can continue<br />
contributing, and we will very happy to have you among us. I will also<br />
let you know of any bug report we get from the users.<br />
- I will take care of code formatting, demos and test.<br />
- You function will be directly downloaded and installed from an<br />
Octave terminal (assuming it is packed inside gaussp package):<br />
>pkg -forge install gaussp<br />
<br />
The only thing that you need to do is to release your code under GPLv3<br />
(we like this one :D ) or any license compatible with them, e.g.<br />
FreeBSD. Although the current license of your package is quite free,<br />
it is a custom license<br />
and GNU wouldn't accept it. You need only to let me know that you<br />
allow me to redistribute your code under your free license of choice, I will<br />
take care of adding the header to each file of your package.<br />
<br />
In case you are interested, I can tell you about successful<br />
experiences of other researches contributing their work. For<br />
example the Matgeom community[2] released under GPLv3 so that<br />
Octave-forge can mirror they package[3], since the package have<br />
enjoyed several new contributions and code optimization. A group form<br />
the technical<br />
university of Denmark[4] working on nonnegative matrix factorization<br />
also allowed us to<br />
redistribute their package under GPLv3. Biomechanics & Neurosciences<br />
researchers[5] have also changed their license to GPLv3 to allow us to<br />
produce packages out of their excellent algorithms.<br />
<br />
We have no other objective but to offer a truly free platform for the<br />
exchange of our research. I hope<br />
you join us!<br />
<br />
If you have any question or comments, please let me know without hesitation.<br />
<br />
Thank you very much for your excellent code (and book!)<br />
<br />
[1] http://octave.sourceforge.net/<br />
[2] http://sourceforge.net/apps/mediawiki/matgeom/index.php?title=Main_Page<br />
[3] http://www.octave.org/wiki/index.php?title=Geometry_package<br />
[4] http://cogsys.imm.dtu.dk/toolbox/nmf/index.html<br />
[5] http://sites.google.com/site/systemsneurosciencegroup/people/stewart-heitmann<br />
</pre><br />
<br />
== SPM ID Toolbox ==<br />
<br />
* 7/1/2011<br />
<pre><br />
Dear Brett,<br />
<br />
Thank you very much for your toolbox.<br />
I am trying to run it in Octave 3.5.0+ and it doesn't work. On one<br />
side the control functions of octave have been updated and the old<br />
ones (that apparently are dumped by Mathworks in the signal toolbox)<br />
were removed, but I am working on it. On the other side, I found some<br />
bugs in your package.<br />
<br />
For example, the function rksqrtv.m is empty! which makes demo_unit<br />
option 19 fail. However, even if the function were there, with the<br />
interface as explained in the help, then ks.m would produce an error<br />
at the end, because the matrix G has no field called ss.<br />
<br />
Another bug I found in m2f line 165. The output of mimofr would be of<br />
size number-of-ouputs x number-of-inputs x number-of-frequencies. As<br />
it is used there, the addition will fail for the option 20 of<br />
demo_unit I corrected by doing<br />
G.H=mimofr(G.ss.A,G.ss.K,G.ss.C,[],ww);<br />
DK = eye(size(G.H,1),size(G.H,2));<br />
G.H=G.H + DK(:,:,ones(1,length(ww)));<br />
<br />
by the way, if you were aiming to make UNIT compatible with Octave<br />
3.5.0+, you would have freqresp.m available in the control package.<br />
<br />
Are you planning to produce an Octave 3.5.0+ compatible version of<br />
your excellent package?<br />
<br />
Thanks again,<br />
<br />
Regards,<br />
</pre><br />
<br />
* 12/9/2012<br />
<pre><br />
Dear Brett Ninness,<br />
<br />
I am writing you once more in relation to the SPM toolbox<br />
(http://sigpromu.org/idtoolbox/).<br />
<br />
GNU Octave is now in its 3.6.x version and the packages are<br />
experiencing fast development. Take for example (and most related to<br />
your package) the control package<br />
(http://octave.sourceforge.net/control/overview.html). You may notice<br />
under the section "Experimental data handling" and "System<br />
identification" some interesting new functionality.<br />
<br />
Do you have plans to release your package under a GPL compatible<br />
license (http://en.wikipedia.org/wiki/List_of_FSF-approved_software_licenses)?<br />
Only under this licesing scheme we can include and extended your<br />
package into GNU Octave packages. It may be advantageous, in terms of<br />
visibility and use, to release a free version that can be shipped with<br />
GNU Octave packages, since users can download it and install it<br />
directly from the prompt. Additionally, the packages that are most<br />
popular are shipped within Linux distributions like Debian and Fedora.<br />
<br />
Please let us know about your decision.<br />
<br />
Thank you very much in advance.<br />
<br />
Kind regards,<br />
</pre><br />
<br />
== Non-negative matrix factorization ==<br />
* 9/3/2012<br />
<pre><br />
Dear Dr. Jingu Kim,<br />
<br />
My name is Juan Pablo Carbajal, I am a developer of Octave-Forge[1]. I<br />
have downloaded your package nmf_bpas from your website and I find it<br />
very useful.<br />
Would you like to contribute it to Octave-Forge? I know licensing<br />
issues are difficult topics and therefore I approach you with utter<br />
respect.<br />
<br />
If you accept this invitation to contribute code to Octave-Forge, I<br />
can offer you the following<br />
- You will be properly credited and your papers will be linked as well.<br />
- Maintenance of your function, test and demos will be taken over by<br />
the Octave and Octave-forge community. Of course you can continue<br />
contributing, and we will very happy to have you among us.<br />
- I will take care of code formatting, demos and test.<br />
- You function will be directly downloaded and installed form an<br />
Octave terminal (assuming it is packed inside linear-algebra package):<br />
>pkg -forge install linear-algebra<br />
<br />
The only thing that you need to do is to release your code under GPLv3<br />
(we like this one :D ) or any license compatible with them, e.g.<br />
FreeBSD. We already have an algorithm for nmf, by Chih-Jen Lin[2] but<br />
we would like to have a good variety of implementations, therefore we<br />
ask for your contribution.<br />
<br />
In case you are interested, I can tell you about successful<br />
experiences of together researches contributing their work. For<br />
example the Matgeom community[3] released under GPLv3 so that<br />
Octave-forge can mirror they package[4]. Biomechanics & Neurosciences<br />
researchers[5] have also changed their license to GPLv3 to allow us to<br />
produce packages out of their excellent algorithms. We are trying to<br />
offer a truly free platform for the exchange of our research. I hope<br />
you join us!<br />
<br />
[1] http://octave.sourceforge.net/<br />
[2] http://www.csie.ntu.edu.tw/~cjlin/nmf/index.html<br />
[3] http://sourceforge.net/apps/mediawiki/matgeom/index.php?title=Main_Page<br />
[4] http://www.octave.org/wiki/index.php?title=Geometry_package<br />
[5] http://sites.google.com/site/systemsneurosciencegroup/people/stewart-heitmann<br />
<br />
Looking forward to your answer,<br />
<br />
Best regards,<br />
</pre><br />
<br />
<pre><br />
Dear Chih-Jen Lin,<br />
<br />
My name is Juan Pablo Carbajal, I am a developer of Octave-Forge[1]. I<br />
have downloaded your function nmf.m from your website and I find it<br />
very useful.<br />
Would you like to contribute it to Octave-Forge? I know licensing<br />
issues are difficult topics and therefore I approach you with utter<br />
respect.<br />
<br />
If you accept this invitation to contribute code to Octave-Forge, I<br />
can offer you the following<br />
- You will be properly credited and your papers will be linked as well.<br />
- Maintenance of your function, test and demos will be taken over by<br />
the Octave and Octave-forge community. Of course you can continue<br />
contributing, and we will very happy to have you among us.<br />
- I will take care of code formatting, demos and test.<br />
- You function will be directly downloaded and installed form an<br />
Octave terminal (assuming it is packed inside linear-algebra package):<br />
>pkg -forge install linear-algebra<br />
<br />
The only thing that you need to do is to release your code under GPLv3<br />
(we like this one :D ) or any license compatible with them, e.g.<br />
FreeBSD.<br />
<br />
In case you are interested, I can tell you about successful<br />
experiences of together researches contributing their work. For<br />
example the Matgeom community[2] released under GPLv3 so that<br />
Octave-forge can mirror they package[3]. Biomechanics & Neurosciences<br />
researchers[4] have also changed their license to GPLv3 to allow us to<br />
produce packages out of their excellent algorithms. We are trying to<br />
offer a truly free platform for the exchange of our research. I hope<br />
you join us!<br />
<br />
Looking forward to your answer,<br />
<br />
Best regards,<br />
</pre><br />
<br />
* 27/3/2012<br />
<pre><br />
Dear Kasper Winther Joergensen,<br />
<br />
My name is Juan Pablo Carbajal, I am a developer of Octave-Forge[1]. I have downloaded the nmf toolbox 1-4-0 from your website and I find it very useful.<br />
Would you like to contribute it to Octave-Forge? I know licensing issues are difficult topics and therefore I approach you with utter respect.<br />
<br />
If you accept this invitation to contribute code to Octave-Forge, I can offer you the following<br />
- You will be properly credited and your papers will be linked as well.<br />
- Maintenance of your toolbox, test and demos will be taken over by the Octave and Octave-forge community. Of course you can continue contributing, and we will very happy to have you among us.<br />
- I will take care of code formatting, demos and test.<br />
- You function will be directly downloaded and installed form an Octave terminal (assuming it is packed inside linear-algebra package):<br />
>pkg -forge install linear-algebra<br />
<br />
The only thing that you need to do is to release your code under GPLv3 (we like this one :D ) or any license compatible with them, e.g.<br />
FreeBSD. Chih-Jen Lin (author of the file nmf_cjlin in your toolbox) and Jingu Kim have already send me their permission to post their code in Octave-Forge. I hope you join us!<br />
<br />
In case you are interested, I can tell you about successful experiences of together researches contributing their work. For example the Matgeom community[2] released under GPLv3 so that Octave-forge can mirror they package[3]. Biomechanics & Neurosciences researchers[4] have also changed their license to GPLv3 to allow us to produce packages out of their excellent algorithms. We are trying to offer a truly free platform for the exchange of our research.<br />
<br />
Looking forward to your answer,<br />
<br />
Best regards,<br />
</pre><br />
<br />
== Motion tracking ==<br />
*29/8/2012<br />
<pre><br />
Dear Marie Dacke and Emily Baird,<br />
<br />
Thank you once more for your interesting research and motivating<br />
presentation about dung beetles.<br />
As we discussed post-processing the data recorded with cameras and<br />
tracking the position of the bugs is time consuming. Automatizing and<br />
standardizing this task is very important for reproducible research<br />
and the speed up development in ethology.<br />
<br />
You told me that you post-process your movies using Matlab. I would<br />
like to port your scripts to GNU Octave to make them completely free<br />
(that is the code can be run in free software). If you could provide<br />
some of your code so I can test it in Octave, it would be very<br />
helpful. We will see what developments are needed in the current<br />
version of Octave and the community will work on that.<br />
<br />
To be useful in Octave we would need that the code you send is<br />
released under a free license (we refer GPLv3, but any in the column<br />
GPL compatible would do fine<br />
http://en.wikipedia.org/wiki/List_of_FSF_approved_software_licenses).<br />
Your authorship will never be removed form the files, only editors<br />
names will be added if required.<br />
<br />
Looking forward to work on your code.<br />
<br />
Sincerely<br />
</pre><br />
<br />
== Biomechanical muscle models ==<br />
* 21/12/2011<br />
<pre><br />
Dear Stewart,<br />
<br />
Thank you again for establishing the contact.<br />
<br />
From the latest video I understand that the torques generated in<br />
joints closer to the "shoulder" due to the segments farther away,<br />
change the stability of some of the equilibrium points. If that is the<br />
case this is something that one cannot predict studying isolated<br />
links. However, I guess that studying isolated links with an extra<br />
constant term would show these bifurcations as well (that is, the<br />
torque due to its own weight + some external constant torque).<br />
<br />
I have an interest in your work since my work is related. In my thesis<br />
I study the effect that body properties (around here people speaks of<br />
"morphology") may have on the difficulty of performing certain tasks.<br />
Stated as a question, Can we quantify the relation between function<br />
and morphology? I studied several cases and one of them is kinematic<br />
chains, though I did not achieve a strong answer to the question I<br />
came up with a method to calculate solution to control problems base<br />
don the natural dynamics of the kinematic chain. Using models as the<br />
one you report in your paper is of high interest to me (but for an<br />
after thesis life, i.e. ~July 2012). Maybe we can have a sort of<br />
collaboration there. I am collaborating with Andrea d'Avella (context<br />
of AMARSi project[0]) and with a student of Francesco Nori, I guess it<br />
will be great to unite forces ;D.<br />
<br />
Additionally, I plan to release my algorithms in a package (probably<br />
named biomechanics) for Octave[1,2] (I hope you know it, is very<br />
similar to Matlab) and I was wondering if you would like to release<br />
yours as well, in the same package. The only formal requirement is<br />
that your code has a GNU compatible license (FreeBSD, GPL, LGPL, etc).<br />
I am already a developer there, so I could take care of the<br />
"administrative" burden. Here [3] you can see my TODO list for Octave,<br />
to see what is to come (for example the robotics package!)<br />
<br />
Looking forward to your answer!<br />
<br />
[0] http://www.amarsi-project.eu/<br />
[1] http://www.gnu.org/software/octave/<br />
[2] http://octave.sourceforge.net/<br />
[3] http://octave.org/wiki/index.php?title=User:KaKiLa<br />
</pre><br />
<br />
== matGeom ==<br />
* 26/9/2011<br />
<pre><br />
Dear David,<br />
<br />
I would like to discuss the possibility of making matGeom compatible<br />
with Octave and upload it to the Octave-Packages server.<br />
http://octave.sourceforge.net/index.html<br />
<br />
Packages there are maintained individually and people can get them<br />
directly from inside octave. That make is really easy to install the<br />
package.<br />
<br />
Regarding the license. You can release your code with multiple<br />
licenses, that is not a problem at all. If you add the GPL version to<br />
a zip and send it, then that code will be GPL. Nevertheless BSD work<br />
fine as well. Just let me know when you add the license (make sure you<br />
add 3-clause or 2-clause BSD<br />
(http://en.wikipedia.org/wiki/BSD_licenses), otherwise we cannot add<br />
it to Octave).<br />
<br />
As soon as you let me know, I will start the upload.<br />
<br />
Thanks<br />
<br />
Regards,<br />
<br />
</pre></div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=Reviewing_Octave_Forge_packages&diff=11826Reviewing Octave Forge packages2019-03-16T22:51:47Z<p>KaKiLa: /* Checklist */</p>
<hr />
<div>== Help reviewing Octave-Forge packages ==<br />
<br />
We need help. Here is how:<br />
<br />
# Pick a package at https://sourceforge.net/p/octave/package-releases/<br />
# Copy the check-list below and fill it out, marking each box:<br />
#* <code>[x]</code> for passed<br />
#* <code>[n/a]</code> for non-applicable<br />
#* <code>[ ]</code> for skipped (because you cannot do it, missing software, etc)<br />
#* <code>[F]</code> for fails.<br />
# Paste your filled in check-list as a comment on the issue above<br />
<br />
=== What happens next ===<br />
<br />
An admin will try to look over your review and hopefully release the package. More than one person can review a package, in fact that would be great.<br />
<br />
<br />
== Checklist ==<br />
<br />
<pre><br />
== Repository ==<br />
[ ] maintainer has specified a corresponding revision commit/changeset<br />
[ ] checkout code from Sourceforge, commit/changeset is present<br />
== Compile and Install ==<br />
[ ] release candidate installs on latest stable Octave release<br />
[ ] no compiler errors or warnings<br />
[ ] ran tests using <code>runtests /path/to/pkg</code><br />
[ ] ran all tests, including those in src (how??)<br />
[ ] ran doctest on all functions (optional)<br />
[ ] ran generate_package_html (if Makefile present try <code> make html </code>)<br />
[ ] no makeinfo errors and warnings during HTML build<br />
[ ] unpacked and spot-checked the generated HTML documentation<br />
== Interaction with pkg ==<br />
[ ] <code>pkg load foo</code> runs with errors or warnings<br />
[ ] <code>pkg unload foo</code> runs with errors or warnings<br />
[ ] <code>pkg uninstall foo</code> runs with errors or warnings<br />
<br />
[ ] Above steps were run on Octave and OS versions:<br />
* ________<br />
* ________<br />
<br />
== Package files ==<br />
[ ] tested with minimum Octave version list in DESCRIPTION<br />
[ ] reasonable dependencies listed in DESCRIPTION<br />
[ ] NEWS file makes sense, version and date match<br />
[ ] All functions are listed in INDEX<br />
</pre><br />
<br />
== Other info ==<br />
<br />
TODO: how does one check all functions are listed in INDEX?<br />
<br />
TODO: document how to run "all tests including those in src" Someday this should be just "pkg test foo".<br />
<br />
TODO: would be good to provide more specific instructions for when the package as a Maintainer Makefile? But we don't usually put the Maintainer Makefile in the .tar.gz package to do? (At least Doctest and Symbolic don't).<br />
<br />
=== Meta helping ===<br />
<br />
* Feel free to edit this wiki with explanations of the check list tasks<br />
* Please do add (reasonable) tasks to the check list<br />
<br />
=== Common problems ===<br />
<br />
Here are some common problems that reviewers can check for<br />
<br />
* INDEX is missing some new functions added<br />
* NEWS has not been updated or is missing something big<br />
* Version numbers or dates do not match between DESCRIPTION and NEWS<br />
* Common makeinfo errors like "@bye seen before @end deftypefn"<br />
* DESCRIPTION says pkg works with old Octave 4.x but it fails for me<br />
* Obviously, compiler errors, warnings, test failures<br />
<br />
[[Category:Octave Forge]]<br />
[[Category:Packages]]</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=Packages&diff=11144Packages2018-08-09T07:27:26Z<p>KaKiLa: /* fda */</p>
<hr />
<div>This is a list of Packages available for GNU Octave.<br />
<br />
= Octave Forge =<br />
:''Main: [[Octave Forge]]''<br />
<br />
The official community packages: http://octave.sourceforge.net/ <br />
<br />
You may also take a look at the Wiki page for each package: [[:Category:Octave-Forge]]<br />
<br />
= Other Packages =<br />
<br />
Feel free to add unlisted packages.<br />
<br />
== GeoPDEs ==<br />
<br />
[http://rafavzqz.github.io/geopdes/ GeoPDEs] is an open source and free package for the research and teaching of Isogeometric Analysis, written in Octave and fully compatible with Matlab.<br />
<br />
The GeoPDEs package provides a common and flexible framework for implementing and testing new isogeometric methods for the solution of partial differential equations. <br />
<br />
== FEATool - Finite Element Analysis Toolbox ==<br />
<br />
[https://www.featool.com/multiphysics/ FEATool Multiphysics] is a commercial and proprietary Octave and Matlab FEM toolbox for modeling and simulation of physics and engineering applications with the finite element method. FEATool features an easy to use GUI and fully integrated CAD, geometry tools, automatic grid generation and solvers.<br />
<br />
* https://www.featool.com/<br />
<br />
== go-redis ==<br />
<br />
GNU Octave Redis client<br />
<br />
* https://github.com/markuman/go-redis<br />
<br />
== LIBSVM, LIBLINEAR ==<br />
<br />
Libraries for support vector machine / machine learning classification, regression, and distribution estimation problems. C++, with an interface to Octave.<br />
<br />
* http://www.csie.ntu.edu.tw/~cjlin/libsvm<br />
* http://www.csie.ntu.edu.tw/~cjlin/liblinear<br />
<br />
== ltfat ==<br />
<br />
The Large Time-Frequency Analysis Toolbox®. Please note, this package is available on Octave Forge too, but it has its own website.<br />
<br />
* http://ltfat.sourceforge.net/<br />
<br />
== mex-sqlite3 ==<br />
<br />
An extension for MATLAB® or GNU/octave to access sqlite3 databases <br />
<br />
* https://github.com/rmartinjak/mex-sqlite3<br />
<br />
== octave-network-toolbox ==<br />
<br />
A set of graph/networks analysis functions in Octave<br />
<br />
* http://aeolianine.github.io/octave-networks-toolbox/<br />
<br />
== octsympy ==<br />
<br />
This package is now part of Octave Forge as the new [http://octave.sourceforge.net/symbolic symbolic package]. Main development site is still at https://github.com/cbm755/octsympy.<br />
<br />
== shogun ==<br />
<br />
The Shogun Machine Learning Toolbox® <br />
<br />
* https://github.com/shogun-toolbox/shogun<br />
<br />
== vlfeat == <br />
<br />
The VLFeat open source library implements popular computer vision algorithms including HOG, SIFT, MSER, k-means, hierarchical k-means, agglomerative information bottleneck, SLIC superpixels, and quick shift.<br />
<br />
* http://www.vlfeat.org/index.html<br />
<br />
== epanet-octave == <br />
<br />
The epanet-octave open source library is a wrapper, including some scripts, to call Epanet Toolkit. Functions are adapted to improve its usability in GNU Octave (e.g. allowing vectors as EpaNet Toolkit function inputs). Still under development. <br />
<br />
* https://forja.cica.es/projects/epanet-octave/<br />
<br />
== mexopencv ==<br />
<br />
Collection and a development kit of matlab mex functions for OpenCV library<br />
<br />
* http://kyamagu.github.io/mexopencv<br />
* https://github.com/kyamagu/mexopencv<br />
<br />
== Octave Web Interface and Server ==<br />
<br />
A simple web interface and server with Plotly js/html plotting backend.<br />
<br />
* https://github.com/precisesimulation/octave-matlab-web-interface<br />
<br />
== gpml==<br />
Gaussian processes for machine learning<br />
<br />
* [http://www.gaussianprocess.org/gpml/code/matlab/doc/ Webpage of the author]<br />
* [https://bitbucket.org/KaKiLa/gpml/src Repository]<br />
* Downloads or pkg installation: https://bitbucket.org/KaKiLa/gpml/downloads/<br />
<br />
== ekfukf ==<br />
Kalman filtering and smoothing<br />
<br />
* [https://github.com/kakila/ekfukf Repository]<br />
<br />
== fda ==<br />
Functional data analysis<br />
<br />
* [http://www.psych.mcgill.ca/misc/fda/ Webpage of the author]<br />
* [https://bitbucket.org/KaKiLa/fda/src Repository]<br />
<br />
== See also ==<br />
* [[Creating packages]]<br />
<br />
[[Category:Packages| ]]</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=Packages&diff=11143Packages2018-08-09T07:27:03Z<p>KaKiLa: /* ekfukf */</p>
<hr />
<div>This is a list of Packages available for GNU Octave.<br />
<br />
= Octave Forge =<br />
:''Main: [[Octave Forge]]''<br />
<br />
The official community packages: http://octave.sourceforge.net/ <br />
<br />
You may also take a look at the Wiki page for each package: [[:Category:Octave-Forge]]<br />
<br />
= Other Packages =<br />
<br />
Feel free to add unlisted packages.<br />
<br />
== GeoPDEs ==<br />
<br />
[http://rafavzqz.github.io/geopdes/ GeoPDEs] is an open source and free package for the research and teaching of Isogeometric Analysis, written in Octave and fully compatible with Matlab.<br />
<br />
The GeoPDEs package provides a common and flexible framework for implementing and testing new isogeometric methods for the solution of partial differential equations. <br />
<br />
== FEATool - Finite Element Analysis Toolbox ==<br />
<br />
[https://www.featool.com/multiphysics/ FEATool Multiphysics] is a commercial and proprietary Octave and Matlab FEM toolbox for modeling and simulation of physics and engineering applications with the finite element method. FEATool features an easy to use GUI and fully integrated CAD, geometry tools, automatic grid generation and solvers.<br />
<br />
* https://www.featool.com/<br />
<br />
== go-redis ==<br />
<br />
GNU Octave Redis client<br />
<br />
* https://github.com/markuman/go-redis<br />
<br />
== LIBSVM, LIBLINEAR ==<br />
<br />
Libraries for support vector machine / machine learning classification, regression, and distribution estimation problems. C++, with an interface to Octave.<br />
<br />
* http://www.csie.ntu.edu.tw/~cjlin/libsvm<br />
* http://www.csie.ntu.edu.tw/~cjlin/liblinear<br />
<br />
== ltfat ==<br />
<br />
The Large Time-Frequency Analysis Toolbox®. Please note, this package is available on Octave Forge too, but it has its own website.<br />
<br />
* http://ltfat.sourceforge.net/<br />
<br />
== mex-sqlite3 ==<br />
<br />
An extension for MATLAB® or GNU/octave to access sqlite3 databases <br />
<br />
* https://github.com/rmartinjak/mex-sqlite3<br />
<br />
== octave-network-toolbox ==<br />
<br />
A set of graph/networks analysis functions in Octave<br />
<br />
* http://aeolianine.github.io/octave-networks-toolbox/<br />
<br />
== octsympy ==<br />
<br />
This package is now part of Octave Forge as the new [http://octave.sourceforge.net/symbolic symbolic package]. Main development site is still at https://github.com/cbm755/octsympy.<br />
<br />
== shogun ==<br />
<br />
The Shogun Machine Learning Toolbox® <br />
<br />
* https://github.com/shogun-toolbox/shogun<br />
<br />
== vlfeat == <br />
<br />
The VLFeat open source library implements popular computer vision algorithms including HOG, SIFT, MSER, k-means, hierarchical k-means, agglomerative information bottleneck, SLIC superpixels, and quick shift.<br />
<br />
* http://www.vlfeat.org/index.html<br />
<br />
== epanet-octave == <br />
<br />
The epanet-octave open source library is a wrapper, including some scripts, to call Epanet Toolkit. Functions are adapted to improve its usability in GNU Octave (e.g. allowing vectors as EpaNet Toolkit function inputs). Still under development. <br />
<br />
* https://forja.cica.es/projects/epanet-octave/<br />
<br />
== mexopencv ==<br />
<br />
Collection and a development kit of matlab mex functions for OpenCV library<br />
<br />
* http://kyamagu.github.io/mexopencv<br />
* https://github.com/kyamagu/mexopencv<br />
<br />
== Octave Web Interface and Server ==<br />
<br />
A simple web interface and server with Plotly js/html plotting backend.<br />
<br />
* https://github.com/precisesimulation/octave-matlab-web-interface<br />
<br />
== gpml==<br />
Gaussian processes for machine learning<br />
<br />
* [http://www.gaussianprocess.org/gpml/code/matlab/doc/ Webpage of the author]<br />
* [https://bitbucket.org/KaKiLa/gpml/src Repository]<br />
* Downloads or pkg installation: https://bitbucket.org/KaKiLa/gpml/downloads/<br />
<br />
== ekfukf ==<br />
Kalman filtering and smoothing<br />
<br />
* [https://github.com/kakila/ekfukf Repository]<br />
<br />
== fda ==<br />
Functional data analysis<br />
<br />
* [Webpage of the author](http://www.psych.mcgill.ca/misc/fda/)<br />
* [Repository] https://bitbucket.org/KaKiLa/fda/src<br />
<br />
== See also ==<br />
* [[Creating packages]]<br />
<br />
[[Category:Packages| ]]</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=Packages&diff=11142Packages2018-08-09T07:26:43Z<p>KaKiLa: /* gpml */</p>
<hr />
<div>This is a list of Packages available for GNU Octave.<br />
<br />
= Octave Forge =<br />
:''Main: [[Octave Forge]]''<br />
<br />
The official community packages: http://octave.sourceforge.net/ <br />
<br />
You may also take a look at the Wiki page for each package: [[:Category:Octave-Forge]]<br />
<br />
= Other Packages =<br />
<br />
Feel free to add unlisted packages.<br />
<br />
== GeoPDEs ==<br />
<br />
[http://rafavzqz.github.io/geopdes/ GeoPDEs] is an open source and free package for the research and teaching of Isogeometric Analysis, written in Octave and fully compatible with Matlab.<br />
<br />
The GeoPDEs package provides a common and flexible framework for implementing and testing new isogeometric methods for the solution of partial differential equations. <br />
<br />
== FEATool - Finite Element Analysis Toolbox ==<br />
<br />
[https://www.featool.com/multiphysics/ FEATool Multiphysics] is a commercial and proprietary Octave and Matlab FEM toolbox for modeling and simulation of physics and engineering applications with the finite element method. FEATool features an easy to use GUI and fully integrated CAD, geometry tools, automatic grid generation and solvers.<br />
<br />
* https://www.featool.com/<br />
<br />
== go-redis ==<br />
<br />
GNU Octave Redis client<br />
<br />
* https://github.com/markuman/go-redis<br />
<br />
== LIBSVM, LIBLINEAR ==<br />
<br />
Libraries for support vector machine / machine learning classification, regression, and distribution estimation problems. C++, with an interface to Octave.<br />
<br />
* http://www.csie.ntu.edu.tw/~cjlin/libsvm<br />
* http://www.csie.ntu.edu.tw/~cjlin/liblinear<br />
<br />
== ltfat ==<br />
<br />
The Large Time-Frequency Analysis Toolbox®. Please note, this package is available on Octave Forge too, but it has its own website.<br />
<br />
* http://ltfat.sourceforge.net/<br />
<br />
== mex-sqlite3 ==<br />
<br />
An extension for MATLAB® or GNU/octave to access sqlite3 databases <br />
<br />
* https://github.com/rmartinjak/mex-sqlite3<br />
<br />
== octave-network-toolbox ==<br />
<br />
A set of graph/networks analysis functions in Octave<br />
<br />
* http://aeolianine.github.io/octave-networks-toolbox/<br />
<br />
== octsympy ==<br />
<br />
This package is now part of Octave Forge as the new [http://octave.sourceforge.net/symbolic symbolic package]. Main development site is still at https://github.com/cbm755/octsympy.<br />
<br />
== shogun ==<br />
<br />
The Shogun Machine Learning Toolbox® <br />
<br />
* https://github.com/shogun-toolbox/shogun<br />
<br />
== vlfeat == <br />
<br />
The VLFeat open source library implements popular computer vision algorithms including HOG, SIFT, MSER, k-means, hierarchical k-means, agglomerative information bottleneck, SLIC superpixels, and quick shift.<br />
<br />
* http://www.vlfeat.org/index.html<br />
<br />
== epanet-octave == <br />
<br />
The epanet-octave open source library is a wrapper, including some scripts, to call Epanet Toolkit. Functions are adapted to improve its usability in GNU Octave (e.g. allowing vectors as EpaNet Toolkit function inputs). Still under development. <br />
<br />
* https://forja.cica.es/projects/epanet-octave/<br />
<br />
== mexopencv ==<br />
<br />
Collection and a development kit of matlab mex functions for OpenCV library<br />
<br />
* http://kyamagu.github.io/mexopencv<br />
* https://github.com/kyamagu/mexopencv<br />
<br />
== Octave Web Interface and Server ==<br />
<br />
A simple web interface and server with Plotly js/html plotting backend.<br />
<br />
* https://github.com/precisesimulation/octave-matlab-web-interface<br />
<br />
== gpml==<br />
Gaussian processes for machine learning<br />
<br />
* [http://www.gaussianprocess.org/gpml/code/matlab/doc/ Webpage of the author]<br />
* [https://bitbucket.org/KaKiLa/gpml/src Repository]<br />
* Downloads or pkg installation: https://bitbucket.org/KaKiLa/gpml/downloads/<br />
<br />
== ekfukf ==<br />
Kalman filtering and smoothing<br />
<br />
* [Repository] https://github.com/kakila/ekfukf<br />
<br />
== fda ==<br />
Functional data analysis<br />
<br />
* [Webpage of the author](http://www.psych.mcgill.ca/misc/fda/)<br />
* [Repository] https://bitbucket.org/KaKiLa/fda/src<br />
<br />
== See also ==<br />
* [[Creating packages]]<br />
<br />
[[Category:Packages| ]]</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=Packages&diff=11141Packages2018-08-09T07:23:26Z<p>KaKiLa: fda, gpml, ekfukf</p>
<hr />
<div>This is a list of Packages available for GNU Octave.<br />
<br />
= Octave Forge =<br />
:''Main: [[Octave Forge]]''<br />
<br />
The official community packages: http://octave.sourceforge.net/ <br />
<br />
You may also take a look at the Wiki page for each package: [[:Category:Octave-Forge]]<br />
<br />
= Other Packages =<br />
<br />
Feel free to add unlisted packages.<br />
<br />
== GeoPDEs ==<br />
<br />
[http://rafavzqz.github.io/geopdes/ GeoPDEs] is an open source and free package for the research and teaching of Isogeometric Analysis, written in Octave and fully compatible with Matlab.<br />
<br />
The GeoPDEs package provides a common and flexible framework for implementing and testing new isogeometric methods for the solution of partial differential equations. <br />
<br />
== FEATool - Finite Element Analysis Toolbox ==<br />
<br />
[https://www.featool.com/multiphysics/ FEATool Multiphysics] is a commercial and proprietary Octave and Matlab FEM toolbox for modeling and simulation of physics and engineering applications with the finite element method. FEATool features an easy to use GUI and fully integrated CAD, geometry tools, automatic grid generation and solvers.<br />
<br />
* https://www.featool.com/<br />
<br />
== go-redis ==<br />
<br />
GNU Octave Redis client<br />
<br />
* https://github.com/markuman/go-redis<br />
<br />
== LIBSVM, LIBLINEAR ==<br />
<br />
Libraries for support vector machine / machine learning classification, regression, and distribution estimation problems. C++, with an interface to Octave.<br />
<br />
* http://www.csie.ntu.edu.tw/~cjlin/libsvm<br />
* http://www.csie.ntu.edu.tw/~cjlin/liblinear<br />
<br />
== ltfat ==<br />
<br />
The Large Time-Frequency Analysis Toolbox®. Please note, this package is available on Octave Forge too, but it has its own website.<br />
<br />
* http://ltfat.sourceforge.net/<br />
<br />
== mex-sqlite3 ==<br />
<br />
An extension for MATLAB® or GNU/octave to access sqlite3 databases <br />
<br />
* https://github.com/rmartinjak/mex-sqlite3<br />
<br />
== octave-network-toolbox ==<br />
<br />
A set of graph/networks analysis functions in Octave<br />
<br />
* http://aeolianine.github.io/octave-networks-toolbox/<br />
<br />
== octsympy ==<br />
<br />
This package is now part of Octave Forge as the new [http://octave.sourceforge.net/symbolic symbolic package]. Main development site is still at https://github.com/cbm755/octsympy.<br />
<br />
== shogun ==<br />
<br />
The Shogun Machine Learning Toolbox® <br />
<br />
* https://github.com/shogun-toolbox/shogun<br />
<br />
== vlfeat == <br />
<br />
The VLFeat open source library implements popular computer vision algorithms including HOG, SIFT, MSER, k-means, hierarchical k-means, agglomerative information bottleneck, SLIC superpixels, and quick shift.<br />
<br />
* http://www.vlfeat.org/index.html<br />
<br />
== epanet-octave == <br />
<br />
The epanet-octave open source library is a wrapper, including some scripts, to call Epanet Toolkit. Functions are adapted to improve its usability in GNU Octave (e.g. allowing vectors as EpaNet Toolkit function inputs). Still under development. <br />
<br />
* https://forja.cica.es/projects/epanet-octave/<br />
<br />
== mexopencv ==<br />
<br />
Collection and a development kit of matlab mex functions for OpenCV library<br />
<br />
* http://kyamagu.github.io/mexopencv<br />
* https://github.com/kyamagu/mexopencv<br />
<br />
== Octave Web Interface and Server ==<br />
<br />
A simple web interface and server with Plotly js/html plotting backend.<br />
<br />
* https://github.com/precisesimulation/octave-matlab-web-interface<br />
<br />
== gpml==<br />
Gaussian processes for machine learning<br />
<br />
* [Webpage of the author]()<br />
* [Repository](https://bitbucket.org/KaKiLa/gpml/src)<br />
* Downloads or pkg installation https://bitbucket.org/KaKiLa/gpml/downloads/<br />
<br />
== ekfukf ==<br />
Kalman filtering and smoothing<br />
<br />
* [Repository] https://github.com/kakila/ekfukf<br />
<br />
== fda ==<br />
Functional data analysis<br />
<br />
* [Webpage of the author](http://www.psych.mcgill.ca/misc/fda/)<br />
* [Repository] https://bitbucket.org/KaKiLa/fda/src<br />
<br />
== See also ==<br />
* [[Creating packages]]<br />
<br />
[[Category:Packages| ]]</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=Talk:Octave_for_Debian_systems&diff=11110Talk:Octave for Debian systems2018-05-28T08:07:56Z<p>KaKiLa: /* Qt5 in Ubunutu 18.04 LTS */</p>
<hr />
<div>== Qt5 in Ubunutu 18.04 LTS ==<br />
List of Qt dependecies in Ubuntu 18.04 LTS<br />
Adapt from Debian https://salsa.debian.org/pkg-octave-team/octave/blob/master/debian/control<br />
<br />
I installed these:<br />
<br />
* libqscintilla2-qt5-dev<br />
* libqt5scintilla2-dev<br />
* qtbase5-dev<br />
* qttools5-dev<br />
* libqt5gui5<br />
* libqt5core5a<br />
* libqt5webkit5<br />
* libqt5network5<br />
* libqt5opengl5-dev<br />
* libqt5help5<br />
<br />
[[User:KaKiLa|KaKiLa]] ([[User talk:KaKiLa|talk]]) 13:26, 9 May 2018 (PDT)<br />
<br />
The following was enough in another installation<br />
<br />
sudo apt install libsundials-dev qtbase5-dev qttools5-dev qttools5-dev-tools libqscintilla2-qt5-dev libqt5opengl5-dev<br />
<br />
[[User:KaKiLa|KaKiLa]] ([[User talk:KaKiLa|talk]]) 01:07, 28 May 2018 (PDT)</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=Talk:Octave_for_Debian_systems&diff=11103Talk:Octave for Debian systems2018-05-09T20:26:58Z<p>KaKiLa: /* Qt5 in Ubunutu 18.04 LTS */</p>
<hr />
<div>== Qt5 in Ubunutu 18.04 LTS ==<br />
List of Qt dependecies in Ubuntu 18.04 LTS<br />
Adapt from Debian https://salsa.debian.org/pkg-octave-team/octave/blob/master/debian/control<br />
<br />
I installed these:<br />
<br />
* libqscintilla2-qt5-dev<br />
* libqt5scintilla2-dev<br />
* qtbase5-dev<br />
* qttools5-dev<br />
* libqt5gui5<br />
* libqt5core5a<br />
* libqt5webkit5<br />
* libqt5network5<br />
* libqt5opengl5-dev<br />
* libqt5help5<br />
<br />
[[User:KaKiLa|KaKiLa]] ([[User talk:KaKiLa|talk]]) 13:26, 9 May 2018 (PDT)</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=Talk:Octave_for_Debian_systems&diff=11102Talk:Octave for Debian systems2018-05-09T20:26:46Z<p>KaKiLa: /* Qt5 in Ubunutu 18.04 LTS */</p>
<hr />
<div>== Qt5 in Ubunutu 18.04 LTS ==<br />
List of Qt dependecies in Ubuntu 18.04 LTS<br />
Adapt from Debian https://salsa.debian.org/pkg-octave-team/octave/blob/master/debian/control<br />
<br />
I installed these:<br />
<br />
* libqscintilla2-qt5-dev<br />
* libqt5scintilla2-dev<br />
* qtbase5-dev<br />
* qttools5-dev<br />
* libqt5gui5<br />
* libqt5core5a<br />
* libqt5webkit5<br />
* libqt5network5<br />
* libqt5opengl5-dev<br />
* libqt5help5</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=Talk:Octave_for_Debian_systems&diff=11101Talk:Octave for Debian systems2018-05-09T20:04:17Z<p>KaKiLa: /* Qt5 in Ubunutu 18.04 LTS */</p>
<hr />
<div>== Qt5 in Ubunutu 18.04 LTS ==<br />
List of Qt dependecies in Ubuntu 18.04 LTS<br />
<br />
* libqt5scintilla2-dev<br />
* libqt5gui5<br />
* libqt5core5a<br />
* libqt5webkit5<br />
* libqt5network5<br />
* libqt5opengl5-dev<br />
* libqt5help5</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=Talk:Octave_for_Debian_systems&diff=11100Talk:Octave for Debian systems2018-05-09T19:54:28Z<p>KaKiLa: /* Qt5 in Ubunutu 18.04 LTS */</p>
<hr />
<div>== Qt5 in Ubunutu 18.04 LTS ==<br />
List of Qt dependecies in Ubuntu 18.04 LTS<br />
<br />
* libqt5scintilla2-dev<br />
* libqt5gui5<br />
* libqt5core5a<br />
* libqt5webkit5<br />
* libqt5network5<br />
* libqt5opengl5-dev</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=Talk:Octave_for_Debian_systems&diff=11099Talk:Octave for Debian systems2018-05-09T19:45:45Z<p>KaKiLa: Created page with "== Qt5 in Ubunutu 18.04 LTS == List of Qt dependecies in Ubuntu 18.04 LTS libqt5scintilla2-dev"</p>
<hr />
<div>== Qt5 in Ubunutu 18.04 LTS ==<br />
List of Qt dependecies in Ubuntu 18.04 LTS<br />
<br />
libqt5scintilla2-dev</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=Cookbook&diff=11080Cookbook2018-04-27T09:24:27Z<p>KaKiLa: /* List all function in Octave */</p>
<hr />
<div>An Octave cookbook. Each entry should go in a separate section and have the following subsection: problem, solution, discussion and maybe a see also.<br />
<br />
== Programs, Libraries, and Packages ==<br />
<br />
Recipes for developers of Octave programs and libraries. The type of stuff<br />
an Octave programmer should be aware when writing code for others.<br />
<br />
=== Find Octave configuration ===<br />
<br />
Octave can be built with many configurations so programs may end up running<br />
in a machine without features they need. Developers should never expect an<br />
Octave installation to have all features. And programs should identify if<br />
the required features are available.<br />
<br />
This is a list of possible tests to check for features:<br />
<br />
<syntaxhighlight lang="Octave"><br />
## support for 64 bit indexing<br />
sizemax () > intmax ("int32")<br />
<br />
## built with support for java<br />
usejava ("jvm")<br />
<br />
## Image IO with support for tif files<br />
any (cellfun (@(x) ismember ("tif", x), {imformats.ext}))<br />
## Image IO with support for png files<br />
any (cellfun (@(x) ismember ("png", x), {imformats.ext}))<br />
</syntaxhighlight><br />
<br />
=== Find if a package is installed ===<br />
<br />
==== Problem ====<br />
<br />
You have a program that uses different functions or behaves different<br />
depending on the availability of specific packages.<br />
<br />
==== Solution ====<br />
<br />
Use {{codeline|pkg ("list", pkg-name)}} like so:<br />
<br />
<syntaxhighlight lang="Octave"><br />
if (! isempty (pkg ("list", "foo")))<br />
## use functions from package foo, the preferred way<br />
elseif (! isempty (pkg ("list", "bar")))<br />
## use functions from package bar, not so optimal<br />
else<br />
## default case<br />
endif<br />
</syntaxhighlight><br />
<br />
==== Discussion ====<br />
<br />
It's not recommended to use this if the only purpose is to then fail<br />
in the absence of the package. In such case, simply try to load the package<br />
and Octave will already give a error message that is informative enough.<br />
<br />
There is only purpose to check this, if there is something different to<br />
do if a package is missing. The same is true for catching an error from<br />
{{codeline|pkg load}}. If you only catch an error to then throw it again<br />
then you might as well not catch it in the first place.<br />
<br />
<syntaxhighlight lang="Octave"><br />
## This contraption doesn't add anything. If 'pkg load' fails, it<br />
## will already give an error message to the user.<br />
try<br />
pkg load foo;<br />
catch<br />
error ("failed to load foo: %s", lasterr ());<br />
end_try_catch<br />
<br />
## Again, doesn't add anything. The failure of 'pkg load' is enough<br />
if (isempty (pkg ("list", "foo")))<br />
error ("program: package foo is not installed");<br />
endif<br />
</syntaxhighlight><br />
<br />
Beware that an installed package is not always a guarantee that a function<br />
will be available. Some packages may disable functions at build time, or<br />
specific functions may have specific runtime requirements.<br />
<br />
=== List all function in Octave ===<br />
Use the following script (filename <code>list_func.m</code>)<br />
<syntaxhighlight lang="Octave"><br />
## List of all builtin (C++) functions and m-file functions<br />
funcs = vertcat (__builtins__ (), __list_functions__ ());<br />
<br />
## Write list to file<br />
fid = fopen ("all_funcs.tmp", "w");<br />
if (fid == -1)<br />
error ("Unable to open temporary file all_funcs.tmp. Aborting...\n");<br />
endif<br />
fprintf (fid, "%s\n", funcs{:});<br />
fclose (fid);<br />
</syntaxhighlight><br />
<br />
And execute with<br />
<br />
run-octave -f list_func.m<br />
<br />
== Structures ==<br />
<br />
=== Retrieve a field value from all entries in a struct array ===<br />
<br />
==== Problem ====<br />
You have a struct array with multiple fields, and you want to access the value from a specific field from all elements. For example, you want to return the age from all patients in the following case:<br />
<br />
<syntaxhighlight lang="Octave"><br />
samples = struct ("patient", {"Bob", "Kevin", "Bob" , "Andrew"},<br />
"age", { 45 , 52 , 45 , 23 },<br />
"protein", {"H2B", "CDK2" , "CDK2", "Tip60" },<br />
"tube" , { 3 , 5 , 2 , 18 }<br />
);<br />
</syntaxhighlight><br />
<br />
==== Solution ====<br />
<br />
Indexing the struct returns a comma separated list so use them to create a matrix.<br />
<br />
<syntaxhighlight lang="Octave"><br />
[samples(:).age]<br />
</syntaxhighlight><br />
<br />
This however does not keep the original structure of the data, instead returning all values in a single column. To fix this, use {{Codeline|reshape()}}.<br />
<br />
<syntaxhighlight lang="Octave"><br />
reshape ([samples(:).age], size (samples))<br />
</syntaxhighlight><br />
<br />
==== Discussion ====<br />
<br />
Returning all values in a comma separated lists allows you to make anything out of them.<br />
If numbers are expected, create a matrix by enclosing them in square brackets.<br />
But if strings are to be expected, a cell array can also be easily generated with curly brackets<br />
<br />
<syntaxhighlight lang="Octave"><br />
{samples(:).patient}<br />
</syntaxhighlight><br />
<br />
You are also not limited to return all elements, you may use logical indexing from other fields to get values from the others:<br />
<br />
<syntaxhighlight lang="Octave"><br />
[samples([samples(:).age] > 34).tube] ## return tube numbers from all samples from patients older than 34<br />
[samples(strcmp({samples(:).protein}, "CDK2")).tube] ## return all tube numbers for protein CDK2<br />
</syntaxhighlight><br />
<br />
== Array manipulation ==<br />
<br />
=== Select a slice from an n-D array ===<br />
<br />
==== Problem ====<br />
<br />
For an array {{Codeline|A}} with arbitrary number of dimensions, select, for example, the first column.<br />
This would be {{Codeline|A(:, 1)}} if {{Codeline|A}} was 2-D, {{Codeline|A(:, 1, :)}} if {{Codeline|A}} was 3-D, and so on.<br />
<br />
==== Solution ====<br />
<br />
One possibility is to use {{manual|subsref}} with the input {{Codeline|idx}} created dynamically with {{manual|repelems}} to have the right number of dimensions.<br />
This can be written as a function:<br />
<br />
<syntaxhighlight lang="Octave"><br />
function [B]= array_slice (A,k,d)<br />
#return the k-th slice (row, column...) of A, with d specifying the dimension to slice on<br />
idx.type = "()";<br />
idx.subs = repelems ({':'}, [1;ndims(A)]);<br />
idx.subs(d) = k;<br />
B = subsref (A,idx);<br />
endfunction<br />
<br />
#test cases<br />
%!shared A<br />
%! A=rand(2, 3);<br />
%!assert (array_slice (A,1,2), A(:, 1))<br />
%! A=rand(2, 3, 4);<br />
%!assert (array_slice (A,2,1), A(2, :, :))<br />
%! A=rand(2, 3, 4, 5);<br />
%!assert (array_slice (A,1,2), A(:, 1, :, :))<br />
%! A=rand(2, 3, 4, 5, 6);<br />
%!assert (array_slice (A,2,3), A(:, :, 2, :, :))<br />
</syntaxhighlight><br />
<br />
To remove the singleton dimension {{Codeline|d}} from the result {{Codeline|B}}, use <br />
<br />
<syntaxhighlight lang="Octave"><br />
B = reshape(B, [size(B)([1:d-1 d+1:end])]);<br />
</syntaxhighlight><br />
<br />
== Input/output ==<br />
<br />
=== Display matched elements from different arrays ===<br />
<br />
==== Problem ====<br />
<br />
You have two, or more, arrays with paired elements and want to print out a string about them. For example:<br />
<br />
<syntaxhighlight lang="Octave"><br />
keys = {"human", "mouse", "chicken"};<br />
values = [ 64 72 70 ];<br />
</syntaxhighlight><br />
<br />
and you want to display:<br />
<br />
Calculated human genome GC content is 64%<br />
Calculated mouse genome GC content is 72%<br />
Calculated chicken genome GC content is 70%<br />
<br />
==== Solution ====<br />
<br />
Make a two rows cell array, with each paired data in a column and supply a cs-list to {{manual|printf}}<br />
<br />
<syntaxhighlight lang="Octave"><br />
values = num2cell (values);<br />
new = {keys{:}; values{:}};<br />
printf ("Calculated %s genome GC content is %i%%\n", new{:})<br />
</syntaxhighlight><br />
<br />
or in a single line:<br />
<br />
<syntaxhighlight lang="Octave"><br />
printf ("Calculated %s genome GC content is %i%%\n", {keys{:}; num2cell(values){:}}{:})<br />
</syntaxhighlight> <br />
<br />
==== Discussion ====<br />
<br />
{{manual|printf}} and family do not accept cell arrays as values.<br />
However, they keep repeating the template given as long as it has enough arguments to keep going.<br />
As such, the trick is on supplying a cs-list of elements which can be done by using a cell array and index it with <code>{}</code>.<br />
<br />
Since values are stored in column-major order, paired values need to be on the same column.<br />
A new row of data can then be added later with<br />
<br />
<syntaxhighlight lang="Octave"><br />
new(end+1,:) = {"Andrew", "Bob", "Kevin"};<br />
</syntaxhighlight><br />
<br />
Note that normal brackets are now being used for indexing.<br />
<br />
=== Swap values ===<br />
<br />
If you want to exchange the value between two variables without creating a dummy one, you can simply do:<br />
<br />
<syntaxhighlight lang="Octave"><br />
[b,a] = deal (a,b);<br />
</syntaxhighlight><br />
<br />
=== Collect all output arguments of a function ===<br />
<br />
If you have a function that returns several values, e.g. <br />
<br />
<syntaxhighlight lang="Octave"><br />
function [a b c]= myfunc ()<br />
[a,b,c] = deal (1,2,3); <br />
endfunction<br />
</syntaxhighlight><br />
<br />
and you want to collect them all into a single cell (similarly to Python's zip() function) you can do:<br />
<br />
<syntaxhighlight lang="Octave"><br />
outargs = nthargout (1:3, @myfunc)<br />
</syntaxhighlight><br />
<br />
=== Create a text table with fprintf===<br />
<br />
Imagine that you want to create a text table with {{manual|fprintf}} with 2 columns of 15 characters width and both right justified.<br />
How to do this thing?<br />
<br />
That's easy:<br />
<br />
If the variable Text is a cell array of strings (of length < 15) with two columns and a certain number of rows, simply type for the k-th row of Text<br />
<br />
<syntaxhighlight lang="Octave"><br />
fprintf('%15.15s | %15.15s\n', Text{k,1}, Text{k,2});<br />
</syntaxhighlight><br />
<br />
The syntax <code>%<n>.<m>s</code> allocates <code>n</code> places to write chars and display the <code>m</code> first characters of the string to display.<br />
<br />
Example:<br />
<br />
<syntaxhighlight lang="Octave"><br />
Text = {"Hello", "World"};<br />
fprintf('%15.15s | %15.15s\n', Text{1,1}, Text{1,2})<br />
</syntaxhighlight><br />
<br />
Hello | World<br />
<br />
===Load comma separated values (*.csv) files===<br />
<br />
# Using {{manual|textread}} gets you a one column cell array. The original size can be restored by using the {{manual|reshape}} function. <syntaxhighlight lang="Octave"><br />
A = textread("file.csv", "%d", "delimiter", ",");<br />
B = textread("file.csv", "%s", "delimiter", ",");<br />
inds = isnan(A);<br />
B(! inds) = num2cell (A(! inds))<br />
</syntaxhighlight><br />
# Another option is to use the function {{manual|csvread}}. However, this function can't handle non-numerical data.<br />
# The probably best option is to use the function [https://octave.sourceforge.io/io/function/csv2cell.html <code>csv2cell</code>] from the [[IO package]]. This function can read mixed-type (numerical and text) .csv files, allows to specify other field separators than a comma and other text protection characters (default: <code>"</code> double quote) and can skip header lines. If you have the [[IO package]] installed and loaded, type <code>help csv2cell</code> at the Octave prompt for more info.<br />
<br />
===Load XML files===<br />
<br />
Reading XML in octave can be achieved using the java library [https://xerces.apache.org/ Apache Xerces]. <br />
<br />
It seems that the Matlab's <code>xmlread</code> is just a thin wrapper around the Apache Xerces library.<br />
One should note however, that Java functions have the working directory set to the working directory when octave starts and the working directory is not modified by a {{manual|cd}} in octave.<br />
Matlab has the same behavior, as Java does not provide a way to change the current working directory (http://bugs.java.com/bugdatabase/view_bug.do?bug_id=4045688).<br />
To avoid any issues, it is thus better to use the absolute path to the XML file.<br />
<br />
You need the jar files {{Path|xercesImpl.jar}} and {{Path|xml-apis.jar}} from e.g. https://xerces.apache.org/mirrors.cgi#binary (check for the latest version).<br />
Use {{manual|javaaddpath}} to include these files:<br />
<br />
<syntaxhighlight lang="Octave"><br />
javaaddpath ("/path/to/xerces-2_11_0/xercesImpl.jar");<br />
javaaddpath ("/path/to/xerces-2_11_0/xml-apis.jar");<br />
</syntaxhighlight><br />
<br />
Example:<br />
<br />
<syntaxhighlight lang="Octave"><br />
filename = "sample.xml";<br />
<br />
## These three lines are equivalent to xDoc = xmlread(filename) in Matlab<br />
parser = javaObject("org.apache.xerces.parsers.DOMParser");<br />
parser.parse(filename); <br />
xDoc = parser.getDocument();<br />
<br />
elem = xDoc.getElementsByTagName("data").item(0); ## get first data element <br />
data = elem.getFirstChild.getTextContent(); ## get text from child<br />
att = elem.getAttribute("att"); ## get attribute named att<br />
</syntaxhighlight><br />
<br />
{{File|sample.xml|<br />
<syntaxhighlight lang="xml"><br />
<root><br />
<data att="1">hello</data><br />
</root><br />
</syntaxhighlight>}}<br />
<br />
===Using variable strings in commands===<br />
<br />
For example, to plot data using a string variable as a legend:<br />
<br />
# Static string as legend (simplest): <syntaxhighlight lang="Octave"><br />
x = linspace (-1, 3, 100);<br />
y = sin (x);<br />
legend = "-1;My data;";<br />
plot (x, y, legend);<br />
</syntaxhighlight><br />
# Variable string as legend (moderate): <syntaxhighlight lang="Octave"><br />
x = linspace (-1, 3, 100);<br />
y = sin (x);<br />
dataName = "My data";<br />
plot (x, y, sprintf("-1;%s;", dataName));<br />
</syntaxhighlight><br />
# Variable string as legend using {{manual|eval}} (not as neat): <syntaxhighlight lang="Octave"><br />
legend = "My data";<br />
plot_command = ["plot (x, y, '-1;", legend, ";')"];<br />
eval (plot_command);<br />
</syntaxhighlight><br />
<br />
These same tricks are useful for reading and writing data files with unique names, etc.<br />
<br />
== Combinatorics ==<br />
<br />
=== Combinations with string characters ===<br />
<br />
==== Problem ====<br />
<br />
You want to get all combinations of different letters but {{manual|nchoosek}} only accepts numeric input.<br />
<br />
==== Solution ====<br />
<br />
Convert your string to numbers and then back to characters.<br />
<br />
<syntaxhighlight lang="Octave"><br />
string = "Hello";<br />
n = 4;<br />
char (nchoosek (uint8 (string), n))<br />
</syntaxhighlight><br />
<br />
==== Discussion ====<br />
<br />
A string in Octave is just a character matrix and can easily be converted to numeric form back and forth.<br />
Each character has an associated number (the {{codeline|asci}} function of the {{forge|miscellaneous}} package displays a nicely formatted conversion table).<br />
<br />
=== Permutations with repetition ===<br />
<br />
==== Problem ====<br />
<br />
You want to generate all possible permutations of a vector with repetition.<br />
<br />
==== Solution ====<br />
<br />
Use {{manual|ndgrid}}:<br />
<br />
<syntaxhighlight lang="Octave"><br />
[x, y, z] = ndgrid ([1, 2, 3, 4, 5]);<br />
[x(:), y(:), z(:)]<br />
</syntaxhighlight><br />
<br />
==== Discussion ====<br />
<br />
It is possible to expand the code above and make it work for any length of permutations.<br />
<br />
<syntaxhighlight lang="Octave"><br />
cart = nthargout ([1:n], @ndgrid, vector);<br />
combs = cell2mat (cellfun (@(c) c(:), cart, "UniformOutput", false));<br />
</syntaxhighlight><br />
<br />
== Mathematics ==<br />
<br />
=== Test if a number is an integer ===<br />
<br />
The simplest method is probably {{manual|fix}}:<br />
<br />
<syntaxhighlight lang="Octave"><br />
fix (x) == x<br />
</syntaxhighlight><br />
<br />
=== Find if a number is even/odd ===<br />
<br />
==== Problem ====<br />
<br />
You have a number, or an array or matrix of them, and want to know if any of them is an odd or even number, i.e., their parity.<br />
<br />
==== Solution ====<br />
<br />
Check the remainder of a division by two. If the remainder is zero, the number is even.<br />
<br />
<syntaxhighlight lang="Octave"><br />
mod (value, 2) ## 1 if odd, zero if even<br />
</syntaxhighlight><br />
<br />
Since {{manual|mod}} accepts a matrix, the following can be done:<br />
<br />
<syntaxhighlight lang="Octave"><br />
any (mod (values, 2)) ## true if at least one number in values is even<br />
all (mod (values, 2)) ## true if all numbers in values are odd<br />
<br />
any (!logical (mod (values, 2))) ## true if at least one number in values is even<br />
all (!logical (mod (values, 2))) ## true if all numbers in values are even<br />
</syntaxhighlight><br />
<br />
==== Discussion ====<br />
<br />
Since we are checking for the remainder of a division, the first choice would be to use {{manual|rem}}.<br />
However, in the case of negative numbers {{manual|mod}} will still return a positive number making it easier for comparisons.<br />
Another alternative is to use {{Codeline|bitand (X, 1)}} or {{Codeline|bitget (X, 1)}} but those are a bit slower.<br />
<br />
Note that this solution applies to integers only.<br />
Non-integers such as <code>0.5</code> or <code>4.201</code> are neither even nor odd.<br />
If the source of the numbers are unknown, such as user input, some sort of checking should be applied for <code>NaN</code>, <code>Inf</code>, or non-integer values.<br />
<br />
=== Parametrized Functions ===<br />
<br />
==== Problem ====<br />
<br />
One sometimes needs to define a family of functions depending on a set of parameters, e.g., <math>f (x, y, z; a, b, c)</math> where <math>x, y, z</math> denote a the variables on which the function operates and <math>a, b, c</math> are the parameters used to chose one specific element of the family of functions.<br />
<br />
For example, let's say we need to compute the time evolution of the elongation of a spring for different values of the spring constant <math>k</math><br />
<br />
==== Solution ====<br />
<br />
We could solve the problem with the following code to solve the spring equation for different values of the spring constant:<br />
<br />
<syntaxhighlight lang="Octave"><br />
t = linspace (0, 10, 100);<br />
function sprime = spring (s, t, k)<br />
x = s(1);<br />
v = s(2);<br />
sprime(1) = v;<br />
sprime(2) = -k * x;<br />
endfunction<br />
k = 1;<br />
x1 = lsode (@(x, t) spring (x, t, k), [1;0], t)(:, 1);<br />
k = 2;<br />
x2 = lsode (@(x, t) spring (x, t, k), [1;0], t)(:, 2);<br />
plot (t, x1, t, x2)<br />
legend ('x1', 'x2')<br />
</syntaxhighlight><br />
<br />
[[File:solparfun.png|400px]]<br />
<br />
==== Discussion ====<br />
<br />
In the above example, the function "sprime" represents a family of functions of the variables <math>x, t</math> parametrized by the parameter <math>k</math>.<br />
<br />
The [http://www.gnu.org/software/octave/doc/interpreter/Anonymous-Functions.html#Anonymous-Functions anonymous function]<br />
<br />
<syntaxhighlight lang="Octave"><br />
@(x, t) sprime (x, t, k)<br />
</syntaxhighlight><br />
<br />
is a function of only <math>x, t</math> where the parameter <math>k</math> is "frozen" to the value it has at the moment in the current scope.<br />
<br />
=== Distance between points ===<br />
<br />
==== Problem ====<br />
<br />
Given a set of points in space we want to calculate the distance between all of them.<br />
Each point is described by its components <math> (x_i,y_i,\ldots)</math>.<br />
Assume that the points are saved in a matrix <code>P</code> with <code>m</code> rows (one for each point) and <code>n</code> columns, one for each component.<br />
<br />
==== Solution ====<br />
<br />
One way of proceeding is to use the broadcast properties of operators in GNU Octave.<br />
The square distance between the points can be calculated with the code:<br />
<br />
<syntaxhighlight lang="Octave"><br />
[m, n] = size (P);<br />
Dsq = zeros (m); <br />
for i = 1:n<br />
Dsq += (P(:,i) - P(:,i)').^2;<br />
endfor<br />
</syntaxhighlight><br />
<br />
This matrix is symmetric with zero diagonal.<br />
<br />
Similarly the vectors pointing from one point to the another is<br />
<br />
<syntaxhighlight lang="Octave"><br />
R = zeros (m, m, n); <br />
for i = 1:n<br />
R(:,:,i) = P(:,i) - P(:,i)';<br />
endfor<br />
</syntaxhighlight><br />
<br />
The relation between <code>Dsq</code> and <code>R</code> is<br />
<br />
<syntaxhighlight lang="Octave"><br />
Dsq = sumsq (R, 3); <br />
</syntaxhighlight><br />
<br />
==== Discussion ====<br />
<br />
The calculation can be implemented using functions like {{manual|cellfun}} and avoid the loop over components of the points.<br />
However in most cases we will have more points than components and the improvement, if any, will be minimal.<br />
<br />
Another observation is that the matrix <code>Dsq</code> is symmetric and we could store only the lower or upper triangular part.<br />
To use this optimization in a practical way check the help of the functions <code>vech</code> and <code>unvech</code> (this one is in the Forge package {{Forge|general}}).<br />
Two functions that haven't seen the light yet are <code>sub2ind_tril</code> and <code>ind2sub_tril</code> (currently private functions in the [[Mechanics_package | Forge package mechanics]]) that are useful to index the elements of a vector constructed with the function <code>vech</code>.<br />
Each page (the third index) of the multidimensional array <code>R</code> is an anti-symmetric matrix and we could also save some memory by keeping only one of the triangular submatrices.<br />
<br />
Check the [[Geometry package]] for many more distance functions (points, lines, polygons, etc.).<br />
<br />
<br />
[[Category:Tutorials]]</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=Cookbook&diff=11079Cookbook2018-04-27T09:21:26Z<p>KaKiLa: /* Programs, Libraries, and Packages */</p>
<hr />
<div>An Octave cookbook. Each entry should go in a separate section and have the following subsection: problem, solution, discussion and maybe a see also.<br />
<br />
== Programs, Libraries, and Packages ==<br />
<br />
Recipes for developers of Octave programs and libraries. The type of stuff<br />
an Octave programmer should be aware when writing code for others.<br />
<br />
=== Find Octave configuration ===<br />
<br />
Octave can be built with many configurations so programs may end up running<br />
in a machine without features they need. Developers should never expect an<br />
Octave installation to have all features. And programs should identify if<br />
the required features are available.<br />
<br />
This is a list of possible tests to check for features:<br />
<br />
<syntaxhighlight lang="Octave"><br />
## support for 64 bit indexing<br />
sizemax () > intmax ("int32")<br />
<br />
## built with support for java<br />
usejava ("jvm")<br />
<br />
## Image IO with support for tif files<br />
any (cellfun (@(x) ismember ("tif", x), {imformats.ext}))<br />
## Image IO with support for png files<br />
any (cellfun (@(x) ismember ("png", x), {imformats.ext}))<br />
</syntaxhighlight><br />
<br />
=== Find if a package is installed ===<br />
<br />
==== Problem ====<br />
<br />
You have a program that uses different functions or behaves different<br />
depending on the availability of specific packages.<br />
<br />
==== Solution ====<br />
<br />
Use {{codeline|pkg ("list", pkg-name)}} like so:<br />
<br />
<syntaxhighlight lang="Octave"><br />
if (! isempty (pkg ("list", "foo")))<br />
## use functions from package foo, the preferred way<br />
elseif (! isempty (pkg ("list", "bar")))<br />
## use functions from package bar, not so optimal<br />
else<br />
## default case<br />
endif<br />
</syntaxhighlight><br />
<br />
==== Discussion ====<br />
<br />
It's not recommended to use this if the only purpose is to then fail<br />
in the absence of the package. In such case, simply try to load the package<br />
and Octave will already give a error message that is informative enough.<br />
<br />
There is only purpose to check this, if there is something different to<br />
do if a package is missing. The same is true for catching an error from<br />
{{codeline|pkg load}}. If you only catch an error to then throw it again<br />
then you might as well not catch it in the first place.<br />
<br />
<syntaxhighlight lang="Octave"><br />
## This contraption doesn't add anything. If 'pkg load' fails, it<br />
## will already give an error message to the user.<br />
try<br />
pkg load foo;<br />
catch<br />
error ("failed to load foo: %s", lasterr ());<br />
end_try_catch<br />
<br />
## Again, doesn't add anything. The failure of 'pkg load' is enough<br />
if (isempty (pkg ("list", "foo")))<br />
error ("program: package foo is not installed");<br />
endif<br />
</syntaxhighlight><br />
<br />
Beware that an installed package is not always a guarantee that a function<br />
will be available. Some packages may disable functions at build time, or<br />
specific functions may have specific runtime requirements.<br />
<br />
=== List all function in Octave ===<br />
Use the following script<br />
<syntaxhighlight lang="Octave"><br />
## List of all builtin (C++) functions and m-file functions<br />
funcs = vertcat (__builtins__ (), __list_functions__ ());<br />
<br />
## Write list to file<br />
fid = fopen ("all_funcs.tmp", "w");<br />
if (fid == -1)<br />
error ("Unable to open temporary file all_funcs.tmp. Aborting...\n");<br />
endif<br />
fprintf (fid, "%s\n", funcs{:});<br />
fclose (fid);<br />
</syntaxhighlight><br />
<br />
And execute with<br />
<br />
run-octave -f list_func.m<br />
<br />
== Structures ==<br />
<br />
=== Retrieve a field value from all entries in a struct array ===<br />
<br />
==== Problem ====<br />
You have a struct array with multiple fields, and you want to access the value from a specific field from all elements. For example, you want to return the age from all patients in the following case:<br />
<br />
<syntaxhighlight lang="Octave"><br />
samples = struct ("patient", {"Bob", "Kevin", "Bob" , "Andrew"},<br />
"age", { 45 , 52 , 45 , 23 },<br />
"protein", {"H2B", "CDK2" , "CDK2", "Tip60" },<br />
"tube" , { 3 , 5 , 2 , 18 }<br />
);<br />
</syntaxhighlight><br />
<br />
==== Solution ====<br />
<br />
Indexing the struct returns a comma separated list so use them to create a matrix.<br />
<br />
<syntaxhighlight lang="Octave"><br />
[samples(:).age]<br />
</syntaxhighlight><br />
<br />
This however does not keep the original structure of the data, instead returning all values in a single column. To fix this, use {{Codeline|reshape()}}.<br />
<br />
<syntaxhighlight lang="Octave"><br />
reshape ([samples(:).age], size (samples))<br />
</syntaxhighlight><br />
<br />
==== Discussion ====<br />
<br />
Returning all values in a comma separated lists allows you to make anything out of them.<br />
If numbers are expected, create a matrix by enclosing them in square brackets.<br />
But if strings are to be expected, a cell array can also be easily generated with curly brackets<br />
<br />
<syntaxhighlight lang="Octave"><br />
{samples(:).patient}<br />
</syntaxhighlight><br />
<br />
You are also not limited to return all elements, you may use logical indexing from other fields to get values from the others:<br />
<br />
<syntaxhighlight lang="Octave"><br />
[samples([samples(:).age] > 34).tube] ## return tube numbers from all samples from patients older than 34<br />
[samples(strcmp({samples(:).protein}, "CDK2")).tube] ## return all tube numbers for protein CDK2<br />
</syntaxhighlight><br />
<br />
== Array manipulation ==<br />
<br />
=== Select a slice from an n-D array ===<br />
<br />
==== Problem ====<br />
<br />
For an array {{Codeline|A}} with arbitrary number of dimensions, select, for example, the first column.<br />
This would be {{Codeline|A(:, 1)}} if {{Codeline|A}} was 2-D, {{Codeline|A(:, 1, :)}} if {{Codeline|A}} was 3-D, and so on.<br />
<br />
==== Solution ====<br />
<br />
One possibility is to use {{manual|subsref}} with the input {{Codeline|idx}} created dynamically with {{manual|repelems}} to have the right number of dimensions.<br />
This can be written as a function:<br />
<br />
<syntaxhighlight lang="Octave"><br />
function [B]= array_slice (A,k,d)<br />
#return the k-th slice (row, column...) of A, with d specifying the dimension to slice on<br />
idx.type = "()";<br />
idx.subs = repelems ({':'}, [1;ndims(A)]);<br />
idx.subs(d) = k;<br />
B = subsref (A,idx);<br />
endfunction<br />
<br />
#test cases<br />
%!shared A<br />
%! A=rand(2, 3);<br />
%!assert (array_slice (A,1,2), A(:, 1))<br />
%! A=rand(2, 3, 4);<br />
%!assert (array_slice (A,2,1), A(2, :, :))<br />
%! A=rand(2, 3, 4, 5);<br />
%!assert (array_slice (A,1,2), A(:, 1, :, :))<br />
%! A=rand(2, 3, 4, 5, 6);<br />
%!assert (array_slice (A,2,3), A(:, :, 2, :, :))<br />
</syntaxhighlight><br />
<br />
To remove the singleton dimension {{Codeline|d}} from the result {{Codeline|B}}, use <br />
<br />
<syntaxhighlight lang="Octave"><br />
B = reshape(B, [size(B)([1:d-1 d+1:end])]);<br />
</syntaxhighlight><br />
<br />
== Input/output ==<br />
<br />
=== Display matched elements from different arrays ===<br />
<br />
==== Problem ====<br />
<br />
You have two, or more, arrays with paired elements and want to print out a string about them. For example:<br />
<br />
<syntaxhighlight lang="Octave"><br />
keys = {"human", "mouse", "chicken"};<br />
values = [ 64 72 70 ];<br />
</syntaxhighlight><br />
<br />
and you want to display:<br />
<br />
Calculated human genome GC content is 64%<br />
Calculated mouse genome GC content is 72%<br />
Calculated chicken genome GC content is 70%<br />
<br />
==== Solution ====<br />
<br />
Make a two rows cell array, with each paired data in a column and supply a cs-list to {{manual|printf}}<br />
<br />
<syntaxhighlight lang="Octave"><br />
values = num2cell (values);<br />
new = {keys{:}; values{:}};<br />
printf ("Calculated %s genome GC content is %i%%\n", new{:})<br />
</syntaxhighlight><br />
<br />
or in a single line:<br />
<br />
<syntaxhighlight lang="Octave"><br />
printf ("Calculated %s genome GC content is %i%%\n", {keys{:}; num2cell(values){:}}{:})<br />
</syntaxhighlight> <br />
<br />
==== Discussion ====<br />
<br />
{{manual|printf}} and family do not accept cell arrays as values.<br />
However, they keep repeating the template given as long as it has enough arguments to keep going.<br />
As such, the trick is on supplying a cs-list of elements which can be done by using a cell array and index it with <code>{}</code>.<br />
<br />
Since values are stored in column-major order, paired values need to be on the same column.<br />
A new row of data can then be added later with<br />
<br />
<syntaxhighlight lang="Octave"><br />
new(end+1,:) = {"Andrew", "Bob", "Kevin"};<br />
</syntaxhighlight><br />
<br />
Note that normal brackets are now being used for indexing.<br />
<br />
=== Swap values ===<br />
<br />
If you want to exchange the value between two variables without creating a dummy one, you can simply do:<br />
<br />
<syntaxhighlight lang="Octave"><br />
[b,a] = deal (a,b);<br />
</syntaxhighlight><br />
<br />
=== Collect all output arguments of a function ===<br />
<br />
If you have a function that returns several values, e.g. <br />
<br />
<syntaxhighlight lang="Octave"><br />
function [a b c]= myfunc ()<br />
[a,b,c] = deal (1,2,3); <br />
endfunction<br />
</syntaxhighlight><br />
<br />
and you want to collect them all into a single cell (similarly to Python's zip() function) you can do:<br />
<br />
<syntaxhighlight lang="Octave"><br />
outargs = nthargout (1:3, @myfunc)<br />
</syntaxhighlight><br />
<br />
=== Create a text table with fprintf===<br />
<br />
Imagine that you want to create a text table with {{manual|fprintf}} with 2 columns of 15 characters width and both right justified.<br />
How to do this thing?<br />
<br />
That's easy:<br />
<br />
If the variable Text is a cell array of strings (of length < 15) with two columns and a certain number of rows, simply type for the k-th row of Text<br />
<br />
<syntaxhighlight lang="Octave"><br />
fprintf('%15.15s | %15.15s\n', Text{k,1}, Text{k,2});<br />
</syntaxhighlight><br />
<br />
The syntax <code>%<n>.<m>s</code> allocates <code>n</code> places to write chars and display the <code>m</code> first characters of the string to display.<br />
<br />
Example:<br />
<br />
<syntaxhighlight lang="Octave"><br />
Text = {"Hello", "World"};<br />
fprintf('%15.15s | %15.15s\n', Text{1,1}, Text{1,2})<br />
</syntaxhighlight><br />
<br />
Hello | World<br />
<br />
===Load comma separated values (*.csv) files===<br />
<br />
# Using {{manual|textread}} gets you a one column cell array. The original size can be restored by using the {{manual|reshape}} function. <syntaxhighlight lang="Octave"><br />
A = textread("file.csv", "%d", "delimiter", ",");<br />
B = textread("file.csv", "%s", "delimiter", ",");<br />
inds = isnan(A);<br />
B(! inds) = num2cell (A(! inds))<br />
</syntaxhighlight><br />
# Another option is to use the function {{manual|csvread}}. However, this function can't handle non-numerical data.<br />
# The probably best option is to use the function [https://octave.sourceforge.io/io/function/csv2cell.html <code>csv2cell</code>] from the [[IO package]]. This function can read mixed-type (numerical and text) .csv files, allows to specify other field separators than a comma and other text protection characters (default: <code>"</code> double quote) and can skip header lines. If you have the [[IO package]] installed and loaded, type <code>help csv2cell</code> at the Octave prompt for more info.<br />
<br />
===Load XML files===<br />
<br />
Reading XML in octave can be achieved using the java library [https://xerces.apache.org/ Apache Xerces]. <br />
<br />
It seems that the Matlab's <code>xmlread</code> is just a thin wrapper around the Apache Xerces library.<br />
One should note however, that Java functions have the working directory set to the working directory when octave starts and the working directory is not modified by a {{manual|cd}} in octave.<br />
Matlab has the same behavior, as Java does not provide a way to change the current working directory (http://bugs.java.com/bugdatabase/view_bug.do?bug_id=4045688).<br />
To avoid any issues, it is thus better to use the absolute path to the XML file.<br />
<br />
You need the jar files {{Path|xercesImpl.jar}} and {{Path|xml-apis.jar}} from e.g. https://xerces.apache.org/mirrors.cgi#binary (check for the latest version).<br />
Use {{manual|javaaddpath}} to include these files:<br />
<br />
<syntaxhighlight lang="Octave"><br />
javaaddpath ("/path/to/xerces-2_11_0/xercesImpl.jar");<br />
javaaddpath ("/path/to/xerces-2_11_0/xml-apis.jar");<br />
</syntaxhighlight><br />
<br />
Example:<br />
<br />
<syntaxhighlight lang="Octave"><br />
filename = "sample.xml";<br />
<br />
## These three lines are equivalent to xDoc = xmlread(filename) in Matlab<br />
parser = javaObject("org.apache.xerces.parsers.DOMParser");<br />
parser.parse(filename); <br />
xDoc = parser.getDocument();<br />
<br />
elem = xDoc.getElementsByTagName("data").item(0); ## get first data element <br />
data = elem.getFirstChild.getTextContent(); ## get text from child<br />
att = elem.getAttribute("att"); ## get attribute named att<br />
</syntaxhighlight><br />
<br />
{{File|sample.xml|<br />
<syntaxhighlight lang="xml"><br />
<root><br />
<data att="1">hello</data><br />
</root><br />
</syntaxhighlight>}}<br />
<br />
===Using variable strings in commands===<br />
<br />
For example, to plot data using a string variable as a legend:<br />
<br />
# Static string as legend (simplest): <syntaxhighlight lang="Octave"><br />
x = linspace (-1, 3, 100);<br />
y = sin (x);<br />
legend = "-1;My data;";<br />
plot (x, y, legend);<br />
</syntaxhighlight><br />
# Variable string as legend (moderate): <syntaxhighlight lang="Octave"><br />
x = linspace (-1, 3, 100);<br />
y = sin (x);<br />
dataName = "My data";<br />
plot (x, y, sprintf("-1;%s;", dataName));<br />
</syntaxhighlight><br />
# Variable string as legend using {{manual|eval}} (not as neat): <syntaxhighlight lang="Octave"><br />
legend = "My data";<br />
plot_command = ["plot (x, y, '-1;", legend, ";')"];<br />
eval (plot_command);<br />
</syntaxhighlight><br />
<br />
These same tricks are useful for reading and writing data files with unique names, etc.<br />
<br />
== Combinatorics ==<br />
<br />
=== Combinations with string characters ===<br />
<br />
==== Problem ====<br />
<br />
You want to get all combinations of different letters but {{manual|nchoosek}} only accepts numeric input.<br />
<br />
==== Solution ====<br />
<br />
Convert your string to numbers and then back to characters.<br />
<br />
<syntaxhighlight lang="Octave"><br />
string = "Hello";<br />
n = 4;<br />
char (nchoosek (uint8 (string), n))<br />
</syntaxhighlight><br />
<br />
==== Discussion ====<br />
<br />
A string in Octave is just a character matrix and can easily be converted to numeric form back and forth.<br />
Each character has an associated number (the {{codeline|asci}} function of the {{forge|miscellaneous}} package displays a nicely formatted conversion table).<br />
<br />
=== Permutations with repetition ===<br />
<br />
==== Problem ====<br />
<br />
You want to generate all possible permutations of a vector with repetition.<br />
<br />
==== Solution ====<br />
<br />
Use {{manual|ndgrid}}:<br />
<br />
<syntaxhighlight lang="Octave"><br />
[x, y, z] = ndgrid ([1, 2, 3, 4, 5]);<br />
[x(:), y(:), z(:)]<br />
</syntaxhighlight><br />
<br />
==== Discussion ====<br />
<br />
It is possible to expand the code above and make it work for any length of permutations.<br />
<br />
<syntaxhighlight lang="Octave"><br />
cart = nthargout ([1:n], @ndgrid, vector);<br />
combs = cell2mat (cellfun (@(c) c(:), cart, "UniformOutput", false));<br />
</syntaxhighlight><br />
<br />
== Mathematics ==<br />
<br />
=== Test if a number is an integer ===<br />
<br />
The simplest method is probably {{manual|fix}}:<br />
<br />
<syntaxhighlight lang="Octave"><br />
fix (x) == x<br />
</syntaxhighlight><br />
<br />
=== Find if a number is even/odd ===<br />
<br />
==== Problem ====<br />
<br />
You have a number, or an array or matrix of them, and want to know if any of them is an odd or even number, i.e., their parity.<br />
<br />
==== Solution ====<br />
<br />
Check the remainder of a division by two. If the remainder is zero, the number is even.<br />
<br />
<syntaxhighlight lang="Octave"><br />
mod (value, 2) ## 1 if odd, zero if even<br />
</syntaxhighlight><br />
<br />
Since {{manual|mod}} accepts a matrix, the following can be done:<br />
<br />
<syntaxhighlight lang="Octave"><br />
any (mod (values, 2)) ## true if at least one number in values is even<br />
all (mod (values, 2)) ## true if all numbers in values are odd<br />
<br />
any (!logical (mod (values, 2))) ## true if at least one number in values is even<br />
all (!logical (mod (values, 2))) ## true if all numbers in values are even<br />
</syntaxhighlight><br />
<br />
==== Discussion ====<br />
<br />
Since we are checking for the remainder of a division, the first choice would be to use {{manual|rem}}.<br />
However, in the case of negative numbers {{manual|mod}} will still return a positive number making it easier for comparisons.<br />
Another alternative is to use {{Codeline|bitand (X, 1)}} or {{Codeline|bitget (X, 1)}} but those are a bit slower.<br />
<br />
Note that this solution applies to integers only.<br />
Non-integers such as <code>0.5</code> or <code>4.201</code> are neither even nor odd.<br />
If the source of the numbers are unknown, such as user input, some sort of checking should be applied for <code>NaN</code>, <code>Inf</code>, or non-integer values.<br />
<br />
=== Parametrized Functions ===<br />
<br />
==== Problem ====<br />
<br />
One sometimes needs to define a family of functions depending on a set of parameters, e.g., <math>f (x, y, z; a, b, c)</math> where <math>x, y, z</math> denote a the variables on which the function operates and <math>a, b, c</math> are the parameters used to chose one specific element of the family of functions.<br />
<br />
For example, let's say we need to compute the time evolution of the elongation of a spring for different values of the spring constant <math>k</math><br />
<br />
==== Solution ====<br />
<br />
We could solve the problem with the following code to solve the spring equation for different values of the spring constant:<br />
<br />
<syntaxhighlight lang="Octave"><br />
t = linspace (0, 10, 100);<br />
function sprime = spring (s, t, k)<br />
x = s(1);<br />
v = s(2);<br />
sprime(1) = v;<br />
sprime(2) = -k * x;<br />
endfunction<br />
k = 1;<br />
x1 = lsode (@(x, t) spring (x, t, k), [1;0], t)(:, 1);<br />
k = 2;<br />
x2 = lsode (@(x, t) spring (x, t, k), [1;0], t)(:, 2);<br />
plot (t, x1, t, x2)<br />
legend ('x1', 'x2')<br />
</syntaxhighlight><br />
<br />
[[File:solparfun.png|400px]]<br />
<br />
==== Discussion ====<br />
<br />
In the above example, the function "sprime" represents a family of functions of the variables <math>x, t</math> parametrized by the parameter <math>k</math>.<br />
<br />
The [http://www.gnu.org/software/octave/doc/interpreter/Anonymous-Functions.html#Anonymous-Functions anonymous function]<br />
<br />
<syntaxhighlight lang="Octave"><br />
@(x, t) sprime (x, t, k)<br />
</syntaxhighlight><br />
<br />
is a function of only <math>x, t</math> where the parameter <math>k</math> is "frozen" to the value it has at the moment in the current scope.<br />
<br />
=== Distance between points ===<br />
<br />
==== Problem ====<br />
<br />
Given a set of points in space we want to calculate the distance between all of them.<br />
Each point is described by its components <math> (x_i,y_i,\ldots)</math>.<br />
Assume that the points are saved in a matrix <code>P</code> with <code>m</code> rows (one for each point) and <code>n</code> columns, one for each component.<br />
<br />
==== Solution ====<br />
<br />
One way of proceeding is to use the broadcast properties of operators in GNU Octave.<br />
The square distance between the points can be calculated with the code:<br />
<br />
<syntaxhighlight lang="Octave"><br />
[m, n] = size (P);<br />
Dsq = zeros (m); <br />
for i = 1:n<br />
Dsq += (P(:,i) - P(:,i)').^2;<br />
endfor<br />
</syntaxhighlight><br />
<br />
This matrix is symmetric with zero diagonal.<br />
<br />
Similarly the vectors pointing from one point to the another is<br />
<br />
<syntaxhighlight lang="Octave"><br />
R = zeros (m, m, n); <br />
for i = 1:n<br />
R(:,:,i) = P(:,i) - P(:,i)';<br />
endfor<br />
</syntaxhighlight><br />
<br />
The relation between <code>Dsq</code> and <code>R</code> is<br />
<br />
<syntaxhighlight lang="Octave"><br />
Dsq = sumsq (R, 3); <br />
</syntaxhighlight><br />
<br />
==== Discussion ====<br />
<br />
The calculation can be implemented using functions like {{manual|cellfun}} and avoid the loop over components of the points.<br />
However in most cases we will have more points than components and the improvement, if any, will be minimal.<br />
<br />
Another observation is that the matrix <code>Dsq</code> is symmetric and we could store only the lower or upper triangular part.<br />
To use this optimization in a practical way check the help of the functions <code>vech</code> and <code>unvech</code> (this one is in the Forge package {{Forge|general}}).<br />
Two functions that haven't seen the light yet are <code>sub2ind_tril</code> and <code>ind2sub_tril</code> (currently private functions in the [[Mechanics_package | Forge package mechanics]]) that are useful to index the elements of a vector constructed with the function <code>vech</code>.<br />
Each page (the third index) of the multidimensional array <code>R</code> is an anti-symmetric matrix and we could also save some memory by keeping only one of the triangular submatrices.<br />
<br />
Check the [[Geometry package]] for many more distance functions (points, lines, polygons, etc.).<br />
<br />
<br />
[[Category:Tutorials]]</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=OctConf_2018_Notes&diff=10759OctConf 2018 Notes2018-03-15T10:21:33Z<p>KaKiLa: /* Talking */</p>
<hr />
<div>We will be taking notes as OctConf is going on. Keep an eye on this page.<br />
<br />
== Monday ==<br />
<br />
=== Talking ===<br />
<br />
* jwe presented state of Octave development<br />
* Michele Ginesi presented his Octave work on special functions<br />
<br />
; list topics for discussion and work for this OctConf<br />
: this very page<br />
<br />
; frequency of Octave releases<br />
: a new release from stable this OctConf. A new release from default in 4 weeks time. From now on, new releases every year in January with freeze before the Christmas holidays.<br />
<br />
; implementing String class<br />
: Matlab added double quote strings, which instantiate objects of their new String class. This behaves different from our double quote strings because it does not escape special characters. Being Matlab compatible will mean being backwards incompatible. Decided to first implement the String class and make the Octave internals handle it. Then we will worry about having the double quotes create them and decide about the escaping of characters.<br />
<br />
; scope of functions in script files<br />
: Matlab scripts can now include function definitions. However, these behave different from Octave scripts in two ways:<br />
:# functions defined in script files are locally scoped and will not be available after running the script<br />
:# functions in the script file can de defined in the script after the statements that use them while Octave requires them to be defined first.<br />
: jwe says that this behaviour should be simple to implement but will be backwards incompatible. Solution is to have the run function change and behave like Matlab does. Currently, the function source is the same as run. The function source will keep the old behaviour and can be used to source a file to import functions definitions into the global scope, as if the sourced file had been ran in the interpreter.<br />
<br />
=== Doing ===<br />
<br />
; email maintainers mailing list with conclusions<br />
: done by carandraug<br />
<br />
<br />
== Tuesday ==<br />
<br />
=== Talking ===<br />
<br />
; future GSoC students<br />
: we have questioned the value of this. Most students don't stay after GSoC and most projects do not get merged into core and the packages. Even if it costs us no money, it costs us a lot of time since most students need a lot of hand holding, and it's the whole community that is actually mentoring. Ignoring the students is also not nice to them. Nir is the person responsible and he's not attending this year so we are not deciding anything. However, we need to ensure that students know much, and do a better job at filtering out clueless students.<br />
<br />
; refactoring (threading) / developer docs / symbol naming / liboctave interface stability and usability<br />
: These are all very related issues. We have some issues threading and those are mainly because we don't know how to do things properly. Some of us have learned how since but we don't have that knowledge shared and so it's a bit of lack of documentation for ourselves. We decided that changes to Octave internals, the C++ stuff, will need to include doxygen docs for the things that it changes. We have notes on how to write doxygen docs on our [[C++ style guide#Doxygen|C++ style guide]].<br />
: We also have builds of doxygen docs online, including development version http://octave.org/doxygen/ but they are not up to date. jwe will set his build bots to update the doxygen docs daily.<br />
: We also discussed making available builds of the default branch for users. This would be nice because we get users reporting bugs earlier. However, we are afraid that people will not understand that the latest version is a work in progress, not the latest usable version. So we decided against making such builds available.<br />
<br />
; test coverage<br />
: We can already get the line coverage of our test suite if we run make coverage but that only includes the C++ code. jwe says that it would be simple to add some fields to the interpreter that would allow us to also get the line coverage. This would only be done if Octave was built with specific flags. Oliver pointed out that because of vectorized options, line coverage in m file is not as useful as in other languages since the conditions that in other languages is done with if blocks, are instead done by using indexing with an empty array of an array of false elements.<br />
<br />
; measurements of performance<br />
: the test suite is not the best measure of performance. We are estimating that most of its time is spent on running assert which is irrelevant for real Octave programs. It is also mainly cover corner cases and a lot of tests are if it fails when input checking is correct. We should instead have real Octave programs that we used for benchmarking. There wasn't much discussion of this topic beyond noting the problem exists.<br />
<br />
; Octave Forge community<br />
:Currently, there is a high barrier to publish new packages for Octave on Octave-Forge. This mainly comes from the maintenance burden that the Octave Forge Community has with the packages. In particular:<br />
:* The package has to be actively maintained in order to stay compatible with updates to Octave core<br />
:* There is no known good solution to have a Matlab-compatible package, which respects the requirements of an OF package<br />
:* The list of initial requirements (legal and technical) is quite high for outside contributers, especially for domain experts (which we want to address) who are no software engineers<br />
: This creates problems for some external package authors, who basically want to release on their own. Also, this is not resolved by the *two package groups* that we have introduced during the last year.<br />
:<br />
: We see potential for more Octave package publications, which come from “one-off” publications (e. g. with a book / thesis), existing Matlab packages (which also offer a Octave variant), and simple (experimental) libraries of m-files. To increase the pool of high-level users we need to reduce even more the burden to install and distribute packages independently.<br />
:<br />
: The problem that we see today is that Octave-Forge is two-fold: (1) a (collaborative) software development platform and (2) a (re-)distributor of software. So, these new use-cases would not be part of Octave-Forge. In the context of an increasing number of independent “Github developers” this is not needed so much.<br />
:<br />
: To do this we bring back the idea of allowing `pkg` to download and install directly from a url to a `.zip` file or `.tar.gz` file, e.g. `pkg install 'https://myrepo.org/mypackage.zip'`<br />
:* There will be no checks (nor quality standard) on these packages and the user should be clearly warned:<br />
:** Security issue: With no https the download can be redirected. The user can be tricked into entering this command, which downloads and installs (=runs) arbitrary software.<br />
:** Feedback/QA issue: If that package doesn't work, users are probably asking for help.<br />
:* Should `pkg update` also work for these packages?<br />
:** Maybe no. Just re-run the install command.<br />
:** If needed, there could be an update url in the DESCRIPTION file<br />
:* We need to provide guidelines, recommendations and tools for people trying to distribute their packages. We are doing something in this direction, but we need a little boost here: https://octave.sourceforge.io/templates/Makefile, https://sourceforge.net/p/octave/example-package/ci/default/tree/<br />
:* If a package can be installed directly from the repository, it would be supported out-of-the-box by Github, Gitlab, …<br />
:<br />
:Also, we discussed a “package database” like it is done in Julia (see [https://github.com/JuliaLang/METADATA.jl] for a very lightweight solution, which only contains package names, URLs and version), but don't see advantages from that right now.<br />
<br />
; packages into Octave core<br />
: Decided that Octave releases will include some core packages. These will be developed along Octave core, in the same repository, and will be released at the same time. For all purposes they will be a single software project. However, they will still need to be loaded like any other packages.<br />
: Initially, these packages will cover signal processing, statistics, image processing, optimisation, communications, and control. Their aim is to be compatible with their Matlab counterparts and they will be partly imported from the existing Octave Forge packages.<br />
: We won't import all packages in one go. We will start with statistics because we have recently moved a bunch of core functions into it and so they will be easier to import back. signal will probably follow but Pantxo pointed out that this would require a lot of work on its documentation. optim and communications will probably go last since communications is abandoned and optim does not actually have many Matlab compatible functions.<br />
: The current forge packages include extra functions that are not in the Matlab counterparts and their inclusion in the core packages will be decided on a case by case basis. Not sure what will happen with them most likely they would go into a separate package like statistics-legacy.<br />
<br />
=== Doing ===<br />
<br />
; merging of previous GSoC projects<br />
: Rik merged Ginesi's special functions and Carlo's worked remotely on merging Cristiano Dorigo's improvement of iterative solvers.<br />
<br />
; polygon reconstruction algorithm<br />
: Rik and Pantxo worked on this<br />
<br />
; new release<br />
: jwe been preparing for wednesday's release<br />
<br />
; dinner in town<br />
: That was a very nice time with much discussion about future of Octave and Octave Forge, packages, and makefiles.<br />
<br />
; email maintainers mailing list with conclusions<br />
: done<br />
<br />
== Wednesday ==<br />
<br />
=== Talking ===<br />
<br />
; SWAN presentation<br />
: CERN presented their customized Jupyter instance named SWAN which integrates with the other CERN tools for data and data processing.<br />
<br />
; make {{Codeline|--no-gui}} default<br />
: Mike http://lists.gnu.org/archive/html/octave-maintainers/2018-03/msg00044.html suggested on the mailing to make this change for the upcoming 4.4 release. We discussed it all together, and everyone agrees. This should make things simpler for everyone. There will be only one flag which will be {{Codeline|--gui}} to start the gui and will be used by launchers. This will simplify the octave code too since we will no longer have to guess whether to start it or not based on whether we have persist or scripts to eval.<br />
:<br />
: We then coded that change.<br />
<br />
; review our review of code contributions<br />
: a quick rehash of previous discussions. We do a lousy job at review contributions and would need better tools to make the reviewing easier. However, no is available to have such a tool which actually means replacing savannah with our own instance.<br />
<br />
; the complicated code in pkg<br />
: Juan showed that the code in pkg is a bit overcomplicated. Some changes were done to simplify it some 3-4 years ago but never got merged. Those changes no longer apply. Juan will try to make those changes again but first will be adding tests for pkg.<br />
<br />
; warning users if installing packages with url<br />
: discussed adding a warning that a package was not community maintained if user tried to use a url, and required user to answer yes or no. Decided against such warning. We may instead consider add a warning in the future if user tries to install something with an insecure connection (http:// instead of https:// or file://)<br />
<br />
=== Doing ===<br />
<br />
; new Octave 4.2.2 release<br />
: It was done. In the process of merging default to stable, we may do that tomorrow instead.<br />
<br />
; new release of image package<br />
: carandraug not even had time to get to it, too busy with changes to core and more discussions.<br />
<br />
; more tests to increase code coverage<br />
<br />
; CERN visit<br />
<br />
; email maintainers mailing list with conclusions<br />
<br />
== Thursday ==<br />
<br />
=== Talking ===<br />
<br />
; OctConf 2019<br />
: The issue of Octave visibility was brought up and discussed. OctConf 2019 will be a developers only conference with an outreach talk.<br />
<br />
: Place: 1) Rik will send a "Call for hosts". Deadline: 01.05.2018. If no host after the deadline the place is CERN.<br />
: Date: Between 2nd half of 20.03.2019 and 1st half of 15.04.2019<br />
: Fee: 25 USD or 20 EUR<br />
<br />
=== Doing ===<br />
<br />
; email maintainers mailing list with conclusions</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=OctConf_2019&diff=10758OctConf 20192018-03-15T10:15:52Z<p>KaKiLa: /* Schedule */</p>
<hr />
<div>== Meeting ==<br />
<br />
We are happy to announce the upcoming Octave Conference 2019 to be held at [http://home.cern CERN], near Geneva, Switzerland, from March 12th until March 15th. <br />
<br />
The Local Organising Committee is happy and proud that CERN will host this event for at least two reasons: <br />
* Octave is a fundamental tool of analysis and research for hundreds of CERN scientists<br />
* Octave and CERN share and promote the same values of openness, cooperation, diversity, quality and commitment.<br />
<br />
The two-day plus two-half-day event will be an opportunity for sharing experiences, planning the future of Octave and promoting its use among the scientific community and beyond.<br />
<br />
Our [[OctConf_2019#Scientific_committee | scientific committee]] is working out the details of the programme, which will include: a presentation by Octave's creator and main maintainer John W. Eaton in the CERN Main Auditorium (Monday afternoon), several interesting talks about applications of Octave to various scientific domains, code sprints, and a session to promote the open-source supported by public institutions as a model for free and successful development. The call for contributions and abstract will be open soon.<br />
<br />
The key members of the Octave development team will participate in the conference, both from oversea and from Europe. You can find updated information on the programme in this Wiki page and we are filling the [ Indico] timetable.<br />
<br />
== Key info ==<br />
<br />
=== Dates ===<br />
<br />
The conference will take place on Week 11, from March 12th until March 15th 2018.<br />
<br />
=== Location ===<br />
<br />
Octconf 2019 will take place at [http://home.cern/ CERN] (European Center for Nuclear Research).<br />
<br />
=== Registration ===<br />
<br />
The conference fee is 20CHF and registration is required. Please use the CERN conference manager [https://indico.cern.ch/event/626097/ Indico] to register.<br />
<br />
=== Conference activities ===<br />
<br />
The conference will be based around workshops, unconference, and code sprints, with a plenary speaker on the first three days.<br />
<br />
==== Abstract submission ====<br />
<br />
During the second day we will have Octave users presenting their applications<br />
<br />
These applications should answer the questions "How to do X in GNU Octave?"<br />
<br />
Applications will be reviewed and selected<br />
<br />
Applications will be published in an open access digital conference proceedings<br />
<br />
'''put this in another page'''<br />
* Submission guidelines<br />
<br />
Use this [https://YOURFULLNAME_dynamic_submission_template.m template] to prepare a submission of an application<br />
<br />
Send your submission to (e-mail)<br />
<br />
Check your application before submission using (code to check submission)<br />
<br />
Submission maximum length?<br />
<br />
== Committees ==<br />
=== Scientific committee ===<br />
'''Duties''': Recruit invited speakers, finalize the programme schedule, review and select presentations, review and select posters, chairing during conference. <br />
<br />
'''Members''':<br />
<br />
* [[User:Carandraug|Carnë Draug]]<br />
* [[User:jwe|John W. Eaton]]<br />
* [[User:KaKiLa|Juan Pablo Carbajal]]<br />
<br />
Use the [mailto:maintainers@octave.org maintainers mailing list] to communicate with these people.<br />
<br />
=== Hosting committtee ===<br />
'''Duties''': Arrange and reserve rooms, catering, social event, and other logistics for the conference.<br />
<br />
'''Members''':<br />
<br />
* Andrea Latina<br />
* John Evans<br />
* Melissa Gaillard<br />
<br />
== Schedule ==<br />
<br />
<table class="tg" border="1" width="860" style="text-align: center"><br />
<tr><br />
<th width="110">Time</th><br />
<th width="180">Monday X.Y</th><br />
<th width="380">Tuesday X+1.Y</th><br />
<th width="150">Wednesday X+2.Y</th><br />
</tr><br />
<tr><br />
<td><br/><br/>Morning<br/><br/></td><br />
<td> Unconference organiztion</td><br />
<br />
<td> Developers sessions 1 </td><br />
<br />
<td> Developers sessions 4 </td><br />
</tr><br />
<tr><br />
<td><br/><br/>Noon<br/><br/> </td><br />
<td> John's Talk <br/> and Lunch </td><br />
<br />
<td> Developers sessions 2 <br/> and Lunch </td><br />
<br />
<td> Developers session 5 <br/> and Lunch </td><br />
</tr><br />
<tr><br />
<td><br/><br/>Afternoon<br/><br/></td><br />
<td> Outreach: "Uses of Octave"<br/> Rik</td><br />
<br />
<td> Developers session 3 </td><br />
<br />
<td> [[OctConf 2020]] planning and Closing </td><br />
</tr><br />
<tr><br />
<td><br/><br/>Evening<br/><br/></td><br />
<td> Free Evening </td><br />
<td> Social event </td><br />
<td></td><br />
</tr><br />
</table><br />
<br />
== Accommodation ==<br />
<br />
The conference will take place in the CERN's main site (Meyrin). You search for an accommodation in one of the [http://smb-dep.web.cern.ch/en/CERN_Housing CERN Hostels].<br />
<br />
Should the CERN hostels be full, or should you prefer to stay in Geneva, we advise you to consult your favourite on-line booking portal (www.booking.com, www.tripadvisor.com, www.trivago.com, www.expedia.com etc.) and to contact the hotel directly in order to identify the lowest tariff available for CERN users and collaborators (preferential tariffs may apply in some cases).<br />
<br />
Hotels in the vicinity of "Gare Cornavin" (Geneva's main railway station), or along "Route de Meyrin", are particularly recommended. Tram number 18 links Gare Cornavin to CERN in 20' (see [http://www.tpg.ch/ timetable on the TPG's webpage]). <br />
<br />
Notice that, by staying in hotel, youth hostel or at a campsite, you are entitled to receive a personal and non transferable Geneva Transport Card for free, which will allow you to use the whole public transportation system of Geneva for the length of your stay for free. This includes buses, trams, trains, and yellow taxi-boats - Mouettes. Just ask for it upon arrival on the reception.<br />
<br />
=== Travelling ===<br />
Please read the information in the [http://visit.cern/exhibitions/how-get-cern CERN instructions].<br />
<br />
== Previous OctConf ==<br />
[[OctConf 2018]]<br />
<br />
== Next OctConf ==<br />
[[OctConf 2020]]<br />
<br />
[[Category:OctConf]]<br />
[[Category:2019]]</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=OctConf_2019&diff=10756OctConf 20192018-03-14T23:26:32Z<p>KaKiLa: /* Abstract submission */</p>
<hr />
<div>== Meeting ==<br />
<br />
We are happy to announce the upcoming Octave Conference 2019 to be held at [http://home.cern CERN], near Geneva, Switzerland, from March 12th until March 15th. <br />
<br />
The Local Organising Committee is happy and proud that CERN will host this event for at least two reasons: <br />
* Octave is a fundamental tool of analysis and research for hundreds of CERN scientists<br />
* Octave and CERN share and promote the same values of openness, cooperation, diversity, quality and commitment.<br />
<br />
The two-day plus two-half-day event will be an opportunity for sharing experiences, planning the future of Octave and promoting its use among the scientific community and beyond.<br />
<br />
Our [[OctConf_2019#Scientific_committee | scientific committee]] is working out the details of the programme, which will include: a presentation by Octave's creator and main maintainer John W. Eaton in the CERN Main Auditorium (Monday afternoon), several interesting talks about applications of Octave to various scientific domains, code sprints, and a session to promote the open-source supported by public institutions as a model for free and successful development. The call for contributions and abstract will be open soon.<br />
<br />
The key members of the Octave development team will participate in the conference, both from oversea and from Europe. You can find updated information on the programme in this Wiki page and we are filling the [ Indico] timetable.<br />
<br />
== Key info ==<br />
<br />
=== Dates ===<br />
<br />
The conference will take place on Week 11, from March 12th until March 15th 2018.<br />
<br />
=== Location ===<br />
<br />
Octconf 2019 will take place at [http://home.cern/ CERN] (European Center for Nuclear Research).<br />
<br />
=== Registration ===<br />
<br />
The conference fee is 20CHF and registration is required. Please use the CERN conference manager [https://indico.cern.ch/event/626097/ Indico] to register.<br />
<br />
=== Conference activities ===<br />
<br />
The conference will be based around workshops, unconference, and code sprints, with a plenary speaker on the first three days.<br />
<br />
==== Abstract submission ====<br />
<br />
During the second day we will have Octave users presenting their applications<br />
<br />
These applications should answer the questions "How to do X in GNU Octave?"<br />
<br />
Applications will be reviewed and selected<br />
<br />
Applications will be published in an open access digital conference proceedings<br />
<br />
'''put this in another page'''<br />
* Submission guidelines<br />
<br />
Use this [https://YOURFULLNAME_dynamic_submission_template.m template] to prepare a submission of an application<br />
<br />
Send your submission to (e-mail)<br />
<br />
Check your application before submission using (code to check submission)<br />
<br />
Submission maximum length?<br />
<br />
== Committees ==<br />
=== Scientific committee ===<br />
'''Duties''': Recruit invited speakers, finalize the programme schedule, review and select presentations, review and select posters, chairing during conference. <br />
<br />
'''Members''':<br />
<br />
* [[User:Carandraug|Carnë Draug]]<br />
* [[User:jwe|John W. Eaton]]<br />
* [[User:KaKiLa|Juan Pablo Carbajal]]<br />
<br />
Use the [mailto:maintainers@octave.org maintainers mailing list] to communicate with these people.<br />
<br />
=== Hosting committtee ===<br />
'''Duties''': Arrange and reserve rooms, catering, social event, and other logistics for the conference.<br />
<br />
'''Members''':<br />
<br />
* Andrea Latina<br />
* John Evans<br />
* Melissa Gaillard<br />
<br />
== Schedule ==<br />
<br />
<table class="tg" border="1" width="860" style="text-align: center"><br />
<tr><br />
<th width="110">Time</th><br />
<th width="180">Monday 12.03<br/>(Opening/Users/Devs)</th><br />
<th width="380" scope="col" colspan="2">Tuesday 13.03<br/>(Users/Devs)</th><br />
<th width="150">Wednesday 14.03<br/>(Devs)</th><br />
<th width="150">Thursday 15.03<br/>(Closing/Devs)</th><br />
</tr><br />
<tr><br />
<td><br/><br/>Morning<br/><br/></td><br />
<td bgcolor= #ffb3b3></td><br />
<br />
<td> Selected presentations:<br/>How to do X with GNU Octave?</td><br />
<td> Developers sessions 1 </td><br />
<br />
<td> Developers sessions 4 </td><br />
<td> [[OctConf 2020]] planning and Closing </td><br />
</tr><br />
<tr><br />
<td><br/><br/>Noon<br/><br/> </td><br />
<td> John's Talk <br/> and Lunch </td><br />
<br />
<td> Plenary talk: users <br/> and Lunch </td><br />
<td> Developers sessions 2 <br/> and Lunch </td><br />
<br />
<td> Developers session 5 <br/> and Lunch </td><br />
<td> Farewell lunch</td><br />
</tr><br />
<tr><br />
<td><br/><br/>Afternoon<br/><br/></td><br />
<td> GSoC students <br/> or Developers session 0 <br/> (plans, views, perspectives)</td><br />
<br />
<td> GNU Octave for SME <br/> (rebrand: Hands on Tutorials) </td><br />
<td> Developers session 3 </td><br />
<br />
<td> Visit to CERN </td><br />
<td bgcolor=#ffb3b3 rowspan=3></td><br />
</tr><br />
<tr><br />
<td><br/><br/>Evening<br/><br/></td><br />
<td> Free Evening </td><br />
<td colspan="2"> Social event </td><br />
<td></td><br />
</tr><br />
</table><br />
<br />
== Accommodation ==<br />
<br />
The conference will take place in the CERN's main site (Meyrin). You search for an accommodation in one of the [http://smb-dep.web.cern.ch/en/CERN_Housing CERN Hostels].<br />
<br />
Should the CERN hostels be full, or should you prefer to stay in Geneva, we advise you to consult your favourite on-line booking portal (www.booking.com, www.tripadvisor.com, www.trivago.com, www.expedia.com etc.) and to contact the hotel directly in order to identify the lowest tariff available for CERN users and collaborators (preferential tariffs may apply in some cases).<br />
<br />
Hotels in the vicinity of "Gare Cornavin" (Geneva's main railway station), or along "Route de Meyrin", are particularly recommended. Tram number 18 links Gare Cornavin to CERN in 20' (see [http://www.tpg.ch/ timetable on the TPG's webpage]). <br />
<br />
Notice that, by staying in hotel, youth hostel or at a campsite, you are entitled to receive a personal and non transferable Geneva Transport Card for free, which will allow you to use the whole public transportation system of Geneva for the length of your stay for free. This includes buses, trams, trains, and yellow taxi-boats - Mouettes. Just ask for it upon arrival on the reception.<br />
<br />
=== Travelling ===<br />
Please read the information in the [http://visit.cern/exhibitions/how-get-cern CERN instructions].<br />
<br />
== Previous OctConf ==<br />
[[OctConf 2018]]<br />
<br />
== Next OctConf ==<br />
[[OctConf 2020]]<br />
<br />
[[Category:OctConf]]<br />
[[Category:2019]]</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=OctConf_2019&diff=10755OctConf 20192018-03-14T23:25:54Z<p>KaKiLa: /* Accommodation */</p>
<hr />
<div>== Meeting ==<br />
<br />
We are happy to announce the upcoming Octave Conference 2019 to be held at [http://home.cern CERN], near Geneva, Switzerland, from March 12th until March 15th. <br />
<br />
The Local Organising Committee is happy and proud that CERN will host this event for at least two reasons: <br />
* Octave is a fundamental tool of analysis and research for hundreds of CERN scientists<br />
* Octave and CERN share and promote the same values of openness, cooperation, diversity, quality and commitment.<br />
<br />
The two-day plus two-half-day event will be an opportunity for sharing experiences, planning the future of Octave and promoting its use among the scientific community and beyond.<br />
<br />
Our [[OctConf_2019#Scientific_committee | scientific committee]] is working out the details of the programme, which will include: a presentation by Octave's creator and main maintainer John W. Eaton in the CERN Main Auditorium (Monday afternoon), several interesting talks about applications of Octave to various scientific domains, code sprints, and a session to promote the open-source supported by public institutions as a model for free and successful development. The call for contributions and abstract will be open soon.<br />
<br />
The key members of the Octave development team will participate in the conference, both from oversea and from Europe. You can find updated information on the programme in this Wiki page and we are filling the [ Indico] timetable.<br />
<br />
== Key info ==<br />
<br />
=== Dates ===<br />
<br />
The conference will take place on Week 11, from March 12th until March 15th 2018.<br />
<br />
=== Location ===<br />
<br />
Octconf 2019 will take place at [http://home.cern/ CERN] (European Center for Nuclear Research).<br />
<br />
=== Registration ===<br />
<br />
The conference fee is 20CHF and registration is required. Please use the CERN conference manager [https://indico.cern.ch/event/626097/ Indico] to register.<br />
<br />
=== Conference activities ===<br />
<br />
The conference will be based around workshops, unconference, and code sprints, with a plenary speaker on the first three days.<br />
<br />
==== Abstract submission ====<br />
<br />
During the second day we will have Octave users presenting their applications<br />
<br />
These applications should answer the questions "How to do X in GNU Octave?"<br />
<br />
Applications will be reviewed and selected<br />
<br />
Applications will be published in an open access digital conference proceedings<br />
<br />
'''put this in another page'''<br />
* Submission guidelines<br />
<br />
Use this [https://YOURFULLNAME_dynamic_submission_template.m template] to submit and application<br />
<br />
Send your submission to (e-mail)<br />
<br />
Check your application before submission using (code to check submission)<br />
<br />
Submission maximum length?<br />
<br />
== Committees ==<br />
=== Scientific committee ===<br />
'''Duties''': Recruit invited speakers, finalize the programme schedule, review and select presentations, review and select posters, chairing during conference. <br />
<br />
'''Members''':<br />
<br />
* [[User:Carandraug|Carnë Draug]]<br />
* [[User:jwe|John W. Eaton]]<br />
* [[User:KaKiLa|Juan Pablo Carbajal]]<br />
<br />
Use the [mailto:maintainers@octave.org maintainers mailing list] to communicate with these people.<br />
<br />
=== Hosting committtee ===<br />
'''Duties''': Arrange and reserve rooms, catering, social event, and other logistics for the conference.<br />
<br />
'''Members''':<br />
<br />
* Andrea Latina<br />
* John Evans<br />
* Melissa Gaillard<br />
<br />
== Schedule ==<br />
<br />
<table class="tg" border="1" width="860" style="text-align: center"><br />
<tr><br />
<th width="110">Time</th><br />
<th width="180">Monday 12.03<br/>(Opening/Users/Devs)</th><br />
<th width="380" scope="col" colspan="2">Tuesday 13.03<br/>(Users/Devs)</th><br />
<th width="150">Wednesday 14.03<br/>(Devs)</th><br />
<th width="150">Thursday 15.03<br/>(Closing/Devs)</th><br />
</tr><br />
<tr><br />
<td><br/><br/>Morning<br/><br/></td><br />
<td bgcolor= #ffb3b3></td><br />
<br />
<td> Selected presentations:<br/>How to do X with GNU Octave?</td><br />
<td> Developers sessions 1 </td><br />
<br />
<td> Developers sessions 4 </td><br />
<td> [[OctConf 2020]] planning and Closing </td><br />
</tr><br />
<tr><br />
<td><br/><br/>Noon<br/><br/> </td><br />
<td> John's Talk <br/> and Lunch </td><br />
<br />
<td> Plenary talk: users <br/> and Lunch </td><br />
<td> Developers sessions 2 <br/> and Lunch </td><br />
<br />
<td> Developers session 5 <br/> and Lunch </td><br />
<td> Farewell lunch</td><br />
</tr><br />
<tr><br />
<td><br/><br/>Afternoon<br/><br/></td><br />
<td> GSoC students <br/> or Developers session 0 <br/> (plans, views, perspectives)</td><br />
<br />
<td> GNU Octave for SME <br/> (rebrand: Hands on Tutorials) </td><br />
<td> Developers session 3 </td><br />
<br />
<td> Visit to CERN </td><br />
<td bgcolor=#ffb3b3 rowspan=3></td><br />
</tr><br />
<tr><br />
<td><br/><br/>Evening<br/><br/></td><br />
<td> Free Evening </td><br />
<td colspan="2"> Social event </td><br />
<td></td><br />
</tr><br />
</table><br />
<br />
== Accommodation ==<br />
<br />
The conference will take place in the CERN's main site (Meyrin). You search for an accommodation in one of the [http://smb-dep.web.cern.ch/en/CERN_Housing CERN Hostels].<br />
<br />
Should the CERN hostels be full, or should you prefer to stay in Geneva, we advise you to consult your favourite on-line booking portal (www.booking.com, www.tripadvisor.com, www.trivago.com, www.expedia.com etc.) and to contact the hotel directly in order to identify the lowest tariff available for CERN users and collaborators (preferential tariffs may apply in some cases).<br />
<br />
Hotels in the vicinity of "Gare Cornavin" (Geneva's main railway station), or along "Route de Meyrin", are particularly recommended. Tram number 18 links Gare Cornavin to CERN in 20' (see [http://www.tpg.ch/ timetable on the TPG's webpage]). <br />
<br />
Notice that, by staying in hotel, youth hostel or at a campsite, you are entitled to receive a personal and non transferable Geneva Transport Card for free, which will allow you to use the whole public transportation system of Geneva for the length of your stay for free. This includes buses, trams, trains, and yellow taxi-boats - Mouettes. Just ask for it upon arrival on the reception.<br />
<br />
=== Travelling ===<br />
Please read the information in the [http://visit.cern/exhibitions/how-get-cern CERN instructions].<br />
<br />
== Previous OctConf ==<br />
[[OctConf 2018]]<br />
<br />
== Next OctConf ==<br />
[[OctConf 2020]]<br />
<br />
[[Category:OctConf]]<br />
[[Category:2019]]</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=OctConf_2019&diff=10754OctConf 20192018-03-14T23:24:55Z<p>KaKiLa: /* Schedule */</p>
<hr />
<div>== Meeting ==<br />
<br />
We are happy to announce the upcoming Octave Conference 2019 to be held at [http://home.cern CERN], near Geneva, Switzerland, from March 12th until March 15th. <br />
<br />
The Local Organising Committee is happy and proud that CERN will host this event for at least two reasons: <br />
* Octave is a fundamental tool of analysis and research for hundreds of CERN scientists<br />
* Octave and CERN share and promote the same values of openness, cooperation, diversity, quality and commitment.<br />
<br />
The two-day plus two-half-day event will be an opportunity for sharing experiences, planning the future of Octave and promoting its use among the scientific community and beyond.<br />
<br />
Our [[OctConf_2019#Scientific_committee | scientific committee]] is working out the details of the programme, which will include: a presentation by Octave's creator and main maintainer John W. Eaton in the CERN Main Auditorium (Monday afternoon), several interesting talks about applications of Octave to various scientific domains, code sprints, and a session to promote the open-source supported by public institutions as a model for free and successful development. The call for contributions and abstract will be open soon.<br />
<br />
The key members of the Octave development team will participate in the conference, both from oversea and from Europe. You can find updated information on the programme in this Wiki page and we are filling the [ Indico] timetable.<br />
<br />
== Key info ==<br />
<br />
=== Dates ===<br />
<br />
The conference will take place on Week 11, from March 12th until March 15th 2018.<br />
<br />
=== Location ===<br />
<br />
Octconf 2019 will take place at [http://home.cern/ CERN] (European Center for Nuclear Research).<br />
<br />
=== Registration ===<br />
<br />
The conference fee is 20CHF and registration is required. Please use the CERN conference manager [https://indico.cern.ch/event/626097/ Indico] to register.<br />
<br />
=== Conference activities ===<br />
<br />
The conference will be based around workshops, unconference, and code sprints, with a plenary speaker on the first three days.<br />
<br />
==== Abstract submission ====<br />
<br />
During the second day we will have Octave users presenting their applications<br />
<br />
These applications should answer the questions "How to do X in GNU Octave?"<br />
<br />
Applications will be reviewed and selected<br />
<br />
Applications will be published in an open access digital conference proceedings<br />
<br />
'''put this in another page'''<br />
* Submission guidelines<br />
<br />
Use this [https://YOURFULLNAME_dynamic_submission_template.m template] to submit and application<br />
<br />
Send your submission to (e-mail)<br />
<br />
Check your application before submission using (code to check submission)<br />
<br />
Submission maximum length?<br />
<br />
== Committees ==<br />
=== Scientific committee ===<br />
'''Duties''': Recruit invited speakers, finalize the programme schedule, review and select presentations, review and select posters, chairing during conference. <br />
<br />
'''Members''':<br />
<br />
* [[User:Carandraug|Carnë Draug]]<br />
* [[User:jwe|John W. Eaton]]<br />
* [[User:KaKiLa|Juan Pablo Carbajal]]<br />
<br />
Use the [mailto:maintainers@octave.org maintainers mailing list] to communicate with these people.<br />
<br />
=== Hosting committtee ===<br />
'''Duties''': Arrange and reserve rooms, catering, social event, and other logistics for the conference.<br />
<br />
'''Members''':<br />
<br />
* Andrea Latina<br />
* John Evans<br />
* Melissa Gaillard<br />
<br />
== Schedule ==<br />
<br />
<table class="tg" border="1" width="860" style="text-align: center"><br />
<tr><br />
<th width="110">Time</th><br />
<th width="180">Monday 12.03<br/>(Opening/Users/Devs)</th><br />
<th width="380" scope="col" colspan="2">Tuesday 13.03<br/>(Users/Devs)</th><br />
<th width="150">Wednesday 14.03<br/>(Devs)</th><br />
<th width="150">Thursday 15.03<br/>(Closing/Devs)</th><br />
</tr><br />
<tr><br />
<td><br/><br/>Morning<br/><br/></td><br />
<td bgcolor= #ffb3b3></td><br />
<br />
<td> Selected presentations:<br/>How to do X with GNU Octave?</td><br />
<td> Developers sessions 1 </td><br />
<br />
<td> Developers sessions 4 </td><br />
<td> [[OctConf 2020]] planning and Closing </td><br />
</tr><br />
<tr><br />
<td><br/><br/>Noon<br/><br/> </td><br />
<td> John's Talk <br/> and Lunch </td><br />
<br />
<td> Plenary talk: users <br/> and Lunch </td><br />
<td> Developers sessions 2 <br/> and Lunch </td><br />
<br />
<td> Developers session 5 <br/> and Lunch </td><br />
<td> Farewell lunch</td><br />
</tr><br />
<tr><br />
<td><br/><br/>Afternoon<br/><br/></td><br />
<td> GSoC students <br/> or Developers session 0 <br/> (plans, views, perspectives)</td><br />
<br />
<td> GNU Octave for SME <br/> (rebrand: Hands on Tutorials) </td><br />
<td> Developers session 3 </td><br />
<br />
<td> Visit to CERN </td><br />
<td bgcolor=#ffb3b3 rowspan=3></td><br />
</tr><br />
<tr><br />
<td><br/><br/>Evening<br/><br/></td><br />
<td> Free Evening </td><br />
<td colspan="2"> Social event </td><br />
<td></td><br />
</tr><br />
</table><br />
<br />
== Accommodation ==<br />
<br />
The conference will take place in the CERN's main site (Meyrin). You can try your luck and search for an accommodation in one of the [http://smb-dep.web.cern.ch/en/CERN_Housing CERN Hostels].<br />
<br />
Should the CERN hostels be full, or should you prefer to stay in Geneva, we advise you to consult your favourite on-line booking portal (www.booking.com, www.tripadvisor.com, www.trivago.com, www.expedia.com etc.) and to contact the hotel directly in order to identify the lowest tariff available for CERN users and collaborators (preferential tariffs may apply in some cases).<br />
<br />
Hotels in the vicinity of "Gare Cornavin" (Geneva's main railway station), or along "Route de Meyrin", are particularly recommended. Tram number 18 links Gare Cornavin to CERN in 20' (see [http://www.tpg.ch/ timetable on the TPG's webpage]). <br />
<br />
Notice that, by staying in hotel, youth hostel or at a campsite, you are entitled to receive a personal and non transferable Geneva Transport Card for free, which will allow you to use the whole public transportation system of Geneva for the length of your stay for free. This includes buses, trams, trains, and yellow taxi-boats - Mouettes. Just ask for it upon arrival on the reception.<br />
<br />
=== Travelling ===<br />
Please read the information in the [http://visit.cern/exhibitions/how-get-cern CERN instructions].<br />
<br />
== Previous OctConf ==<br />
[[OctConf 2018]]<br />
<br />
== Next OctConf ==<br />
[[OctConf 2020]]<br />
<br />
[[Category:OctConf]]<br />
[[Category:2019]]</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=OctConf_2019&diff=10753OctConf 20192018-03-14T23:18:40Z<p>KaKiLa: /* Abstract submission */</p>
<hr />
<div>== Meeting ==<br />
<br />
We are happy to announce the upcoming Octave Conference 2019 to be held at [http://home.cern CERN], near Geneva, Switzerland, from March 12th until March 15th. <br />
<br />
The Local Organising Committee is happy and proud that CERN will host this event for at least two reasons: <br />
* Octave is a fundamental tool of analysis and research for hundreds of CERN scientists<br />
* Octave and CERN share and promote the same values of openness, cooperation, diversity, quality and commitment.<br />
<br />
The two-day plus two-half-day event will be an opportunity for sharing experiences, planning the future of Octave and promoting its use among the scientific community and beyond.<br />
<br />
Our [[OctConf_2019#Scientific_committee | scientific committee]] is working out the details of the programme, which will include: a presentation by Octave's creator and main maintainer John W. Eaton in the CERN Main Auditorium (Monday afternoon), several interesting talks about applications of Octave to various scientific domains, code sprints, and a session to promote the open-source supported by public institutions as a model for free and successful development. The call for contributions and abstract will be open soon.<br />
<br />
The key members of the Octave development team will participate in the conference, both from oversea and from Europe. You can find updated information on the programme in this Wiki page and we are filling the [ Indico] timetable.<br />
<br />
== Key info ==<br />
<br />
=== Dates ===<br />
<br />
The conference will take place on Week 11, from March 12th until March 15th 2018.<br />
<br />
=== Location ===<br />
<br />
Octconf 2019 will take place at [http://home.cern/ CERN] (European Center for Nuclear Research).<br />
<br />
=== Registration ===<br />
<br />
The conference fee is 20CHF and registration is required. Please use the CERN conference manager [https://indico.cern.ch/event/626097/ Indico] to register.<br />
<br />
=== Conference activities ===<br />
<br />
The conference will be based around workshops, unconference, and code sprints, with a plenary speaker on the first three days.<br />
<br />
==== Abstract submission ====<br />
<br />
During the second day we will have Octave users presenting their applications<br />
<br />
These applications should answer the questions "How to do X in GNU Octave?"<br />
<br />
Applications will be reviewed and selected<br />
<br />
Applications will be published in an open access digital conference proceedings<br />
<br />
'''put this in another page'''<br />
* Submission guidelines<br />
<br />
Use this [https://YOURFULLNAME_dynamic_submission_template.m template] to submit and application<br />
<br />
Send your submission to (e-mail)<br />
<br />
Check your application before submission using (code to check submission)<br />
<br />
Submission maximum length?<br />
<br />
== Committees ==<br />
=== Scientific committee ===<br />
'''Duties''': Recruit invited speakers, finalize the programme schedule, review and select presentations, review and select posters, chairing during conference. <br />
<br />
'''Members''':<br />
<br />
* [[User:Carandraug|Carnë Draug]]<br />
* [[User:jwe|John W. Eaton]]<br />
* [[User:KaKiLa|Juan Pablo Carbajal]]<br />
<br />
Use the [mailto:maintainers@octave.org maintainers mailing list] to communicate with these people.<br />
<br />
=== Hosting committtee ===<br />
'''Duties''': Arrange and reserve rooms, catering, social event, and other logistics for the conference.<br />
<br />
'''Members''':<br />
<br />
* Andrea Latina<br />
* John Evans<br />
* Melissa Gaillard<br />
<br />
== Schedule ==<br />
<br />
<table class="tg" border="1" width="800" style="text-align: center"><br />
<tr><br />
<th width="110">Time</th><br />
<th width="220">Monday 12.03<br/>(Opening/Users/Devs)</th><br />
<th width="220" scope="col" colspan="2">Tuesday 13.03<br/>(Users/Devs)</th><br />
<th width="250">Wednesday 14.03<br/>(Devs)</th><br />
<th width="220">Thursday 15.03<br/>(Closing/Devs)</th><br />
</tr><br />
<tr><br />
<td><br/><br/>Morning<br/><br/></td><br />
<td bgcolor= #ffb3b3></td><br />
<br />
<td> Selected presentations:<br/>How to do X with GNU Octave?</td><br />
<td> Developers sessions 1 </td><br />
<br />
<td> Developers sessions 4 </td><br />
<td> [[OctConf 2020]] planning and Closing </td><br />
</tr><br />
<tr><br />
<td><br/><br/>Noon<br/><br/> </td><br />
<td> John's Talk <br/> and Lunch </td><br />
<br />
<td> Plenary talk: users <br/> and Lunch </td><br />
<td> Developers sessions 2 <br/> and Lunch </td><br />
<br />
<td> Developers session 5 <br/> and Lunch </td><br />
<td> Farewell lunch</td><br />
</tr><br />
<tr><br />
<td><br/><br/>Afternoon<br/><br/></td><br />
<td> GSoC students <br/> or Developers session 0 <br/> (plans, views, perspectives)</td><br />
<br />
<td> GNU Octave for SME <br/> (rebrand: Hands on Tutorials) </td><br />
<td> Developers session 3 </td><br />
<br />
<td> Visit to CERN </td><br />
<td bgcolor=#ffb3b3 rowspan=3></td><br />
</tr><br />
<tr><br />
<td><br/><br/>Evening<br/><br/></td><br />
<td> Free Evening </td><br />
<td colspan="2"> Social event </td><br />
<td></td><br />
</tr><br />
</table><br />
<br />
== Accommodation ==<br />
<br />
The conference will take place in the CERN's main site (Meyrin). You can try your luck and search for an accommodation in one of the [http://smb-dep.web.cern.ch/en/CERN_Housing CERN Hostels].<br />
<br />
Should the CERN hostels be full, or should you prefer to stay in Geneva, we advise you to consult your favourite on-line booking portal (www.booking.com, www.tripadvisor.com, www.trivago.com, www.expedia.com etc.) and to contact the hotel directly in order to identify the lowest tariff available for CERN users and collaborators (preferential tariffs may apply in some cases).<br />
<br />
Hotels in the vicinity of "Gare Cornavin" (Geneva's main railway station), or along "Route de Meyrin", are particularly recommended. Tram number 18 links Gare Cornavin to CERN in 20' (see [http://www.tpg.ch/ timetable on the TPG's webpage]). <br />
<br />
Notice that, by staying in hotel, youth hostel or at a campsite, you are entitled to receive a personal and non transferable Geneva Transport Card for free, which will allow you to use the whole public transportation system of Geneva for the length of your stay for free. This includes buses, trams, trains, and yellow taxi-boats - Mouettes. Just ask for it upon arrival on the reception.<br />
<br />
=== Travelling ===<br />
Please read the information in the [http://visit.cern/exhibitions/how-get-cern CERN instructions].<br />
<br />
== Previous OctConf ==<br />
[[OctConf 2018]]<br />
<br />
== Next OctConf ==<br />
[[OctConf 2020]]<br />
<br />
[[Category:OctConf]]<br />
[[Category:2019]]</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=OctConf_2019&diff=10752OctConf 20192018-03-14T23:16:59Z<p>KaKiLa: /* Abstract submission */</p>
<hr />
<div>== Meeting ==<br />
<br />
We are happy to announce the upcoming Octave Conference 2019 to be held at [http://home.cern CERN], near Geneva, Switzerland, from March 12th until March 15th. <br />
<br />
The Local Organising Committee is happy and proud that CERN will host this event for at least two reasons: <br />
* Octave is a fundamental tool of analysis and research for hundreds of CERN scientists<br />
* Octave and CERN share and promote the same values of openness, cooperation, diversity, quality and commitment.<br />
<br />
The two-day plus two-half-day event will be an opportunity for sharing experiences, planning the future of Octave and promoting its use among the scientific community and beyond.<br />
<br />
Our [[OctConf_2019#Scientific_committee | scientific committee]] is working out the details of the programme, which will include: a presentation by Octave's creator and main maintainer John W. Eaton in the CERN Main Auditorium (Monday afternoon), several interesting talks about applications of Octave to various scientific domains, code sprints, and a session to promote the open-source supported by public institutions as a model for free and successful development. The call for contributions and abstract will be open soon.<br />
<br />
The key members of the Octave development team will participate in the conference, both from oversea and from Europe. You can find updated information on the programme in this Wiki page and we are filling the [ Indico] timetable.<br />
<br />
== Key info ==<br />
<br />
=== Dates ===<br />
<br />
The conference will take place on Week 11, from March 12th until March 15th 2018.<br />
<br />
=== Location ===<br />
<br />
Octconf 2019 will take place at [http://home.cern/ CERN] (European Center for Nuclear Research).<br />
<br />
=== Registration ===<br />
<br />
The conference fee is 20CHF and registration is required. Please use the CERN conference manager [https://indico.cern.ch/event/626097/ Indico] to register.<br />
<br />
=== Conference activities ===<br />
<br />
The conference will be based around workshops, unconference, and code sprints, with a plenary speaker on the first three days.<br />
<br />
==== Abstract submission ====<br />
<br />
During the second day we will have Octave users presenting their applications<br />
<br />
These applications should answer the questions "How to do X in GNU Octave?"<br />
<br />
Applications will be reviewed and selected<br />
<br />
Applications will be published in an open access digital conference proceedings<br />
<br />
'''put this in another page'''<br />
* Submission guidelines<br />
<br />
: Use this [YOURFULLNAME_dynamic_submission_template.m template] to submit and application<br />
<br />
: Send your submission to (e-mail)<br />
<br />
: check your application before submission using (code to check submission)<br />
<br />
: Submission maximum length?<br />
<br />
== Committees ==<br />
=== Scientific committee ===<br />
'''Duties''': Recruit invited speakers, finalize the programme schedule, review and select presentations, review and select posters, chairing during conference. <br />
<br />
'''Members''':<br />
<br />
* [[User:Carandraug|Carnë Draug]]<br />
* [[User:jwe|John W. Eaton]]<br />
* [[User:KaKiLa|Juan Pablo Carbajal]]<br />
<br />
Use the [mailto:maintainers@octave.org maintainers mailing list] to communicate with these people.<br />
<br />
=== Hosting committtee ===<br />
'''Duties''': Arrange and reserve rooms, catering, social event, and other logistics for the conference.<br />
<br />
'''Members''':<br />
<br />
* Andrea Latina<br />
* John Evans<br />
* Melissa Gaillard<br />
<br />
== Schedule ==<br />
<br />
<table class="tg" border="1" width="800" style="text-align: center"><br />
<tr><br />
<th width="110">Time</th><br />
<th width="220">Monday 12.03<br/>(Opening/Users/Devs)</th><br />
<th width="220" scope="col" colspan="2">Tuesday 13.03<br/>(Users/Devs)</th><br />
<th width="250">Wednesday 14.03<br/>(Devs)</th><br />
<th width="220">Thursday 15.03<br/>(Closing/Devs)</th><br />
</tr><br />
<tr><br />
<td><br/><br/>Morning<br/><br/></td><br />
<td bgcolor= #ffb3b3></td><br />
<br />
<td> Selected presentations:<br/>How to do X with GNU Octave?</td><br />
<td> Developers sessions 1 </td><br />
<br />
<td> Developers sessions 4 </td><br />
<td> [[OctConf 2020]] planning and Closing </td><br />
</tr><br />
<tr><br />
<td><br/><br/>Noon<br/><br/> </td><br />
<td> John's Talk <br/> and Lunch </td><br />
<br />
<td> Plenary talk: users <br/> and Lunch </td><br />
<td> Developers sessions 2 <br/> and Lunch </td><br />
<br />
<td> Developers session 5 <br/> and Lunch </td><br />
<td> Farewell lunch</td><br />
</tr><br />
<tr><br />
<td><br/><br/>Afternoon<br/><br/></td><br />
<td> GSoC students <br/> or Developers session 0 <br/> (plans, views, perspectives)</td><br />
<br />
<td> GNU Octave for SME <br/> (rebrand: Hands on Tutorials) </td><br />
<td> Developers session 3 </td><br />
<br />
<td> Visit to CERN </td><br />
<td bgcolor=#ffb3b3 rowspan=3></td><br />
</tr><br />
<tr><br />
<td><br/><br/>Evening<br/><br/></td><br />
<td> Free Evening </td><br />
<td colspan="2"> Social event </td><br />
<td></td><br />
</tr><br />
</table><br />
<br />
== Accommodation ==<br />
<br />
The conference will take place in the CERN's main site (Meyrin). You can try your luck and search for an accommodation in one of the [http://smb-dep.web.cern.ch/en/CERN_Housing CERN Hostels].<br />
<br />
Should the CERN hostels be full, or should you prefer to stay in Geneva, we advise you to consult your favourite on-line booking portal (www.booking.com, www.tripadvisor.com, www.trivago.com, www.expedia.com etc.) and to contact the hotel directly in order to identify the lowest tariff available for CERN users and collaborators (preferential tariffs may apply in some cases).<br />
<br />
Hotels in the vicinity of "Gare Cornavin" (Geneva's main railway station), or along "Route de Meyrin", are particularly recommended. Tram number 18 links Gare Cornavin to CERN in 20' (see [http://www.tpg.ch/ timetable on the TPG's webpage]). <br />
<br />
Notice that, by staying in hotel, youth hostel or at a campsite, you are entitled to receive a personal and non transferable Geneva Transport Card for free, which will allow you to use the whole public transportation system of Geneva for the length of your stay for free. This includes buses, trams, trains, and yellow taxi-boats - Mouettes. Just ask for it upon arrival on the reception.<br />
<br />
=== Travelling ===<br />
Please read the information in the [http://visit.cern/exhibitions/how-get-cern CERN instructions].<br />
<br />
== Previous OctConf ==<br />
[[OctConf 2018]]<br />
<br />
== Next OctConf ==<br />
[[OctConf 2020]]<br />
<br />
[[Category:OctConf]]<br />
[[Category:2019]]</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=OctConf_2019&diff=10751OctConf 20192018-03-14T23:15:05Z<p>KaKiLa: /* Schedule */</p>
<hr />
<div>== Meeting ==<br />
<br />
We are happy to announce the upcoming Octave Conference 2019 to be held at [http://home.cern CERN], near Geneva, Switzerland, from March 12th until March 15th. <br />
<br />
The Local Organising Committee is happy and proud that CERN will host this event for at least two reasons: <br />
* Octave is a fundamental tool of analysis and research for hundreds of CERN scientists<br />
* Octave and CERN share and promote the same values of openness, cooperation, diversity, quality and commitment.<br />
<br />
The two-day plus two-half-day event will be an opportunity for sharing experiences, planning the future of Octave and promoting its use among the scientific community and beyond.<br />
<br />
Our [[OctConf_2019#Scientific_committee | scientific committee]] is working out the details of the programme, which will include: a presentation by Octave's creator and main maintainer John W. Eaton in the CERN Main Auditorium (Monday afternoon), several interesting talks about applications of Octave to various scientific domains, code sprints, and a session to promote the open-source supported by public institutions as a model for free and successful development. The call for contributions and abstract will be open soon.<br />
<br />
The key members of the Octave development team will participate in the conference, both from oversea and from Europe. You can find updated information on the programme in this Wiki page and we are filling the [ Indico] timetable.<br />
<br />
== Key info ==<br />
<br />
=== Dates ===<br />
<br />
The conference will take place on Week 11, from March 12th until March 15th 2018.<br />
<br />
=== Location ===<br />
<br />
Octconf 2019 will take place at [http://home.cern/ CERN] (European Center for Nuclear Research).<br />
<br />
=== Registration ===<br />
<br />
The conference fee is 20CHF and registration is required. Please use the CERN conference manager [https://indico.cern.ch/event/626097/ Indico] to register.<br />
<br />
=== Conference activities ===<br />
<br />
The conference will be based around workshops, unconference, and code sprints, with a plenary speaker on the first three days.<br />
<br />
==== Abstract submission ====<br />
<br />
During the first day we will have Octave users presenting their applications<br />
<br />
These applications should answer the questions "Ho to do X in GNU Octave?"<br />
<br />
Applications will be reviewed and selected<br />
<br />
Applications will be published in the open access digital conference proceedings<br />
<br />
'''put this in anther page'''<br />
* Submission guidelines<br />
<br />
: Use this [YOURFULLNAME_dynamic_submission_template.m template] to submit and application<br />
<br />
: Send your submission to (e-mail)<br />
<br />
: check your application before submission using (code to check submission)<br />
<br />
: Submission maximum length?<br />
<br />
== Committees ==<br />
=== Scientific committee ===<br />
'''Duties''': Recruit invited speakers, finalize the programme schedule, review and select presentations, review and select posters, chairing during conference. <br />
<br />
'''Members''':<br />
<br />
* [[User:Carandraug|Carnë Draug]]<br />
* [[User:jwe|John W. Eaton]]<br />
* [[User:KaKiLa|Juan Pablo Carbajal]]<br />
<br />
Use the [mailto:maintainers@octave.org maintainers mailing list] to communicate with these people.<br />
<br />
=== Hosting committtee ===<br />
'''Duties''': Arrange and reserve rooms, catering, social event, and other logistics for the conference.<br />
<br />
'''Members''':<br />
<br />
* Andrea Latina<br />
* John Evans<br />
* Melissa Gaillard<br />
<br />
== Schedule ==<br />
<br />
<table class="tg" border="1" width="800" style="text-align: center"><br />
<tr><br />
<th width="110">Time</th><br />
<th width="220">Monday 12.03<br/>(Opening/Users/Devs)</th><br />
<th width="220" scope="col" colspan="2">Tuesday 13.03<br/>(Users/Devs)</th><br />
<th width="250">Wednesday 14.03<br/>(Devs)</th><br />
<th width="220">Thursday 15.03<br/>(Closing/Devs)</th><br />
</tr><br />
<tr><br />
<td><br/><br/>Morning<br/><br/></td><br />
<td bgcolor= #ffb3b3></td><br />
<br />
<td> Selected presentations:<br/>How to do X with GNU Octave?</td><br />
<td> Developers sessions 1 </td><br />
<br />
<td> Developers sessions 4 </td><br />
<td> [[OctConf 2020]] planning and Closing </td><br />
</tr><br />
<tr><br />
<td><br/><br/>Noon<br/><br/> </td><br />
<td> John's Talk <br/> and Lunch </td><br />
<br />
<td> Plenary talk: users <br/> and Lunch </td><br />
<td> Developers sessions 2 <br/> and Lunch </td><br />
<br />
<td> Developers session 5 <br/> and Lunch </td><br />
<td> Farewell lunch</td><br />
</tr><br />
<tr><br />
<td><br/><br/>Afternoon<br/><br/></td><br />
<td> GSoC students <br/> or Developers session 0 <br/> (plans, views, perspectives)</td><br />
<br />
<td> GNU Octave for SME <br/> (rebrand: Hands on Tutorials) </td><br />
<td> Developers session 3 </td><br />
<br />
<td> Visit to CERN </td><br />
<td bgcolor=#ffb3b3 rowspan=3></td><br />
</tr><br />
<tr><br />
<td><br/><br/>Evening<br/><br/></td><br />
<td> Free Evening </td><br />
<td colspan="2"> Social event </td><br />
<td></td><br />
</tr><br />
</table><br />
<br />
== Accommodation ==<br />
<br />
The conference will take place in the CERN's main site (Meyrin). You can try your luck and search for an accommodation in one of the [http://smb-dep.web.cern.ch/en/CERN_Housing CERN Hostels].<br />
<br />
Should the CERN hostels be full, or should you prefer to stay in Geneva, we advise you to consult your favourite on-line booking portal (www.booking.com, www.tripadvisor.com, www.trivago.com, www.expedia.com etc.) and to contact the hotel directly in order to identify the lowest tariff available for CERN users and collaborators (preferential tariffs may apply in some cases).<br />
<br />
Hotels in the vicinity of "Gare Cornavin" (Geneva's main railway station), or along "Route de Meyrin", are particularly recommended. Tram number 18 links Gare Cornavin to CERN in 20' (see [http://www.tpg.ch/ timetable on the TPG's webpage]). <br />
<br />
Notice that, by staying in hotel, youth hostel or at a campsite, you are entitled to receive a personal and non transferable Geneva Transport Card for free, which will allow you to use the whole public transportation system of Geneva for the length of your stay for free. This includes buses, trams, trains, and yellow taxi-boats - Mouettes. Just ask for it upon arrival on the reception.<br />
<br />
=== Travelling ===<br />
Please read the information in the [http://visit.cern/exhibitions/how-get-cern CERN instructions].<br />
<br />
== Previous OctConf ==<br />
[[OctConf 2018]]<br />
<br />
== Next OctConf ==<br />
[[OctConf 2020]]<br />
<br />
[[Category:OctConf]]<br />
[[Category:2019]]</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=OctConf_2019&diff=10733OctConf 20192018-03-14T10:14:16Z<p>KaKiLa: /* Style */ submission guidelines</p>
<hr />
<div>== Meeting ==<br />
<br />
We are happy to announce the upcoming Octave Conference 2019 to be held at [http://home.cern CERN], near Geneva, Switzerland, from March 12th until March 15th. <br />
<br />
The Local Organising Committee is happy and proud that CERN will host this event for at least two reasons: <br />
* Octave is a fundamental tool of analysis and research for hundreds of CERN scientists<br />
* Octave and CERN share and promote the same values of openness, cooperation, diversity, quality and commitment.<br />
<br />
The two-day plus two-half-day event will be an opportunity for sharing experiences, planning the future of Octave and promoting its use among the scientific community and beyond.<br />
<br />
Our [[OctConf_2019#Scientific_committee | scientific committee]] is working out the details of the programme, which will include: a presentation by Octave's creator and main maintainer John W. Eaton in the CERN Main Auditorium (Monday afternoon), several interesting talks about applications of Octave to various scientific domains, code sprints, and a session to promote the open-source supported by public institutions as a model for free and successful development. The call for contributions and abstract will be open soon.<br />
<br />
The key members of the Octave development team will participate in the conference, both from oversea and from Europe. You can find updated information on the programme in this Wiki page and we are filling the [ Indico] timetable.<br />
<br />
== Key info ==<br />
<br />
=== Dates ===<br />
<br />
The conference will take place on Week 11, from March 12th until March 15th 2018.<br />
<br />
=== Location ===<br />
<br />
Octconf 2019 will take place at [http://home.cern/ CERN] (European Center for Nuclear Research).<br />
<br />
=== Registration ===<br />
<br />
The conference fee is 20CHF and registration is required. Please use the CERN conference manager [https://indico.cern.ch/event/626097/ Indico] to register.<br />
<br />
=== Conference activities ===<br />
<br />
The conference will be based around workshops, unconference, and code sprints, with a plenary speaker on the first three days.<br />
<br />
==== Abstract submission ====<br />
<br />
During the first day we will have Octave users presenting their applications<br />
<br />
These applications should answer the questions "Ho to do X in GNU Octave?"<br />
<br />
Applications will be reviewed and selected<br />
<br />
Applications will be published in the open access digital conference proceedings<br />
<br />
'''put this in anther page'''<br />
* Submission guidelines<br />
<br />
: Use this [YOURFULLNAME_dynamic_submission_template.m template] to submit and application<br />
<br />
: Send your submission to (e-mail)<br />
<br />
: check your application before submission using (code to check submission)<br />
<br />
: Submission maximum length?<br />
<br />
== Committees ==<br />
=== Scientific committee ===<br />
'''Duties''': Recruit invited speakers, finalize the programme schedule, review and select presentations, review and select posters, chairing during conference. <br />
<br />
'''Members''':<br />
<br />
* [[User:Carandraug|Carnë Draug]]<br />
* [[User:jwe|John W. Eaton]]<br />
* [[User:KaKiLa|Juan Pablo Carbajal]]<br />
<br />
Use the [mailto:maintainers@octave.org maintainers mailing list] to communicate with these people.<br />
<br />
=== Hosting committtee ===<br />
'''Duties''': Arrange and reserve rooms, catering, social event, and other logistics for the conference.<br />
<br />
'''Members''':<br />
<br />
* Andrea Latina<br />
* John Evans<br />
* Melissa Gaillard<br />
<br />
== Schedule ==<br />
<br />
<table class="tg" border="1" width="800" style="text-align: center"><br />
<tr><br />
<th width="110">Time</th><br />
<th width="220">Monday 12.03<br/>(Opening)</th><br />
<th width="220">Tuesday 13.03<br/>(Tutorials)</th><br />
<th width="250">Wednesday 14.03<br/>(Unconference)</th><br />
<th width="220">Thursday 15.03<br/>(Closing)</th><br />
</tr><br />
<tr><br />
<td><br/><br/>Morning<br/><br/></td><br />
<td bgcolor= #ffb3b3></td><br />
<td style="text-align: left"> Hands-on activities:<br />
<ul><br />
<li>Merge [[Summer_of_Code#GSoC_2017|GSoC_2017]] project [https://gsocspecfun.blogspot.de/ Make Specfuns special again] by Michele Ginesi</li><br />
</ul><br />
</td><br />
<td> </td><br />
<td> [[OctConf 2020]] planning and Closing </td><br />
</tr><br />
<tr><br />
<td><br/><br/>Noon<br/><br/> </td><br />
<td> First meeting <br/> and Lunch </td><br />
<td> Plenary talk <br/> and Lunch </td><br />
<td> Plenary talk <br/> and Lunch </td><br />
<td> Farewell lunch</td><br />
</tr><br />
<tr><br />
<td><br/><br/>Afternoon<br/><br/></td><br />
<td style="text-align: left"> Talks:<br />
<ul><br />
<li> Jwe: "What is Octave 2019?" </li><br />
</ul> <br />
</td><br />
<td> Hands on Tutorials </td><br />
<td> Visit to CERN </td><br />
<td bgcolor=#ffb3b3 rowspan=3></td><br />
</tr><br />
<tr><br />
<td><br/><br/>Evening<br/><br/></td><br />
<td> </td><br />
<td> Social event </td><br />
<td></td><br />
</tr><br />
</table><br />
<br />
== Accommodation ==<br />
<br />
The conference will take place in the CERN's main site (Meyrin). You can try your luck and search for an accommodation in one of the [http://smb-dep.web.cern.ch/en/CERN_Housing CERN Hostels].<br />
<br />
Should the CERN hostels be full, or should you prefer to stay in Geneva, we advise you to consult your favourite on-line booking portal (www.booking.com, www.tripadvisor.com, www.trivago.com, www.expedia.com etc.) and to contact the hotel directly in order to identify the lowest tariff available for CERN users and collaborators (preferential tariffs may apply in some cases).<br />
<br />
Hotels in the vicinity of "Gare Cornavin" (Geneva's main railway station), or along "Route de Meyrin", are particularly recommended. Tram number 18 links Gare Cornavin to CERN in 20' (see [http://www.tpg.ch/ timetable on the TPG's webpage]). <br />
<br />
Notice that, by staying in hotel, youth hostel or at a campsite, you are entitled to receive a personal and non transferable Geneva Transport Card for free, which will allow you to use the whole public transportation system of Geneva for the length of your stay for free. This includes buses, trams, trains, and yellow taxi-boats - Mouettes. Just ask for it upon arrival on the reception.<br />
<br />
=== Travelling ===<br />
Please read the information in the [http://visit.cern/exhibitions/how-get-cern CERN instructions].<br />
<br />
== Previous OctConf ==<br />
[[OctConf 2018]]<br />
<br />
== Next OctConf ==<br />
[[OctConf 2020]]<br />
<br />
[[Category:OctConf]]<br />
[[Category:2019]]</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=OctConf_2019&diff=10732OctConf 20192018-03-14T10:07:38Z<p>KaKiLa: Created page with "== Meeting == We are happy to announce the upcoming Octave Conference 2019 to be held at [http://home.cern CERN], near Geneva, Switzerland, from March 12th until March 15th...."</p>
<hr />
<div>== Meeting ==<br />
<br />
We are happy to announce the upcoming Octave Conference 2019 to be held at [http://home.cern CERN], near Geneva, Switzerland, from March 12th until March 15th. <br />
<br />
The Local Organising Committee is happy and proud that CERN will host this event for at least two reasons: <br />
* Octave is a fundamental tool of analysis and research for hundreds of CERN scientists<br />
* Octave and CERN share and promote the same values of openness, cooperation, diversity, quality and commitment.<br />
<br />
The two-day plus two-half-day event will be an opportunity for sharing experiences, planning the future of Octave and promoting its use among the scientific community and beyond.<br />
<br />
Our [[OctConf_2019#Scientific_committee | scientific committee]] is working out the details of the programme, which will include: a presentation by Octave's creator and main maintainer John W. Eaton in the CERN Main Auditorium (Monday afternoon), several interesting talks about applications of Octave to various scientific domains, code sprints, and a session to promote the open-source supported by public institutions as a model for free and successful development. The call for contributions and abstract will be open soon.<br />
<br />
The key members of the Octave development team will participate in the conference, both from oversea and from Europe. You can find updated information on the programme in this Wiki page and we are filling the [ Indico] timetable.<br />
<br />
== Key info ==<br />
<br />
=== Dates ===<br />
<br />
The conference will take place on Week 11, from March 12th until March 15th 2018.<br />
<br />
=== Location ===<br />
<br />
Octconf 2019 will take place at [http://home.cern/ CERN] (European Center for Nuclear Research).<br />
<br />
=== Registration ===<br />
<br />
The conference fee is 20CHF and registration is required. Please use the CERN conference manager [https://indico.cern.ch/event/626097/ Indico] to register.<br />
<br />
=== Style ===<br />
<br />
The conference will be based around workshops, unconference, and code sprints, with a plenary speaker on the first three days.<br />
<br />
== Committees ==<br />
=== Scientific committee ===<br />
'''Duties''': Recruit invited speakers, finalize the programme schedule, review and select presentations, review and select posters, chairing during conference. <br />
<br />
'''Members''':<br />
<br />
* [[User:Carandraug|Carnë Draug]]<br />
* [[User:jwe|John W. Eaton]]<br />
* [[User:KaKiLa|Juan Pablo Carbajal]]<br />
<br />
Use the [mailto:maintainers@octave.org maintainers mailing list] to communicate with these people.<br />
<br />
=== Hosting committtee ===<br />
'''Duties''': Arrange and reserve rooms, catering, social event, and other logistics for the conference.<br />
<br />
'''Members''':<br />
<br />
* Andrea Latina<br />
* John Evans<br />
* Melissa Gaillard<br />
<br />
== Schedule ==<br />
<br />
<table class="tg" border="1" width="800" style="text-align: center"><br />
<tr><br />
<th width="110">Time</th><br />
<th width="220">Monday 12.03<br/>(Opening)</th><br />
<th width="220">Tuesday 13.03<br/>(Tutorials)</th><br />
<th width="250">Wednesday 14.03<br/>(Unconference)</th><br />
<th width="220">Thursday 15.03<br/>(Closing)</th><br />
</tr><br />
<tr><br />
<td><br/><br/>Morning<br/><br/></td><br />
<td bgcolor= #ffb3b3></td><br />
<td style="text-align: left"> Hands-on activities:<br />
<ul><br />
<li>Merge [[Summer_of_Code#GSoC_2017|GSoC_2017]] project [https://gsocspecfun.blogspot.de/ Make Specfuns special again] by Michele Ginesi</li><br />
</ul><br />
</td><br />
<td> </td><br />
<td> [[OctConf 2020]] planning and Closing </td><br />
</tr><br />
<tr><br />
<td><br/><br/>Noon<br/><br/> </td><br />
<td> First meeting <br/> and Lunch </td><br />
<td> Plenary talk <br/> and Lunch </td><br />
<td> Plenary talk <br/> and Lunch </td><br />
<td> Farewell lunch</td><br />
</tr><br />
<tr><br />
<td><br/><br/>Afternoon<br/><br/></td><br />
<td style="text-align: left"> Talks:<br />
<ul><br />
<li> Jwe: "What is Octave 2019?" </li><br />
</ul> <br />
</td><br />
<td> Hands on Tutorials </td><br />
<td> Visit to CERN </td><br />
<td bgcolor=#ffb3b3 rowspan=3></td><br />
</tr><br />
<tr><br />
<td><br/><br/>Evening<br/><br/></td><br />
<td> </td><br />
<td> Social event </td><br />
<td></td><br />
</tr><br />
</table><br />
<br />
== Accommodation ==<br />
<br />
The conference will take place in the CERN's main site (Meyrin). You can try your luck and search for an accommodation in one of the [http://smb-dep.web.cern.ch/en/CERN_Housing CERN Hostels].<br />
<br />
Should the CERN hostels be full, or should you prefer to stay in Geneva, we advise you to consult your favourite on-line booking portal (www.booking.com, www.tripadvisor.com, www.trivago.com, www.expedia.com etc.) and to contact the hotel directly in order to identify the lowest tariff available for CERN users and collaborators (preferential tariffs may apply in some cases).<br />
<br />
Hotels in the vicinity of "Gare Cornavin" (Geneva's main railway station), or along "Route de Meyrin", are particularly recommended. Tram number 18 links Gare Cornavin to CERN in 20' (see [http://www.tpg.ch/ timetable on the TPG's webpage]). <br />
<br />
Notice that, by staying in hotel, youth hostel or at a campsite, you are entitled to receive a personal and non transferable Geneva Transport Card for free, which will allow you to use the whole public transportation system of Geneva for the length of your stay for free. This includes buses, trams, trains, and yellow taxi-boats - Mouettes. Just ask for it upon arrival on the reception.<br />
<br />
=== Travelling ===<br />
Please read the information in the [http://visit.cern/exhibitions/how-get-cern CERN instructions].<br />
<br />
== Previous OctConf ==<br />
[[OctConf 2018]]<br />
<br />
== Next OctConf ==<br />
[[OctConf 2020]]<br />
<br />
[[Category:OctConf]]<br />
[[Category:2019]]</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=OctConf_2018_Notes&diff=10723OctConf 2018 Notes2018-03-13T16:23:43Z<p>KaKiLa: /* Talking */</p>
<hr />
<div>We will be taking notes as OctConf is going on. Keep an eye on this page.<br />
<br />
== Monday ==<br />
<br />
=== Talking ===<br />
<br />
* jwe presented state of Octave development<br />
* Michele Ginesi presented his Octave work on special functions<br />
<br />
; list topics for discussion and work for this OctConf<br />
: this very page<br />
<br />
; frequency of Octave releases<br />
: a new release from stable this OctConf. A new release from default in 4 weeks time. From now on, new releases every year in January with freeze before the Christmas holidays.<br />
<br />
; implementing String class<br />
: Matlab added double quote strings, which instantiate objects of their new String class. This behaves different from our double quote strings because it does not escape special characters. Being Matlab compatible will mean being backwards incompatible. Decided to first implement the String class and make the Octave internals handle it. Then we will worry about having the double quotes create them and decide about the escaping of characters.<br />
<br />
; scope of functions in script files<br />
: Matlab scripts can now include function definitions. However, these behave different from Octave scripts in two ways:<br />
:# functions defined in script files are locally scoped and will not be available after running the script<br />
:# functions in the script file can de defined in the script after the statements that use them while Octave requires them to be defined first.<br />
: jwe says that this behaviour should be simple to implement but will be backwards incompatible. Solution is to have the run function change and behave like Matlab does. Currently, the function source is the same as run. The function source will keep the old behaviour and can be used to source a file to import functions definitions into the global scope, as if the sourced file had been ran in the interpreter.<br />
<br />
=== Doing ===<br />
<br />
; email maintainers mailing list with conclusions<br />
: done by carandraug<br />
<br />
<br />
== Tuesday ==<br />
<br />
=== Talking ===<br />
<br />
; future GSoC students<br />
: we have questioned the value of this. Most students don't stay after GSoC and most projects do not get merged into core and the packages. Even if it costs us no money, it costs us a lot of time since most students need a lot of hand holding, and it's the whole community that is actually mentoring. Ignoring the students is also not nice to them. Nir is the person responsible and he's not attending this year so we are not deciding anything. However, we need to ensure that students know much, and do a better job at filtering out clueless students.<br />
<br />
; refactoring (threading) / developer docs / symbol naming / liboctave interface stability and usability<br />
: These are all very related issues. We have some issues threading and those are mainly because we don't know how to do things properly. Some of us have learned how since but we don't have that knowledge shared and so it's a bit of lack of documentation for ourselves. We decided that changes to Octave internals, the C++ stuff, will need to include doxygen docs for the things that it changes. We have notes on how to write doxygen docs on our [[C++ style guide#Doxygen|C++ style guide]].<br />
: We also have builds of doxygen docs online, including development version http://octave.org/doxygen/ but they are not up to date. jwe will set his build bots to update the doxygen docs daily.<br />
: We also discussed making available builds of the default branch for users. This would be nice because we get users reporting bugs earlier. However, we are afraid that people will not understand that the latest version is a work in progress, not the latest usable version. So we decided against making such builds available.<br />
<br />
; test coverage<br />
; measurements of performance<br />
<br />
; Octave Forge community<br />
: To increase the pool of high-level users we need to reduce even more the burden to install and distribute packages independently. To do this we bring back the idea of allowing `pkg` to download and install directly from a url to a `.zip` file or `.tar.gz` file, e.g. `pkg install 'https://myrepo.org/mypackage.zip'`<br />
: There will be no checks (nor quality standard) on these packages and the user should be clearly warned about the insecurity (y/n answer?).<br />
:: * Should `pkg update` also work for these packages? Maybe no. Just re-run the install command.<br />
:: * We need to provide guidelines, recommendations and tools for people trying to distribute their packages. We are doing something in this direction, but we need a little boost here: https://octave.sourceforge.io/templates/Makefile, https://sourceforge.net/p/octave/example-package/ci/default/tree/<br />
<br />
; packages into Octave core<br />
<br />
=== Doing ===<br />
<br />
; merging of previous GSoC projects<br />
: Rik merged Ginesi's special functions and Carlo's worked on merging ode45<br />
; polygon reconstruction algorithm<br />
: Rik and Pantxo worked on this<br />
; new release<br />
: jwe been preparing for wednesday's release<br />
; dinner in town<br />
; email maintainers mailing list with conclusions<br />
<br />
== Wednesday ==<br />
<br />
=== Talking ===<br />
<br />
; review our review of code contributions<br />
; build system issues<br />
<br />
=== Doing ===<br />
<br />
; new Octave 4.2.2 release<br />
; new release of image package<br />
; more tests to increase code coverage<br />
; CERN visit<br />
; email maintainers mailing list with conclusions<br />
<br />
<br />
== Thursday ==<br />
<br />
=== Talking ===<br />
<br />
; OctConf 2019<br />
; pending discussions and work<br />
<br />
=== Doing ===<br />
<br />
; email maintainers mailing list with conclusions</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=Summer_of_Code_-_Getting_Started&diff=10593Summer of Code - Getting Started2018-01-03T07:24:45Z<p>KaKiLa: /* FullSWOF overland flow simulator */</p>
<hr />
<div>The following is distilled from the [[Projects]] page for the benefit of potential [https://summerofcode.withgoogle.com Google] and [http://sophia.estec.esa.int/socis ESA] Summer of Code (SoC) students. Although students are welcome to attempt any of the projects in that page or any of their own choosing, here we offer some suggestions on what good student projects might be.<br />
<br />
= Steps Toward a Successful Application =<br />
<br />
== Help Us Get To Know You == <br />
*: If you aren't communicating with us before the application is due, your application will not be accepted.<br />
*:* '''Join the [https://lists.gnu.org/mailman/listinfo/octave-maintainers maintainers mailing list]''' or read the archives and see what topics we discuss and how the developers interact with each other.<br />
*:* '''Hang out in our [https://webchat.freenode.net/?channels=#octave IRC channel]'''. Ask questions, answer questions from users, show us that you are motivated, and well-prepared. There will be more applicants than we can effectively mentor, so do ask for feedback on your public application to increase the strength of your proposal!<br />
* '''Do not wait for us to tell you what to do'''<br />
*: You should be doing something that interests you, and should not need us to tell you what to do. Similarly, you shouldn't ask us what to do either.<br />
*:* When you email the list and mentors, do not write it to say on what project you're interested. Be specific about your questions and clear on the email subject. For example, do not write an email with the subject "GSoC student interested in the ND images projects". Such email is likely be ignored. Instead, show you are already working on the topic, and email "Problem implementing morphological operators with bitpacked ND images".<br />
*:* It is good to ask advice on how to solve something you can't but you must show some work done. Remember, we are mentors and not your boss. Read [http://www.catb.org/esr/faqs/smart-questions.html How to ask questions the smart way]:<br />
*:*: <blockquote cite="http://www.catb.org/esr/faqs/smart-questions.html">''Prepare your question. Think it through. Hasty-sounding questions get hasty answers, or none at all. The more you do to demonstrate that having put thought and effort into solving your problem before seeking help, the more likely you are to actually get help.''</blockquote><br />
*:* It can be difficult at the beginning to think on something to do. This is nature of free and open source software development. You will need to break the mental barrier that prevents you from thinking on what can be done. Once you do that, you will have no lack of ideas for what to do next.<br />
*:* Use Octave. Eventually you will come accross somethings that does not work the way you like. Fix that. Or you will come accross a missing function. Implement it. It may be a difficult problem (they usually are) but while solving that problem you may find other missing functions (). Implemenent and contribute those to Octave.<br />
*:* Take a look at the [[Short projects]] for something that may be simple to start with.<br />
== Find Something That Interests You == <br />
*: It's '''critical''' that you '''find a project that excites you'''. You'll be spending most of the summer working on it (we expect you to treat the SoC as a full-time job).<br />
*: Don't just tell us how interested you are, show us that you're willing and able to '''contribute''' to Octave. You can do that by [https://savannah.gnu.org/bugs/?group=octave fixing a few bugs] or [http://savannah.gnu.org/patch/?group=octave submitting patches] well before the deadline, in addition to regularly interacting with Octave maintainers and users on the mailing list and IRC. Our experience shows us that successful SoC students demonstrate their interest early and often.<br />
== Prepare Your Proposal With Us ==<br />
*: By working with us to prepare your proposal, you'll be getting to know us and showing us how you approach problems. The best place for this is your Wiki user page and the [https://webchat.freenode.net/?channels=#octave IRC channel].<br />
== Complete Your Application ==<br />
*: Fill out our '''''public''''' application template.<br />
*:* This is best done by '''[[Special:CreateAccount|creating an account at this wiki]]''', and copying the '''[[Template:Student_application_template_public|template]]''' from its page.<br />
*:* You really only need to copy and answer the '''''public''''' part there, there is no need to showcase everything else to everybody reading your user page!<br />
*: Fill out our '''''private''''' application template.<br />
*:* This is best done by copying the '''[[Template:Student_application_template_private|template]]''' from its page and '''adding the required information to your application at Google (melange)''' or at '''ESA'''.<br><br />
*:* Only the organization admin and the possible mentors will see this data. You can still edit it after submitting until the deadline!<br />
<br />
== Things You'll be Expected to Know or Quickly Learn On Your Own ==<br />
<br />
Octave is mostly written in C++ and its own scripting language that is mostly compatible with Matlab. There are bits and pieces of Fortran, Perl, C, awk, and Unix shell scripts here and there. In addition to being familiar with C++ and Octave's scripting language, successful applicants will be familiar with or able to quickly learn about Octave's infrastructure. You can't spend the whole summer learning how to build Octave or prepare a changeset and still successfully complete your project.<br />
<br />
* '''The Build System'''<br />
*: [http://en.wikipedia.org/wiki/GNU_build_system The GNU build system] is used to build Octave.<br />
*: While you generally don't need to understand too much unless you actually want to change how Octave is built, you should be able to understand enough to get a general idea of how to build Octave.<br />
*: If you've ever done a {{Codeline|configure && make && make install}} series of commands, you have already used the GNU build system.<br />
*: '''You must demonstrate that you are able to build the development version of Octave from sources before the application deadline.''' You will be able to find instructions how to it on this wiki, and the manual. Linux is arguably the easiest system to work on.<br />
*:* [[Building]]<br />
*:* [https://www.gnu.org/software/octave/doc/interpreter/Installation.html Octave Manual on Installing Octave]<br />
* '''The Version Control System'''<br />
*: We use [http://mercurial.selenic.com/ Mercurial] (abbreviated hg).<br />
*: Mercurial is the [http://en.wikipedia.org/wiki/Distributed_Version_Control_System distributed version control system] (DVCS) we use for managing our source code. You should have some basic understanding of how a DVCS works, but hg is pretty easy to pick up, especially if you already know a VCS like git or svn.<br />
* '''The Procedure for Contributing Changesets'''<br />
*: You will be expected to follow the same procedures as other contributors and core developers.<br />
*: You will be helping current and future Octave developers by using our standard style for changes, commit messages, and so on. You should also read the same [https://www.gnu.org/software/octave/doc/interpreter/Contributing-Guidelines.html contribution] [http://hg.savannah.gnu.org/hgweb/octave/file/tip/etc/HACKING guidelines] we have for everyone.<br />
*: [[Hg_instructions_for_mentors#Mercurial_Tips_for_SoC_students | This page]] describes the procedures students are expected to use to publicly display their progress in a public mercurial repo during their work.<br />
* '''The Maintainers Mailing List'''<br />
*: We primarily use [https://lists.gnu.org/mailman/listinfo/octave-maintainers mailing lists] for communication among developers.<br />
*: The mailing list is used most often for discussions about non-trivial changes to Octave, or for setting the direction of development.<br />
*: You should follow basic mailing list etiquette. For us, this mostly means "do not [https://en.wikipedia.org/wiki/Posting_style#Top-posting top post]".<br />
* '''The IRC Channel'''<br />
*: We also have [http://webchat.freenode.net?channels=octave the #octave IRC channel in Freenode].<br />
*: You should be familiar with the IRC channel. It's very helpful for new contributors (you) to get immediate feedback on ideas and code.<br />
*: Unless your primary mentor has a strong preference for some other method of communication, the IRC channel will likely be your primary means of communicating with your mentor and Octave developers.<br />
* '''The Octave Forge Project'''<br />
*: [http://octave.sf.net Octave-Forge] is a collection of contributed packages that enhance the capabilities of core Octave. They are somewhat analogous to Matlab's toolboxes.<br />
* '''Related Skills'''<br />
*: In addition, you probably should know '''some''' mathematics, engineering, experimental science, or something of the sort.<br />
*: If so, you probably have already been exposed to the kinds of problems that Octave is used for.<br />
<br />
== Criteria by which applications are judged ==<br />
<br />
These might vary somewhat depending on the mentors and coordinators for a particular Summer of Code, but typically the main factors considered would be:<br />
<br />
* '''Applicant has demonstrated an ability to make substantial modifications to Octave'''<br />
*: The most important thing is that you've contributed some interesting code samples to judge you by. It's OK during the application period to ask for help on how to format these code samples, which normally are Mercurial patches.<br />
<br />
* '''Applicant shows understanding of topic'''<br />
*: Your application should make it clear that you're reasonably well versed in the subject area and won't need all summer just to read up on it.<br />
<br />
* '''Applicant shows understanding of and interest in Octave development'''<br />
*: The best evidence for this is previous contributions and interactions.<br />
<br />
* '''Well thought out, adequately detailed, realistic project plan'''<br />
*: "I'm good at this, so trust me" isn't enough. You should describe which algorithms you'll use and how you'll integrate with existing Octave code. You should also prepare a full timeline and goals for the midterm and final evaluations.<br />
<br />
= Suggested projects =<br />
<br />
The following projects are broadly grouped by category and probable skills required to tackle each. Remember to check [[Projects]] for more ideas if none of these suit you, and your own ideas are always welcome.<br />
<br />
{{Note|these are suggested projects but you are welcome to propose your own projects provided you find an Octave mentor}}<br />
<br />
== Summary table ==<br />
<br />
{| class="wikitable sortable" style="text-align: center; width:99%"<br />
|-<br />
!Title<br />
!Mentor<br />
!co-Mentors<br />
!Class<br />
!New?<br />
!Difficulty<br />
!Last active<br />
|-<br />
! <br />!! !! !! !! !! !!<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Make_specfuns_special_again | Make specfuns special again]] || Marco Caliari || Colin Macdonald || Numerical || Yes || Medium || GSoC 2017<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#ode15s_:_Matlab_Compatible_DAE_solver | ode15{i,s} : Matlab Compatible DAE solvers]] || Carlo de Falco || Francesco Faccio, Marco Caliari, Jacopo Corno, Sebastian Schöps || Numerical || No || Medium || GSoC 2016<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Improve_logm.2C_sqrtm.2C_funm | Improve logm, sqrtm, funm]] || Jordi Gutiérrez Hermoso || Marco Caliari, Mudit Sharma || Numerical || [https://github.com/RickOne16/matrix No] || Hard || Independent devs 2016<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Improve_iterative_methods_for_sparse_linear_systems | Improve iterative methods for sparse linear systems]] || Marco Caliari || Carlo de Falco || Numerical || No || Hard || SOCIS 2016<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Neural Networks package: Convolutional Neural Networks | Neural Networks package: Convolutional Neural Networks]] || [[User:Francesco Faccio|Francesco Faccio]] || Ankit || Octave Forge || Yes || Hard|| Never<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#EPA_hydrology_software_suite | EPA hydrology software suite]] || [[User:KaKiLa| KaKiLa]] || ? || Octave Forge || Yes || Medium || Never<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#FullSWOF overland flow simulator | FullSWOF overland flow simulator]] || [[User:KaKiLa| KaKiLa]] || ? || Octave Forge || Yes || Medium || Never<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#TISEAN_package | TISEAN: Nonlinear Time Series Analysis]] || [[User:KaKiLa|KaKiLa]] || ? || Octave Forge || [[TISEAN_package | No]] || Medium || GSoC 2015<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Octave_Package_management | Octave Package management]] || Sebastian Schöps || [[User:KaKiLa|KaKiLa]], Carnë Draug, Carlo de Falco || Infrastructure || Yes || Medium || Never<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Symbolic_package | Symbolic package]] || Colin B. Macdonald || Mike Miller, Abhinav Tripathi || Octave Forge || [https://github.com/cbm755/octsympy Octsympy] || Medium || GSoC 2016<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Interval_package | Interval package]] || [[User:oheim|Oliver Heimlich]] || [[User:Siko1056|Kai T. Ohlhus]] || Octave Forge, Numerical || Yes || Medium || Never<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Using_Python_within_Octave | Pytave project]] || Mike Miller || Colin B. Macdonald, Abhinav Tripathi || Infrastructure || No || Medium || some in GSoC 2016<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Jupyter_Integration | Jupyter integration]] || Mike Miller || Colin B. Macdonald || Infrastructure || Yes || Medium || Never<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Chebfun_in_Octave | Chebfun in Octave]] || Colin B. Macdonald || [[User:KaKiLa|KaKiLa]], needs core-Octave mentor/comentor || Infrastructure, Numerical || Yes || Hard || Never<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Octave_code_sharing | Octave code sharing]] || [[User:Siko1056|Kai T. Ohlhus]] || ? || Infrastructure || Yes || Medium || Never<br />
|}<br />
<br />
== Numerical ==<br />
<br />
These projects involve implementing certain mathematical functions, primarily in core Octave.<br />
<br />
=== Make specfuns special again ===<br />
<br />
Traditionally, problem solving environments like Octave provide simple interfaces to numerical linear algebra, special function evaluation, root finding, and other tools. Special functions (such as Bessel functions, exponential integrals, LambertW, etc) are expected by users to "just work". But many of Octave's special functions could be improved to improve their numerical accuracy. Generally a user might expect these to be accurate to full 15 digits. Software testing is important to Octave; this project would improve the tests of many special functions, in particular by comparing the output with slow-but-accurate symbolic computations.<br />
<br />
State: some bugs include [https://savannah.gnu.org/bugs/?48307 #48307] (sinc), [https://savannah.gnu.org/bugs/?47738 #47738] (expint), [https://savannah.gnu.org/bugs/?47800 #47800] (gammainc), [https://savannah.gnu.org/bugs/?48036 #48036] (gammaincinv) [https://savannah.gnu.org/bugs/index.php?48316 #48316] (besselj) ''TODO: add others?'' The unmaintained specfun pkg had some poor implementations (e.g., divergence for large x, see [https://github.com/cbm755/octsympy/issues/416].). See also the Symbolic functions in `@double`: these probably should have native double implementations.<br />
<br />
* '''Required skills'''<br />
: Octave m-file programming, some familiarity with Approximation Theory (a branch of mathematics).<br />
* '''Difficulty'''<br />
: Medium (mathematics needed, but on the other hand, perhaps little or no C++).<br />
* '''Potential mentors'''<br />
: Marco Caliari, Colin Macdonald, others?<br />
<br />
How to get started: pick a special function, see if it has tests: contribute a patch that adds more tests, e.g., comparing its values to symbolic computations or other highly accurate solutions<br />
<br />
=== ode15{i,s} : Matlab Compatible DAE solvers ===<br />
<br />
An initial implementation of a Matlab compatible ode15{i,s} solver,<br />
based on [http://computation.llnl.gov/projects/sundials SUNDIALS], <br />
was done by Francesco Faccio during<br />
GSOC 2016.<br />
The blog describing the work is [http://gsoc2016ode15s.blogspot.it/ here].<br />
The resulting code has been pushed into the main Octave repository in the development branch and<br />
consists mainly of the following three files<br />
[http://hg.savannah.gnu.org/hgweb/octave/file/4890b1c4a6bd/libinterp/dldfcn/__ode15__.cc __ode15__.cc],<br />
[http://hg.savannah.gnu.org/hgweb/octave/file/4890b1c4a6bd/scripts/ode/ode15i.m ode15i.m] and<br />
[http://hg.savannah.gnu.org/hgweb/octave/file/4890b1c4a6bd/scripts/ode/ode15s.m ode15s.m].<br />
The list of outsanding tracker tickets concerning this implementation can be found <br />
[https://savannah.gnu.org/search/?Search=Search&words=ode15&type_of_search=bugs&only_group_id=1925&exact=1&max_rows=25#options here]<br />
<br />
Possible useful improvements that could be done in a new project include:<br />
<br />
* Implement a better funtion for selecting consistent initial conditions compatible with Matlab's decic.m. The algorithm to use is described [http://faculty.smu.edu/shampine/cic.pdf here]<br />
<br />
* make ode15{i,s} with datatypes other than double<br />
<br />
* improve interpolation at intermediate time steps.<br />
<br />
* general code profiling and optimization <br />
<br />
Other tasks, not strictly connected to ode15{i,s} but closely related that could be added <br />
to a possible project plan would be improving documentation and tests in odepkg and removing <br />
overlaps with the documentation in core Octave.<br />
<br />
<br />
* '''Required skills'''<br />
: C++; C; familiarity with numerical methods for DAEs; Basic knowledge of makefiles and/or autotools.<br />
* '''Difficulty'''<br />
: Medium.<br />
* '''Potential mentors'''<br />
: Francesco Faccio, Carlo de Falco, Marco Caliari, Jacopo Corno, Sebastian Schöps<br />
<br />
=== Improve logm, sqrtm, funm ===<br />
<br />
The goal here is to implement some missing Matlab functions related to matrix functions like the [http://en.wikipedia.org/wiki/Matrix_exponential matrix exponential]. There is [http://octave.1599824.n4.nabble.com/matrix-functions-td3137935.html a general discussion] of the problem. A good starting point for available algorithms and open-source implementations is Higham and Deadman's [http://eprints.ma.man.ac.uk/2102/01/covered/MIMS_ep2014_8.pdf "A Catalogue of Software for Matrix Functions"].<br />
<br />
* '''Required skills'''<br />
: Read and Write both C++ and Octave code, find and read research papers, research experience in numerical analysis, familiarity with analysis of algorithms.<br />
* '''Difficulty'''<br />
: Difficult.<br />
* '''Potential mentors'''<br />
: Jordi Gutiérrez Hermoso<br />
<br />
=== Improve iterative methods for sparse linear systems ===<br />
<br />
GNU Octave currently has the following Krylov subspace methods for sparse linear systems: pcg (spd matrices) and pcr (Hermitian matrices), bicg,<br />
bicgstab, cgs, gmres, and qmr (general matrices). The description of some of them (pcr, qmr) and their error messages are not aligned. Moreover, they have similar blocks of code (input check for instance) which can be written once and for all in common functions. The first step in this project could be a revision and a synchronization of the codes, starting from the project [http://planet.octave.org/#tag:blogger.com,1999:blog-1297699247151766814.post-8054019978706480250 SOCIS2016], whose latest patch, still to be included, is [https://savannah.gnu.org/patch/?9108 here].<br />
<br />
In Matlab, some additional methods are available: minres and symmlq (symmetric matrices), bicgstabl (general matrices), lsqr (least<br />
squares). The second step in this project could be the implementation of some of these missing functions.<br />
<br />
The reference book is available [www-users.cs.umn.edu/~saad/IterMethBook_2ndEd.pdf here]<br />
<br />
* '''Required skills'''<br />
: numerical linear algebra, m-file programming.<br />
* '''Difficulty'''<br />
: Maybe hard the mathematical part, medium the programming part.<br />
* '''Mentor'''<br />
:<br />
<br />
=== Chebfun in Octave ===<br />
<br />
[https://chebfun.org Chebfun] is a mathematics and software project for "numerical computing with functions". Basically it approximates functions to machine precision accuracy (10<sup>-15</sup>) using piecewise Chebyshev polynomial interpolants. Operations on those functions (arithmetic, derivatives, root-finding, etc) are then overloaded and return new interpolating polynomials, which are themselves proxies for the actual solution.<br />
<br />
Chebfun makes extensive use of classdef classes, and is one of the largest Free Software projects to do so. Unfortunately it currently only works in Matlab. This project seeks to (1) improve Octave's classdef support and (2) tweak Chebfun to work under Octave, for example, removing undocumented classdef features. The final goal is to have at least basic Chebfun features working on Octave. An additional goal would be making "pkg install chebfun.zip" work in Octave.<br />
<br />
This project is important for both technical reasons (to improve Octave's classdef support) and ethical reasons (to allow Chebfun to run without proprietary software).<br />
<br />
* '''Required skills'''<br />
: Octave m-file programming, C++, some familiarity with Approximation Theory (a branch of mathematics).<br />
* '''Difficulty'''<br />
: Medium to Hard (probably requires a deep dive into how Octave supports OO).<br />
* '''Potential mentors'''<br />
: Colin B. Macdonald, [[User:KaKiLa|KaKiLa]], Mike Miller (?), Carnë Draug (?), someone from Chebfun team (?).<br />
<br />
How to get started: learn about Chebfun, browse Octave's bug list for classdef-related bugs, play with other classdef projects (Pytave, https://github.com/cbm755/octsympy/issues/545)<br />
<br />
== Adding functionality to Forge packages ==<br />
<br />
=== Neural Networks package: Convolutional Neural Networks ===<br />
Convolutional Neural Networks (CNNs) have recently become the state-of-the-art for image recognition and are widely used for solving classification and regression problems and for [https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/tutorials/deepdream/deepdream.ipynb image generation]. The goal of the project is to implement a [https://it.mathworks.com/help/nnet/convolutional-neural-networks.html Matlab compatible] CNN toolbox using Google's library [https://www.tensorflow.org/ TensorFlow], which has a Python and C++ interface. As execution environment for the training function, the user will be able to choose between single/multiple CPUs and GPUs.<br />
* '''Required skills'''<br />
: C, C++, Python, m-file scripting, familiarity with Machine Learning algorithms, basic knowledge of Makefiles, experience with parallel computing and distributed systems.<br />
* '''Difficulty'''<br />
: Difficult.<br />
* '''Mentors'''<br />
: [[User:Francesco Faccio|Francesco Faccio]], Ankit<br />
<br />
=== EPA hydrology software suite ===<br />
Create native interfaces to the EPA software suites.<br />
<br />
Starting points<br />
* [https://forja.cica.es/projects/epanet-octave/ epanet-octave].<br />
* [https://github.com/OpenWaterAnalytics/ Open Water Analytics]<br />
<br />
* '''SWMM'''<br />
** [https://www.epa.gov/water-research/storm-water-management-model-swmm Official page]<br />
** Check work done in [https://github.com/water-systems/MatSWMM MatSWMM] [http://digital.csic.es/bitstream/10261/132982/1/MatSWMM.pdf article]<br />
<br />
* '''EPANET'''<br />
** [https://www.epa.gov/water-research/epanet Official page]<br />
<br />
* '''Required skills'''<br />
: m-file scripting, C, C++, API knowledge, file I/O, classdef (optional). <br />
<br />
* '''Difficulty'''<br />
: easy/medium<br />
<br />
* '''Mentor'''<br />
: [[User:KaKiLa|KaKiLa]]<br />
<br />
=== FullSWOF overland flow simulator ===<br />
Create scripting tools for (optional: native interfaces).<br />
<br />
Starting points<br />
* [http://www.univ-orleans.fr/mapmo/soft/FullSWOF/ The FullSWOF Project].<br />
* [https://arxiv.org/abs/1204.3210 FullSWOF: A software for overland flow simulation]<br />
* [https://bitbucket.org/binello7/fswof2d Initial work on Bitbucket]<br />
<br />
* '''Required skills'''<br />
: m-file scripting, C, C++, API knowledge, file I/O, classdef (optional). <br />
<br />
* '''Difficulty'''<br />
: easy/medium<br />
<br />
* '''Mentor'''<br />
: [[User:KaKiLa|KaKiLa]]<br />
<br />
=== TISEAN package ===<br />
<br />
[http://www.mpipks-dresden.mpg.de/~tisean/Tisean_3.0.1/index.html TISEAN] is a suite of code for nonlinear time series analysis. It has been [http://wiki.octave.org/TISEAN_package partially re-implemented] as libre software. The objective is to integrate TISEAN as an Octave Forge package, as was done for the Control package.<br />
[[TISEAN_package | A lot has been completed]] but [[TISEAN_package:Procedure | there is still work left to do]].<br />
<br />
There are missing functions to do computations on spike trains, to simulate autoregresive models, to create specialized plots, etc. Do check [[TISEAN_package:Procedure#Table_of_functions|the progress of the project]] to see if you are interested.<br />
<br />
* [http://octave.sourceforge.net/tisean/overview.html Package help at source forge.] <br />
* [https://sourceforge.net/p/octave/tisean/ci/default/tree/ Package repository at source forge.] <br />
<br />
* '''Required skills'''<br />
: m-file scripting, C, C++, and FORTRAN API knowledge. <br />
* '''Difficulty'''<br />
: easy/medium<br />
* '''Mentor'''<br />
: [[User:KaKiLa|KaKiLa]]<br />
<br />
=== Symbolic package ===<br />
<br />
Octave's [https://github.com/cbm755/octsympy Symbolic package] handles symbolic computing and other CAS tools. The main component of Symbolic is a pure m-file class "@sym" which uses the Python package [https://www.sympy.org SymPy] to do (most of) the actual computations. The package aims to expose the full functionality of SymPy while also providing a high-level of compatibility with the Matlab Symbolic Math Toolbox. The Symbolic package requires communication between Octave and Python. Recently, a GSoC2016 project successfully re-implemented this communication using the new [https://bitbucket.org/mtmiller/pytave Pytave tool].<br />
<br />
This project proposes to go further: instead of using Pytave only for the communication layer, we'll use it throughout the Symbolic project. For example, we might make "@sym" a subclass of "@pyobject". We also could stop using the "python_cmd" interface and use Pytave directly from methods. The main goal was already mentioned: to expose the *full functionality* of SymPy. For example, we would allow OO-style method calls such as "f.diff(x)" instead of "diff(f, x)".<br />
<br />
* '''Required skills'''<br />
: OO-programming with m-files, Python, and possibly C/C++ for improving Pytave (if needed).<br />
* '''Difficulty'''<br />
: easy/medium<br />
* '''Mentors and/or other team members'''<br />
: Colin B. Macdonald, Mike Miller, Abhinav Tripathi<br />
<br />
=== Interval package ===<br />
<br />
The [[Interval_package|interval package]] provides several arithmetic functions with accurate and guaranteed error bounds. Its development started in the end of 2014 and there is some fundamental functionality left to be implemented. See the [http://octave.sourceforge.net/interval/overview.html list of functions], basically any missing numeric Octave function could be implemented as an interval extension in the package. Potential projects:<br />
* Make the package support N-dimensional arrays, this requires less knowledge of interval arithmetic but can be a rather exhaustive job since it affects most function files in the package<br />
* Implement missing algorithms (as m-files)—difficulty and whether knowledge in interval analysis is required depends on the particular function. Of course, you may use papers which present such algorithms.<br />
* Improve existing algorithms (support more options for plotting, support more options for optimizers, increase accuracy, …)<br />
* Integrate functions from VERSOFT [http://uivtx.cs.cas.cz/~rohn/matlab/] in the package (some work has already been done and current progress is tracked in [[Interval_package#VERSOFT]]). This basically involves conversion of the documentation into Texinfo format, use Octave coding guidelines [https://www.gnu.org/software/octave/doc/v4.0.0/Octave-Sources-_0028m_002dfiles_0029.html] and to make sure that any called functions are available in the interval package. VERSOFT is originally based on INTLAB, a proprietary Octave package. Some functions may be missing. Also, the interval package doesn't support complex numbers, so it might not be possible to migrate some functions.<br />
* List more interesting use cases of interval arithmetic in the package's manual [https://octave.sourceforge.io/interval/package_doc/Examples.html]<br />
<br />
* '''Required skills'''<br />
: m-file scripting, basic knowledge of computer arithmetics (especially floating-point computations), interval analysis (depending on the functions to implement).<br />
* '''Difficulty'''<br />
: Medium.<br />
* '''Mentor and co-mentor'''<br />
: [[User:oheim|Oliver Heimlich]], [[User:Siko1056|Kai T. Ohlhus]]<br />
<br />
== Infrastructure ==<br />
<br />
=== Jupyter Integration ===<br />
<br />
[http://jupyter.org Jupyter Notebook] is a web-based worksheet interface for computing. There is a [https://github.com/Calysto/octave_kernel Octave kernel for Jupyter]. This project seeks to improve that kernel to make Octave a first-class experience within the Jupyter Notebook.<br />
<br />
* '''Mentors'''<br />
: Colin B. Macdonald, Mike Miller, others?<br />
<br />
<br />
=== Using Python within Octave ===<br />
<br />
[https://bitbucket.org/mtmiller/pytave Pytave] allows one to call Python functions and interact with Python objects from within Octave .m file code and from the Octave command line interface. Ideally, Pytave will not be a separate project, but rather a core feature of Octave. This project aims to improve Pytave with the goal of merging the code into the core Octave code base. <br />
<br />
Based on a previous summer project related to Pytave, this work will consist of fast-paced collaborative software development based on tackling the [https://bitbucket.org/mtmiller/pytave/issues?status=new&status=open pytave issue list]. You would also be expected to participate in software design decisions and discussion, as well as improve documentation, doctests and unit tests. As an example of the sorts of decision decisions being made, note that Octave indexes from 1 whereas Python typically indexes from 0; in which cases is it appropriate to make this transparent to the user?<br />
<br />
* '''Mentors'''<br />
: Mike Miller, Colin B. Macdonald, Abhinav Tripathi, others?<br />
<br />
<br />
=== Octave Package management ===<br />
<br />
Octave management of installed packages is performed by a single function, {{codeline|pkg}}, which does pretty much everything. This function has a few limitations which are hard to implement with the current codebase, and will most likely require a full rewrite.<br />
<br />
The planned improvements are:<br />
<br />
* install from URLs<br />
* install and update from repositories (hg and git)<br />
* automatic handling of dependencies<br />
* easily load, update or check specific package versions<br />
* management of tests and demos in C++ sources of packages<br />
* more flexibility on dependencies, e.g., dependent on specific Octave build options or being dependent in one of multiple packages<br />
* support for multiple version packages<br />
* support for multiple Octave installs<br />
* support for system-wide and user installed packages<br />
<br />
The main objective of this project is to make {{codeline|pkg}} more user friendly and to make it a tool to foster third party participation in Octave.<br />
{{codeline|pkg}} needs to be more flexible and intelligent when dealing with packages, different verisons and different sources, as well as options on how to build and install the package.<br />
There are also advance features of pkg that are useful for testing packages. However, the current {{codeline|pkg}} also performs some maintenance functions which it probably should not.<br />
Instead a package for developers should be created with such tools.<br />
<br />
To do this enhacenment effectively, a refactoring of the current {{codeline|pkg}} code will be needed.<br />
[https://bitbucket.org/carandraug/octave/commits/branch/pkg This job was started once], but due to diverging and growing specifications, it stalled. <br />
In this project we will focus on the most needed features, keeping the requirements to a minimum. <br />
<br />
Many of these problems have been solved in other languages. Familiarity with how other languages handle this problem will be useful to come up with elegant solutions. In some cases, there are standards to follow. For example, there are specifications published by freedesktop.org about where files should go ([http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html base directory spec]) and Windows seems to have its own standards. See bugs {{bug|36477}} and {{bug|40444}} for more details.<br />
<br />
In addition, package names may start to collide very easily. One horrible way to workaround this by is choosing increasingly complex package names that give no hint on the package purpose. A much better is option is providing an Authority category like Perl 6 does. Nested packages is also an easy way to provide packages for specialized subjects (think {{codeline|image::morphology}}). A new {{codeline|pkg}} would think all this things now, or allow their implementation at a later time. Read the [[OEP:pkg|unfinished plan]] for more details.<br />
<br />
* '''Minimum requirements'''<br />
: Ability to read and write Octave code, experience with Octave packages, and understanding of the basics of autotools. The most important skill is software design.<br />
* '''Difficulty'''<br />
: Easy to Medium.<br />
* '''Mentor'''<br />
: [[User:KaKiLa|KaKiLa]], Carnë Draug, Carlo de Falco, Sebastian Schöps<br />
<br />
=== Command line suggestion feature ===<br />
<br />
Currently Octave has no mechanism for suggesting corrections to typographic errors on the command line. An autocomplete/suggestion function is provided (using the double-TAB shortcut), but recent discussions have indicated a desire for a more proactive measure to catch user error. Potential applicants are referred to bug {{bug|46881}} regarding the usage of grey vs. gray. <br />
<br />
Suggested improvements are:<br />
* provide one or more suggested corrections to the user when a command line entry produces an error.<br />
* recognition and suggested correction for apparent syntax errors<br />
* function suggestion(s) when a 'close' match is found (close remains to be defined)<br />
* multiple suggestions if more than one option seems likely, along with a user-friendly method of selecting the appropriate choice.<br />
* user selectable option to disable and/or customize the suggestion behavior<br />
* correct operation, or graceful degradation, whether Octave is run in GUI or command-line mode. <br />
<br />
As mentioned in the bug {{bug|46881}} discussion, this project has little-to-no relation to m-code compatibility. As such, emulation of the behavior of other software is not required, nor even necessarily desired. Octave is free to implement as simple or complex a solution to this feature request as is necessary to provide the best experience to the user. There may be tools, features, or code from other license-compatible projects that can be of use here, and the applicant would be encouraged to identify and leverage such resources as appropriate. <br />
<br />
* '''Minimum requirements'''<br />
: TBD<br />
* '''Difficulty'''<br />
: Easy to Medium.<br />
* '''Mentor'''<br />
: Undetermined<br />
<br />
<br />
=== Octave code sharing ===<br />
<br />
Recently, on the [[OctConf_2017]] a [https://rawgit.com/siko1056/Octconf2017/master/octconf2017-publish-ohlhus-slides.pdf talk] about uploading [https://www.gnu.org/software/octave/doc/interpreter/XREFpublish.html published Octave code] to a MediaWiki (like this one) as an easy way to share code was given. With the talk, a [https://github.com/siko1056/OctConf2017 repository] containing example code for the MediaWiki upload is given. This might continue the idea of an unfinished [[Agora]] code sharing website, but one is not restricted to fully stay with the proposed approach. Another, but more ambitious idea is for example [http://central.scipy.org/ Scipy Central] - a website for Scipy code sharing. Their [https://github.com/scipy/SciPyCentral Code] is released under a BSD license.<br />
<br />
* '''Minimum requirements'''<br />
: Ability to read and write Octave code, some familiarity with C++ ([https://curl.haxx.se libcurl]), web development (GET/POST/FORM data, cookies), and [https://www.mediawiki.org/wiki/MediaWiki MediaWiki].<br />
* '''Difficulty'''<br />
: Medium.<br />
* '''Mentor'''<br />
: [[User:Siko1056|Kai T. Ohlhus]]<br />
<br />
== Image Analysis ==<br />
<br />
=== Improvements to N-dimensional image processing ===<br />
<br />
The image package has partial functionality for N-dimensional images. These images exist for example in medical imaging where slices from scans are assembled to form anatomical 3D images. If taken over time and at different laser wavelengths or light filters, they can also result in 5D images. Albeit less common, images with even more dimensions also exist. However, their existence is irrelevant since most of the image processing operations are mathematical operations which are independent of the number of dimensions.<br />
<br />
As part of GSoC 2013, the core functions for image IO, {{codeline|imwrite}} and {{codeline|imread}}, were extended to better support this type of images. Likewise, many functions in the image package, mostly morphology operators, were expanded to deal with this type of image. Since then, many other functions have been improved, sometimes completely rewritten, to abstract from the number of dimensions. In a certain way, supporting ND images is also related to choosing good algorithms since such large images tend to be quite large.<br />
<br />
This project will continue on the previous work, and be mentored by the previous GSoC student and current image package maintainer. Planning the project requires selection of functions lacking ND support and identifying their dependencies. For example, supporting {{codeline|imclose}} and {{codeline|imopen}} was better implemented by supporting {{codeline|imerode}} and {{codeline|imdilate}} which then propagated ND support to all of its dependencies. These dependencies need to be discovered first since often they are not being used yet, and may even be missing function. This project can also be about implementing functions that have [http://wiki.octave.org/Image_package#Missing_functions not yet been implemented]. Also note that while some functions in the image package will accept ND images as input, they are actually not correctly implemented and will give incorrect results.<br />
<br />
* '''Required skills'''<br />
: m-file scripting, and a fair amount of C++ since a lot of image analysis cannot be vectorized. Familiarity with common CS algorithms and willingness to read literature describing new algorithms will be useful. <br />
* '''Difficulty'''<br />
: Difficult.<br />
* '''Potential mentor'''<br />
: Carnë Draug<br />
<br />
=== Improve Octave's image IO ===<br />
<br />
There are a lot of image formats. To handle this, Octave uses [http://www.graphicsmagick.org/ GraphicsMagic] (GM), a library capable of handling [http://www.graphicsmagick.org/formats.html a lot of them] in a single C++ interface. However, GraphicsMagick still has its limitations. The most important are:<br />
<br />
* GM has build option {{codeline|quantum}} which defines the bitdepth to use when reading an image. Building GM with high quantum means that images of smaller bitdepth will take a lot more memory when reading, but building it too low will make it impossible to read images of higher bitdepth. It also means that the image needs to always be rescaled to the correct range.<br />
* GM supports unsigned integers only thus incorrectly reading files such as TIFF with floating point data<br />
* GM hides away details of the image such as whether the image file is indexed. This makes it hard to access the real data stored on file.<br />
<br />
This project would implement better image IO for scientific file formats while leaving GM handle the others. Since TIFF is the de facto standard for scientific images, this should be done first. Among the targets for the project are:<br />
<br />
* implement the Tiff class which is a wrap around libtiff, using classdef. To avoid creating too many private __oct functions, this project could also create a C++ interface to declare new Octave classdef functions.<br />
* improve imread, imwrite, and imfinfo for tiff files using the newly created Tiff class<br />
* port the bioformats into Octave and prepare a package for it<br />
* investigate other image IO libraries<br />
* clean up and finish the dicom package to include into Octave core<br />
* prepare a matlab compatible implementation of the FITS package for inclusion in Octave core<br />
<br />
* '''Required skills'''<br />
: Knowledge of C++ and C since most libraries are written in those languages.<br />
* '''Difficulty'''<br />
: Medium.<br />
* '''Potential mentor'''<br />
: Carnë Draug<br />
<br />
<br />
<br />
<br />
<br />
<br />
<noinclude><br />
[[Category:Summer of Code]]<br />
[[Category:Project Ideas]]<br />
</noinclude></div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=Summer_of_Code_-_Getting_Started&diff=10592Summer of Code - Getting Started2018-01-03T07:24:11Z<p>KaKiLa: /* EPA hydrology software suite */</p>
<hr />
<div>The following is distilled from the [[Projects]] page for the benefit of potential [https://summerofcode.withgoogle.com Google] and [http://sophia.estec.esa.int/socis ESA] Summer of Code (SoC) students. Although students are welcome to attempt any of the projects in that page or any of their own choosing, here we offer some suggestions on what good student projects might be.<br />
<br />
= Steps Toward a Successful Application =<br />
<br />
== Help Us Get To Know You == <br />
*: If you aren't communicating with us before the application is due, your application will not be accepted.<br />
*:* '''Join the [https://lists.gnu.org/mailman/listinfo/octave-maintainers maintainers mailing list]''' or read the archives and see what topics we discuss and how the developers interact with each other.<br />
*:* '''Hang out in our [https://webchat.freenode.net/?channels=#octave IRC channel]'''. Ask questions, answer questions from users, show us that you are motivated, and well-prepared. There will be more applicants than we can effectively mentor, so do ask for feedback on your public application to increase the strength of your proposal!<br />
* '''Do not wait for us to tell you what to do'''<br />
*: You should be doing something that interests you, and should not need us to tell you what to do. Similarly, you shouldn't ask us what to do either.<br />
*:* When you email the list and mentors, do not write it to say on what project you're interested. Be specific about your questions and clear on the email subject. For example, do not write an email with the subject "GSoC student interested in the ND images projects". Such email is likely be ignored. Instead, show you are already working on the topic, and email "Problem implementing morphological operators with bitpacked ND images".<br />
*:* It is good to ask advice on how to solve something you can't but you must show some work done. Remember, we are mentors and not your boss. Read [http://www.catb.org/esr/faqs/smart-questions.html How to ask questions the smart way]:<br />
*:*: <blockquote cite="http://www.catb.org/esr/faqs/smart-questions.html">''Prepare your question. Think it through. Hasty-sounding questions get hasty answers, or none at all. The more you do to demonstrate that having put thought and effort into solving your problem before seeking help, the more likely you are to actually get help.''</blockquote><br />
*:* It can be difficult at the beginning to think on something to do. This is nature of free and open source software development. You will need to break the mental barrier that prevents you from thinking on what can be done. Once you do that, you will have no lack of ideas for what to do next.<br />
*:* Use Octave. Eventually you will come accross somethings that does not work the way you like. Fix that. Or you will come accross a missing function. Implement it. It may be a difficult problem (they usually are) but while solving that problem you may find other missing functions (). Implemenent and contribute those to Octave.<br />
*:* Take a look at the [[Short projects]] for something that may be simple to start with.<br />
== Find Something That Interests You == <br />
*: It's '''critical''' that you '''find a project that excites you'''. You'll be spending most of the summer working on it (we expect you to treat the SoC as a full-time job).<br />
*: Don't just tell us how interested you are, show us that you're willing and able to '''contribute''' to Octave. You can do that by [https://savannah.gnu.org/bugs/?group=octave fixing a few bugs] or [http://savannah.gnu.org/patch/?group=octave submitting patches] well before the deadline, in addition to regularly interacting with Octave maintainers and users on the mailing list and IRC. Our experience shows us that successful SoC students demonstrate their interest early and often.<br />
== Prepare Your Proposal With Us ==<br />
*: By working with us to prepare your proposal, you'll be getting to know us and showing us how you approach problems. The best place for this is your Wiki user page and the [https://webchat.freenode.net/?channels=#octave IRC channel].<br />
== Complete Your Application ==<br />
*: Fill out our '''''public''''' application template.<br />
*:* This is best done by '''[[Special:CreateAccount|creating an account at this wiki]]''', and copying the '''[[Template:Student_application_template_public|template]]''' from its page.<br />
*:* You really only need to copy and answer the '''''public''''' part there, there is no need to showcase everything else to everybody reading your user page!<br />
*: Fill out our '''''private''''' application template.<br />
*:* This is best done by copying the '''[[Template:Student_application_template_private|template]]''' from its page and '''adding the required information to your application at Google (melange)''' or at '''ESA'''.<br><br />
*:* Only the organization admin and the possible mentors will see this data. You can still edit it after submitting until the deadline!<br />
<br />
== Things You'll be Expected to Know or Quickly Learn On Your Own ==<br />
<br />
Octave is mostly written in C++ and its own scripting language that is mostly compatible with Matlab. There are bits and pieces of Fortran, Perl, C, awk, and Unix shell scripts here and there. In addition to being familiar with C++ and Octave's scripting language, successful applicants will be familiar with or able to quickly learn about Octave's infrastructure. You can't spend the whole summer learning how to build Octave or prepare a changeset and still successfully complete your project.<br />
<br />
* '''The Build System'''<br />
*: [http://en.wikipedia.org/wiki/GNU_build_system The GNU build system] is used to build Octave.<br />
*: While you generally don't need to understand too much unless you actually want to change how Octave is built, you should be able to understand enough to get a general idea of how to build Octave.<br />
*: If you've ever done a {{Codeline|configure && make && make install}} series of commands, you have already used the GNU build system.<br />
*: '''You must demonstrate that you are able to build the development version of Octave from sources before the application deadline.''' You will be able to find instructions how to it on this wiki, and the manual. Linux is arguably the easiest system to work on.<br />
*:* [[Building]]<br />
*:* [https://www.gnu.org/software/octave/doc/interpreter/Installation.html Octave Manual on Installing Octave]<br />
* '''The Version Control System'''<br />
*: We use [http://mercurial.selenic.com/ Mercurial] (abbreviated hg).<br />
*: Mercurial is the [http://en.wikipedia.org/wiki/Distributed_Version_Control_System distributed version control system] (DVCS) we use for managing our source code. You should have some basic understanding of how a DVCS works, but hg is pretty easy to pick up, especially if you already know a VCS like git or svn.<br />
* '''The Procedure for Contributing Changesets'''<br />
*: You will be expected to follow the same procedures as other contributors and core developers.<br />
*: You will be helping current and future Octave developers by using our standard style for changes, commit messages, and so on. You should also read the same [https://www.gnu.org/software/octave/doc/interpreter/Contributing-Guidelines.html contribution] [http://hg.savannah.gnu.org/hgweb/octave/file/tip/etc/HACKING guidelines] we have for everyone.<br />
*: [[Hg_instructions_for_mentors#Mercurial_Tips_for_SoC_students | This page]] describes the procedures students are expected to use to publicly display their progress in a public mercurial repo during their work.<br />
* '''The Maintainers Mailing List'''<br />
*: We primarily use [https://lists.gnu.org/mailman/listinfo/octave-maintainers mailing lists] for communication among developers.<br />
*: The mailing list is used most often for discussions about non-trivial changes to Octave, or for setting the direction of development.<br />
*: You should follow basic mailing list etiquette. For us, this mostly means "do not [https://en.wikipedia.org/wiki/Posting_style#Top-posting top post]".<br />
* '''The IRC Channel'''<br />
*: We also have [http://webchat.freenode.net?channels=octave the #octave IRC channel in Freenode].<br />
*: You should be familiar with the IRC channel. It's very helpful for new contributors (you) to get immediate feedback on ideas and code.<br />
*: Unless your primary mentor has a strong preference for some other method of communication, the IRC channel will likely be your primary means of communicating with your mentor and Octave developers.<br />
* '''The Octave Forge Project'''<br />
*: [http://octave.sf.net Octave-Forge] is a collection of contributed packages that enhance the capabilities of core Octave. They are somewhat analogous to Matlab's toolboxes.<br />
* '''Related Skills'''<br />
*: In addition, you probably should know '''some''' mathematics, engineering, experimental science, or something of the sort.<br />
*: If so, you probably have already been exposed to the kinds of problems that Octave is used for.<br />
<br />
== Criteria by which applications are judged ==<br />
<br />
These might vary somewhat depending on the mentors and coordinators for a particular Summer of Code, but typically the main factors considered would be:<br />
<br />
* '''Applicant has demonstrated an ability to make substantial modifications to Octave'''<br />
*: The most important thing is that you've contributed some interesting code samples to judge you by. It's OK during the application period to ask for help on how to format these code samples, which normally are Mercurial patches.<br />
<br />
* '''Applicant shows understanding of topic'''<br />
*: Your application should make it clear that you're reasonably well versed in the subject area and won't need all summer just to read up on it.<br />
<br />
* '''Applicant shows understanding of and interest in Octave development'''<br />
*: The best evidence for this is previous contributions and interactions.<br />
<br />
* '''Well thought out, adequately detailed, realistic project plan'''<br />
*: "I'm good at this, so trust me" isn't enough. You should describe which algorithms you'll use and how you'll integrate with existing Octave code. You should also prepare a full timeline and goals for the midterm and final evaluations.<br />
<br />
= Suggested projects =<br />
<br />
The following projects are broadly grouped by category and probable skills required to tackle each. Remember to check [[Projects]] for more ideas if none of these suit you, and your own ideas are always welcome.<br />
<br />
{{Note|these are suggested projects but you are welcome to propose your own projects provided you find an Octave mentor}}<br />
<br />
== Summary table ==<br />
<br />
{| class="wikitable sortable" style="text-align: center; width:99%"<br />
|-<br />
!Title<br />
!Mentor<br />
!co-Mentors<br />
!Class<br />
!New?<br />
!Difficulty<br />
!Last active<br />
|-<br />
! <br />!! !! !! !! !! !!<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Make_specfuns_special_again | Make specfuns special again]] || Marco Caliari || Colin Macdonald || Numerical || Yes || Medium || GSoC 2017<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#ode15s_:_Matlab_Compatible_DAE_solver | ode15{i,s} : Matlab Compatible DAE solvers]] || Carlo de Falco || Francesco Faccio, Marco Caliari, Jacopo Corno, Sebastian Schöps || Numerical || No || Medium || GSoC 2016<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Improve_logm.2C_sqrtm.2C_funm | Improve logm, sqrtm, funm]] || Jordi Gutiérrez Hermoso || Marco Caliari, Mudit Sharma || Numerical || [https://github.com/RickOne16/matrix No] || Hard || Independent devs 2016<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Improve_iterative_methods_for_sparse_linear_systems | Improve iterative methods for sparse linear systems]] || Marco Caliari || Carlo de Falco || Numerical || No || Hard || SOCIS 2016<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Neural Networks package: Convolutional Neural Networks | Neural Networks package: Convolutional Neural Networks]] || [[User:Francesco Faccio|Francesco Faccio]] || Ankit || Octave Forge || Yes || Hard|| Never<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#EPA_hydrology_software_suite | EPA hydrology software suite]] || [[User:KaKiLa| KaKiLa]] || ? || Octave Forge || Yes || Medium || Never<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#FullSWOF overland flow simulator | FullSWOF overland flow simulator]] || [[User:KaKiLa| KaKiLa]] || ? || Octave Forge || Yes || Medium || Never<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#TISEAN_package | TISEAN: Nonlinear Time Series Analysis]] || [[User:KaKiLa|KaKiLa]] || ? || Octave Forge || [[TISEAN_package | No]] || Medium || GSoC 2015<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Octave_Package_management | Octave Package management]] || Sebastian Schöps || [[User:KaKiLa|KaKiLa]], Carnë Draug, Carlo de Falco || Infrastructure || Yes || Medium || Never<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Symbolic_package | Symbolic package]] || Colin B. Macdonald || Mike Miller, Abhinav Tripathi || Octave Forge || [https://github.com/cbm755/octsympy Octsympy] || Medium || GSoC 2016<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Interval_package | Interval package]] || [[User:oheim|Oliver Heimlich]] || [[User:Siko1056|Kai T. Ohlhus]] || Octave Forge, Numerical || Yes || Medium || Never<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Using_Python_within_Octave | Pytave project]] || Mike Miller || Colin B. Macdonald, Abhinav Tripathi || Infrastructure || No || Medium || some in GSoC 2016<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Jupyter_Integration | Jupyter integration]] || Mike Miller || Colin B. Macdonald || Infrastructure || Yes || Medium || Never<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Chebfun_in_Octave | Chebfun in Octave]] || Colin B. Macdonald || [[User:KaKiLa|KaKiLa]], needs core-Octave mentor/comentor || Infrastructure, Numerical || Yes || Hard || Never<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Octave_code_sharing | Octave code sharing]] || [[User:Siko1056|Kai T. Ohlhus]] || ? || Infrastructure || Yes || Medium || Never<br />
|}<br />
<br />
== Numerical ==<br />
<br />
These projects involve implementing certain mathematical functions, primarily in core Octave.<br />
<br />
=== Make specfuns special again ===<br />
<br />
Traditionally, problem solving environments like Octave provide simple interfaces to numerical linear algebra, special function evaluation, root finding, and other tools. Special functions (such as Bessel functions, exponential integrals, LambertW, etc) are expected by users to "just work". But many of Octave's special functions could be improved to improve their numerical accuracy. Generally a user might expect these to be accurate to full 15 digits. Software testing is important to Octave; this project would improve the tests of many special functions, in particular by comparing the output with slow-but-accurate symbolic computations.<br />
<br />
State: some bugs include [https://savannah.gnu.org/bugs/?48307 #48307] (sinc), [https://savannah.gnu.org/bugs/?47738 #47738] (expint), [https://savannah.gnu.org/bugs/?47800 #47800] (gammainc), [https://savannah.gnu.org/bugs/?48036 #48036] (gammaincinv) [https://savannah.gnu.org/bugs/index.php?48316 #48316] (besselj) ''TODO: add others?'' The unmaintained specfun pkg had some poor implementations (e.g., divergence for large x, see [https://github.com/cbm755/octsympy/issues/416].). See also the Symbolic functions in `@double`: these probably should have native double implementations.<br />
<br />
* '''Required skills'''<br />
: Octave m-file programming, some familiarity with Approximation Theory (a branch of mathematics).<br />
* '''Difficulty'''<br />
: Medium (mathematics needed, but on the other hand, perhaps little or no C++).<br />
* '''Potential mentors'''<br />
: Marco Caliari, Colin Macdonald, others?<br />
<br />
How to get started: pick a special function, see if it has tests: contribute a patch that adds more tests, e.g., comparing its values to symbolic computations or other highly accurate solutions<br />
<br />
=== ode15{i,s} : Matlab Compatible DAE solvers ===<br />
<br />
An initial implementation of a Matlab compatible ode15{i,s} solver,<br />
based on [http://computation.llnl.gov/projects/sundials SUNDIALS], <br />
was done by Francesco Faccio during<br />
GSOC 2016.<br />
The blog describing the work is [http://gsoc2016ode15s.blogspot.it/ here].<br />
The resulting code has been pushed into the main Octave repository in the development branch and<br />
consists mainly of the following three files<br />
[http://hg.savannah.gnu.org/hgweb/octave/file/4890b1c4a6bd/libinterp/dldfcn/__ode15__.cc __ode15__.cc],<br />
[http://hg.savannah.gnu.org/hgweb/octave/file/4890b1c4a6bd/scripts/ode/ode15i.m ode15i.m] and<br />
[http://hg.savannah.gnu.org/hgweb/octave/file/4890b1c4a6bd/scripts/ode/ode15s.m ode15s.m].<br />
The list of outsanding tracker tickets concerning this implementation can be found <br />
[https://savannah.gnu.org/search/?Search=Search&words=ode15&type_of_search=bugs&only_group_id=1925&exact=1&max_rows=25#options here]<br />
<br />
Possible useful improvements that could be done in a new project include:<br />
<br />
* Implement a better funtion for selecting consistent initial conditions compatible with Matlab's decic.m. The algorithm to use is described [http://faculty.smu.edu/shampine/cic.pdf here]<br />
<br />
* make ode15{i,s} with datatypes other than double<br />
<br />
* improve interpolation at intermediate time steps.<br />
<br />
* general code profiling and optimization <br />
<br />
Other tasks, not strictly connected to ode15{i,s} but closely related that could be added <br />
to a possible project plan would be improving documentation and tests in odepkg and removing <br />
overlaps with the documentation in core Octave.<br />
<br />
<br />
* '''Required skills'''<br />
: C++; C; familiarity with numerical methods for DAEs; Basic knowledge of makefiles and/or autotools.<br />
* '''Difficulty'''<br />
: Medium.<br />
* '''Potential mentors'''<br />
: Francesco Faccio, Carlo de Falco, Marco Caliari, Jacopo Corno, Sebastian Schöps<br />
<br />
=== Improve logm, sqrtm, funm ===<br />
<br />
The goal here is to implement some missing Matlab functions related to matrix functions like the [http://en.wikipedia.org/wiki/Matrix_exponential matrix exponential]. There is [http://octave.1599824.n4.nabble.com/matrix-functions-td3137935.html a general discussion] of the problem. A good starting point for available algorithms and open-source implementations is Higham and Deadman's [http://eprints.ma.man.ac.uk/2102/01/covered/MIMS_ep2014_8.pdf "A Catalogue of Software for Matrix Functions"].<br />
<br />
* '''Required skills'''<br />
: Read and Write both C++ and Octave code, find and read research papers, research experience in numerical analysis, familiarity with analysis of algorithms.<br />
* '''Difficulty'''<br />
: Difficult.<br />
* '''Potential mentors'''<br />
: Jordi Gutiérrez Hermoso<br />
<br />
=== Improve iterative methods for sparse linear systems ===<br />
<br />
GNU Octave currently has the following Krylov subspace methods for sparse linear systems: pcg (spd matrices) and pcr (Hermitian matrices), bicg,<br />
bicgstab, cgs, gmres, and qmr (general matrices). The description of some of them (pcr, qmr) and their error messages are not aligned. Moreover, they have similar blocks of code (input check for instance) which can be written once and for all in common functions. The first step in this project could be a revision and a synchronization of the codes, starting from the project [http://planet.octave.org/#tag:blogger.com,1999:blog-1297699247151766814.post-8054019978706480250 SOCIS2016], whose latest patch, still to be included, is [https://savannah.gnu.org/patch/?9108 here].<br />
<br />
In Matlab, some additional methods are available: minres and symmlq (symmetric matrices), bicgstabl (general matrices), lsqr (least<br />
squares). The second step in this project could be the implementation of some of these missing functions.<br />
<br />
The reference book is available [www-users.cs.umn.edu/~saad/IterMethBook_2ndEd.pdf here]<br />
<br />
* '''Required skills'''<br />
: numerical linear algebra, m-file programming.<br />
* '''Difficulty'''<br />
: Maybe hard the mathematical part, medium the programming part.<br />
* '''Mentor'''<br />
:<br />
<br />
=== Chebfun in Octave ===<br />
<br />
[https://chebfun.org Chebfun] is a mathematics and software project for "numerical computing with functions". Basically it approximates functions to machine precision accuracy (10<sup>-15</sup>) using piecewise Chebyshev polynomial interpolants. Operations on those functions (arithmetic, derivatives, root-finding, etc) are then overloaded and return new interpolating polynomials, which are themselves proxies for the actual solution.<br />
<br />
Chebfun makes extensive use of classdef classes, and is one of the largest Free Software projects to do so. Unfortunately it currently only works in Matlab. This project seeks to (1) improve Octave's classdef support and (2) tweak Chebfun to work under Octave, for example, removing undocumented classdef features. The final goal is to have at least basic Chebfun features working on Octave. An additional goal would be making "pkg install chebfun.zip" work in Octave.<br />
<br />
This project is important for both technical reasons (to improve Octave's classdef support) and ethical reasons (to allow Chebfun to run without proprietary software).<br />
<br />
* '''Required skills'''<br />
: Octave m-file programming, C++, some familiarity with Approximation Theory (a branch of mathematics).<br />
* '''Difficulty'''<br />
: Medium to Hard (probably requires a deep dive into how Octave supports OO).<br />
* '''Potential mentors'''<br />
: Colin B. Macdonald, [[User:KaKiLa|KaKiLa]], Mike Miller (?), Carnë Draug (?), someone from Chebfun team (?).<br />
<br />
How to get started: learn about Chebfun, browse Octave's bug list for classdef-related bugs, play with other classdef projects (Pytave, https://github.com/cbm755/octsympy/issues/545)<br />
<br />
== Adding functionality to Forge packages ==<br />
<br />
=== Neural Networks package: Convolutional Neural Networks ===<br />
Convolutional Neural Networks (CNNs) have recently become the state-of-the-art for image recognition and are widely used for solving classification and regression problems and for [https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/tutorials/deepdream/deepdream.ipynb image generation]. The goal of the project is to implement a [https://it.mathworks.com/help/nnet/convolutional-neural-networks.html Matlab compatible] CNN toolbox using Google's library [https://www.tensorflow.org/ TensorFlow], which has a Python and C++ interface. As execution environment for the training function, the user will be able to choose between single/multiple CPUs and GPUs.<br />
* '''Required skills'''<br />
: C, C++, Python, m-file scripting, familiarity with Machine Learning algorithms, basic knowledge of Makefiles, experience with parallel computing and distributed systems.<br />
* '''Difficulty'''<br />
: Difficult.<br />
* '''Mentors'''<br />
: [[User:Francesco Faccio|Francesco Faccio]], Ankit<br />
<br />
=== EPA hydrology software suite ===<br />
Create native interfaces to the EPA software suites.<br />
<br />
Starting points<br />
* [https://forja.cica.es/projects/epanet-octave/ epanet-octave].<br />
* [https://github.com/OpenWaterAnalytics/ Open Water Analytics]<br />
<br />
* '''SWMM'''<br />
** [https://www.epa.gov/water-research/storm-water-management-model-swmm Official page]<br />
** Check work done in [https://github.com/water-systems/MatSWMM MatSWMM] [http://digital.csic.es/bitstream/10261/132982/1/MatSWMM.pdf article]<br />
<br />
* '''EPANET'''<br />
** [https://www.epa.gov/water-research/epanet Official page]<br />
<br />
* '''Required skills'''<br />
: m-file scripting, C, C++, API knowledge, file I/O, classdef (optional). <br />
<br />
* '''Difficulty'''<br />
: easy/medium<br />
<br />
* '''Mentor'''<br />
: [[User:KaKiLa|KaKiLa]]<br />
<br />
=== FullSWOF overland flow simulator ===<br />
Create scripting tools for (optional: native interfaces).<br />
<br />
Starting points<br />
* [http://www.univ-orleans.fr/mapmo/soft/FullSWOF/ The FullSWOF Project].<br />
* [https://arxiv.org/abs/1204.3210 FullSWOF: A software for overland flow simulation]<br />
* [https://bitbucket.org/binello7/fswof2d Initial work on Bitbucket]<br />
<br />
====Required skills====<br />
: m-file scripting, C, C++, API knowledge, file I/O, classdef (optional). <br />
<br />
====Difficulty====<br />
: easy/medium<br />
<br />
====Mentor====<br />
: [[User:KaKiLa|KaKiLa]]<br />
<br />
=== TISEAN package ===<br />
<br />
[http://www.mpipks-dresden.mpg.de/~tisean/Tisean_3.0.1/index.html TISEAN] is a suite of code for nonlinear time series analysis. It has been [http://wiki.octave.org/TISEAN_package partially re-implemented] as libre software. The objective is to integrate TISEAN as an Octave Forge package, as was done for the Control package.<br />
[[TISEAN_package | A lot has been completed]] but [[TISEAN_package:Procedure | there is still work left to do]].<br />
<br />
There are missing functions to do computations on spike trains, to simulate autoregresive models, to create specialized plots, etc. Do check [[TISEAN_package:Procedure#Table_of_functions|the progress of the project]] to see if you are interested.<br />
<br />
* [http://octave.sourceforge.net/tisean/overview.html Package help at source forge.] <br />
* [https://sourceforge.net/p/octave/tisean/ci/default/tree/ Package repository at source forge.] <br />
<br />
* '''Required skills'''<br />
: m-file scripting, C, C++, and FORTRAN API knowledge. <br />
* '''Difficulty'''<br />
: easy/medium<br />
* '''Mentor'''<br />
: [[User:KaKiLa|KaKiLa]]<br />
<br />
=== Symbolic package ===<br />
<br />
Octave's [https://github.com/cbm755/octsympy Symbolic package] handles symbolic computing and other CAS tools. The main component of Symbolic is a pure m-file class "@sym" which uses the Python package [https://www.sympy.org SymPy] to do (most of) the actual computations. The package aims to expose the full functionality of SymPy while also providing a high-level of compatibility with the Matlab Symbolic Math Toolbox. The Symbolic package requires communication between Octave and Python. Recently, a GSoC2016 project successfully re-implemented this communication using the new [https://bitbucket.org/mtmiller/pytave Pytave tool].<br />
<br />
This project proposes to go further: instead of using Pytave only for the communication layer, we'll use it throughout the Symbolic project. For example, we might make "@sym" a subclass of "@pyobject". We also could stop using the "python_cmd" interface and use Pytave directly from methods. The main goal was already mentioned: to expose the *full functionality* of SymPy. For example, we would allow OO-style method calls such as "f.diff(x)" instead of "diff(f, x)".<br />
<br />
* '''Required skills'''<br />
: OO-programming with m-files, Python, and possibly C/C++ for improving Pytave (if needed).<br />
* '''Difficulty'''<br />
: easy/medium<br />
* '''Mentors and/or other team members'''<br />
: Colin B. Macdonald, Mike Miller, Abhinav Tripathi<br />
<br />
=== Interval package ===<br />
<br />
The [[Interval_package|interval package]] provides several arithmetic functions with accurate and guaranteed error bounds. Its development started in the end of 2014 and there is some fundamental functionality left to be implemented. See the [http://octave.sourceforge.net/interval/overview.html list of functions], basically any missing numeric Octave function could be implemented as an interval extension in the package. Potential projects:<br />
* Make the package support N-dimensional arrays, this requires less knowledge of interval arithmetic but can be a rather exhaustive job since it affects most function files in the package<br />
* Implement missing algorithms (as m-files)—difficulty and whether knowledge in interval analysis is required depends on the particular function. Of course, you may use papers which present such algorithms.<br />
* Improve existing algorithms (support more options for plotting, support more options for optimizers, increase accuracy, …)<br />
* Integrate functions from VERSOFT [http://uivtx.cs.cas.cz/~rohn/matlab/] in the package (some work has already been done and current progress is tracked in [[Interval_package#VERSOFT]]). This basically involves conversion of the documentation into Texinfo format, use Octave coding guidelines [https://www.gnu.org/software/octave/doc/v4.0.0/Octave-Sources-_0028m_002dfiles_0029.html] and to make sure that any called functions are available in the interval package. VERSOFT is originally based on INTLAB, a proprietary Octave package. Some functions may be missing. Also, the interval package doesn't support complex numbers, so it might not be possible to migrate some functions.<br />
* List more interesting use cases of interval arithmetic in the package's manual [https://octave.sourceforge.io/interval/package_doc/Examples.html]<br />
<br />
* '''Required skills'''<br />
: m-file scripting, basic knowledge of computer arithmetics (especially floating-point computations), interval analysis (depending on the functions to implement).<br />
* '''Difficulty'''<br />
: Medium.<br />
* '''Mentor and co-mentor'''<br />
: [[User:oheim|Oliver Heimlich]], [[User:Siko1056|Kai T. Ohlhus]]<br />
<br />
== Infrastructure ==<br />
<br />
=== Jupyter Integration ===<br />
<br />
[http://jupyter.org Jupyter Notebook] is a web-based worksheet interface for computing. There is a [https://github.com/Calysto/octave_kernel Octave kernel for Jupyter]. This project seeks to improve that kernel to make Octave a first-class experience within the Jupyter Notebook.<br />
<br />
* '''Mentors'''<br />
: Colin B. Macdonald, Mike Miller, others?<br />
<br />
<br />
=== Using Python within Octave ===<br />
<br />
[https://bitbucket.org/mtmiller/pytave Pytave] allows one to call Python functions and interact with Python objects from within Octave .m file code and from the Octave command line interface. Ideally, Pytave will not be a separate project, but rather a core feature of Octave. This project aims to improve Pytave with the goal of merging the code into the core Octave code base. <br />
<br />
Based on a previous summer project related to Pytave, this work will consist of fast-paced collaborative software development based on tackling the [https://bitbucket.org/mtmiller/pytave/issues?status=new&status=open pytave issue list]. You would also be expected to participate in software design decisions and discussion, as well as improve documentation, doctests and unit tests. As an example of the sorts of decision decisions being made, note that Octave indexes from 1 whereas Python typically indexes from 0; in which cases is it appropriate to make this transparent to the user?<br />
<br />
* '''Mentors'''<br />
: Mike Miller, Colin B. Macdonald, Abhinav Tripathi, others?<br />
<br />
<br />
=== Octave Package management ===<br />
<br />
Octave management of installed packages is performed by a single function, {{codeline|pkg}}, which does pretty much everything. This function has a few limitations which are hard to implement with the current codebase, and will most likely require a full rewrite.<br />
<br />
The planned improvements are:<br />
<br />
* install from URLs<br />
* install and update from repositories (hg and git)<br />
* automatic handling of dependencies<br />
* easily load, update or check specific package versions<br />
* management of tests and demos in C++ sources of packages<br />
* more flexibility on dependencies, e.g., dependent on specific Octave build options or being dependent in one of multiple packages<br />
* support for multiple version packages<br />
* support for multiple Octave installs<br />
* support for system-wide and user installed packages<br />
<br />
The main objective of this project is to make {{codeline|pkg}} more user friendly and to make it a tool to foster third party participation in Octave.<br />
{{codeline|pkg}} needs to be more flexible and intelligent when dealing with packages, different verisons and different sources, as well as options on how to build and install the package.<br />
There are also advance features of pkg that are useful for testing packages. However, the current {{codeline|pkg}} also performs some maintenance functions which it probably should not.<br />
Instead a package for developers should be created with such tools.<br />
<br />
To do this enhacenment effectively, a refactoring of the current {{codeline|pkg}} code will be needed.<br />
[https://bitbucket.org/carandraug/octave/commits/branch/pkg This job was started once], but due to diverging and growing specifications, it stalled. <br />
In this project we will focus on the most needed features, keeping the requirements to a minimum. <br />
<br />
Many of these problems have been solved in other languages. Familiarity with how other languages handle this problem will be useful to come up with elegant solutions. In some cases, there are standards to follow. For example, there are specifications published by freedesktop.org about where files should go ([http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html base directory spec]) and Windows seems to have its own standards. See bugs {{bug|36477}} and {{bug|40444}} for more details.<br />
<br />
In addition, package names may start to collide very easily. One horrible way to workaround this by is choosing increasingly complex package names that give no hint on the package purpose. A much better is option is providing an Authority category like Perl 6 does. Nested packages is also an easy way to provide packages for specialized subjects (think {{codeline|image::morphology}}). A new {{codeline|pkg}} would think all this things now, or allow their implementation at a later time. Read the [[OEP:pkg|unfinished plan]] for more details.<br />
<br />
* '''Minimum requirements'''<br />
: Ability to read and write Octave code, experience with Octave packages, and understanding of the basics of autotools. The most important skill is software design.<br />
* '''Difficulty'''<br />
: Easy to Medium.<br />
* '''Mentor'''<br />
: [[User:KaKiLa|KaKiLa]], Carnë Draug, Carlo de Falco, Sebastian Schöps<br />
<br />
=== Command line suggestion feature ===<br />
<br />
Currently Octave has no mechanism for suggesting corrections to typographic errors on the command line. An autocomplete/suggestion function is provided (using the double-TAB shortcut), but recent discussions have indicated a desire for a more proactive measure to catch user error. Potential applicants are referred to bug {{bug|46881}} regarding the usage of grey vs. gray. <br />
<br />
Suggested improvements are:<br />
* provide one or more suggested corrections to the user when a command line entry produces an error.<br />
* recognition and suggested correction for apparent syntax errors<br />
* function suggestion(s) when a 'close' match is found (close remains to be defined)<br />
* multiple suggestions if more than one option seems likely, along with a user-friendly method of selecting the appropriate choice.<br />
* user selectable option to disable and/or customize the suggestion behavior<br />
* correct operation, or graceful degradation, whether Octave is run in GUI or command-line mode. <br />
<br />
As mentioned in the bug {{bug|46881}} discussion, this project has little-to-no relation to m-code compatibility. As such, emulation of the behavior of other software is not required, nor even necessarily desired. Octave is free to implement as simple or complex a solution to this feature request as is necessary to provide the best experience to the user. There may be tools, features, or code from other license-compatible projects that can be of use here, and the applicant would be encouraged to identify and leverage such resources as appropriate. <br />
<br />
* '''Minimum requirements'''<br />
: TBD<br />
* '''Difficulty'''<br />
: Easy to Medium.<br />
* '''Mentor'''<br />
: Undetermined<br />
<br />
<br />
=== Octave code sharing ===<br />
<br />
Recently, on the [[OctConf_2017]] a [https://rawgit.com/siko1056/Octconf2017/master/octconf2017-publish-ohlhus-slides.pdf talk] about uploading [https://www.gnu.org/software/octave/doc/interpreter/XREFpublish.html published Octave code] to a MediaWiki (like this one) as an easy way to share code was given. With the talk, a [https://github.com/siko1056/OctConf2017 repository] containing example code for the MediaWiki upload is given. This might continue the idea of an unfinished [[Agora]] code sharing website, but one is not restricted to fully stay with the proposed approach. Another, but more ambitious idea is for example [http://central.scipy.org/ Scipy Central] - a website for Scipy code sharing. Their [https://github.com/scipy/SciPyCentral Code] is released under a BSD license.<br />
<br />
* '''Minimum requirements'''<br />
: Ability to read and write Octave code, some familiarity with C++ ([https://curl.haxx.se libcurl]), web development (GET/POST/FORM data, cookies), and [https://www.mediawiki.org/wiki/MediaWiki MediaWiki].<br />
* '''Difficulty'''<br />
: Medium.<br />
* '''Mentor'''<br />
: [[User:Siko1056|Kai T. Ohlhus]]<br />
<br />
== Image Analysis ==<br />
<br />
=== Improvements to N-dimensional image processing ===<br />
<br />
The image package has partial functionality for N-dimensional images. These images exist for example in medical imaging where slices from scans are assembled to form anatomical 3D images. If taken over time and at different laser wavelengths or light filters, they can also result in 5D images. Albeit less common, images with even more dimensions also exist. However, their existence is irrelevant since most of the image processing operations are mathematical operations which are independent of the number of dimensions.<br />
<br />
As part of GSoC 2013, the core functions for image IO, {{codeline|imwrite}} and {{codeline|imread}}, were extended to better support this type of images. Likewise, many functions in the image package, mostly morphology operators, were expanded to deal with this type of image. Since then, many other functions have been improved, sometimes completely rewritten, to abstract from the number of dimensions. In a certain way, supporting ND images is also related to choosing good algorithms since such large images tend to be quite large.<br />
<br />
This project will continue on the previous work, and be mentored by the previous GSoC student and current image package maintainer. Planning the project requires selection of functions lacking ND support and identifying their dependencies. For example, supporting {{codeline|imclose}} and {{codeline|imopen}} was better implemented by supporting {{codeline|imerode}} and {{codeline|imdilate}} which then propagated ND support to all of its dependencies. These dependencies need to be discovered first since often they are not being used yet, and may even be missing function. This project can also be about implementing functions that have [http://wiki.octave.org/Image_package#Missing_functions not yet been implemented]. Also note that while some functions in the image package will accept ND images as input, they are actually not correctly implemented and will give incorrect results.<br />
<br />
* '''Required skills'''<br />
: m-file scripting, and a fair amount of C++ since a lot of image analysis cannot be vectorized. Familiarity with common CS algorithms and willingness to read literature describing new algorithms will be useful. <br />
* '''Difficulty'''<br />
: Difficult.<br />
* '''Potential mentor'''<br />
: Carnë Draug<br />
<br />
=== Improve Octave's image IO ===<br />
<br />
There are a lot of image formats. To handle this, Octave uses [http://www.graphicsmagick.org/ GraphicsMagic] (GM), a library capable of handling [http://www.graphicsmagick.org/formats.html a lot of them] in a single C++ interface. However, GraphicsMagick still has its limitations. The most important are:<br />
<br />
* GM has build option {{codeline|quantum}} which defines the bitdepth to use when reading an image. Building GM with high quantum means that images of smaller bitdepth will take a lot more memory when reading, but building it too low will make it impossible to read images of higher bitdepth. It also means that the image needs to always be rescaled to the correct range.<br />
* GM supports unsigned integers only thus incorrectly reading files such as TIFF with floating point data<br />
* GM hides away details of the image such as whether the image file is indexed. This makes it hard to access the real data stored on file.<br />
<br />
This project would implement better image IO for scientific file formats while leaving GM handle the others. Since TIFF is the de facto standard for scientific images, this should be done first. Among the targets for the project are:<br />
<br />
* implement the Tiff class which is a wrap around libtiff, using classdef. To avoid creating too many private __oct functions, this project could also create a C++ interface to declare new Octave classdef functions.<br />
* improve imread, imwrite, and imfinfo for tiff files using the newly created Tiff class<br />
* port the bioformats into Octave and prepare a package for it<br />
* investigate other image IO libraries<br />
* clean up and finish the dicom package to include into Octave core<br />
* prepare a matlab compatible implementation of the FITS package for inclusion in Octave core<br />
<br />
* '''Required skills'''<br />
: Knowledge of C++ and C since most libraries are written in those languages.<br />
* '''Difficulty'''<br />
: Medium.<br />
* '''Potential mentor'''<br />
: Carnë Draug<br />
<br />
<br />
<br />
<br />
<br />
<br />
<noinclude><br />
[[Category:Summer of Code]]<br />
[[Category:Project Ideas]]<br />
</noinclude></div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=Summer_of_Code_-_Getting_Started&diff=10591Summer of Code - Getting Started2018-01-03T07:22:25Z<p>KaKiLa: /* Adding functionality to Forge packages */</p>
<hr />
<div>The following is distilled from the [[Projects]] page for the benefit of potential [https://summerofcode.withgoogle.com Google] and [http://sophia.estec.esa.int/socis ESA] Summer of Code (SoC) students. Although students are welcome to attempt any of the projects in that page or any of their own choosing, here we offer some suggestions on what good student projects might be.<br />
<br />
= Steps Toward a Successful Application =<br />
<br />
== Help Us Get To Know You == <br />
*: If you aren't communicating with us before the application is due, your application will not be accepted.<br />
*:* '''Join the [https://lists.gnu.org/mailman/listinfo/octave-maintainers maintainers mailing list]''' or read the archives and see what topics we discuss and how the developers interact with each other.<br />
*:* '''Hang out in our [https://webchat.freenode.net/?channels=#octave IRC channel]'''. Ask questions, answer questions from users, show us that you are motivated, and well-prepared. There will be more applicants than we can effectively mentor, so do ask for feedback on your public application to increase the strength of your proposal!<br />
* '''Do not wait for us to tell you what to do'''<br />
*: You should be doing something that interests you, and should not need us to tell you what to do. Similarly, you shouldn't ask us what to do either.<br />
*:* When you email the list and mentors, do not write it to say on what project you're interested. Be specific about your questions and clear on the email subject. For example, do not write an email with the subject "GSoC student interested in the ND images projects". Such email is likely be ignored. Instead, show you are already working on the topic, and email "Problem implementing morphological operators with bitpacked ND images".<br />
*:* It is good to ask advice on how to solve something you can't but you must show some work done. Remember, we are mentors and not your boss. Read [http://www.catb.org/esr/faqs/smart-questions.html How to ask questions the smart way]:<br />
*:*: <blockquote cite="http://www.catb.org/esr/faqs/smart-questions.html">''Prepare your question. Think it through. Hasty-sounding questions get hasty answers, or none at all. The more you do to demonstrate that having put thought and effort into solving your problem before seeking help, the more likely you are to actually get help.''</blockquote><br />
*:* It can be difficult at the beginning to think on something to do. This is nature of free and open source software development. You will need to break the mental barrier that prevents you from thinking on what can be done. Once you do that, you will have no lack of ideas for what to do next.<br />
*:* Use Octave. Eventually you will come accross somethings that does not work the way you like. Fix that. Or you will come accross a missing function. Implement it. It may be a difficult problem (they usually are) but while solving that problem you may find other missing functions (). Implemenent and contribute those to Octave.<br />
*:* Take a look at the [[Short projects]] for something that may be simple to start with.<br />
== Find Something That Interests You == <br />
*: It's '''critical''' that you '''find a project that excites you'''. You'll be spending most of the summer working on it (we expect you to treat the SoC as a full-time job).<br />
*: Don't just tell us how interested you are, show us that you're willing and able to '''contribute''' to Octave. You can do that by [https://savannah.gnu.org/bugs/?group=octave fixing a few bugs] or [http://savannah.gnu.org/patch/?group=octave submitting patches] well before the deadline, in addition to regularly interacting with Octave maintainers and users on the mailing list and IRC. Our experience shows us that successful SoC students demonstrate their interest early and often.<br />
== Prepare Your Proposal With Us ==<br />
*: By working with us to prepare your proposal, you'll be getting to know us and showing us how you approach problems. The best place for this is your Wiki user page and the [https://webchat.freenode.net/?channels=#octave IRC channel].<br />
== Complete Your Application ==<br />
*: Fill out our '''''public''''' application template.<br />
*:* This is best done by '''[[Special:CreateAccount|creating an account at this wiki]]''', and copying the '''[[Template:Student_application_template_public|template]]''' from its page.<br />
*:* You really only need to copy and answer the '''''public''''' part there, there is no need to showcase everything else to everybody reading your user page!<br />
*: Fill out our '''''private''''' application template.<br />
*:* This is best done by copying the '''[[Template:Student_application_template_private|template]]''' from its page and '''adding the required information to your application at Google (melange)''' or at '''ESA'''.<br><br />
*:* Only the organization admin and the possible mentors will see this data. You can still edit it after submitting until the deadline!<br />
<br />
== Things You'll be Expected to Know or Quickly Learn On Your Own ==<br />
<br />
Octave is mostly written in C++ and its own scripting language that is mostly compatible with Matlab. There are bits and pieces of Fortran, Perl, C, awk, and Unix shell scripts here and there. In addition to being familiar with C++ and Octave's scripting language, successful applicants will be familiar with or able to quickly learn about Octave's infrastructure. You can't spend the whole summer learning how to build Octave or prepare a changeset and still successfully complete your project.<br />
<br />
* '''The Build System'''<br />
*: [http://en.wikipedia.org/wiki/GNU_build_system The GNU build system] is used to build Octave.<br />
*: While you generally don't need to understand too much unless you actually want to change how Octave is built, you should be able to understand enough to get a general idea of how to build Octave.<br />
*: If you've ever done a {{Codeline|configure && make && make install}} series of commands, you have already used the GNU build system.<br />
*: '''You must demonstrate that you are able to build the development version of Octave from sources before the application deadline.''' You will be able to find instructions how to it on this wiki, and the manual. Linux is arguably the easiest system to work on.<br />
*:* [[Building]]<br />
*:* [https://www.gnu.org/software/octave/doc/interpreter/Installation.html Octave Manual on Installing Octave]<br />
* '''The Version Control System'''<br />
*: We use [http://mercurial.selenic.com/ Mercurial] (abbreviated hg).<br />
*: Mercurial is the [http://en.wikipedia.org/wiki/Distributed_Version_Control_System distributed version control system] (DVCS) we use for managing our source code. You should have some basic understanding of how a DVCS works, but hg is pretty easy to pick up, especially if you already know a VCS like git or svn.<br />
* '''The Procedure for Contributing Changesets'''<br />
*: You will be expected to follow the same procedures as other contributors and core developers.<br />
*: You will be helping current and future Octave developers by using our standard style for changes, commit messages, and so on. You should also read the same [https://www.gnu.org/software/octave/doc/interpreter/Contributing-Guidelines.html contribution] [http://hg.savannah.gnu.org/hgweb/octave/file/tip/etc/HACKING guidelines] we have for everyone.<br />
*: [[Hg_instructions_for_mentors#Mercurial_Tips_for_SoC_students | This page]] describes the procedures students are expected to use to publicly display their progress in a public mercurial repo during their work.<br />
* '''The Maintainers Mailing List'''<br />
*: We primarily use [https://lists.gnu.org/mailman/listinfo/octave-maintainers mailing lists] for communication among developers.<br />
*: The mailing list is used most often for discussions about non-trivial changes to Octave, or for setting the direction of development.<br />
*: You should follow basic mailing list etiquette. For us, this mostly means "do not [https://en.wikipedia.org/wiki/Posting_style#Top-posting top post]".<br />
* '''The IRC Channel'''<br />
*: We also have [http://webchat.freenode.net?channels=octave the #octave IRC channel in Freenode].<br />
*: You should be familiar with the IRC channel. It's very helpful for new contributors (you) to get immediate feedback on ideas and code.<br />
*: Unless your primary mentor has a strong preference for some other method of communication, the IRC channel will likely be your primary means of communicating with your mentor and Octave developers.<br />
* '''The Octave Forge Project'''<br />
*: [http://octave.sf.net Octave-Forge] is a collection of contributed packages that enhance the capabilities of core Octave. They are somewhat analogous to Matlab's toolboxes.<br />
* '''Related Skills'''<br />
*: In addition, you probably should know '''some''' mathematics, engineering, experimental science, or something of the sort.<br />
*: If so, you probably have already been exposed to the kinds of problems that Octave is used for.<br />
<br />
== Criteria by which applications are judged ==<br />
<br />
These might vary somewhat depending on the mentors and coordinators for a particular Summer of Code, but typically the main factors considered would be:<br />
<br />
* '''Applicant has demonstrated an ability to make substantial modifications to Octave'''<br />
*: The most important thing is that you've contributed some interesting code samples to judge you by. It's OK during the application period to ask for help on how to format these code samples, which normally are Mercurial patches.<br />
<br />
* '''Applicant shows understanding of topic'''<br />
*: Your application should make it clear that you're reasonably well versed in the subject area and won't need all summer just to read up on it.<br />
<br />
* '''Applicant shows understanding of and interest in Octave development'''<br />
*: The best evidence for this is previous contributions and interactions.<br />
<br />
* '''Well thought out, adequately detailed, realistic project plan'''<br />
*: "I'm good at this, so trust me" isn't enough. You should describe which algorithms you'll use and how you'll integrate with existing Octave code. You should also prepare a full timeline and goals for the midterm and final evaluations.<br />
<br />
= Suggested projects =<br />
<br />
The following projects are broadly grouped by category and probable skills required to tackle each. Remember to check [[Projects]] for more ideas if none of these suit you, and your own ideas are always welcome.<br />
<br />
{{Note|these are suggested projects but you are welcome to propose your own projects provided you find an Octave mentor}}<br />
<br />
== Summary table ==<br />
<br />
{| class="wikitable sortable" style="text-align: center; width:99%"<br />
|-<br />
!Title<br />
!Mentor<br />
!co-Mentors<br />
!Class<br />
!New?<br />
!Difficulty<br />
!Last active<br />
|-<br />
! <br />!! !! !! !! !! !!<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Make_specfuns_special_again | Make specfuns special again]] || Marco Caliari || Colin Macdonald || Numerical || Yes || Medium || GSoC 2017<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#ode15s_:_Matlab_Compatible_DAE_solver | ode15{i,s} : Matlab Compatible DAE solvers]] || Carlo de Falco || Francesco Faccio, Marco Caliari, Jacopo Corno, Sebastian Schöps || Numerical || No || Medium || GSoC 2016<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Improve_logm.2C_sqrtm.2C_funm | Improve logm, sqrtm, funm]] || Jordi Gutiérrez Hermoso || Marco Caliari, Mudit Sharma || Numerical || [https://github.com/RickOne16/matrix No] || Hard || Independent devs 2016<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Improve_iterative_methods_for_sparse_linear_systems | Improve iterative methods for sparse linear systems]] || Marco Caliari || Carlo de Falco || Numerical || No || Hard || SOCIS 2016<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Neural Networks package: Convolutional Neural Networks | Neural Networks package: Convolutional Neural Networks]] || [[User:Francesco Faccio|Francesco Faccio]] || Ankit || Octave Forge || Yes || Hard|| Never<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#EPA_hydrology_software_suite | EPA hydrology software suite]] || [[User:KaKiLa| KaKiLa]] || ? || Octave Forge || Yes || Medium || Never<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#FullSWOF overland flow simulator | FullSWOF overland flow simulator]] || [[User:KaKiLa| KaKiLa]] || ? || Octave Forge || Yes || Medium || Never<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#TISEAN_package | TISEAN: Nonlinear Time Series Analysis]] || [[User:KaKiLa|KaKiLa]] || ? || Octave Forge || [[TISEAN_package | No]] || Medium || GSoC 2015<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Octave_Package_management | Octave Package management]] || Sebastian Schöps || [[User:KaKiLa|KaKiLa]], Carnë Draug, Carlo de Falco || Infrastructure || Yes || Medium || Never<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Symbolic_package | Symbolic package]] || Colin B. Macdonald || Mike Miller, Abhinav Tripathi || Octave Forge || [https://github.com/cbm755/octsympy Octsympy] || Medium || GSoC 2016<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Interval_package | Interval package]] || [[User:oheim|Oliver Heimlich]] || [[User:Siko1056|Kai T. Ohlhus]] || Octave Forge, Numerical || Yes || Medium || Never<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Using_Python_within_Octave | Pytave project]] || Mike Miller || Colin B. Macdonald, Abhinav Tripathi || Infrastructure || No || Medium || some in GSoC 2016<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Jupyter_Integration | Jupyter integration]] || Mike Miller || Colin B. Macdonald || Infrastructure || Yes || Medium || Never<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Chebfun_in_Octave | Chebfun in Octave]] || Colin B. Macdonald || [[User:KaKiLa|KaKiLa]], needs core-Octave mentor/comentor || Infrastructure, Numerical || Yes || Hard || Never<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Octave_code_sharing | Octave code sharing]] || [[User:Siko1056|Kai T. Ohlhus]] || ? || Infrastructure || Yes || Medium || Never<br />
|}<br />
<br />
== Numerical ==<br />
<br />
These projects involve implementing certain mathematical functions, primarily in core Octave.<br />
<br />
=== Make specfuns special again ===<br />
<br />
Traditionally, problem solving environments like Octave provide simple interfaces to numerical linear algebra, special function evaluation, root finding, and other tools. Special functions (such as Bessel functions, exponential integrals, LambertW, etc) are expected by users to "just work". But many of Octave's special functions could be improved to improve their numerical accuracy. Generally a user might expect these to be accurate to full 15 digits. Software testing is important to Octave; this project would improve the tests of many special functions, in particular by comparing the output with slow-but-accurate symbolic computations.<br />
<br />
State: some bugs include [https://savannah.gnu.org/bugs/?48307 #48307] (sinc), [https://savannah.gnu.org/bugs/?47738 #47738] (expint), [https://savannah.gnu.org/bugs/?47800 #47800] (gammainc), [https://savannah.gnu.org/bugs/?48036 #48036] (gammaincinv) [https://savannah.gnu.org/bugs/index.php?48316 #48316] (besselj) ''TODO: add others?'' The unmaintained specfun pkg had some poor implementations (e.g., divergence for large x, see [https://github.com/cbm755/octsympy/issues/416].). See also the Symbolic functions in `@double`: these probably should have native double implementations.<br />
<br />
* '''Required skills'''<br />
: Octave m-file programming, some familiarity with Approximation Theory (a branch of mathematics).<br />
* '''Difficulty'''<br />
: Medium (mathematics needed, but on the other hand, perhaps little or no C++).<br />
* '''Potential mentors'''<br />
: Marco Caliari, Colin Macdonald, others?<br />
<br />
How to get started: pick a special function, see if it has tests: contribute a patch that adds more tests, e.g., comparing its values to symbolic computations or other highly accurate solutions<br />
<br />
=== ode15{i,s} : Matlab Compatible DAE solvers ===<br />
<br />
An initial implementation of a Matlab compatible ode15{i,s} solver,<br />
based on [http://computation.llnl.gov/projects/sundials SUNDIALS], <br />
was done by Francesco Faccio during<br />
GSOC 2016.<br />
The blog describing the work is [http://gsoc2016ode15s.blogspot.it/ here].<br />
The resulting code has been pushed into the main Octave repository in the development branch and<br />
consists mainly of the following three files<br />
[http://hg.savannah.gnu.org/hgweb/octave/file/4890b1c4a6bd/libinterp/dldfcn/__ode15__.cc __ode15__.cc],<br />
[http://hg.savannah.gnu.org/hgweb/octave/file/4890b1c4a6bd/scripts/ode/ode15i.m ode15i.m] and<br />
[http://hg.savannah.gnu.org/hgweb/octave/file/4890b1c4a6bd/scripts/ode/ode15s.m ode15s.m].<br />
The list of outsanding tracker tickets concerning this implementation can be found <br />
[https://savannah.gnu.org/search/?Search=Search&words=ode15&type_of_search=bugs&only_group_id=1925&exact=1&max_rows=25#options here]<br />
<br />
Possible useful improvements that could be done in a new project include:<br />
<br />
* Implement a better funtion for selecting consistent initial conditions compatible with Matlab's decic.m. The algorithm to use is described [http://faculty.smu.edu/shampine/cic.pdf here]<br />
<br />
* make ode15{i,s} with datatypes other than double<br />
<br />
* improve interpolation at intermediate time steps.<br />
<br />
* general code profiling and optimization <br />
<br />
Other tasks, not strictly connected to ode15{i,s} but closely related that could be added <br />
to a possible project plan would be improving documentation and tests in odepkg and removing <br />
overlaps with the documentation in core Octave.<br />
<br />
<br />
* '''Required skills'''<br />
: C++; C; familiarity with numerical methods for DAEs; Basic knowledge of makefiles and/or autotools.<br />
* '''Difficulty'''<br />
: Medium.<br />
* '''Potential mentors'''<br />
: Francesco Faccio, Carlo de Falco, Marco Caliari, Jacopo Corno, Sebastian Schöps<br />
<br />
=== Improve logm, sqrtm, funm ===<br />
<br />
The goal here is to implement some missing Matlab functions related to matrix functions like the [http://en.wikipedia.org/wiki/Matrix_exponential matrix exponential]. There is [http://octave.1599824.n4.nabble.com/matrix-functions-td3137935.html a general discussion] of the problem. A good starting point for available algorithms and open-source implementations is Higham and Deadman's [http://eprints.ma.man.ac.uk/2102/01/covered/MIMS_ep2014_8.pdf "A Catalogue of Software for Matrix Functions"].<br />
<br />
* '''Required skills'''<br />
: Read and Write both C++ and Octave code, find and read research papers, research experience in numerical analysis, familiarity with analysis of algorithms.<br />
* '''Difficulty'''<br />
: Difficult.<br />
* '''Potential mentors'''<br />
: Jordi Gutiérrez Hermoso<br />
<br />
=== Improve iterative methods for sparse linear systems ===<br />
<br />
GNU Octave currently has the following Krylov subspace methods for sparse linear systems: pcg (spd matrices) and pcr (Hermitian matrices), bicg,<br />
bicgstab, cgs, gmres, and qmr (general matrices). The description of some of them (pcr, qmr) and their error messages are not aligned. Moreover, they have similar blocks of code (input check for instance) which can be written once and for all in common functions. The first step in this project could be a revision and a synchronization of the codes, starting from the project [http://planet.octave.org/#tag:blogger.com,1999:blog-1297699247151766814.post-8054019978706480250 SOCIS2016], whose latest patch, still to be included, is [https://savannah.gnu.org/patch/?9108 here].<br />
<br />
In Matlab, some additional methods are available: minres and symmlq (symmetric matrices), bicgstabl (general matrices), lsqr (least<br />
squares). The second step in this project could be the implementation of some of these missing functions.<br />
<br />
The reference book is available [www-users.cs.umn.edu/~saad/IterMethBook_2ndEd.pdf here]<br />
<br />
* '''Required skills'''<br />
: numerical linear algebra, m-file programming.<br />
* '''Difficulty'''<br />
: Maybe hard the mathematical part, medium the programming part.<br />
* '''Mentor'''<br />
:<br />
<br />
=== Chebfun in Octave ===<br />
<br />
[https://chebfun.org Chebfun] is a mathematics and software project for "numerical computing with functions". Basically it approximates functions to machine precision accuracy (10<sup>-15</sup>) using piecewise Chebyshev polynomial interpolants. Operations on those functions (arithmetic, derivatives, root-finding, etc) are then overloaded and return new interpolating polynomials, which are themselves proxies for the actual solution.<br />
<br />
Chebfun makes extensive use of classdef classes, and is one of the largest Free Software projects to do so. Unfortunately it currently only works in Matlab. This project seeks to (1) improve Octave's classdef support and (2) tweak Chebfun to work under Octave, for example, removing undocumented classdef features. The final goal is to have at least basic Chebfun features working on Octave. An additional goal would be making "pkg install chebfun.zip" work in Octave.<br />
<br />
This project is important for both technical reasons (to improve Octave's classdef support) and ethical reasons (to allow Chebfun to run without proprietary software).<br />
<br />
* '''Required skills'''<br />
: Octave m-file programming, C++, some familiarity with Approximation Theory (a branch of mathematics).<br />
* '''Difficulty'''<br />
: Medium to Hard (probably requires a deep dive into how Octave supports OO).<br />
* '''Potential mentors'''<br />
: Colin B. Macdonald, [[User:KaKiLa|KaKiLa]], Mike Miller (?), Carnë Draug (?), someone from Chebfun team (?).<br />
<br />
How to get started: learn about Chebfun, browse Octave's bug list for classdef-related bugs, play with other classdef projects (Pytave, https://github.com/cbm755/octsympy/issues/545)<br />
<br />
== Adding functionality to Forge packages ==<br />
<br />
=== Neural Networks package: Convolutional Neural Networks ===<br />
Convolutional Neural Networks (CNNs) have recently become the state-of-the-art for image recognition and are widely used for solving classification and regression problems and for [https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/tutorials/deepdream/deepdream.ipynb image generation]. The goal of the project is to implement a [https://it.mathworks.com/help/nnet/convolutional-neural-networks.html Matlab compatible] CNN toolbox using Google's library [https://www.tensorflow.org/ TensorFlow], which has a Python and C++ interface. As execution environment for the training function, the user will be able to choose between single/multiple CPUs and GPUs.<br />
* '''Required skills'''<br />
: C, C++, Python, m-file scripting, familiarity with Machine Learning algorithms, basic knowledge of Makefiles, experience with parallel computing and distributed systems.<br />
* '''Difficulty'''<br />
: Difficult.<br />
* '''Mentors'''<br />
: [[User:Francesco Faccio|Francesco Faccio]], Ankit<br />
<br />
=== EPA hydrology software suite ===<br />
Create native interfaces to the EPA software suites.<br />
<br />
Starting points<br />
* [https://forja.cica.es/projects/epanet-octave/ epanet-octave].<br />
* [https://github.com/OpenWaterAnalytics/ Open Water Analytics]<br />
<br />
==== SWMM ====<br />
** [https://www.epa.gov/water-research/storm-water-management-model-swmm Official page]<br />
** Check work done in [https://github.com/water-systems/MatSWMM MatSWMM] [http://digital.csic.es/bitstream/10261/132982/1/MatSWMM.pdf article]<br />
<br />
====EPANET====<br />
** [https://www.epa.gov/water-research/epanet Official page]<br />
<br />
====Required skills====<br />
: m-file scripting, C, C++, API knowledge, file I/O, classdef (optional). <br />
<br />
====Difficulty====<br />
: easy/medium<br />
<br />
====Mentor====<br />
: [[User:KaKiLa|KaKiLa]]<br />
<br />
=== FullSWOF overland flow simulator ===<br />
Create scripting tools for (optional: native interfaces).<br />
<br />
Starting points<br />
* [http://www.univ-orleans.fr/mapmo/soft/FullSWOF/ The FullSWOF Project].<br />
* [https://arxiv.org/abs/1204.3210 FullSWOF: A software for overland flow simulation]<br />
* [https://bitbucket.org/binello7/fswof2d Initial work on Bitbucket]<br />
<br />
====Required skills====<br />
: m-file scripting, C, C++, API knowledge, file I/O, classdef (optional). <br />
<br />
====Difficulty====<br />
: easy/medium<br />
<br />
====Mentor====<br />
: [[User:KaKiLa|KaKiLa]]<br />
<br />
=== TISEAN package ===<br />
<br />
[http://www.mpipks-dresden.mpg.de/~tisean/Tisean_3.0.1/index.html TISEAN] is a suite of code for nonlinear time series analysis. It has been [http://wiki.octave.org/TISEAN_package partially re-implemented] as libre software. The objective is to integrate TISEAN as an Octave Forge package, as was done for the Control package.<br />
[[TISEAN_package | A lot has been completed]] but [[TISEAN_package:Procedure | there is still work left to do]].<br />
<br />
There are missing functions to do computations on spike trains, to simulate autoregresive models, to create specialized plots, etc. Do check [[TISEAN_package:Procedure#Table_of_functions|the progress of the project]] to see if you are interested.<br />
<br />
* [http://octave.sourceforge.net/tisean/overview.html Package help at source forge.] <br />
* [https://sourceforge.net/p/octave/tisean/ci/default/tree/ Package repository at source forge.] <br />
<br />
* '''Required skills'''<br />
: m-file scripting, C, C++, and FORTRAN API knowledge. <br />
* '''Difficulty'''<br />
: easy/medium<br />
* '''Mentor'''<br />
: [[User:KaKiLa|KaKiLa]]<br />
<br />
=== Symbolic package ===<br />
<br />
Octave's [https://github.com/cbm755/octsympy Symbolic package] handles symbolic computing and other CAS tools. The main component of Symbolic is a pure m-file class "@sym" which uses the Python package [https://www.sympy.org SymPy] to do (most of) the actual computations. The package aims to expose the full functionality of SymPy while also providing a high-level of compatibility with the Matlab Symbolic Math Toolbox. The Symbolic package requires communication between Octave and Python. Recently, a GSoC2016 project successfully re-implemented this communication using the new [https://bitbucket.org/mtmiller/pytave Pytave tool].<br />
<br />
This project proposes to go further: instead of using Pytave only for the communication layer, we'll use it throughout the Symbolic project. For example, we might make "@sym" a subclass of "@pyobject". We also could stop using the "python_cmd" interface and use Pytave directly from methods. The main goal was already mentioned: to expose the *full functionality* of SymPy. For example, we would allow OO-style method calls such as "f.diff(x)" instead of "diff(f, x)".<br />
<br />
* '''Required skills'''<br />
: OO-programming with m-files, Python, and possibly C/C++ for improving Pytave (if needed).<br />
* '''Difficulty'''<br />
: easy/medium<br />
* '''Mentors and/or other team members'''<br />
: Colin B. Macdonald, Mike Miller, Abhinav Tripathi<br />
<br />
=== Interval package ===<br />
<br />
The [[Interval_package|interval package]] provides several arithmetic functions with accurate and guaranteed error bounds. Its development started in the end of 2014 and there is some fundamental functionality left to be implemented. See the [http://octave.sourceforge.net/interval/overview.html list of functions], basically any missing numeric Octave function could be implemented as an interval extension in the package. Potential projects:<br />
* Make the package support N-dimensional arrays, this requires less knowledge of interval arithmetic but can be a rather exhaustive job since it affects most function files in the package<br />
* Implement missing algorithms (as m-files)—difficulty and whether knowledge in interval analysis is required depends on the particular function. Of course, you may use papers which present such algorithms.<br />
* Improve existing algorithms (support more options for plotting, support more options for optimizers, increase accuracy, …)<br />
* Integrate functions from VERSOFT [http://uivtx.cs.cas.cz/~rohn/matlab/] in the package (some work has already been done and current progress is tracked in [[Interval_package#VERSOFT]]). This basically involves conversion of the documentation into Texinfo format, use Octave coding guidelines [https://www.gnu.org/software/octave/doc/v4.0.0/Octave-Sources-_0028m_002dfiles_0029.html] and to make sure that any called functions are available in the interval package. VERSOFT is originally based on INTLAB, a proprietary Octave package. Some functions may be missing. Also, the interval package doesn't support complex numbers, so it might not be possible to migrate some functions.<br />
* List more interesting use cases of interval arithmetic in the package's manual [https://octave.sourceforge.io/interval/package_doc/Examples.html]<br />
<br />
* '''Required skills'''<br />
: m-file scripting, basic knowledge of computer arithmetics (especially floating-point computations), interval analysis (depending on the functions to implement).<br />
* '''Difficulty'''<br />
: Medium.<br />
* '''Mentor and co-mentor'''<br />
: [[User:oheim|Oliver Heimlich]], [[User:Siko1056|Kai T. Ohlhus]]<br />
<br />
== Infrastructure ==<br />
<br />
=== Jupyter Integration ===<br />
<br />
[http://jupyter.org Jupyter Notebook] is a web-based worksheet interface for computing. There is a [https://github.com/Calysto/octave_kernel Octave kernel for Jupyter]. This project seeks to improve that kernel to make Octave a first-class experience within the Jupyter Notebook.<br />
<br />
* '''Mentors'''<br />
: Colin B. Macdonald, Mike Miller, others?<br />
<br />
<br />
=== Using Python within Octave ===<br />
<br />
[https://bitbucket.org/mtmiller/pytave Pytave] allows one to call Python functions and interact with Python objects from within Octave .m file code and from the Octave command line interface. Ideally, Pytave will not be a separate project, but rather a core feature of Octave. This project aims to improve Pytave with the goal of merging the code into the core Octave code base. <br />
<br />
Based on a previous summer project related to Pytave, this work will consist of fast-paced collaborative software development based on tackling the [https://bitbucket.org/mtmiller/pytave/issues?status=new&status=open pytave issue list]. You would also be expected to participate in software design decisions and discussion, as well as improve documentation, doctests and unit tests. As an example of the sorts of decision decisions being made, note that Octave indexes from 1 whereas Python typically indexes from 0; in which cases is it appropriate to make this transparent to the user?<br />
<br />
* '''Mentors'''<br />
: Mike Miller, Colin B. Macdonald, Abhinav Tripathi, others?<br />
<br />
<br />
=== Octave Package management ===<br />
<br />
Octave management of installed packages is performed by a single function, {{codeline|pkg}}, which does pretty much everything. This function has a few limitations which are hard to implement with the current codebase, and will most likely require a full rewrite.<br />
<br />
The planned improvements are:<br />
<br />
* install from URLs<br />
* install and update from repositories (hg and git)<br />
* automatic handling of dependencies<br />
* easily load, update or check specific package versions<br />
* management of tests and demos in C++ sources of packages<br />
* more flexibility on dependencies, e.g., dependent on specific Octave build options or being dependent in one of multiple packages<br />
* support for multiple version packages<br />
* support for multiple Octave installs<br />
* support for system-wide and user installed packages<br />
<br />
The main objective of this project is to make {{codeline|pkg}} more user friendly and to make it a tool to foster third party participation in Octave.<br />
{{codeline|pkg}} needs to be more flexible and intelligent when dealing with packages, different verisons and different sources, as well as options on how to build and install the package.<br />
There are also advance features of pkg that are useful for testing packages. However, the current {{codeline|pkg}} also performs some maintenance functions which it probably should not.<br />
Instead a package for developers should be created with such tools.<br />
<br />
To do this enhacenment effectively, a refactoring of the current {{codeline|pkg}} code will be needed.<br />
[https://bitbucket.org/carandraug/octave/commits/branch/pkg This job was started once], but due to diverging and growing specifications, it stalled. <br />
In this project we will focus on the most needed features, keeping the requirements to a minimum. <br />
<br />
Many of these problems have been solved in other languages. Familiarity with how other languages handle this problem will be useful to come up with elegant solutions. In some cases, there are standards to follow. For example, there are specifications published by freedesktop.org about where files should go ([http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html base directory spec]) and Windows seems to have its own standards. See bugs {{bug|36477}} and {{bug|40444}} for more details.<br />
<br />
In addition, package names may start to collide very easily. One horrible way to workaround this by is choosing increasingly complex package names that give no hint on the package purpose. A much better is option is providing an Authority category like Perl 6 does. Nested packages is also an easy way to provide packages for specialized subjects (think {{codeline|image::morphology}}). A new {{codeline|pkg}} would think all this things now, or allow their implementation at a later time. Read the [[OEP:pkg|unfinished plan]] for more details.<br />
<br />
* '''Minimum requirements'''<br />
: Ability to read and write Octave code, experience with Octave packages, and understanding of the basics of autotools. The most important skill is software design.<br />
* '''Difficulty'''<br />
: Easy to Medium.<br />
* '''Mentor'''<br />
: [[User:KaKiLa|KaKiLa]], Carnë Draug, Carlo de Falco, Sebastian Schöps<br />
<br />
=== Command line suggestion feature ===<br />
<br />
Currently Octave has no mechanism for suggesting corrections to typographic errors on the command line. An autocomplete/suggestion function is provided (using the double-TAB shortcut), but recent discussions have indicated a desire for a more proactive measure to catch user error. Potential applicants are referred to bug {{bug|46881}} regarding the usage of grey vs. gray. <br />
<br />
Suggested improvements are:<br />
* provide one or more suggested corrections to the user when a command line entry produces an error.<br />
* recognition and suggested correction for apparent syntax errors<br />
* function suggestion(s) when a 'close' match is found (close remains to be defined)<br />
* multiple suggestions if more than one option seems likely, along with a user-friendly method of selecting the appropriate choice.<br />
* user selectable option to disable and/or customize the suggestion behavior<br />
* correct operation, or graceful degradation, whether Octave is run in GUI or command-line mode. <br />
<br />
As mentioned in the bug {{bug|46881}} discussion, this project has little-to-no relation to m-code compatibility. As such, emulation of the behavior of other software is not required, nor even necessarily desired. Octave is free to implement as simple or complex a solution to this feature request as is necessary to provide the best experience to the user. There may be tools, features, or code from other license-compatible projects that can be of use here, and the applicant would be encouraged to identify and leverage such resources as appropriate. <br />
<br />
* '''Minimum requirements'''<br />
: TBD<br />
* '''Difficulty'''<br />
: Easy to Medium.<br />
* '''Mentor'''<br />
: Undetermined<br />
<br />
<br />
=== Octave code sharing ===<br />
<br />
Recently, on the [[OctConf_2017]] a [https://rawgit.com/siko1056/Octconf2017/master/octconf2017-publish-ohlhus-slides.pdf talk] about uploading [https://www.gnu.org/software/octave/doc/interpreter/XREFpublish.html published Octave code] to a MediaWiki (like this one) as an easy way to share code was given. With the talk, a [https://github.com/siko1056/OctConf2017 repository] containing example code for the MediaWiki upload is given. This might continue the idea of an unfinished [[Agora]] code sharing website, but one is not restricted to fully stay with the proposed approach. Another, but more ambitious idea is for example [http://central.scipy.org/ Scipy Central] - a website for Scipy code sharing. Their [https://github.com/scipy/SciPyCentral Code] is released under a BSD license.<br />
<br />
* '''Minimum requirements'''<br />
: Ability to read and write Octave code, some familiarity with C++ ([https://curl.haxx.se libcurl]), web development (GET/POST/FORM data, cookies), and [https://www.mediawiki.org/wiki/MediaWiki MediaWiki].<br />
* '''Difficulty'''<br />
: Medium.<br />
* '''Mentor'''<br />
: [[User:Siko1056|Kai T. Ohlhus]]<br />
<br />
== Image Analysis ==<br />
<br />
=== Improvements to N-dimensional image processing ===<br />
<br />
The image package has partial functionality for N-dimensional images. These images exist for example in medical imaging where slices from scans are assembled to form anatomical 3D images. If taken over time and at different laser wavelengths or light filters, they can also result in 5D images. Albeit less common, images with even more dimensions also exist. However, their existence is irrelevant since most of the image processing operations are mathematical operations which are independent of the number of dimensions.<br />
<br />
As part of GSoC 2013, the core functions for image IO, {{codeline|imwrite}} and {{codeline|imread}}, were extended to better support this type of images. Likewise, many functions in the image package, mostly morphology operators, were expanded to deal with this type of image. Since then, many other functions have been improved, sometimes completely rewritten, to abstract from the number of dimensions. In a certain way, supporting ND images is also related to choosing good algorithms since such large images tend to be quite large.<br />
<br />
This project will continue on the previous work, and be mentored by the previous GSoC student and current image package maintainer. Planning the project requires selection of functions lacking ND support and identifying their dependencies. For example, supporting {{codeline|imclose}} and {{codeline|imopen}} was better implemented by supporting {{codeline|imerode}} and {{codeline|imdilate}} which then propagated ND support to all of its dependencies. These dependencies need to be discovered first since often they are not being used yet, and may even be missing function. This project can also be about implementing functions that have [http://wiki.octave.org/Image_package#Missing_functions not yet been implemented]. Also note that while some functions in the image package will accept ND images as input, they are actually not correctly implemented and will give incorrect results.<br />
<br />
* '''Required skills'''<br />
: m-file scripting, and a fair amount of C++ since a lot of image analysis cannot be vectorized. Familiarity with common CS algorithms and willingness to read literature describing new algorithms will be useful. <br />
* '''Difficulty'''<br />
: Difficult.<br />
* '''Potential mentor'''<br />
: Carnë Draug<br />
<br />
=== Improve Octave's image IO ===<br />
<br />
There are a lot of image formats. To handle this, Octave uses [http://www.graphicsmagick.org/ GraphicsMagic] (GM), a library capable of handling [http://www.graphicsmagick.org/formats.html a lot of them] in a single C++ interface. However, GraphicsMagick still has its limitations. The most important are:<br />
<br />
* GM has build option {{codeline|quantum}} which defines the bitdepth to use when reading an image. Building GM with high quantum means that images of smaller bitdepth will take a lot more memory when reading, but building it too low will make it impossible to read images of higher bitdepth. It also means that the image needs to always be rescaled to the correct range.<br />
* GM supports unsigned integers only thus incorrectly reading files such as TIFF with floating point data<br />
* GM hides away details of the image such as whether the image file is indexed. This makes it hard to access the real data stored on file.<br />
<br />
This project would implement better image IO for scientific file formats while leaving GM handle the others. Since TIFF is the de facto standard for scientific images, this should be done first. Among the targets for the project are:<br />
<br />
* implement the Tiff class which is a wrap around libtiff, using classdef. To avoid creating too many private __oct functions, this project could also create a C++ interface to declare new Octave classdef functions.<br />
* improve imread, imwrite, and imfinfo for tiff files using the newly created Tiff class<br />
* port the bioformats into Octave and prepare a package for it<br />
* investigate other image IO libraries<br />
* clean up and finish the dicom package to include into Octave core<br />
* prepare a matlab compatible implementation of the FITS package for inclusion in Octave core<br />
<br />
* '''Required skills'''<br />
: Knowledge of C++ and C since most libraries are written in those languages.<br />
* '''Difficulty'''<br />
: Medium.<br />
* '''Potential mentor'''<br />
: Carnë Draug<br />
<br />
<br />
<br />
<br />
<br />
<br />
<noinclude><br />
[[Category:Summer of Code]]<br />
[[Category:Project Ideas]]<br />
</noinclude></div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=Summer_of_Code_-_Getting_Started&diff=10590Summer of Code - Getting Started2018-01-03T07:17:29Z<p>KaKiLa: /* Summary table */</p>
<hr />
<div>The following is distilled from the [[Projects]] page for the benefit of potential [https://summerofcode.withgoogle.com Google] and [http://sophia.estec.esa.int/socis ESA] Summer of Code (SoC) students. Although students are welcome to attempt any of the projects in that page or any of their own choosing, here we offer some suggestions on what good student projects might be.<br />
<br />
= Steps Toward a Successful Application =<br />
<br />
== Help Us Get To Know You == <br />
*: If you aren't communicating with us before the application is due, your application will not be accepted.<br />
*:* '''Join the [https://lists.gnu.org/mailman/listinfo/octave-maintainers maintainers mailing list]''' or read the archives and see what topics we discuss and how the developers interact with each other.<br />
*:* '''Hang out in our [https://webchat.freenode.net/?channels=#octave IRC channel]'''. Ask questions, answer questions from users, show us that you are motivated, and well-prepared. There will be more applicants than we can effectively mentor, so do ask for feedback on your public application to increase the strength of your proposal!<br />
* '''Do not wait for us to tell you what to do'''<br />
*: You should be doing something that interests you, and should not need us to tell you what to do. Similarly, you shouldn't ask us what to do either.<br />
*:* When you email the list and mentors, do not write it to say on what project you're interested. Be specific about your questions and clear on the email subject. For example, do not write an email with the subject "GSoC student interested in the ND images projects". Such email is likely be ignored. Instead, show you are already working on the topic, and email "Problem implementing morphological operators with bitpacked ND images".<br />
*:* It is good to ask advice on how to solve something you can't but you must show some work done. Remember, we are mentors and not your boss. Read [http://www.catb.org/esr/faqs/smart-questions.html How to ask questions the smart way]:<br />
*:*: <blockquote cite="http://www.catb.org/esr/faqs/smart-questions.html">''Prepare your question. Think it through. Hasty-sounding questions get hasty answers, or none at all. The more you do to demonstrate that having put thought and effort into solving your problem before seeking help, the more likely you are to actually get help.''</blockquote><br />
*:* It can be difficult at the beginning to think on something to do. This is nature of free and open source software development. You will need to break the mental barrier that prevents you from thinking on what can be done. Once you do that, you will have no lack of ideas for what to do next.<br />
*:* Use Octave. Eventually you will come accross somethings that does not work the way you like. Fix that. Or you will come accross a missing function. Implement it. It may be a difficult problem (they usually are) but while solving that problem you may find other missing functions (). Implemenent and contribute those to Octave.<br />
*:* Take a look at the [[Short projects]] for something that may be simple to start with.<br />
== Find Something That Interests You == <br />
*: It's '''critical''' that you '''find a project that excites you'''. You'll be spending most of the summer working on it (we expect you to treat the SoC as a full-time job).<br />
*: Don't just tell us how interested you are, show us that you're willing and able to '''contribute''' to Octave. You can do that by [https://savannah.gnu.org/bugs/?group=octave fixing a few bugs] or [http://savannah.gnu.org/patch/?group=octave submitting patches] well before the deadline, in addition to regularly interacting with Octave maintainers and users on the mailing list and IRC. Our experience shows us that successful SoC students demonstrate their interest early and often.<br />
== Prepare Your Proposal With Us ==<br />
*: By working with us to prepare your proposal, you'll be getting to know us and showing us how you approach problems. The best place for this is your Wiki user page and the [https://webchat.freenode.net/?channels=#octave IRC channel].<br />
== Complete Your Application ==<br />
*: Fill out our '''''public''''' application template.<br />
*:* This is best done by '''[[Special:CreateAccount|creating an account at this wiki]]''', and copying the '''[[Template:Student_application_template_public|template]]''' from its page.<br />
*:* You really only need to copy and answer the '''''public''''' part there, there is no need to showcase everything else to everybody reading your user page!<br />
*: Fill out our '''''private''''' application template.<br />
*:* This is best done by copying the '''[[Template:Student_application_template_private|template]]''' from its page and '''adding the required information to your application at Google (melange)''' or at '''ESA'''.<br><br />
*:* Only the organization admin and the possible mentors will see this data. You can still edit it after submitting until the deadline!<br />
<br />
== Things You'll be Expected to Know or Quickly Learn On Your Own ==<br />
<br />
Octave is mostly written in C++ and its own scripting language that is mostly compatible with Matlab. There are bits and pieces of Fortran, Perl, C, awk, and Unix shell scripts here and there. In addition to being familiar with C++ and Octave's scripting language, successful applicants will be familiar with or able to quickly learn about Octave's infrastructure. You can't spend the whole summer learning how to build Octave or prepare a changeset and still successfully complete your project.<br />
<br />
* '''The Build System'''<br />
*: [http://en.wikipedia.org/wiki/GNU_build_system The GNU build system] is used to build Octave.<br />
*: While you generally don't need to understand too much unless you actually want to change how Octave is built, you should be able to understand enough to get a general idea of how to build Octave.<br />
*: If you've ever done a {{Codeline|configure && make && make install}} series of commands, you have already used the GNU build system.<br />
*: '''You must demonstrate that you are able to build the development version of Octave from sources before the application deadline.''' You will be able to find instructions how to it on this wiki, and the manual. Linux is arguably the easiest system to work on.<br />
*:* [[Building]]<br />
*:* [https://www.gnu.org/software/octave/doc/interpreter/Installation.html Octave Manual on Installing Octave]<br />
* '''The Version Control System'''<br />
*: We use [http://mercurial.selenic.com/ Mercurial] (abbreviated hg).<br />
*: Mercurial is the [http://en.wikipedia.org/wiki/Distributed_Version_Control_System distributed version control system] (DVCS) we use for managing our source code. You should have some basic understanding of how a DVCS works, but hg is pretty easy to pick up, especially if you already know a VCS like git or svn.<br />
* '''The Procedure for Contributing Changesets'''<br />
*: You will be expected to follow the same procedures as other contributors and core developers.<br />
*: You will be helping current and future Octave developers by using our standard style for changes, commit messages, and so on. You should also read the same [https://www.gnu.org/software/octave/doc/interpreter/Contributing-Guidelines.html contribution] [http://hg.savannah.gnu.org/hgweb/octave/file/tip/etc/HACKING guidelines] we have for everyone.<br />
*: [[Hg_instructions_for_mentors#Mercurial_Tips_for_SoC_students | This page]] describes the procedures students are expected to use to publicly display their progress in a public mercurial repo during their work.<br />
* '''The Maintainers Mailing List'''<br />
*: We primarily use [https://lists.gnu.org/mailman/listinfo/octave-maintainers mailing lists] for communication among developers.<br />
*: The mailing list is used most often for discussions about non-trivial changes to Octave, or for setting the direction of development.<br />
*: You should follow basic mailing list etiquette. For us, this mostly means "do not [https://en.wikipedia.org/wiki/Posting_style#Top-posting top post]".<br />
* '''The IRC Channel'''<br />
*: We also have [http://webchat.freenode.net?channels=octave the #octave IRC channel in Freenode].<br />
*: You should be familiar with the IRC channel. It's very helpful for new contributors (you) to get immediate feedback on ideas and code.<br />
*: Unless your primary mentor has a strong preference for some other method of communication, the IRC channel will likely be your primary means of communicating with your mentor and Octave developers.<br />
* '''The Octave Forge Project'''<br />
*: [http://octave.sf.net Octave-Forge] is a collection of contributed packages that enhance the capabilities of core Octave. They are somewhat analogous to Matlab's toolboxes.<br />
* '''Related Skills'''<br />
*: In addition, you probably should know '''some''' mathematics, engineering, experimental science, or something of the sort.<br />
*: If so, you probably have already been exposed to the kinds of problems that Octave is used for.<br />
<br />
== Criteria by which applications are judged ==<br />
<br />
These might vary somewhat depending on the mentors and coordinators for a particular Summer of Code, but typically the main factors considered would be:<br />
<br />
* '''Applicant has demonstrated an ability to make substantial modifications to Octave'''<br />
*: The most important thing is that you've contributed some interesting code samples to judge you by. It's OK during the application period to ask for help on how to format these code samples, which normally are Mercurial patches.<br />
<br />
* '''Applicant shows understanding of topic'''<br />
*: Your application should make it clear that you're reasonably well versed in the subject area and won't need all summer just to read up on it.<br />
<br />
* '''Applicant shows understanding of and interest in Octave development'''<br />
*: The best evidence for this is previous contributions and interactions.<br />
<br />
* '''Well thought out, adequately detailed, realistic project plan'''<br />
*: "I'm good at this, so trust me" isn't enough. You should describe which algorithms you'll use and how you'll integrate with existing Octave code. You should also prepare a full timeline and goals for the midterm and final evaluations.<br />
<br />
= Suggested projects =<br />
<br />
The following projects are broadly grouped by category and probable skills required to tackle each. Remember to check [[Projects]] for more ideas if none of these suit you, and your own ideas are always welcome.<br />
<br />
{{Note|these are suggested projects but you are welcome to propose your own projects provided you find an Octave mentor}}<br />
<br />
== Summary table ==<br />
<br />
{| class="wikitable sortable" style="text-align: center; width:99%"<br />
|-<br />
!Title<br />
!Mentor<br />
!co-Mentors<br />
!Class<br />
!New?<br />
!Difficulty<br />
!Last active<br />
|-<br />
! <br />!! !! !! !! !! !!<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Make_specfuns_special_again | Make specfuns special again]] || Marco Caliari || Colin Macdonald || Numerical || Yes || Medium || GSoC 2017<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#ode15s_:_Matlab_Compatible_DAE_solver | ode15{i,s} : Matlab Compatible DAE solvers]] || Carlo de Falco || Francesco Faccio, Marco Caliari, Jacopo Corno, Sebastian Schöps || Numerical || No || Medium || GSoC 2016<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Improve_logm.2C_sqrtm.2C_funm | Improve logm, sqrtm, funm]] || Jordi Gutiérrez Hermoso || Marco Caliari, Mudit Sharma || Numerical || [https://github.com/RickOne16/matrix No] || Hard || Independent devs 2016<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Improve_iterative_methods_for_sparse_linear_systems | Improve iterative methods for sparse linear systems]] || Marco Caliari || Carlo de Falco || Numerical || No || Hard || SOCIS 2016<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Neural Networks package: Convolutional Neural Networks | Neural Networks package: Convolutional Neural Networks]] || [[User:Francesco Faccio|Francesco Faccio]] || Ankit || Octave Forge || Yes || Hard|| Never<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#EPA_hydrology_software_suite | EPA hydrology software suite]] || [[User:KaKiLa| KaKiLa]] || ? || Octave Forge || Yes || Medium || Never<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#FullSWOF overland flow simulator | FullSWOF overland flow simulator]] || [[User:KaKiLa| KaKiLa]] || ? || Octave Forge || Yes || Medium || Never<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#TISEAN_package | TISEAN: Nonlinear Time Series Analysis]] || [[User:KaKiLa|KaKiLa]] || ? || Octave Forge || [[TISEAN_package | No]] || Medium || GSoC 2015<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Octave_Package_management | Octave Package management]] || Sebastian Schöps || [[User:KaKiLa|KaKiLa]], Carnë Draug, Carlo de Falco || Infrastructure || Yes || Medium || Never<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Symbolic_package | Symbolic package]] || Colin B. Macdonald || Mike Miller, Abhinav Tripathi || Octave Forge || [https://github.com/cbm755/octsympy Octsympy] || Medium || GSoC 2016<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Interval_package | Interval package]] || [[User:oheim|Oliver Heimlich]] || [[User:Siko1056|Kai T. Ohlhus]] || Octave Forge, Numerical || Yes || Medium || Never<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Using_Python_within_Octave | Pytave project]] || Mike Miller || Colin B. Macdonald, Abhinav Tripathi || Infrastructure || No || Medium || some in GSoC 2016<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Jupyter_Integration | Jupyter integration]] || Mike Miller || Colin B. Macdonald || Infrastructure || Yes || Medium || Never<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Chebfun_in_Octave | Chebfun in Octave]] || Colin B. Macdonald || [[User:KaKiLa|KaKiLa]], needs core-Octave mentor/comentor || Infrastructure, Numerical || Yes || Hard || Never<br />
|-<br />
| [[Summer_of_Code_Project_Ideas#Octave_code_sharing | Octave code sharing]] || [[User:Siko1056|Kai T. Ohlhus]] || ? || Infrastructure || Yes || Medium || Never<br />
|}<br />
<br />
== Numerical ==<br />
<br />
These projects involve implementing certain mathematical functions, primarily in core Octave.<br />
<br />
=== Make specfuns special again ===<br />
<br />
Traditionally, problem solving environments like Octave provide simple interfaces to numerical linear algebra, special function evaluation, root finding, and other tools. Special functions (such as Bessel functions, exponential integrals, LambertW, etc) are expected by users to "just work". But many of Octave's special functions could be improved to improve their numerical accuracy. Generally a user might expect these to be accurate to full 15 digits. Software testing is important to Octave; this project would improve the tests of many special functions, in particular by comparing the output with slow-but-accurate symbolic computations.<br />
<br />
State: some bugs include [https://savannah.gnu.org/bugs/?48307 #48307] (sinc), [https://savannah.gnu.org/bugs/?47738 #47738] (expint), [https://savannah.gnu.org/bugs/?47800 #47800] (gammainc), [https://savannah.gnu.org/bugs/?48036 #48036] (gammaincinv) [https://savannah.gnu.org/bugs/index.php?48316 #48316] (besselj) ''TODO: add others?'' The unmaintained specfun pkg had some poor implementations (e.g., divergence for large x, see [https://github.com/cbm755/octsympy/issues/416].). See also the Symbolic functions in `@double`: these probably should have native double implementations.<br />
<br />
* '''Required skills'''<br />
: Octave m-file programming, some familiarity with Approximation Theory (a branch of mathematics).<br />
* '''Difficulty'''<br />
: Medium (mathematics needed, but on the other hand, perhaps little or no C++).<br />
* '''Potential mentors'''<br />
: Marco Caliari, Colin Macdonald, others?<br />
<br />
How to get started: pick a special function, see if it has tests: contribute a patch that adds more tests, e.g., comparing its values to symbolic computations or other highly accurate solutions<br />
<br />
=== ode15{i,s} : Matlab Compatible DAE solvers ===<br />
<br />
An initial implementation of a Matlab compatible ode15{i,s} solver,<br />
based on [http://computation.llnl.gov/projects/sundials SUNDIALS], <br />
was done by Francesco Faccio during<br />
GSOC 2016.<br />
The blog describing the work is [http://gsoc2016ode15s.blogspot.it/ here].<br />
The resulting code has been pushed into the main Octave repository in the development branch and<br />
consists mainly of the following three files<br />
[http://hg.savannah.gnu.org/hgweb/octave/file/4890b1c4a6bd/libinterp/dldfcn/__ode15__.cc __ode15__.cc],<br />
[http://hg.savannah.gnu.org/hgweb/octave/file/4890b1c4a6bd/scripts/ode/ode15i.m ode15i.m] and<br />
[http://hg.savannah.gnu.org/hgweb/octave/file/4890b1c4a6bd/scripts/ode/ode15s.m ode15s.m].<br />
The list of outsanding tracker tickets concerning this implementation can be found <br />
[https://savannah.gnu.org/search/?Search=Search&words=ode15&type_of_search=bugs&only_group_id=1925&exact=1&max_rows=25#options here]<br />
<br />
Possible useful improvements that could be done in a new project include:<br />
<br />
* Implement a better funtion for selecting consistent initial conditions compatible with Matlab's decic.m. The algorithm to use is described [http://faculty.smu.edu/shampine/cic.pdf here]<br />
<br />
* make ode15{i,s} with datatypes other than double<br />
<br />
* improve interpolation at intermediate time steps.<br />
<br />
* general code profiling and optimization <br />
<br />
Other tasks, not strictly connected to ode15{i,s} but closely related that could be added <br />
to a possible project plan would be improving documentation and tests in odepkg and removing <br />
overlaps with the documentation in core Octave.<br />
<br />
<br />
* '''Required skills'''<br />
: C++; C; familiarity with numerical methods for DAEs; Basic knowledge of makefiles and/or autotools.<br />
* '''Difficulty'''<br />
: Medium.<br />
* '''Potential mentors'''<br />
: Francesco Faccio, Carlo de Falco, Marco Caliari, Jacopo Corno, Sebastian Schöps<br />
<br />
=== Improve logm, sqrtm, funm ===<br />
<br />
The goal here is to implement some missing Matlab functions related to matrix functions like the [http://en.wikipedia.org/wiki/Matrix_exponential matrix exponential]. There is [http://octave.1599824.n4.nabble.com/matrix-functions-td3137935.html a general discussion] of the problem. A good starting point for available algorithms and open-source implementations is Higham and Deadman's [http://eprints.ma.man.ac.uk/2102/01/covered/MIMS_ep2014_8.pdf "A Catalogue of Software for Matrix Functions"].<br />
<br />
* '''Required skills'''<br />
: Read and Write both C++ and Octave code, find and read research papers, research experience in numerical analysis, familiarity with analysis of algorithms.<br />
* '''Difficulty'''<br />
: Difficult.<br />
* '''Potential mentors'''<br />
: Jordi Gutiérrez Hermoso<br />
<br />
=== Improve iterative methods for sparse linear systems ===<br />
<br />
GNU Octave currently has the following Krylov subspace methods for sparse linear systems: pcg (spd matrices) and pcr (Hermitian matrices), bicg,<br />
bicgstab, cgs, gmres, and qmr (general matrices). The description of some of them (pcr, qmr) and their error messages are not aligned. Moreover, they have similar blocks of code (input check for instance) which can be written once and for all in common functions. The first step in this project could be a revision and a synchronization of the codes, starting from the project [http://planet.octave.org/#tag:blogger.com,1999:blog-1297699247151766814.post-8054019978706480250 SOCIS2016], whose latest patch, still to be included, is [https://savannah.gnu.org/patch/?9108 here].<br />
<br />
In Matlab, some additional methods are available: minres and symmlq (symmetric matrices), bicgstabl (general matrices), lsqr (least<br />
squares). The second step in this project could be the implementation of some of these missing functions.<br />
<br />
The reference book is available [www-users.cs.umn.edu/~saad/IterMethBook_2ndEd.pdf here]<br />
<br />
* '''Required skills'''<br />
: numerical linear algebra, m-file programming.<br />
* '''Difficulty'''<br />
: Maybe hard the mathematical part, medium the programming part.<br />
* '''Mentor'''<br />
:<br />
<br />
=== Chebfun in Octave ===<br />
<br />
[https://chebfun.org Chebfun] is a mathematics and software project for "numerical computing with functions". Basically it approximates functions to machine precision accuracy (10<sup>-15</sup>) using piecewise Chebyshev polynomial interpolants. Operations on those functions (arithmetic, derivatives, root-finding, etc) are then overloaded and return new interpolating polynomials, which are themselves proxies for the actual solution.<br />
<br />
Chebfun makes extensive use of classdef classes, and is one of the largest Free Software projects to do so. Unfortunately it currently only works in Matlab. This project seeks to (1) improve Octave's classdef support and (2) tweak Chebfun to work under Octave, for example, removing undocumented classdef features. The final goal is to have at least basic Chebfun features working on Octave. An additional goal would be making "pkg install chebfun.zip" work in Octave.<br />
<br />
This project is important for both technical reasons (to improve Octave's classdef support) and ethical reasons (to allow Chebfun to run without proprietary software).<br />
<br />
* '''Required skills'''<br />
: Octave m-file programming, C++, some familiarity with Approximation Theory (a branch of mathematics).<br />
* '''Difficulty'''<br />
: Medium to Hard (probably requires a deep dive into how Octave supports OO).<br />
* '''Potential mentors'''<br />
: Colin B. Macdonald, [[User:KaKiLa|KaKiLa]], Mike Miller (?), Carnë Draug (?), someone from Chebfun team (?).<br />
<br />
How to get started: learn about Chebfun, browse Octave's bug list for classdef-related bugs, play with other classdef projects (Pytave, https://github.com/cbm755/octsympy/issues/545)<br />
<br />
== Adding functionality to Forge packages ==<br />
<br />
=== Neural Networks package: Convolutional Neural Networks ===<br />
Convolutional Neural Networks (CNNs) have recently become the state-of-the-art for image recognition and are widely used for solving classification and regression problems and for [https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/tutorials/deepdream/deepdream.ipynb image generation]. The goal of the project is to implement a [https://it.mathworks.com/help/nnet/convolutional-neural-networks.html Matlab compatible] CNN toolbox using Google's library [https://www.tensorflow.org/ TensorFlow], which has a Python and C++ interface. As execution environment for the training function, the user will be able to choose between single/multiple CPUs and GPUs.<br />
* '''Required skills'''<br />
: C, C++, Python, m-file scripting, familiarity with Machine Learning algorithms, basic knowledge of Makefiles, experience with parallel computing and distributed systems.<br />
* '''Difficulty'''<br />
: Difficult.<br />
* '''Mentors'''<br />
: [[User:Francesco Faccio|Francesco Faccio]], Ankit<br />
<br />
=== EPA hydrology software suite ===<br />
Create native interfaces to the EPA software suites.<br />
<br />
Starting points<br />
* [https://forja.cica.es/projects/epanet-octave/ epanet-octave].<br />
* [https://github.com/OpenWaterAnalytics/ Open Water Analytics]<br />
<br />
==== SWMM ====<br />
** [https://www.epa.gov/water-research/storm-water-management-model-swmm Official page]<br />
** Check work done in [https://github.com/water-systems/MatSWMM MatSWMM] [http://digital.csic.es/bitstream/10261/132982/1/MatSWMM.pdf article]<br />
<br />
====EPANET====<br />
** [https://www.epa.gov/water-research/epanet Official page]<br />
<br />
====Required skills====<br />
: m-file scripting, C, C++, API knowledge, file I/O, classdef (optional). <br />
<br />
====Difficulty====<br />
: easy/medium<br />
<br />
====Mentor====<br />
: [[User:KaKiLa|KaKiLa]]<br />
<br />
=== TISEAN package ===<br />
<br />
[http://www.mpipks-dresden.mpg.de/~tisean/Tisean_3.0.1/index.html TISEAN] is a suite of code for nonlinear time series analysis. It has been [http://wiki.octave.org/TISEAN_package partially re-implemented] as libre software. The objective is to integrate TISEAN as an Octave Forge package, as was done for the Control package.<br />
[[TISEAN_package | A lot has been completed]] but [[TISEAN_package:Procedure | there is still work left to do]].<br />
<br />
There are missing functions to do computations on spike trains, to simulate autoregresive models, to create specialized plots, etc. Do check [[TISEAN_package:Procedure#Table_of_functions|the progress of the project]] to see if you are interested.<br />
<br />
* [http://octave.sourceforge.net/tisean/overview.html Package help at source forge.] <br />
* [https://sourceforge.net/p/octave/tisean/ci/default/tree/ Package repository at source forge.] <br />
<br />
* '''Required skills'''<br />
: m-file scripting, C, C++, and FORTRAN API knowledge. <br />
* '''Difficulty'''<br />
: easy/medium<br />
* '''Mentor'''<br />
: [[User:KaKiLa|KaKiLa]]<br />
<br />
=== Symbolic package ===<br />
<br />
Octave's [https://github.com/cbm755/octsympy Symbolic package] handles symbolic computing and other CAS tools. The main component of Symbolic is a pure m-file class "@sym" which uses the Python package [https://www.sympy.org SymPy] to do (most of) the actual computations. The package aims to expose the full functionality of SymPy while also providing a high-level of compatibility with the Matlab Symbolic Math Toolbox. The Symbolic package requires communication between Octave and Python. Recently, a GSoC2016 project successfully re-implemented this communication using the new [https://bitbucket.org/mtmiller/pytave Pytave tool].<br />
<br />
This project proposes to go further: instead of using Pytave only for the communication layer, we'll use it throughout the Symbolic project. For example, we might make "@sym" a subclass of "@pyobject". We also could stop using the "python_cmd" interface and use Pytave directly from methods. The main goal was already mentioned: to expose the *full functionality* of SymPy. For example, we would allow OO-style method calls such as "f.diff(x)" instead of "diff(f, x)".<br />
<br />
* '''Required skills'''<br />
: OO-programming with m-files, Python, and possibly C/C++ for improving Pytave (if needed).<br />
* '''Difficulty'''<br />
: easy/medium<br />
* '''Mentors and/or other team members'''<br />
: Colin B. Macdonald, Mike Miller, Abhinav Tripathi<br />
<br />
=== Interval package ===<br />
<br />
The [[Interval_package|interval package]] provides several arithmetic functions with accurate and guaranteed error bounds. Its development started in the end of 2014 and there is some fundamental functionality left to be implemented. See the [http://octave.sourceforge.net/interval/overview.html list of functions], basically any missing numeric Octave function could be implemented as an interval extension in the package. Potential projects:<br />
* Make the package support N-dimensional arrays, this requires less knowledge of interval arithmetic but can be a rather exhaustive job since it affects most function files in the package<br />
* Implement missing algorithms (as m-files)—difficulty and whether knowledge in interval analysis is required depends on the particular function. Of course, you may use papers which present such algorithms.<br />
* Improve existing algorithms (support more options for plotting, support more options for optimizers, increase accuracy, …)<br />
* Integrate functions from VERSOFT [http://uivtx.cs.cas.cz/~rohn/matlab/] in the package (some work has already been done and current progress is tracked in [[Interval_package#VERSOFT]]). This basically involves conversion of the documentation into Texinfo format, use Octave coding guidelines [https://www.gnu.org/software/octave/doc/v4.0.0/Octave-Sources-_0028m_002dfiles_0029.html] and to make sure that any called functions are available in the interval package. VERSOFT is originally based on INTLAB, a proprietary Octave package. Some functions may be missing. Also, the interval package doesn't support complex numbers, so it might not be possible to migrate some functions.<br />
* List more interesting use cases of interval arithmetic in the package's manual [https://octave.sourceforge.io/interval/package_doc/Examples.html]<br />
<br />
* '''Required skills'''<br />
: m-file scripting, basic knowledge of computer arithmetics (especially floating-point computations), interval analysis (depending on the functions to implement).<br />
* '''Difficulty'''<br />
: Medium.<br />
* '''Mentor and co-mentor'''<br />
: [[User:oheim|Oliver Heimlich]], [[User:Siko1056|Kai T. Ohlhus]]<br />
<br />
=== Mapping or Geometry package: Implement boolean operations on polygons ===<br />
<br />
The goal is to implement a Matlab-compatible set of boolean operations and supporting function for acting on polygons, allowing users to choose from several polygon clipping libraries. These include the standard set of potential operations such as union/OR, intersection/AND, difference/subtraction, and exclusiveor/XOR.<br />
<br />
There is already an octave-forge package that implements a large part of this (the [http://octave.sourceforge.net/octclip/index.html octclip package]); however that does not do XOR; processing polygons with holes could be done better; and maintainability is hampered because all code comments etc. are in Spanish. Other than that, octclip performs fine.<br />
<br />
In the OF geometry-3.0.0 package a first implementation based on Clipperlib has been added. Another implemenation based on Boost was made during GSoC 2016 but that one needs significant additional work before it can be integrated into the geometry package.<br />
<br />
There are a variety of existing polygon libraries that implement much of the functionality and thus this would be incorporating the library into GNU Octave. The libraries with acceptable licenses are [http://www.angusj.com/delphi/clipper.php ClipperLib] (now implemented), [http://www.boost.org/doc/libs/1_60_0/libs/polygon/doc/index.htm Boost::Polygon] (partly implemented), [https://github.com/boostorg/geometry Boost::Geometry], or [http://boolean.klaasholwerda.nl/bool.html kbool]. This would include implementing the following functions: polybool, ispolycw, poly2ccw, poly2cw, poly2fv, polyjoin, and polysplit. Another, partial, implementation with ClipperLib and GPC can be found [https://sites.google.com/site/ulfgri/numerical/polybool here].<br />
<br />
* '''Required skills'''<br />
: Knowledge of C++; C; familiarity with boolean logic; polygons, windings, and geometry<br />
* '''Difficulty'''<br />
: Easy to Medium.<br />
* '''Potential mentor'''<br />
: John Swensen<br />
: [[User:KaKiLa|KaKiLa]]<br />
<br />
== Infrastructure ==<br />
<br />
=== Jupyter Integration ===<br />
<br />
[http://jupyter.org Jupyter Notebook] is a web-based worksheet interface for computing. There is a [https://github.com/Calysto/octave_kernel Octave kernel for Jupyter]. This project seeks to improve that kernel to make Octave a first-class experience within the Jupyter Notebook.<br />
<br />
* '''Mentors'''<br />
: Colin B. Macdonald, Mike Miller, others?<br />
<br />
<br />
=== Using Python within Octave ===<br />
<br />
[https://bitbucket.org/mtmiller/pytave Pytave] allows one to call Python functions and interact with Python objects from within Octave .m file code and from the Octave command line interface. Ideally, Pytave will not be a separate project, but rather a core feature of Octave. This project aims to improve Pytave with the goal of merging the code into the core Octave code base. <br />
<br />
Based on a previous summer project related to Pytave, this work will consist of fast-paced collaborative software development based on tackling the [https://bitbucket.org/mtmiller/pytave/issues?status=new&status=open pytave issue list]. You would also be expected to participate in software design decisions and discussion, as well as improve documentation, doctests and unit tests. As an example of the sorts of decision decisions being made, note that Octave indexes from 1 whereas Python typically indexes from 0; in which cases is it appropriate to make this transparent to the user?<br />
<br />
* '''Mentors'''<br />
: Mike Miller, Colin B. Macdonald, Abhinav Tripathi, others?<br />
<br />
<br />
=== Octave Package management ===<br />
<br />
Octave management of installed packages is performed by a single function, {{codeline|pkg}}, which does pretty much everything. This function has a few limitations which are hard to implement with the current codebase, and will most likely require a full rewrite.<br />
<br />
The planned improvements are:<br />
<br />
* install from URLs<br />
* install and update from repositories (hg and git)<br />
* automatic handling of dependencies<br />
* easily load, update or check specific package versions<br />
* management of tests and demos in C++ sources of packages<br />
* more flexibility on dependencies, e.g., dependent on specific Octave build options or being dependent in one of multiple packages<br />
* support for multiple version packages<br />
* support for multiple Octave installs<br />
* support for system-wide and user installed packages<br />
<br />
The main objective of this project is to make {{codeline|pkg}} more user friendly and to make it a tool to foster third party participation in Octave.<br />
{{codeline|pkg}} needs to be more flexible and intelligent when dealing with packages, different verisons and different sources, as well as options on how to build and install the package.<br />
There are also advance features of pkg that are useful for testing packages. However, the current {{codeline|pkg}} also performs some maintenance functions which it probably should not.<br />
Instead a package for developers should be created with such tools.<br />
<br />
To do this enhacenment effectively, a refactoring of the current {{codeline|pkg}} code will be needed.<br />
[https://bitbucket.org/carandraug/octave/commits/branch/pkg This job was started once], but due to diverging and growing specifications, it stalled. <br />
In this project we will focus on the most needed features, keeping the requirements to a minimum. <br />
<br />
Many of these problems have been solved in other languages. Familiarity with how other languages handle this problem will be useful to come up with elegant solutions. In some cases, there are standards to follow. For example, there are specifications published by freedesktop.org about where files should go ([http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html base directory spec]) and Windows seems to have its own standards. See bugs {{bug|36477}} and {{bug|40444}} for more details.<br />
<br />
In addition, package names may start to collide very easily. One horrible way to workaround this by is choosing increasingly complex package names that give no hint on the package purpose. A much better is option is providing an Authority category like Perl 6 does. Nested packages is also an easy way to provide packages for specialized subjects (think {{codeline|image::morphology}}). A new {{codeline|pkg}} would think all this things now, or allow their implementation at a later time. Read the [[OEP:pkg|unfinished plan]] for more details.<br />
<br />
* '''Minimum requirements'''<br />
: Ability to read and write Octave code, experience with Octave packages, and understanding of the basics of autotools. The most important skill is software design.<br />
* '''Difficulty'''<br />
: Easy to Medium.<br />
* '''Mentor'''<br />
: [[User:KaKiLa|KaKiLa]], Carnë Draug, Carlo de Falco, Sebastian Schöps<br />
<br />
=== Command line suggestion feature ===<br />
<br />
Currently Octave has no mechanism for suggesting corrections to typographic errors on the command line. An autocomplete/suggestion function is provided (using the double-TAB shortcut), but recent discussions have indicated a desire for a more proactive measure to catch user error. Potential applicants are referred to bug {{bug|46881}} regarding the usage of grey vs. gray. <br />
<br />
Suggested improvements are:<br />
* provide one or more suggested corrections to the user when a command line entry produces an error.<br />
* recognition and suggested correction for apparent syntax errors<br />
* function suggestion(s) when a 'close' match is found (close remains to be defined)<br />
* multiple suggestions if more than one option seems likely, along with a user-friendly method of selecting the appropriate choice.<br />
* user selectable option to disable and/or customize the suggestion behavior<br />
* correct operation, or graceful degradation, whether Octave is run in GUI or command-line mode. <br />
<br />
As mentioned in the bug {{bug|46881}} discussion, this project has little-to-no relation to m-code compatibility. As such, emulation of the behavior of other software is not required, nor even necessarily desired. Octave is free to implement as simple or complex a solution to this feature request as is necessary to provide the best experience to the user. There may be tools, features, or code from other license-compatible projects that can be of use here, and the applicant would be encouraged to identify and leverage such resources as appropriate. <br />
<br />
* '''Minimum requirements'''<br />
: TBD<br />
* '''Difficulty'''<br />
: Easy to Medium.<br />
* '''Mentor'''<br />
: Undetermined<br />
<br />
<br />
=== Octave code sharing ===<br />
<br />
Recently, on the [[OctConf_2017]] a [https://rawgit.com/siko1056/Octconf2017/master/octconf2017-publish-ohlhus-slides.pdf talk] about uploading [https://www.gnu.org/software/octave/doc/interpreter/XREFpublish.html published Octave code] to a MediaWiki (like this one) as an easy way to share code was given. With the talk, a [https://github.com/siko1056/OctConf2017 repository] containing example code for the MediaWiki upload is given. This might continue the idea of an unfinished [[Agora]] code sharing website, but one is not restricted to fully stay with the proposed approach. Another, but more ambitious idea is for example [http://central.scipy.org/ Scipy Central] - a website for Scipy code sharing. Their [https://github.com/scipy/SciPyCentral Code] is released under a BSD license.<br />
<br />
* '''Minimum requirements'''<br />
: Ability to read and write Octave code, some familiarity with C++ ([https://curl.haxx.se libcurl]), web development (GET/POST/FORM data, cookies), and [https://www.mediawiki.org/wiki/MediaWiki MediaWiki].<br />
* '''Difficulty'''<br />
: Medium.<br />
* '''Mentor'''<br />
: [[User:Siko1056|Kai T. Ohlhus]]<br />
<br />
== Image Analysis ==<br />
<br />
=== Improvements to N-dimensional image processing ===<br />
<br />
The image package has partial functionality for N-dimensional images. These images exist for example in medical imaging where slices from scans are assembled to form anatomical 3D images. If taken over time and at different laser wavelengths or light filters, they can also result in 5D images. Albeit less common, images with even more dimensions also exist. However, their existence is irrelevant since most of the image processing operations are mathematical operations which are independent of the number of dimensions.<br />
<br />
As part of GSoC 2013, the core functions for image IO, {{codeline|imwrite}} and {{codeline|imread}}, were extended to better support this type of images. Likewise, many functions in the image package, mostly morphology operators, were expanded to deal with this type of image. Since then, many other functions have been improved, sometimes completely rewritten, to abstract from the number of dimensions. In a certain way, supporting ND images is also related to choosing good algorithms since such large images tend to be quite large.<br />
<br />
This project will continue on the previous work, and be mentored by the previous GSoC student and current image package maintainer. Planning the project requires selection of functions lacking ND support and identifying their dependencies. For example, supporting {{codeline|imclose}} and {{codeline|imopen}} was better implemented by supporting {{codeline|imerode}} and {{codeline|imdilate}} which then propagated ND support to all of its dependencies. These dependencies need to be discovered first since often they are not being used yet, and may even be missing function. This project can also be about implementing functions that have [http://wiki.octave.org/Image_package#Missing_functions not yet been implemented]. Also note that while some functions in the image package will accept ND images as input, they are actually not correctly implemented and will give incorrect results.<br />
<br />
* '''Required skills'''<br />
: m-file scripting, and a fair amount of C++ since a lot of image analysis cannot be vectorized. Familiarity with common CS algorithms and willingness to read literature describing new algorithms will be useful. <br />
* '''Difficulty'''<br />
: Difficult.<br />
* '''Potential mentor'''<br />
: Carnë Draug<br />
<br />
=== Improve Octave's image IO ===<br />
<br />
There are a lot of image formats. To handle this, Octave uses [http://www.graphicsmagick.org/ GraphicsMagic] (GM), a library capable of handling [http://www.graphicsmagick.org/formats.html a lot of them] in a single C++ interface. However, GraphicsMagick still has its limitations. The most important are:<br />
<br />
* GM has build option {{codeline|quantum}} which defines the bitdepth to use when reading an image. Building GM with high quantum means that images of smaller bitdepth will take a lot more memory when reading, but building it too low will make it impossible to read images of higher bitdepth. It also means that the image needs to always be rescaled to the correct range.<br />
* GM supports unsigned integers only thus incorrectly reading files such as TIFF with floating point data<br />
* GM hides away details of the image such as whether the image file is indexed. This makes it hard to access the real data stored on file.<br />
<br />
This project would implement better image IO for scientific file formats while leaving GM handle the others. Since TIFF is the de facto standard for scientific images, this should be done first. Among the targets for the project are:<br />
<br />
* implement the Tiff class which is a wrap around libtiff, using classdef. To avoid creating too many private __oct functions, this project could also create a C++ interface to declare new Octave classdef functions.<br />
* improve imread, imwrite, and imfinfo for tiff files using the newly created Tiff class<br />
* port the bioformats into Octave and prepare a package for it<br />
* investigate other image IO libraries<br />
* clean up and finish the dicom package to include into Octave core<br />
* prepare a matlab compatible implementation of the FITS package for inclusion in Octave core<br />
<br />
* '''Required skills'''<br />
: Knowledge of C++ and C since most libraries are written in those languages.<br />
* '''Difficulty'''<br />
: Medium.<br />
* '''Potential mentor'''<br />
: Carnë Draug<br />
<br />
<br />
<br />
<br />
<br />
<br />
<noinclude><br />
[[Category:Summer of Code]]<br />
[[Category:Project Ideas]]<br />
</noinclude></div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=OctConf_2018&diff=10554OctConf 20182017-12-01T16:36:13Z<p>KaKiLa: /* Schedule */</p>
<hr />
<div>We are happy to announce the upcoming Octave Conference 2018 to be held at [http://home.cern CERN], near Geneva, Switzerland, from March 12th until March 15th. <br />
<br />
The Local Organising Committee is happy and proud that CERN will host this event for at least two reasons: <br />
* Octave is a fundamental tool of analysis and research for hundreds of CERN scientists<br />
* Octave and CERN share and promote the same values of openness, cooperation, diversity, quality and commitment.<br />
<br />
The two-day plus two-half-day event will be an opportunity for sharing experiences, planning the future of Octave and promoting its use among the scientific community and beyond.<br />
<br />
Our [[OctConf_2018#Scientific_committee | scientific committee]] is working out the details of the programme, which will include: a presentation by Octave's creator and main maintainer John W. Eaton in the CERN Main Auditorium (Monday afternoon), several interesting talks about applications of Octave to various scientific domains, code sprints, and a session to promote the open-source supported by public institutions as a model for free and successful development. The call for contributions and abstract will be open soon.<br />
<br />
The key members of the Octave development team will participate in the conference, both from oversea and from Europe. You can find updated information on the programme in this Wiki page and we are filling the [https://indico.cern.ch/event/626097/ Indico] timetable.<br />
<br />
== Dates ==<br />
<br />
The conference will take place on Week 11, from March 12th until March 15th 2018.<br />
<br />
'''Duration''': 1/2 + 2 + 1/2 days (requires >=4 days break from work)<br />
<br />
== Committees ==<br />
=== Scientific committee ===<br />
'''Duties''': Recruit invited speakers, finalize the programme schedule, review and select presentations, review and select posters, chairing during conference. <br />
<br />
'''Members''':<br />
<br />
* [[User:Carandraug|Carnë Draug]]<br />
* Carlo de Falco<br />
* [[User:jwe|John W. Eaton]]<br />
* [[User:JordiGH|Jordi Gutiérrez Hermoso]]<br />
* [[User:KaKiLa|Juan Pablo Carbajal]]<br />
* Rafael Vázquez<br />
<br />
<br />
Use the [mailto:maintainers@octave.org maintainers mailing list] to communicate with these people.<br />
<br />
=== Hosting committtee ===<br />
'''Duties''': Arrange and reserve rooms, catering, social event, and other logistics for the conference.<br />
<br />
'''Members''':<br />
<br />
* Andrea Latina<br />
* John Evans<br />
* Melissa Gaillard<br />
<br />
== Location ==<br />
The upcoming Octconf 2018 will take place at [http://home.cern/ CERN] (European Center for Nuclear Research)<br />
<br />
At CERN, the European Organization for Nuclear Research, physicists and engineers are probing the fundamental structure of the universe. They use the world's largest and most complex scientific instruments to study the basic constituents of matter – the fundamental particles. The particles are made to collide together at close to the speed of light. The process gives the physicists clues about how the particles interact, and provides insights into the fundamental laws of nature.<br />
The instruments used at CERN are purpose-built particle accelerators and detectors. Accelerators boost beams of particles to high energies before the beams are made to collide with each other or with stationary targets. Detectors observe and record the results of these collisions.<br />
<br />
Founded in 1954, the CERN laboratory sits astride the Franco-Swiss border near Geneva. It was one of Europe's first joint ventures and now has 22 member states.<br />
<br />
=== Social activities ===<br />
TBA<br />
<br />
== Suggestions for Sessions ==<br />
<br />
Approximately half of each day will be devoted to presentations. The remainder will be used for informal discussions, code sprints, etc.<br />
<br />
Please propose session topics in the schedule below. The actual time slot you pick is not important--we can re-arrange the schedule later--but we need to know what topics are of interest.<br />
<br />
In addition, if you have a poster, rather than a full presentation, there is a separate sign-up sheet below.<br />
<br />
=== Schedule ===<br />
During the daytime: CERN offers many areas where people can socialize and/or discuss, informally. For instance, the CERN main restaurant is open until 23:00 (11:00 PM).<br />
<br />
<table class="tg" border="1" width="800" style="text-align: center"><br />
<tr><br />
<th width="110">Time</th><br />
<th width="220">Monday 12.03<br/>(Opening)</th><br />
<th width="220">Tuesday 13.03<br/>(Tutorials)</th><br />
<th width="250">Wednesday 14.03<br/>(Unconference)</th><br />
<th width="220">Thursday 15.03<br/>(Closing)</th><br />
</tr><br />
<tr><br />
<td><br/><br/>Morning<br/><br/></td><br />
<td bgcolor= #ffb3b3></td><br />
<td> Hands-on activities </td><br />
<td> Unconference </td><br />
<td> OctConf 2019 planning and Closing </td><br />
</tr><br />
<tr><br />
<td><br/><br/>Noon<br/><br/> </td><br />
<td> Plenary talk <br/> and Lunch </td><br />
<td> Plenary talk <br/> and Lunch </td><br />
<td> Plenary talk <br/> and Lunch </td><br />
<td> Farewell lunch</td><br />
</tr><br />
<tr><br />
<td rowspan=2><br/><br/>Afternoon<br/><br/></td><br />
<td> Unconference </td><br />
<td rowspan=2> Hands on Tutorials </td><br />
<td rowspan=2> Visit to CERN </td><br />
<td bgcolor=#ffb3b3 rowspan=3></td><br />
</tr><br />
<td> Hands-on activities </td><br />
<tr><br />
<td><br/><br/>Evening<br/><br/></td><br />
<td> </td><br />
<td> Social event </td><br />
<td></td><br />
</tr><br />
</table><br />
<br />
=== Poster Session ===<br />
<br />
If you have a poster demonstrating how you use Octave to address an application in your field please add your name and poster topic to the list below. We will schedule an appropriately sized space based on the number of posters.<br />
<br />
Confirmed Posters:<br />
<br />
<table class="tg" border="0" width="600" style="text-align: left"><br />
<tr><br />
<th width="400">Title</th><br />
<th width="200">Author</th><br />
</tr><br />
</table><br />
<br />
== Participants ==<br />
To register officially, please use the CERN conference manager [https://indico.cern.ch/event/626097/ Indico].<br />
<br />
* [[User:KaKiLa|JuanPi Carbajal]]<br />
* [[User:jwe|John W. Eaton]]<br />
* [[User:JordiGH|Jordi Gutiérrez Hermoso]]<br />
* [[User:Doug|Douglas Stewart]]<br />
* [[User:Carandraug|Carnë Draug]]<br />
* [[User:CdF|Carlo de Falco]]<br />
<br />
== Accommodation ==<br />
<br />
The conference will take place in the CERN's main site (Meyrin). You can try your luck and search for an accommodation in one of the [http://smb-dep.web.cern.ch/en/CERN_Housing CERN Hostels].<br />
<br />
Should the CERN hostels be full, or should you prefer to stay in Geneva, we advise you to consult your favourite on-line booking portal (www.booking.com, www.tripadvisor.com, www.trivago.com, www.expedia.com etc.) and to contact the hotel directly in order to identify the lowest tariff available for CERN users and collaborators (preferential tariffs may apply in some cases).<br />
<br />
Hotels in the vicinity of "Gare Cornavin" (Geneva's main railway station), or along "Route de Meyrin", are particularly recommended. Tram number 18 links Gare Cornavin to CERN in 20' (see [http://www.tpg.ch/ timetable on the TPG's webpage]). <br />
<br />
Notice that, by staying in hotel, youth hostel or at a campsite, you are entitled to receive a personal and non transferable Geneva Transport Card for free, which will allow you to use the whole public transportation system of Geneva for the length of your stay for free. This includes buses, trams, trains, and yellow taxi-boats - Mouettes. Just ask for it upon arrival on the reception.<br />
<br />
=== Travelling ===<br />
The information below is taken from [http://visit.cern/exhibitions/how-get-cern CERN instructions].<br />
Please check that link for further details.<br />
<br />
[http://visit.cern/sites/visits.web.cern.ch/files/files/exhibitions/access-map.pdf How to get to CERN infographics]<br />
<br />
CERN Reception - Meyrin<br />
<br />
CERN - European Organization for Nuclear Research<br />
385 route de Meyrin<br />
CH-1217 Meyrin - Geneva<br />
Switzerland<br />
<br />
* GPS Coordinates<br />
Latitude: 46.2314284<br />
<br />
Longitude: 6.0539718<br />
<br />
<br />
==== By train ====<br />
Coming from the Geneva railway station at Cornavin<br />
<br />
Tram - Take the number 18 tram to "CERN" which is the final stop at the CERN entrance.<br />
<br />
Ticket costs 3 CHF full-fare / 2 CHF reduced-fare (Ticket "Tout Genève" on the ticket machine). <br />
<br />
See the [http://www.tpg.ch/ TPG] web site for full details.<br />
<br />
==== By plane ====<br />
Coming from the Geneva International Airport at Cointrin<br />
<br />
Taxi - approximately 35CHF.<br />
<br />
Bus - First take a public transport ticket from the machine you will find at the exit to the baggage collection hall, just before customs control. Then:<br />
<br />
Option 1: Take bus Y direction "CERN" and get off at the CERN stop opposite the large Globe and the CERN site.<br />
<br />
Option 2: Take bus 23, 28 or 57 and get off at the stop "Blandonnet" and then catch the Tram number 18, final stop "CERN".<br />
<br />
See the [http://www.tpg.ch/ TPG] web site for full details.<br />
<br />
==== By car ====<br />
<br />
* From Switzerland<br />
<br />
Follow signs for "Aéroport", "Lyon" and "Meyrin".<br />
<br />
Once you are in Meyrin, follow signs for "St. Genis" (which is just beyond the border, in France). <br />
<br />
Before reaching St Genis, the CERN site is on your left on "Route de Meyrin", just before you reach the border.<br />
<br />
* From France (département of Ain)<br />
<br />
Follow signs for "Gex" or "St. Genis". <br />
When you reach the border, CERN is on your right immediately after passing through customs.<br />
<br />
See [http://visit.cern/exhibitions/how-get-cern-car Parking] for parking information.<br />
<br />
== Tips and tricks ==<br />
* A normal lunch at CERN costs about 15 CHF, inclusive of one coffee and one delicious dessert.<br />
* You can pay with CHF and EUR in CERN (the drawback is always CHF) and most of stores and restaurants in Geneva<br />
* The AC power plugs you'll find at CERN are SEV_1011 (https://en.wikipedia.org/wiki/AC_power_plugs_and_sockets#Swiss_SEV_1011). You can borrow one adaptor at the hostel reception.<br />
* As guest you can only enter and exit the main CERN area through entrance B<br />
* A bus ride from the airport to CERN is free of charge, if you take a ticket at the vending machine in the baggage claim area. Should you miss that vending machine, a ticket will cost you 3.00 CHF. https://genevalunch.com/guides/travel/the-cheerful-traveler-geneva-airport-public-transport/<br />
<br />
== Previous OctConf ==<br />
[[OctConf 2017]]<br />
<br />
== Next OctConf ==<br />
[[OctConf 2019]]<br />
<br />
[[Category:OctConf]]<br />
[[Category:2018]]</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=User:KaKiLa&diff=10479User:KaKiLa2017-08-14T01:02:13Z<p>KaKiLa: /* Get file info when generate_html fails or warns */</p>
<hr />
<div>= Personal Data =<br />
[https://sites.google.com/site/juanpicarbajal/ Juan Pablo Carbajal]<br />
<br />
= Tips and Tricks=<br />
== Get file info when generate_html fails or warns==<br />
Since generate_html gives errors about the random files generated, it is useless when debugging help text. The following command shows the first few lines of the files created by generate_html.<br />
<br />
<pre> f_old=/tmp/$(ls -1 -t /tmp | head -1);while true; do f=/tmp/$(ls -1 -t /tmp | head -1); if [ "$f" != "$f_old" ]; then echo $f; grep '@def' --include="*octave-help*" $f; f_old=$f; fi; done</pre><br />
<br />
run this in a different terminal before using generate_html<br />
is not ideal,but it does the trick<br />
<br />
== Make options ==<br />
Some options to pass to make when compiling from source<br />
<br />
# <pre> DOC_TARGETS= </pre> avoids building the PDF but still builds function helps.<br />
# <pre> --disable-atomic-refcount</pre> improves performance when building CLI only.<br />
<br />
== Getting help from CLI==<br />
# know the function --> <code>help function_name</code> or <code>help function_name</code>. <br />
# Know what to do but not the function name --> <code>lookfor what_to_do</code>. <br />
# Can't remember the fullname of a function (or have a guess) --> partial_name_of_function then press <TAB-key> twice<br />
# Did it once but can't remeber --> <Ctrl>+<R> to search the history.<br />
<br />
= Sketchpad =<br />
== test syntax highlight ==<br />
{{Code|Loading the file as polygon compatible with geometry package|<syntaxhighlight lang="octave" style="font-size:13px"><br />
<br />
function y = deserializeInt (data)<br />
<br />
y = bitpack (<br />
cell2mat(<br />
arrayfun(<br />
@(x)bitget(x,1:8), data,<br />
"UniformOutput", false<br />
)<br />
)', "uint16");<br />
<br />
y = double (y);<br />
<br />
endfunction<br />
</syntaxhighlight>}}<br />
<br />
= TODO list =<br />
== Geometry package ==<br />
* Extend tutorial [[Geometry package]]<br />
<br />
== Non-negative matrix factorization ==<br />
* Add nmf_bpas and nmf-pg to linear-algebra <span style="color: green;">✔</span> <br />
<br />
* Get [http://cogsys.imm.dtu.dk/toolbox/nmf/index.html nmf_toolbox] from DTU under free license. <span style="color: green;">✔</span><br />
** Add it to linear-algebra and create nnmf.m compatible with MATLAB calling all the methods.<br />
<br />
== GPML ==<br />
* Asked for a GPLv3 version of [http://www.gaussianprocess.org/gpml/code/matlab/doc/index.html GPML]. They answer but license is FreeBSD. A new version is comming out in June 2012, so I will wait to start the port.<span style="color: green;">✔</span> <br />
* Create [https://bitbucket.org/KaKiLa/gpml repository] to keep scripts to package it for OF. <span style="color: green;">✔</span><br />
<br />
== make output format a valid input format ==<br />
An output format that prints valid input commands, so one can copy and re-execute the code.<br />
From IRC<br />
<br />
(04:57:05 PM) jwe: It might not be too hard to implement what you want. There is a flag in the pr-output functions for pr_as_read_format and many (but probably not all) of the types that are printed there do something with that. And it is not hooked in to the format function, so you can't enable it.<br />
<br />
(04:57:31 PM) jwe: pr-output.cc and pr_as_read_syntax<br />
<br />
== extend sub2ind and ind2sub ==<br />
We are extending sub2ind and ind2sub to work with triangular matrices. Currently private functions of {{Forge|mechanics}}.<br />
A string argument triggers the behavior. The string argument can be "triu" or "tril". After this str argument we accept an extra scalar value indicating that the triangular matrix is off diagonal (as in tril and triu).<br />
So, the first modification to the C++ code will be<br />
# Check if any of the argument is a str.<br />
# Check what kind of triangular matrix (up or low). <br />
# If the argument after the str argument is a scalar, it indicates off diagonal triangular matrix (we do not have algo for that yet, though).<br />
<br />
== updating pkg.m ==<br />
Commands used with pkg<br />
<br />
pkg install image-*<br />
pkg load image<br />
pkg unload image<br />
pkg uninstall image<br />
pkg install -forge image<br />
pkg install -verbose -forge -nodeps signal<br />
pkg install struct-old.tar.gz<br />
pkg update struct<br />
pkg update<br />
pkg load all<br />
pkg unload all<br />
pkg list<br />
installed_packages = pkg ("list")<br />
[user_packages, system_packages] = pkg ("list")<br />
oct_forge_pkgs = pkg ("list", "-forge")<br />
pkg describe image<br />
pkg describe -verbose image <br />
pkg describe -verbose all <br />
desc = pkg ("describe", "signal", "image")<br />
[desc, flag] = pkg ("describe", "signal", "image")<br />
pkg prefix<br />
pkg prefix /tmp<br />
pfx = pkg ("prefix")<br />
pkg prefix /tmp /tmp<br />
pfx = pkg ("prefix")<br />
pkg build -verbose /tmp image-*<br />
pkg rebuild signal<br />
pkg local_db /tmp/.octave_packages.db<br />
pkg local_db<br />
pkg global_db /tmp/.octave_packages.db<br />
pkg global_db<br />
pkg whereis rgbplot<br />
pkg whereis -forge rgbplot<br />
pkg install -url "http://users.elis.ugent.be/~jcarbaja/DRD/DRD_files/" drd-1.1.0.tar.gz<br />
<br />
<br />
== real2rgb ==<br />
Porting the package.<br />
May be good to port [http://www.mathworks.com/matlabcentral/fileexchange/16233-sc-powerful-image-rendering SC] as well<br />
<br />
== EPA software suite ==<br />
Create native interfaces to the EPA software suites<br />
[[See this group https://github.com/OpenWaterAnalytics]]<br />
<br />
=== SWMM ===<br />
* [https://www.epa.gov/water-research/storm-water-management-model-swmm Official page]<br />
* Check work done in [https://github.com/water-systems/MatSWMM MatSWMM] [http://digital.csic.es/bitstream/10261/132982/1/MatSWMM.pdf article]<br />
<br />
=== EPANET ===<br />
* [https://www.epa.gov/water-research/epanet Official page]<br />
<br />
== Old projects ==<br />
* Write description of packages [[Mechanics package]],[[Robotics package]].<br />
* Start the API for [https://code.cor-lab.de/projects/rsb RSB].<br />
<br />
=== Quaternion package ===<br />
* quaternion mpower.m<br />
<br />
=== Biomechanics ===<br />
* <del> Ask [https://sites.google.com/site/systemsneurosciencegroup/people/stewart-heitmann Stewart Heitmann] to release under GPLv3.</del><br />
* Ask Andrea d'Avella to release under GPLv3 or equivalent. Waiting for answer. [[User:KaKiLa|KaKiLa]] 03:54, 9 March 2012 (PST)<br />
<br />
==== Contents ====<br />
* Muscle models<br />
** Hill model.<br />
** Voight model.<br />
<br />
* Locomotion<br />
** SLIP model, multiple generalized variables.<br />
<br />
* Reaching<br />
** Tendulum, tendon driven pendulum.<br />
<br />
=== Robotics Toolbox ===<br />
[[Robotics_package]]<br />
<br />
* Port [http://petercorke.com/Robotics_Toolbox.html Robotics Toolbox]. Started: [http://groups.google.com/group/robotics-tool-box/browse_thread/thread/3bc9c718a8d41f3f Google group]. Peter released an old version for Octave under GPLv3.<br />
* Complete quaternion_oo wrapper.<br />
* Ask [http://www.cs.washington.edu/homes/todorov/software.html Emanuel Todorov] to release under GPLv3 or equivalent.<br />
* [http://ai.stanford.edu/~mitul/mpk/ MPK] apparently is non-Free. Discussing.</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=User:KaKiLa&diff=10409User:KaKiLa2017-06-21T14:23:55Z<p>KaKiLa: /* EPA software suite */</p>
<hr />
<div>= Personal Data =<br />
[https://sites.google.com/site/juanpicarbajal/ Juan Pablo Carbajal]<br />
<br />
= Tips and Tricks=<br />
== Get file info when generate_html fails or warns==<br />
Since generate_html gives errors about the random files generated, it is useless when debugging help text. The following command shows the first few lineas of the files created by generate_html.<br />
<br />
<pre> f_old=/tmp/$(ls -1 -t /tmp | head -1);while true; do f=/tmp/$(ls -1 -t /tmp | head -1); if [ "$f" != "$f_old" ]; then echo $f; grep '@deftypefn ' --include="*octave-help*" $f; f_old=$f; fi; done</pre><br />
<br />
run this in a different terminal before using generate_html<br />
is not ideal,but it does the trick<br />
<br />
== Make options ==<br />
Some options to pass to make when compiling from source<br />
<br />
# <pre> DOC_TARGETS= </pre> avoids building the PDF but still builds function helps.<br />
# <pre> --disable-atomic-refcount</pre> improves performance when building CLI only.<br />
<br />
== Getting help from CLI==<br />
# know the function --> <code>help function_name</code> or <code>help function_name</code>. <br />
# Know what to do but not the function name --> <code>lookfor what_to_do</code>. <br />
# Can't remember the fullname of a function (or have a guess) --> partial_name_of_function then press <TAB-key> twice<br />
# Did it once but can't remeber --> <Ctrl>+<R> to search the history.<br />
<br />
= Sketchpad =<br />
== test syntax highlight ==<br />
{{Code|Loading the file as polygon compatible with geometry package|<syntaxhighlight lang="octave" style="font-size:13px"><br />
<br />
function y = deserializeInt (data)<br />
<br />
y = bitpack (<br />
cell2mat(<br />
arrayfun(<br />
@(x)bitget(x,1:8), data,<br />
"UniformOutput", false<br />
)<br />
)', "uint16");<br />
<br />
y = double (y);<br />
<br />
endfunction<br />
</syntaxhighlight>}}<br />
<br />
= TODO list =<br />
== Geometry package ==<br />
* Extend tutorial [[Geometry package]]<br />
<br />
== Non-negative matrix factorization ==<br />
* Add nmf_bpas and nmf-pg to linear-algebra <span style="color: green;">✔</span> <br />
<br />
* Get [http://cogsys.imm.dtu.dk/toolbox/nmf/index.html nmf_toolbox] from DTU under free license. <span style="color: green;">✔</span><br />
** Add it to linear-algebra and create nnmf.m compatible with MATLAB calling all the methods.<br />
<br />
== GPML ==<br />
* Asked for a GPLv3 version of [http://www.gaussianprocess.org/gpml/code/matlab/doc/index.html GPML]. They answer but license is FreeBSD. A new version is comming out in June 2012, so I will wait to start the port.<span style="color: green;">✔</span> <br />
* Create [https://bitbucket.org/KaKiLa/gpml repository] to keep scripts to package it for OF. <span style="color: green;">✔</span><br />
<br />
== make output format a valid input format ==<br />
An output format that prints valid input commands, so one can copy and re-execute the code.<br />
From IRC<br />
<br />
(04:57:05 PM) jwe: It might not be too hard to implement what you want. There is a flag in the pr-output functions for pr_as_read_format and many (but probably not all) of the types that are printed there do something with that. And it is not hooked in to the format function, so you can't enable it.<br />
<br />
(04:57:31 PM) jwe: pr-output.cc and pr_as_read_syntax<br />
<br />
== extend sub2ind and ind2sub ==<br />
We are extending sub2ind and ind2sub to work with triangular matrices. Currently private functions of {{Forge|mechanics}}.<br />
A string argument triggers the behavior. The string argument can be "triu" or "tril". After this str argument we accept an extra scalar value indicating that the triangular matrix is off diagonal (as in tril and triu).<br />
So, the first modification to the C++ code will be<br />
# Check if any of the argument is a str.<br />
# Check what kind of triangular matrix (up or low). <br />
# If the argument after the str argument is a scalar, it indicates off diagonal triangular matrix (we do not have algo for that yet, though).<br />
<br />
== updating pkg.m ==<br />
Commands used with pkg<br />
<br />
pkg install image-*<br />
pkg load image<br />
pkg unload image<br />
pkg uninstall image<br />
pkg install -forge image<br />
pkg install -verbose -forge -nodeps signal<br />
pkg install struct-old.tar.gz<br />
pkg update struct<br />
pkg update<br />
pkg load all<br />
pkg unload all<br />
pkg list<br />
installed_packages = pkg ("list")<br />
[user_packages, system_packages] = pkg ("list")<br />
oct_forge_pkgs = pkg ("list", "-forge")<br />
pkg describe image<br />
pkg describe -verbose image <br />
pkg describe -verbose all <br />
desc = pkg ("describe", "signal", "image")<br />
[desc, flag] = pkg ("describe", "signal", "image")<br />
pkg prefix<br />
pkg prefix /tmp<br />
pfx = pkg ("prefix")<br />
pkg prefix /tmp /tmp<br />
pfx = pkg ("prefix")<br />
pkg build -verbose /tmp image-*<br />
pkg rebuild signal<br />
pkg local_db /tmp/.octave_packages.db<br />
pkg local_db<br />
pkg global_db /tmp/.octave_packages.db<br />
pkg global_db<br />
pkg whereis rgbplot<br />
pkg whereis -forge rgbplot<br />
pkg install -url "http://users.elis.ugent.be/~jcarbaja/DRD/DRD_files/" drd-1.1.0.tar.gz<br />
<br />
<br />
== real2rgb ==<br />
Porting the package.<br />
May be good to port [http://www.mathworks.com/matlabcentral/fileexchange/16233-sc-powerful-image-rendering SC] as well<br />
<br />
== EPA software suite ==<br />
Create native interfaces to the EPA software suites<br />
[[See this group https://github.com/OpenWaterAnalytics]]<br />
<br />
=== SWMM ===<br />
* [https://www.epa.gov/water-research/storm-water-management-model-swmm Official page]<br />
* Check work done in [https://github.com/water-systems/MatSWMM MatSWMM] [http://digital.csic.es/bitstream/10261/132982/1/MatSWMM.pdf article]<br />
<br />
=== EPANET ===<br />
* [https://www.epa.gov/water-research/epanet Official page]<br />
<br />
== Old projects ==<br />
* Write description of packages [[Mechanics package]],[[Robotics package]].<br />
* Start the API for [https://code.cor-lab.de/projects/rsb RSB].<br />
<br />
=== Quaternion package ===<br />
* quaternion mpower.m<br />
<br />
=== Biomechanics ===<br />
* <del> Ask [https://sites.google.com/site/systemsneurosciencegroup/people/stewart-heitmann Stewart Heitmann] to release under GPLv3.</del><br />
* Ask Andrea d'Avella to release under GPLv3 or equivalent. Waiting for answer. [[User:KaKiLa|KaKiLa]] 03:54, 9 March 2012 (PST)<br />
<br />
==== Contents ====<br />
* Muscle models<br />
** Hill model.<br />
** Voight model.<br />
<br />
* Locomotion<br />
** SLIP model, multiple generalized variables.<br />
<br />
* Reaching<br />
** Tendulum, tendon driven pendulum.<br />
<br />
=== Robotics Toolbox ===<br />
[[Robotics_package]]<br />
<br />
* Port [http://petercorke.com/Robotics_Toolbox.html Robotics Toolbox]. Started: [http://groups.google.com/group/robotics-tool-box/browse_thread/thread/3bc9c718a8d41f3f Google group]. Peter released an old version for Octave under GPLv3.<br />
* Complete quaternion_oo wrapper.<br />
* Ask [http://www.cs.washington.edu/homes/todorov/software.html Emanuel Todorov] to release under GPLv3 or equivalent.<br />
* [http://ai.stanford.edu/~mitul/mpk/ MPK] apparently is non-Free. Discussing.</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=User:KaKiLa&diff=10408User:KaKiLa2017-06-21T14:23:08Z<p>KaKiLa: /* EPA software suite */</p>
<hr />
<div>= Personal Data =<br />
[https://sites.google.com/site/juanpicarbajal/ Juan Pablo Carbajal]<br />
<br />
= Tips and Tricks=<br />
== Get file info when generate_html fails or warns==<br />
Since generate_html gives errors about the random files generated, it is useless when debugging help text. The following command shows the first few lineas of the files created by generate_html.<br />
<br />
<pre> f_old=/tmp/$(ls -1 -t /tmp | head -1);while true; do f=/tmp/$(ls -1 -t /tmp | head -1); if [ "$f" != "$f_old" ]; then echo $f; grep '@deftypefn ' --include="*octave-help*" $f; f_old=$f; fi; done</pre><br />
<br />
run this in a different terminal before using generate_html<br />
is not ideal,but it does the trick<br />
<br />
== Make options ==<br />
Some options to pass to make when compiling from source<br />
<br />
# <pre> DOC_TARGETS= </pre> avoids building the PDF but still builds function helps.<br />
# <pre> --disable-atomic-refcount</pre> improves performance when building CLI only.<br />
<br />
== Getting help from CLI==<br />
# know the function --> <code>help function_name</code> or <code>help function_name</code>. <br />
# Know what to do but not the function name --> <code>lookfor what_to_do</code>. <br />
# Can't remember the fullname of a function (or have a guess) --> partial_name_of_function then press <TAB-key> twice<br />
# Did it once but can't remeber --> <Ctrl>+<R> to search the history.<br />
<br />
= Sketchpad =<br />
== test syntax highlight ==<br />
{{Code|Loading the file as polygon compatible with geometry package|<syntaxhighlight lang="octave" style="font-size:13px"><br />
<br />
function y = deserializeInt (data)<br />
<br />
y = bitpack (<br />
cell2mat(<br />
arrayfun(<br />
@(x)bitget(x,1:8), data,<br />
"UniformOutput", false<br />
)<br />
)', "uint16");<br />
<br />
y = double (y);<br />
<br />
endfunction<br />
</syntaxhighlight>}}<br />
<br />
= TODO list =<br />
== Geometry package ==<br />
* Extend tutorial [[Geometry package]]<br />
<br />
== Non-negative matrix factorization ==<br />
* Add nmf_bpas and nmf-pg to linear-algebra <span style="color: green;">✔</span> <br />
<br />
* Get [http://cogsys.imm.dtu.dk/toolbox/nmf/index.html nmf_toolbox] from DTU under free license. <span style="color: green;">✔</span><br />
** Add it to linear-algebra and create nnmf.m compatible with MATLAB calling all the methods.<br />
<br />
== GPML ==<br />
* Asked for a GPLv3 version of [http://www.gaussianprocess.org/gpml/code/matlab/doc/index.html GPML]. They answer but license is FreeBSD. A new version is comming out in June 2012, so I will wait to start the port.<span style="color: green;">✔</span> <br />
* Create [https://bitbucket.org/KaKiLa/gpml repository] to keep scripts to package it for OF. <span style="color: green;">✔</span><br />
<br />
== make output format a valid input format ==<br />
An output format that prints valid input commands, so one can copy and re-execute the code.<br />
From IRC<br />
<br />
(04:57:05 PM) jwe: It might not be too hard to implement what you want. There is a flag in the pr-output functions for pr_as_read_format and many (but probably not all) of the types that are printed there do something with that. And it is not hooked in to the format function, so you can't enable it.<br />
<br />
(04:57:31 PM) jwe: pr-output.cc and pr_as_read_syntax<br />
<br />
== extend sub2ind and ind2sub ==<br />
We are extending sub2ind and ind2sub to work with triangular matrices. Currently private functions of {{Forge|mechanics}}.<br />
A string argument triggers the behavior. The string argument can be "triu" or "tril". After this str argument we accept an extra scalar value indicating that the triangular matrix is off diagonal (as in tril and triu).<br />
So, the first modification to the C++ code will be<br />
# Check if any of the argument is a str.<br />
# Check what kind of triangular matrix (up or low). <br />
# If the argument after the str argument is a scalar, it indicates off diagonal triangular matrix (we do not have algo for that yet, though).<br />
<br />
== updating pkg.m ==<br />
Commands used with pkg<br />
<br />
pkg install image-*<br />
pkg load image<br />
pkg unload image<br />
pkg uninstall image<br />
pkg install -forge image<br />
pkg install -verbose -forge -nodeps signal<br />
pkg install struct-old.tar.gz<br />
pkg update struct<br />
pkg update<br />
pkg load all<br />
pkg unload all<br />
pkg list<br />
installed_packages = pkg ("list")<br />
[user_packages, system_packages] = pkg ("list")<br />
oct_forge_pkgs = pkg ("list", "-forge")<br />
pkg describe image<br />
pkg describe -verbose image <br />
pkg describe -verbose all <br />
desc = pkg ("describe", "signal", "image")<br />
[desc, flag] = pkg ("describe", "signal", "image")<br />
pkg prefix<br />
pkg prefix /tmp<br />
pfx = pkg ("prefix")<br />
pkg prefix /tmp /tmp<br />
pfx = pkg ("prefix")<br />
pkg build -verbose /tmp image-*<br />
pkg rebuild signal<br />
pkg local_db /tmp/.octave_packages.db<br />
pkg local_db<br />
pkg global_db /tmp/.octave_packages.db<br />
pkg global_db<br />
pkg whereis rgbplot<br />
pkg whereis -forge rgbplot<br />
pkg install -url "http://users.elis.ugent.be/~jcarbaja/DRD/DRD_files/" drd-1.1.0.tar.gz<br />
<br />
<br />
== real2rgb ==<br />
Porting the package.<br />
May be good to port [http://www.mathworks.com/matlabcentral/fileexchange/16233-sc-powerful-image-rendering SC] as well<br />
<br />
== EPA software suite ==<br />
Create native interfaces to the EPA software suites<br />
[See this group https://github.com/OpenWaterAnalytics]<br />
<br />
=== SWMM ===<br />
* [https://www.epa.gov/water-research/storm-water-management-model-swmm Official page]<br />
* Check work done in [https://github.com/water-systems/MatSWMM MatSWMM] [http://digital.csic.es/bitstream/10261/132982/1/MatSWMM.pdf article]<br />
<br />
=== EPANET ===<br />
* [https://www.epa.gov/water-research/epanet Official page]<br />
<br />
== Old projects ==<br />
* Write description of packages [[Mechanics package]],[[Robotics package]].<br />
* Start the API for [https://code.cor-lab.de/projects/rsb RSB].<br />
<br />
=== Quaternion package ===<br />
* quaternion mpower.m<br />
<br />
=== Biomechanics ===<br />
* <del> Ask [https://sites.google.com/site/systemsneurosciencegroup/people/stewart-heitmann Stewart Heitmann] to release under GPLv3.</del><br />
* Ask Andrea d'Avella to release under GPLv3 or equivalent. Waiting for answer. [[User:KaKiLa|KaKiLa]] 03:54, 9 March 2012 (PST)<br />
<br />
==== Contents ====<br />
* Muscle models<br />
** Hill model.<br />
** Voight model.<br />
<br />
* Locomotion<br />
** SLIP model, multiple generalized variables.<br />
<br />
* Reaching<br />
** Tendulum, tendon driven pendulum.<br />
<br />
=== Robotics Toolbox ===<br />
[[Robotics_package]]<br />
<br />
* Port [http://petercorke.com/Robotics_Toolbox.html Robotics Toolbox]. Started: [http://groups.google.com/group/robotics-tool-box/browse_thread/thread/3bc9c718a8d41f3f Google group]. Peter released an old version for Octave under GPLv3.<br />
* Complete quaternion_oo wrapper.<br />
* Ask [http://www.cs.washington.edu/homes/todorov/software.html Emanuel Todorov] to release under GPLv3 or equivalent.<br />
* [http://ai.stanford.edu/~mitul/mpk/ MPK] apparently is non-Free. Discussing.</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=Octave_for_Debian_systems&diff=10365Octave for Debian systems2017-05-16T14:18:16Z<p>KaKiLa: /* The right way */ build INSTALL.OCTAVE</p>
<hr />
<div>For Debian, and Debian-based distributions such as Ubuntu, specific solutions.<br />
<br />
== Pre-compiled binaries ==<br />
<br />
Binary packages for Octave and many Octave-Forge packages are provided by all versions of Debian and Ubuntu. These are the most well-tested binaries available and should work best for most users.<br />
<br />
sudo apt-get install octave<br />
<br />
Aside the {{codeline|octave}} package that installs GNU Octave, other pieces of it are split over multiple packages. These are {{codeline|octave-doc}}, {{codeline|octave-info}}, and {{codeline|octave-htmldoc}} for the documentation; {{codeline|liboctave-dev}} for the octave development header files and mkoctfile (required to install Octave Forge packages); and {{codeline|octave-dbg}} for the debugging symbols.<br />
<br />
For Debian stable users, there may also be newer packages available in backports, so don't forget to check there.<br />
<br />
=== Octave packages ===<br />
<br />
Many Octave packages are also distributed by your Linux distribution. These are tested to work the best with your Octave version. For example:<br />
<br />
sudo apt-get install octave-control octave-image octave-io octave-optim octave-signal octave-statistics<br />
<br />
=== Octave's Personal Package Archive (PPA) for Ubuntu ===<br />
<br />
For some Ubuntu releases the Octave packages are too old (Ubuntu 12.04 only has Octave version 3.2). The [https://launchpad.net/~octave GNU Octave Team] on Launchpad maintains a PPA providing more up to date packages of Octave for all versions of Ubuntu. These are backported from Debian unstable (the Ubuntu Octave Team needs help testing and preparing the packages so if you can help with this, contact [[User:Mtmiller|Mike Miller]]). To set up your system to install these packages:<br />
<br />
sudo apt-add-repository ppa:octave/stable<br />
sudo apt-get update<br />
sudo apt-get install octave<br />
<br />
=== Linuxbrew ===<br />
<br />
It is possible to install the current stable version of Octave and any needed dependencies within your home directory, particularly useful if you have an old Linux distribution or do not have root access, using [http://linuxbrew.sh Linuxbrew]:<br />
<br />
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install)"<br />
echo 'export PATH="$HOME/.linuxbrew/bin:$PATH"' >>~/.bash_profile<br />
brew install homebrew/science/octave<br />
<br />
== Compiling from source ==<br />
<br />
The ''only'' tricky part is to install the dependencies. Once that is solved, installing from source should be as easy as {{Codeline|./configure && make && make install}}. See the manual for [http://www.gnu.org/software/octave/doc/interpreter/Running-Configure-and-Make.html configure options] and [[Octave_for_Debian_systems#Configuration|below]] for some common examples.<br />
<br />
=== Install dependencies ===<br />
<br />
Note that different Debian and Ubuntu versions may have slightly different package names but their differences should be pretty small, mostly limited to version numbers.<br />
<br />
==== The easy way (but likely incorrect) ====<br />
<br />
This approach is ''only'' suitable if you are building from source the ''same'' version that your Linux distribution already has packaged.<br />
<br />
The easy way to install ''most'' of the necessary dependencies is to {{Codeline|sudo apt-get build-dep octave}}. This will install all packages necessary to build and prepare a Debian package for the octave version available on your system repositories. However:<br />
* will install unnecessary packages related to the building of a Debian package;<br />
* may miss some new dependencies;<br />
* may install packages that are no longer octave dependencies.<br />
<br />
==== The even easier way (but experimental) ====<br />
<br />
The [[MXE|MXE-octave]] package provides a way to compile Octave for different platforms. Dependencies and certain flags are handled automatically.<br />
<br />
==== The right way ====<br />
<br />
The right way is to select and install all the dependencies as listed in the {{Path|INSTALL.OCTAVE}} file (if it is not in your source tree build it doing <code>make INSTALL.OCTAVE</code>). The following are their package names in Debian repositories (they will have their own dependencies which your package manager will solve automatically). If you are building development versions, you'll require some more packages as listed on {{Path|etc/HACKING}} and {{Path|INSTALL}}. Many of them will already be installed on your system. Install the dependencies by typing<br />
<br />
sudo apt-get install<br />
<br />
followed by the package names of the table below.<br />
<br />
:{| class="wikitable"<br />
|-<br />
! Dependency !! Debian 8 Jessie (stable) !! Ubuntu 16.04 Xenial Xerus (LTS)<br />
|-<br />
!colspan="3" style="text-align:center;" | Required build tools<br />
|-<br />
| C compiler<br />
|| [https://packages.debian.org/jessie/gcc gcc]<br />
|| [http://packages.ubuntu.com/xenial/gcc gcc]<br />
|-<br />
| C++ compiler<br />
|| [https://packages.debian.org/jessie/g++ g++]<br />
|| [http://packages.ubuntu.com/xenial/g++ g++]<br />
|-<br />
| Fortran compiler<br />
|| [https://packages.debian.org/jessie/gfortran gfortran]<br />
|| [http://packages.ubuntu.com/xenial/gfortran gfortran]<br />
|-<br />
| GNU make<br />
|| [https://packages.debian.org/jessie/make make]<br />
|| [http://packages.ubuntu.com/xenial/make make]<br />
|-<br />
!colspan="3" style="text-align:center;"| Required external packages<br />
|-<br />
| BLAS<br />
|| [https://packages.debian.org/jessie/libblas-dev libblas-dev]<br />
|| [http://packages.ubuntu.com/xenial/libblas-dev libblas-dev]<br />
|-<br />
| LAPACK<br />
|| [https://packages.debian.org/jessie/liblapack-dev liblapack-dev]<br />
|| [http://packages.ubuntu.com/xenial/liblapack-dev liblapack-dev]<br />
|-<br />
| PCRE<br />
|| [https://packages.debian.org/jessie/libpcre3-dev libpcre3-dev]<br />
|| [http://packages.ubuntu.com/xenial/libpcre3-dev libpcre3-dev]<br />
|-<br />
!colspan="3" style="text-align:center;"| ''Strongly'' recommended. Check the [http://www.gnu.org/software/octave/doc/interpreter/External-Packages.html Octave manual] for more information.<br />
|-<br />
| ARPACK<br />
|| [https://packages.debian.org/jessie/libarpack2-dev libarpack2-dev]<br />
|| [http://packages.ubuntu.com/xenial/libarpack2-dev libarpack2-dev]<br />
|-<br />
| cURL<br />
|| [https://packages.debian.org/jessie/libcurl4-gnutls-dev libcurl4-gnutls-dev]<br />
|| [http://packages.ubuntu.com/xenial/libcurl4-gnutls-dev libcurl4-gnutls-dev]<br />
|-<br />
| epstool<br />
|| [https://packages.debian.org/jessie/epstool epstool]<br />
|| [http://packages.ubuntu.com/xenial/epstool epstool]<br />
|-<br />
| FFTW3<br />
|| [https://packages.debian.org/jessie/libfftw3-dev libfftw3-dev]<br />
|| [http://packages.ubuntu.com/xenial/libfftw3-dev libfftw3-dev]<br />
|-<br />
| fig2dev<br />
|| [https://packages.debian.org/jessie/transfig transfig]<br />
|| [http://packages.ubuntu.com/xenial/transfig transfig]<br />
|-<br />
| FLTK<br />
|| [https://packages.debian.org/jessie/libfltk1.3-dev libfltk1.3-dev]<br />
|| [http://packages.ubuntu.com/xenial/libfltk1.3-dev libfltk1.3-dev]<br />
|-<br />
| fontconfig<br />
|| [https://packages.debian.org/jessie/libfontconfig1-dev libfontconfig1-dev]<br />
|| [http://packages.ubuntu.com/xenial/libfontconfig1-dev libfontconfig1-dev]<br />
|-<br />
| FreeType<br />
|| [https://packages.debian.org/jessie/libfreetype6-dev libfreetype6-dev]<br />
|| [http://packages.ubuntu.com/xenial/libfreetype6-dev libfreetype6-dev]<br />
|-<br />
| gl2ps<br />
|| [https://packages.debian.org/jessie/libgl2ps-dev libgl2ps-dev]<br />
|| [http://packages.ubuntu.com/xenial/libgl2ps-dev libgl2ps-dev]<br />
|-<br />
| GLPK<br />
|| [https://packages.debian.org/jessie/libglpk-dev libglpk-dev]<br />
|| [http://packages.ubuntu.com/xenial/libglpk-dev libglpk-dev]<br />
|-<br />
| GNU Readline<br />
|| [https://packages.debian.org/jessie/libreadline-dev libreadline-dev]<br />
|| [http://packages.ubuntu.com/xenial/libreadline-dev libreadline-dev]<br />
|-<br />
| gnuplot<br />
|| [https://packages.debian.org/jessie/gnuplot gnuplot]<br />
|| [http://packages.ubuntu.com/xenial/gnuplot gnuplot-x11]<br />
|-<br />
| GraphicsMagick++<br />
|| [https://packages.debian.org/jessie/libgraphicsmagick++1-dev libgraphicsmagick++1-dev]<br />
|| [http://packages.ubuntu.com/xenial/libgraphicsmagick++1-dev libgraphicsmagick++1-dev]<br />
|-<br />
| HDF5<br />
|| [https://packages.debian.org/jessie/libhdf5-serial-dev libhdf5-serial-dev]<br />
|| [http://packages.ubuntu.com/xenial/libhdf5-serial-dev libhdf5-serial-dev]<br />
|-<br />
| Java JDK<br />
|| [https://packages.debian.org/jessie/openjdk-7-jdk openjdk-7-jdk]<br />
|| [http://packages.ubuntu.com/xenial/openjdk-8-jdk openjdk-8-jdk]<br />
|-<br />
| libsndfile<br />
|| [https://packages.debian.org/jessie/libsndfile1-dev libsndfile1-dev]<br />
|| [http://packages.ubuntu.com/xenial/libsndfile1-dev libsndfile1-dev]<br />
|-<br />
| LLVM<br />
|| [https://packages.debian.org/jessie/llvm-dev llvm-dev]<br />
|| [http://packages.ubuntu.com/xenial/llvm-dev llvm-dev]<br />
|-<br />
| lpr<br />
|| [https://packages.debian.org/jessie/lpr lpr]<br />
|| [http://packages.ubuntu.com/xenial/lpr lpr]<br />
|-<br />
| makeinfo<br />
|| [https://packages.debian.org/jessie/texinfo texinfo]<br />
|| [http://packages.ubuntu.com/xenial/texinfo texinfo]<br />
|-<br />
| OpenGL<br />
|| [https://packages.debian.org/jessie/libgl1-mesa-dev libgl1-mesa-dev]<br />
|| [http://packages.ubuntu.com/xenial/libgl1-mesa-dev libgl1-mesa-dev]<br />
|-<br />
| OSMesa<br />
|| [https://packages.debian.org/jessie/libosmesa6-dev libosmesa6-dev]<br />
|| [http://packages.ubuntu.com/xenial/libosmesa6-dev libosmesa6-dev]<br />
|-<br />
| pstoedit<br />
|| [https://packages.debian.org/jessie/pstoedit pstoedit]<br />
|| [http://packages.ubuntu.com/xenial/pstoedit pstoedit]<br />
|-<br />
| PortAudio<br />
|| [https://packages.debian.org/jessie/portaudio19-dev portaudio19-dev]<br />
|| [http://packages.ubuntu.com/xenial/portaudio19-dev portaudio19-dev]<br />
|-<br />
| Qhull<br />
|| [https://packages.debian.org/jessie/libqhull-dev libqhull-dev]<br />
|| [http://packages.ubuntu.com/xenial/libqhull-dev libqhull-dev]<br />
|-<br />
| QRUPDATE<br />
|| [https://packages.debian.org/jessie/libqrupdate-dev libqrupdate-dev]<br />
|| [http://packages.ubuntu.com/xenial/libqrupdate-dev libqrupdate-dev]<br />
|-<br />
| QScintilla<br />
|| [https://packages.debian.org/jessie/libqscintilla2-dev libqscintilla2-dev]<br />
|| [http://packages.ubuntu.com/xenial/libqscintilla2-dev libqscintilla2-dev]<br />
|-<br />
| Qt<br />
||<br />
[https://packages.debian.org/jessie/libqt4-dev libqt4-dev]<br />
[https://packages.debian.org/jessie/libqtcore4 libqtcore4]<br />
[https://packages.debian.org/jessie/libqtwebkit4 libqtwebkit4]<br />
[https://packages.debian.org/jessie/libqt4-network libqt4-network]<br />
[https://packages.debian.org/jessie/libqtgui4 libqtgui4]<br />
[https://packages.debian.org/jessie/libqt4-opengl-dev libqt4-opengl-dev]<br />
||<br />
[http://packages.ubuntu.com/xenial/libqt4-dev libqt4-dev]<br />
[http://packages.ubuntu.com/xenial/libqtcore4 libqtcore4]<br />
[http://packages.ubuntu.com/xenial/libqtwebkit4 libqtwebkit4]<br />
[http://packages.ubuntu.com/xenial/libqt4-network libqt4-network]<br />
[http://packages.ubuntu.com/xenial/libqtgui4 libqtgui4]<br />
[http://packages.ubuntu.com/xenial/libqt4-opengl-dev libqt4-opengl-dev]<br />
|-<br />
| SuiteSparse<br />
|| [https://packages.debian.org/jessie/libsuitesparse-dev libsuitesparse-dev]<br />
|| [http://packages.ubuntu.com/xenial/libsuitesparse-dev libsuitesparse-dev]<br />
|-<br />
| Texlive<br />
|| texlive<br />
|| texlive<br />
|-<br />
| Xft<br />
|| [https://packages.debian.org/jessie/libxft-dev libxft-dev]<br />
|| [http://packages.ubuntu.com/xenial3/libxft-dev libxft-dev]<br />
|-<br />
| zlib<br />
|| [https://packages.debian.org/jessie/zlib1g-dev zlib1g-dev]<br />
|| [http://packages.ubuntu.com/xenial/zlib1g-dev zlib1g-dev]<br />
|-<br />
!colspan="3" style="text-align:center;"| Required to build from development sources<br />
|-<br />
| Autoconf<br />
|| [https://packages.debian.org/jessie/autoconf autoconf]<br />
|| [http://packages.ubuntu.com/xenial/autoconf autoconf]<br />
|-<br />
| Automake<br />
|| [https://packages.debian.org/jessie/automake automake]<br />
|| [http://packages.ubuntu.com/xenial/automake automake]<br />
|-<br />
| Bison<br />
|| [https://packages.debian.org/jessie/bison bison]<br />
|| [http://packages.ubuntu.com/xenial/bison bison]<br />
|-<br />
| Flex<br />
|| [https://packages.debian.org/jessie/flex flex]<br />
|| [http://packages.ubuntu.com/xenial/flex flex]<br />
|-<br />
| gperf<br />
|| [https://packages.debian.org/jessie/gperf gperf]<br />
|| [http://packages.ubuntu.com/xenial/gperf gperf]<br />
|-<br />
| gzip<br />
|| [https://packages.debian.org/jessie/gzip gzip]<br />
|| [http://packages.ubuntu.com/xenial/gzip gzip]<br />
|-<br />
| icoutils<br />
|| [https://packages.debian.org/jessie/icoutils icoutils]<br />
|| [http://packages.ubuntu.com/xenial/icoutils icoutils]<br />
|-<br />
| rsvg-convert<br />
|| [https://packages.debian.org/jessie/librsvg2-bin librsvg2-bin]<br />
|| [http://packages.ubuntu.com/xenial/librsvg2-bin librsvg2-bin]<br />
|-<br />
| libtool<br />
|| [https://packages.debian.org/jessie/libtool libtool]<br />
|| [http://packages.ubuntu.com/xenial/libtool libtool]<br />
|-<br />
| perl<br />
|| [https://packages.debian.org/jessie/perl perl]<br />
|| [http://packages.ubuntu.com/xenial/perl perl]<br />
|-<br />
| rsync<br />
|| [https://packages.debian.org/jessie/rsync rsync]<br />
|| [http://packages.ubuntu.com/xenial/rsync rsync]<br />
|-<br />
| tar<br />
|| [https://packages.debian.org/jessie/tar tar]<br />
|| [http://packages.ubuntu.com/xenial/tar tar]<br />
|}<br />
<br />
To install all of these on Ubuntu 16.04, type<br />
sudo apt-get install gcc g++ gfortran make libblas-dev liblapack-dev libpcre3-dev libarpack2-dev libcurl4-gnutls-dev epstool libfftw3-dev transfig libfltk1.3-dev libfontconfig1-dev libfreetype6-dev libgl2ps-dev libglpk-dev libreadline-dev gnuplot-x11 libgraphicsmagick++1-dev libhdf5-serial-dev openjdk-8-jdk libsndfile1-dev llvm-dev lpr texinfo libgl1-mesa-dev libosmesa6-dev pstoedit portaudio19-dev libqhull-dev libqrupdate-dev libqscintilla2-dev libqt4-dev libqtcore4 libqtwebkit4 libqt4-network libqtgui4 libqt4-opengl-dev libsuitesparse-dev texlive libxft-dev zlib1g-dev autoconf automake bison flex gperf gzip icoutils librsvg2-bin libtool perl rsync tar<br />
or, for Debian stable,<br />
sudo apt-get install gcc g++ gfortran make libblas-dev liblapack-dev libpcre3-dev libarpack2-dev libcurl4-gnutls-dev epstool libfftw3-dev transfig libfltk1.3-dev libfontconfig1-dev libfreetype6-dev libgl2ps-dev libglpk-dev libreadline-dev gnuplot libgraphicsmagick++1-dev libhdf5-serial-dev openjdk-7-jdk libsndfile1-dev llvm-dev lpr texinfo libgl1-mesa-dev libosmesa6-dev pstoedit portaudio19-dev libqhull-dev libqrupdate-dev libqscintilla2-dev libqt4-dev libqtcore4 libqtwebkit4 libqt4-network libqtgui4 libqt4-opengl-dev libsuitesparse-dev texlive libxft-dev zlib1g-dev autoconf automake bison flex gperf gzip icoutils librsvg2-bin libtool perl rsync tar<br />
<br />
{{Warning|<ul><li>The Debian repositoriy has several libraries for dealing with HDF data files. The recommended is {{Codeline|libhdf5-serial-dev}}. However, the {{Forge|msh|msh package}} requires [http://www.geuz.org/gmsh/ gmsh] which is incompatible with it.</li><br />
<li>The GraphicsMagick++ library (libgraphicsmagick++1-dev) on the Debian repositories was compiled with quantum 8 which limits reading images to 8 bit. The solution is to recompile [[GraphicsMagick]] with quantum 16 or 32 before building Octave.</li></ul>}}<br />
<br />
=== Configuration ===<br />
<br />
As mentioned above, Octave can be compiled with the default settings using {{Codeline|./configure && make && make install}}. You can also tweak the setup using configure options. Some examples are given below for a Linux system.<br />
<br />
==== 64 bit ====<br />
<br />
To get [https://www.gnu.org/software/octave/doc/interpreter/Compiling-Octave-with-64_002dbit-Indexing.html 64-bit] requires all linked libraries to support 64-bit variables. You can omit most of these except BLAS which gives a fatal error. This is remedied by compiling [http://www.openblas.net/ OpenBLAS] with edits to its Makefile.rule so that BINARY=64 INTERFACE64=1.<br />
<br />
<code>./configure LD_LIBRARY_PATH=/opt/OpenBLAS/lib CPPFLAGS=-I/opt/OpenBLAS/include LDFLAGS=-L/opt/OpenBLAS/lib --enable-64</code><br />
<br />
==== Java ====<br />
<br />
Autodetection for java should work well on Debian-based systems. A specific Java version can be specified by passing {{codeline|JAVA_HOME}} to configure, for example<br />
<br />
./configure JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64<br />
<br />
==== HDF5 ====<br />
<br />
On current versions of Debian and Ubuntu, you may get the following warning when building an older version of Octave from source:<br />
<br />
HDF5 library not found. Octave will not be able to save or load HDF5 data files.<br />
<br />
The problem is that there are multiple versions of the hdf5 package. Octave was written with the serial version in mind but it is likely to work with the others (OpenMPI and Mpich). Due to the naming scheme done in Debian, it may be required to specify the location of the libraries. See bug {{bug|38928}} for details (starting with comment #19) but basically, use the following when running configure:<br />
<br />
./configure --with-hdf5-includedir=/usr/include/hdf5/serial --with-hdf5-libdir=/usr/lib/x86_64-linux-gnu/hdf5/serial<br />
<br />
On older versions of Debian and Ubuntu, where only one flavor of the HDF5 library could be installed at a time, you may need to build Octave against one of the MPI-enabled flavors. On these older systems, configuring Octave like this may work:<br />
<br />
./configure CPPFLAGS="-I/usr/include/mpi -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX"<br />
<br />
[[Category:Building]]<br />
[[Category:Installation]]<br />
[[Category:GNU/Linux]]</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=Geometry_package:GSoC17&diff=10344Geometry package:GSoC172017-05-11T13:23:53Z<p>KaKiLa: /* Tasks */</p>
<hr />
<div>== Boolean operations with polygons ==<br />
<br />
'''Developer''': Piyush Jain<br />
<br />
'''Mentor''': [[User:KaKiLa | JuanPi Carbajal]]<br />
<br />
=== Objectives ===<br />
<br />
=== Expectations ===<br />
* Mentor:<br />
<br />
* Developer:<br />
<br />
== Workplan ==<br />
<br />
=== Tasks ===<br />
<br />
* Task 0:<br />
Benchmark Piyush polygon union written as an .oct file against the current .mex interface to clipper in geometry 3.0<br />
<br />
If task 0 shows bad performance of mex, then<br />
<br />
1. Clipper native oct interface instead of mex<br />
<br />
if mex is ok<br />
<br />
1. Add F. Martínez, A.J. Rueda, F.R. Feito [http://www4.ujaen.es/~fmartin/bool_op.html algorithm]<br />
<br />
2. Salvage work from [https://bitbucket.org/amr_keleg/octave-geometry last GSoC]<br />
<br />
Maybe<br />
<br />
* Add CGAL interface for poly clipping<br />
<br />
== External links ==<br />
* [https://github.com/ Github repository ] where the work is stored.</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=Geometry_package:GSoC17&diff=10343Geometry package:GSoC172017-05-11T13:20:57Z<p>KaKiLa: /* Tasks */</p>
<hr />
<div>== Boolean operations with polygons ==<br />
<br />
'''Developer''': Piyush Jain<br />
<br />
'''Mentor''': [[User:KaKiLa | JuanPi Carbajal]]<br />
<br />
=== Objectives ===<br />
<br />
=== Expectations ===<br />
* Mentor:<br />
<br />
* Developer:<br />
<br />
== Workplan ==<br />
<br />
=== Tasks ===<br />
<br />
* Task 0:<br />
Benchmark Piyush polygon union written as an .oct file against the current .mex interface to clipper in geometry 3.0<br />
<br />
* Salvage work from [https://bitbucket.org/amr_keleg/octave-geometry last GSoC]<br />
* Clipper native oct interface instead of mex<br />
* Add F. Martínez, A.J. Rueda, F.R. Feito [http://www4.ujaen.es/~fmartin/bool_op.html algorithm]<br />
* Add CGAL interface for poly clipping<br />
<br />
== External links ==<br />
* [https://github.com/ Github repository ] where the work is stored.</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=Geometry_package:GSoC17&diff=10342Geometry package:GSoC172017-05-11T13:06:36Z<p>KaKiLa: /* Tasks */</p>
<hr />
<div>== Boolean operations with polygons ==<br />
<br />
'''Developer''': Piyush Jain<br />
<br />
'''Mentor''': [[User:KaKiLa | JuanPi Carbajal]]<br />
<br />
=== Objectives ===<br />
<br />
=== Expectations ===<br />
* Mentor:<br />
<br />
* Developer:<br />
<br />
== Workplan ==<br />
<br />
=== Tasks ===<br />
<br />
* Salvage work from [https://bitbucket.org/amr_keleg/octave-geometry last GSoC]<br />
* Clipper native oct interface instead of mex<br />
* Add F. Martínez, A.J. Rueda, F.R. Feito [http://www4.ujaen.es/~fmartin/bool_op.html algorithm]<br />
* Add CGAL interface for poly clipping<br />
<br />
== External links ==<br />
* [https://github.com/ Github repository ] where the work is stored.</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=Geometry_package:GSoC17&diff=10341Geometry package:GSoC172017-05-11T13:05:44Z<p>KaKiLa: /* Tasks */</p>
<hr />
<div>== Boolean operations with polygons ==<br />
<br />
'''Developer''': Piyush Jain<br />
<br />
'''Mentor''': [[User:KaKiLa | JuanPi Carbajal]]<br />
<br />
=== Objectives ===<br />
<br />
=== Expectations ===<br />
* Mentor:<br />
<br />
* Developer:<br />
<br />
== Workplan ==<br />
<br />
=== Tasks ===<br />
<br />
* Salvage work from [https://bitbucket.org/amr_keleg/octave-geometry last GSoC]<br />
* Clipper native oct interface instead of mex<br />
* Add F. Martínez, A.J. Rueda, F.R. Feito [http://www4.ujaen.es/~fmartin/bool_op.html algorithm]<br />
<br />
== External links ==<br />
* [https://github.com/ Github repository ] where the work is stored.</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=Geometry_package:GSoC17&diff=10340Geometry package:GSoC172017-05-11T13:00:44Z<p>KaKiLa: /* Workplan */</p>
<hr />
<div>== Boolean operations with polygons ==<br />
<br />
'''Developer''': Piyush Jain<br />
<br />
'''Mentor''': [[User:KaKiLa | JuanPi Carbajal]]<br />
<br />
=== Objectives ===<br />
<br />
=== Expectations ===<br />
* Mentor:<br />
<br />
* Developer:<br />
<br />
== Workplan ==<br />
<br />
=== Tasks ===<br />
<br />
* Salvage work fomr last GSoC<br />
* Clipper native oct interface instead of mex<br />
<br />
== External links ==<br />
* [https://github.com/ Github repository ] where the work is stored.</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=Geometry_package:GSoC17&diff=10339Geometry package:GSoC172017-05-11T12:45:02Z<p>KaKiLa: github link placeholder</p>
<hr />
<div>== Boolean operations with polygons ==<br />
<br />
'''Developer''': Piyush Jain<br />
<br />
'''Mentor''': [[User:KaKiLa | JuanPi Carbajal]]<br />
<br />
=== Objectives ===<br />
<br />
=== Expectations ===<br />
* Mentor:<br />
<br />
* Developer:<br />
<br />
=== Workplan ===<br />
<br />
== External links ==<br />
* [https://github.com/ Github repository ] where the work is stored.</div>KaKiLahttps://wiki.octave.org/wiki/index.php?title=Geometry_package:GSoC17&diff=10338Geometry package:GSoC172017-05-11T12:32:43Z<p>KaKiLa: </p>
<hr />
<div>== Boolean operations with polygons ==<br />
<br />
'''Developer''': Piyush Jain<br />
<br />
'''Mentor''': [[User:KaKiLa | JuanPi Carbajal]]<br />
<br />
=== Objectives ===<br />
<br />
=== Expectations ===<br />
* Mentor:<br />
<br />
* Developer:<br />
<br />
=== Workplan ===</div>KaKiLa