VISualMAth - GSoC'18

VISualMAth - GSoC’18

visma - VISualMAth, an equation solver and visualizer, which aims at showing the step-by-step solution and interactive plots of a given equation.

Deliverables

The major changes which were proposed for the project visma during GSoC’18:

  • changing the codebase to follow object-oriented style
  • calculus operations like integration, differentiation (including partial diff.)
  • solving equations/inequalities and multivariable linear equations
  • improved GUI and interactive plots

The following file structure shows which modules were added/modified to the project during the GSoC period:

visma
 │
 ├─ visma (contains all modules)
 │   │
 │   ├─ calculus (added basic differentiation and integration)
 │   ├─ functions (converted from dictionary to class based tokens for functions)
 │   ├─ gui (added elements like qsolver, plotter, settings and modified steps displayer)
 │   ├─ io (reorganized tokenize and added checks and parser for equations)
 │   ├─ matrix (added matrix operation, to be integrated with GUI)
 │   ├─ simplify (reorganized simplify into addsub and muldiv)
 │   ├─ solvers (added solver for multivariable equation)
 │   └─ transform (added modules like factorization and substitution)
 │
 ├─ tests (unit tests for all the above modules using pytest)
 │   │
 │   ├─ test_calculus.py (constains test cases for calculus)
 :   :..
 :
 ├─ main.py (modified to accomodate all new GUI elements)
 ├─ run.sh (modified to support installing, testing and packaging visma)
 └─ setup.py (for packaging visma)

Below is a real quick demo of some of the features like calculus, solver, plotter etc which were implemented in visma. To experience visma and explore all features, go to the install guide or code wiki.

visma-demo

There were many new things I came across while working on this project. I learned about integrating UI elements (using PyQt), unit-testing (using pytest) and packaging python apps (using PyPI). To get a deep insight into my progress and learnings throughout the completion of the project check out the GSoC devlogs -

Future work:

Though the GSoC’18 period has ended there are a lot of new things which can be added to visma. Some of the changes and features I (others can too) intend to add in visma after GSoC are:

  • Add command line interface for visma
  • Add support for more functions
  • Fix the issues created
  • Make a webapp