.. _software:
Software
========
Most of the software that I have written can be found on `Github `_.
Some older projects can also be found on `BitBucket `_.
Here is some additional information about some of my larger projects.
.. _twister_software:
Twister
-------
`Twister `_ is a program by myself, Tracy Hall and Saul Schleimer for constructing triangulations of surface bundles and Heegaard splittings from a description of a `mapping class `_ of a surface.
These mapping classes are given as a composition of `Dehn twists `_ on annuli and half twists on pairs of pants.
Twister is included in `SnapPy 1.3.10+ `_ and this is how we recommend you use it.
Alternatively, you can `download Twister's source code `_, which you can compile as a Python 2 module, Python 3 module or standalone program and whose documentation now includes a users guide.
Twister is freely available under the GNU general public license.
I like to use Twister to build censuses of surface bundles, for example knot complements.
A `complete list of censuses `_ I've generated can be found on BitBucket and I am happy to discuss generating new censuses that people are interested in.
===== = == == == ==
Genus 1 2 3 4 5
Depth 2 10 14 14 14
===== = == == == ==
One use for these censuses was to search for fibred knot complement monodromies.
This was done by using Twister to produce censuses of hyperbolic surface bundles over the circle for the surfaces S_{g,1} with :math:`1 \leq g \leq 5` to depths shown in the table.
Knot complements were then identified and compared to each of the fibred knot complement listed on `knotinfo `_ using SnapPy.
As of March 2013, monodromies were found for approximately 63% of the knots listed and as shown in `this summary `_.
This `monodromy data `_ is now also part of knotinfo.
Note that, as the list of fibred knot complements built was a complete census, if a monodromy was not found for a particular knot then it cannot have a monodromy consisting of 2 / 10 / 14 / 14 /14 or fewer characters (depending on its three genus).
.. _flipper_software:
Flipper
-------
`Flipper `_ is a program for computing the action of mapping classes on laminations on punctured surfaces using ideal triangulation coordinates.
It can decide the Nielsen--Thurston type of a given mapping class and, for pseudo-Anosov mapping classes, construct a layered, veering triangulation of their mapping torus, as described by `Agol `_.
It can now also determine the conjugacy class of pseudo-Anosov mapping classes.
.. figure:: _static/stable_lamination_resized.png
:scale: 75%
:align: center
The stable lamination of a Penner like pseudo-Anosov.
Flipper is currently under development but you can install `flipper from PyPI `_ or from `flippers source code `_.
.. _curver_software:
Curver
------
`Curver `_ is a program for performing calculations in the curve complex.
It implements the Bell--Webb algorithm to determine the Nielsen--Thurston type of a mapping class.
This algorithm runs in polynomial time but the constants involved currently make this implementation impractical.
It can now also determine the conjugacy class of periodic mapping classes.
Curver is currently under development but can you can install `curver from PyPI `_ or from `curvers source code `_.
.. _bigger_software:
Bigger
------
`Bigger `_ is a program for creating and manipulating big mapping classes.
It can create mapping classes on infinite-type surfaces and apply these to laminations with infinite support through lazy evaluation.
Bigger is currently under development but can you can install `bigger from PyPI `_ or from `biggers source code `_.