Summer of Code - Getting Started: Difference between revisions

Jump to navigation Jump to search
→‎Symbolic package: update for 2017
(eig project done)
(→‎Symbolic package: update for 2017)
Line 167: Line 167:
=== 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.  Currently, communication between Octave and Python is handled with a pipe (see "help popen2") and parsing textHowever, this is fragile when things go wrong: for example, catching exceptions from Python is a bit ad hoc.
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].


The main aim of this proposed project is to implement (or even better co-opt an existing) C++ oct-file [[Python interface|interface that interacts with Python as a library]], and e.g., deals gracefully with exceptionsThis could either supplement the existing IPC or replace it altogether.
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)".


* '''Required skills'''
* '''Required skills'''
: m-file scripting, C (for Python internals), C++ (for Octave internals), and Python
: OO-programming with m-files, Python, and possibly C/C++ for improving Pytave (if needed).
* '''Difficulty'''
* '''Difficulty'''
: easy/medium
: easy/medium
* '''Mentor'''
* '''Mentors and/or other team members'''
: Colin B. Macdonald
: Colin B. Macdonald, Mike Miller, Abhinav Tripathi


=== Interval package ===
=== Interval package ===
99

edits

Navigation menu