Package: slabbe
This is an optional package for SageMath containing code I wrote for research.
It contains modules on the following topics.Discrete dynamical systemsdiophantine approximation, Markov transformations, Wang tilings, Lyapunov
exponents, matrix cocycles, multidimensional continued fraction algorithms,
polyhedron exchange transformations (PETs), GIFS,Combinatorics2d substitutions, bispecial factors, bond percolation, Dyck word in 3D,
words, Joyal bijection, languages, Oldenburger sequence, ostrowski
numeration, partial injections, d-dimensional Sturmian configurations,
hypercubic billiard wordsDigital geometryChristoffel graph, discrete subset, discrete plane, double square tiles,
polyhedron partitions,VizualizationtikzpictureMiscellaneousanalyze Sage build time, fruit Python classes example, ranking scaleLinks:documentation:http://www.slabbe.org/docs/PyPI:http://pypi.python.org/pypi/slabbegitlab:http://gitlab.com/seblabbe/slabbewww:http://www.slabbe.org/Sage/Prerequisites - System packages (easy to install)Some functionalities ofslabbepackage depend on the installation of
packages on the system such as libpari-dev, pdflatex, lualatex (lualatex
compiles large tikzpicture exceeding the memory limits of pdflatex), pdf2svg as
well as softwares includingImageMagick(to convert pdf to png so that
tikzpicture appear directly in the Jupyter notebook),Graphviz(to draw
graphs).On Debian or Ubuntu, one may do:sudo apt update
sudo apt install libpari-dev -y
sudo apt install texlive texlive-latex-extra texlive-luatex texlive-fonts-extra -qy
sudo apt install graphviz imagemagick pdf2svg -yThe installation of imagemagick done above provides the commandconvertbut
it does notallowto convert pdf to png unless you edit the Imagemagick’spolicy.xmlfile which can be done as follows (thanks toNaveed’s comment
on stackoverflow):sudo sed -i '/PDF/s/none/read|write/' /etc/ImageMagick-6/policy.xmlOnOSX, one should firstinstall Homebrew. Then one can install the
above packages similarly as above usingbrewinstead ofapt:sudo brew install graphviz imagemagick pdf2svgPrerequisites - SageMath optional packagesInstalling slabbe requires a working SageMath installation (with Cython and
gcc). Depending on the usage, it might be necessary to install the optional
sagemath packagesdot2tex(translate dot file to tikz to draw nice graphs),glucose(SAT solver) andlatte_int:sage -i dot2tex glucose latte_intNote that graphviz must be installedbeforedot2tex.InstallationThe module is distributed on PyPI and is easily installed through the Python
package manager pip:sage -pip install slabbeTo install the module in your user space (which does not require administrator
rights):sage -pip install slabbe --userTo install the most recent development version:sage -pip install --upgrade git+https://gitlab.com/seblabbe/slabbeUsage:sage: from slabbe import *Other Python packages you may want to installSome functionalities ofslabbepackage depend on the installation of few
Python libraries such aspytimeparse(time expression parser) androman(integer to Roman numerals converter):sage -pip install pytimeparse romanOther System packages you may want to installSome functionalities ofslabbepackage depend on the installation of a
linear program solver such asGurobi. See the thematic tutorial to setup theinstallation of Gurobi in SageMath`.It builds on SageMathIt depends heavily on the SageMath library as it uses the following modules:
combinat, functions, geometry, graphs, matrix, misc, modules, numerical,
parallel, plot, probability, rings, sat, sets, structure, symbolic.SageMathis free open source math software that supports research and
teaching in algebra, geometry, number theory, cryptography, and related areas.Follows the Best practices for scientific computingIt follows as much as possible theSageMath general conventionsand theBest Practices for Scientific Computing. Each module is fully documented
and doctested. Before each new release, we make sure that all examples are
working. As theReScience Journalsays: “Reproducible science is good.
Replicated Science is better”.Future inclusion into SageSome modules may have a wider interest to the SageMath community
(tikz_picture.pyfor example) and could be included in SageMath at some
point. Please contact the author if you want to act as a reviewer for some
module(s) and I will create a ticket ontracfor its inclusion into SageMath.Release historyVersion 0.7.6 (Dec 6, 2023)New module to deal with piecewise affine transformations, the module
on polyhedron exchange transformations is now based on it.
Few improvements and bug fixes on drawing substitution and Wang tilings.
Many doctests are currently failing with SageMath version 10.2 because Cython
modules in the slabbe packages are broken by a recent update of Cython in
SageMath. These are not fixed in this release.Version 0.7.5 (Sep 15, 2023)Desactivate Cython modulesVersion 0.7.4 (Sep 13, 2023)No more c files in the distribution tar.gz file.
Fixing the latex string of 2-dimensional substitutions in the Jupyter notebook.
In preparation for a conference at CIRM, Marseille, Sep 11-15 2023.
All tests passed on SageMath version 10.0.beta4 using Python 3.10.12.
All tests passed on SageMath version 10.2.beta1 using Python 3.11.1 (except two).Version 0.7.3 (Sep 7, 2023)Improving the way Polyhedron exchange transformations are plotted
in preparation for a conference at CIRM, Marseille, Sep 11-15 2023.
All tests passed on SageMath version 10.0.beta4 using Python 3.10.12.
All tests passed on SageMath version 10.2.beta1 using Python 3.11.1 (except two).Version 0.7.2 (Sep 6, 2023)Fixing few doctests and failures with module Kolakoski related to Cython and
Python 3.11.
All tests passed on SageMath version 10.0.beta4 using Python 3.10.12.
All tests passed on SageMath version 10.2.beta1 using Python 3.11.1 (except two).Version 0.7.1 (June 30, 2023)New module on cut and project scheme (still preliminary).
New module to draw tilings with the Smith’s aperiodic monotile (see thisblog post).
Few other improvements.
All tests passed on version 10.0 of SageMath.Version 0.7 (December 8, 2022)New module on d-dimensional Sturmian configurations, to draw figures fromarXiv:2204.06413.
New module on Hypercubic billiard words (written with Mélodie Andrieu).
The moduleTikzPicturegot merged in SageMath 9.6 intosage.misc.latex_standalonethrough ticket#20343during which many
improvements were made. The linefrom slabbe import TikzPicturenow uses
the one in SageMath by default. All tests passed on version 9.7 of SageMath.
Up to recently, all tests passed on versions 9.0, 9.1, 9.2, 9.3 and 9.4 of SageMath;
can’t test those earlier versions of SageMath anymore because gitlab continuous
integration tests is not free anymore.Version 0.6.3 (November 1, 2021)New module on Ostrowski numeration system (basic stuff).
New module on EkEkStar (written with Milton Minvervino).
New modules containing the updated code published inarXiv:1808.07768,arXiv:1903.06137andarXiv:1906.01104.
All tests passed on versions 9.0, 9.1, 9.2, 9.3 and 9.4 of SageMath.Version 0.6.2 (December 15, 2020)New module on Graph-directed iterated function systems (GIFS).
FixedTransitiveIdealimport error.
Now using gitlab continuous integration automatic tests:
installation +import slabbetested to work on versions 8.7, 8.8, 9.0, 9.1, 9.2 of SageMath.
All tests passed on versions 9.0, 9.1, 9.2 of SageMath.Version 0.6.1 (May 8, 2020)New modules to deal with the coding ofZ^d-action by PETs,d-dimensional
sturmian configurations. Improved the computation of induced polyhedron partition
and induced polyhedron exchange transformation. New modules containing the
code for the articlesarxiv:1903.06137andarXiv:1906.01104Version 0.6 (November 22, 2019)Make the package work with Python 3. Most of the tests pass with Python 3 now.Version 0.5.1 (May 30, 2019)Few fixes for the publication of “Induction ofZ^2-actions on partitions of
the 2-torus”. Improved html documentation.Version 0.5 (April 10, 2019)Few fixes for the version 2 of “Substitutive structure of Jeandel-Rao
aperiodic tilings”. New additions includes solving Wang tilings problem
using SAT solvers and a class for Polyhedron exchange transformations.Version 0.4.4 (September 28, 2018)Makeimport slabbework in Sage with Python 3.Version 0.4.3 (August 22, 2018)Few fixes for the publication of “Substitutive structure of Jeandel-Rao
aperiodic tilings”.Version 0.4.2 (July 20, 2018)Few fixes for the version 2 of “A self-similar aperiodic set of 19 Wang
tiles”.Version 0.4.1 (February 9, 2018)Few fixes for the publication of “A self-similar aperiodic set of 19 Wang
tiles”.  New module to solve the Magic hexagon problem.Version 0.4 (January 20, 2018)Version0.4includes new modules for Wang tilings, 2d substitutions,
polyhedron partitions, partial injections, ostrowski numeration and many
improvements to other modules.Version 0.3b2 (December 11, 2016)Version0.3b2includes a new module for diophantine approximations,
random point generation inside polytopes, analyzing sage building time, and
many improvements to previous modules.Version 0.3b1 (June 12, 2016)Version0.3b1is now a Python package available in the Python Package
Index (PyPI). It was migrated from the previous sage optional spkg old-style
format. It also adds code to deal with bispecial factors, some new methods
of graphs, substitutions and matrices.Version 0.2 (November 25, 2015)slabbe-0.2.spkg(documentation) provides modules on multidimensional
continued fraction algorithms, matrix cocycles, languages and tikzpictures.Version 0.1.1 (June 3, 2015)slabbe-0.1.1.spkgfixes a bug withgcdimport error.Version 0.1 (August 27, 2014)slabbe-0.1.spkg(documentation) contains modules on digital geometry,
combinatorics on words and more.