Skip to content

gap-packages/francy

Repository files navigation

Build Workflow Test Coverage Status

Jupyter Notebook extension Jupyter Lab version

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.

See Official Documentation

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).

See Graphics Interface

Binder

Jupyter Lab Binder

Binder

The following notebooks are available:

Notebook Description
demo.ipynb Contains examples of all features present in Francy
francy.ipynb First notebook ever created with Francy
francy-features.ipynb Contains examples of all features present in Francy
francy-monoids.ipynb Contains FrancyMonoids package examples
francy-monoids-mult-three.ipynb Contains an example of proofs used in a paper
francy-numericalsgps.ipynb Same as above, but the algorithms are visible in the notebook
ICMS_2018.ipynb Presentation notebook for the ICMS 2018 in USA
messages.ipynb Contains examples of how to use messages
orbital-graphs.ipynb Contains some research 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 and Notebook 7.0.0+, install it as follows:

mcmartins@local:~$ pip install -U jupyterlab-francy

If you still use the old Jupyter Notebook (<7.0.0), you should use the old extension v1.2.4:

mcmartins@local:~$ pip install -U jupyter-francy

Please note that in order to use Francy, it is required the JupyterKernel GAP package to be installed. See Jupyter GAP Kernel for more information.

Package Structure

Directory Description
tst contains gap code tests
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 and master
  • RELEASE - This workflow runs the Python PyPi.org and NPM releases on new tags created, normally after running the
  • ReleaseTools procedure.

License

MIT License