Knots, Braids, and Quandles
I provide Python code for four investigations into knots (circles embedded in 3space). The Python code contains many comments and the option of printing comments that describe the steps in the implementation of the algorithms.
To receive the Python code for this topic, use the Contact form to request the zip file and I will email it to you.
The first step in any study of knots and braids is making a decision about notation. Since there are several alternatives for the knot notation that convey different amounts of information about the knot, this is an important decision.
Second, I was interested in how to compute the braid for any knot. This study was based primarily on work by Andrew Bartholomew.
Third, I investigated how to compute the Alexander Polynomial from a braid based on work by Julia Collins.
Fourth, I was interested in quandles, a relatively new (1982) structure in algebraic topology. The main basis for this was work by Mohamed Elhamdadi and Sam Nelson.
Knot and Braid Notation
Some input/output Python modules are common to all three programs. These modules provide you with two methods of input/output (user and file) and the ability to turn on “tracing” to see how the algorithms are working.
Bartholomew Peer Codes
We require knot notation that contains complete crossing information. Notation such as the Gauss Code and DowkerThistlethwaite Notation tell you which knot edges cross and which edge is crossing under or over. Complete crossing information also tells you if the crossing is righthanded or lefthanded. This complete information is conveyed by Bartholomew's peer code (http://www.layer8.co.uk/maths/) and Livingston's PD notation, which is provided on the KnotInfo website (https://knotinfo.math.indiana.edu).
I use Bartholomew's peer code, and for your convenience I provide a file of peer codes. Here are sketches of some knots using the peer code.
KnotInfo Braid Words
The braid input format is from KnotInfo (https://knotinfo.math.indiana.edu/), and for your convenience I provide a file of braid words from KnotInfo.
Downloads
Download file of peer codes: Peer Codes (csv file)
Download file of braid words: Braid Words (csv file)
Knot to Braid
The Knot to Braid program is a sequence of Python modules that leads from knot input through Seifert circles, Seifert graph, turning cycles, and Vogel moves to the braid representation of the knot. The code provides you with the ability to independently investigate Seifert circles, Seifert graphs, and turning cycles for the original knot. This is a good way to learn about these structures.
Python Modules
There are nine Python modules, six specifically for Knot to Braid:

Braid

BraidWord

SeifertCircles

SeifertGraph

TurningCycles

VogelMove
Three input/output modules are shared with the other programs:

CodeTable

InputKnots

InputOptions
Run Options
As illustrated in the diagram, there are four ways to run the modules.
Seifert Circles: If you want to study just the Seifert circles for a knot, run the Seifert Circles module. Here are some sketches of Seifert circles.
Seifert Graph: If you want to study how a Seifert graph is derived from the Seifert circles, run the Seifert Graph module.
Turning Cycles: If you want to study how turning cycles are derived from the Seifert graph, run the Turning cycles module. Turning cycles are required only when Vogel moves are required. Here are some sketches of turning cycles.
Braid: To derive the braid for a knot, run the Braid module. This module controls the iteration through all the modules, performing Vogel moves until a properly reduced Seifert graph is obtained, at which point it uses the BraidWord module to derive the braid. For the computational creation of the braid word, we must achieve a Seifert graph in which no vertex has order greater than two and no order2 vertex has adjacent edges that represent crossings of the same type. This is done by the use of Vogel moves, which are Type II Reidemeister moves on carefully selected edges. The simplest knot that requires a Vogel move is 52.
Acknowledgments
My Python code uses ideas and algorithms from Bartholemew (2011), Choi (1995), and Vogel (1990). I also found great value in reviewing C++ programs kindly provided by Andrew Bartholomew.
References
Bartholomew, A. (2011). An application of Vogel’s algorithm. Downloaded from: http://www.layer8.co.uk/maths/download/vogel.pdf
Choi, D. H. (1995). Algorithm reading off a braid word from YamadaVogel construction. Master’s Thesis, Korea Advanced Institute of Science and Technology.
Vogel, P. (1990). Representation of links by braids: A new algorithm. Commentarii Mathematici Helvetici, 65, 104113.
Braid to Alexander Polynomial
The Braid to Alexander Polynomial program is a short sequence of Python modules that leads from braid input through Seifert matrix to the Alexander polynomial. The code provides you with the ability to independently investigate the Seifert matrix. This is a great way to learn about this interesting structure.
Python Modules
There are five Python modules, two specifically for Braid to Alexander Polynomial:

SeifertMatrix: Run this module if you want to investigate only the Seifert matrix for a braid.

Alexander Polynomial: Run this module for calculating the Alexander polynomial for a braid.
You need the Sympy package for both of these modules. Note that the Alexander Polynomial module is shared with the Knot to Quandle program.
Three input/output modules are shared with the other KnotWorks programs:

CodeTable

InputBraids

InputOptions
Acknowledgments
My Python code uses ideas and algorithms from Collins (2016). I also found great value in reviewing a Matlab program kindly provided by Julia Collins.
References
Collins, J. (2016). An algorithm for computing the Seifert matrix of a link from a braid representation. Ensaios Matemáticos, 30, 246262.
Knot to Quandle
A lengthy route to obtaining the Alexander polynomial for a knot is to use the Knot to Braid program (six modules) and then the Braid to Alexander Polynomial program (two modules) from the previous two sections. However, this program (two modules) provides a more direct route using quandles.
Python Modules
There are five Python modules, two for Knot to Quandle:

AlexQuandle: Run this module to calculate the Alexander quandle.

AlexPolyomial: This module contains functions that are called by the AlexQuandle module.
You need the Sympy package for these modules. Note that the Alexander Polynomial module is shared with the Braid to Alexander Polynomial program.
Three input/output modules are shared with the other KnotWorks programs:

CodeTable

InputKnots

InputOptions
Acknowledgments
The Python code uses ideas from Elhamdadi and Nelson (2015). This book is an excellent introduction to quandles.
References
Elhamdadi, M. and Nelson, S. (2015). Quandles: An Introduction to the Algebra of Knots. American Mathematical Society.