A small python package to visualise recursive function on Python. It draws recursion tree
Project description
Recursion Visualiser
Recursion visualiser is a python tool that visualizes recursion tree with animation and draws recursion tree for recursive function. It works with almost any type of recursive function. Just add the recursion-visualiser decorator to your function and let it do the rest of the work.
Installation
1. Installing graphviz
Windows
The only dependency for recursion visualiser is Graphviz
- Download graphviz binary
- Add graphviz bin to path manually or by adding the following line on your script. Change the installation directory according to your installation path
# Set it to bin folder of graphviz
os.environ["PATH"] += os.pathsep + 'C:/Program Files (x86)/Graphviz2.38/bin/'
Ubuntu
- Install graphviz
sudo apt install graphviz
The instructions to install graphviz for other operating system is available here
2. Installing recursion-visualiser
The easiest way to install recursion-visualiser
package is from pypi
pip install recursion-visualiser
An alternative way is to clone the repository and install all the requirements.
pip install -r requirements.txt
Alternative Installation using Docker
If you have docker
and docker-compose
installed then you can install recursion-tree-visualiser
using Docker
and docker-compose.yml
file
- Download
Docker
file from repo
curl https://raw.githubusercontent.com/Bishalsarang/Recursion-Tree-Visualizer/master/Dockerfile --output Dockerfile
- Download
docker-compose.yml
curl https://raw.githubusercontent.com/Bishalsarang/Recursion-Tree-Visualizer/master/docker-compose.yml --output docker-compose.yml
- Start docker container
CURRENT_UID=$(id -u):$(id -g) docker-compose up
- Run any python scripts and run using
docker-compose exec vs python fibonacci.py
Usage
The preferred way to import the decorator class from the package is as:
from visualiser.visualiser import Visualiser as vs
1. Fibonacci
Let's draw the recursion tree for fibonacci number.
Here is how the simple code looks like
def fib(n):
if n <= 1:
return n
return fib(n - 1) + fib(n - 2)
print(fib(6))
Now we want to draw the recursion tree for this function. It is as simple as adding a decorator
# Author: Bishal Sarang
# Import Visualiser class from module visualiser
from visualiser.visualiser import Visualiser as vs
# Add decorator
# Decorator accepts optional arguments: ignore_args , show_argument_name, show_return_value and node_properties_kwargs
@vs(node_properties_kwargs={"shape":"record", "color":"#f57542", "style":"filled", "fillcolor":"grey"})
def fib(n):
if n <= 1:
return n
return fib(n=n - 1) + fib(n=n - 2)
def main():
# Call function
print(fib(n=6))
# Save recursion tree to a file
vs.make_animation("fibonacci.gif", delay=2)
if __name__ == "__main__":
main()
Here are the changes required:
- Add decorator Visualiser which accepts optional arguments
ignore_args
,show_argument_name
and 'show_return_value' - Change every function calls to pass as keyword arguments.
- Make_animation
The output image are saved as "fibonacci.gif" and "fibonacci.png"
Here is how the recursion tree looks like:
Animation:
Support:
Find other examples here and read more about recursion-visualiser here
TODO:
- Minimal working version
- Upload package to pypi
- Support animation
- Add node styles
- Support aliasing for function name
- Show repeated states
- Support node_color, backgroundcolor etc
- Refactor
- Handle base cases
- Make more beautiful trees
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file recursion-visualiser-1.0.3.tar.gz
.
File metadata
- Download URL: recursion-visualiser-1.0.3.tar.gz
- Upload date:
- Size: 6.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 89eaff79d1ef2547b2ad7749f18377819164ebd18ab9fde5ba14dd6abcbc5b44 |
|
MD5 | 702e49a1821d14304137dd27b2950f6e |
|
BLAKE2b-256 | 4b9c989e10a6dd02b68947c3e2c21f12c0b54c4f801b05b7317680e3b3a56156 |
File details
Details for the file recursion_visualiser-1.0.3-py3-none-any.whl
.
File metadata
- Download URL: recursion_visualiser-1.0.3-py3-none-any.whl
- Upload date:
- Size: 7.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e1aeb190b80452e2b1cb6fa82d11810d3e18a836d1fa3ff057e6c74355356961 |
|
MD5 | b3410f357ec85530ecffa217cd4dd951 |
|
BLAKE2b-256 | 5e3683d51f6a2bd41672f3c6b0fffa8aa891e9f6042f96f091dec71f6f64d6f1 |