VisMa

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

visma-cover

Deliverables

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

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 intend to (others can too) add in visma after GSoC are: