Jump to navigation Jump to search
→‎OCS: Add link to open bugs on Savannah.
! <br />!! !! !! !! !! !!
| [[Summer of Code - Getting Started#ode15s_ode15.7Bi.2Cs.7D_:_Matlab_Compatible_DAE_solver _Matlab_Compatible_DAE_solvers | ode15{i,s} : Matlab Compatible DAE solvers]] || Carlo de Falco || Francesco Faccio, Marco Caliari, Jacopo Corno, Sebastian Schöps || Numerical || No || Medium || GSoC 2016
| [[Summer of Code - Getting Started#Improve_logm.2C_sqrtm.2C_funm | Improve logm, sqrtm, funm]] || ? || Marco Caliari, Mudit Sharma || Numerical || [ No] || Hard || Independent devs 2016
| [[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 | Pytave projectPythonic package]] || Mike Miller || Colin B. Macdonald, Abhinav Tripathi || Infrastructure || No || Medium || some in GSoC 2016
| [[Summer of Code - Getting Started#JSON_encoding.2Fdecoding | JSON encoding/decoding]] || [[User:Siko1056|Kai T. Ohlhus]] || ? || Infrastructure || Yes || Medium || Never
=== Symbolic package ===
Octave's [ 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 [ 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 [ Pytave tool[Pythonic|Pythonic package]].
This project proposes to go further: instead of using Pytave 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 Pytave 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'''
: OO-programming with m-files, Python, and possibly C/C++ for improving Pytave Pythonic (if needed).
* '''Difficulty'''
: easy/medium
=== 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).
* [ Package help at source forge.]
* [ jsonlab] (M-file implementation, probably slow for large JSON files)
* [https://wwwgithub.artefact.tkcom/software/matlab/jsoniogllmflndn/ JSONio JSONio] (C MEX wrapper around [ jsmn])* [ octave-rapidjson] (C++ Octave wrapper around [ rapidjsonRapidJSON])* [ octave-jsonstuff] (C++ Octave wrapper around [ jsoncppRapidJSON])
For different reasons, none of them can be directly merged into Octave core yet. Thus there is still lots of work to do. The goal of this project is to evaluate (and to cherry pick from) the implementations above, to create Matlab compatible [ jsonencode] and [ jsondecode] functions. This involves proper documentation of the work and unit tests to ensure the correctness of the implementation.
* '''Mentor'''
: [[User:Siko1056|Kai T. Ohlhus]]
=== Jupyter Notebook Integration ===
=== Using Python within Octave ===
[ Pytave[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. Ideally, Pytave will Pythonic may eventually not be a separate projectpackage, but rather a core feature of Octave. This project aims to improve Pytave Pythonic with the goal of merging making the code into the core Octave code basepackage more stable, maintainable, and full-featured.
Based on a previous summer project related to PytavePythonic, this work will consist of fast-paced collaborative software development based on tackling the [https://bitbucketgitlab.orgcom/mtmiller/pytaveoctave-pythonic/issues?status=new&status=open pytave 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 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?
* '''Mentors'''

Navigation menu