1,848
edits
(→Adding functionality to packages: Alphabetical order.) |
(Announce GSoC.) |
||
(12 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Since 2011 the GNU Octave project has mentored 38 students in [[Summer of Code]] (SoC) programs by [https://summerofcode.withgoogle.com/ Google] and [https://socis.esa.int/ ESA]. Those programs aim to | {{Note|GNU Octave [https://summerofcode.withgoogle.com/organizations/5849336744771584/ has been selected] as mentoring organization for GSoC 2021.}} | ||
Since 2011 the GNU Octave project has mentored 38 students in [[Summer of Code]] (SoC) programs by [https://summerofcode.withgoogle.com/ Google] and [https://socis.esa.int/ ESA]. Those programs aim to advertise open-source software development and to attract potential new Octave developers. | |||
= Steps toward a successful application = | = Steps toward a successful application = | ||
Line 7: | Line 9: | ||
#* We are interested in you as motivated developer 💻 There is no need to present an overwhelming CV with prestigious universities 🏰 and programming contest awards 🏆 in it. We are very fine if you just communicate using a nickname with us. | #* We are interested in you as motivated developer 💻 There is no need to present an overwhelming CV with prestigious universities 🏰 and programming contest awards 🏆 in it. We are very fine if you just communicate using a nickname with us. | ||
#* If your first question is "Hi I'm new to Octave. What should I do?" '''you are out''' 🤦 | #* If your first question is "Hi I'm new to Octave. What should I do?" '''you are out''' 🤦 | ||
# 📝💡 '''Tell us what you are going to do.''' | # 📝💡 '''Tell us what you are going to do.''' | ||
#* When you contact us for the first time, do not write just to say in what project you're interested in. Be specific about what you are going to do, post many links 🔗, show us you know what you are talking about 💡, and ask many [http://www.catb.org/esr/faqs/smart-questions.html smart questions] 🤓 | #* When you contact us for the first time, do not write just to say in what project you're interested in. Be specific about what you are going to do, post many links 🔗, show us you know what you are talking about 💡, and ask many [http://www.catb.org/esr/faqs/smart-questions.html smart questions] 🤓 | ||
#* Remember, '''we are voluntary developers and not your boss''' 🙂 | |||
# 👩🔬 '''Get your hands dirty.''' | # 👩🔬 '''Get your hands dirty.''' | ||
#* We are curious about your programming skills ⌨️ | #* We are curious about your programming skills ⌨️ | ||
Line 55: | Line 57: | ||
== ode15{i,s} : Matlab Compatible DAE solvers == | == ode15{i,s} : Matlab Compatible DAE solvers == | ||
An initial implementation of | An initial implementation of Matlab compatible Differential Algebraic Equations (DAE) solvers, {{manual|ode15i}} and {{manual|ode15s}}, based on [https://computing.llnl.gov/projects/sundials SUNDIALS], | ||
based on [ | was done by [https://gsoc2016ode15s.blogspot.com/ Francesco Faccio during GSoC 2016]. The code is maintained in the main Octave repository and consists mainly of the following three files: [https://hg.savannah.gnu.org/hgweb/octave/file/tip/libinterp/dldfcn/__ode15__.cc {{path|libinterp/dldfcn/__ode15__.cc}}], [https://hg.savannah.gnu.org/hgweb/octave/file/tip/scripts/ode/ode15i.m {{path|scripts/ode/ode15i.m}}] and [https://hg.savannah.gnu.org/hgweb/octave/file/tip/scripts/ode/ode15s.m {{path|scripts/ode/ode15s.m}}]. | ||
was done by | |||
The | |||
consists mainly of the following three files | |||
[https://hg.savannah.gnu.org/hgweb/octave/file/tip/libinterp/dldfcn/__ode15__.cc __ode15__.cc], | |||
[https://hg.savannah.gnu.org/hgweb/octave/file/tip/scripts/ode/ode15i.m ode15i.m] and | |||
[https://hg.savannah.gnu.org/hgweb/octave/file/tip/scripts/ode/ode15s.m ode15s.m]. | |||
The {{manual|decic}} function for selecting consistent initial conditions for ode15i can be made more Matlab compatible by using [https://faculty.smu.edu/shampine/cic.pdf another algorithm]. Another useful extension is to make ode15{i,s} work with datatypes other than double and to improve interpolation at intermediate time steps. | |||
* '''Required skills''' | * '''Required skills''' | ||
: Knowledge of Octave, C/C++; familiarity with numerical methods for DAEs | : Knowledge of Octave, C/C++; familiarity with numerical methods for DAEs | ||
Line 119: | Line 103: | ||
* '''Potential mentors''' | * '''Potential mentors''' | ||
: Rik | : Rik | ||
== Table datatype == | |||
In 2013, Matlab introduced a [https://www.mathworks.com/help/matlab/tables.html new table datatype] to conveniently organize and access data in tabular form. This datatype has not been introduced to Octave yet (see bug {{bug|44571}}). However, there are two initial implementation approaches https://github.com/apjanke/octave-tablicious and https://github.com/gnu-octave/table. | |||
Based upon the existing approaches, the goal of this project is to define an initial subset of [https://www.mathworks.com/help/matlab/tables.htmlMatlab's table functions], which involve sorting, splitting, merging, and file I/O and implement it within the given time frame. | |||
* '''Required skills''' | |||
: Knowledge of Octave, C/C++ | |||
* '''Potential mentors''' | |||
: [[User:siko1056|Kai]] | |||
== Jupyter Notebook Integration == | |||
<q>The [https://jupyter.org Jupyter Notebook] is an open-source web application that allows you to create and share documents that contain live code, equations, visualizations and narrative text.</q> | |||
To interactively work with Octave code within Jupyter Notebooks, there already exists an [https://github.com/Calysto/octave_kernel Octave kernel for Jupyter]. | |||
'''This project''' aims to support the '''opposite direction''': running (and filling) Jupyter Notebook within GNU Octave. This would enable Jupyter Notebook users to evaluate '''long running Octave Notebooks''' on a computing server without permanent browser connection, which is [https://github.com/jupyter/notebook/issues/1647 still a pending issue]. To achieve this, different strategies are possible: | |||
# Synchronize an internal Octave data structure (e.g. classdef object) with the Jupyter Notebook. Probably the safest approach, but does not enable any interactivity from the Octave GUI. | |||
# Import/export a Jupyter Notebook as Octave script (translate non-code sections to comments and vice versa). Files can be edited from the Octave GUI, but probably conversion losses might occur (e.g. embedded graphics). | |||
# A synthesis of both approaches? | |||
In general a [https://nbformat.readthedocs.io/en/latest/ Jupyter Notebook] is a plain JSON document, which will be supported in Octave 7 (current development version) or through the [https://gnu-octave.github.io/pkg-index/package/pkg-json JSON package] for older Octave versions. | |||
* '''Required skills''' | |||
: Knowledge of Octave, C/C++ | |||
* '''Potential mentors''' | |||
: [[User:siko1056|Kai]] | |||
== Adding functionality to packages == | == Adding functionality to packages == | ||
=== OCS === | === OCS package === | ||
[[Ocs package | OCS]] is a circuit simulator | The [[Ocs package | OCS package]] is a circuit simulator. The objective of this project is to increase compatibility with [https://en.wikipedia.org/wiki/SPICE SPICE] and improve compatibility with other Octave packages, e.g. the [[Control package]]. Please study the [https://octave.sourceforge.io/ocs/overview.html available functions] of this package. | ||
* '''Required skills''' | * '''Required skills''' | ||
Line 135: | Line 147: | ||
=== Symbolic package === | === Symbolic package === | ||
The [[Symbolic package]] provides symbolic computing and other [https://en.wikipedia.org/wiki/Computer_algebra_system computer algebra system] 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. In 2016 another GSoC project successfully re-implemented this communication using the new [[Pythonic|Pythonic package]]. | |||
This project proposes to go further: instead of using Pythonic 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 Pythonic directly from methods. The main goal was already mentioned: to expose the | This project proposes to go further: instead of using Pythonic 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 Pythonic 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 <code>f.diff(x)</code> instead of <code>diff(f, x)</code>. | ||
* '''Required skills''' | * '''Required skills''' | ||
Line 146: | Line 158: | ||
=== TISEAN package === | === TISEAN package === | ||
[ | The [[TISEAN package]] provides an Octave interface to [https://www.pks.mpg.de/~tisean/Tisean_3.0.1/index.html TISEAN] is a suite of code for nonlinear time series analysis. In 2015, another GSoC project started with the work to create interfaces to many TISEAN functions, but [[TISEAN_package:Procedure | there is still work left to do]]. There are missing functions to do computations on spike trains, to simulate autoregresive models, to create specialized plots, etc. Which are of importance for many scientific disciplines involving statistical computations and signal processing. | ||
There are missing functions to do computations on spike trains, to simulate autoregresive models, to create specialized plots, etc. | |||
* '''Required skills''' | * '''Required skills''' | ||
: Knowledge of Octave, C/C++; FORTRAN API knowledge | : Knowledge of Octave, C/C++; FORTRAN API knowledge |