.. Documentation of the Spherogram part of SnapPy
.. automodule:: spherogram
Links: planar diagrams and invariants
=======================================
Tutorial
--------
SnapPy includes the `Spherogram
`_ module which allows one to
create links programmatically. The graphical conventions used are
`summarized here
`_.
First, here is the figure-8 knot assembled manually from four crossings, with conventions similar to those used by `KnotTheory `_::
>>> a, b, c, d = [Crossing(x) for x in 'abcd']
>>> a[0], a[1], a[2], a[3] = c[1], d[0], b[1], b[0]
>>> b[2], b[3] = d[3], c[2]
>>> c[3], c[0] = d[2], d[1]
>>> L = Link([a,b,c,d])
>>> E = L.exterior()
>>> E.volume()
2.029883212819
>>> Manifold('4_1').is_isometric_to(E)
True
We can also give the same knot as a rational tangle::
>>> L = RationalTangle(3,5).denominator_closure()
>>> L.PD_code()
[[6, 3, 7, 4], [4, 2, 5, 1], [0, 6, 1, 5], [2, 7, 3, 0]]
>>> L.DT_code(True)
'DT[dadCDAB]'
The natural algebra of tangles `shown here
`_
all works. For instance, we can build the (-2, 3, 7) pretzel knot by
adding together three rational tangles::
>>> T = RationalTangle(-1, 2) + RationalTangle(1, 3) + RationalTangle(1, 7)
>>> L = T.numerator_closure()
>>> Manifold('m016').is_isometric_to(L.exterior())
True
To create the figure-8 knot as a closed braid, we first mash tangles
together horizontally using "|" to make the standard braid generators;
then multiplication in the braid group is just tangle multiplication::
>>> C, Id = RationalTangle(1), IdentityBraid(1)
>>> x = sigma_1 = C | Id
>>> y = sigma_2_inverse = Id | -C
>>> L = (x*y*x*y).denominator_closure()
>>> E = L.exterior()
>>> Manifold('4_1').is_isometric_to(E)
True
Here's the minimally-twisted five chain from Figure 2 of `this paper
`_::
def twisted_chain(n, k):
T = RationalTangle(1, 2)
m = (n+1)//2
base = (m*[T, -T])[:n]
tangles = base + [RationalTangle(k)]
return sum(tangles, RationalTangle(0) ).bridge_closure()
>>> L = twisted_chain(5, -1)
>>> L.exterior().volume()
10.14941606410
Spherogram includes ways to create very large random links, see below.
When used inside `Sage `_, one can compute many
basic link invariants, including the Jones polynomial. See the
complete list of Link methods below.
Random Links
------------
.. autofunction:: spherogram.random_link
The Link class
--------------
.. autoclass:: spherogram.Link
:members:
:inherited-members:
:undoc-members:
The ClosedBraid class
---------------------
The ClosedBraid class provides an alternative way to construct links
as closed braids. It is a subclass of Link, and currently defines
the same methods and attributes.
.. autoclass:: spherogram.ClosedBraid