Introduction
Francy &Francy; arose from the necessity of having a lightweight framework for building interactive graphics, generated from GAP, running primarily on the web, primarily in a &Jupyter; Notebook. An initial attempt to re-use XGAP and port it was made, but the lack of a standardized data exchange format between GAP and the graphics renderer, and the simplistic initial requirements of the project were the basis for the creation of a new GAP package. Take a look at &Francy; functionality on these https://mybinder.org/v2/gh/gap-packages/francy/master.
Applications &Francy; has potentially many applications and can be used to provide a graphical representation of data structures, allowing one to navigate through and explore properties or relations of these structures. In this way, &Francy; can be used to enrich a learning environment where GAP provides a library of thousands of functions implementing algebraic algorithms as well as large data libraries of algebraic objects. &FrancyMonoids; and &SubgroupLattice; are some example packages using &Francy;.
Functionality &Francy; provides an interface to draw graphics using objects. This interface is based on simple concepts of drawing and graph theory, allowing the creation of directed and undirected graphs, trees, line charts, bar charts and scatter charts. These graphical objects are drawn inside a canvas that includes a space for menus and to display informative messages. Within the canvas it is possible to interact with the graphical objects by clicking, selecting, dragging and zooming.
Installation This package requires the &GAP; packages &JupyterKernel; and &json;, all of which are distributed with &GAP;. &Francy; follows a similar installation procedure to &JupyterKernel;, so it requires &Jupyter; to be installed on your system. Please note, you need to run the installation commands from the same python version &Jupyter; is installed on. In order to install/update &Francy;, please run the following command to download the latest version available from https://pypi.org/: mcmartins@local:~$ pip install jupyter_francy -U It is necessary to enable &Francy; on your &Jupyter; Notebook installation: mcmartins@local:~$ jupyter nbextension enable --py --sys-prefix jupyter_francy For &Jupyter; Lab, please run: mcmartins@local:~$ jupyter labextension build Alternatively, if you want to run &Francy; only on &Jupyter; Lab, simply execute: mcmartins@local:~$ jupyter labextension install jupyter-francy This will load the module from https://npmjs.org. This approach should be used if you want to run &Francy; only on &Jupyter; Lab.
How it works &Francy; requires a rendering package to display graphics. &Francy; uses Renderers based on D3.js and Graphviz, for rendering the semantic representation produced by the GAP package. The renderers can be swithed at any time using the user interface, by selecting 'Settings > Renderers' in the main menu. This library is distributed both as a browser module and as a &Jupyter; extension. The Jupyter extension can be used in &Jupyter; Notebook or &Jupyter; Lab, using the &JupyterKernel; and the MIME type 'application/vnd.francy+json' to render the document. Please check the https://gap-packages.github.io/francy/doc/js/doc/index.html for more information.
Publications https://doi.org/10.1007/978-3-319-96418-8_42