1,847
edits
(→Summary table: Update.) |
(→Jupyter Notebook Integration: Update project.) |
||
(6 intermediate revisions by 2 users not shown) | |||
Line 116: | Line 116: | ||
| [[Summer of Code - Getting Started#OCS | OCS package]] || Sebastian Schöps || Sebastian Schöps || Octave Forge, Numerical || Yes || Easy || Never | | [[Summer of Code - Getting Started#OCS | OCS package]] || Sebastian Schöps || Sebastian Schöps || Octave Forge, Numerical || Yes || Easy || Never | ||
|- | |- | ||
| [[Summer of Code - Getting Started#Using_Python_within_Octave | | | [[Summer of Code - Getting Started#Using_Python_within_Octave | Pythonic package]] || Mike Miller || Colin B. Macdonald, Abhinav Tripathi || Infrastructure || No || Medium || some in GSoC 2016 | ||
|- | |- | ||
| [[Summer of Code - Getting Started#Jupyter_Notebook_Integration | Jupyter Notebook Integration]] || Mike Miller || Colin B. Macdonald, [[User:Siko1056|Kai T. Ohlhus]] || Infrastructure || Yes || Medium || Never | | [[Summer of Code - Getting Started#Jupyter_Notebook_Integration | Jupyter Notebook Integration]] || Mike Miller || Colin B. Macdonald, [[User:Siko1056|Kai T. Ohlhus]] || Infrastructure || Yes || Medium || Never | ||
Line 282: | Line 280: | ||
=== Symbolic package === | === Symbolic package === | ||
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 [ | 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 [[Pythonic|Pythonic package]]. | ||
This project proposes to go further: instead of using | 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 "f.diff(x)" instead of "diff(f, x)". | ||
* '''Required skills''' | * '''Required skills''' | ||
: OO-programming with m-files, Python, and possibly C/C++ for improving | : OO-programming with m-files, Python, and possibly C/C++ for improving Pythonic (if needed). | ||
* '''Difficulty''' | * '''Difficulty''' | ||
: easy/medium | : easy/medium | ||
Line 295: | Line 293: | ||
=== OCS === | === OCS === | ||
[[Ocs package | OCS]] is a circuit simulator for Octave. The objective of this project is to update the code to use modern features of Octave (e.g. classdef), fix open bugs, increase compatibility with SPICE and improve compatibility with other Octave packages (odepkg, control etc). | [[Ocs package | OCS]] is a circuit simulator for Octave. The objective of this project is to update the code to use modern features of Octave (e.g. classdef), [https://savannah.gnu.org/search/?Search=Search&words=%28ocs%29&type_of_search=bugs&only_group_id=1925&exact=1&max_rows=25#options fix open bugs], increase compatibility with SPICE and improve compatibility with other Octave packages (odepkg, control etc). | ||
* [http://octave.sourceforge.net/ocs/overview.html Package help at source forge.] | * [http://octave.sourceforge.net/ocs/overview.html Package help at source forge.] | ||
Line 307: | Line 305: | ||
== Infrastructure == | == Infrastructure == | ||
=== Jupyter Notebook Integration === | === Jupyter Notebook Integration === | ||
Line 333: | Line 310: | ||
[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 in first place to improve that kernel to make Octave a first-class experience within the Jupyter Notebook. | [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 in first place to improve that kernel to make Octave a first-class experience within the Jupyter Notebook. | ||
In general the [https://nbformat.readthedocs.io/en/latest/ Jupyter Notebook Format] is a plain JSON document | In general the [https://nbformat.readthedocs.io/en/latest/ Jupyter Notebook Format] is a plain JSON document, which is supported since Octave 7 (current development version). Another valuable project outcome was to run (and fill) those Jupyter Notebooks from within 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]. | ||
* '''Minimum requirements''' | * '''Minimum requirements''' | ||
: | : Octave and Python programming knowledge. | ||
* '''Difficulty''' | * '''Difficulty''' | ||
: Medium. | : Medium. | ||
* '''Mentors''' | * '''Mentors''' | ||
: | : [[User:Siko1056|Kai T. Ohlhus]], Colin B. Macdonald, Mike Miller | ||
=== Using Python within Octave === | === Using Python within Octave === | ||
[ | [[Pythonic]] allows one to call Python functions and interact with Python objects from within Octave .m file code and from the Octave command line interface. Pythonic may eventually not be a separate package, but rather a core feature of Octave. This project aims to improve Pythonic with the goal of making the package more stable, maintainable, and full-featured. | ||
Based on a previous summer project related to | Based on a previous summer project related to Pythonic, this work will consist of fast-paced collaborative software development based on tackling the [https://gitlab.com/mtmiller/octave-pythonic/issues Pythonic 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 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? | ||
* '''Mentors''' | * '''Mentors''' |