Francy
Francy is a package for GAP that provides a framework for Interactive Discrete Mathematics.
Unlike XGAP, Francy is not linked with any GUI framework and instead, this package is responsible for the generation of a semantic model that can be used to produce a graphical representation using any other framework / language.
There is javascript module responsible for generating a graphical representation of the semantic model, that works on Jupyter, embedded in a Web page or as a Desktop Application (e.g. using electron).
Binder
Jupyter Lab Binder
The following notebooks are available:
Notebook | Description |
---|---|
francy-features.ipynb | Contains examples of all features present in Francy |
francy-monoids-mult-three.ipynb | Contains an example of proofs used in a paper |
francy-monoids.ipynb | Contains FrancyMonoids package examples |
francy-numericalsgps.ipynb | Same as above, but the algorithms are visible in the notebook |
francy.ipynb | First notebook ever created with Francy |
ICMS_2018.ipynb | Presentation notebook for the ICMS 2018 in USA |
orbital-graphs.ipynb | Contains some reseach algorithms for orbital graphs |
output-widget.ipynb | Contains an example of the output of 'plain/text' elements |
subgroup-lattice.ipynb | Contains Subgroup-Lattice package examples |
Jupyter Integration
In order to use this module in JupyterLab, install it as follows:
mcmartins@local:~$ pip install -U jupyterlab-francy
If you still use the old JupyterNotebooks, you should use the latest version supported, v1.2.4:
mcmartins@local:~$ pip install -U jupyter-francy
This extension requires the JupyterKernel GAP package to be installed. See Jupyter GAP Kernel for more information.
Package Structure
Directory | Description |
---|---|
tst | contains gap code tests |
scripts | contains scripts used by travis |
schema | contains the francy JSON Schema |
notebooks | contains some notebooks with francy examples |
js | contains the source code of francy-js |
gap | contains the source code of francy-gap |
examples | contains examples used throughout francy-gap documentation |
doc | contains introductory documentation for francy-gap |
Other projects based or inspired by Francy
Project | Author | Description |
---|---|---|
Jupyterviz | Nathan Carter | Provides general purpose visualization tools |
Francy Julia | Claus Fieker | Francy ported to Julia language |
Francy Widgets | Odile Bénassy | Francy Python adapter for representing graphs in Jupyter |
Releasing
All developments should happen on the branch develop
and this should be merged into master
when one is happy to release.
To update the JS packages version, run the following command and pick the new version:
user@local js/ $ yarn run version
To update the Python PyPi.org package version please update the version on:
js/packages/francy-extension-jupyterlab/pypproject.toml
To release, the official ReleaseTools procedure should be followed.
There are 2 workflows defined for this project:
- CI - This workflow runs all tests (JS and GAP) for every commit/pull request on branches
develop
andmaster
- RELEASE - This workflow runs the Python PyPi.org and NPM releases on new
tag
s created, normally after running the ReleaseTools procedure.
License
MIT License