Skip to content

Roadmap to version 2

Davide Sandonà edited this page Mar 29, 2023 · 3 revisions

The following page provides a list of improvements that would lead to version 2, and hopefully to the merging of this module into SymPy.

1 – Interactive module

With this module we can create interactive plots with widgets. Currently, users can chose to use ipywidgets or Holoviz’s Panel. About the latter:

  • Pros:
    • Cross-platform as the interactive application runs on a browser.
    • The interactive application can use the full available space of the browser window.
    • It also runs in Jupyter Notebook.
  • Cons:
    • Launching simultaneously two or more interactive applications that share parameters on the same kernel is going to make the applications “collide”, as parameters are class attributes (this comes from Holoviz’s Panel and Param architecture). This problem affects mostly Jupyter Notebook, where users might study different expressions (hence different applications) using the same parameters.

Areas of improvements:

  1. See if it’s possible to solve the “collision” problem mentioned above.
  2. Implement a way to integrate plotgrid with this interactive application, so that users could visualize multiple interactive-widget plots being controlled by common widgets. This is useful to visualize different views about the same problem being studied.

2 – New functionalities

  • New backend for Aymptote, a library that creates publication-ready plots.
  • 2D and 3D linear operators (the effect of a matrix on a plane/3D space)
  • Phase portrait for Ordinary Differential Equations. There is already a purely numerical implementation, the phaseportrait module. Is it possible to integrate it into this plotting module?
  • Improve plot_parametric_region to better visualize complex maps.
  • Animations: the backends are already capable to deal with interactive widgets (hence parameters). It shouldn’t be too difficult to implement animation functionalities, in which a parameters changes from an initial value to a final value.

3 – Packaging

While the main plotting functionalities work just with sympy, numpy and matplotlib, the full plotting module relies on several other packages: panel, adaptive, ipywidgets, bokeh, plotly, k3d, vtk… It has been observed that building a conda package with the full dependencies is difficult: most of the time the build succeed but the installation fails. Need to debug what’s wrong and improve it.

4 - Merging

Merging into SymPy is probably going to require a bit of effort in order to deal with deprecation policies and backward compatibility.

Clone this wiki locally